ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9pOGsuYyBiL2RyaXZlcnMvY2hhci9pOGsuYwppbmRleCA4MWQyZjY3Li4xNTk5NDU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvaThrLmMKKysrIGIvZHJpdmVycy9jaGFyL2k4ay5jCkBAIC0yMCwxMyArMjAsMTQgQEAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+CisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KICNpbmNsdWRlIDxsaW51eC9kbWkuaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogCiAjaW5jbHVkZSA8bGludXgvaThrLmg+CiAKLSNkZWZpbmUgSThLX1ZFUlNJT04JCSIxLjEzIDE0LzA1LzIwMDIiCisjZGVmaW5lIEk4S19WRVJTSU9OCQkiMS4xNCAyMS8wMi8yMDA1IgogCiAjZGVmaW5lIEk4S19TTU1fRk5fU1RBVFVTCTB4MDAyNQogI2RlZmluZSBJOEtfU01NX1BPV0VSX1NUQVRVUwkweDAwNjkKQEAgLTc0LDEzICs3NSwxNiBAQAogbW9kdWxlX3BhcmFtKHBvd2VyX3N0YXR1cywgYm9vbCwgMDYwMCk7CiBNT0RVTEVfUEFSTV9ERVNDKHBvd2VyX3N0YXR1cywgIlJlcG9ydCBwb3dlciBzdGF0dXMgaW4gL3Byb2MvaThrIik7CiAKLXN0YXRpYyBzc2l6ZV90IGk4a19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgX191c2VyICosIHNpemVfdCwgbG9mZl90ICopOworc3RhdGljIGludCBpOGtfb3Blbl9mcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSk7CiBzdGF0aWMgaW50IGk4a19pb2N0bChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LAogCQkgICAgIHVuc2lnbmVkIGxvbmcpOwogCiBzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOGtfZm9wcyA9IHsKLQkucmVhZCA9IGk4a19yZWFkLAotCS5pb2N0bCA9IGk4a19pb2N0bCwKKwkub3BlbgkJPSBpOGtfb3Blbl9mcywKKwkucmVhZAkJPSBzZXFfcmVhZCwKKwkubGxzZWVrCQk9IHNlcV9sc2VlaywKKwkucmVsZWFzZQk9IHNpbmdsZV9yZWxlYXNlLAorCS5pb2N0bAkJPSBpOGtfaW9jdGwsCiB9OwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC00MDAsOSArNDA0LDkgQEAKIC8qCiAgKiBQcmludCB0aGUgaW5mb3JtYXRpb24gZm9yIC9wcm9jL2k4ay4KICAqLwotc3RhdGljIGludCBpOGtfZ2V0X2luZm8oY2hhciAqYnVmZmVyLCBjaGFyICoqc3RhcnQsIG9mZl90IGZwb3MsIGludCBsZW5ndGgpCitzdGF0aWMgaW50IGk4a19wcm9jX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKm9mZnNldCkKIHsKLQlpbnQgbiwgZm5fa2V5LCBjcHVfdGVtcCwgYWNfcG93ZXI7CisJaW50IGZuX2tleSwgY3B1X3RlbXAsIGFjX3Bvd2VyOwogCWludCBsZWZ0X2ZhbiwgcmlnaHRfZmFuLCBsZWZ0X3NwZWVkLCByaWdodF9zcGVlZDsKIAogCWNwdV90ZW1wCT0gaThrX2dldF9jcHVfdGVtcCgpOwkJCS8qIDExMTAwILVzICovCkBAIC00MzEsNDIgKzQzNSwxOCBAQAogCSAqIDkpICBBQyBwb3dlcgogCSAqIDEwKSBGbiBLZXkgc3RhdHVzCiAJICovCi0JbiA9IHNwcmludGYoYnVmZmVyLCAiJXMgJXMgJXMgJWQgJWQgJWQgJWQgJWQgJWQgJWRcbiIsCi0JCSAgICBJOEtfUFJPQ19GTVQsCi0JCSAgICBiaW9zX3ZlcnNpb24sCi0JCSAgICBkbWlfZ2V0X3N5c3RlbV9pbmZvKERNSV9QUk9EVUNUX1NFUklBTCkgPyA6ICJOL0EiLAotCQkgICAgY3B1X3RlbXAsCi0JCSAgICBsZWZ0X2ZhbiwgcmlnaHRfZmFuLCBsZWZ0X3NwZWVkLCByaWdodF9zcGVlZCwKLQkJICAgIGFjX3Bvd2VyLCBmbl9rZXkpOwotCi0JcmV0dXJuIG47CisJcmV0dXJuIHNlcV9wcmludGYoc2VxLCAiJXMgJXMgJXMgJWQgJWQgJWQgJWQgJWQgJWQgJWRcbiIsCisJCQkgIEk4S19QUk9DX0ZNVCwKKwkJCSAgYmlvc192ZXJzaW9uLAorCQkJICBkbWlfZ2V0X3N5c3RlbV9pbmZvKERNSV9QUk9EVUNUX1NFUklBTCkgPyA6ICJOL0EiLAorCQkJICBjcHVfdGVtcCwKKwkJCSAgbGVmdF9mYW4sIHJpZ2h0X2ZhbiwgbGVmdF9zcGVlZCwgcmlnaHRfc3BlZWQsCisJCQkgIGFjX3Bvd2VyLCBmbl9rZXkpOwogfQogCi1zdGF0aWMgc3NpemVfdCBpOGtfcmVhZChzdHJ1Y3QgZmlsZSAqZiwgY2hhciBfX3VzZXIgKiBidWZmZXIsIHNpemVfdCBsZW4sCi0JCQlsb2ZmX3QgKiBmcG9zKQorc3RhdGljIGludCBpOGtfb3Blbl9mcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKLQlpbnQgbjsKLQljaGFyIGluZm9bMTI4XTsKLQotCW4gPSBpOGtfZ2V0X2luZm8oaW5mbywgTlVMTCwgMCwgMTI4KTsKLQlpZiAobiA8PSAwKSB7Ci0JCXJldHVybiBuOwotCX0KLQotCWlmICgqZnBvcyA+PSBuKSB7Ci0JCXJldHVybiAwOwotCX0KLQotCWlmICgoKmZwb3MgKyBsZW4pID49IG4pIHsKLQkJbGVuID0gbiAtICpmcG9zOwotCX0KLQotCWlmIChjb3B5X3RvX3VzZXIoYnVmZmVyLCBpbmZvLCBsZW4pICE9IDApIHsKLQkJcmV0dXJuIC1FRkFVTFQ7Ci0JfQotCi0JKmZwb3MgKz0gbGVuOwotCXJldHVybiBsZW47CisJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGk4a19wcm9jX3Nob3csIE5VTEwpOwogfQogCiBzdGF0aWMgc3RydWN0IGRtaV9zeXN0ZW1faWQgX19pbml0ZGF0YSBpOGtfZG1pX3RhYmxlW10gPSB7CkBAIC01NjAsMTAgKzU0MCwxMCBAQAogCQlyZXR1cm4gLUVOT0RFVjsKIAogCS8qIFJlZ2lzdGVyIHRoZSBwcm9jIGVudHJ5ICovCi0JcHJvY19pOGsgPSBjcmVhdGVfcHJvY19pbmZvX2VudHJ5KCJpOGsiLCAwLCBOVUxMLCBpOGtfZ2V0X2luZm8pOwotCWlmICghcHJvY19pOGspIHsKKwlwcm9jX2k4ayA9IGNyZWF0ZV9wcm9jX2VudHJ5KCJpOGsiLCAwLCBOVUxMKTsKKwlpZiAoIXByb2NfaThrKQogCQlyZXR1cm4gLUVOT0VOVDsKLQl9CisKIAlwcm9jX2k4ay0+cHJvY19mb3BzID0gJmk4a19mb3BzOwogCXByb2NfaThrLT5vd25lciA9IFRISVNfTU9EVUxFOwogCg==