ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggMDQ2MGM5My4uMDhjYTVhMCAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSwzOSBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4zLjMwIiBkYXRlPSIyMi4wMi4yMDA2Ij4KKworPGNoYW5nZSB0eXBlPSJjaGFuZ2UiPgorPHBhcmEgbGFuZz0icnUiPgor1dLP18XO2CDawdDJ08kg1yDMz8cgz9vJwsvJIEVDT05OQUJPUlRFRCDJ2s3FzqPOIM7BIGVycm9yINMg1dLP187RIGNyaXQuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgRUNPTk5BQk9SVEVEIGVycm9yIGxvZyBsZXZlbCB3YXMgY2hhbmdlZCB0byAiZXJyb3IiIGZyb20gImNyaXQiLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK83PxNXM2CBuZ3hfaHR0cF9wZXJsX21vZHVsZSDOxSDTz8LJ0sHM09EgwsXaIM3PxNXM0SBuZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZS4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSBuZ3hfaHR0cF9wZXJsX21vZHVsZSBjb3VsZCBub3QgYmUgYnVpbGQgd2l0aG91dAordGhlIG5neF9odHRwX3NzaV9maWx0ZXJfbW9kdWxlLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK25naW54IM7FINPPwsnSwczT0SDOwSBpMzg2INDMwdTGz9LNxSwgxdPMySDJ09DPzNjaz9fBzNPRIFBJQy4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK25naW54IGNvdWxkIG5vdCBiZSBidWlsdCBvbiBpMzg2IHBsYXRmb3JtLCBpZiB0aGUgUElDIHdhcyB1c2VkLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzwvY2hhbmdlcz4KKworCiA8Y2hhbmdlcyB2ZXI9IjAuMy4yOSIgZGF0ZT0iMjAuMDIuMjAwNiI+CiAKIDxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+CmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ2lueC5oIGIvc3JjL2NvcmUvbmdpbnguaAppbmRleCAwMWNlMWJkLi5kMGZmMjdmIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ2lueC5oCisrKyBiL3NyYy9jb3JlL25naW54LmgKQEAgLTgsNyArOCw3IEBACiAjZGVmaW5lIF9OR0lOWF9IX0lOQ0xVREVEXwogCiAKLSNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjMuMjkiCisjZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4zLjMwIgogCiAjZGVmaW5lIE5HSU5YX1ZBUiAgICAgICAgICAiTkdJTlgiCiAjZGVmaW5lIE5HWF9PTERQSURfRVhUICAgICAiLm9sZGJpbiIKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9jcHVpbmZvLmMgYi9zcmMvY29yZS9uZ3hfY3B1aW5mby5jCmluZGV4IGE5Mzk2MzUuLmY5MDVjYmMgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9jcHVpbmZvLmMKKysrIGIvc3JjL2NvcmUvbmd4X2NwdWluZm8uYwpAQCAtMTQsNiArMTQsMzkgQEAKIHN0YXRpYyBuZ3hfaW5saW5lIHZvaWQgbmd4X2NwdWlkKHVpbnQzMl90IGksIHVpbnQzMl90ICpidWYpOwogCiAKKyNpZiAoIF9faTM4Nl9fICkKKworc3RhdGljIG5neF9pbmxpbmUgdm9pZAorbmd4X2NwdWlkKHVpbnQzMl90IGksIHVpbnQzMl90ICpidWYpCit7CisKKyAgICAvKgorICAgICAqIHdlIGNvdWxkIG5vdCB1c2UgJWVieCBhcyBvdXRwdXQgcGFyYW1ldGVyIGlmIGdjYyBidWlsZHMgUElDLAorICAgICAqIGFuZCB3ZSBjb3VsZCBub3Qgc2F2ZSAlZWJ4IG9uIHN0YWNrLCBiZWNhdXNlICVlc3AgaXMgdXNlZCwKKyAgICAgKiB3aGVuIHRoZSAtZm9taXQtZnJhbWUtcG9pbnRlciBvcHRpbWl6YXRpb24gaXMgc3BlY2lmaWVkLgorICAgICAqLworCisgICAgX19hc21fXyAoCisKKyAgICAiICAgIG1vdiAgICAlJWVieCwgJSVlc2k7ICAiCisKKyAgICAiICAgIGNwdWlkOyAgICAgICAgICAgICAgICAiCisgICAgIiAgICBtb3YgICAgJSVlYXgsICUwOyAgICAgIgorICAgICIgICAgbW92ICAgICUlZWJ4LCAlMTsgICAgICIKKyAgICAiICAgIG1vdiAgICAlJWVkeCwgJTI7ICAgICAiCisgICAgIiAgICBtb3YgICAgJSVlY3gsICUzOyAgICAgIgorCisgICAgIiAgICBtb3YgICAgJSVlc2ksICUlZWJ4OyAgIgorCisgICAgOiAiPW0iIChidWZbMF0pLCAiPW0iIChidWZbMV0pLCAiPW0iIChidWZbMl0pLCAiPW0iIChidWZbM10pCisgICAgOiAiYSIgKGkpCisgICAgOiAiZWN4IiwgImVkeCIsICJlc2kiICk7Cit9CisKKworI2Vsc2UgLyogX19hbWQ2NF9fICovCisKKwogc3RhdGljIG5neF9pbmxpbmUgdm9pZAogbmd4X2NwdWlkKHVpbnQzMl90IGksIHVpbnQzMl90ICpidWYpCiB7CkBAIC0zMiw2ICs2NSw5IEBACiB9CiAKIAorI2VuZGlmCisKKwogLyogYXV0byBkZXRlY3QgdGhlIEwyIGNhY2hlIGxpbmUgc2l6ZSBvZiBtb2Rlcm4gYW5kIHdpZGVzcHJlYWQgQ1BVcyAqLwogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvZXZlbnQvbmd4X2V2ZW50X2FjY2VwdC5jIGIvc3JjL2V2ZW50L25neF9ldmVudF9hY2NlcHQuYwppbmRleCBhNzk1MDc1Li4yODc3NzdkIDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbmd4X2V2ZW50X2FjY2VwdC5jCisrKyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfYWNjZXB0LmMKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoKGVyciA9PSBOR1hfRUNPTk5BQk9SVEVEKSA/IE5HWF9MT0dfQ1JJVDoKKyAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoKGVyciA9PSBOR1hfRUNPTk5BQk9SVEVEKSA/IE5HWF9MT0dfRVJSOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdYX0xPR19BTEVSVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXYtPmxvZywgZXJyLCAiYWNjZXB0KCkgZmFpbGVkIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ2lueC54cyBiL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ2lueC54cwppbmRleCAyZDdlZGUwLi40ZDU3YmI2IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL3BlcmwvbmdpbngueHMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25naW54LnhzCkBAIC00Nyw3ICs0Nyw5IEBACiBzdGF0aWMgbmd4X2ludF90CiBuZ3hfaHR0cF9wZXJsX291dHB1dChuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIG5neF9idWZfdCAqYikKIHsKLSAgICBuZ3hfY2hhaW5fdCAgICAgICAgICAqY2wsIG91dDsKKyAgICBuZ3hfY2hhaW5fdCAgICAgICAgICAgb3V0OworI2lmIChOR1hfSFRUUF9TU0kpCisgICAgbmd4X2NoYWluX3QgICAgICAgICAgKmNsOwogICAgIG5neF9odHRwX3BlcmxfY3R4X3QgICpjdHg7CiAKICAgICBjdHggPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX2N0eChyLCBuZ3hfaHR0cF9wZXJsX21vZHVsZSk7CkBAIC02NSw2ICs2Nyw3IEBACiAKICAgICAgICAgcmV0dXJuIE5HWF9PSzsKICAgICB9CisjZW5kaWYKIAogICAgIG91dC5idWYgPSBiOwogICAgIG91dC5uZXh0ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ3hfaHR0cF9wZXJsX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25neF9odHRwX3BlcmxfbW9kdWxlLmMKaW5kZXggMDRmNzc4Ny4uMDY5YzIxNiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25neF9odHRwX3BlcmxfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25neF9odHRwX3BlcmxfbW9kdWxlLmMKQEAgLTM0LDggKzM0LDExIEBACiB9IG5neF9odHRwX3BlcmxfdmFyaWFibGVfdDsKIAogCisjaWYgKE5HWF9IVFRQX1NTSSkKIHN0YXRpYyBuZ3hfaW50X3Qgbmd4X2h0dHBfcGVybF9zc2kobmd4X2h0dHBfcmVxdWVzdF90ICpyLAogICAgIG5neF9odHRwX3NzaV9jdHhfdCAqc3NpX2N0eCwgbmd4X3N0cl90ICoqcGFyYW1zKTsKKyNlbmRpZgorCiBzdGF0aWMgbmd4X2ludF90CiAgICAgbmd4X2h0dHBfcGVybF9nZXRfaW50ZXJwcmV0ZXIobmd4X2h0dHBfcGVybF9tYWluX2NvbmZfdCAqcG1jZiwKICAgICBQZXJsSW50ZXJwcmV0ZXIgKipwZXJsLCBuZ3hfbG9nX3QgKmxvZyk7CkBAIC0xNDIsNiArMTQ1LDggQEAKIH07CiAKIAorI2lmIChOR1hfSFRUUF9TU0kpCisKICNkZWZpbmUgTkdYX0hUVFBfUEVSTF9TU0lfU1VCICAwCiAjZGVmaW5lIE5HWF9IVFRQX1BFUkxfU1NJX0FSRyAgMQogCkBAIC0xNTIsMTEgKzE1NywxMiBAQAogICAgIHsgbmd4X251bGxfc3RyaW5nLCAwLCAwLCAwIH0KIH07CiAKLQogc3RhdGljIG5neF9odHRwX3NzaV9jb21tYW5kX3QgIG5neF9odHRwX3Blcmxfc3NpX2NvbW1hbmQgPSB7CiAgICAgbmd4X3N0cmluZygicGVybCIpLCBuZ3hfaHR0cF9wZXJsX3NzaSwgbmd4X2h0dHBfcGVybF9zc2lfcGFyYW1zLCAwLCAxCiB9OwogCisjZW5kaWYKKwogCiBzdGF0aWMgdm9pZAogbmd4X2h0dHBfcGVybF94c19pbml0KHBUSFgpCkBAIC0zMTAsNiArMzE2LDggQEAKIH0KIAogCisjaWYgKE5HWF9IVFRQX1NTSSkKKwogc3RhdGljIG5neF9pbnRfdAogbmd4X2h0dHBfcGVybF9zc2kobmd4X2h0dHBfcmVxdWVzdF90ICpyLCBuZ3hfaHR0cF9zc2lfY3R4X3QgKnNzaV9jdHgsCiAgICAgbmd4X3N0cl90ICoqcGFyYW1zKQpAQCAtMzg1LDYgKzM5Myw4IEBACiAgICAgcmV0dXJuIHJjOwogfQogCisjZW5kaWYKKwogCiBzdGF0aWMgbmd4X2ludF90CiBuZ3hfaHR0cF9wZXJsX2dldF9pbnRlcnByZXRlcihuZ3hfaHR0cF9wZXJsX21haW5fY29uZl90ICpwbWNmLApAQCAtNzYzLDYgKzc3Myw3IEBACiBzdGF0aWMgbmd4X2ludF90CiBuZ3hfaHR0cF9wZXJsX3ByZWNvbmZpZ3VyYXRpb24obmd4X2NvbmZfdCAqY2YpCiB7CisjaWYgKE5HWF9IVFRQX1NTSSkKICAgICBuZ3hfaW50X3QgICAgICAgICAgICAgICAgICByYzsKICAgICBuZ3hfaHR0cF9zc2lfbWFpbl9jb25mX3QgICpzbWNmOwogCkBAIC03ODAsNiArNzkxLDcgQEAKIAogICAgICAgICByZXR1cm4gTkdYX0VSUk9SOwogICAgIH0KKyNlbmRpZgogCiAgICAgcmV0dXJuIE5HWF9PSzsKIH0KZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ3hfaHR0cF9wZXJsX21vZHVsZS5oIGIvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25neF9odHRwX3BlcmxfbW9kdWxlLmgKaW5kZXggOTIxOTE3Yi4uMWJjMzg1MiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25neF9odHRwX3BlcmxfbW9kdWxlLmgKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25neF9odHRwX3BlcmxfbW9kdWxlLmgKQEAgLTI2LDcgKzI2LDkgQEAKICAgICBuZ3hfc3RyX3QgICAgICAgICAgICAgICAgIHJlZGlyZWN0X3VyaTsKICAgICBuZ3hfc3RyX3QgICAgICAgICAgICAgICAgIHJlZGlyZWN0X2FyZ3M7CiAKKyNpZiAoTkdYX0hUVFBfU1NJKQogICAgIG5neF9odHRwX3NzaV9jdHhfdCAgICAgICAqc3NpOworI2VuZGlmCiB9IG5neF9odHRwX3BlcmxfY3R4X3Q7CiAKIAo=