ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9jaTEzeHh4X3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2NpMTN4eHhfdWRjLmMKaW5kZXggYmFhZjg3ZS4uOTA5YmM0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2NpMTN4eHhfdWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2NpMTN4eHhfdWRjLmMKQEAgLTg1Nyw3ICs4NTcsNyBAQAogCXN0YW1wID0gc3RhbXAgKiAxMDAwMDAwICsgdHZhbC50dl91c2VjOwogCiAJc2NucHJpbnRmKGRiZ19kYXRhLmJ1ZltkYmdfZGF0YS5pZHhdLCBEQkdfREFUQV9NU0csCi0JCSAgIiUwNFhcdLsgJTAyWCAlLTcuN3MgJTRpIKtcdCVzXG4iLAorCQkgICIlMDRYXHQ/ICUwMlggJS03LjdzICU0aSA/XHQlc1xuIiwKIAkJICBzdGFtcCwgYWRkciwgbmFtZSwgc3RhdHVzLCBleHRyYSk7CiAKIAlkYmdfaW5jKCZkYmdfZGF0YS5pZHgpOwpAQCAtODY1LDcgKzg2NSw3IEBACiAJd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoJmRiZ19kYXRhLmxjaywgZmxhZ3MpOwogCiAJaWYgKGRiZ19kYXRhLnR0eSAhPSAwKQotCQlwcl9ub3RpY2UoIiUwNFhcdLsgJTAyWCAlLTcuN3MgJTRpIKtcdCVzXG4iLAorCQlwcl9ub3RpY2UoIiUwNFhcdD8gJTAyWCAlLTcuN3MgJTRpID9cdCVzXG4iLAogCQkJICBzdGFtcCwgYWRkciwgbmFtZSwgc3RhdHVzLCBleHRyYSk7CiB9CiAKQEAgLTEwMjUsMTUgKzEwMjUsMTUgQEAKIAogCW4gKz0gc2NucHJpbnRmKGJ1ZiArIG4sIFBBR0VfU0laRSAtIG4sICIqdGVzdCA9ICVkXG4iLAogCQkgICAgICAgaXNyX3N0YXRpc3RpY3MudGVzdCk7Ci0JbiArPSBzY25wcmludGYoYnVmICsgbiwgUEFHRV9TSVpFIC0gbiwgIrsgdWkgID0gJWRcbiIsCisJbiArPSBzY25wcmludGYoYnVmICsgbiwgUEFHRV9TSVpFIC0gbiwgIj8gdWkgID0gJWRcbiIsCiAJCSAgICAgICBpc3Jfc3RhdGlzdGljcy51aSk7Ci0JbiArPSBzY25wcmludGYoYnVmICsgbiwgUEFHRV9TSVpFIC0gbiwgIrsgdWVpID0gJWRcbiIsCisJbiArPSBzY25wcmludGYoYnVmICsgbiwgUEFHRV9TSVpFIC0gbiwgIj8gdWVpID0gJWRcbiIsCiAJCSAgICAgICBpc3Jfc3RhdGlzdGljcy51ZWkpOwotCW4gKz0gc2NucHJpbnRmKGJ1ZiArIG4sIFBBR0VfU0laRSAtIG4sICK7IHBjaSA9ICVkXG4iLAorCW4gKz0gc2NucHJpbnRmKGJ1ZiArIG4sIFBBR0VfU0laRSAtIG4sICI/IHBjaSA9ICVkXG4iLAogCQkgICAgICAgaXNyX3N0YXRpc3RpY3MucGNpKTsKLQluICs9IHNjbnByaW50ZihidWYgKyBuLCBQQUdFX1NJWkUgLSBuLCAiuyB1cmkgPSAlZFxuIiwKKwluICs9IHNjbnByaW50ZihidWYgKyBuLCBQQUdFX1NJWkUgLSBuLCAiPyB1cmkgPSAlZFxuIiwKIAkJICAgICAgIGlzcl9zdGF0aXN0aWNzLnVyaSk7Ci0JbiArPSBzY25wcmludGYoYnVmICsgbiwgUEFHRV9TSVpFIC0gbiwgIrsgc2xpID0gJWRcbiIsCisJbiArPSBzY25wcmludGYoYnVmICsgbiwgUEFHRV9TSVpFIC0gbiwgIj8gc2xpID0gJWRcbiIsCiAJCSAgICAgICBpc3Jfc3RhdGlzdGljcy5zbGkpOwogCW4gKz0gc2NucHJpbnRmKGJ1ZiArIG4sIFBBR0VfU0laRSAtIG4sICIqbm9uZSA9ICVkXG4iLAogCQkgICAgICAgaXNyX3N0YXRpc3RpY3Mubm9uZSk7CkBAIC0yNTE1LDYgKzI1MTUsOSBAQAogCXJldHVybiAtRU5PVFNVUFA7CiB9CiAKK3N0YXRpYyBpbnQgY2kxM3h4eF9zdGFydChzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlciwKKwkJaW50ICgqYmluZCkoc3RydWN0IHVzYl9nYWRnZXQgKikpOworc3RhdGljIGludCBjaTEzeHh4X3N0b3Aoc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyICpkcml2ZXIpOwogLyoqCiAgKiBEZXZpY2Ugb3BlcmF0aW9ucyBwYXJ0IG9mIHRoZSBBUEkgdG8gdGhlIFVTQiBjb250cm9sbGVyIGhhcmR3YXJlLAogICogd2hpY2ggZG9uJ3QgaW52b2x2ZSBlbmRwb2ludHMgKG9yIGkvbykKQEAgLTI1MjQsMTcgKzI1MjcsMTkgQEAKIAkudmJ1c19zZXNzaW9uCT0gY2kxM3h4eF92YnVzX3Nlc3Npb24sCiAJLndha2V1cAkJPSBjaTEzeHh4X3dha2V1cCwKIAkudmJ1c19kcmF3CT0gY2kxM3h4eF92YnVzX2RyYXcsCisJLnN0YXJ0CQk9IGNpMTN4eHhfc3RhcnQsCisJLnN0b3AJCT0gY2kxM3h4eF9zdG9wLAogfTsKIAogLyoqCi0gKiB1c2JfZ2FkZ2V0X3Byb2JlX2RyaXZlcjogcmVnaXN0ZXIgYSBnYWRnZXQgZHJpdmVyCisgKiBjaTEzeHh4X3N0YXJ0OiByZWdpc3RlciBhIGdhZGdldCBkcml2ZXIKICAqIEBkcml2ZXI6IHRoZSBkcml2ZXIgYmVpbmcgcmVnaXN0ZXJlZAogICogQGJpbmQ6IHRoZSBkcml2ZXIncyBiaW5kIGNhbGxiYWNrCiAgKgotICogQ2hlY2sgdXNiX2dhZGdldF9wcm9iZV9kcml2ZXIoKSBhdCA8bGludXgvdXNiL2dhZGdldC5oPiBmb3IgZGV0YWlscy4KKyAqIENoZWNrIGNpMTN4eHhfc3RhcnQoKSBhdCA8bGludXgvdXNiL2dhZGdldC5oPiBmb3IgZGV0YWlscy4KICAqIEludGVycnVwdHMgYXJlIGVuYWJsZWQgaGVyZS4KICAqLwotaW50IHVzYl9nYWRnZXRfcHJvYmVfZHJpdmVyKHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyLAorc3RhdGljIGludCBjaTEzeHh4X3N0YXJ0KHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyLAogCQlpbnQgKCpiaW5kKShzdHJ1Y3QgdXNiX2dhZGdldCAqKSkKIHsKIAlzdHJ1Y3QgY2kxM3h4eCAqdWRjID0gX3VkYzsKQEAgLTI2NTcsMTQgKzI2NjIsMTMgQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKHVkYy0+bG9jaywgZmxhZ3MpOwogCXJldHVybiByZXR2YWw7CiB9Ci1FWFBPUlRfU1lNQk9MKHVzYl9nYWRnZXRfcHJvYmVfZHJpdmVyKTsKIAogLyoqCi0gKiB1c2JfZ2FkZ2V0X3VucmVnaXN0ZXJfZHJpdmVyOiB1bnJlZ2lzdGVyIGEgZ2FkZ2V0IGRyaXZlcgorICogY2kxM3h4eF9zdG9wOiB1bnJlZ2lzdGVyIGEgZ2FkZ2V0IGRyaXZlcgogICoKICAqIENoZWNrIHVzYl9nYWRnZXRfdW5yZWdpc3Rlcl9kcml2ZXIoKSBhdCAidXNiX2dhZGdldC5oIiBmb3IgZGV0YWlscwogICovCi1pbnQgdXNiX2dhZGdldF91bnJlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcikKK3N0YXRpYyBpbnQgY2kxM3h4eF9zdG9wKHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKQogewogCXN0cnVjdCBjaTEzeHh4ICp1ZGMgPSBfdWRjOwogCXVuc2lnbmVkIGxvbmcgaSwgZmxhZ3M7CkBAIC0yNzI2LDcgKzI3MzAsNiBAQAogCiAJcmV0dXJuIDA7CiB9Ci1FWFBPUlRfU1lNQk9MKHVzYl9nYWRnZXRfdW5yZWdpc3Rlcl9kcml2ZXIpOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBCVVMgYmxvY2sKQEAgLTI5MDEsMTIgKzI5MDQsMjMgQEAKIAkJaWYgKHJldHZhbCkKIAkJCWdvdG8gcmVtb3ZlX2RiZzsKIAl9CisKKwlyZXR2YWwgPSB1c2JfYWRkX2dhZGdldF91ZGMoZGV2LCAmdWRjLT5nYWRnZXQpOworCWlmIChyZXR2YWwpCisJCWdvdG8gcmVtb3ZlX3RyYW5zOworCiAJcG1fcnVudGltZV9ub19jYWxsYmFja3MoJnVkYy0+Z2FkZ2V0LmRldik7CiAJcG1fcnVudGltZV9lbmFibGUoJnVkYy0+Z2FkZ2V0LmRldik7CiAKIAlfdWRjID0gdWRjOwogCXJldHVybiByZXR2YWw7CiAKK3JlbW92ZV90cmFuczoKKwlpZiAodWRjLT50cmFuc2NlaXZlcikgeworCQlvdGdfc2V0X3BlcmlwaGVyYWwodWRjLT50cmFuc2NlaXZlciwgJnVkYy0+Z2FkZ2V0KTsKKwkJb3RnX3B1dF90cmFuc2NlaXZlcih1ZGMtPnRyYW5zY2VpdmVyKTsKKwl9CisKIAllcnIoImVycm9yID0gJWkiLCByZXR2YWwpOwogcmVtb3ZlX2RiZzoKICNpZmRlZiBDT05GSUdfVVNCX0dBREdFVF9ERUJVR19GSUxFUwpAQCAtMjkzNiw2ICsyOTUwLDcgQEAKIAkJZXJyKCJFSU5WQUwiKTsKIAkJcmV0dXJuOwogCX0KKwl1c2JfZGVsX2dhZGdldF91ZGMoJnVkYy0+Z2FkZ2V0KTsKIAogCWlmICh1ZGMtPnRyYW5zY2VpdmVyKSB7CiAJCW90Z19zZXRfcGVyaXBoZXJhbCh1ZGMtPnRyYW5zY2VpdmVyLCAmdWRjLT5nYWRnZXQpOwo=