ZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IDY0ZTQzZWIuLmJmNzQ3MTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtNDA1LDggKzQwNSw2IEBACiAgICAgUHlPYmplY3QqIHN0cmluZ3ZhbDsKIAogICAgIGlmICgoIXB5X3ZhbCkgfHwgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAvKiBFcnJvcnMgaW4gY2FsbGJhY2tzIGFyZSBpZ25vcmVkLCBhbmQgd2UgcmV0dXJuIE5VTEwgKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgc3FsaXRlM19yZXN1bHRfbnVsbChjb250ZXh0KTsKICAgICB9IGVsc2UgaWYgKHB5X3ZhbCA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHNxbGl0ZTNfcmVzdWx0X251bGwoY29udGV4dCk7CkBAIC01MTksOCArNTE3LDE3IEBACiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9CiAKLSAgICBfc2V0X3Jlc3VsdChjb250ZXh0LCBweV9yZXR2YWwpOwotICAgIFB5X1hERUNSRUYocHlfcmV0dmFsKTsKKyAgICBpZiAocHlfcmV0dmFsKSB7CisgICAgICAgIF9zZXRfcmVzdWx0KGNvbnRleHQsIHB5X3JldHZhbCk7CisgICAgICAgIFB5X0RFQ1JFRihweV9yZXR2YWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MpIHsKKyAgICAgICAgICAgIFB5RXJyX1ByaW50KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIHNxbGl0ZTNfcmVzdWx0X2Vycm9yKGNvbnRleHQsICJ1c2VyLWRlZmluZWQgZnVuY3Rpb24gcmFpc2VkIGV4Y2VwdGlvbiIsIC0xKTsKKyAgICB9CiAKICAgICBQeUdJTFN0YXRlX1JlbGVhc2UodGhyZWFkc3RhdGUpOwogfQpAQCAtNTQ1LDggKzU1MiwxMyBAQAogICAgICAgICAqYWdncmVnYXRlX2luc3RhbmNlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGFnZ3JlZ2F0ZV9jbGFzcywgIiIpOwogCiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IDA7CisgICAgICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNxbGl0ZTNfcmVzdWx0X2Vycm9yKGNvbnRleHQsICJ1c2VyLWRlZmluZWQgYWdncmVnYXRlJ3MgJ19faW5pdF9fJyBtZXRob2QgcmFpc2VkIGVycm9yIiwgLTEpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgIH0KQEAgLTU2NSw3ICs1NzcsMTIgQEAKICAgICBQeV9ERUNSRUYoYXJncyk7CiAKICAgICBpZiAoIWZ1bmN0aW9uX3Jlc3VsdCkgewotICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CisgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBzcWxpdGUzX3Jlc3VsdF9lcnJvcihjb250ZXh0LCAidXNlci1kZWZpbmVkIGFnZ3JlZ2F0ZSdzICdzdGVwJyBtZXRob2QgcmFpc2VkIGVycm9yIiwgLTEpOwogICAgIH0KIAogZXJyb3I6CkBAIC01OTcsMTMgKzYxNCwxNiBAQAogCiAgICAgZnVuY3Rpb25fcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgqYWdncmVnYXRlX2luc3RhbmNlLCAiZmluYWxpemUiLCAiIik7CiAgICAgaWYgKCFmdW5jdGlvbl9yZXN1bHQpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBmdW5jdGlvbl9yZXN1bHQgPSBQeV9Ob25lOworICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CisgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBzcWxpdGUzX3Jlc3VsdF9lcnJvcihjb250ZXh0LCAidXNlci1kZWZpbmVkIGFnZ3JlZ2F0ZSdzICdmaW5hbGl6ZScgbWV0aG9kIHJhaXNlZCBlcnJvciIsIC0xKTsKKyAgICB9IGVsc2UgeworICAgICAgICBfc2V0X3Jlc3VsdChjb250ZXh0LCBmdW5jdGlvbl9yZXN1bHQpOwogICAgIH0KIAotICAgIF9zZXRfcmVzdWx0KGNvbnRleHQsIGZ1bmN0aW9uX3Jlc3VsdCk7Ci0KIGVycm9yOgogICAgIFB5X1hERUNSRUYoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSk7CiAgICAgUHlfWERFQ1JFRihmdW5jdGlvbl9yZXN1bHQpOwpAQCAtNjk5LDYgKzcxOSw2MSBAQAogICAgIH0KIH0KIAoraW50IF9hdXRob3JpemVyX2NhbGxiYWNrKHZvaWQqIHVzZXJfYXJnLCBpbnQgYWN0aW9uLCBjb25zdCBjaGFyKiBhcmcxLCBjb25zdCBjaGFyKiBhcmcyICwgY29uc3QgY2hhciogZGJuYW1lLCBjb25zdCBjaGFyKiBhY2Nlc3NfYXR0ZW1wdF9zb3VyY2UpCit7CisgICAgUHlPYmplY3QgKnJldDsKKyAgICBpbnQgcmM7CisgICAgUHlHSUxTdGF0ZV9TVEFURSBnaWxzdGF0ZTsKKworICAgIGdpbHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKKyAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0Kil1c2VyX2FyZywgImlzc3NzIiwgYWN0aW9uLCBhcmcxLCBhcmcyLCBkYm5hbWUsIGFjY2Vzc19hdHRlbXB0X3NvdXJjZSk7CisKKyAgICBpZiAoIXJldCkgeworICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CisgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gU1FMSVRFX0RFTlk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKFB5SW50X0NoZWNrKHJldCkpIHsKKyAgICAgICAgICAgIHJjID0gKGludClQeUludF9Bc0xvbmcocmV0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJjID0gU1FMSVRFX0RFTlk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJldCk7CisgICAgfQorCisgICAgUHlHSUxTdGF0ZV9SZWxlYXNlKGdpbHN0YXRlKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK1B5T2JqZWN0KiBjb25uZWN0aW9uX3NldF9hdXRob3JpemVyKENvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQoreworICAgIFB5T2JqZWN0KiBhdXRob3JpemVyX2NiOworCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyAiYXV0aG9yaXplcl9jYWxsYmFjayIsIE5VTEwgfTsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNldF9hdXRob3JpemVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmYXV0aG9yaXplcl9jYikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmMgPSBzcWxpdGUzX3NldF9hdXRob3JpemVyKHNlbGYtPmRiLCBfYXV0aG9yaXplcl9jYWxsYmFjaywgKHZvaWQqKWF1dGhvcml6ZXJfY2IpOworCisgICAgaWYgKHJjICE9IFNRTElURV9PSykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoT3BlcmF0aW9uYWxFcnJvciwgIkVycm9yIHNldHRpbmcgYXV0aG9yaXplciBjYWxsYmFjayIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9IGVsc2UgeworICAgICAgICBQeURpY3RfU2V0SXRlbShzZWxmLT5mdW5jdGlvbl9waW5ib2FyZCwgYXV0aG9yaXplcl9jYiwgUHlfTm9uZSk7CisKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICB9Cit9CisKIGludCBjaGVja190aHJlYWQoQ29ubmVjdGlvbiogc2VsZikKIHsKICAgICBpZiAoc2VsZi0+Y2hlY2tfc2FtZV90aHJlYWQpIHsKQEAgLTk3NSw2ICsxMDUwLDI0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitjb25uZWN0aW9uX2ludGVycnVwdChDb25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBQeU9iamVjdCogcmV0dmFsID0gTlVMTDsKKworICAgIGlmICghY2hlY2tfY29ubmVjdGlvbihzZWxmKSkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgc3FsaXRlM19pbnRlcnJ1cHQoc2VsZi0+ZGIpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHZhbCA9IFB5X05vbmU7CisKK2ZpbmFsbHk6CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGNvbm5lY3Rpb25fY3JlYXRlX2NvbGxhdGlvbihDb25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBQeU9iamVjdCogY2FsbGFibGU7CkBAIC0xMDY3LDYgKzExNjAsOCBAQAogICAgICAgICBQeURvY19TVFIoIkNyZWF0ZXMgYSBuZXcgZnVuY3Rpb24uIE5vbi1zdGFuZGFyZC4iKX0sCiAgICAgeyJjcmVhdGVfYWdncmVnYXRlIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fY3JlYXRlX2FnZ3JlZ2F0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgICAgIFB5RG9jX1NUUigiQ3JlYXRlcyBhIG5ldyBhZ2dyZWdhdGUuIE5vbi1zdGFuZGFyZC4iKX0sCisgICAgeyJzZXRfYXV0aG9yaXplciIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3NldF9hdXRob3JpemVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgICAgUHlEb2NfU1RSKCJTZXRzIGF1dGhvcml6ZXIgY2FsbGJhY2suIE5vbi1zdGFuZGFyZC4iKX0sCiAgICAgeyJleGVjdXRlIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fZXhlY3V0ZSwgTUVUSF9WQVJBUkdTLAogICAgICAgICBQeURvY19TVFIoIkV4ZWN1dGVzIGEgU1FMIHN0YXRlbWVudC4gTm9uLXN0YW5kYXJkLiIpfSwKICAgICB7ImV4ZWN1dGVtYW55IiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fZXhlY3V0ZW1hbnksIE1FVEhfVkFSQVJHUywKQEAgLTEwNzUsNiArMTE3MCw4IEBACiAgICAgICAgIFB5RG9jX1NUUigiRXhlY3V0ZXMgYSBtdWx0aXBsZSBTUUwgc3RhdGVtZW50cyBhdCBvbmNlLiBOb24tc3RhbmRhcmQuIil9LAogICAgIHsiY3JlYXRlX2NvbGxhdGlvbiIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX2NyZWF0ZV9jb2xsYXRpb24sIE1FVEhfVkFSQVJHUywKICAgICAgICAgUHlEb2NfU1RSKCJDcmVhdGVzIGEgY29sbGF0aW9uIGZ1bmN0aW9uLiBOb24tc3RhbmRhcmQuIil9LAorICAgIHsiaW50ZXJydXB0IiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25faW50ZXJydXB0LCBNRVRIX05PQVJHUywKKyAgICAgICAgUHlEb2NfU1RSKCJBYm9ydCBhbnkgcGVuZGluZyBkYXRhYmFzZSBvcGVyYXRpb24uIE5vbi1zdGFuZGFyZC4iKX0sCiAgICAge05VTEwsIE5VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggNmVlOGJlYS4uOThmNWUwZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtMTM3LDYgKzEzNywyMiBAQAogICAgIHNlbGYtPm9iX3R5cGUtPnRwX2ZyZWUoKFB5T2JqZWN0KilzZWxmKTsKIH0KIAorUHlPYmplY3QqIF9nZXRfY29udmVydGVyKFB5T2JqZWN0KiBrZXkpCit7CisgICAgUHlPYmplY3QqIHVwY2FzZV9rZXk7CisgICAgUHlPYmplY3QqIHJldHZhbDsKKworICAgIHVwY2FzZV9rZXkgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGtleSwgInVwcGVyIiwgIiIpOworICAgIGlmICghdXBjYXNlX2tleSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR2YWwgPSBQeURpY3RfR2V0SXRlbShjb252ZXJ0ZXJzLCB1cGNhc2Vfa2V5KTsKKyAgICBQeV9ERUNSRUYodXBjYXNlX2tleSk7CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCiBpbnQgYnVpbGRfcm93X2Nhc3RfbWFwKEN1cnNvciogc2VsZikKIHsKICAgICBpbnQgaTsKQEAgLTE3NCw3ICsxOTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZXIgPSBQeURpY3RfR2V0SXRlbShjb252ZXJ0ZXJzLCBrZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVyID0gX2dldF9jb252ZXJ0ZXIoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE5NSw3ICsyMTEsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgY29udmVydGVyID0gUHlEaWN0X0dldEl0ZW0oY29udmVydGVycywgcHlfZGVjbHR5cGUpOworICAgICAgICAgICAgICAgIGNvbnZlcnRlciA9IF9nZXRfY29udmVydGVyKHB5X2RlY2x0eXBlKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocHlfZGVjbHR5cGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMjgsNyArMjQ0LDEwIEBACiAgICAgfQogCiAgICAgZm9yIChwb3MgPSBjb2xuYW1lOzsgcG9zKyspIHsKLSAgICAgICAgaWYgKCpwb3MgPT0gMCB8fCAqcG9zID09ICcgJykgeworICAgICAgICBpZiAoKnBvcyA9PSAwIHx8ICpwb3MgPT0gJ1snKSB7CisgICAgICAgICAgICBpZiAoKCpwb3MgPT0gJ1snKSAmJiAocG9zID4gY29sbmFtZSkgJiYgKCoocG9zLTEpID09ICcgJykpIHsKKyAgICAgICAgICAgICAgICBwb3MtLTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nQW5kU2l6ZShjb2xuYW1lLCBwb3MgLSBjb2xuYW1lKTsKICAgICAgICAgfQogICAgIH0KQEAgLTMxMiwxMyArMzMxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY29udmVydGVyLCAiTyIsIGl0ZW0pOwotICAgICAgICAgICAgICAgIGlmICghY29udmVydGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFRPRE86IGhhdmUgYSB3YXkgdG8gbG9nIHRoZXNlIGVycm9ycyAqLwotICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZCA9IFB5X05vbmU7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnZlcnRlZCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0zNDYsMTAgKzM2MiwxMCBAQAogCiAgICAgICAgICAgICAgICAgICAgIGlmICghY29udmVydGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lID0gc3FsaXRlM19jb2x1bW5fbmFtZShzZWxmLT5zdGF0ZW1lbnQtPnN0LCBpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2xuYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lID0gIjx1bmtub3duIGNvbHVtbiBuYW1lPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxLCAiQ291bGQgbm90IGRlY29kZSB0byBVVEYtOCBjb2x1bW4gJXMgd2l0aCB0ZXh0ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSAtIDEsICJDb3VsZCBub3QgZGVjb2RlIHRvIFVURi04IGNvbHVtbiAnJXMnIHdpdGggdGV4dCAnJXMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lICwgdmFsX3N0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoT3BlcmF0aW9uYWxFcnJvciwgYnVmKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzczLDcgKzM4OSwxMiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJvdywgaSwgY29udmVydGVkKTsKKyAgICAgICAgaWYgKGNvbnZlcnRlZCkgeworICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJvdywgaSwgY29udmVydGVkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyb3csIGksIFB5X05vbmUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTU5OCw2ICs2MTksMTQgQEAKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHRoZXJlIHdhcyBhbiBlcnJvciB0aGF0IG9jY3VyZWQgaW4gYSB1c2VyLWRlZmluZWQgY2FsbGJhY2sgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgX3NldGVycm9yKHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCmluZGV4IDcxZDBhYWEuLjYwNjQ1NGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKQEAgLTEsMjUgKzEsMjUgQEAKLS8qIG1vZHVsZS5jIC0gdGhlIG1vZHVsZSBpdHNlbGYKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+Ci0gKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgcHlzcWxpdGUuCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLSAqIHdhcnJhbnR5LiAgSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKLSAqIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi0gKgotICogUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsCi0gKiBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci0gKiBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci0gKgotICogMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLSAqICAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlCi0gKiAgICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKLSAqICAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi0gKiAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQotICogICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgotICogMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4KLSAqLworICAgIC8qIG1vZHVsZS5jIC0gdGhlIG1vZHVsZSBpdHNlbGYKKyAgICAgKgorICAgICAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KKyAgICAgKgorICAgICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHB5c3FsaXRlLgorICAgICAqCisgICAgICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKKyAgICAgKiB3YXJyYW50eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCisgICAgICogYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KKyAgICAgKgorICAgICAqIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAorICAgICAqIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQKKyAgICAgKiBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6CisgICAgICoKKyAgICAgKiAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdAorICAgICAqICAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlCisgICAgICogICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlCisgICAgICogICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKyAgICAgKiAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQorICAgICAqICAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KKyAgICAgKiAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgorICAgICAqLwogCiAjaW5jbHVkZSAiY29ubmVjdGlvbi5oIgogI2luY2x1ZGUgInN0YXRlbWVudC5oIgpAQCAtNDAsNiArNDAsNyBAQAogICAgICpOb3RTdXBwb3J0ZWRFcnJvciwgKk9wdGltaXplZFVuaWNvZGU7CiAKIFB5T2JqZWN0KiBjb252ZXJ0ZXJzOworaW50IF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrczsKIAogc3RhdGljIFB5T2JqZWN0KiBtb2R1bGVfY29ubmVjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KgogICAgICAgICBrd2FyZ3MpCkBAIC0xNDAsMTQgKzE0MSw0MiBAQAogCiBzdGF0aWMgUHlPYmplY3QqIG1vZHVsZV9yZWdpc3Rlcl9jb252ZXJ0ZXIoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQogewotICAgIFB5T2JqZWN0KiBuYW1lOworICAgIGNoYXIqIG9yaWdfbmFtZTsKKyAgICBjaGFyKiBuYW1lID0gTlVMTDsKKyAgICBjaGFyKiBjOwogICAgIFB5T2JqZWN0KiBjYWxsYWJsZTsKKyAgICBQeU9iamVjdCogcmV0dmFsID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmbmFtZSwgJmNhbGxhYmxlKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08iLCAmb3JpZ19uYW1lLCAmY2FsbGFibGUpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeURpY3RfU2V0SXRlbShjb252ZXJ0ZXJzLCBuYW1lLCBjYWxsYWJsZSkgIT0gMCkgeworICAgIC8qIGNvbnZlcnQgdGhlIG5hbWUgdG8gbG93ZXJjYXNlICovCisgICAgbmFtZSA9IFB5TWVtX01hbGxvYyhzdHJsZW4ob3JpZ19uYW1lKSArIDIpOworICAgIGlmICghbmFtZSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzdHJjcHkobmFtZSwgb3JpZ19uYW1lKTsKKyAgICBmb3IgKGMgPSBuYW1lOyAqYyAhPSAoY2hhcikwOyBjKyspIHsKKyAgICAgICAgKmMgPSAoKmMpICYgMHhERjsKKyAgICB9CisKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoY29udmVydGVycywgbmFtZSwgY2FsbGFibGUpICE9IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dmFsID0gUHlfTm9uZTsKK2Vycm9yOgorICAgIGlmIChuYW1lKSB7CisgICAgICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgfQorICAgIHJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCogZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQoreworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIsICZfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTc0LDEzICsyMDMsNjQgQEAKICAgICB7InJlZ2lzdGVyX2FkYXB0ZXIiLCAoUHlDRnVuY3Rpb24pbW9kdWxlX3JlZ2lzdGVyX2FkYXB0ZXIsIE1FVEhfVkFSQVJHUywgUHlEb2NfU1RSKCJSZWdpc3RlcnMgYW4gYWRhcHRlciB3aXRoIHB5c3FsaXRlJ3MgYWRhcHRlciByZWdpc3RyeS4gTm9uLXN0YW5kYXJkLiIpfSwKICAgICB7InJlZ2lzdGVyX2NvbnZlcnRlciIsIChQeUNGdW5jdGlvbiltb2R1bGVfcmVnaXN0ZXJfY29udmVydGVyLCBNRVRIX1ZBUkFSR1MsIFB5RG9jX1NUUigiUmVnaXN0ZXJzIGEgY29udmVydGVyIHdpdGggcHlzcWxpdGUuIE5vbi1zdGFuZGFyZC4iKX0sCiAgICAgeyJhZGFwdCIsICAoUHlDRnVuY3Rpb24pcHN5Y29fbWljcm9wcm90b2NvbHNfYWRhcHQsIE1FVEhfVkFSQVJHUywgcHN5Y29fbWljcm9wcm90b2NvbHNfYWRhcHRfZG9jfSwKKyAgICB7ImVuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzIiwgIChQeUNGdW5jdGlvbillbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcywgTUVUSF9WQVJBUkdTLCBQeURvY19TVFIoIkVuYWJsZSBvciBkaXNhYmxlIGNhbGxiYWNrIGZ1bmN0aW9ucyB0aHJvd2luZyBlcnJvcnMgdG8gc3RkZXJyLiIpfSwKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKK3N0cnVjdCBfSW50Q29uc3RhbnRQYWlyIHsKKyAgICBjaGFyKiBjb25zdGFudF9uYW1lOworICAgIGludCBjb25zdGFudF92YWx1ZTsKK307CisKK3R5cGVkZWYgc3RydWN0IF9JbnRDb25zdGFudFBhaXIgSW50Q29uc3RhbnRQYWlyOworCitzdGF0aWMgSW50Q29uc3RhbnRQYWlyIF9pbnRfY29uc3RhbnRzW10gPSB7CisgICAgeyJQQVJTRV9ERUNMVFlQRVMiLCBQQVJTRV9ERUNMVFlQRVN9LAorICAgIHsiUEFSU0VfQ09MTkFNRVMiLCBQQVJTRV9DT0xOQU1FU30sCisKKyAgICB7IlNRTElURV9PSyIsIFNRTElURV9PS30sCisgICAgeyJTUUxJVEVfREVOWSIsIFNRTElURV9ERU5ZfSwKKyAgICB7IlNRTElURV9JR05PUkUiLCBTUUxJVEVfSUdOT1JFfSwKKyAgICB7IlNRTElURV9DUkVBVEVfSU5ERVgiLCBTUUxJVEVfQ1JFQVRFX0lOREVYfSwKKyAgICB7IlNRTElURV9DUkVBVEVfVEFCTEUiLCBTUUxJVEVfQ1JFQVRFX1RBQkxFfSwKKyAgICB7IlNRTElURV9DUkVBVEVfVEVNUF9JTkRFWCIsIFNRTElURV9DUkVBVEVfVEVNUF9JTkRFWH0sCisgICAgeyJTUUxJVEVfQ1JFQVRFX1RFTVBfVEFCTEUiLCBTUUxJVEVfQ1JFQVRFX1RFTVBfVEFCTEV9LAorICAgIHsiU1FMSVRFX0NSRUFURV9URU1QX1RSSUdHRVIiLCBTUUxJVEVfQ1JFQVRFX1RFTVBfVFJJR0dFUn0sCisgICAgeyJTUUxJVEVfQ1JFQVRFX1RFTVBfVklFVyIsIFNRTElURV9DUkVBVEVfVEVNUF9WSUVXfSwKKyAgICB7IlNRTElURV9DUkVBVEVfVFJJR0dFUiIsIFNRTElURV9DUkVBVEVfVFJJR0dFUn0sCisgICAgeyJTUUxJVEVfQ1JFQVRFX1ZJRVciLCBTUUxJVEVfQ1JFQVRFX1ZJRVd9LAorICAgIHsiU1FMSVRFX0RFTEVURSIsIFNRTElURV9ERUxFVEV9LAorICAgIHsiU1FMSVRFX0RST1BfSU5ERVgiLCBTUUxJVEVfRFJPUF9JTkRFWH0sCisgICAgeyJTUUxJVEVfRFJPUF9UQUJMRSIsIFNRTElURV9EUk9QX1RBQkxFfSwKKyAgICB7IlNRTElURV9EUk9QX1RFTVBfSU5ERVgiLCBTUUxJVEVfRFJPUF9URU1QX0lOREVYfSwKKyAgICB7IlNRTElURV9EUk9QX1RFTVBfVEFCTEUiLCBTUUxJVEVfRFJPUF9URU1QX1RBQkxFfSwKKyAgICB7IlNRTElURV9EUk9QX1RFTVBfVFJJR0dFUiIsIFNRTElURV9EUk9QX1RFTVBfVFJJR0dFUn0sCisgICAgeyJTUUxJVEVfRFJPUF9URU1QX1ZJRVciLCBTUUxJVEVfRFJPUF9URU1QX1ZJRVd9LAorICAgIHsiU1FMSVRFX0RST1BfVFJJR0dFUiIsIFNRTElURV9EUk9QX1RSSUdHRVJ9LAorICAgIHsiU1FMSVRFX0RST1BfVklFVyIsIFNRTElURV9EUk9QX1ZJRVd9LAorICAgIHsiU1FMSVRFX0lOU0VSVCIsIFNRTElURV9JTlNFUlR9LAorICAgIHsiU1FMSVRFX1BSQUdNQSIsIFNRTElURV9QUkFHTUF9LAorICAgIHsiU1FMSVRFX1JFQUQiLCBTUUxJVEVfUkVBRH0sCisgICAgeyJTUUxJVEVfU0VMRUNUIiwgU1FMSVRFX1NFTEVDVH0sCisgICAgeyJTUUxJVEVfVFJBTlNBQ1RJT04iLCBTUUxJVEVfVFJBTlNBQ1RJT059LAorICAgIHsiU1FMSVRFX1VQREFURSIsIFNRTElURV9VUERBVEV9LAorICAgIHsiU1FMSVRFX0FUVEFDSCIsIFNRTElURV9BVFRBQ0h9LAorICAgIHsiU1FMSVRFX0RFVEFDSCIsIFNRTElURV9ERVRBQ0h9LAorI2lmIFNRTElURV9WRVJTSU9OX05VTUJFUiA+PSAzMDAyMDAxCisgICAgeyJTUUxJVEVfQUxURVJfVEFCTEUiLCBTUUxJVEVfQUxURVJfVEFCTEV9LAorICAgIHsiU1FMSVRFX1JFSU5ERVgiLCBTUUxJVEVfUkVJTkRFWH0sCisjZW5kaWYKKyNpZiBTUUxJVEVfVkVSU0lPTl9OVU1CRVIgPj0gMzAwMzAwMAorICAgIHsiU1FMSVRFX0FOQUxZWkUiLCBTUUxJVEVfQU5BTFlaRX0sCisjZW5kaWYKKyAgICB7KGNoYXIqKU5VTEwsIDB9Cit9OworCiBQeU1PRElOSVRfRlVOQyBpbml0X3NxbGl0ZTModm9pZCkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlLCAqZGljdDsKICAgICBQeU9iamVjdCAqdG1wX29iajsKKyAgICBpbnQgaTsKIAogICAgIG1vZHVsZSA9IFB5X0luaXRNb2R1bGUoIl9zcWxpdGUzIiwgbW9kdWxlX21ldGhvZHMpOwogCkBAIC0yNzYsMTcgKzM1NiwxNSBAQAogICAgIE9wdGltaXplZFVuaWNvZGUgPSAoUHlPYmplY3QqKSZQeUNlbGxfVHlwZTsKICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiT3B0aW1pemVkVW5pY29kZSIsIE9wdGltaXplZFVuaWNvZGUpOwogCi0gICAgaWYgKCEodG1wX29iaiA9IFB5SW50X0Zyb21Mb25nKFBBUlNFX0RFQ0xUWVBFUykpKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7CisgICAgLyogU2V0IGludGVnZXIgY29uc3RhbnRzICovCisgICAgZm9yIChpID0gMDsgX2ludF9jb25zdGFudHNbaV0uY29uc3RhbnRfbmFtZSAhPSAwOyBpKyspIHsKKyAgICAgICAgdG1wX29iaiA9IFB5SW50X0Zyb21Mb25nKF9pbnRfY29uc3RhbnRzW2ldLmNvbnN0YW50X3ZhbHVlKTsKKyAgICAgICAgaWYgKCF0bXBfb2JqKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsIF9pbnRfY29uc3RhbnRzW2ldLmNvbnN0YW50X25hbWUsIHRtcF9vYmopOworICAgICAgICBQeV9ERUNSRUYodG1wX29iaik7CiAgICAgfQotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJQQVJTRV9ERUNMVFlQRVMiLCB0bXBfb2JqKTsKLSAgICBQeV9ERUNSRUYodG1wX29iaik7Ci0KLSAgICBpZiAoISh0bXBfb2JqID0gUHlJbnRfRnJvbUxvbmcoUEFSU0VfQ09MTkFNRVMpKSkgewotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiUEFSU0VfQ09MTkFNRVMiLCB0bXBfb2JqKTsKLSAgICBQeV9ERUNSRUYodG1wX29iaik7CiAKICAgICBpZiAoISh0bXBfb2JqID0gUHlTdHJpbmdfRnJvbVN0cmluZyhQWVNRTElURV9WRVJTSU9OKSkpIHsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTMwNiw2ICszODQsOCBAQAogICAgIC8qIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgY29udmVydGVycyAqLwogICAgIGNvbnZlcnRlcnNfaW5pdChkaWN0KTsKIAorICAgIF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcyA9IDA7CisKICAgICAvKiBPcmlnaW5hbCBjb21tZW50IGZvcm0gX2JzZGRiLmMgaW4gdGhlIFB5dGhvbiBjb3JlLiBUaGlzIGlzIGFsc28gc3RpbGwKICAgICAgKiBuZWVkZWQgbm93YWRheXMgZm9yIFB5dGhvbiAyLjMvMi40LgogICAgICAqIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5oIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5oCmluZGV4IGYzZTJhYTEuLjAwZWZmMWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaAorKysgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNkZWZpbmUgUFlTUUxJVEVfTU9EVUxFX0gKICNpbmNsdWRlICJQeXRob24uaCIKIAotI2RlZmluZSBQWVNRTElURV9WRVJTSU9OICIyLjIuMiIKKyNkZWZpbmUgUFlTUUxJVEVfVkVSU0lPTiAiMi4zLjAiCiAKIGV4dGVybiBQeU9iamVjdCogRXJyb3I7CiBleHRlcm4gUHlPYmplY3QqIFdhcm5pbmc7CkBAIC01MCw2ICs1MCw4IEBACiAgKi8KIGV4dGVybiBQeU9iamVjdCogY29udmVydGVyczsKIAorZXh0ZXJuIGludCBfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3M7CisKICNkZWZpbmUgUEFSU0VfREVDTFRZUEVTIDEKICNkZWZpbmUgUEFSU0VfQ09MTkFNRVMgMgogI2VuZGlmCg==