ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL0tjb25maWcgYi9kcml2ZXJzL2hpZC9LY29uZmlnCmluZGV4IGE2NmZmZTcuLmFiYThmYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL0tjb25maWcKKysrIGIvZHJpdmVycy9oaWQvS2NvbmZpZwpAQCAtMTUyLDYgKzE1MiwxMyBAQAogCS0tLWhlbHAtLS0KIAlTdXBwb3J0IGZvciBHeXJhdGlvbiByZW1vdGUgY29udHJvbC4KIAorY29uZmlnIEhJRF9UV0lOSEFOCisJdHJpc3RhdGUgIlR3aW5oYW4iIGlmIEVNQkVEREVECisJZGVwZW5kcyBvbiBVU0JfSElECisJZGVmYXVsdCAhRU1CRURERUQKKwktLS1oZWxwLS0tCisJU3VwcG9ydCBmb3IgVHdpbmhhbiBJUiByZW1vdGUgY29udHJvbC4KKwogY29uZmlnIEhJRF9LRU5TSU5HVE9OCiAJdHJpc3RhdGUgIktlbnNpbmd0b24iIGlmIEVNQkVEREVECiAJZGVwZW5kcyBvbiBVU0JfSElECmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9NYWtlZmlsZSBiL2RyaXZlcnMvaGlkL01ha2VmaWxlCmluZGV4IGRiMzUxNTEuLjliOTI3MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvaGlkL01ha2VmaWxlCkBAIC00MCw2ICs0MCw3IEBACiBvYmotJChDT05GSUdfSElEX0dSRUVOQVNJQSkJKz0gaGlkLWdhZmYubwogb2JqLSQoQ09ORklHX0hJRF9USFJVU1RNQVNURVIpCSs9IGhpZC10bWZmLm8KIG9iai0kKENPTkZJR19ISURfVE9QU0VFRCkJKz0gaGlkLXRvcHNlZWQubworb2JqLSQoQ09ORklHX0hJRF9UV0lOSEFOKQkrPSBoaWQtdHdpbmhhbi5vCiBvYmotJChDT05GSUdfSElEX1pFUk9QTFVTKQkrPSBoaWQtenBmZi5vCiBvYmotJChDT05GSUdfSElEX1dBQ09NKQkJKz0gaGlkLXdhY29tLm8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvaGlkLWNvcmUuYyBiL2RyaXZlcnMvaGlkL2hpZC1jb3JlLmMKaW5kZXggNTYwMWExNC4uNjE2NGVkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLWNvcmUuYworKysgYi9kcml2ZXJzL2hpZC9oaWQtY29yZS5jCkBAIC0xMzE3LDYgKzEzMTcsNyBAQAogCXsgSElEX1VTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9USFJVU1RNQVNURVIsIDB4YjY1MSkgfSwKIAl7IEhJRF9VU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfVEhSVVNUTUFTVEVSLCAweGI2NTQpIH0sCiAJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1RPUFNFRUQsIFVTQl9ERVZJQ0VfSURfVE9QU0VFRF9DWUJFUkxJTkspIH0sCisJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1RXSU5IQU4sIFVTQl9ERVZJQ0VfSURfVFdJTkhBTl9JUl9SRU1PVEUpIH0sCiAJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1dJU0VHUk9VUCwgVVNCX0RFVklDRV9JRF9TTUFSVEpPWV9QTFVTKSB9LAogCXsgSElEX0JMVUVUT09USF9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgVVNCX0RFVklDRV9JRF9XQUNPTV9HUkFQSElSRV9CTFVFVE9PVEgpIH0sCiAJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1pFUk9QTFVTLCAweDAwMDUpIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtaWRzLmggYi9kcml2ZXJzL2hpZC9oaWQtaWRzLmgKaW5kZXggMzk4ZjczMS4uMzA1OGU0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLWlkcy5oCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1pZHMuaApAQCAtNDA0LDYgKzQwNCw5IEBACiAjZGVmaW5lIFVTQl9WRU5ET1JfSURfVFVSQk9YCQkweDA2MmEKICNkZWZpbmUgVVNCX0RFVklDRV9JRF9UVVJCT1hfS0VZQk9BUkQJMHgwMjAxCiAKKyNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9UV0lOSEFOICAgICAgICAgICAweDYyNTMKKyNkZWZpbmUgVVNCX0RFVklDRV9JRF9UV0lOSEFOX0lSX1JFTU9URSAweDAxMDAKKwogI2RlZmluZSBVU0JfVkVORE9SX0lEX1VDTE9HSUMJCTB4NTU0MwogI2RlZmluZSBVU0JfREVWSUNFX0lEX1VDTE9HSUNfVEFCTEVUX1BGMTIwOQkweDAwNDIKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvaGlkLXR3aW5oYW4uYyBiL2RyaXZlcnMvaGlkL2hpZC10d2luaGFuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA1ZjYwMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvaGlkL2hpZC10d2luaGFuLmMKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBISUQgZHJpdmVyIGZvciBUd2luSGFuIElSIHJlbW90ZSBjb250cm9sCisgKgorICogQmFzZWQgb24gaGlkLWd5cmF0aW9uLmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgQnJ1bm8gUHLpbW9udCA8Ym9uYm9uc0BsaW51eC12c2VydmVyLm9yZz4KKyAqLworCisvKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCisgKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgorI2luY2x1ZGUgPGxpbnV4L2hpZC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCisjaW5jbHVkZSAiaGlkLWlkcy5oIgorCisvKglSZW1vdGUgY29udHJvbCBrZXkgbGF5b3V0ICsgbGlzdGluZzoKKyAqCisgKiAJRnVsbCBTY3JlZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3dlcgorICoJS0VZX1NDUkVFTiAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZX1BPV0VSMgorICoKKyAqCTEgICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgIDMKKyAqCUtFWV9OVU1FUklDXzEgICBLRVlfTlVNRVJJQ18yICAgIEtFWV9OVU1FUklDXzMKKyAqCisgKgk0ICAgICAgICAgICAgICAgICAgICAgNSAgICAgICAgICAgICAgICAgICAgICA2CisgKglLRVlfTlVNRVJJQ180ICAgS0VZX05VTUVSSUNfNSAgICBLRVlfTlVNRVJJQ182CisgKgorICoJNyAgICAgICAgICAgICAgICAgICAgIDggICAgICAgICAgICAgICAgICAgICAgOQorICoJS0VZX05VTUVSSUNfNyAgIEtFWV9OVU1FUklDXzggICAgS0VZX05VTUVSSUNfOQorICoKKyAqCVJFQyAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgRmF2b3JpdGUKKyAqCUtFWV9SRUNPUkQgICAgICBLRVlfTlVNRVJJQ18wICAgIEtFWV9GQVZPUklURVMKKyAqCisgKglSZXdpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3J3YXJkCisgKglLRVlfUkVXSU5EICAgICAgICAgICBDSCsgICAgICAgICAgIEtFWV9GT1JXQVJECisgKgkgICAgICAgICAgICAgICBLRVlfQ0hBTk5FTFVQCisgKgorICoJVk9MLSAgICAgICAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgVk9MKworICoJS0VZX1ZPTFVNRURPV04gICAgS0VZX1BMQVkgICAgICAgIEtFWV9WT0xVTUVVUAorICoKKyAqCSAgICAgICAgICAgICAgICAgICAgIENILQorICoJICAgICAgICAgICAgICBLRVlfQ0hBTk5FTERPV04KKyAqCVJlY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3AKKyAqCUtFWV9SRVNUQVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZX1NUT1AKKyAqCisgKglUaW1lc2hpZnQvUGF1c2UgICAgIE11dGUgICAgICAgICAgICAgICAgQ2FuY2VsCisgKglLRVlfUEFVU0UgICAgICAgICBLRVlfTVVURSAgICAgICAgICBLRVlfQ0FOQ0VMCisgKgorICoJQ2FwdHVyZSAgICAgICAgICAgIFByZXZpZXcgICAgICAgICAgICAgICAgIEVQRworICoJS0VZX1BSSU5UICAgICAgICBLRVlfUFJPR1JBTSAgICAgICAgICAgS0VZX0VQRworICoKKyAqCVJlY29yZCBMaXN0ICAgICAgICAgIFRhYiAgICAgICAgICAgICAgVGVsZXRleHQKKyAqCUtFWV9MSVNUICAgICAgICAgICAgS0VZX1RBQiAgICAgICAgICAgS0VZX1RFWFQKKyAqLworCisjZGVmaW5lIHRoX21hcF9rZXlfY2xlYXIoYykJaGlkX21hcF91c2FnZV9jbGVhcihoaSwgdXNhZ2UsIGJpdCwgbWF4LCBcCisJCQkJCUVWX0tFWSwgKGMpKQorc3RhdGljIGludCB0d2luaGFuX2lucHV0X21hcHBpbmcoc3RydWN0IGhpZF9kZXZpY2UgKmhkZXYsIHN0cnVjdCBoaWRfaW5wdXQgKmhpLAorCQlzdHJ1Y3QgaGlkX2ZpZWxkICpmaWVsZCwgc3RydWN0IGhpZF91c2FnZSAqdXNhZ2UsCisJCXVuc2lnbmVkIGxvbmcgKipiaXQsIGludCAqbWF4KQoreworCWlmICgodXNhZ2UtPmhpZCAmIEhJRF9VU0FHRV9QQUdFKSAhPSBISURfVVBfS0VZQk9BUkQpCisJCXJldHVybiAwOworCisJc3dpdGNoICh1c2FnZS0+aGlkICYgSElEX1VTQUdFKSB7CisJLyogTWFwIGFsbCBrZXlzIGZyb20gVHdpbmhhbiBSZW1vdGUgKi8KKwljYXNlIDB4MDA0OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9URVhUKTsgICAgICAgICBicmVhazsKKwljYXNlIDB4MDA2OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9SRVNUQVJUKTsgICAgICBicmVhazsKKwljYXNlIDB4MDA4OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9FUEcpOyAgICAgICAgICBicmVhazsKKwljYXNlIDB4MDBjOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9SRVdJTkQpOyAgICAgICBicmVhazsKKwljYXNlIDB4MDBlOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9QUk9HUkFNKTsgICAgICBicmVhazsKKwljYXNlIDB4MDBmOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9MSVNUKTsgICAgICAgICBicmVhazsKKwljYXNlIDB4MDEwOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9NVVRFKTsgICAgICAgICBicmVhazsKKwljYXNlIDB4MDExOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9GT1JXQVJEKTsgICAgICBicmVhazsKKwljYXNlIDB4MDEzOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9QUklOVCk7ICAgICAgICBicmVhazsKKwljYXNlIDB4MDE3OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9QQVVTRSk7ICAgICAgICBicmVhazsKKwljYXNlIDB4MDE5OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9GQVZPUklURVMpOyAgICBicmVhazsKKwljYXNlIDB4MDFkOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9TQ1JFRU4pOyAgICAgICBicmVhazsKKwljYXNlIDB4MDFlOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzEpOyAgICBicmVhazsKKwljYXNlIDB4MDFmOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzIpOyAgICBicmVhazsKKwljYXNlIDB4MDIwOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzMpOyAgICBicmVhazsKKwljYXNlIDB4MDIxOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzQpOyAgICBicmVhazsKKwljYXNlIDB4MDIyOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzUpOyAgICBicmVhazsKKwljYXNlIDB4MDIzOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzYpOyAgICBicmVhazsKKwljYXNlIDB4MDI0OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzcpOyAgICBicmVhazsKKwljYXNlIDB4MDI1OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzgpOyAgICBicmVhazsKKwljYXNlIDB4MDI2OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzkpOyAgICBicmVhazsKKwljYXNlIDB4MDI3OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9OVU1FUklDXzApOyAgICBicmVhazsKKwljYXNlIDB4MDI4OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9QTEFZKTsgICAgICAgICBicmVhazsKKwljYXNlIDB4MDI5OiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9DQU5DRUwpOyAgICAgICBicmVhazsKKwljYXNlIDB4MDJiOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9UQUIpOyAgICAgICAgICBicmVhazsKKwkvKiBQb3dlciAgICAgICA9IDB4MGUwICsgMHgwZTEgKyAweDBlMiArIDB4MDNmICovCisJY2FzZSAweDAzZjogdGhfbWFwX2tleV9jbGVhcihLRVlfUE9XRVIyKTsgICAgICAgYnJlYWs7CisJY2FzZSAweDA0YTogdGhfbWFwX2tleV9jbGVhcihLRVlfUkVDT1JEKTsgICAgICAgYnJlYWs7CisJY2FzZSAweDA0YjogdGhfbWFwX2tleV9jbGVhcihLRVlfQ0hBTk5FTFVQKTsgICAgYnJlYWs7CisJY2FzZSAweDA0ZDogdGhfbWFwX2tleV9jbGVhcihLRVlfU1RPUCk7ICAgICAgICAgYnJlYWs7CisJY2FzZSAweDA0ZTogdGhfbWFwX2tleV9jbGVhcihLRVlfQ0hBTk5FTERPV04pOyAgYnJlYWs7CisJLyogVm9sdW1lIGRvd24gPSAweDBlMSArIDB4MDUxICAgICAgICAgICAgICAgICAqLworCWNhc2UgMHgwNTE6IHRoX21hcF9rZXlfY2xlYXIoS0VZX1ZPTFVNRURPV04pOyAgIGJyZWFrOworCS8qIFZvbHVtZSB1cCAgID0gMHgwZTEgKyAweDA1MiAgICAgICAgICAgICAgICAgKi8KKwljYXNlIDB4MDUyOiB0aF9tYXBfa2V5X2NsZWFyKEtFWV9WT0xVTUVVUCk7ICAgICBicmVhazsKKwkvKiBLaWxsIHRoZSBleHRyYSBrZXlzIHVzZWQgZm9yIG11bHRpLWtleSAicG93ZXIiIGFuZCAidm9sdW1lIiBrZXlzCisJICogYXMgd2VsbCBhcyBjb250aW51b3VzbHkgdG8gcmVsZWFzZSBDVFJMLEFMVCxNRVRBLC4uLiBrZXlzICovCisJY2FzZSAweDBlMDoKKwljYXNlIDB4MGUxOgorCWNhc2UgMHgwZTI6CisJY2FzZSAweDBlMzoKKwljYXNlIDB4MGU0OgorCWNhc2UgMHgwZTU6CisJY2FzZSAweDBlNjoKKwljYXNlIDB4MGU3OgorCWRlZmF1bHQ6CisJCXJldHVybiAtMTsKKwl9CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGlkX2RldmljZV9pZCB0d2luaGFuX2RldmljZXNbXSA9IHsKKwl7IEhJRF9VU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfVFdJTkhBTiwgVVNCX0RFVklDRV9JRF9UV0lOSEFOX0lSX1JFTU9URSkgfSwKKwl7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKGhpZCwgdHdpbmhhbl9kZXZpY2VzKTsKKworc3RhdGljIHN0cnVjdCBoaWRfZHJpdmVyIHR3aW5oYW5fZHJpdmVyID0geworCS5uYW1lID0gInR3aW5oYW4iLAorCS5pZF90YWJsZSA9IHR3aW5oYW5fZGV2aWNlcywKKwkuaW5wdXRfbWFwcGluZyA9IHR3aW5oYW5faW5wdXRfbWFwcGluZywKK307CisKK3N0YXRpYyBpbnQgdHdpbmhhbl9pbml0KHZvaWQpCit7CisJcmV0dXJuIGhpZF9yZWdpc3Rlcl9kcml2ZXIoJnR3aW5oYW5fZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgdHdpbmhhbl9leGl0KHZvaWQpCit7CisJaGlkX3VucmVnaXN0ZXJfZHJpdmVyKCZ0d2luaGFuX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHR3aW5oYW5faW5pdCk7Cittb2R1bGVfZXhpdCh0d2luaGFuX2V4aXQpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo=