ZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggOGFmOWIwOS4uN2EwMTVhNSAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTkwNSw5ICs5MDUsOSBAQAogIwlCb2FyZAkJQ1BVCQkJCQkJIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1EYW5pZWwgRW5nc3Ry9m0gPGRhbmllbEBvbWljcm9uLnNlPgorR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KIAotCXNjNTIwX2NkcAl4ODYKKwllTkVUCQlBTUQgU0M1MjAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBNSVBTIFN5c3RlbXM6CQkJCQkJCQkjCmRpZmYgLS1naXQgYS9NQUtFQUxMIGIvTUFLRUFMTAppbmRleCBlMWI5MjhmLi42YWNlY2U3IDEwMDc1NQotLS0gYS9NQUtFQUxMCisrKyBiL01BS0VBTEwKQEAgLTU0NCwxMCArNTQ0LDEwIEBACiAiCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIGkzODYgU3lzdGVtcworIyMgeDg2IFN5c3RlbXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotTElTVF94ODY9IiQoYm9hcmRzX2J5X2FyY2ggaTM4NikiCitMSVNUX3g4Nj0iJChib2FyZHNfYnlfYXJjaCB4ODYpIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBOaW9zLUlJIFN5c3RlbXMKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggMTBhODU2YS4uNzEzZGJhMSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTM0LDcgKzM0LDcgQEAKIFZFUlNJT05fRklMRSA9ICQob2JqKWluY2x1ZGUvdmVyc2lvbl9hdXRvZ2VuZXJhdGVkLmgKIAogSE9TVEFSQ0ggOj0gJChzaGVsbCB1bmFtZSAtbSB8IFwKLQlzZWQgLWUgcy9pLjg2L2kzODYvIFwKKwlzZWQgLWUgcy9pLjg2L3g4Ni8gXAogCSAgICAtZSBzL3N1bjR1L3NwYXJjNjQvIFwKIAkgICAgLWUgcy9hcm0uKi9hcm0vIFwKIAkgICAgLWUgcy9zYTExMC9hcm0vIFwKQEAgLTE2Nyw3ICsxNjcsNyBAQAogIyBVLUJvb3Qgb2JqZWN0cy4uLi5vcmRlciBpcyBpbXBvcnRhbnQgKGkuZS4gc3RhcnQgbXVzdCBiZSBmaXJzdCkKIAogT0JKUyAgPSAkKENQVURJUikvc3RhcnQubwotaWZlcSAoJChDUFUpLGkzODYpCitpZmVxICgkKENQVSkseDg2KQogT0JKUyArPSAkKENQVURJUikvc3RhcnQxNi5vCiBPQkpTICs9ICQoQ1BVRElSKS9yZXNldHZlYy5vCiBlbmRpZgpAQCAtNDEzLDggKzQxMywxMiBAQAogCQljYXQgJChPTkVOQU5EX0JJTikgJChvYmopdS1ib290LmJpbiA+ICQob2JqKXUtYm9vdC1vbmVuYW5kLmJpbgogCiAkKFZFUlNJT05fRklMRSk6Ci0JCUAoIHByaW50ZiAnI2RlZmluZSBVX0JPT1RfVkVSU0lPTiAiVS1Cb290ICVzJXMiXG4nICIkKFVfQk9PVF9WRVJTSU9OKSIgXAotCQkgJyQoc2hlbGwgJChUT1BESVIpL3Rvb2xzL3NldGxvY2FsdmVyc2lvbiAkKFRPUERJUikpJyApID4gJEAudG1wCisJCUAoIGxvY2FsdmVycz0nJChzaGVsbCAkKFRPUERJUikvdG9vbHMvc2V0bG9jYWx2ZXJzaW9uICQoVE9QRElSKSknIDsgXAorCQkgICBwcmludGYgJyNkZWZpbmUgUExBSU5fVkVSU0lPTiAiJXMlcyJcbicgXAorCQkJIiQoVV9CT09UX1ZFUlNJT04pIiAiJCR7bG9jYWx2ZXJzfSIgOyBcCisJCSAgIHByaW50ZiAnI2RlZmluZSBVX0JPT1RfVkVSU0lPTiAiVS1Cb290ICVzJXMiXG4nIFwKKwkJCSIkKFVfQk9PVF9WRVJTSU9OKSIgIiQke2xvY2FsdmVyc30iIDsgXAorCQkpID4gJEAudG1wCiAJCUAoIHByaW50ZiAnI2RlZmluZSBDQ19WRVJTSU9OX1NUUklORyAiJXMiXG4nIFwKIAkJICckKHNoZWxsICQoQ0MpIC0tdmVyc2lvbiB8IGhlYWQgLW4gMSknICk+PiAgJEAudG1wCiAJCUAoIHByaW50ZiAnI2RlZmluZSBMRF9WRVJTSU9OX1NUUklORyAiJXMiXG4nIFwKZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCBjMTI4YTZjLi40OTE3ZTI2IDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC0xNjQsNyArMTY0LDcgQEAKICAgL2JsYWNrZmluCQlGaWxlcyBnZW5lcmljIHRvIEFuYWxvZyBEZXZpY2VzIEJsYWNrZmluIGFyY2hpdGVjdHVyZQogICAgIC9jcHUJCUNQVSBzcGVjaWZpYyBmaWxlcwogICAgIC9saWIJCUFyY2hpdGVjdHVyZSBzcGVjaWZpYyBsaWJyYXJ5IGZpbGVzCi0gIC9pMzg2CQkJRmlsZXMgZ2VuZXJpYyB0byBpMzg2IGFyY2hpdGVjdHVyZQorICAveDg2CQkJRmlsZXMgZ2VuZXJpYyB0byB4ODYgYXJjaGl0ZWN0dXJlCiAgICAgL2NwdQkJQ1BVIHNwZWNpZmljIGZpbGVzCiAgICAgL2xpYgkJQXJjaGl0ZWN0dXJlIHNwZWNpZmljIGxpYnJhcnkgZmlsZXMKICAgL202OGsJCQlGaWxlcyBnZW5lcmljIHRvIG02OGsgYXJjaGl0ZWN0dXJlCkBAIC0xOTk3LDYgKzE5OTcsMTQgQEAKIAkJZXhhbXBsZSwgc29tZSBMRUQncykgb24geW91ciBib2FyZC4gQXQgdGhlIG1vbWVudCwKIAkJdGhlIGZvbGxvd2luZyBjaGVja3BvaW50cyBhcmUgaW1wbGVtZW50ZWQ6CiAKKy0gU3RhbmRhbG9uZSBwcm9ncmFtIHN1cHBvcnQ6CisJCUNPTkZJR19TVEFOREFMT05FX0xPQURfQUREUgorCisJCVRoaXMgb3B0aW9uIGFsbG93cyB0byBkZWZpbmUgYm9hcmQgc3BlY2lmaWMgdmFsdWVzCisJCWZvciB0aGUgYWRkcmVzcyB3aGVyZSBzdGFuZGFsb25lIHByb2dyYW0gZ2V0cyBsb2FkZWQsCisJCXRodXMgb3ZlcndyaXRpbmcgdGhlIGFyY2hpdGVjdXRyZSBkZXBlbmRlbnQgZGVmYXVsdAorCQlzZXR0aW5ncy4KKwogTGVnYWN5IHVJbWFnZSBmb3JtYXQ6CiAKICAgQXJnCVdoZXJlCQkJV2hlbgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlnLm1rIGIvYXJjaC9hcm0vY29uZmlnLm1rCmluZGV4IGE2YTQ3NDIuLmZjYzI2YTIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NvbmZpZy5taworKysgYi9hcmNoL2FybS9jb25maWcubWsKQEAgLTIzLDEzICsyMywxMSBAQAogCiBDUk9TU19DT01QSUxFID89IGFybS1saW51eC0KIAotaWZlcSAoJChCT0FSRCksb21hcDI0MjBoNCkKLVNUQU5EQUxPTkVfTE9BRF9BRERSID0gMHg4MDMwMDAwMAotZWxzZQoraWZuZGVmIENPTkZJR19TVEFOREFMT05FX0xPQURfQUREUgogaWZlcSAoJChTT0MpLG9tYXAzKQotU1RBTkRBTE9ORV9MT0FEX0FERFIgPSAweDgwMzAwMDAwCitDT05GSUdfU1RBTkRBTE9ORV9MT0FEX0FERFIgPSAweDgwMzAwMDAwCiBlbHNlCi1TVEFOREFMT05FX0xPQURfQUREUiA9IDB4YzEwMDAwMAorQ09ORklHX1NUQU5EQUxPTkVfTE9BRF9BRERSID0gMHhjMTAwMDAwCiBlbmRpZgogZW5kaWYKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9ldGhlci5jIGIvYXJjaC9hcm0vY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9ldGhlci5jCmluZGV4IGUxY2RlYmEuLmQ3MTM1YzUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NwdS9hcm05MjB0L2F0OTFybTkyMDAvZXRoZXIuYworKysgYi9hcmNoL2FybS9jcHUvYXJtOTIwdC9hdDkxcm05MjAwL2V0aGVyLmMKQEAgLTM5LDcgKzM5LDcgQEAKICNkZWZpbmUgUkJGX01VTFRJQ0FTVCAoMTw8MzApCiAjZGVmaW5lIFJCRl9VTklDQVNUICAgKDE8PDI5KQogI2RlZmluZSBSQkZfRVhURVJOQUwgICgxPDwyOCkKLSNkZWZpbmUgUkJGX1VOS09XTiAgICAoMTw8MjcpCisjZGVmaW5lIFJCRl9VTktOT1dOICAgKDE8PDI3KQogI2RlZmluZSBSQkZfU0laRSAgICAgIDB4MDdmZgogI2RlZmluZSBSQkZfTE9DQUw0ICAgICgxPDwyNikKICNkZWZpbmUgUkJGX0xPQ0FMMyAgICAoMTw8MjUpCmRpZmYgLS1naXQgYS9hcmNoL2F2cjMyL2NvbmZpZy5tayBiL2FyY2gvYXZyMzIvY29uZmlnLm1rCmluZGV4IDExMjFjYTEuLjk0ODhjNDkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXZyMzIvY29uZmlnLm1rCisrKyBiL2FyY2gvYXZyMzIvY29uZmlnLm1rCkBAIC0yMyw3ICsyMyw3IEBACiAKIENST1NTX0NPTVBJTEUgPz0gYXZyMzItbGludXgtCiAKLVNUQU5EQUxPTkVfTE9BRF9BRERSID0gMHgwMDAwMDAwMAorQ09ORklHX1NUQU5EQUxPTkVfTE9BRF9BRERSID89IDB4MDAwMDAwMDAKIAogUExBVEZPUk1fUkVMRkxBR1MJKz0gLWZmaXhlZC1yNSAtZlBJQyAtbW5vLWluaXQtZ290IC1tcmVsYXgKIFBMQVRGT1JNX0xERkxBR1MJKz0gLS1yZWxheApkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9jb25maWcubWsgYi9hcmNoL2JsYWNrZmluL2NvbmZpZy5tawppbmRleCA5NWNmN2RiLi5mMDkwOWU5IDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL2NvbmZpZy5taworKysgYi9hcmNoL2JsYWNrZmluL2NvbmZpZy5tawpAQCAtMjMsNyArMjMsNyBAQAogCiBDUk9TU19DT01QSUxFID89IGJmaW4tdWNsaW51eC0KIAotU1RBTkRBTE9ORV9MT0FEX0FERFIgPSAweDEwMDAgLW0gZWxmMzJiZmluCitDT05GSUdfU1RBTkRBTE9ORV9MT0FEX0FERFIgPz0gMHgxMDAwIC1tIGVsZjMyYmZpbgogCiBpZmVxICgkKENPTkZJR19CRklOX0NQVSksKQogQ09ORklHX0JGSU5fQ1BVIDo9IFwKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9jb25maWcubWsgYi9hcmNoL202OGsvY29uZmlnLm1rCmluZGV4IDc0OWMzODkuLjg2M2YzZGQgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9jb25maWcubWsKKysrIGIvYXJjaC9tNjhrL2NvbmZpZy5tawpAQCAtMjQsNyArMjQsNyBAQAogQ1JPU1NfQ09NUElMRSA/PSBtNjhrLWVsZi0KIAogY2xpYmRpciA9ICQoc2hlbGwgZGlybmFtZSBgJChDQykgJChDRkxBR1MpIC1wcmludC1maWxlLW5hbWU9bGliYy5hYCkKLVNUQU5EQUxPTkVfTE9BRF9BRERSID0gMHgyMDAwMCAtTCAkKGNsaWJkaXIpCitDT05GSUdfU1RBTkRBTE9ORV9MT0FEX0FERFIgPz0gMHgyMDAwMCAtTCAkKGNsaWJkaXIpCiAKIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX002OEsgLURfX002OEtfXwogUExBVEZPUk1fTERGTEFHUyAgKz0gLW4KZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9jb25maWcubWsgYi9hcmNoL21pY3JvYmxhemUvY29uZmlnLm1rCmluZGV4IGMzYzlmOTUuLmFiZWE3MGIgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9jb25maWcubWsKKysrIGIvYXJjaC9taWNyb2JsYXplL2NvbmZpZy5tawpAQCAtMjYsNiArMjYsNiBAQAogCiBDUk9TU19DT01QSUxFID89IG1iLQogCi1TVEFOREFMT05FX0xPQURfQUREUiA9IDB4ODBGMDAwMDAKK0NPTkZJR19TVEFOREFMT05FX0xPQURfQUREUiA/PSAweDgwRjAwMDAwCiAKIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1mZml4ZWQtcjMxIC1EX19taWNyb2JsYXplX18KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9jb25maWcubWsgYi9hcmNoL21pcHMvY29uZmlnLm1rCmluZGV4IGFhMDY3NjEuLjMxOGQzNGIgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9jb25maWcubWsKKysrIGIvYXJjaC9taXBzL2NvbmZpZy5tawpAQCAtMjMsNyArMjMsNyBAQAogCiBDUk9TU19DT01QSUxFID89IG1pcHNfNEtDLQogCi1TVEFOREFMT05FX0xPQURfQUREUiA9IDB4ODAyMDAwMDAgLVQgbWlwcy5sZHMKK0NPTkZJR19TVEFOREFMT05FX0xPQURfQUREUiA/PSAweDgwMjAwMDAwIC1UIG1pcHMubGRzCiAKIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX01JUFMgLURfX01JUFNfXwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlnLm1rIGIvYXJjaC9wb3dlcnBjL2NvbmZpZy5tawppbmRleCA4ZDcyZmJkLi4zYWZjNDM5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlnLm1rCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWcubWsKQEAgLTIzLDcgKzIzLDcgQEAKIAogQ1JPU1NfQ09NUElMRSA/PSBwcGNfOHh4LQogCi1TVEFOREFMT05FX0xPQURfQUREUiA9IDB4NDAwMDAKK0NPTkZJR19TVEFOREFMT05FX0xPQURfQUREUiA/PSAweDQwMDAwCiBMREZMQUdTX0ZJTkFMICs9IC0tZ2Mtc2VjdGlvbnMKIFBMQVRGT1JNX1JFTEZMQUdTICs9IC1mcGljIC1tcmVsb2NhdGFibGUgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMKIFBMQVRGT1JNX1JFTEZMQUdTICs9ICQoY2FsbCBjYy1vcHRpb24sLW1zaW5nbGUtcGljLWJhc2UsKQpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9jb25maWcubWsgYi9hcmNoL3NoL2NvbmZpZy5tawppbmRleCBjZDg1MWY1Li5hZjU3MzA3IDEwMDY0NAotLS0gYS9hcmNoL3NoL2NvbmZpZy5taworKysgYi9hcmNoL3NoL2NvbmZpZy5tawpAQCAtMjMsOSArMjMsOSBAQAogCiBDUk9TU19DT01QSUxFID89IHNoNC1saW51eC0KIAotU1RBTkRBTE9ORV9MT0FEX0FERFIgPSAweDhDMDAwMDAwCitDT05GSUdfU1RBTkRBTE9ORV9MT0FEX0FERFIgPz0gMHg4QzAwMDAwMAogaWZlcSAoJChDUFUpLHNoMikKLVNUQU5EQUxPTkVfTE9BRF9BRERSICs9IC1FQgorQ09ORklHX1NUQU5EQUxPTkVfTE9BRF9BRERSICs9IC1FQgogZW5kaWYKIAogUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfU0ggLURfX1NIX18KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvY29uZmlnLm1rIGIvYXJjaC9zcGFyYy9jb25maWcubWsKaW5kZXggNGRlNjUxNS4uY2FlNzQ3OCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9jb25maWcubWsKKysrIGIvYXJjaC9zcGFyYy9jb25maWcubWsKQEAgLTIzLDYgKzIzLDYgQEAKIAogQ1JPU1NfQ09NUElMRSA/PSBzcGFyYy1lbGYtCiAKLVNUQU5EQUxPTkVfTE9BRF9BRERSID0gMHgwMDAwMDAwMCAtTCAkKGdjY2xpYmRpcikgLVQgc3BhcmMubGRzCitDT05GSUdfU1RBTkRBTE9ORV9MT0FEX0FERFIgPz0gMHgwMDAwMDAwMCAtTCAkKGdjY2xpYmRpcikgLVQgc3BhcmMubGRzCiAKIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX1NQQVJDIC1EX19zcGFyY19fCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2NwdS9sZW9uMi9jcHVfaW5pdC5jIGIvYXJjaC9zcGFyYy9jcHUvbGVvbjIvY3B1X2luaXQuYwppbmRleCBhMjRmNzc4Li43OTVjN2Q3IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2NwdS9sZW9uMi9jcHVfaW5pdC5jCisrKyBiL2FyY2gvc3BhcmMvY3B1L2xlb24yL2NwdV9pbml0LmMKQEAgLTQ3LDkgKzQ3LDkgQEAKICAqIGluaXRpYWxpemUgYSBidW5jaCBvZiByZWdpc3RlcnMuCiAgKgogICogUnVuIGZyb20gRkxBU0gvUFJPTToKLSAqICAtIHVudGlsIG1lbW9yeSBjb250cm9sbGVyIGlzIHNldCB1cCwgb25seSByZWdpc3RlcnMgYXZhaWFibGUKKyAqICAtIHVudGlsIG1lbW9yeSBjb250cm9sbGVyIGlzIHNldCB1cCwgb25seSByZWdpc3RlcnMgYXZhaWxhYmxlCiAgKiAgLSBubyBnbG9iYWwgdmFyaWFibGVzIGF2YWlsYWJsZSBmb3Igd3JpdGluZwotICogIC0gY29uc3RhbnRzIGF2YWlhYmxlCisgKiAgLSBjb25zdGFudHMgYXZhaWxhYmxlCiAgKi8KIAogdm9pZCBjcHVfaW5pdF9mKHZvaWQpCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2NwdS9sZW9uMy9jcHVfaW5pdC5jIGIvYXJjaC9zcGFyYy9jcHUvbGVvbjMvY3B1X2luaXQuYwppbmRleCBiZTIyZWMyLi5jYmE5ZDBlIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2NwdS9sZW9uMy9jcHVfaW5pdC5jCisrKyBiL2FyY2gvc3BhcmMvY3B1L2xlb24zL2NwdV9pbml0LmMKQEAgLTU3LDkgKzU3LDkgQEAKICAqIGluaXRpYWxpemUgYSBidW5jaCBvZiByZWdpc3RlcnMuCiAgKgogICogUnVuIGZyb20gRkxBU0gvUFJPTToKLSAqICAtIHVudGlsIG1lbW9yeSBjb250cm9sbGVyIGlzIHNldCB1cCwgb25seSByZWdpc3RlcnMgYXZhaWFibGUKKyAqICAtIHVudGlsIG1lbW9yeSBjb250cm9sbGVyIGlzIHNldCB1cCwgb25seSByZWdpc3RlcnMgYXZhaWxhYmxlCiAgKiAgLSBubyBnbG9iYWwgdmFyaWFibGVzIGF2YWlsYWJsZSBmb3Igd3JpdGluZwotICogIC0gY29uc3RhbnRzIGF2YWlhYmxlCisgKiAgLSBjb25zdGFudHMgYXZhaWxhYmxlCiAgKi8KIAogdm9pZCBjcHVfaW5pdF9mKHZvaWQpCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY29uZmlnLm1rIGIvYXJjaC94ODYvY29uZmlnLm1rCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9jb25maWcubWsKcmVuYW1lIHRvIGFyY2gveDg2L2NvbmZpZy5tawppbmRleCA0N2UwZmI0Li5lOTQ1MjAxIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY29uZmlnLm1rCisrKyBiL2FyY2gveDg2L2NvbmZpZy5tawpAQCAtMjEsNyArMjEsNyBAQAogIyBNQSAwMjExMS0xMzA3IFVTQQogIwogCi1TVEFOREFMT05FX0xPQURfQUREUiA9IDB4NDAwMDAKK0NPTkZJR19TVEFOREFMT05FX0xPQURfQUREUiA/PSAweDQwMDAwCiAKIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1mbm8tc3RyaWN0LWFsaWFzaW5nCiBQTEFURk9STV9DUFBGTEFHUyArPSAtV3N0cmljdC1wcm90b3R5cGVzCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L01ha2VmaWxlIGIvYXJjaC94ODYvY3B1L01ha2VmaWxlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvY3B1L01ha2VmaWxlCnJlbmFtZSB0byBhcmNoL3g4Ni9jcHUvTWFrZWZpbGUKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9jcHUvY29uZmlnLm1rIGIvYXJjaC94ODYvY3B1L2NvbmZpZy5tawpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvY3B1L2NvbmZpZy5tawpyZW5hbWUgdG8gYXJjaC94ODYvY3B1L2NvbmZpZy5tawppbmRleCA5YjJlMmM5Li5kMWI1MjhhIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY3B1L2NvbmZpZy5taworKysgYi9hcmNoL3g4Ni9jcHUvY29uZmlnLm1rCkBAIC0yMyw3ICsyMyw3IEBACiAKIENST1NTX0NPTVBJTEUgPz0gaTM4Ni1saW51eC0KIAotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfSTM4NiAtRF9fSTM4Nl9fIC1tYXJjaD1pMzg2IC1XZXJyb3IKK1BMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX1g4NiAtRF9fSTM4Nl9fIC1tYXJjaD1pMzg2IC1XZXJyb3IKIAogIyBETyBOT1QgTU9ESUZZIFRIRSBGT0xMT1dJTkcgVU5MRVNTIFlPVSBSRUFMTFkgS05PVyBXSEFUIFlPVSBBUkUgRE9JTkchCiBMRFBQRkxBR1MgKz0gLURSRVNFVF9TRUdfU1RBUlQ9MHhmZmZmMDAwMApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2NwdS9jcHUuYyBiL2FyY2gveDg2L2NwdS9jcHUuYwpzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvY3B1L2NwdS5jCnJlbmFtZSB0byBhcmNoL3g4Ni9jcHUvY3B1LmMKaW5kZXggMjMzOWNkNC4uMGM1ZDdjMyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2NwdS9jcHUuYworKysgYi9hcmNoL3g4Ni9jcHUvY3B1LmMKQEAgLTEsNiArMSw5IEBACiAvKgorICogKEMpIENvcHlyaWdodCAyMDA4LTIwMTEKKyAqIEdyYWVtZSBSdXNzLCA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgorICoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlLgorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKICAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3dy5lbGlub3MuY29tPgpAQCAtMjksMTggKzMyLDE2IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLS8qCi0gKiBDUFUgc3BlY2lmaWMgY29kZQotICovCi0KICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxjb21tYW5kLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3ItZmxhZ3MuaD4KICNpbmNsdWRlIDxhc20vaW50ZXJydXB0Lmg+CiAKLS8qIENvbnN0cnVjdG9yIGZvciBhIGNvbnZlbnRpb25hbCBzZWdtZW50IEdEVCAob3IgTERUKSBlbnRyeSAqLwotLyogVGhpcyBpcyBhIG1hY3JvIHNvIGl0IGNhbiBiZSB1c2VkIGluIGluaXRpYWxpemVycyAqLworLyoKKyAqIENvbnN0cnVjdG9yIGZvciBhIGNvbnZlbnRpb25hbCBzZWdtZW50IEdEVCAob3IgTERUKSBlbnRyeQorICogVGhpcyBpcyBhIG1hY3JvIHNvIGl0IGNhbiBiZSB1c2VkIGluIGluaXRpYWxpc2VycworICovCiAjZGVmaW5lIEdEVF9FTlRSWShmbGFncywgYmFzZSwgbGltaXQpCQkJXAogCSgoKChiYXNlKSAgJiAweGZmMDAwMDAwVUxMKSA8PCAoNTYtMjQpKSB8CVwKIAkgKCgoZmxhZ3MpICYgMHgwMDAwZjBmZlVMTCkgPDwgNDApIHwJCVwKQEAgLTQ4LDEwICs0OSw2IEBACiAJICgoKGJhc2UpICAmIDB4MDBmZmZmZmZVTEwpIDw8IDE2KSB8CQlcCiAJICgoKGxpbWl0KSAmIDB4MDAwMGZmZmZVTEwpKSkKIAotLyoKLSAqIFNldCB1cCB0aGUgR0RUCi0gKi8KLQogc3RydWN0IGdkdF9wdHIgewogCXUxNiBsZW47CiAJdTMyIHB0cjsKQEAgLTU5LDggKzU2LDEwIEBACiAKIHN0YXRpYyB2b2lkIHJlbG9hZF9nZHQodm9pZCkKIHsKLQkvKiBUaGVyZSBhcmUgbWFjaGluZXMgd2hpY2ggYXJlIGtub3duIHRvIG5vdCBib290IHdpdGggdGhlIEdEVAotCSAgIGJlaW5nIDgtYnl0ZSB1bmFsaWduZWQuICBJbnRlbCByZWNvbW1lbmRzIDE2IGJ5dGUgYWxpZ25tZW50LiAqLworCS8qCisJICogVGhlcmUgYXJlIG1hY2hpbmVzIHdoaWNoIGFyZSBrbm93biB0byBub3QgYm9vdCB3aXRoIHRoZSBHRFQKKwkgKiBiZWluZyA4LWJ5dGUgdW5hbGlnbmVkLiAgSW50ZWwgcmVjb21tZW5kcyAxNiBieXRlIGFsaWdubWVudAorCSAqLwogCXN0YXRpYyBjb25zdCB1NjQgYm9vdF9nZHRbXSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpID0gewogCQkvKiBDUzogY29kZSwgcmVhZC9leGVjdXRlLCA0IEdCLCBiYXNlIDAgKi8KIAkJW0dEVF9FTlRSWV8zMkJJVF9DU10gPSBHRFRfRU5UUlkoMHhjMDliLCAwLCAweGZmZmZmKSwKQEAgLTg2LDcgKzg1LDYgQEAKIAkJICAgICA6IDogIm0iIChnZHQpIDogImVjeCIpOwogfQogCi0KIGludCB4ODZfY3B1X2luaXRfZih2b2lkKQogewogCWNvbnN0IHUzMiBlbV9yc3QgPSB+WDg2X0NSMF9FTTsKQEAgLTEyNSw3ICsxMjMsOSBAQAogaW50IGRvX3Jlc2V0KGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqIGNvbnN0IGFyZ3ZbXSkKIHsKIAlwcmludGYgKCJyZXNldHRpbmcgLi4uXG4iKTsKLQl1ZGVsYXkoNTAwMDApOwkJCQkvKiB3YWl0IDUwIG1zICovCisKKwkvKiB3YWl0IDUwIG1zICovCisJdWRlbGF5KDUwMDAwKTsKIAlkaXNhYmxlX2ludGVycnVwdHMoKTsKIAlyZXNldF9jcHUoMCk7CiAKQEAgLTEzNiw3ICsxMzYsNiBAQAogdm9pZCAgZmx1c2hfY2FjaGUgKHVuc2lnbmVkIGxvbmcgZHVtbXkxLCB1bnNpZ25lZCBsb25nIGR1bW15MikKIHsKIAlhc20oIndiaW52ZFxuIik7Ci0JcmV0dXJuOwogfQogCiB2b2lkIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDApKSkgZ2VuZXJhdGVfZ3BmKHZvaWQpOwpAQCAtMTUwLDcgKzE0OSw3IEBACiAKIHZvaWQgX19yZXNldF9jcHUodWxvbmcgYWRkcikKIHsKLQlwcmludGYoIlJlc2V0dGluZyB1c2luZyBpMzg2IFRyaXBsZSBGYXVsdFxuIik7CisJcHJpbnRmKCJSZXNldHRpbmcgdXNpbmcgeDg2IFRyaXBsZSBGYXVsdFxuIik7CiAJc2V0X3ZlY3RvcigxMywgZ2VuZXJhdGVfZ3BmKTsgIC8qIGdlbmVyYWwgcHJvdGVjdGlvbiBmYXVsdCBoYW5kbGVyICovCiAJc2V0X3ZlY3Rvcig4LCBnZW5lcmF0ZV9ncGYpOyAgIC8qIGRvdWJsZSBmYXVsdCBoYW5kbGVyICovCiAJZ2VuZXJhdGVfZ3BmKCk7ICAgICAgICAgICAgICAgIC8qIHN0YXJ0IHRoZSBzaG93ICovCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L2ludGVycnVwdHMuYyBiL2FyY2gveDg2L2NwdS9pbnRlcnJ1cHRzLmMKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2NwdS9pbnRlcnJ1cHRzLmMKcmVuYW1lIHRvIGFyY2gveDg2L2NwdS9pbnRlcnJ1cHRzLmMKaW5kZXggMWNlZmUwMi4uNjJiY2FkYyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2NwdS9pbnRlcnJ1cHRzLmMKKysrIGIvYXJjaC94ODYvY3B1L2ludGVycnVwdHMuYwpAQCAtMSw5ICsxLDkgQEAKIC8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDgKLSAqIEdyYWVtZSBSdXNzLCBncmFlbWUucnVzc0BnbWFpbC5jb20uCisgKiAoQykgQ29weXJpZ2h0IDIwMDgtMjAxMQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CiAgKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgZGVyaXZlZCBmcm9tIHRoZSBMaW51eCBrZXJuZWwgc291cmNlCiAgKiAgQ29weXJpZ2h0IChDKSAxOTkxLCAxOTkyICBMaW51cyBUb3J2YWxkcwpAQCAtNDUsNyArNDUsNyBAQAogICogcmVhZC93cml0ZSBmdW5jdGlvbnMgZm9yIHRoZSBjb250cm9sIHJlZ2lzdGVycyBhbmQgbWVzc2luZyBldmVyeXRoaW5nIHVwLgogICogQSBtZW1vcnkgY2xvYmJlciB3b3VsZCBzb2x2ZSB0aGUgcHJvYmxlbSwgYnV0IHdvdWxkIHByZXZlbnQgcmVvcmRlcmluZyBvZgogICogYWxsIGxvYWRzIHN0b3JlcyBhcm91bmQgaXQsIHdoaWNoIGNhbiBodXJ0IHBlcmZvcm1hbmNlLiBTb2x1dGlvbiBpcyB0bwotICogdXNlIGEgdmFyaWFibGUgYW5kIG1pbWljIHJlYWRzIGFuZCB3cml0ZXMgdG8gaXQgdG8gZW5mb3JjZSBzZXJpYWxpemF0aW9uCisgKiB1c2UgYSB2YXJpYWJsZSBhbmQgbWltaWMgcmVhZHMgYW5kIHdyaXRlcyB0byBpdCB0byBlbmZvcmNlIHNlcmlhbGlzYXRpb24KICAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgX19mb3JjZV9vcmRlcjsKIApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2NwdS9yZXNldHZlYy5TIGIvYXJjaC94ODYvY3B1L3Jlc2V0dmVjLlMKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2NwdS9yZXNldHZlYy5TCnJlbmFtZSB0byBhcmNoL3g4Ni9jcHUvcmVzZXR2ZWMuUwppbmRleCBkOTIyMmRkLi5jNjkwZDI1IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY3B1L3Jlc2V0dmVjLlMKKysrIGIvYXJjaC94ODYvY3B1L3Jlc2V0dmVjLlMKQEAgLTEsNyArMSw4IEBACiAvKgotICogIFUtYm9vdCAtIGkzODYgU3RhcnR1cCBDb2RlCisgKiAgVS1ib290IC0geDg2IFN0YXJ0dXAgQ29kZQogICoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMDIJT21pY3JvbiBDZXRpIEFCLCBEYW5pZWwgRW5nc3Ry9m0gPGRlbmFpZWxAb21pY3Jvbi5zZT4KKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9jcHUvc2M1MjAvTWFrZWZpbGUgYi9hcmNoL3g4Ni9jcHUvc2M1MjAvTWFrZWZpbGUKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2NwdS9zYzUyMC9NYWtlZmlsZQpyZW5hbWUgdG8gYXJjaC94ODYvY3B1L3NjNTIwL01ha2VmaWxlCmluZGV4IDU0MjYwYjYuLjY5NGI2MWUgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9jcHUvc2M1MjAvTWFrZWZpbGUKKysrIGIvYXJjaC94ODYvY3B1L3NjNTIwL01ha2VmaWxlCkBAIC0zMyw2ICszMyw3IEBACiAKIENPQkpTLSQoQ09ORklHX1NZU19TQzUyMCkgKz0gc2M1MjAubwogQ09CSlMtJChDT05GSUdfUENJKSArPSBzYzUyMF9wY2kubworQ09CSlMtJChDT05GSUdfU1lTX1NDNTIwX1JFU0VUKSArPSBzYzUyMF9yZXNldC5vCiBDT0JKUy0kKENPTkZJR19TWVNfU0M1MjApICs9IHNjNTIwX3NkcmFtLm8KIENPQkpTLSQoQ09ORklHX1NZU19TQzUyMF9TU0kpICs9IHNjNTIwX3NzaS5vCiBDT0JKUy0kKENPTkZJR19TWVNfU0M1MjBfVElNRVIpICs9IHNjNTIwX3RpbWVyLm8KZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjAuYyBiL2FyY2gveDg2L2NwdS9zYzUyMC9zYzUyMC5jCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjAuYwpyZW5hbWUgdG8gYXJjaC94ODYvY3B1L3NjNTIwL3NjNTIwLmMKaW5kZXggZDBjMzEzYi4uOGM0MTBhMiAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMC5jCisrKyBiL2FyY2gveDg2L2NwdS9zYzUyMC9zYzUyMC5jCkBAIC0xLDYgKzEsOSBAQAogLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwOC0yMDExCisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KKyAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHLvv71tLCBPbWljcm9uIENldGkgQUIgPGRhbmllbEBvbWljcm9uLnNlPi4KKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yMSw5ICsyNCw2IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLS8qIHN0dWZmIHNwZWNpZmljIGZvciB0aGUgc2M1MjAsCi0gKiBidXQgaWRlcGVuZGVudCBvZiBpbXBsZW1lbnRhdGlvbiAqLwotCiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci1mbGFncy5oPgpAQCAtNjUsMTMgKzY1LDMgQEAKIAlyZXR1cm4geDg2X2NwdV9pbml0X3IoKTsKIH0KIAotI2lmZGVmIENPTkZJR19TWVNfU0M1MjBfUkVTRVQKLXZvaWQgcmVzZXRfY3B1KHVsb25nIGFkZHIpCi17Ci0JcHJpbnRmKCJSZXNldHRpbmcgdXNpbmcgU0M1MjAgTU1DUlxuIik7Ci0JLyogV3JpdGUgYSAnMScgdG8gdGhlIFNZU19SU1Qgb2YgdGhlIFJFU0NGRyBNTUNSICovCi0Jd3JpdGViKDB4MDEsICZzYzUyMF9tbWNyLT5yZXNjZmcpOwotCi0JLyogTk9UUkVBQ0hFRCAqLwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX2Nhci5TIGIvYXJjaC94ODYvY3B1L3NjNTIwL3NjNTIwX2Nhci5TCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfY2FyLlMKcmVuYW1lIHRvIGFyY2gveDg2L2NwdS9zYzUyMC9zYzUyMF9jYXIuUwppbmRleCAyMmY1MjI1Li5hMzNmOTRmIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX2Nhci5TCisrKyBiL2FyY2gveDg2L2NwdS9zYzUyMC9zYzUyMF9jYXIuUwpAQCAtMSw2ICsxLDYgQEAKIC8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMTAKLSAqIEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+LgorICogKEMpIENvcHlyaWdodCAyMDEwLTIwMTEKKyAqIEdyYWVtZSBSdXNzLCA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjEsNyArMjEsNiBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLWZsYWdzLmg+CiAjaW5jbHVkZSA8YXNtL2ljL3NjNTIwLmg+CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3BjaS5jIGIvYXJjaC94ODYvY3B1L3NjNTIwL3NjNTIwX3BjaS5jCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfcGNpLmMKcmVuYW1lIHRvIGFyY2gveDg2L2NwdS9zYzUyMC9zYzUyMF9wY2kuYwppbmRleCBiOTE3NzM0Li44Y2Q3ZmZlIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3BjaS5jCisrKyBiL2FyY2gveDg2L2NwdS9zYzUyMC9zYzUyMF9wY2kuYwpAQCAtMSw2ICsxLDkgQEAKIC8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDgtMjAxMQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CisgKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiA8ZGFuaWVsQG9taWNyb24uc2U+LgorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTIxLDggKzI0LDYgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAotLyogc3R1ZmYgc3BlY2lmaWMgZm9yIHRoZSBzYzUyMCwgYnV0IGluZGVwZW5kZW50IG9mIGltcGxlbWVudGF0aW9uICovCi0KICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxwY2kuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KQEAgLTU0LDcgKzU1LDYgQEAKIAl7IFNDNTIwX0lSUTE1LCAxLCAweDgwIH0KIH07CiAKLQogLyogVGhlIGludGVycnVwdCB1c2VkIGZvciBQQ0kgSU5UQS1JTlREICAqLwogaW50IHNjNTIwX3BjaV9pbnRzWzE1XSA9IHsKIAktMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCkBAIC02OCw5ICs2OCw4IEBACiAJdTggdG1wYjsKIAl1MTYgdG1wdzsKIAotIyBpZiAxCi0JcHJpbnRmKCJzZXRfaXJxKCk6IG1hcCBJTlQlYyB0byBJUlElZFxuIiwgcGNpX3BpbiArICdBJywgaXJxKTsKLSNlbmRpZgorCWRlYnVnKCJzZXRfaXJxKCk6IG1hcCBJTlQlYyB0byBJUlElZFxuIiwgcGNpX3BpbiArICdBJywgaXJxKTsKKwogCWlmIChpcnEgPCAwIHx8IGlycSA+IDE1KSB7CiAJCXJldHVybiAtMTsgLyogaWxsZWdhbCBpcnEgKi8KIAl9CkBAIC0xMzgsNSArMTM3LDQgQEAKIAkvKiBlbmFibGUgdGFyZ2V0IG1lbW9yeSBhY2Nlc2VzIG9uIGhvc3QgYnJpZ2UgKi8KIAlwY2lfd3JpdGVfY29uZmlnX3dvcmQoMCwgUENJX0NPTU1BTkQsCiAJCQkgICAgICBQQ0lfQ09NTUFORF9NRU1PUlkgfCBQQ0lfQ09NTUFORF9NQVNURVIpOwotCiB9CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3Jlc2V0dmVjLlMgYi9hcmNoL3g4Ni9jcHUvc2M1MjAvc2M1MjBfcmVzZXQuYwpzaW1pbGFyaXR5IGluZGV4IDY1JQpjb3B5IGZyb20gYXJjaC9pMzg2L2NwdS9yZXNldHZlYy5TCmNvcHkgdG8gYXJjaC94ODYvY3B1L3NjNTIwL3NjNTIwX3Jlc2V0LmMKaW5kZXggZDkyMjJkZC4uNzllZjk3NiAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2NwdS9yZXNldHZlYy5TCisrKyBiL2FyY2gveDg2L2NwdS9zYzUyMC9zYzUyMF9yZXNldC5jCkBAIC0xLDcgKzEsOSBAQAogLyoKLSAqICBVLWJvb3QgLSBpMzg2IFN0YXJ0dXAgQ29kZQorICogKEMpIENvcHlyaWdodCAyMDExCisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KICAqCi0gKiAgQ29weXJpZ2h0IChjKSAyMDAyCU9taWNyb24gQ2V0aSBBQiwgRGFuaWVsIEVuZ3N0cvZtIDxkZW5haWVsQG9taWNyb24uc2U+CisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yMiwxNiArMjQsMTcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAotLyogUmVzZXQgdmVjdG9yLCBqdW1wcyB0byBzdGFydDE2LlMgKi8KKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vaWMvc2M1MjAuaD4KIAotLmV4dGVybiBzdGFydDE2CitERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIAotLnNlY3Rpb24gLnJlc2V0dmVjLCAiYXgiCi0uY29kZTE2Ci1yZXNldF92ZWN0b3I6Ci0JY2xpCi0JY2xkCi0Jam1wIHN0YXJ0MTYKK3ZvaWQgcmVzZXRfY3B1KHVsb25nIGFkZHIpCit7CisJcHJpbnRmKCJSZXNldHRpbmcgdXNpbmcgU0M1MjAgTU1DUlxuIik7CisJLyogV3JpdGUgYSAnMScgdG8gdGhlIFNZU19SU1Qgb2YgdGhlIFJFU0NGRyBNTUNSICovCisJd3JpdGViKDB4MDEsICZzYzUyMF9tbWNyLT5yZXNjZmcpOwogCi0JLm9yZyAweGYKLQlub3AKKwkvKiBOT1RSRUFDSEVEICovCit9CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3NkcmFtLmMgYi9hcmNoL3g4Ni9jcHUvc2M1MjAvc2M1MjBfc2RyYW0uYwpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3NkcmFtLmMKcmVuYW1lIHRvIGFyY2gveDg2L2NwdS9zYzUyMC9zYzUyMF9zZHJhbS5jCmluZGV4IGQ1YWI1NWQuLmYzNjIzZjUgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfc2RyYW0uYworKysgYi9hcmNoL3g4Ni9jcHUvc2M1MjAvc2M1MjBfc2RyYW0uYwpAQCAtMSw2ICsxLDYgQEAKIC8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMTAKLSAqIEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+LgorICogKEMpIENvcHlyaWdodCAyMDEwLDIwMTEKKyAqIEdyYWVtZSBSdXNzLCA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF9zc2kuYyBiL2FyY2gveDg2L2NwdS9zYzUyMC9zYzUyMF9zc2kuYwpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3NzaS5jCnJlbmFtZSB0byBhcmNoL3g4Ni9jcHUvc2M1MjAvc2M1MjBfc3NpLmMKaW5kZXggNmU1ZTM0Ni4uYWM1OGQyNSAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF9zc2kuYworKysgYi9hcmNoL3g4Ni9jcHUvc2M1MjAvc2M1MjBfc3NpLmMKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiA8ZGFuaWVsQG9taWNyb24uc2U+LgorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTIxLDggKzIxLDYgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAotLyogc3R1ZmYgc3BlY2lmaWMgZm9yIHRoZSBzYzUyMCwgYnV0IGluZGVwZW5kZW50IG9mIGltcGxlbWVudGF0aW9uICovCi0KICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vaWMvc3NpLmg+CkBAIC03Nyw3ICs3NSw2IEBACiAJcmV0dXJuIHJlYWRiKCZzYzUyMF9tbWNyLT5zc2lyY3YpOwogfQogCi0KIHZvaWQgc3NpX3R4X2J5dGUodTggZGF0YSkKIHsKIAl3cml0ZWIoZGF0YSwgJnNjNTIwX21tY3ItPnNzaXhtaXQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF90aW1lci5jIGIvYXJjaC94ODYvY3B1L3NjNTIwL3NjNTIwX3RpbWVyLmMKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF90aW1lci5jCnJlbmFtZSB0byBhcmNoL3g4Ni9jcHUvc2M1MjAvc2M1MjBfdGltZXIuYwppbmRleCBkNTYxN2U5Li4xYmNmZTY3IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3RpbWVyLmMKKysrIGIvYXJjaC94ODYvY3B1L3NjNTIwL3NjNTIwX3RpbWVyLmMKQEAgLTEsNiArMSw5IEBACiAvKgorICogKEMpIENvcHlyaWdodCAyMDA4LTIwMTEKKyAqIEdyYWVtZSBSdXNzLCA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgorICoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIgPGRhbmllbEBvbWljcm9uLnNlPi4KKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yMSw4ICsyNCw2IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLS8qIHN0dWZmIHNwZWNpZmljIGZvciB0aGUgc2M1MjAsIGJ1dCBpbmRlcGVuZGVudCBvZiBpbXBsZW1lbnRhdGlvbiAqLwotCiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL2ludGVycnVwdC5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2NwdS9zdGFydC5TIGIvYXJjaC94ODYvY3B1L3N0YXJ0LlMKc2ltaWxhcml0eSBpbmRleCA4NCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2NwdS9zdGFydC5TCnJlbmFtZSB0byBhcmNoL3g4Ni9jcHUvc3RhcnQuUwppbmRleCAwMDMxMzg5Li43Y2NjMDc2IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY3B1L3N0YXJ0LlMKKysrIGIvYXJjaC94ODYvY3B1L3N0YXJ0LlMKQEAgLTEsNyArMSwxMSBAQAogLyoKLSAqICBVLWJvb3QgLSBpMzg2IFN0YXJ0dXAgQ29kZQorICogIFUtYm9vdCAtIHg4NiBTdGFydHVwIENvZGUKICAqCi0gKiAgQ29weXJpZ2h0IChjKSAyMDAyCU9taWNyb24gQ2V0aSBBQiwgRGFuaWVsIEVuZ3N0cvZtIDxkZW5haWVsQG9taWNyb24uc2U+CisgKiAoQykgQ29weXJpZ2h0IDIwMDgtMjAxMQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CisgKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjIsMTkgKzI2LDE3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLQogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPHZlcnNpb24uaD4KICNpbmNsdWRlIDxhc20vZ2xvYmFsX2RhdGEuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLWZsYWdzLmg+CiAKLQogLnNlY3Rpb24gLnRleHQKIC5jb2RlMzIKIC5nbG9ibCBfc3RhcnQKIC50eXBlIF9zdGFydCwgQGZ1bmN0aW9uCi0uZ2xvYmwgX2kzODZib290X3N0YXJ0Ci1faTM4NmJvb3Rfc3RhcnQ6CisuZ2xvYmwgX3g4NmJvb3Rfc3RhcnQKK194ODZib290X3N0YXJ0OgogCS8qCiAJICogVGhpcyBpcyB0aGUgZmFpbCBzYWZlIDMyLWJpdCBib290c3RyYXAgZW50cnkgcG9pbnQuIFRoZQogCSAqIGZvbGxvd2luZyBjb2RlIGlzIG5vdCBleGVjdXRlZCBmcm9tIGEgY29sZC1yZXNldCAoYWN0dWFsbHksIGEKQEAgLTU2LDggKzU4LDggQEAKIF9zdGFydDoKIAkvKiBUaGlzIGlzIHRoZSAzMi1iaXQgY29sZC1yZXNldCBlbnRyeSBwb2ludCAqLwogCi0JbW92bAkkMHgxOCwgJWVheAkvKiBMb2FkIG91ciBzZWdlbWVudCByZWdpc3RlcywgdGhlCi0JCQkJICogZ2R0IGhhdmUgYWxyZWFkeSBiZWVuIGxvYWRlZCBieSBzdGFydDE2LlMgKi8KKwkvKiBMb2FkIHRoZSBzZWdlbWVudCByZWdpc3RlcyB0byBtYXRjaCB0aGUgZ2R0IGxvYWRlZCBpbiBzdGFydDE2LlMgKi8KKwltb3ZsCSQweDE4LCAlZWF4CiAJbW92dwklYXgsICVmcwogCW1vdncJJWF4LCAlZHMKIAltb3Z3CSVheCwgJWdzCkBAIC04MiwyMSArODQsMTMgQEAKIAkgKiBzdGFydGluZyBhdCBDT05GSUdfU1lTX0NBUl9BRERSIHRvIGJlIHVzZWQgYXMgYSB0ZW1wb3Jhcnkgc3RhY2sKIAkgKi8KIAltb3ZsCSRDT05GSUdfU1lTX0lOSVRfU1BfQUREUiwgJWVzcAotCW1vdmwJJENPTkZJR19TWVNfSU5JVF9HRF9BRERSLCAlZWJwCi0KLQkvKiBTZXQgQm9vdCBGbGFncyBpbiBHbG9iYWwgRGF0YSAqLwotCW1vdmwJJWVieCwgKEdEX0ZMQUdTICogNCkoJWVicCkKLQotCS8qIERldGVybWluZSBvdXIgbG9hZCBvZmZzZXQgKGFuZCBwdXQgaW4gR2xvYmFsIERhdGEpICovCi0JY2FsbAkxZgotMToJcG9wbAklZWN4Ci0Jc3VibAkkMWIsICVlY3gKLQltb3ZsCSVlY3gsIChHRF9MT0FEX09GRiAqIDQpKCVlYnApCiAKIAkvKiBTZXQgcGFyYW1ldGVyIHRvIGJvYXJkX2luaXRfZigpIHRvIGJvb3QgZmxhZ3MgKi8KLQltb3ZsCShHRF9GTEFHUyAqIDQpKCVlYnApLCAlZWF4CisJeG9ybAklZWF4LCAlZWF4CisJbW92dwklYngsICVheAogCi0JY2FsbAlib2FyZF9pbml0X2YJLyogRW50ZXIsIFUtYm9vdCEgKi8KKwkvKiBFbnRlciwgVS1ib290ISAqLworCWNhbGwJYm9hcmRfaW5pdF9mCiAKIAkvKiBpbmRpY2F0ZSAobGFjayBvZikgcHJvZ3Jlc3MgKi8KIAltb3Z3CSQweDg1LCAlYXgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9jcHUvc3RhcnQxNi5TIGIvYXJjaC94ODYvY3B1L3N0YXJ0MTYuUwpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvY3B1L3N0YXJ0MTYuUwpyZW5hbWUgdG8gYXJjaC94ODYvY3B1L3N0YXJ0MTYuUwppbmRleCA3ZGM1MzU4Li5mMWI5ZDBhIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY3B1L3N0YXJ0MTYuUworKysgYi9hcmNoL3g4Ni9jcHUvc3RhcnQxNi5TCkBAIC0xLDcgKzEsMTEgQEAKIC8qCi0gKiAgVS1ib290IC0gaTM4NiBTdGFydHVwIENvZGUKKyAqICBVLWJvb3QgLSB4ODYgU3RhcnR1cCBDb2RlCiAgKgotICogIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMyBPbWljcm9uIENldGkgQUIsIERhbmllbCBFbmdzdHL2bSA8ZGVuYWllbEBvbWljcm9uLnNlPgorICogKEMpIENvcHlyaWdodCAyMDA4LTIwMTEKKyAqIEdyYWVtZSBSdXNzLCA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMiwyMDAzCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2NwdS91LWJvb3QubGRzIGIvYXJjaC94ODYvY3B1L3UtYm9vdC5sZHMKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2NwdS91LWJvb3QubGRzCnJlbmFtZSB0byBhcmNoL3g4Ni9jcHUvdS1ib290LmxkcwppbmRleCA5OGE1NDhkLi41NTk3NDIyIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY3B1L3UtYm9vdC5sZHMKKysrIGIvYXJjaC94ODYvY3B1L3UtYm9vdC5sZHMKQEAgLTIxLDYgKzIxLDcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorI2luY2x1ZGUgPGNvbmZpZy5oPgogT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiKQogT1VUUFVUX0FSQ0goaTM4NikKIEVOVFJZKF9zdGFydCkKQEAgLTg5LDggKzkwLDggQEAKIAkgKiBSZXNldCBWZWN0b3IgYXQgdGhlIGVuZCBvZiB0aGUgRmxhc2ggUk9NCiAJICovCiAJLiA9IFNUQVJUXzE2OwotCS5zdGFydDE2IDogQVQgKENPTkZJR19TWVNfVEVYVF9CQVNFICsgKEZMQVNIX1NJWkUgLSBSRVNFVF9TRUdfU0laRSArIFNUQVJUXzE2KSkgeyBLRUVQKCooLnN0YXJ0MTYpKTsgfQorCS5zdGFydDE2IDogQVQgKENPTkZJR19TWVNfVEVYVF9CQVNFICsgKENPTkZJR19TWVNfTU9OSVRPUl9MRU4gLSBSRVNFVF9TRUdfU0laRSArIFNUQVJUXzE2KSkgeyBLRUVQKCooLnN0YXJ0MTYpKTsgfQogCiAJLiA9IFJFU0VUX1ZFQ19MT0M7Ci0JLnJlc2V0dmVjIDogQVQgKENPTkZJR19TWVNfVEVYVF9CQVNFICsgKEZMQVNIX1NJWkUgLSBSRVNFVF9TRUdfU0laRSArIFJFU0VUX1ZFQ19MT0MpKSB7IEtFRVAoKigucmVzZXR2ZWMpKTsgfQorCS5yZXNldHZlYyA6IEFUIChDT05GSUdfU1lTX1RFWFRfQkFTRSArIChDT05GSUdfU1lTX01PTklUT1JfTEVOIC0gUkVTRVRfU0VHX1NJWkUgKyBSRVNFVF9WRUNfTE9DKSkgeyBLRUVQKCooLnJlc2V0dmVjKSk7IH0KIH0KZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vYml0b3BzLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vYm9vdHBhcmFtLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ib290cGFyYW0uaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2Jvb3RwYXJhbS5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9ib290cGFyYW0uaApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaApyZW5hbWUgdG8gYXJjaC94ODYvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9jb25maWcuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NvbmZpZy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vY29uZmlnLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL2NvbmZpZy5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vZTgyMC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZTgyMC5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vZTgyMC5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9lODIwLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9lcnJuby5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZXJybm8uaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2Vycm5vLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL2Vycm5vLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9pODI1NC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vaTgyNTQuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2k4MjU0LmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL2k4MjU0LmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9pODI1OS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vaTgyNTkuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2k4MjU5LmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL2k4MjU5LmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9pYm1wYy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vaWJtcGMuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2libXBjLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL2libXBjLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9pYy9wY2kuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ljL3BjaS5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vaWMvcGNpLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL2ljL3BjaS5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vaWMvc2M1MjAuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ljL3NjNTIwLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9pbmNsdWRlL2FzbS9pYy9zYzUyMC5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9pYy9zYzUyMC5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vaWMvc3NpLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pYy9zc2kuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2ljL3NzaS5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9pYy9zc2kuaApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2ludGVycnVwdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vaW50ZXJydXB0LmgKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2ludGVycnVwdC5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9pbnRlcnJ1cHQuaAppbmRleCBkMzJlZjhiLi5iZTUyZmU0IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vaW50ZXJydXB0LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vaW50ZXJydXB0LmgKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CiAKLS8qIGFyY2gvaTM4Ni9jcHUvaW50ZXJydXB0cy5jICovCisvKiBhcmNoL3g4Ni9jcHUvaW50ZXJydXB0cy5jICovCiB2b2lkIHNldF92ZWN0b3IodTggaW50bnVtLCB2b2lkICpyb3V0aW5lKTsKIAotLyogYXJjaC9pMzg2L2xpYi9pbnRlcnVwdHMuYyAqLworLyogYXJjaC94ODYvbGliL2ludGVydXB0cy5jICovCiB2b2lkIGRpc2FibGVfaXJxKGludCBpcnEpOwogdm9pZCBlbmFibGVfaXJxKGludCBpcnEpOwogCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vaW8uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lvLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9pbmNsdWRlL2FzbS9pby5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vaW9jdGwuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lvY3RsLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9pbmNsdWRlL2FzbS9pb2N0bC5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9pb2N0bC5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vaXN0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pc3QuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2lzdC5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9pc3QuaApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2luY2x1ZGUvYXNtL3BjaS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGNpLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9pbmNsdWRlL2FzbS9wY2kuaApyZW5hbWUgdG8gYXJjaC94ODYvaW5jbHVkZS9hc20vcGNpLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3ItZmxhZ3MuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci1mbGFncy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLWZsYWdzLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci1mbGFncy5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaApyZW5hbWUgdG8gYXJjaC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9yZWFsbW9kZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcmVhbG1vZGUuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2luY2x1ZGUvYXNtL3JlYWxtb2RlLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL3JlYWxtb2RlLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS9zdHJpbmcuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vc3RyaW5nLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZy5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vdHlwZXMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3R5cGVzLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9pbmNsdWRlL2FzbS90eXBlcy5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS90eXBlcy5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vdS1ib290LWkzODYuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3UtYm9vdC14ODYuaApzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vdS1ib290LWkzODYuaApyZW5hbWUgdG8gYXJjaC94ODYvaW5jbHVkZS9hc20vdS1ib290LXg4Ni5oCmluZGV4IDdiMzliZDIuLjk0NGUxYTIgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS91LWJvb3QtaTM4Ni5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3UtYm9vdC14ODYuaApAQCAtMzUsNyArMzUsNyBAQAogdHlwZWRlZiB2b2lkICh0aW1lcl9mbmNfdCkgKHZvaWQpOwogaW50IHJlZ2lzdGVyX3RpbWVyX2lzciAodGltZXJfZm5jX3QgKmlzcl9mdW5jKTsKIAotLyogQXJjaGl0ZWN0dXJlIHNwZWNpZmljIC0gY2FuIGJlIGluIGFyY2gvaTM4Ni9jcHUvLCBhcmNoL2kzODYvbGliLywgb3IgJChCT0FSRCkvICovCisvKiBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgLSBjYW4gYmUgaW4gYXJjaC94ODYvY3B1LywgYXJjaC94ODYvbGliLywgb3IgJChCT0FSRCkvICovCiBpbnQgdGltZXJfaW5pdCh2b2lkKTsKIGludCBkcmFtX2luaXRfZih2b2lkKTsKIApAQCAtNTEsNyArNTEsNyBAQAogdm9pZCBpc2FfdW5tYXBfcm9tKHUzMiBhZGRyKTsKIHUzMiBpc2FfbWFwX3JvbSh1MzIgYnVzX2FkZHIsIGludCBzaXplKTsKIAotLyogYXJjaC9pMzg2L2xpYi8uLi4gKi8KKy8qIGFyY2gveDg2L2xpYi8uLi4gKi8KIGludCB2aWRlb19iaW9zX2luaXQodm9pZCk7CiBpbnQgdmlkZW9faW5pdCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2luY2x1ZGUvYXNtL3UtYm9vdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdS1ib290LmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9pbmNsdWRlL2FzbS91LWJvb3QuaApyZW5hbWUgdG8gYXJjaC94ODYvaW5jbHVkZS9hc20vdS1ib290LmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS91bmFsaWduZWQuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuYWxpZ25lZC5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vdW5hbGlnbmVkLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL3VuYWxpZ25lZC5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vdmlkZW8vZWRpZC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdmlkZW8vZWRpZC5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vdmlkZW8vZWRpZC5oCnJlbmFtZSB0byBhcmNoL3g4Ni9pbmNsdWRlL2FzbS92aWRlby9lZGlkLmgKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9pbmNsdWRlL2FzbS96aW1hZ2UuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3ppbWFnZS5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvaW5jbHVkZS9hc20vemltYWdlLmgKcmVuYW1lIHRvIGFyY2gveDg2L2luY2x1ZGUvYXNtL3ppbWFnZS5oCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL01ha2VmaWxlIGIvYXJjaC94ODYvbGliL01ha2VmaWxlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvbGliL01ha2VmaWxlCnJlbmFtZSB0byBhcmNoL3g4Ni9saWIvTWFrZWZpbGUKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvYmlvcy5TIGIvYXJjaC94ODYvbGliL2Jpb3MuUwpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvbGliL2Jpb3MuUwpyZW5hbWUgdG8gYXJjaC94ODYvbGliL2Jpb3MuUwppbmRleCA0OGYxYjgxLi42NjBhMjQ0IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbGliL2Jpb3MuUworKysgYi9hcmNoL3g4Ni9saWIvYmlvcy5TCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtNDIsNyArNDIsNiBAQAogICogYSBnZW5lcmFsIHB1cnBvc2UgcmVwbGFjZW1lbnQgZm9yIGEgcmVhbCBCSU9TICEhCiAgKi8KIAotCiAuc2VjdGlvbiAuYmlvcywgImF4IgogLmNvZGUxNgogLm9yZyAwCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL2Jpb3MuaCBiL2FyY2gveDg2L2xpYi9iaW9zLmgKc2ltaWxhcml0eSBpbmRleCA4MSUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2xpYi9iaW9zLmgKcmVuYW1lIHRvIGFyY2gveDg2L2xpYi9iaW9zLmgKaW5kZXggNDkwMWY4OS4uM2M4ZDYxYSAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi9iaW9zLmgKKysrIGIvYXJjaC94ODYvbGliL2Jpb3MuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTU3LDcgKzU3LDcgQEAKICNkZWZpbmUgT0ZGU19GTEFHUyAgIDQ0ICAgIC8qIDE2Yml0ICovCiAKICNkZWZpbmUgU0VHTUVOVCAgICAgIDB4NDAKLSNkZWZpbmUgU1RBQ0sJICAgICAweDgwMAkJCS8qIHN0YWNrIGF0IDB4NDA6MHg4MDAgLT4gMHg4MDAgKi8KKyNkZWZpbmUgU1RBQ0sJICAgICAweDgwMAkvKiBzdGFjayBhdCAweDQwOjB4ODAwIC0+IDB4ODAwICovCiAKIC8qIHNhdmUgZ2VuZXJhbCByZWdpc3RlcnMgKi8KIC8qIHNhdmUgc29tZSBzZWdtZW50cyAgICAgKi8KQEAgLTY3LDI4ICs2NywyNiBAQAogCS8qIHNldHVwIEJJT1Mgc3RhY2twb2ludGVyICovCiAKICNkZWZpbmUgTUFLRV9CSU9TX1NUQUNLIFwKLQlwdXNoYWwJCTsgXAotCXB1c2h3CSVkcwk7IFwKLQlwdXNodwklZ3MJOyBcCi0JcHVzaHcJJWVzCTsgXAotCXB1c2h3CSVzcwk7IFwKLQlwb3B3CSVncwk7IFwKLQltb3Z3CSRTRUdNRU5ULCVheCA7IFwKLQltb3Z3CSVheCwlZHMJOyBcCi0JbW92dwklYXgsJWVzCTsgXAotCW1vdncJJWF4LCVzcwk7IFwKLQltb3Z3CSVzcCwlYnAJOyBcCi0JbW92dwkkU1RBQ0ssJXNwCisJcHVzaGFsOyBcCisJcHVzaHcJJWRzOyBcCisJcHVzaHcJJWdzOyBcCisJcHVzaHcJJWVzOyBcCisJcHVzaHcJJXNzOyBcCisJcG9wdwklZ3M7IFwKKwltb3Z3CSRTRUdNRU5ULCAlYXg7IFwKKwltb3Z3CSVheCwgJWRzOyBcCisJbW92dwklYXgsICVlczsgXAorCW1vdncJJWF4LCAlc3M7IFwKKwltb3Z3CSVzcCwgJWJwOyBcCisJbW92dwkkU1RBQ0ssICVzcAogCiAjZGVmaW5lIFJFU1RPUkVfQ0FMTEVSU19TVEFDSyBcCi0JcHVzaHcJJWdzICAgICA7CQkJLyogcmVzdG9yZSBjYWxsZXJzIHN0YWNrIHNlZ21lbnQgKi8gXAotCXBvcHcJJXNzICAgICA7IFwKLQltb3Z3CSVicCwlc3AJOwkJCS8qIHJlc3RvcmUgc3RhY2twb2ludGVyICovIFwKLQkJXAotCXBvcHcJJWVzCTsJCQkvKiByZXN0b3JlIHNlZ21lbnQgc2VsZWN0b3JzICovIFwKLQlwb3B3CSVncyAgICAgOyBcCi0JcG9wdwklZHMgICAgIDsgXAotCQlcCi0JcG9wYWwJCQkJCS8qIHJlc3RvcmUgR1AgcmVnaXN0ZXJzICovCisJcHVzaHcJJWdzOwkJLyogcmVzdG9yZSBjYWxsZXJzIHN0YWNrIHNlZ21lbnQgKi8gXAorCXBvcHcJJXNzOyBcCisJbW92dwklYnAsICVzcDsJLyogcmVzdG9yZSBzdGFja3BvaW50ZXIgKi8gXAorCXBvcHcJJWVzOwkJLyogcmVzdG9yZSBzZWdtZW50IHNlbGVjdG9ycyAqLyBcCisJcG9wdwklZ3M7IFwKKwlwb3B3CSVkczsgXAorCXBvcGFsCQkJLyogcmVzdG9yZSBHUCByZWdpc3RlcnMgKi8KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL2Jpb3NfcGNpLlMgYi9hcmNoL3g4Ni9saWIvYmlvc19wY2kuUwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2xpYi9iaW9zX3BjaS5TCnJlbmFtZSB0byBhcmNoL3g4Ni9saWIvYmlvc19wY2kuUwpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9iaW9zX3NldHVwLmMgYi9hcmNoL3g4Ni9saWIvYmlvc19zZXR1cC5jCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9saWIvYmlvc19zZXR1cC5jCnJlbmFtZSB0byBhcmNoL3g4Ni9saWIvYmlvc19zZXR1cC5jCmluZGV4IDc1NDA3YzEuLjY5NDliMzUgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvYmlvc19zZXR1cC5jCisrKyBiL2FyY2gveDg2L2xpYi9iaW9zX3NldHVwLmMKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UKKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yMSw3ICsyMSw2IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLQogLyoKICAqIFBhcnRseSBiYXNlZCBvbiBtc2Jpb3MuYyBmcm9tIHJvbG8gMS42OgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL2JvYXJkLmMgYi9hcmNoL3g4Ni9saWIvYm9hcmQuYwpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvbGliL2JvYXJkLmMKcmVuYW1lIHRvIGFyY2gveDg2L2xpYi9ib2FyZC5jCmluZGV4IGUwZjk4MDMuLmRmNTQyMjIgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvYm9hcmQuYworKysgYi9hcmNoL3g4Ni9saWIvYm9hcmQuYwpAQCAtMSw5ICsxLDEyIEBACiAvKgotICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UKKyAqIChDKSBDb3B5cmlnaHQgMjAwOC0yMDExCisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgPHdkQGRlbnguZGU+CiAgKgogICogKEMpIENvcHlyaWdodCAyMDAyCiAgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJIIDx3d3cuZWxpbm9zLmNvbT4KQEAgLTM4LDcgKzQxLDcgQEAKICNpbmNsdWRlIDxuZXQuaD4KICNpbmNsdWRlIDxpZGUuaD4KICNpbmNsdWRlIDxzZXJpYWwuaD4KLSNpbmNsdWRlIDxhc20vdS1ib290LWkzODYuaD4KKyNpbmNsdWRlIDxhc20vdS1ib290LXg4Ni5oPgogI2luY2x1ZGUgPGVsZi5oPgogCiAjaWZkZWYgQ09ORklHX0JJVEJBTkdNSUkKQEAgLTEwMywxMyArMTA2LDYgQEAKIAlyZXR1cm4gKDApOwogfQogCi0vKgotICogV0FSTklORzogdGhpcyBjb2RlIGxvb2tzICJjbGVhbmVyIiB0aGFuIHRoZSBQb3dlclBDIHZlcnNpb24sIGJ1dAotICogaGFzIHRoZSBkaXNhZHZhbnRhZ2UgdGhhdCB5b3UgZWl0aGVyIGdldCBub3RoaW5nLCBvciBldmVyeXRoaW5nLgotICogT24gUG93ZXJQQywgeW91IG1pZ2h0IHNlZSAiRFJBTTogIiBiZWZvcmUgdGhlIHN5c3RlbSBoYW5ncyAtIHdoaWNoCi0gKiBnaXZlcyBhIHNpbXBsZSB5ZXQgY2xlYXIgaW5kaWNhdGlvbiB3aGljaCBwYXJ0IG9mIHRoZQotICogaW5pdGlhbGl6YXRpb24gaWYgZmFpbGluZy4KLSAqLwogc3RhdGljIGludCBkaXNwbGF5X2RyYW1fY29uZmlnICh2b2lkKQogewogCWludCBpOwpAQCAtMTQxLDcgKzEzNyw2IEBACiAgKiBjYW4gcmVsb2NhdGUgdGhlIG1vbml0b3IgY29kZSB0byBSQU0uCiAgKi8KIAotCiAvKgogICogQWxsIGF0dGVtcHRzIHRvIGNvbWUgdXAgd2l0aCBhICJjb21tb24iIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlCiAgKiB0aGF0IHdvcmtzIGZvciBhbGwgYm9hcmRzIGFuZCBhcmNoaXRlY3R1cmVzIGZhaWxlZDogc29tZSBvZiB0aGUKQEAgLTI1MSwxMyArMjQ2LDEzIEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qCi0gKiBMb2FkIFUtQm9vdCBpbnRvIFJBTSwgaW5pdGlhbGl6ZSBCU1MsIHBlcmZvcm0gcmVsb2NhdGlvbiBhZGp1c3RtZW50cwotICovCisvKiBMb2FkIFUtQm9vdCBpbnRvIFJBTSwgaW5pdGlhbGl6ZSBCU1MsIHBlcmZvcm0gcmVsb2NhdGlvbiBhZGp1c3RtZW50cyAqLwogdm9pZCBib2FyZF9pbml0X2YodWxvbmcgYm9vdF9mbGFncykKIHsKIAlpbml0X2ZuY190ICoqaW5pdF9mbmNfcHRyOwogCisJZ2QtPmZsYWdzID0gYm9vdF9mbGFnczsKKwogCWZvciAoaW5pdF9mbmNfcHRyID0gaW5pdF9zZXF1ZW5jZV9mOyAqaW5pdF9mbmNfcHRyOyArK2luaXRfZm5jX3B0cikgewogCQlpZiAoKCppbml0X2ZuY19wdHIpKCkgIT0gMCkKIAkJCWhhbmcoKTsKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvYm9vdG0uYyBiL2FyY2gveDg2L2xpYi9ib290bS5jCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9saWIvYm9vdG0uYwpyZW5hbWUgdG8gYXJjaC94ODYvbGliL2Jvb3RtLmMKaW5kZXggYjM2ZTU4ZC4uYTIxYTIxZiAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi9ib290bS5jCisrKyBiL2FyY2gveDg2L2xpYi9ib290bS5jCkBAIC01LDEwICs1LDEzIEBACiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAxICBFcmlrIE1vdXcgKEouQS5LLk1vdXdAaXRzLnR1ZGVsZnQubmwpCiAgKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpAQCAtMTcsOCArMjAsOCBAQAogICoKICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQotICoKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKICNpbmNsdWRlIDxjb21tb24uaD4KZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvaW50ZXJydXB0cy5jIGIvYXJjaC94ODYvbGliL2ludGVycnVwdHMuYwpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvbGliL2ludGVycnVwdHMuYwpyZW5hbWUgdG8gYXJjaC94ODYvbGliL2ludGVycnVwdHMuYwppbmRleCA1YTI4Mjc4Li5hMmM1OThmIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbGliL2ludGVycnVwdHMuYworKysgYi9hcmNoL3g4Ni9saWIvaW50ZXJydXB0cy5jCkBAIC0xLDIxICsxLDIxIEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDA5Ci0gKiBHcmFlbWUgUnVzcywgZ3JhZW1lLnJ1c3NAZ21haWwuY29tCisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDcKLSAqIERhbmllbCBIZWxsc3Ryb20sIEdhaXNsZXIgUmVzZWFyY2gsIGRhbmllbEBnYWlzbGVyLmNvbQorICogRGFuaWVsIEhlbGxzdHJvbSwgR2Fpc2xlciBSZXNlYXJjaCwgPGRhbmllbEBnYWlzbGVyLmNvbT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDYKLSAqIERldGxldiBadW5kZWwsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIGR6dUBkZW54LmRlCisgKiBEZXRsZXYgWnVuZGVsLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8ZHp1QGRlbnguZGU+CiAgKgogICogKEMpIENvcHlyaWdodCAtMjAwMwotICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIDx3ZEBkZW54LmRlPgogICoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIChDKSBDb3B5cmlnaHQgMjAwMQotICogSm9zaCBIdWJlciA8aHViZXJAbWNseC5jb20+LCBNaXNzaW9uIENyaXRpY2FsIExpbnV4LCBJbmMuCisgKiBKb3NoIEh1YmVyLCBNaXNzaW9uIENyaXRpY2FsIExpbnV4LCBJbmMsIDxodWJlckBtY2x4LmNvbT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTM4LDExICszOCwxMSBAQAogCiAvKgogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoaWdoLWxldmVsIEFQSSBmb3IgdGhlIGludGVycnVwdCBzdWItc3lzdGVtCi0gKiBvZiB0aGUgaTM4NiBwb3J0IG9mIFUtQm9vdC4gTW9zdCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbgorICogb2YgdGhlIHg4NiBwb3J0IG9mIFUtQm9vdC4gTW9zdCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbgogICogc2hhbWVsZXNzbHkgc3RvbGVuIGZyb20gdGhlIGxlb24yIC8gbGVvbjMgcG9ydHMgb2YgVS1Cb290LgogICogRGFuaWVsIEhlbGxzdHJvbSwgRGV0bGV2IFp1bmRlbCwgV29sZmdhbmcgRGVuayBhbmQgSm9zaCBIdWJlciBhcmUKICAqIGNyZWRpdGVkIGZvciB0aGUgY29ycmVzcG9uZGluZyB3b3JrIG9uIHRob3NlIHBvcnRzLiBUaGUgb3JpZ2luYWwKLSAqIGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lcyBmb3IgdGhlIGkzODYgcG9ydCB3ZXJlIHdyaXR0ZW4gYnkKKyAqIGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lcyBmb3IgdGhlIHg4NiBwb3J0IHdlcmUgd3JpdHRlbiBieQogICogRGFuaWVsIEVuZ3N0cvZtCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9wY2F0X2ludGVycnVwdHMuYyBiL2FyY2gveDg2L2xpYi9wY2F0X2ludGVycnVwdHMuYwpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvbGliL3BjYXRfaW50ZXJydXB0cy5jCnJlbmFtZSB0byBhcmNoL3g4Ni9saWIvcGNhdF9pbnRlcnJ1cHRzLmMKaW5kZXggNjdlNmU5Ny4uMzY0YzQzNSAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi9wY2F0X2ludGVycnVwdHMuYworKysgYi9hcmNoL3g4Ni9saWIvcGNhdF9pbnRlcnJ1cHRzLmMKQEAgLTEsOSArMSw5IEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDA5Ci0gKiBHcmFlbWUgUnVzcywgZ3JhZW1lLnJ1c3NAZ21haWwuY29tCisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL3BjYXRfdGltZXIuYyBiL2FyY2gveDg2L2xpYi9wY2F0X3RpbWVyLmMKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2xpYi9wY2F0X3RpbWVyLmMKcmVuYW1lIHRvIGFyY2gveDg2L2xpYi9wY2F0X3RpbWVyLmMKaW5kZXggMTM3M2ZkMS4uMTkxMWM2YyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi9wY2F0X3RpbWVyLmMKKysrIGIvYXJjaC94ODYvbGliL3BjYXRfdGltZXIuYwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL3BjaS5jIGIvYXJjaC94ODYvbGliL3BjaS5jCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9saWIvcGNpLmMKcmVuYW1lIHRvIGFyY2gveDg2L2xpYi9wY2kuYwppbmRleCA5MDIwZTdjLi5lNzkxZTg4IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbGliL3BjaS5jCisrKyBiL2FyY2gveDg2L2xpYi9wY2kuYwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTU0LDEwICs1NCw5IEBACiAJY2xhc3NfY29kZSAmPSAweGZmZmZmZjAwOwogCWNsYXNzX2NvZGUgPj49IDg7CiAKLSNpZiAwCi0JcHJpbnRmKCJQQ0kgSGVhZGVyIFZlbmRvciAlMDR4IGRldmljZSAlMDR4IGNsYXNzICUwNnhcbiIsCisJZGVidWcoIlBDSSBIZWFkZXIgVmVuZG9yICUwNHggZGV2aWNlICUwNHggY2xhc3MgJTA2eFxuIiwKIAkgICAgICAgdmVuZG9yLCBkZXZpY2UsIGNsYXNzX2NvZGUpOwotI2VuZGlmCisKIAkvKiBFbmFibGUgdGhlIHJvbSBhZGRlc3MgZGVjb2RlciAqLwogCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBQQ0lfUk9NX0FERFJFU1MsICh1MzIpUENJX1JPTV9BRERSRVNTX01BU0spOwogCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIFBDSV9ST01fQUREUkVTUywgJmFkZHJfcmVnKTsKQEAgLTcwLDEzICs2OSwxMiBAQAogCiAJc2l6ZSA9ICh+KGFkZHJfcmVnJlBDSV9ST01fQUREUkVTU19NQVNLKSkrMTsKIAotI2lmIDAKLQlwcmludGYoIlJPTSBpcyAlZCBieXRlc1xuIiwgc2l6ZSk7Ci0jZW5kaWYKKwlkZWJ1ZygiUk9NIGlzICVkIGJ5dGVzXG4iLCBzaXplKTsKKwogCXJvbV9hZGRyID0gcGNpX2dldF9yb21fd2luZG93KGhvc2UsIHNpemUpOwotI2lmIDAKLQlwcmludGYoIlJPTSBtYXBwZWQgYXQgJXggXG4iLCByb21fYWRkcik7Ci0jZW5kaWYKKworCWRlYnVnKCJST00gbWFwcGVkIGF0ICV4XG4iLCByb21fYWRkcik7CisKIAlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldiwgUENJX1JPTV9BRERSRVNTLAogCQkJICAgICAgIHBjaV9waHlzX3RvX21lbShkZXYsIHJvbV9hZGRyKQogCQkJICAgICAgIHxQQ0lfUk9NX0FERFJFU1NfRU5BQkxFKTsKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvcGNpX3R5cGUxLmMgYi9hcmNoL3g4Ni9saWIvcGNpX3R5cGUxLmMKc2ltaWxhcml0eSBpbmRleCA2MSUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2xpYi9wY2lfdHlwZTEuYwpyZW5hbWUgdG8gYXJjaC94ODYvbGliL3BjaV90eXBlMS5jCmluZGV4IDIyNWFlNGEuLjhjZTViMzMgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvcGNpX3R5cGUxLmMKKysrIGIvYXJjaC94ODYvbGliL3BjaV90eXBlMS5jCkBAIC0xLDE1ICsxLDMwIEBACiAvKgotICogU3VwcG9ydCBmb3IgdHlwZSBQQ0kgY29uZmlndXJhdGlvbiBjeWNsZXMuCi0gKiBiYXNlZCBvbiBwY2lfaW5kaXJlY3QuYworICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uCi0gKiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorLyoKKyAqIFN1cHBvcnQgZm9yIHR5cGUgUENJIGNvbmZpZ3VyYXRpb24gY3ljbGVzLgorICogYmFzZWQgb24gcGNpX2luZGlyZWN0LmMKKyAqLwogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPHBjaS5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9yZWFsbW9kZS5jIGIvYXJjaC94ODYvbGliL3JlYWxtb2RlLmMKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gYXJjaC9pMzg2L2xpYi9yZWFsbW9kZS5jCnJlbmFtZSB0byBhcmNoL3g4Ni9saWIvcmVhbG1vZGUuYwppbmRleCAyZGRhOTViLi41YmU4MjdjIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbGliL3JlYWxtb2RlLmMKKysrIGIvYXJjaC94ODYvbGliL3JlYWxtb2RlLmMKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UKKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yNiwxMCArMjYsOCBAQAogI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KICNpbmNsdWRlIDxhc20vcmVhbG1vZGUuaD4KIAotCiAjZGVmaW5lIFJFQUxNT0RFX01BSUxCT1ggKChjaGFyKikweGUwMCkKIAotCiBleHRlcm4gdWxvbmcgX19yZWFsbW9kZV9zdGFydDsKIGV4dGVybiB1bG9uZyBfX3JlYWxtb2RlX3NpemU7CiBleHRlcm4gY2hhciByZWFsbW9kZV9lbnRlcjsKQEAgLTU3LDEzICs1NSwxMSBAQAogewogCiAJLyogc2V0dXAgb3V0IHRoaW4gYmlvcyBlbXVsYXRpb24gKi8KLQlpZiAoYmlvc19zZXR1cCgpKSB7CisJaWYgKGJpb3Nfc2V0dXAoKSkKIAkJcmV0dXJuIC0xOwotCX0KIAotCWlmIChyZWFsbW9kZV9zZXR1cCgpKSB7CisJaWYgKHJlYWxtb2RlX3NldHVwKCkpCiAJCXJldHVybiAtMTsKLQl9CiAKIAlpbi0+ZWlwID0gb2ZmOwogCWluLT54Y3MgPSBzZWc7CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL3JlYWxtb2RlX3N3aXRjaC5TIGIvYXJjaC94ODYvbGliL3JlYWxtb2RlX3N3aXRjaC5TCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9saWIvcmVhbG1vZGVfc3dpdGNoLlMKcmVuYW1lIHRvIGFyY2gveDg2L2xpYi9yZWFsbW9kZV9zd2l0Y2guUwppbmRleCBkNmM3NGVjLi5mY2U0ZWNjIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbGliL3JlYWxtb2RlX3N3aXRjaC5TCisrKyBiL2FyY2gveDg2L2xpYi9yZWFsbW9kZV9zd2l0Y2guUwpAQCAtMjEsNyArMjEsNiBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KIC8qIDMyYml0IC0+IDE2Yml0IC0+IDMyYml0IG1vZGUgc3dpdGNoIGNvZGUgKi8KIAogLyoKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvdGltZXIuYyBiL2FyY2gveDg2L2xpYi90aW1lci5jCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIGFyY2gvaTM4Ni9saWIvdGltZXIuYwpyZW5hbWUgdG8gYXJjaC94ODYvbGliL3RpbWVyLmMKaW5kZXggNWNiMWY1NC4uOGZjNjhjZCAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi90aW1lci5jCisrKyBiL2FyY2gveDg2L2xpYi90aW1lci5jCkBAIC0xLDYgKzEsOSBAQAogLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwOCwyMDA5CisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KKyAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL3ZpZGVvLmMgYi9hcmNoL3g4Ni9saWIvdmlkZW8uYwpzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvbGliL3ZpZGVvLmMKcmVuYW1lIHRvIGFyY2gveDg2L2xpYi92aWRlby5jCmluZGV4IGM1OGVkMTAuLmIyOTA3NWMgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvdmlkZW8uYworKysgYi9hcmNoL3g4Ni9saWIvdmlkZW8uYwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vcGNpLmg+CiAKLQogLyogYmFzaWMgdGV4dG1vZGUgSS9PIGZyb20gbGludXgga2VybmVsICovCiBzdGF0aWMgY2hhciAqdmlkbWVtID0gKGNoYXIgKikweGI4MDAwOwogc3RhdGljIGludCB2aWRwb3J0OwpAQCAtNDIsOSArNDEsOSBAQAogCWludCBpOwogCiAJb3V0Yl9wKDMsIDB4NjEpOwotCWZvciAoaT0wO2k8MTAqZHVyO2krKykgeworCWZvciAoaSA9IDA7IGkgPCAxMCpkdXI7IGkrKykKIAkJdWRlbGF5KDEwMDApOwotCX0KKwogCW91dGJfcCgwLCAweDYxKTsKIH0KIApAQCAtNTIsOCArNTEsOCBAQAogewogCWludCBpOwogCi0JbWVtY3B5ICggdmlkbWVtLCB2aWRtZW0gKyBjb2xzICogMiwgKCBsaW5lcyAtIDEgKSAqIGNvbHMgKiAyICk7Ci0JZm9yICggaSA9ICggbGluZXMgLSAxICkgKiBjb2xzICogMjsgaSA8IGxpbmVzICogY29scyAqIDI7IGkgKz0gMiApCisJbWVtY3B5KHZpZG1lbSwgdmlkbWVtICsgY29scyAqIDIsIChsaW5lcyAtIDEpICogY29scyAqIDIpOworCWZvciAoaSA9IChsaW5lcyAtIDEpICogY29scyAqIDI7IGkgPCBsaW5lcyAqIGNvbHMgKiAyOyBpICs9IDIpCiAJCXZpZG1lbVtpXSA9ICcgJzsKIH0KIApAQCAtNjEsMTQgKzYwLDE0IEBACiB7CiAJaWYgKGMgPT0gJ1xuJykgewogCQkoKngpID0gMDsKLQkJaWYgKCArKygqeSkgPj0gbGluZXMgKSB7CisJCWlmICgrKygqeSkgPj0gbGluZXMpIHsKIAkJCXNjcm9sbCgpOwogCQkJKCp5KS0tOwogCQl9CiAJfSBlbHNlIGlmIChjID09ICdcYicpIHsKIAkJaWYgKCgqeCkgIT0gMCkgewogCQkJLS0oKngpOwotCQkJdmlkbWVtIFsgKCAoKngpICsgY29scyAqICgqeSkgKSAqIDIgXSA9ICcgJzsKKwkJCXZpZG1lbVsoKCp4KSArIGNvbHMgKiAoKnkpKSAqIDJdID0gJyAnOwogCQl9CiAJfSBlbHNlIGlmIChjID09ICdccicpIHsKIAkJKCp4KSA9IDA7CkBAIC0xMDYsMTYgKzEwNSwxNSBAQAogCQl9CiAJfSBlbHNlIGlmIChjID09ICdcZicpIHsKIAkJaW50IGk7Ci0JCWZvciAoaT0wO2k8bGluZXMqY29scyoyO2krPTIpIHsKKwkJZm9yIChpID0gMDsgaSA8IGxpbmVzICogY29scyAqIDI7IGkgKz0gMikKIAkJCXZpZG1lbVtpXSA9IDA7Ci0JCX0KIAkJKCp4KSA9IDA7CiAJCSgqeSkgPSAwOwogCX0gZWxzZSB7Ci0JCXZpZG1lbSBbICggKCp4KSArIGNvbHMgKiAoKnkpICkgKiAyIF0gPSBjOwotCQlpZiAoICsrKCp4KSA+PSBjb2xzICkgeworCQl2aWRtZW1bKCgqeCkgKyBjb2xzICogKCp5KSkgKiAyXSA9IGM7CisJCWlmICgrKygqeCkgPj0gY29scykgewogCQkJKCp4KSA9IDA7Ci0JCQlpZiAoICsrKCp5KSA+PSBsaW5lcyApIHsKKwkJCWlmICgrKygqeSkgPj0gbGluZXMpIHsKIAkJCQlzY3JvbGwoKTsKIAkJCQkoKnkpLS07CiAJCQl9CkBAIC0xNTAsOSArMTQ4LDggQEAKIAl4ID0gb3JpZ194OwogCXkgPSBvcmlnX3k7CiAKLQl3aGlsZSAoICggYyA9ICpzKysgKSAhPSAnXDAnICkgeworCXdoaWxlICgoYyA9ICpzKyspICE9ICdcMCcpCiAJCV9fdmlkZW9fcHV0YyhjLCAmeCwgJnkpOwotCX0KIAogCW9yaWdfeCA9IHg7CiAJb3JpZ195ID0geTsKQEAgLTE4OSwxMCArMTg2LDggQEAKICNpZiAwCiAJcHJpbnRmKCJwb3MgJXggJWQgJWRcbiIsIHBvcywgb3JpZ194LCBvcmlnX3kpOwogI2VuZGlmCi0JaWYgKG9yaWdfeSA+IGxpbmVzKSB7CisJaWYgKG9yaWdfeSA+IGxpbmVzKQogCQlvcmlnX3ggPSBvcmlnX3kgPTA7Ci0JfQotCiAKIAltZW1zZXQoJnZnYV9kZXYsIDAsIHNpemVvZih2Z2FfZGV2KSk7CiAJc3RyY3B5KHZnYV9kZXYubmFtZSwgInZnYSIpOwpAQCAtMjAzLDEzICsxOTgsMTEgQEAKIAl2Z2FfZGV2LnRzdGMgID0gTlVMTDsgICAgICAgICAgICAgIC8qICd0c3RjJyBmdW5jdGlvbiAqLwogCXZnYV9kZXYuZ2V0YyAgPSBOVUxMOyAgICAgICAgICAgICAgLyogJ2dldGMnIGZ1bmN0aW9uICovCiAKLQlpZiAoc3RkaW9fcmVnaXN0ZXIoJnZnYV9kZXYpID09IDApIHsKLQkgICAgcmV0dXJuIDE7Ci0JfQotCi0JaWYgKGk4MDQyX2tiZF9pbml0KCkpIHsKKwlpZiAoc3RkaW9fcmVnaXN0ZXIoJnZnYV9kZXYpID09IDApCiAJCXJldHVybiAxOwotCX0KKworCWlmIChpODA0Ml9rYmRfaW5pdCgpKQorCQlyZXR1cm4gMTsKIAogCW1lbXNldCgma2JkX2RldiwgMCwgc2l6ZW9mKGtiZF9kZXYpKTsKIAlzdHJjcHkoa2JkX2Rldi5uYW1lLCAia2JkIik7CkBAIC0yMjAsMTggKzIxMywxNyBAQAogCWtiZF9kZXYudHN0YyAgPSBpODA0Ml90c3RjOyAgLyogJ3RzdGMnIGZ1bmN0aW9uICovCiAJa2JkX2Rldi5nZXRjICA9IGk4MDQyX2dldGM7ICAvKiAnZ2V0YycgZnVuY3Rpb24gKi8KIAotCWlmIChzdGRpb19yZWdpc3Rlcigma2JkX2RldikgPT0gMCkgewotCSAgICByZXR1cm4gMTsKLQl9CisJaWYgKHN0ZGlvX3JlZ2lzdGVyKCZrYmRfZGV2KSA9PSAwKQorCQlyZXR1cm4gMTsKKwogCXJldHVybiAwOwogfQogCiAKIGludCBkcnZfdmlkZW9faW5pdCh2b2lkKQogewotCWlmICh2aWRlb19iaW9zX2luaXQoKSkgeworCWlmICh2aWRlb19iaW9zX2luaXQoKSkKIAkJcmV0dXJuIDE7Ci0JfQogCiAJcmV0dXJuIHZpZGVvX2luaXQoKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvdmlkZW9fYmlvcy5jIGIvYXJjaC94ODYvbGliL3ZpZGVvX2Jpb3MuYwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvbGliL3ZpZGVvX2Jpb3MuYwpyZW5hbWUgdG8gYXJjaC94ODYvbGliL3ZpZGVvX2Jpb3MuYwppbmRleCBjODA2MGU2Li42YmM0MzM1IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbGliL3ZpZGVvX2Jpb3MuYworKysgYi9hcmNoL3g4Ni9saWIvdmlkZW9fYmlvcy5jCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi96aW1hZ2UuYyBiL2FyY2gveDg2L2xpYi96aW1hZ2UuYwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBhcmNoL2kzODYvbGliL3ppbWFnZS5jCnJlbmFtZSB0byBhcmNoL3g4Ni9saWIvemltYWdlLmMKaW5kZXggMGM0MjA3Mi4uY2M0YjQwZSAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi96aW1hZ2UuYworKysgYi9hcmNoL3g4Ni9saWIvemltYWdlLmMKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UKKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yMiw3ICsyMiw3IEBACiAgKi8KIAogLyoKLSAqIExpbnV4IGkzODYgekltYWdlIGFuZCBiekltYWdlIGxvYWRpbmcKKyAqIExpbnV4IHg4NiB6SW1hZ2UgYW5kIGJ6SW1hZ2UgbG9hZGluZwogICoKICAqIGJhc2VkIG9uIHRoZSBwcm9jZHVyZSBkZXNjcmliZWQgaW4KICAqIGxpbnV4L0RvY3VtZW50YXRpb24vaTM4Ni9ib290LnR4dApkaWZmIC0tZ2l0IGEvYm9hcmQvZU5FVC9jb25maWcubWsgYi9ib2FyZC9lTkVUL2NvbmZpZy5tawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQyZGZhNTMuLjAwMDAwMDAKLS0tIGEvYm9hcmQvZU5FVC9jb25maWcubWsKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jCi0jIChDKSBDb3B5cmlnaHQgMjAwMgotIyBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCi0jCi0jIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0jIHByb2plY3QuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0jIE1BIDAyMTExLTEzMDcgVVNBCi0jCi0KLUxEUFBGTEFHUyArPSAtREZMQVNIX1NJWkU9MHg0MDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvZU5FVC9lTkVULmMgYi9ib2FyZC9lTkVUL2VORVQuYwppbmRleCBkZDBjZTU0Li4yYTU2MzZjIDEwMDY0NAotLS0gYS9ib2FyZC9lTkVUL2VORVQuYworKysgYi9ib2FyZC9lTkVUL2VORVQuYwpAQCAtMzUsNiArMzUsOCBAQAogCiBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIAordW5zaWduZWQgbG9uZyBtb25pdG9yX2ZsYXNoX2xlbiA9IENPTkZJR19TWVNfTU9OSVRPUl9MRU47CisKIHN0YXRpYyB2b2lkIGVuZXRfdGltZXJfaXNyKHZvaWQpOwogc3RhdGljIHZvaWQgZW5ldF90b2dnbGVfcnVuX2xlZCh2b2lkKTsKIHN0YXRpYyB2b2lkIGVuZXRfc2V0dXBfcGFycyh2b2lkKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2VORVQvZU5FVF9wY2kuYyBiL2JvYXJkL2VORVQvZU5FVF9wY2kuYwppbmRleCBmZWZiMWE0Li5hMDMwOTBlIDEwMDY0NAotLS0gYS9ib2FyZC9lTkVUL2VORVRfcGNpLmMKKysrIGIvYm9hcmQvZU5FVC9lTkVUX3BjaS5jCkBAIC0xLDkgKzEsOSBAQAogLyoKLSAqIChDKSBDb3B5cmlnaHQgMjAwOAotICogR3JhZW1lIFJ1c3MsIGdyYWVtZS5ydXNzQGdtYWlsLmNvbS4KKyAqIChDKSBDb3B5cmlnaHQgMjAwOCwyMDA5CisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCIDxkYW5pZWxAb21pY3Jvbi5zZT4uCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjMsNiArMjMsNyBAQAogICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KKwogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPHBjaS5oPgogI2luY2x1ZGUgPGFzbS9wY2kuaD4KZGlmZiAtLWdpdCBhL2JvYXJkcy5jZmcgYi9ib2FyZHMuY2ZnCmluZGV4IGE0NWJkODMuLjU1NGUwNmMgMTAwNjQ0Ci0tLSBhL2JvYXJkcy5jZmcKKysrIGIvYm9hcmRzLmNmZwpAQCAtMjA1LDggKzIwNSw4IEBACiBpcDA0ICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrZmluICAgIGJsYWNrZmluCiB0Y20tYmY1MTggICAgICAgICAgICAgICAgICAgIGJsYWNrZmluICAgIGJsYWNrZmluCiB0Y20tYmY1MzcgICAgICAgICAgICAgICAgICAgIGJsYWNrZmluICAgIGJsYWNrZmluCi1lTkVUICAgICAgICAgICAgICAgICAgICAgICAgIGkzODYgICAgICAgIGkzODYgICAgICAgIGVORVQgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgc2M1MjAgICAgICAgZU5FVDpTWVNfVEVYVF9CQVNFPTB4MzgwNDAwMDAKLWVORVRfU1JBTSAgICAgICAgICAgICAgICAgICAgaTM4NiAgICAgICAgaTM4NiAgICAgICAgZU5FVCAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICBzYzUyMCAgICAgICBlTkVUOlNZU19URVhUX0JBU0U9MHgxOTAwMDAwMAorZU5FVCAgICAgICAgICAgICAgICAgICAgICAgICB4ODYgICAgICAgICB4ODYgICAgICAgIGVORVQgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgc2M1MjAgICAgICAgZU5FVDpTWVNfVEVYVF9CQVNFPTB4MzgwNDAwMDAKK2VORVRfU1JBTSAgICAgICAgICAgICAgICAgICAgeDg2ICAgICAgICAgeDg2ICAgICAgICBlTkVUICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgIHNjNTIwICAgICAgIGVORVQ6U1lTX1RFWFRfQkFTRT0weDE5MDAwMDAwCiBpZG1yICAgICAgICAgICAgICAgICAgICAgICAgIG02OGsgICAgICAgIG1jZjUyeDIKIFRBU1JFRyAgICAgICAgICAgICAgICAgICAgICAgbTY4ayAgICAgICAgbWNmNTJ4MiAgICAgdGFzcmVnICAgICAgICAgICAgICBlc2QKIE01MjA4RVZCRSAgICAgICAgICAgICAgICAgICAgbTY4ayAgICAgICAgbWNmNTJ4MiAgICAgbTUyMDhldmJlICAgICAgICAgICBmcmVlc2NhbGUKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfYmRpbmZvLmMgYi9jb21tb24vY21kX2JkaW5mby5jCmluZGV4IGJiYTczNzQuLjFkNzZmZmEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9jbWRfYmRpbmZvLmMKKysrIGIvY29tbW9uL2NtZF9iZGluZm8uYwpAQCAtMzA0LDcgKzMwNCw3IEBACiAKICNlbGlmIGRlZmluZWQoQ09ORklHX0FWUjMyKQogCi1pbnQgZG9fYmRpbmZvICggY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCitpbnQgZG9fYmRpbmZvICggY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdKQogewogCWJkX3QgKmJkID0gZ2QtPmJkOwogCmRpZmYgLS1naXQgYS9jb21tb24vY21kX252ZWRpdC5jIGIvY29tbW9uL2NtZF9udmVkaXQuYwppbmRleCBmYjY5YzI0Li42ZDg1MTJhIDEwMDY0NAotLS0gYS9jb21tb24vY21kX252ZWRpdC5jCisrKyBiL2NvbW1vbi9jbWRfbnZlZGl0LmMKQEAgLTY1OSw3ICs2NTksNyBAQAogCQkJCWVycm5vKTsKIAkJCXJldHVybiAxOwogCQl9Ci0JCXNwcmludGYoYnVmLCAiJXpYIiwgbGVuKTsKKwkJc3ByaW50ZihidWYsICIlelgiLCAoc2l6ZV90KWxlbik7CiAJCXNldGVudigiZmlsZXNpemUiLCBidWYpOwogCiAJCXJldHVybiAwOwpAQCAtNjg1LDcgKzY4NSw3IEBACiAJCWVudnAtPmZsYWdzID0gQUNUSVZFX0ZMQUc7CiAjZW5kaWYKIAl9Ci0Jc3ByaW50ZihidWYsICIlelgiLCBsZW4gKyBvZmZzZXRvZihlbnZfdCxkYXRhKSk7CisJc3ByaW50ZihidWYsICIlelgiLCAoc2l6ZV90KShsZW4gKyBvZmZzZXRvZihlbnZfdCxkYXRhKSkpOwogCXNldGVudigiZmlsZXNpemUiLCBidWYpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9jb21tb24vY21kX3VzYi5jIGIvY29tbW9uL2NtZF91c2IuYwppbmRleCBiNTczMWE3Li4zYmE2ZmZmIDEwMDY0NAotLS0gYS9jb21tb24vY21kX3VzYi5jCisrKyBiL2NvbW1vbi9jbWRfdXNiLmMKQEAgLTU4OCw3ICs1ODgsNyBAQAogCQkJCQlicmVhazsKIAkJCX0KIAkJCWlmIChkZXYgPT0gTlVMTCkgewotCQkJCXByaW50ZigiKioqIE5PIERldmljZSBhdmFpYWJsZSAqKipcbiIpOworCQkJCXByaW50ZigiKioqIE5vIGRldmljZSBhdmFpbGFibGUgKioqXG4iKTsKIAkJCQlyZXR1cm4gMDsKIAkJCX0gZWxzZSB7CiAJCQkJdXNiX2Rpc3BsYXlfZGVzYyhkZXYpOwpkaWZmIC0tZ2l0IGEvY29tbW9uL2V4cG9ydHMuYyBiL2NvbW1vbi9leHBvcnRzLmMKaW5kZXggM2RmZjczNS4uNzE3ZTRhZiAxMDA2NDQKLS0tIGEvY29tbW9uL2V4cG9ydHMuYworKysgYi9jb21tb24vZXhwb3J0cy5jCkBAIC0xNSw3ICsxNSw3IEBACiAvKiBSZXVzZSBfZXhwb3J0cy5oIHdpdGggYSBsaXR0bGUgdHJpY2tlcnkgdG8gYXZvaWQgYml0cm90ICovCiAjZGVmaW5lIEVYUE9SVF9GVU5DKHN5bSkgZ2QtPmp0W1hGXyMjc3ltXSA9ICh2b2lkICopc3ltOwogCi0jaWYgIWRlZmluZWQoQ09ORklHX0kzODYpICYmICFkZWZpbmVkKENPTkZJR19QUEMpCisjaWYgIWRlZmluZWQoQ09ORklHX1g4NikgJiYgIWRlZmluZWQoQ09ORklHX1BQQykKICMgZGVmaW5lIGluc3RhbGxfaGRsciAgICAgIGR1bW15CiAjIGRlZmluZSBmcmVlX2hkbHIgICAgICAgICBkdW1teQogI2Vsc2UgLyoga2x1ZGdlIGZvciBub24tc3RhbmRhcmQgZnVuY3Rpb24gbmFtaW5nICovCmRpZmYgLS1naXQgYS9jb21tb24vdXNiX3N0b3JhZ2UuYyBiL2NvbW1vbi91c2Jfc3RvcmFnZS5jCmluZGV4IDY5NjNlNmQuLjllY2YxNjUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi91c2Jfc3RvcmFnZS5jCisrKyBiL2NvbW1vbi91c2Jfc3RvcmFnZS5jCkBAIC0yNTQsNyArMjU0LDcgQEAKIAkJZGV2ID0gdXNiX2dldF9kZXZfaW5kZXgoaSk7IC8qIGdldCBkZXZpY2UgKi8KIAkJVVNCX1NUT1JfUFJJTlRGKCJpPSVkXG4iLCBpKTsKIAkJaWYgKGRldiA9PSBOVUxMKQotCQkJYnJlYWs7IC8qIG5vIG1vcmUgZGV2aWNlcyBhdmFpYWJsZSAqLworCQkJYnJlYWs7IC8qIG5vIG1vcmUgZGV2aWNlcyBhdmFpbGFibGUgKi8KIAogCQlpZiAodXNiX3N0b3JhZ2VfcHJvYmUoZGV2LCAwLCAmdXNiX3N0b3JbdXNiX21heF9kZXZzXSkpIHsKIAkJCS8qIE9LLCBpdCdzIGEgc3RvcmFnZSBkZXZpY2UuICBJdGVyYXRlIG92ZXIgaXRzIExVTnMKZGlmZiAtLWdpdCBhL2Rpc2svcGFydC5jIGIvZGlzay9wYXJ0LmMKaW5kZXggMTM3MjNmMi4uZjA3YTE3ZiAxMDA2NDQKLS0tIGEvZGlzay9wYXJ0LmMKKysrIGIvZGlzay9wYXJ0LmMKQEAgLTg0LDcgKzg0LDcgQEAKICNpZmRlZiBDT05GSUdfTkVFRFNfTUFOVUFMX1JFTE9DCiAJbmFtZSArPSBnZC0+cmVsb2Nfb2ZmOwogI2VuZGlmCi0Jd2hpbGUgKG5hbWUpIHsKKwl3aGlsZSAoZHJ2ci0+bmFtZSkgewogCQluYW1lID0gZHJ2ci0+bmFtZTsKIAkJcmVsb2NfZ2V0X2RldiA9IGRydnItPmdldF9kZXY7CiAjaWZkZWYgQ09ORklHX05FRURTX01BTlVBTF9SRUxPQwpkaWZmIC0tZ2l0IGEvZG9jL1JFQURNRS1pMzg2IGIvZG9jL1JFQURNRS1pMzg2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTYwZDIyLi4wMDAwMDAwCi0tLSBhL2RvYy9SRUFETUUtaTM4NgorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLVRoaXMgaXMgbXkgYXR0ZW1wdCB0byBwb3J0IFUtQm9vdCB0byB0aGUgaTM4NiBwbGF0Zm9ybS4gVGhpcwotd29yayB3YXMgc3BvbnNvcmVkIGJ5IG15IGVtcGx5ZXIsIE9taWNyb24gQ2V0aSBBQi4gaHR0cDovL3d3dy5vbWljcm9uLnNlCi0KLUl0IGlzIGN1cnJlbnRseSBjYXBhYmxlIG9mIGJvb3RpbmcgYSBsaW51eCBiekltYWdlIGZyb20gZmxhc2ggb24KLXRoZSBBTUQgU0M1MjAgQ0RQIHBsYXRmb3JtLgotCi1JdCB3YXMgb3JpZ2luYWxseSBiYXNlZCBvbiBQUENCb290IHRha2VuIGZyb20gdGhlIENWUyBPY3RvYmVyIDI4IDIwMDIuCi0KLVRvIGNvbXBpbGU6Ci0KLTEpIFVucGFjayB0aGUgc291cmNlIHRyZWUsIGVpdGhlciBmcm9tIHRoZSBjb21wbGV0ZSB0YXJiYWxsIG9yCi0gICBmcm9tIHRoZSB2aXJnaW4gc25hcHNob3QgKyB0aGUgcGF0Y2gKLQotMikgQ29uZmlndXJlIHRoZSBzb3VyY2UKLSAgICQgbWFrZSBzYzUyMF9jZHBfY29tZmlnCi0gICAkIG1ha2UKLQotVG8gdXNlIHRoaXMgY29kZSBvbiB0aGUgQ0RQOgotMSkgTWFrZSBhIHN1aXRhYmxlIGtlcm5lbCwgSSB1c2VkIDIuNC4xOSB3aXRoIHRoZSBtdGQtc3VwcG9ydCB1cGRhdGVkCi0gICBmcm9tIHRoZSBNVEQgQ1ZTIGFuZCBhIHBhdGNoIHRvIGFsbG93IHJvb3Q9L2Rldi9tdGRibG9jazEgd2hpY2ggSQotICAgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGlzIGZpbGUuCi0gICBUaGUgZm9sbG93aW5nIG9wdGlvbnMgaW4gdGhlIE1URCBzZWN0aW9uIG1pZ2h0IGJlIHVzZWZ1bDoKLQotICAgQ09ORklHX01URF9QSFlTTUFQPXkKLSAgIENPTkZJR19NVERfUEhZU01BUF9TVEFSVD0zODEwMDAwMAotICAgQ09ORklHX01URF9QSFlTTUFQX0xFTj03YTAwMDAKLSAgIENPTkZJR19NVERfUEhZU01BUF9CVVNXSURUSD0yCi0KLQotMikgUHJvZ3JhbSBpdCBpbiB0byB0aGUgQ0RQIGZsYXNoYmFuayB3aXRoIHJlbW9uCi0gICB1LWJvb3QuYmluIHNob3VsZCBiZSBwcm9ncmFtbWVkIGF0dCBvZmZzZXQgMHg3ZTAwMCBhbmQgdGhlIGtlcm5lbCBhdAotICAgb2Zmc2V0IDAuIElmIHlvdSB3YW50IHRvIHVzZSBhIGpmZnMyIHJvb3QgZmlsZSBzeXN0ZW0gKG5vdCBpbmNsdWRlZCBoZXJlKSwKLSAgIGl0IHNob3VsZCBiZSAgcHJvZ3JhbW1lZCB0byBvZmZzZXQgMHgxMDAwMDAuCi0KLSAgIHJlbW9uPiB6Ci0gICByZW1vbj4geWkKLSAgIHJlbW9uPiBucyB1LWJvb3QuYmluIDdlMDAwMAotICAgcmVtb24+IG5zIGJ6SW1hZ2UgMAotICAgcmVtb24+IG5zIGltYWdlLmpmZnMyIDEwMDAwMAotCi0zKSBDb25uZWN0IGEgdGVybWluYWwgdG8gdGhlIDI1cGluIHNlcmlhbCBwb3J0IGF0IDk2MDBicHMsIGFuZCBzdGFydCB0aGUgQ0RQLgotCi0gICByZW1vbj4gegotICAgcmVtb24+IGcKLQotNCkgVS1Cb290IHNob3VsZCBvdXRwdXQgc29tZSBtZXNzYWdlIGFuZCBhIHByb21wdCBvbiB0aGUgdGVybWluYWwsIHRvCi0gICBzdGFydCB0aGUga2VybmVsIGlzc3VlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLQotICAgQk9PVD4gYm9vdG0KLQotNSkgVGhlIGtlcm5lbCBzaG91bGQgYm9vdCwgYW5kIG1vdW50IHRoZSByb290IGZpbGVzeXN0ZW0gaWYgcHJlc2VudC4KLQotV2UgaG9wZSB5b3UgZmluZCB0aGlzIHN0dWZmIHVzZWZ1bAotRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlCi0KLQotLS0tIGxpbnV4LTIuNC4xOS1vcmlnL2luaXQvZG9fbW91bnRzLmMJU2F0IEF1ZyAgMyAwMjozOTo0NiAyMDAyCi0rKysgbGludXgtMi40LjE5L2luaXQvZG9fbW91bnRzLmMJTW9uIFNlcCAyMyAxNjoyMTozMyAyMDAyCi1AQCAtMjI0LDYgKzIyNCwxNCBAQAotCXsgImZ0bGMiLCAweDJjMTAgfSwKLQl7ICJmdGxkIiwgMHgyYzE4IH0sCi0JeyAibXRkYmxvY2siLCAweDFmMDAgfSwKLSsJeyAibXRkYmxvY2swIiwgMHgxZjAwIH0sCi0rCXsgIm10ZGJsb2NrMSIsIDB4MWYwMSB9LAotKwl7ICJtdGRibG9jazIiLCAweDFmMDIgfSwKLSsJeyAibXRkYmxvY2szIiwgMHgxZjAzIH0sCi0rCXsgIm10ZGJsb2NrNCIsIDB4MWYwNCB9LAotKwl7ICJtdGRibG9jazUiLCAweDFmMDUgfSwKLSsJeyAibXRkYmxvY2s2IiwgMHgxZjA2IH0sCi0rCXsgIm10ZGJsb2NrNyIsIDB4MWYwNyB9LAotCXsgTlVMTCwgMCB9Ci0gfTsKLQotLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZG9jL1RPRE8taTM4NiBiL2RvYy9UT0RPLWkzODYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNmM1ZDQuLjAwMDAwMDAKLS0tIGEvZG9jL1RPRE8taTM4NgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLWkzODYgcG9ydCBtaXNzaW5nIGZlYXR1cmVzOgotKiBpMzg2IGNsZWFuZXNzICh3YmludmxkIGlzIDQ4NisgLi4uICkKLSogUGVudGl1bSBUU0MgdGltZXIvdWRlbGF5Ci0qIHNldHVwIHRoZSBCSU9TIGRhdGEgYXJlYSBhbmQgQklPUyBlcXVpcG1lbnQgd29yZCB0byByZWZsZWN0IG1hY2hpbmUgY29uZmlnLiAKLSogTWFrZSByZXNldCB3b3JrIChmcm9tIExpbnV4IGFuZCBmcm9tIHRoZSBib290IHByb21wdCkKLSogRE1BLCBGREMsIFJUQywgS0JDIGluaXRpYWxpemF0aW9uCi0qIHNwbGl0IG9mIHBhcnQgb2YgYXJjaC9pMzg2L2NwdS9pbnRlcnJ1cHQuYyB0byBjcHUvaTM4NS9lbnRyeS5jPwotKiByZS1lbnRyeSBvZiBwcm90ZWN0ZWQgbW9kZSBmcm9tIHJlYWwgbW9kZSwgc2hvdWxkIGJlIGFkZGVkIHRvIHJlYWxtb2RlX3N3aXRjaC5TIAotICAoYW5kIHVzZWQgYnkgSU5UIDEwaCBhbmQgSU5UIDE2aCBoYW5kbGVycyBmb3IgY29uc29sZSBJL08gZHVyaW5nIGVhcmx5Ci0gICBsaW51eCBib290Li4uKSAKLSogbWlzc2luZyBmdW5jdGlvbnMgaW4gYXJjaC9pMzg2L2xpYiBhbmQgYXJjaC9pMzg2L2NwdQotKiBzcGVha2VyIGJlZXAgaW50ZXJmYWNlCi0KLQotU0M1MjAgbWlzc2luZyBmZWF0dXJlczoKLSogV2F0Y2hkb2cKLSogU0M1MjAgdGltZXIvdWRlbGF5Ci0qIFNDNTIwIDNyZCBQSUMKLSogU0M1MjAgSUNFIHNlcmlhbAotKiBTQzUyMCBNTUNSIHJlc2V0IAotCi1TQzUyMCBDRFAgYm9hcmQgc3VwcG9ydCBtaXNzaW5nIGZlYXR1cmVzOgotKiBlbnZpcm9ubWVudCBpbiBzcmFtCi0KLVNDNTIwIENEUCBib2FyZCBzdXBwb3J0IGJ1Z3M6Ci0qIFNQSSBFRVBST00gc3VwcG9ydCBkb2VzIG5vdCB3b3JrCi0qIDB4NjgwIExFRFMgZG9zIG5vdCB3b3JrIGZvciBtZQotKiBpcyBpdCBwb3NzaWJsZSB0byBtYWtlIGJvdGggdGhlIGludGVybmFsIHNlcmlhbCBwb3J0cyBhbmQgdGhlIAotICBwb3J0cyBvbiB0aGUgc2lvIHdvcmsgYXQgdGhlIHNhbWUgdGltZT8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2NmaV9mbGFzaC5jIGIvZHJpdmVycy9tdGQvY2ZpX2ZsYXNoLmMKaW5kZXggNTc4ODMyOC4uOTFkZGNiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2ZpX2ZsYXNoLmMKKysrIGIvZHJpdmVycy9tdGQvY2ZpX2ZsYXNoLmMKQEAgLTIwODksNiArMjA4OSwxNCBAQAogCiB2b2lkIGZsYXNoX3Byb3RlY3RfZGVmYXVsdCh2b2lkKQogeworI2lmIGRlZmluZWQoQ09ORklHX1NZU19GTEFTSF9BVVRPUFJPVEVDVF9MSVNUKQorCWludCBpOworCXN0cnVjdCBhcGxfcyB7CisJCXVsb25nIHN0YXJ0OworCQl1bG9uZyBzaXplOworCX0gYXBsW10gPSBDT05GSUdfU1lTX0ZMQVNIX0FVVE9QUk9URUNUX0xJU1Q7CisjZW5kaWYKKwogCS8qIE1vbml0b3IgcHJvdGVjdGlvbiBPTiBieSBkZWZhdWx0ICovCiAjaWYgKENPTkZJR19TWVNfTU9OSVRPUl9CQVNFID49IENPTkZJR19TWVNfRkxBU0hfQkFTRSkgJiYgXAogCSghZGVmaW5lZChDT05GSUdfTU9OSVRPUl9JU19JTl9SQU0pKQpAQCAtMjEzMCwxMiArMjEzOCw2IEBACiB7CiAJdW5zaWduZWQgbG9uZyBzaXplID0gMDsKIAlpbnQgaTsKLSNpZiBkZWZpbmVkKENPTkZJR19TWVNfRkxBU0hfQVVUT1BST1RFQ1RfTElTVCkKLQlzdHJ1Y3QgYXBsX3MgewotCQl1bG9uZyBzdGFydDsKLQkJdWxvbmcgc2l6ZTsKLQl9IGFwbFtdID0gQ09ORklHX1NZU19GTEFTSF9BVVRPUFJPVEVDVF9MSVNUOwotI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfU1lTX0ZMQVNIX1BST1RFQ1RJT04KIAkvKiByZWFkIGVudmlyb25tZW50IGZyb20gRUVQUk9NICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hdDkxX2VtYWMuYyBiL2RyaXZlcnMvbmV0L2F0OTFfZW1hYy5jCmluZGV4IDRlNTY4NWMuLjkwZWI1MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2F0OTFfZW1hYy5jCisrKyBiL2RyaXZlcnMvbmV0L2F0OTFfZW1hYy5jCkBAIC05Myw3ICs5Myw3IEBACiAjZGVmaW5lIFJCRl9NVUxUSUNBU1QgKDE8PDMwKQogI2RlZmluZSBSQkZfVU5JQ0FTVCAgICgxPDwyOSkKICNkZWZpbmUgUkJGX0VYVEVSTkFMICAoMTw8MjgpCi0jZGVmaW5lIFJCRl9VTktPV04gICAgKDE8PDI3KQorI2RlZmluZSBSQkZfVU5LTk9XTiAgICgxPDwyNykKICNkZWZpbmUgUkJGX1NJWkUgICAgICAweDA3ZmYKICNkZWZpbmUgUkJGX0xPQ0FMNCAgICAoMTw8MjYpCiAjZGVmaW5lIFJCRl9MT0NBTDMgICAgKDE8PDI1KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9mdHdkdDAxMF93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvZnR3ZHQwMTBfd2R0LmMKaW5kZXggNmUwNjE3Yi4uYzljYjUzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9mdHdkdDAxMF93ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL2Z0d2R0MDEwX3dkdC5jCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDx3YXRjaGRvZy5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgotI2luY2x1ZGUgImZ0d2R0MDEwX3dkdC5oIgorI2luY2x1ZGUgPGZhcmFkYXkvZnR3ZHQwMTBfd2R0Lmg+CiAKIC8qCiAgKiBTZXQgdGhlIHdhdGNoZG9nIHRpbWUgaW50ZXJ2YWwuCiAgKiBDb3VudGVyIGlzIDMyIGJpdC4KICAqLwotc3RhdGljIGludCBmdHdkdDAxMF93ZHRfc2V0dGltZW91dCh1bnNpZ25lZCBpbnQgdGltZW91dCkKK2ludCBmdHdkdDAxMF93ZHRfc2V0dGltZW91dCh1bnNpZ25lZCBpbnQgdGltZW91dCkKIHsKIAl1bnNpZ25lZCBpbnQgcmVnOwogCkBAIC02MSw3ICs2MSw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXZvaWQgZnR3ZHQwMTBfd2R0X3Jlc2V0KCkKK3ZvaWQgZnR3ZHQwMTBfd2R0X3Jlc2V0KHZvaWQpCiB7CiAJc3RydWN0IGZ0d2R0MDEwX3dkdCAqd2QgPSAoc3RydWN0IGZ0d2R0MDEwX3dkdCAqKUNPTkZJR19GVFdEVDAxMF9CQVNFOwogCkBAIC03NSw3ICs3NSw3IEBACiAJd3JpdGVsKChGVFdEVDAxMF9XRENSX1JTVCB8IEZUV0RUMDEwX1dEQ1JfRU5BQkxFKSwgJndkLT53ZGNyKTsKIH0KIAotdm9pZCBmdHdkdDAxMF93ZHRfZGlzYWJsZSgpCit2b2lkIGZ0d2R0MDEwX3dkdF9kaXNhYmxlKHZvaWQpCiB7CiAJc3RydWN0IGZ0d2R0MDEwX3dkdCAqd2QgPSAoc3RydWN0IGZ0d2R0MDEwX3dkdCAqKUNPTkZJR19GVFdEVDAxMF9CQVNFOwogCkBAIC05MCw3ICs5MCw4IEBACiAJd3JpdGVsKDAsICZ3ZC0+d2Rjcik7CiB9CiAKLXZvaWQgaHdfd2F0Y2hkb2dfcmVzZXQoKQorI2lmIGRlZmluZWQoQ09ORklHX0hXX1dBVENIRE9HKQordm9pZCBod193YXRjaGRvZ19yZXNldCh2b2lkKQogewogCWZ0d2R0MDEwX3dkdF9yZXNldCgpOwogfQpAQCAtMTAwLDMgKzEwMSw0IEBACiAJLyogc2V0IHRpbWVyIGluIG1zICovCiAJZnR3ZHQwMTBfd2R0X3NldHRpbWVvdXQoQ09ORklHX0ZUV0RUMDEwX0hXX1RJTUVPVVQgKiAxMDAwKTsKIH0KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvc3RhbmRhbG9uZS9NYWtlZmlsZSBiL2V4YW1wbGVzL3N0YW5kYWxvbmUvTWFrZWZpbGUKaW5kZXggYzFkZmRjZS4uNjZiNWQyNCAxMDA2NDQKLS0tIGEvZXhhbXBsZXMvc3RhbmRhbG9uZS9NYWtlZmlsZQorKysgYi9leGFtcGxlcy9zdGFuZGFsb25lL01ha2VmaWxlCkBAIC05NSw3ICs5NSw3IEBACiAKICQoRUxGKToKICQob2JqKSU6CSQob2JqKSUubyAkKExJQikKLQkJJChMRCkgLWcgLVR0ZXh0ICQoU1RBTkRBTE9ORV9MT0FEX0FERFIpIFwKKwkJJChMRCkgLWcgLVR0ZXh0ICQoQ09ORklHX1NUQU5EQUxPTkVfTE9BRF9BRERSKSBcCiAJCQktbyAkQCAtZSAkKFNZTV9QUkVGSVgpJChub3RkaXIgJCg8Oi5vPSkpICQ8ICQoTElCKSBcCiAJCQktTCQoZ2NjbGliZGlyKSAtbGdjYwogCmRpZmYgLS1naXQgYS9leGFtcGxlcy9zdGFuZGFsb25lL3N0dWJzLmMgYi9leGFtcGxlcy9zdGFuZGFsb25lL3N0dWJzLmMKaW5kZXggMmQyZTcwOS4uNTA3ZDM4YyAxMDA2NDQKLS0tIGEvZXhhbXBsZXMvc3RhbmRhbG9uZS9zdHVicy5jCisrKyBiL2V4YW1wbGVzL3N0YW5kYWxvbmUvc3R1YnMuYwpAQCAtNCw3ICs0LDcgQEAKICNkZWZpbmUgR0NDX1ZFUlNJT04gKF9fR05VQ19fICogMTAwMCArIF9fR05VQ19NSU5PUl9fKQogI2VuZGlmIC8qIEdDQ19WRVJTSU9OICovCiAKLSNpZiBkZWZpbmVkKENPTkZJR19JMzg2KQorI2lmIGRlZmluZWQoQ09ORklHX1g4NikKIC8qCiAgKiB4ODYgZG9lcyBub3QgaGF2ZSBhIGRlZGljYXRlZCByZWdpc3RlciB0byBzdG9yZSB0aGUgcG9pbnRlciB0bwogICogdGhlIGdsb2JhbF9kYXRhLiBUaHVzIHRoZSBqdW1wIHRhYmxlIGFkZHJlc3MgaXMgc3RvcmVkIGluIGEKQEAgLTE5OCw3ICsxOTgsNyBAQAogCQkqY3ArKyA9IDA7CiAJfQogCi0jaWYgZGVmaW5lZChDT05GSUdfSTM4NikKKyNpZiBkZWZpbmVkKENPTkZJR19YODYpCiAJLyogeDg2IGRvZXMgbm90IGhhdmUgYSBkZWRpY2F0ZWQgcmVnaXN0ZXIgZm9yIHBhc3NpbmcgZ2xvYmFsX2RhdGEgKi8KIAlnbG9iYWxfZGF0YSA9IChnZF90ICopYXJndlstMV07CiAJanQgPSBnbG9iYWxfZGF0YS0+anQ7CmRpZmYgLS1naXQgYS9mcy9qZmZzMi9qZmZzMl8xcGFzcy5jIGIvZnMvamZmczIvamZmczJfMXBhc3MuYwppbmRleCBjNGY3NDQ1Li41ZGRjMmI5IDEwMDY0NAotLS0gYS9mcy9qZmZzMi9qZmZzMl8xcGFzcy5jCisrKyBiL2ZzL2pmZnMyL2pmZnMyXzFwYXNzLmMKQEAgLTc5NCw3ICs3OTQsNyBAQAogI2VuZGlmCiAJCQkJZGVmYXVsdDoKIAkJCQkJLyogdW5rbm93biAqLwotCQkJCQlwdXRMYWJlbGVkV29yZCgiVU5LT1dOIENPTVBSRVNTSU9OIE1FVEhPRCA9ICIsIGpOb2RlLT5jb21wcik7CisJCQkJCXB1dExhYmVsZWRXb3JkKCJVTktOT1dOIENPTVBSRVNTSU9OIE1FVEhPRCA9ICIsIGpOb2RlLT5jb21wcik7CiAJCQkJCXB1dF9mbF9tZW0oak5vZGUsIHBMLT5yZWFkYnVmKTsKIAkJCQkJcmV0dXJuIC0xOwogCQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL2pmZnMyX25hbmRfMXBhc3MuYyBiL2ZzL2pmZnMyL2pmZnMyX25hbmRfMXBhc3MuYwppbmRleCAzOTgyMDAzLi43NDBmNzg3IDEwMDY0NAotLS0gYS9mcy9qZmZzMi9qZmZzMl9uYW5kXzFwYXNzLmMKKysrIGIvZnMvamZmczIvamZmczJfbmFuZF8xcGFzcy5jCkBAIC0zNTAsNyArMzUwLDcgQEAKICNlbmRpZgogCQkJZGVmYXVsdDoKIAkJCQkvKiB1bmtub3duICovCi0JCQkJcHV0TGFiZWxlZFdvcmQoIlVOS09XTiBDT01QUkVTU0lPTiBNRVRIT0QgPSAiLCBpbm9kZS0+Y29tcHIpOworCQkJCXB1dExhYmVsZWRXb3JkKCJVTktOT1dOIENPTVBSRVNTSU9OIE1FVEhPRCA9ICIsIGlub2RlLT5jb21wcik7CiAJCQkJcmV0dXJuIC0xOwogCQkJfQogCQl9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbW1vbi5oIGIvaW5jbHVkZS9jb21tb24uaAppbmRleCA1NDUwM2VkLi4yMWMwNWRiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbW1vbi5oCisrKyBiL2luY2x1ZGUvY29tbW9uLmgKQEAgLTE4MCwxMSArMTgwLDEzIEBACiAgKiBHZW5lcmFsIFB1cnBvc2UgVXRpbGl0aWVzCiAgKi8KICNkZWZpbmUgbWluKFgsIFkpCQkJCVwKLQkoeyB0eXBlb2YgKFgpIF9feCA9IChYKSwgX195ID0gKFkpOwlcCisJKHsgdHlwZW9mIChYKSBfX3ggPSAoWCk7CQlcCisJCXR5cGVvZiAoWSkgX195ID0gKFkpOwkJXAogCQkoX194IDwgX195KSA/IF9feCA6IF9feTsgfSkKIAogI2RlZmluZSBtYXgoWCwgWSkJCQkJXAotCSh7IHR5cGVvZiAoWCkgX194ID0gKFgpLCBfX3kgPSAoWSk7CVwKKwkoeyB0eXBlb2YgKFgpIF9feCA9IChYKTsJCVwKKwkJdHlwZW9mIChZKSBfX3kgPSAoWSk7CQlcCiAJCShfX3ggPiBfX3kpID8gX194IDogX195OyB9KQogCiAjZGVmaW5lIE1JTih4LCB5KSAgbWluKHgsIHkpCkBAIC0yNzAsOSArMjcyLDkgQEAKICMgaW5jbHVkZSA8YXNtL3NldHVwLmg+CiAjIGluY2x1ZGUgPGFzbS91LWJvb3QtYXJtLmg+CS8qIEFSTSB2ZXJzaW9uIHRvIGJlIGZpeGVkISAqLwogI2VuZGlmIC8qIENPTkZJR19BUk0gKi8KLSNpZmRlZiBDT05GSUdfSTM4NgkJLyogeDg2IHZlcnNpb24gdG8gYmUgZml4ZWQhICovCi0jIGluY2x1ZGUgPGFzbS91LWJvb3QtaTM4Ni5oPgotI2VuZGlmIC8qIENPTkZJR19JMzg2ICovCisjaWZkZWYgQ09ORklHX1g4NgkJLyogeDg2IHZlcnNpb24gdG8gYmUgZml4ZWQhICovCisjIGluY2x1ZGUgPGFzbS91LWJvb3QteDg2Lmg+CisjZW5kaWYgLyogQ09ORklHX1g4NiAqLwogCiAjaWZkZWYgQ09ORklHX0FVVE9fQ09NUExFVEUKIGludCBlbnZfY29tcGxldGUoY2hhciAqdmFyLCBpbnQgbWF4diwgY2hhciAqY21kdltdLCBpbnQgbWF4c3osIGNoYXIgKmJ1Zik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZU5FVC5oIGIvaW5jbHVkZS9jb25maWdzL2VORVQuaAppbmRleCAzNGE5ZDY4Li41NDhkNTJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZU5FVC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9lTkVULmgKQEAgLTMzLDcgKzMzLDYgQEAKICAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCiAgKiAoZWFzeSB0byBjaGFuZ2UpCiAgKi8KLSNkZWZpbmUgQ09ORklHX1g4NgogI2RlZmluZSBDT05GSUdfU1lTX1NDNTIwCiAjZGVmaW5lIENPTkZJR19TWVNfU0M1MjBfU1NJCiAjZGVmaW5lIENPTkZJR19TSE9XX0JPT1RfUFJPR1JFU1MKQEAgLTE1OCwxNiArMTU3LDE5IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBNZW1vcnkgb3JnYW5pemF0aW9uOgogICogMzJrQiBTdGFjaworICogMTZrQiBDYWNoZS1Bcy1SQU0gQCAweDE5MjAwMDAwCiAgKiAyNTZrQiBNb25pdG9yCisgKiAoMTI4a0IgKyBFbnZpcm9ubWVudCBTZWN0b3IgU2l6ZSkgbWFsbG9jIHBvb2wKICAqLwotI2RlZmluZSBDT05GSUdfU1lTX1NUQUNLX1NJWkUJCQkweDgwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19TVEFDS19TSVpFCQkJKDMyICogMTAyNCkKICNkZWZpbmUgQ09ORklHX1NZU19DQVJfQUREUgkJCTB4MTkyMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19DQVJfU0laRQkJCTB4MDAwMDQwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19DQVJfU0laRQkJCSgxNiAqIDEwMjQpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkJKENPTkZJR19TWVNfQ0FSX0FERFIgKyBcCiAJCQkJCQkgQ09ORklHX1NZU19DQVJfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJCQlDT05GSUdfU1lTX1RFWFRfQkFTRQogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkJKDI1NiAqIDEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKKyNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkJKENPTkZJR19FTlZfU0VDVF9TSVpFICsgXAorCQkJCQkJIDEyOCoxMDI0KQogLyogQWRkcmVzcyBvZiB0ZW1wb3JhcnkgR2xvYmFsIERhdGEgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX0dEX0FERFIJCQlDT05GSUdfU1lTX0NBUl9BRERSCiAKQEAgLTE5OCwxNyArMjAwLDI1IEBACiAjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfTEVHQUNZXzUxMkt4OAogI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0VSQVNFX1RPVVQJCTIwMDAJLyogbXMgKi8KICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9XUklURV9UT1VUCQkyMDAwCS8qIG1zICovCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24KKyAqIC0gQm9vdCBmbGFzaCBpcyA1MTJrQiB3aXRoIDY0a0Igc2VjdG9ycworICogLSBTdHJhdGFGbGFzaCBpcyAzMk1CIHdpdGggMTI4a0Igc2VjdG9ycworICogLSBSZWR1bmRhbnQgZW1iZWRkZWQgZW52aXJvbm1lbnQgaXMgMjUlIG9mIHRoZSBCb290IGZsYXNoCisgKiAtIFJlZHVuZGFudCBTdHJhdGFGbGFzaCBlbnZpcm9ubWVudCBpcyA8MSUgb2YgdGhlIFN0cmF0YUZsYXNoCisgKiAtIEVudmlyb25tZW50IGlzIHRoZXJlZm9yZSBsb2NhdGVkIGluIFN0cmF0YUZsYXNoCisgKiAtIFByaW1hcnkgY29weSBpcyBsb2NhdGVkIGluIGZpcnN0IHNlY3RvciBvZiBmaXJzdCBmbGFzaAorICogLSBSZWR1bmRhbnQgY29weSBpcyBsb2NhdGVkIGluIHNlY29uZCBzZWN0b3Igb2YgZmlyc3QgZmxhc2gKKyAqIC0gU3RhY2sgaXMgb25seSAzMmtCLCBzbyBlbnZpcm9ubWVudCBzaXplIGlzIGxpbWl0ZWQgdG8gNGtCCiAgKi8KICNkZWZpbmUgQ09ORklHX0VOVl9JU19JTl9GTEFTSAogI2RlZmluZSBDT05GSUdfRU5WX1NFQ1RfU0laRQkJCTB4MjAwMDAKLSNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkJCUNPTkZJR19FTlZfU0VDVF9TSVpFCisjZGVmaW5lIENPTkZJR19FTlZfU0laRQkJCQkweDAxMDAwCiAjZGVmaW5lIENPTkZJR19FTlZfQUREUgkJCQlDT05GSUdfU1lTX0ZMQVNIX0JBU0VfMQotLyogUmVkdW5kYW50IENvcHkgKi8KICNkZWZpbmUgQ09ORklHX0VOVl9BRERSX1JFRFVORAkJCShDT05GSUdfU1lTX0ZMQVNIX0JBU0VfMSArIFwKIAkJCQkJCSBDT05GSUdfRU5WX1NFQ1RfU0laRSkKLSNkZWZpbmUgQ09ORklHX0VOVl9TSVpFX1JFRFVORAkJCUNPTkZJR19FTlZfU0VDVF9TSVpFCisjZGVmaW5lIENPTkZJR19FTlZfU0laRV9SRURVTkQJCQlDT05GSUdfRU5WX1NJWkUKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogUENJIGNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9vbWFwMjQyMGg0LmggYi9pbmNsdWRlL2NvbmZpZ3Mvb21hcDI0MjBoNC5oCmluZGV4IDcxNjFhYjEuLjI4ODhjN2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vbWFwMjQyMGg0LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL29tYXAyNDIwaDQuaApAQCAtMzgsNiArMzgsOCBAQAogLyojZGVmaW5lIENPTkZJR19BUFRJWCAgICAgICAgICAgMSAgICAjKiBkZWZpbmUgaWYgb24gQVBUSVggdGVzdCBjaGlwICovCiAvKiNkZWZpbmUgQ09ORklHX1ZJUlRJTyAgICAgICAgICAxICAgICMqIFVzaW5nIFZpcnRpbyBzaW11bGF0b3IgKi8KIAorI2RlZmluZSBDT05GSUdfU1RBTkRBTE9ORV9MT0FEX0FERFIJMHg4MDMwMDAwMAorCiAvKiBDbG9jayBjb25maWcgdG8gdGFyZ2V0Ki8KICNkZWZpbmUgUFJDTV9DT05GSUdfSUkJMQogLyogI2RlZmluZSBQUkNNX0NPTkZJR19JSUkJCTEgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhwb3J0cy5oIGIvaW5jbHVkZS9leHBvcnRzLmgKaW5kZXggNjM4MjMxMS4uZGRkMWJmNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9leHBvcnRzLmgKKysrIGIvaW5jbHVkZS9leHBvcnRzLmgKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogI2RlZmluZSBYRl9WRVJTSU9OCTYKIAotI2lmIGRlZmluZWQoQ09ORklHX0kzODYpCisjaWYgZGVmaW5lZChDT05GSUdfWDg2KQogZXh0ZXJuIGdkX3QgKmdsb2JhbF9kYXRhOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvZnR3ZHQwMTBfd2R0LmggYi9pbmNsdWRlL2ZhcmFkYXkvZnR3ZHQwMTBfd2R0LmgKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gZHJpdmVycy93YXRjaGRvZy9mdHdkdDAxMF93ZHQuaApyZW5hbWUgdG8gaW5jbHVkZS9mYXJhZGF5L2Z0d2R0MDEwX3dkdC5oCmluZGV4IDhmNGZkNjguLjMxY2E3NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvZnR3ZHQwMTBfd2R0LmgKKysrIGIvaW5jbHVkZS9mYXJhZGF5L2Z0d2R0MDEwX3dkdC5oCkBAIC0xMDAsNCArMTAwLDcgQEAKICAqLwogI2RlZmluZSBGVFdEVDAxMF9USU1FT1VUX0ZBQ1RPUgkJKENPTkZJR19TWVNfQ0xLX0ZSRVEgLyAxMDAwKSAvKiAxIG1zICovCiAKK3ZvaWQgZnR3ZHQwMTBfd2R0X3Jlc2V0KHZvaWQpOwordm9pZCBmdHdkdDAxMF93ZHRfZGlzYWJsZSh2b2lkKTsKKwogI2VuZGlmIC8qIF9fRlRXRFQwMTBfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2d1bnppcC5jIGIvbGliL2d1bnppcC5jCmluZGV4IDQ4MmE0NzYuLjhiMTZiMjQgMTAwNjQ0Ci0tLSBhL2xpYi9ndW56aXAuYworKysgYi9saWIvZ3VuemlwLmMKQEAgLTEwNiwxMiArMTA2LDE2IEBACiAJcy5hdmFpbF9pbiA9ICpsZW5wIC0gb2Zmc2V0OwogCXMubmV4dF9vdXQgPSBkc3Q7CiAJcy5hdmFpbF9vdXQgPSBkc3RsZW47Ci0JciA9IGluZmxhdGUoJnMsIFpfRklOSVNIKTsKLQlpZiAoKHIgIT0gWl9TVFJFQU1fRU5EKSAmJiAoc3RvcG9uZXJyPT0xKSkgewotCQlwcmludGYgKCJFcnJvcjogaW5mbGF0ZSgpIHJldHVybmVkICVkXG4iLCByKTsKLQkJaW5mbGF0ZUVuZCgmcyk7Ci0JCXJldHVybiAoLTEpOwotCX0KKwlkbyB7CisJCXIgPSBpbmZsYXRlKCZzLCBaX0ZJTklTSCk7CisJCWlmIChyICE9IFpfU1RSRUFNX0VORCAmJiByICE9IFpfQlVGX0VSUk9SICYmIHN0b3BvbmVyciA9PSAxKSB7CisJCQlwcmludGYoIkVycm9yOiBpbmZsYXRlKCkgcmV0dXJuZWQgJWRcbiIsIHIpOworCQkJaW5mbGF0ZUVuZCgmcyk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJcy5hdmFpbF9pbiA9ICpsZW5wIC0gb2Zmc2V0IC0gKGludCkocy5uZXh0X291dCAtICh1bnNpZ25lZCBjaGFyKilkc3QpOworCQlzLmF2YWlsX291dCA9IGRzdGxlbjsKKwl9IHdoaWxlIChyID09IFpfQlVGX0VSUk9SKTsKIAkqbGVucCA9IHMubmV4dF9vdXQgLSAodW5zaWduZWQgY2hhciAqKSBkc3Q7CiAJaW5mbGF0ZUVuZCgmcyk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2Vudi9md19lbnYuYyBiL3Rvb2xzL2Vudi9md19lbnYuYwppbmRleCA4ZmY3MDUyLi5lMGY0NmJjIDEwMDY0NAotLS0gYS90b29scy9lbnYvZndfZW52LmMKKysrIGIvdG9vbHMvZW52L2Z3X2Vudi5jCkBAIC02NzQsMTEgKzY3NCw3IEBACiAJCQkJICAgTUVNR0VUQkFEQkxPQ0sgbmVlZHMgNjQgYml0cyAqLwogCWludCByYzsKIAotCS8qCi0JICogU3RhcnQgb2YgdGhlIGZpcnN0IGJsb2NrIHRvIGJlIHJlYWQsIHJlbGllcyBvbiB0aGUgZmFjdCwgdGhhdAotCSAqIGVyYXNlIHNlY3RvciBzaXplIGlzIGFsd2F5cyBhIHBvd2VyIG9mIDIKLQkgKi8KLQlibG9ja3N0YXJ0ID0gb2Zmc2V0ICYgfihERVZFU0laRSAoZGV2KSAtIDEpOworCWJsb2Nrc3RhcnQgPSAob2Zmc2V0IC8gREVWRVNJWkUgKGRldikpICogREVWRVNJWkUgKGRldik7CiAKIAkvKiBPZmZzZXQgaW5zaWRlIGEgYmxvY2sgKi8KIAlibG9ja19zZWVrID0gb2Zmc2V0IC0gYmxvY2tzdGFydDsKQEAgLTY5NCw4ICs2OTAsOCBAQAogCQkgKiBUbyBjYWxjdWxhdGUgdGhlIHRvcCBvZiB0aGUgcmFuZ2UsIHdlIGhhdmUgdG8gdXNlIHRoZQogCQkgKiBnbG9iYWwgREVWT0ZGU0VUIChkZXYpLCB3aGljaCBjYW4gYmUgZGlmZmVyZW50IGZyb20gb2Zmc2V0CiAJCSAqLwotCQl0b3Bfb2ZfcmFuZ2UgPSAoREVWT0ZGU0VUIChkZXYpICYgfihibG9ja2xlbiAtIDEpKSArCi0JCQlFTlZTRUNUT1JTIChkZXYpICogYmxvY2tsZW47CisJCXRvcF9vZl9yYW5nZSA9ICgoREVWT0ZGU0VUKGRldikgLyBibG9ja2xlbikgKworCQkJCUVOVlNFQ1RPUlMgKGRldikpICogYmxvY2tsZW47CiAKIAkJLyogTGltaXQgdG8gb25lIGJsb2NrIGZvciB0aGUgZmlyc3QgcmVhZCAqLwogCQlpZiAocmVhZGxlbiA+IGJsb2NrbGVuIC0gYmxvY2tfc2VlaykKQEAgLTc0OSw5ICs3NDUsOSBAQAogfQogCiAvKgotICogV3JpdGUgY291bnQgYnl0ZXMgYXQgb2Zmc2V0LCBidXQgc3RheSB3aXRoaW4gRU5WU0VUQ09SUyAoZGV2KSBzZWN0b3JzIG9mCi0gKiBERVZPRkZTRVQgKGRldikuIFNpbWlsYXIgdG8gdGhlIHJlYWQgY2FzZSBhYm92ZSwgb24gTk9SIHdlIGVyYXNlIGFuZCB3cml0ZQotICogdGhlIHdob2xlIGRhdGEgYXQgb25jZS4KKyAqIFdyaXRlIGNvdW50IGJ5dGVzIGF0IG9mZnNldCwgYnV0IHN0YXkgd2l0aGluIEVOVlNFQ1RPUlMgKGRldikgc2VjdG9ycyBvZgorICogREVWT0ZGU0VUIChkZXYpLiBTaW1pbGFyIHRvIHRoZSByZWFkIGNhc2UgYWJvdmUsIG9uIE5PUiBhbmQgZGF0YWZsYXNoIHdlCisgKiBlcmFzZSBhbmQgd3JpdGUgdGhlIHdob2xlIGRhdGEgYXQgb25jZS4KICAqLwogc3RhdGljIGludCBmbGFzaF93cml0ZV9idWYgKGludCBkZXYsIGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQsCiAJCQkgICAgb2ZmX3Qgb2Zmc2V0LCB1aW50OF90IG10ZF90eXBlKQpAQCAtNzY0LDcgKzc2MCw3IEBACiAJc2l6ZV90IGVyYXNlc2l6ZTsJLyogZXJhc2UgLyB3cml0ZSBsZW5ndGggLSBvbmUgYmxvY2sgb24gTkFORCwKIAkJCQkgICB3aG9sZSBhcmVhIG9uIE5PUiAqLwogCXNpemVfdCBwcm9jZXNzZWQgPSAwOwkvKiBwcm9ncmVzcyBjb3VudGVyICovCi0Jc2l6ZV90IHdyaXRlX3RvdGFsOwkvKiB0b3RhbCBzaXplIHRvIGFjdHVhbGx5IHdyaXRlIC0gZXhjbHVkaW5pZworCXNpemVfdCB3cml0ZV90b3RhbDsJLyogdG90YWwgc2l6ZSB0byBhY3R1YWxseSB3cml0ZSAtIGV4Y2x1ZGluZwogCQkJCSAgIGJhZCBibG9ja3MgKi8KIAlvZmZfdCBlcmFzZV9vZmZzZXQ7CS8qIG9mZnNldCB0byB0aGUgZmlyc3QgZXJhc2UgYmxvY2sgKGFsaWduZWQpCiAJCQkJICAgYmVsb3cgb2Zmc2V0ICovCkBAIC03NzcsMTEgKzc3MywxMCBAQAogCiAJYmxvY2tsZW4gPSBERVZFU0laRSAoZGV2KTsKIAotCS8qIEVyYXNlIHNlY3RvciBzaXplIGlzIGFsd2F5cyBhIHBvd2VyIG9mIDIgKi8KLQl0b3Bfb2ZfcmFuZ2UgPSAoREVWT0ZGU0VUIChkZXYpICYgfihibG9ja2xlbiAtIDEpKSArCi0JCUVOVlNFQ1RPUlMgKGRldikgKiBibG9ja2xlbjsKKwl0b3Bfb2ZfcmFuZ2UgPSAoKERFVk9GRlNFVChkZXYpIC8gYmxvY2tsZW4pICsKKwkJCQkJRU5WU0VDVE9SUyAoZGV2KSkgKiBibG9ja2xlbjsKIAotCWVyYXNlX29mZnNldCA9IG9mZnNldCAmIH4oYmxvY2tsZW4gLSAxKTsKKwllcmFzZV9vZmZzZXQgPSAob2Zmc2V0IC8gYmxvY2tsZW4pICogYmxvY2tsZW47CiAKIAkvKiBNYXhpbXVtIGFyZWEgd2UgbWF5IHVzZSAqLwogCWVyYXNlX2xlbiA9IHRvcF9vZl9yYW5nZSAtIGVyYXNlX29mZnNldDsKQEAgLTc5NSw3ICs3OTAsOCBAQAogCSAqIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF0YSwgdGhlbiBjb3VudCBieXRlcyBvZiBkYXRhLCBhbmQgdG8gdGhlCiAJICogZW5kIG9mIHRoZSBibG9jawogCSAqLwotCXdyaXRlX3RvdGFsID0gKGJsb2NrX3NlZWsgKyBjb3VudCArIGJsb2NrbGVuIC0gMSkgJiB+KGJsb2NrbGVuIC0gMSk7CisJd3JpdGVfdG90YWwgPSAoKGJsb2NrX3NlZWsgKyBjb3VudCArIGJsb2NrbGVuIC0gMSkgLworCQkJCQkJYmxvY2tsZW4pICogYmxvY2tsZW47CiAKIAkvKgogCSAqIFN1cHBvcnQgZGF0YSBhbnl3aGVyZSB3aXRoaW4gZXJhc2Ugc2VjdG9yczogcmVhZCBvdXQgdGhlIGNvbXBsZXRlCkBAIC04MzgsNyArODM0LDcgQEAKIAogCWVyYXNlLmxlbmd0aCA9IGVyYXNlc2l6ZTsKIAotCS8qIFRoaXMgb25seSBydW5zIG9uY2Ugb24gTk9SIGZsYXNoICovCisJLyogVGhpcyBvbmx5IHJ1bnMgb25jZSBvbiBOT1IgZmxhc2ggYW5kIFNQSS1kYXRhZmxhc2ggKi8KIAl3aGlsZSAocHJvY2Vzc2VkIDwgd3JpdGVfdG90YWwpIHsKIAkJcmMgPSBmbGFzaF9iYWRfYmxvY2sgKGZkLCBtdGRfdHlwZSwgJmJsb2Nrc3RhcnQpOwogCQlpZiAocmMgPCAwKQkJLyogYmxvY2sgdGVzdCBmYWlsZWQgKi8KQEAgLTg1NywxMiArODUzLDE0IEBACiAJCWVyYXNlLnN0YXJ0ID0gYmxvY2tzdGFydDsKIAkJaW9jdGwgKGZkLCBNRU1VTkxPQ0ssICZlcmFzZSk7CiAKLQkJaWYgKGlvY3RsIChmZCwgTUVNRVJBU0UsICZlcmFzZSkgIT0gMCkgewotCQkJZnByaW50ZiAoc3RkZXJyLCAiTVREIGVyYXNlIGVycm9yIG9uICVzOiAlc1xuIiwKLQkJCQkgREVWTkFNRSAoZGV2KSwKLQkJCQkgc3RyZXJyb3IgKGVycm5vKSk7Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KKwkJLyogRGF0YWZsYXNoIGRvZXMgbm90IG5lZWQgYW4gZXhwbGljaXQgZXJhc2UgY3ljbGUgKi8KKwkJaWYgKG10ZF90eXBlICE9IE1URF9EQVRBRkxBU0gpCisJCQlpZiAoaW9jdGwgKGZkLCBNRU1FUkFTRSwgJmVyYXNlKSAhPSAwKSB7CisJCQkJZnByaW50ZiAoc3RkZXJyLCAiTVREIGVyYXNlIGVycm9yIG9uICVzOiAlc1xuIiwKKwkJCQkJIERFVk5BTUUgKGRldiksCisJCQkJCSBzdHJlcnJvciAoZXJybm8pKTsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CiAKIAkJaWYgKGxzZWVrIChmZCwgYmxvY2tzdGFydCwgU0VFS19TRVQpID09IC0xKSB7CiAJCQlmcHJpbnRmIChzdGRlcnIsCkBAIC05NzMsNyArOTcxLDkgQEAKIAkJcmV0dXJuIC0xOwogCX0KIAotCWlmIChtdGRpbmZvLnR5cGUgIT0gTVREX05PUkZMQVNIICYmIG10ZGluZm8udHlwZSAhPSBNVERfTkFOREZMQVNIKSB7CisJaWYgKG10ZGluZm8udHlwZSAhPSBNVERfTk9SRkxBU0ggJiYKKwkgICAgbXRkaW5mby50eXBlICE9IE1URF9OQU5ERkxBU0ggJiYKKwkgICAgbXRkaW5mby50eXBlICE9IE1URF9EQVRBRkxBU0gpIHsKIAkJZnByaW50ZiAoc3RkZXJyLCAiVW5zdXBwb3J0ZWQgZmxhc2ggdHlwZSAldVxuIiwgbXRkaW5mby50eXBlKTsKIAkJcmV0dXJuIC0xOwogCX0KQEAgLTExNDMsNiArMTE0Myw5IEBACiAJCX0gZWxzZSBpZiAoREVWVFlQRShkZXZfY3VycmVudCkgPT0gTVREX05BTkRGTEFTSCAmJgogCQkJICAgREVWVFlQRSghZGV2X2N1cnJlbnQpID09IE1URF9OQU5ERkxBU0gpIHsKIAkJCWVudmlyb25tZW50LmZsYWdfc2NoZW1lID0gRkxBR19JTkNSRU1FTlRBTDsKKwkJfSBlbHNlIGlmIChERVZUWVBFKGRldl9jdXJyZW50KSA9PSBNVERfREFUQUZMQVNIICYmCisJCQkgICBERVZUWVBFKCFkZXZfY3VycmVudCkgPT0gTVREX0RBVEFGTEFTSCkgeworCQkJZW52aXJvbm1lbnQuZmxhZ19zY2hlbWUgPSBGTEFHX0JPT0xFQU47CiAJCX0gZWxzZSB7CiAJCQlmcHJpbnRmIChzdGRlcnIsICJJbmNvbXBhdGlibGUgZmxhc2ggdHlwZXMhXG4iKTsKIAkJCXJldHVybiAtMTsKQEAgLTEyMzQsMTQgKzEyMzcsMjkgQEAKIAlzdHJjcHkgKERFVk5BTUUgKDApLCBERVZJQ0UxX05BTUUpOwogCURFVk9GRlNFVCAoMCkgPSBERVZJQ0UxX09GRlNFVDsKIAlFTlZTSVpFICgwKSA9IEVOVjFfU0laRTsKKwkvKiBEZWZhdWx0IHZhbHVlcyBhcmU6IGVyYXNlLXNpemU9ZW52LXNpemUsICNzZWN0b3JzPTEgKi8KKwlERVZFU0laRSAoMCkgPSBFTlZTSVpFICgwKTsKKwlFTlZTRUNUT1JTICgwKSA9IDE7CisjaWZkZWYgREVWSUNFMV9FU0laRQogCURFVkVTSVpFICgwKSA9IERFVklDRTFfRVNJWkU7CisjZW5kaWYKKyNpZmRlZiBERVZJQ0UxX0VOVlNFQ1RPUlMKIAlFTlZTRUNUT1JTICgwKSA9IERFVklDRTFfRU5WU0VDVE9SUzsKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9SRURVTkQKIAlzdHJjcHkgKERFVk5BTUUgKDEpLCBERVZJQ0UyX05BTUUpOwogCURFVk9GRlNFVCAoMSkgPSBERVZJQ0UyX09GRlNFVDsKIAlFTlZTSVpFICgxKSA9IEVOVjJfU0laRTsKKwkvKiBEZWZhdWx0IHZhbHVlcyBhcmU6IGVyYXNlLXNpemU9ZW52LXNpemUsICNzZWN0b3JzPTEgKi8KKwlERVZFU0laRSAoMSkgPSBFTlZTSVpFICgxKTsKKwlFTlZTRUNUT1JTICgxKSA9IDE7CisjaWZkZWYgREVWSUNFMl9FU0laRQogCURFVkVTSVpFICgxKSA9IERFVklDRTJfRVNJWkU7CisjZW5kaWYKKyNpZmRlZiBERVZJQ0UyX0VOVlNFQ1RPUlMKIAlFTlZTRUNUT1JTICgxKSA9IERFVklDRTJfRU5WU0VDVE9SUzsKKyNlbmRpZgogCUhhdmVSZWR1bmRFbnYgPSAxOwogI2VuZGlmCiAjZW5kaWYKQEAgLTEyODUsOSArMTMwMywxMyBAQAogCQkJICAgICAmREVWRVNJWkUgKGkpLAogCQkJICAgICAmRU5WU0VDVE9SUyAoaSkpOwogCi0JCWlmIChyYyA8IDQpCisJCWlmIChyYyA8IDMpCiAJCQljb250aW51ZTsKIAorCQlpZiAocmMgPCA0KQorCQkJLyogQXNzdW1lIHRoZSBlcmFzZSBzaXplIGlzIHRoZSBzYW1lIGFzIHRoZSBlbnYtc2l6ZSAqLworCQkJREVWRVNJWkUoaSkgPSBFTlZTSVpFKGkpOworCiAJCWlmIChyYyA8IDUpCiAJCQkvKiBEZWZhdWx0IC0gMSBzZWN0b3IgKi8KIAkJCUVOVlNFQ1RPUlMgKGkpID0gMTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2Vudi9md19lbnYuY29uZmlnIGIvdG9vbHMvZW52L2Z3X2Vudi5jb25maWcKaW5kZXggYzhmMTJjZi4uOGUyMWQ1YSAxMDA2NDQKLS0tIGEvdG9vbHMvZW52L2Z3X2Vudi5jb25maWcKKysrIGIvdG9vbHMvZW52L2Z3X2Vudi5jb25maWcKQEAgLTEsMTEgKzEsMTkgQEAKICMgQ29uZmlndXJhdGlvbiBmaWxlIGZvciBmd18ocHJpbnRlbnYvc2F2ZWVudikgdXRpbGl0eS4KICMgVXAgdG8gdHdvIGVudHJpZXMgYXJlIHZhbGlkLCBpbiB0aGlzIGNhc2UgdGhlIHJlZHVuZGFudAogIyBlbnZpcm9ubWVudCBzZWN0b3IgaXMgYXNzdW1lZCBwcmVzZW50LgotIyBOb3RpY2UsIHRoYXQgdGhlICJOdW1iZXIgb2Ygc2VjdG9ycyIgaXMgaWdub3JlZCBvbiBOT1IuCisjIE5vdGljZSwgdGhhdCB0aGUgIk51bWJlciBvZiBzZWN0b3JzIiBpcyBpZ25vcmVkIG9uIE5PUiBhbmQgU1BJLWRhdGFmbGFzaC4KKyMgRnV0aGVybW9yZSwgaWYgdGhlIEZsYXNoIHNlY3RvciBzaXplIGlzIG9tbWl0dGVkLCB0aGlzIHZhbHVlIGlzIGFzc3VtZWQgdG8KKyMgYmUgdGhlIHNhbWUgYXMgdGhlIEVudmlyb25tZW50IHNpemUsIHdoaWNoIGlzIHZhbGlkIGZvciBOT1IgYW5kIFNQSS1kYXRhZmxhc2gKIAorIyBOT1IgZXhhbXBsZQogIyBNVEQgZGV2aWNlIG5hbWUJRGV2aWNlIG9mZnNldAlFbnYuIHNpemUJRmxhc2ggc2VjdG9yIHNpemUJTnVtYmVyIG9mIHNlY3RvcnMKIC9kZXYvbXRkMQkJMHgwMDAwCQkweDQwMDAJCTB4NDAwMAogL2Rldi9tdGQyCQkweDAwMDAJCTB4NDAwMAkJMHg0MDAwCiAKKyMgTVREIFNQSS1kYXRhZmxhc2ggZXhhbXBsZQorIyBNVEQgZGV2aWNlIG5hbWUJRGV2aWNlIG9mZnNldAlFbnYuIHNpemUJRmxhc2ggc2VjdG9yIHNpemUJTnVtYmVyIG9mIHNlY3RvcnMKKyMvZGV2L210ZDUJCTB4NDIwMAkJMHg0MjAwCisjL2Rldi9tdGQ2CQkweDQyMDAJCTB4NDIwMAorCiAjIE5BTkQgZXhhbXBsZQogIy9kZXYvbXRkMAkJMHg0MDAwCQkweDQwMDAJCTB4MjAwMDAJCQkyCmRpZmYgLS1naXQgYS90b29scy9lbnYvZndfZW52LmggYi90b29scy9lbnYvZndfZW52LmgKaW5kZXggODEzMGZhMS4uYzgzZDYwOCAxMDA2NDQKLS0tIGEvdG9vbHMvZW52L2Z3X2Vudi5oCisrKyBiL3Rvb2xzL2Vudi9md19lbnYuaApAQCAtMzQsMTAgKzM0LDggQEAKICNkZWZpbmUgREVWSUNFMl9OQU1FICAgICAgIi9kZXYvbXRkMiIKICNkZWZpbmUgREVWSUNFMV9PRkZTRVQgICAgMHgwMDAwCiAjZGVmaW5lIEVOVjFfU0laRSAgICAgICAgIDB4NDAwMAotI2RlZmluZSBERVZJQ0UxX0VTSVpFICAgICAweDQwMDAKICNkZWZpbmUgREVWSUNFMl9PRkZTRVQgICAgMHgwMDAwCiAjZGVmaW5lIEVOVjJfU0laRSAgICAgICAgIDB4NDAwMAotI2RlZmluZSBERVZJQ0UyX0VTSVpFICAgICAweDQwMDAKIAogI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMAogI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTUJLyogYXV0b2Jvb3QgYWZ0ZXIgNSBzZWNvbmRzCSovCmRpZmYgLS1naXQgYS90b29scy9pbXhpbWFnZS5oIGIvdG9vbHMvaW14aW1hZ2UuaAppbmRleCAzOGNhNmJlLi5kMTI2YTQ2IDEwMDY0NAotLS0gYS90b29scy9pbXhpbWFnZS5oCisrKyBiL3Rvb2xzL2lteGltYWdlLmgKQEAgLTI0LDggKzI0LDYgQEAKICNpZm5kZWYgX0lNWElNQUdFX0hfCiAjZGVmaW5lIF9JTVhJTUFHRV9IXwogCi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0KICNkZWZpbmUgTUFYX0hXX0NGR19TSVpFX1YyIDEyMSAvKiBNYXggbnVtYmVyIG9mIHJlZ2lzdGVycyBpbXggY2FuIHNldCBmb3IgdjIgKi8KICNkZWZpbmUgTUFYX0hXX0NGR19TSVpFX1YxIDYwICAvKiBNYXggbnVtYmVyIG9mIHJlZ2lzdGVycyBpbXggY2FuIHNldCBmb3IgdjEgKi8KICNkZWZpbmUgQVBQX0NPREVfQkFSS0VSCTB4QjEKZGlmZiAtLWdpdCBhL3Rvb2xzL21raW1hZ2UuYyBiL3Rvb2xzL21raW1hZ2UuYwppbmRleCBmNTg1OWQ3Li42MGY3MjYzIDEwMDY0NAotLS0gYS90b29scy9ta2ltYWdlLmMKKysrIGIvdG9vbHMvbWtpbWFnZS5jCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJta2ltYWdlLmgiCiAjaW5jbHVkZSA8aW1hZ2UuaD4KKyNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAKIHN0YXRpYyB2b2lkIGNvcHlfZmlsZShpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpOwpAQCAtMjQ2LDYgKzI0Nyw5IEBACiAJCQljYXNlICd2JzoKIAkJCQlwYXJhbXMudmZsYWcrKzsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ1YnOgorCQkJCXByaW50ZigibWtpbWFnZSB2ZXJzaW9uICVzXG4iLCBQTEFJTl9WRVJTSU9OKTsKKwkJCQlleGl0KEVYSVRfU1VDQ0VTUyk7CiAJCQljYXNlICd4JzoKIAkJCQlwYXJhbXMueGZsYWcrKzsKIAkJCQlicmVhazsKQEAgLTU5MCw2ICs1OTQsOCBAQAogCQlwYXJhbXMuY21kbmFtZSk7CiAJZnByaW50ZiAoc3RkZXJyLCAiICAgICAgICVzIFstRCBkdGNfb3B0aW9uc10gLWYgZml0LWltYWdlLml0cyBmaXQtaW1hZ2VcbiIsCiAJCXBhcmFtcy5jbWRuYW1lKTsKKwlmcHJpbnRmIChzdGRlcnIsICIgICAgICAgJXMgLVYgPT0+IHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXRcbiIsCisJCXBhcmFtcy5jbWRuYW1lKTsKIAogCWV4aXQgKEVYSVRfRkFJTFVSRSk7CiB9Cg==