ZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMgYi9zdXB3aXNkb20vc3BfY29uc3VtZS5jCmluZGV4IDczN2IyNWEuLmUxYTljNDYgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbnN1bWUuYwpAQCAtMTAsNyArMTAsOCBAQAogI2luY2x1ZGUgInNwX2NvbnN1bWUuaCIKICNpbmNsdWRlICJzcF9jb21tdW5pY2F0ZS5oIgogCi1zdGF0aWMgaW50IGNvdW50ID0gMDsKK3N0YXRpYyB1aW50MzIgY291bnQgPSAwOworc3RhdGljIHVpbnQ4IG1lbnVfY250ID0gMDsKIHN0YXRpYyB1aW50MTYgc3BfY2FsY19wYXlhbXRfYnlfZmxvd3NlbnNvcihzcF9wb3NfdCogcG9zLCBzcF9jYXJkX3QqIGNhcmQpCiB7CiAgIHVpbnQzMiB1c2VkY291bnQgPSAwOwpAQCAtNTcwLDM0ICs1NzEsNDQgQEAKIAogdm9pZCBzcF9jb25maXJtX3BheW1vZGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZHdvcmtzdGF0ZV90KiBjYXJkV29ya1N0YXRlKQogewotICB1aW50OCBrZXljb2RlID0gU1BfS0VZX05PTkU7CisgIHVpbnQ4IGtleWNvZGU7CiAgIGtleWNvZGUgPSBzcF9nZXRfa2V5KCk7Ci0gIC8v1Nq/qM/7t9HU3c2jx+m/9s/CsLTIztLivPzOqr3hyvi1scewz/u30de0zKwKLSAgaWYoa2V5Y29kZSA+PSBTUF9LRVlfMCAmJiBrZXljb2RlIDw9IFNQX0tFWV9FTlRFUgotICAgICAgJiYgcG9zLT5jYXJkU3RhdGUuY3VyX3N0YXRlID09IFNUQVRFX05PTkUKLSAgICAgICYmIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPT0gQ0FSRFdPUktTVEFUVVNfUEFVU0UgJiYgcG9zLT5wYXltb2RlID09IFBBWU1PREVfQ0FSRCkKKyAgaWYoa2V5Y29kZSAhPSBTUF9LRVlfTk9ORSkKICAgewotICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy/P+7fRxKPKvbP1yry7r9e0zKzPwrC0yLfIz7z80aHU8bb+zqzC68/7t9EKLSAgaWYoKGtleWNvZGUgPT0gU1BfS0VZX0VOVEVSKSAmJiAocG9zLT5wYXltb2RlID09IFBBWU1PREVfSU5JVCkpCi0gIHsKLSAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfTk9ORTsKLSAgICBwb3MtPnBheW1vZGUgPSBQQVlNT0RFX1FSQ09ERTsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy+2/s6swuvEo8q9z8KwtMihz/u8/M6qzaPWubmk1/cKLSAgaWYoKHBvcy0+cGF5bW9kZSA9PSBQQVlNT0RFX1FSQ09ERSkgJiYgKGtleWNvZGUgPT0gU1BfS0VZX0NMRUFSKSkKLSAgewotICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy+wtDC8/L34yOvJ6LG4stnX973nw+YKLSAgaWYoa2V5Y29kZSA9PSBTUF9LRVlfMCAmJiAocG9zLT5wYXltb2RlID09IFBBWU1PREVfSU5JVCkpCi0gIHsKLSAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU0VUX0RFVjsKLSAgICByZXR1cm47CisgICAgLy+wtDC8/L34yOvJ6LG4stnX973nw+YKKyAgICBpZigoa2V5Y29kZSA9PSBTUF9LRVlfMCkgJiYgKHBvcy0+cGF5bW9kZSA9PSBQQVlNT0RFX0lOSVQpKQorICAgIHsKKyAgICAgIG1lbnVfY250Kys7CisgICAgICBpZihtZW51X2NudCA+IDYpCisgICAgICB7CisgICAgICAgIG1lbnVfY250ID0gMDsKKyAgICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NFVF9ERVY7CisgICAgICB9CisgICAgICByZXR1cm47CisgICAgfQorICAgIG1lbnVfY250ID0gMDsKKworICAgIC8v1Nq/qM/7t9HU3c2jx+m/9s/CsLTIztLivPzOqr3hyvi1scewz/u30de0zKwKKyAgICBpZigocG9zLT5jYXJkU3RhdGUuY3VyX3N0YXRlID09IFNUQVRFX05PTkUpCisgICAgICAgICYmIChjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID09IENBUkRXT1JLU1RBVFVTX1BBVVNFKQorICAgICAgICAmJiAocG9zLT5wYXltb2RlID09IFBBWU1PREVfQ0FSRCkpCisgICAgeworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvL8/7t9HEo8q9s/XKvLuv17TMrM/CsLTIt8jPvPzRodTxtv7OrMLrz/u30QorICAgIGlmKChrZXljb2RlID09IFNQX0tFWV9FTlRFUikgJiYgKHBvcy0+cGF5bW9kZSA9PSBQQVlNT0RFX0lOSVQpKQorICAgIHsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOworICAgICAgcG9zLT5wYXltb2RlID0gUEFZTU9ERV9RUkNPREU7CisgICAgICByZXR1cm47CisgICAgfQorICAgIC8vtv7OrMLrxKPKvc/CsLTIoc/7vPzOqs2j1rm5pNf3CisgICAgaWYoKGtleWNvZGUgPT0gU1BfS0VZX0NMRUFSKSAmJiAocG9zLT5wYXltb2RlID09IFBBWU1PREVfUVJDT0RFKSkKKyAgICB7CisgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7CisgICAgICByZXR1cm47CisgICAgfQogICB9CiB9CiAKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9tZW51LmMgYi9zdXB3aXNkb20vc3BfbWVudS5jCmluZGV4IDI4MmZmNzYuLjI4NGQ0M2QgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9tZW51LmMKKysrIGIvc3Vwd2lzZG9tL3NwX21lbnUuYwpAQCAtNzAsNyArNzAsNyBAQAogCiAgIHNwcmludGYoc3lzcGFyYVtvZmZzZXQrK10sIsL2s+W1pc67vMbK/SIpOwogICBzcHJpbnRmKHN5c3BhcmFbb2Zmc2V0KytdLCIlZCAotM4vMTAwbWwpIiwKLSAgICAgICAgICAoKHVpbnQzMilQT1Muc3lzY29uZi5mbG93c2Vuc29yX3VuaXQpKjEpOworICAgICAgICAgICgodWludDMyKXBvcy0+c3lzY29uZi5mbG93c2Vuc29yX3VuaXQpKjEpOwogCiAgIHNwcmludGYoc3lzcGFyYVtvZmZzZXQrK10sICLP+7fRwODQzToiKTsKICAgc3ByaW50ZihzeXNwYXJhW29mZnNldCsrXSwgIrzH1cvP+7fRIik7Cg==