ZGlmZiAtLWdpdCBhL2FwL2FwcC9pbmNsdWRlL25ldGlvY3RsLmggYi9hcC9hcHAvaW5jbHVkZS9uZXRpb2N0bC5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRmMDdjMjEKLS0tIC9kZXYvbnVsbAorKysgYi9hcC9hcHAvaW5jbHVkZS9uZXRpb2N0bC5oCkBAIC0wLDAgKzEsMzgzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisquabE3L3pydyjutfU0dDKtc/WtcRpb2N0bL3Tv9qyzsr9tqjS5QorKri61PDIy6O6Cisqsbi33cjLo7oKKyrQ3rjEyNWjugorKtDeuMTE2sjdo7oKKyqw5rG+usWjugorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9aWElDX0lPQ1RMX0hfCisjZGVmaW5lIF9aWElDX0lPQ1RMX0hfCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKworI2lmZGVmIF9NQkJfT1NfVUNMSU5VWAorI2luY2x1ZGUgPHN0ZGludC5oPgorI2VuZGlmCisKKworI2RlZmluZSBOSU9DVExfTUFHSUMgJ3gnCisjZGVmaW5lIE5JT0NUTF9NQVhfTlIgMzIgICAgICAgICAvL0lPQ1RMv8nTw8P8we61xNfutPO49sr9CisKKworI2RlZmluZSBOSU9DVExfUkVBRCBfSU8oTklPQ1RMX01BR0lDLDApCisKKy8qu/HIobb+suPB2r7TwdCx7dbQbWFjtdjWt7rNs/a/2mRldm5hbWUqLworCisjZGVmaW5lIE5JT0NHUENJTkZPICBfSU9XUihOSU9DVExfTUFHSUMsMSxpb2N0bF9kYXRhKQorCisvKrvxyKHN+MLnyeixuHR4oaJyeKGiZHJvcLXIzbO8xqOszfjC58nosbjXtMys0MXPoiovCisKKyNkZWZpbmUgTklPQ0dTVEFUUyBfSU9XUihOSU9DVExfTUFHSUMsMixpb2N0bF9kYXRhKQorCisvKsno1sPE2rrLss7K/c2o08PD/MHuo6zA/cjnZmFzdG5hdC9mYXN0YnIvbGVhay9icm1vbml0ZXK1yL+qudi78ry2sfAqLworCisjZGVmaW5lIE5JT0NTS1BBUkFNIF9JT1dSKE5JT0NUTF9NQUdJQywzLGlvY3RsX2RhdGEpCisKKy8qu/HIoXNrYsnqx+uzybmmL8qnsNy49sr9zbO8xiovCisKKyNkZWZpbmUgTklPQ0dTS0JDTlQgX0lPUihOSU9DVExfTUFHSUMsNCxpb2N0bF9kYXRhKQorCisvKrvxyKFmYXN0bmF0INfutPPBtL3Tyv0qLworCisjZGVmaW5lIE5JT0NHRkFTVE1BWExJTktTIF9JT1IoTklPQ1RMX01BR0lDLDcsaW9jdGxfZGF0YSkvL8i3tqi689D4yse38bu50qrKudPDCisKKworLyq78cih19S08r+qzbO8xr+qudjWrrrzo6xza2IgtcS1scewuPbK/aGiy7K85Lfl1rW1yM2zvMbQxc+ioaJza2K/vbG0tM7K/aGic2tizbfAqdW5tM7K/Qorc2ti1NrI7dbQts/KzbfFtM7K/SovCisKKyNkZWZpbmUgTklPQ0dTS0JOVU0gX0lPV1IoTklPQ1RMX01BR0lDLDEzLGlvY3RsX2RhdGEpCisKKy8qyejWw8Taustza2IgZHVtcMalxeTQxc+io6zA/cjnxqXF5MzYtqhtYWO12Na3oaJJULXY1rcqLworCisjZGVmaW5lIE5JT0NHU0tCRFVNUCBfSU9SKE5JT0NUTF9NQUdJQywxNCxpb2N0bF9kYXRhKQorCisvKsno1sPE2rrLdGNwZHVtcCC/qrnYKi8KKworI2RlZmluZSBOSU9DU1RDUERVTVAgX0lPUihOSU9DVExfTUFHSUMsMTUsaW9jdGxfZGF0YSkKKworLyoqLworCisjZGVmaW5lIE5JT0NQRFAgICAgIF9JT1IoTklPQ1RMX01BR0lDLDE3LGlvY3RsX2RhdGEpCisKKy8qKi8KKworI2RlZmluZSBOSU9DRkxVU0hGTEFHIF9JT1IoTklPQ1RMX01BR0lDLDE4LGlvY3RsX2RhdGEpCisjZGVmaW5lIE5JT0NHS1BBUkFNIF9JT1IoTklPQ1RMX01BR0lDLDE5LGlvY3RsX2RhdGEpCisKKworCisjZGVmaW5lIE5JT0NHU0xBQiBfSU9SKE5JT0NUTF9NQUdJQywyMSxpb2N0bF9kYXRhKQorCisvKmFkZCBieSBqaWFuZ2ppbmcsu/HIoWluaXRfbmV01tDL+dPQzfjC58nosbi1xMP7s8a6zde0zKzQxc+iKi8KKyNkZWZpbmUgTklPQ0dERVZMSVNUICBfSU9SKE5JT0NUTF9NQUdJQywgMjIsIGlvY3RsX2RhdGEpCisKKy8qYWRkIGJ5IHpoYW5ncGVpbWluo6y78cihU0tCIEZBU1S1scewzbO8xtDFz6IqLworI2RlZmluZSBOSU9DR1NLQkZBU1QgX0lPUihOSU9DVExfTUFHSUMsIDI0LCBpb2N0bF9kYXRhKQorCisjZGVmaW5lIE5JT0NHTUFYTVNHICBfSU9SKE5JT0NUTF9NQUdJQywgMjUsIGlvY3RsX2RhdGEpCisKKyNkZWZpbmUgTklPQ0dQVFlQRSAgX0lPUihOSU9DVExfTUFHSUMsIDI2LCBpb2N0bF9kYXRhKQorCisjZGVmaW5lIE5JT0NHUFNJTkZPICBfSU9SKE5JT0NUTF9NQUdJQywgMjcsIGlvY3RsX2RhdGEpCisKKyNkZWZpbmUgTklPQ0dIQVNIICAgX0lPUihOSU9DVExfTUFHSUMsIDI4LCBpb2N0bF9kYXRhKQorCisvKrvxyKG1scewVENQtqqw/M2zvMbQxc+iKi8KKyNkZWZpbmUgTklPQ0dQS1RMT1NUIF9JT1IoTklPQ1RMX01BR0lDLCAyOSwgaW9jdGxfZGF0YSkKKworLyq78cihsb612FRDUMzXvdPX1s2zvMbQxc+iKi8KKyNkZWZpbmUgTklPQ0dUQ1BTT0NLU1RBVFMgX0lPUihOSU9DVExfTUFHSUMsIDMwLCBpb2N0bF9kYXRhKQorCisjZGVmaW5lIE5JT0NUTF9NQVhfTVNHTEVOIDEyOCAgICAvL9fWt/u0rsDg0M2yzsr91rW1xNfutPOzpLbICisjZGVmaW5lIE5JT0NUTF9NQVhfTkFNRUxFTiAyMCAgICAvL7LOyv3D+7PGtcTX7rTzs6S2yAorLyoKKyAgICDNqNPDaW9jdGy1xLLOyv3A4NDNo6y1sbLOyv3Wtc6q19a3+7SuyrGjrMq508NidWax5MG/0+vE2rrLvbu7paO7CisgICAgtbGyzsr91rXOqtX70M3KsaOsyrnTw3ZhbHVlseTBv9PrxNq6y727u6UKKworKi8KK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBpbnQgc2l6ZTsgICAgICAgICAgICAgICAgICAgICAvL9fWt/u0rsDg0M2yzsr9tcSzpLbIo6y21NPa1fvQzbLOyv2jrLjD1rW9qNLpuLPWtc6qMAorCWNoYXIgbmFtZVtOSU9DVExfTUFYX05BTUVMRU5dOyAgICAgICAgIC8vss7K/cP7s8ajrMD9yOdmYXN0bmF0oaJmYXN0YnKhomxlYWsKKwl1bnNpZ25lZCBjaGFyIGJ1ZltOSU9DVExfTUFYX01TR0xFTl07ICAvL9fWt/u0rsDg0M2yzsr91rWjrMD9yOdvbi9vZmYKKwl2b2lkICpkYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL9fUtqjS5b3hubnM5QorCWludCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v1fvQzbLOyv3WtaOswP3I5zAvMS8yLzMKKworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSAgaW9jdGxfZGF0YTsKKworCisKK2VudW0gZGV2X29wdF9zdGF0ZSB7CisJREVWX1VOT1BUID0gMCwgIC8vyPTTw7unzrTX9sjOus6y2df3o6yz9cq81rXOqjAKKwlERVZfTk9QUkVTRU5ULCAgLy+21NOmIW5ldGlmX2RldmljZV9wcmVzZW500uyzo6Osse3D98f9tq+117LjydDOtNe8sbi6wworCURFVl9PUEVORUQsICAgICAvL2RldiBpcyBvcGVuZWQKKwlERVZfT1BFTl9GQUlMLCAgICAgIC8vb3BlbiAgZmFpbAorCURFVl9DTE9TRUQsICAgICAgCS8vZGV2IGlzIGNsb3NlZAorfTsKKworCisvL834wufM7bzTo6zNs7zGzfjC57Ljw+bK1beisPzH6b/2CitzdHJ1Y3QgbmV0X2Rldl9za2JpbmZvIHsKKwl1bnNpZ25lZCBsb25nCXJ4X3BhY2tldHM7ICAvL8f9tq+3osvNwLS1xMr9vt2w/Lj2yv2jrNTabmV0aWZfcnjNt8DbvNMKKwl1bnNpZ25lZCBsb25nCXR4X3BhY2tldHM7ICAvL7eiy824+Mf9tq+1xMr9vt2w/Lj2yv2jrNTaZGV2X3F1ZXVlX3htaXTNt8DbvNMKKwl1bnNpZ25lZCBsb25nCXJ4X2J5dGVzOyAgICAgLy/X1r3ayv0KKwl1bnNpZ25lZCBsb25nCXR4X2J5dGVzOyAgICAgLy/X1r3ayv0KKwl1bnNpZ25lZCBsb25nCXJ4X2Ryb3BwZWQ7IC8vbmV0aWZfcnjE2rK/wfezzNbQy/nT0NLss6PKzbfFc2titcTA27zTo6zI57Tvtb1uZXRkZXZfbWF4X2JhY2tsb2fI67bTwdDJz8/etvi2qrD8CisJdW5zaWduZWQgbG9uZwl0eF9kcm9wcGVkOyAvL2Rldl9xdWV1ZV94bWl0xNqyv8H3s8zW0Mv509DS7LOjys23xXNrYrXEwNu806OsyOcodHhxLT54bWl0X2xvY2tfb3duZXIgPT0gY3B1KdTss8m1xLaqsPwKK307CisKKy8qILjDveG5uczl1tC1xMv509DQxc+ivdTTycf9tq+4s9a1o6zN+MLn1+myu7vhuLPWtSAqLworLy/V4rj2veG5uczlsdjQ67rNIDxsaW51eC9uZXRkZXZpY2UuaD7W0LXEbmV0X2RldmljZV9zdGF0c7Gjs9bSu9bCCitzdHJ1Y3QgbmV0X2Rldl9zdGF0cyB7CisJdW5zaWduZWQgbG9uZyAgICByeF9wYWNrZXRzOworCXVuc2lnbmVkIGxvbmcgICAgdHhfcGFja2V0czsKKwl1bnNpZ25lZCBsb25nICAgIHJ4X2J5dGVzOworCXVuc2lnbmVkIGxvbmcgICAgdHhfYnl0ZXM7CisJdW5zaWduZWQgbG9uZyAgICByeF9lcnJvcnM7ICAgLy/Q6Lzgv9gKKwl1bnNpZ25lZCBsb25nICAgIHR4X2Vycm9yczsgICAvL9DovOC/2AorCXVuc2lnbmVkIGxvbmcgICAgcnhfZHJvcHBlZDsgICAvL9DovOC/2AorCXVuc2lnbmVkIGxvbmcgICAgdHhfZHJvcHBlZDsgICAvL9DovOC/2AorCXVuc2lnbmVkIGxvbmcgICAgbXVsdGljYXN0OworCXVuc2lnbmVkIGxvbmcgICAgY29sbGlzaW9uczsKKwl1bnNpZ25lZCBsb25nICAgIHJ4X2xlbmd0aF9lcnJvcnM7ICAgLy/Q6Lzgv9gKKwl1bnNpZ25lZCBsb25nICAgIHJ4X292ZXJfZXJyb3JzOyAgIC8v0Oi84L/YCisJdW5zaWduZWQgbG9uZyAgICByeF9jcmNfZXJyb3JzOyAgIC8v0Oi84L/YCisJdW5zaWduZWQgbG9uZyAgICByeF9mcmFtZV9lcnJvcnM7ICAgLy/Q6Lzgv9gKKwl1bnNpZ25lZCBsb25nICAgIHJ4X2ZpZm9fZXJyb3JzOyAgIC8v0Oi84L/YCisJdW5zaWduZWQgbG9uZyAgICByeF9taXNzZWRfZXJyb3JzOyAgIC8v0Oi84L/YCisJdW5zaWduZWQgbG9uZyAgICB0eF9hYm9ydGVkX2Vycm9yczsgICAvL9DovOC/2AorCXVuc2lnbmVkIGxvbmcgICAgdHhfY2Fycmllcl9lcnJvcnM7ICAgLy/Q6Lzgv9gKKwl1bnNpZ25lZCBsb25nICAgIHR4X2ZpZm9fZXJyb3JzOyAgIC8v0Oi84L/YCisJdW5zaWduZWQgbG9uZyAgICB0eF9oZWFydGJlYXRfZXJyb3JzOyAgIC8v0Oi84L/YCisJdW5zaWduZWQgbG9uZyAgICB0eF93aW5kb3dfZXJyb3JzOyAgIC8v0Oi84L/YCisJdW5zaWduZWQgbG9uZyAgICByeF9jb21wcmVzc2VkOworCXVuc2lnbmVkIGxvbmcgICAgdHhfY29tcHJlc3NlZDsKK307CitlbnVtIG5ldGRldl9xdWV1ZV9zdGF0ZSB7CisJX19RVUVVRV9TVEFURV9EUlZfWE9GRiwKKwlfX1FVRVVFX1NUQVRFX1NUQUNLX1hPRkYsCisJX19RVUVVRV9TVEFURV9GUk9aRU4sCit9OworCitzdHJ1Y3QgZGV2X2lvY3RsX2luZm8geworCWNoYXIgZGV2X25hbWVbMjBdOworCXN0cnVjdCBuZXRfZGV2X3NrYmluZm8gIHN0YXRzX2RiZzsgIC8vzfjC58ztvNO1xKOszbO8xs34wuey48PmytW3orD8x+m/9gorCXN0cnVjdCBuZXRfZGV2X3N0YXRzICBza2Jfc3RhdHVzOyAgICAgLy/K/b7dytW3os2zvMbWtaOsuMPWtcirsr/Tycf9tq+4s9a1tcSjrM34wueyu7iz1rUKKwl1bnNpZ25lZCBpbnQgICAgICAgIGZsYWdzOyAgICAgICAgICAgLy9JRkZfVVC1yAorCXVuc2lnbmVkIGNoYXIgICAgICAgb3BlcnN0YXRlOyAgICAvL8S/x7DDu8m208MKKwl1bnNpZ25lZCBsb25nICAgICAgIHN0YXRlOyAgICAgICAgICAgLy+117Ljx/22r9e0zKyjrF9fTElOS19TVEFURV9OT0NBUlJJRVIKKwlpbnQgICAgICAgICAgICAgICAgIG5ldF9mbGFnOyAgICAgICAgLy/Tw7unaWZjb25maWe1xL3hufvXtMyso6zI50RFVl9PUEVOX0ZBSUwKKwl1bnNpZ25lZCBsb25nICAgICAgIHF1ZV9zdGF0ZTsgICAgICAgLy+208HQ17TMrKOsttTTpiBkZXYtPl90eFswXS5zdGF0ZaOsyOdfX1FVRVVFX1NUQVRFX0RSVl9YT0ZGCisJdW5zaWduZWQgaW50ICAgICAgICBudW1fdHhfcXVldWVzOyAgIC8vVFi208HQyv3Bv6OstuDK/cf9tq/KudPDzqjSu7bTwdCjrNTy1rXOqjEKK307CisKKy8v0+vE2rrLc2tiX3VzaW5nX21zZyC94bm5zOXSu9bCCitzdHJ1Y3Qgc2tiX2lvY3RsX2luZm8geworCXVuc2lnbmVkIGxvbmcgc2tiX2FsbDsKKwl1bnNpZ25lZCBsb25nIHNrYl90b2NwOworCXVuc2lnbmVkIGxvbmcgc2tiX2Zyb21jcDsKKwl1bnNpZ25lZCBsb25nIHNrYl9kYXRhX251bTsKKwl1bnNpZ25lZCBsb25nIHNrYl9kYXRhX3NpemU7CisJdW5zaWduZWQgbG9uZyBza2Jfc3RvcDsKKwl1bnNpZ25lZCBsb25nIHNrYl9sb2NrOworCisJdW5zaWduZWQgbG9uZyBza2JfcGFuaWM7CisJdW5zaWduZWQgbG9uZyBza2JfZmFpbDsKK307CisKK3N0cnVjdCBza2JfZmFzdF9pb2N0bF9pbmZvIHsKKwlpbnQgIHNrYl9udW00OyAgICAgICAgICAgICAgIC8vvdPK1bW9tcRWNMr9vt2w/AorCWludCAgc2tiX251bTY7ICAgICAgICAgICAgICAgLy+908rVtb21xFY2yv2+3bD8CisJaW50ICBza2JfYmlnX251bTsgICAgICAgICAgICAvL2xlbrOktsizrLn9MTAwMLXEyv2+3bD8o6y6rFY0us1WNgorCWludCAgc2tiX3NtYWxsX251bTsgICAgICAgICAgLy9sZW6zpLbI0KHT2jEwMLXEyv2+3bD8o6y6rFY0us1WNgorCWludCAgc2tiX2J5dGVzNDsgICAgICAgICAgICAgLy+908rVtb21xFY0yv2+3bD819a92sr9CisJaW50ICBza2JfYnl0ZXM2OyAgICAgICAgICAgICAvL73TytW1vbXEVjbK/b7dsPzX1r3ayv0KKwlpbnQgIHNrYl91bmtub3duOyAgICAgICAgICAgIC8vvdPK1bW9tcTOtNaq0K3S6cr9vt2w/KOssPzAqEFSULXIt8dWNLrNVja1xLGozsQKKwlpbnQgIHNrYl90Y3BudW07ICAgICAgICAgICAgIC8vvdPK1bW9tcR0Y3DK/b7dsPyjrLqsVjS6zVY2o6y1q7K7uqxmYXN0YnK1xLGozsQKKwlpbnQgIHNrYl91ZHBudW07ICAgICAgICAgICAgIC8vvdPK1bW9tcR1ZHDK/b7dsPyjrLqsVjS6zVY2o6y1q7K7uqxmYXN0YnK1xLGozsQKKwlpbnQgIGJyb2FkY2FzdF9udW00OyAgICAgICAgIC8vvdPK1bW9tcRWNLnjsqWw/AorCWludCAgYnJvYWRjYXN0X251bTY7ICAgICAgICAgLy+908rVtb21xFY2ueOypbD8CisJaW50ICBtdWx0aWNhc3RfbnVtNDsgICAgICAgICAvL73TytW1vbXEVjTX6bKlsagKKwlpbnQgIG11bHRpY2FzdF9udW02OyAgICAgICAgIC8vvdPK1bW9tcRWNtfpsqWxqAorCWludCAgZmFzdG5hdF9udW07ICAgICAgICAgICAgLy9mYXN0bmF0s8m5prXEsajOxAorCWludCAgZmFzdDZfbnVtOyAgICAgICAgICAgICAgLy9mYXN0NrPJuaa1xLGozsQKKwlpbnQgIGZhc3Ricl9udW07ICAgICAgICAgICAgIC8vZmFzdGJys8m5prXEsajOxAorCWludCAgZmFzdG5hdF9sZXZlbDsgICAgICAgICAgLy+yzr+0RkFTVF9ORVRfREVWSUNFCisJaW50ICBmYXN0YnJfbGV2ZWw7ICAgICAgICAgICAvL7K8tvvA4NDNCisJLy/PwsPmvLi49ta1zqrA27zT1rWjrNDUxNzP4LnYCisJaW50ICBpcnFmcmVlX251bTsgICAgICAgICAgICAvL82ouf3I7dbQts/KzbfFtcRza2KjrNDUxNzP4LnYCisJaW50ICBza2Jjb3B5X251bTsgICAgICAgICAgICAvL8r9vt2/vbG0tcRza2KjrNDUxNzP4LnYCisJaW50ICBjYWNoZV9jb3B5OyAgICAgICAgICAgICAvL25ldF9jYWNoZdS0zsS8/r340NC/vbG0tcTA27v9vMbK/aOs0NTE3M/gudgKKwlpbnQgIHNrYmZsb29kX251bTsgICAgICAgICAgIC8vt7q66bXEc2tio6zQ1MTcz+C52AorCWludCAgZXJyZnJlZV9udW07ICAgICAgICAgICAgLy9kZXbUtM7EvP7W0LTtzvPKzbfFtcRza2K8xsr9o6yw/MCoU0tCX1FVRVVFX1NUT1C6zVNLQl9RVUVVRV9MT0NLwb249rzGyv3WtQorCWludCAgZnJhZ19udW07ICAgICAgICAgICAgICAgLy+908rVtb21xLfWxqyxqM7Eo6zQ1MTcz+C52AorCWludCAgbXR1X251bTsgICAgICAgICAgICAgICAgLy9mYXN01tDK/b7ds6S2yLTz09qz9r/aZGV2IE1UVcqxo6xmYXN0yqew3Lj2yv3Ns7zGCisJaW50ICBmYXN0X2xvb3A7ICAgICAgICAgICAgICAvL822td24+Mf9tq+jrNPWtNPH/bavytW1vbXE0uyzo7vYu7e49sr9zbO8xgorCWludCAgc2tiX2FsbG9jX2ZhaWwgOyAgICAgICAgLy/J6sfrc2tiyqew3LXEuPbK/cDbvNPWtQorCWludCAgeG1pdF9sb2NrX251bTsgICAgICAgICAgLy94bWl0X2xvY2tfb3duZXKxu8v416HU7LPJtcS2qrD8tcTA27zTvMbK/aOsx/22r9Tss8m1xAorCWludCAgeG1pdF9zdG9wX251bTsgICAgICAgICAgLy8hbmV0aWZfeG1pdF9zdG9wcGVkKHR4cSnU7LPJtcS2qrD8tcTA27zTvMbK/aOsx/22r9Tss8m1xAorCWludCAgYnJfbWFjX2NoYW5nZV9udW07ICAgICAgLy/N+MfFbWFjtdjWt7G7uMSx5LTOyv0KKwlpbnQgIGZhc3RfdGNwZHVtcF9udW07ICAgICAgIC8vZmFzdNelsPzK/QorCWludCAgZmFzdF9zd2l0Y2g7ICAgICAgICAgICAgLy9mYXN019O5psTczrvNvL+qudgKKwlpbnQgIGZhc3RfbG9jYWw0X3Jjdl9udW07ICAgIC8vsb612GZhc3RfbG9jYWw0s8m5pr3TytWxqM7ECisJaW50ICBmYXN0X2xvY2FsNl9yY3ZfbnVtOyAgICAvL7G+tdhmYXN0X2xvY2FsNrPJuaa908rVsajOxAorCWludCAgZmFzdF9sb2NhbDRfb3V0cHV0X251bTsgLy+xvrXYZmFzdF9sb2NhbDSzybmmt6LLzbGozsQKKwlpbnQgIGZhc3RfbG9jYWw2X291dHB1dF9udW07IC8vsb612GZhc3RfbG9jYWw2s8m5preiy82xqM7ECit9OworCisjZGVmaW5lIFNMQUJfTlVNICAyMQorZW51bSBzbGFiaW5mb19maWxlIHsKKwlTS0JfU0xBQiA9IDAsCisJQlJGREJfU0xBQiwKKwlEU1RfU0xBQiwKKwlGSUJfVFJJRV9TTEFCLAorCUZMT1dfU0xBQiwKKwlJTkVUUEVFUl9TTEFCLAorCUlORVRfSEFTSFRBQkxFU19TTEFCLAorCUlORVRfVElNRVdBSVRfU09DS19TTEFCLAorCU1ZU09DS0VUX1NMQUIsCisJTkZfQ09OTlRSQUNLX0NPUkVfU0xBQiwKKwlORl9DT05OVFJBQ0tfRVhDRVBUX1NMQUIsCisJUkVRVUVTVF9TT0NLX1NMQUIsCisJU09DS19TTEFCLAorCVNPQ0tFVF9TTEFCLAorCVhGUk02X1RVTk5FTF9TTEFCLAorCVhUX0hBU0hMSU1JVF9TTEFCLAorCVNPQ0tfQUxMT0NfUEFHRVMsCisJSVA2X09VVFBVVF9BTExPQ19QQUdFUywKKwlJUF9PVVRQVVRfQUxMT0NfUEFHRVMsCisJU0tCX0FMTE9DX1BBR0VTLAorfTsKKworc3RydWN0IHNsYWJfaW5mbyB7CisJaW50IG51bVtTTEFCX05VTV1bMl07Cit9OworCisjZGVmaW5lIEhBU0hfQVJSQVlfQ09VTlQgNTEyCitzdHJ1Y3QgaGFzaF9pbmZvIHsKKwlpbnQgbWF4X2hhc2hfc2l6ZTsKKwlpbnQgY3VycmVudF9oYXNoX251bTsKKwlpbnQgaGFzaFtIQVNIX0FSUkFZX0NPVU5UXVsyXTsKKwlpbnQgY3VycmVudF9hcnJheV9zaXplOworfTsKKworc3RydWN0IG5laWdoX2luZm8geworCXVuc2lnbmVkIGludCBpcF9sZW47ICAgICAgICAgIC8vSVC12Na3s6S2yKOsx/i31lY0us1WNgorCXVuc2lnbmVkIGNoYXIgaXBfYWRkcltJUFY0QURETEVOX01BWF07CisJdW5zaWduZWQgY2hhciBtYWNfYWRkcltNQVhfTUFDQUREUl9MRU5dOworfTsKKworI2RlZmluZSBNQVhfTkVJR0hfTlVNICAgICAgICAgICAyMAorc3RydWN0IGRldl9uZWlnaF9pbmZvIHsKKwl1bnNpZ25lZCBpbnQgbnVtOworCXN0cnVjdCBuZWlnaF9pbmZvIG5laWdoX25vZFtNQVhfTkVJR0hfTlVNXTsKK307CisKK2VudW0gZGV2X2xheWVyIHsKKwlMM19ERVYgPSAwLCAgLy+y4zPJ6LG4CisJQlJfREVWLCAgLy/N+MfFtcRMM8zYyuLJ6LG4CisJTDJfREVWLCAgICAgLy9MMrLjyeixuAorfTsKKworZW51bSB7CisJTE9DQUxfTDNERVYgPSAwLAorCUxPQ0FMX0JSX1BPUlQsCisJTkVJR0hfQU5EX0RTVERFViwKKwlERVZfU1RBVElTVElDLAorfTsKKworZW51bSBJRk1BQ19FUlIgeworCVpFUk9fQUREUkVSUiA9IDEsCisJTVVMVElDQVNUX0FERFJFUlIsCisJQlJPQURDQVNUX0FERFJFUlIsCit9OworCisvKmFkZCBieSBqaWFuZ2ppbmcqLworc3RydWN0IGRldl9hbmRfbmVpZ2ggeworCWNoYXIgbmFtZVsyMF07CisJdW5zaWduZWQgY2hhciAgZGV2X2xheWVyOyAgIC8v1rjKvrjDsb612M34v9q1xNCt0umy46Osss68+7rq1rVMM19ERVYKKwkvKk1BQ7XY1rcsSVB2NLXY1rcqLworCXVuc2lnbmVkIGNoYXIJCW1hY19hZGRyWzIwXTsgIC8vsb612M34v9q12Na3CisJdW5zaWduZWQgaW50CQlpcHY0X2FkZHI7ICAgICAgICAvL7G+tdjN+L/aSVC12Na3CisJc3RydWN0IGRldl9uZWlnaF9pbmZvICBkZXZfbmVpZ2g7ICAvL7jDsb612M34v9rQr7T4tcTUtrPMwdq+07XY1rfQxc+iyv3X6QorCWludCBtYWNfZXJydHlwZTsKK307CisjZGVmaW5lIE1BWF9ERVZfTlVNICAgMzAKKy8qzfi/2s/gudi1xNDFz6IqLworc3RydWN0IGRldmxpc3RfaW9jdGxfaW5mbyB7CisJdW5zaWduZWQgaW50IG51bTsgICAgICAgIC8vsb612NPQ0KfN+L/atcS49sr9CisJc3RydWN0IGRldl9hbmRfbmVpZ2ggaW5mb1tNQVhfREVWX05VTV07ICAvL7G+tdjT0NCnzfi/2rXEvt/M5dDFz6Kyzsr9Cit9OworCisvKioqKtfK1LTKudPDvLDJz8/e0MXPoqOsy/nT0LHq17zE2rrL09DJz8/ex+m/9rXEo6y91NDovOyy4qOs0tS3wNa50uyzo7eiyfoqKioqLworc3RydWN0IG5ldF9tYXhfY2hlY2tfbXNnIHsKKwkvKm5mX2Nvbm50cmFjayovCisJdW5zaWduZWQgbG9uZyBuZl9jb25udHJhY2tfbWF4OyAgICAgICAgLy9uZl9jb25udHJhY2tfbWF4ID0gNDgzMgorCXVuc2lnbmVkIGxvbmcgbmZfY29ubnRyYWNrX25vdzsgICAgICAgIC8vbmV0LT5jdC5jb3VudAorCS8qZW5xdWV1ZSovCisJaW50ICAgICAgICAgIG5ldGRldl9tYXhfYmFja2xvZzsgICAgICAgLy9uZXRkZXZfbWF4X2JhY2tsb2c9MTAwMAorCWludCAgICAgICAgICBpbnB1dF9xdWV1ZV9sZW47ICAgICAgICAgIC8vss6/tGVucXVldWVfdG9fYmFja2xvZ73Tv9rKtc/WCisJaW50ICAgICAgICAgIHJ4X2Ryb3BwZWQ7ICAgICAgICAgICAgICAgICAvL9LyzqrI67bTwdDS0cL61OyzybXEyOu208HQtqqw/LXEwNu809a1CisJLyrQ1MTcz+C52CovCisJaW50ICAgICAgICAgIGZhc3RuYXRfbGlua19tYXg7ICAgICAgICAgLy9uZl9jb25udHJhY2tfbWF4CisJaW50ICAgICAgICAgIGZhc3RuYXRfbGlua19ub3c7ICAgICAgICAgLy93b3JraW5nX2xpc3QuY291bnQKKwlpbnQgICAgICAgICAgZmFzdDZfbGlua19tYXg7ICAgICAgICAgICAvL25mX2Nvbm50cmFja19tYXgKKwlpbnQgICAgICAgICAgZmFzdDZfbGlua19ub3c7ICAgICAgICAgICAvL3dvcmtpbmdfbGlzdDYuY291bnQKKwkvKs34wufE2rrL1MvQ0MqxtcTNs7zG1rWjrNbYteO52NeiveG5uczltcTJ6sfrteMqLworCXVuc2lnbmVkIGxvbmcgYnJfbWFjX2NoYW5nZTsJCSAgLy/N+MfFbWFjtdjWt7G7uMSx5LTOyv0KKwl1bnNpZ25lZCBsb25nIG5laWdoX2FsbG9jOwkJCQkgICAvL25laWdoYm91csnqx+u0zsr9CisJdW5zaWduZWQgbG9uZyBuZWlnaF9mcmVlOwkJCQkJICAvL25laWdoYm91csrNt8W148DbvNPWtQorCXVuc2lnbmVkIGxvbmcgYnJfbmVpZ2hfdmFyeTsJCQkJLy/HxbXjtcSz9r/aZGV2tcRtYWO12Na3sbu24Lj2cGO5ss/tCisJdW5zaWduZWQgbG9uZyBjb25uX2FsbG9jOwkJCQkJLy9jb25uyerH67TOyv3A27zT1rUKKwl1bnNpZ25lZCBsb25nIGNvbm5fZnJlZTsJCQkJCQkgIC8vY29ubsrNt8W148DbvNPWtQorCXVuc2lnbmVkIGxvbmcgYnJmZGJfYWxsb2M7IAkJCQkgICAvL8fFtePJ6sfrtM7K/cDbvNPWtQorCXVuc2lnbmVkIGxvbmcgZHN0X2FsbG9jOwkJCQkJCSAgLy9kc3RfZW50cnnJ6sfrwNu809a1CisJdW5zaWduZWQgbG9uZyBkc3RfZnJlZTsJCQkJCQkJLy9kc3RfZW50cnnKzbfFtePA27zT1rUKKwl1bnNpZ25lZCBsb25nIGhoX3VwZGF0ZTsJCQkJCQkgIC8vaGi2/rLjbWFjzbe4/NDCwNu809a1CisJdW5zaWduZWQgbG9uZyBydF9jYWNoZV9pbnZhbGlkOyAgICAgICAgIAkJCSAgICAgIC8vx+W/1cK308ljYWNoZbXEwNu809a1CisJdW5zaWduZWQgbG9uZyBydF9oYXNoX2FkZDsgCQkJCQkgICAvL9DC1PZydF9oYXNoX3RhYmxlvdq147XEwNu809a1CisJdW5zaWduZWQgbG9uZyBydF9oYXNoX2RlbDsgCQkJCQkgICAvL8m+s/1ydF9oYXNoX3RhYmxlvdq147XEwNu809a1CisJdW5zaWduZWQgbG9uZyBzc21hY19jaGFuZ2VfaW5kZXY7CSAgIAkvL82s0rvUtE1BQ7XY1rfI67/aZGV2uMSx5LXEtM7K/QorfTsKKworc3RydWN0IHB0eXBlX2luZm8geworCXVuc2lnbmVkIGxvbmcgcHR5cGVfYWxsWzVdOworCXVuc2lnbmVkIGxvbmcgcHR5cGVfYmFzZVsxNV07Cit9OworCisKK3N0cnVjdCBwa3RfbG9zdF9zdGF0cyB7CisJdW5zaWduZWQgaW50IHNlbmRfZHJvcHM7CisJdW5zaWduZWQgaW50IHNlbmRfZHJvcF9ieXRlczsKKwl1bnNpZ25lZCBpbnQgcmVjdl9kcm9wczsKKwl1bnNpZ25lZCBpbnQgcmVjdl9kcm9wX2J5dGVzOworCXVuc2lnbmVkIGludCB0b3RhbF9wYWNrZXRzOworCXVuc2lnbmVkIGludCB0b3RhbF9ieXRlczsKK307CisKK3N0cnVjdCBwa3RfbG9zdF9pbmZvIHsKKwlzdHJ1Y3QgcGt0X2xvc3Rfc3RhdHMgc3RhdHNbMl07ICAvKjA6b3JpZ2lut73P8qOsMTpyZXBsebe9z/IqLworfTsKKworCitzdHJ1Y3QgdGNwX3NvY2tfc3RhdCB7CisJdW5zaWduZWQgbG9uZyB0Y3BfcmVjdl9udW07CisJdW5zaWduZWQgbG9uZyB0Y3Bfc2VuZF9udW07CisJdW5zaWduZWQgbG9uZyB0Y3BfcmV0cmFuc19udW07CisJdW5zaWduZWQgbG9uZyB0Y3BfcmVjdl9kcm9wczsKKwl1bnNpZ25lZCBsb25nIHRjcF9zZW5kX2Ryb3BzOworCXVuc2lnbmVkIGxvbmcgdGNwX3JzdF9zZW5kOworCXVuc2lnbmVkIGxvbmcgdGNwX3JzdF9yZWN2OworfTsKKworCisvL73Tv9rJ+cP3CitleHRlcm4gaW50IG5ldGlvY3RsX2hhbmRsZShpbnQgY21kLCB2b2lkICp2YWwpOworCisjZW5kaWYgLy9lbmQgX1pYSUNfSU9DVExfSF8KKwo=