From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9757C6E27A for ; Mon, 3 Aug 2020 12:43:55 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Mon, 3 Aug 2020 14:43:04 +0200 Message-Id: <20200803124313.31162-14-zbigniew.kempczynski@intel.com> In-Reply-To: <20200803124313.31162-1-zbigniew.kempczynski@intel.com> References: <20200803124313.31162-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v25 13/22] tests/gem|kms: remove libdrm dependency (batch 1) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: RnJvbTogRG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdyemVnb3J6ZWtAaW50ZWwuY29tPgoK VXNlIGludGVsX2JiIC8gaW50ZWxfYnVmIHRvIHJlbW92ZSBsaWJkcm0gZGVwZW5kZW5jeS4KClRl c3RzIGNoYW5nZWQ6Ci0gZ2VtX2NvbmN1cnJlbnRfYWxsCi0gZ2VtX3BwZ3R0Ci0ga21zX2RyYXdf Y3JjCi0ga21zX2Zyb250YnVmZmVyX3RyYWNraW5nCi0ga21zX3BzcgoKU2lnbmVkLW9mZi1ieTog RG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdyemVnb3J6ZWtAaW50ZWwuY29tPgpDYzogWmJp Z25pZXcgS2VtcGN6ecWEc2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+CkNjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiB0ZXN0cy9pOTE1L2dl bV9jb25jdXJyZW50X2FsbC5jICB8IDQzNCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t CiB0ZXN0cy9pOTE1L2dlbV9wcGd0dC5jICAgICAgICAgICB8IDE4MyArKysrKystLS0tLS0tCiB0 ZXN0cy9rbXNfZHJhd19jcmMuYyAgICAgICAgICAgICB8ICAyMCArLQogdGVzdHMva21zX2Zyb250 YnVmZmVyX3RyYWNraW5nLmMgfCAgMjAgKy0KIHRlc3RzL2ttc19wc3IuYyAgICAgICAgICAgICAg ICAgIHwgMTM0ICsrKysrLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMzkyIGluc2VydGlvbnMoKyks IDM5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jb25jdXJyZW50 X2FsbC5jIGIvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYwppbmRleCA4MDI3OGM3NS4u N2YxNzYzYWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKKysr IGIvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYwpAQCAtNTEsNyArNTEsNiBAQAogI2lu Y2x1ZGUgImk5MTUvZ2VtLmgiCiAjaW5jbHVkZSAiaWd0LmgiCiAjaW5jbHVkZSAiaWd0X3ZnZW0u aCIKLSNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKIAogSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRl c3Qgb2YgcHJlYWQvcHdyaXRlL21tYXAgYmVoYXZpb3Igd2hlbiB3cml0aW5nIHRvIGFjdGl2ZSIK IAkJICAgICAiIGJ1ZmZlcnMuIik7CkBAIC02NCw3ICs2Myw5IEBAIGludCBwYXNzOwogc3RydWN0 IGNyZWF0ZSB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAl2b2lkICgqcmVxdWlyZSkoY29uc3Qgc3Ry dWN0IGNyZWF0ZSAqLCB1bnNpZ25lZCk7Ci0JZHJtX2ludGVsX2JvICooKmNyZWF0ZSkoZHJtX2lu dGVsX2J1Zm1nciAqLCB1aW50NjRfdCBzaXplKTsKKwlzdHJ1Y3QgaW50ZWxfYnVmICooKmNyZWF0 ZSkoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHVpbnQzMl90IHdpZHRoLAorCQkJCSAgICB1aW50MzJf dCBoZWlnaHQsIHVpbnQzMl90IHRpbGluZywKKwkJCQkgICAgdWludDY0X3Qgc2l6ZSk7CiB9Owog CiBzdHJ1Y3Qgc2l6ZSB7CkBAIC03NywxMCArNzgsMTAgQEAgc3RydWN0IGJ1ZmZlcnMgewogCWNv bnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZTsKIAljb25zdCBzdHJ1Y3QgYWNjZXNzX21vZGUgKm1v ZGU7CiAJY29uc3Qgc3RydWN0IHNpemUgKnNpemU7Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdy OwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0JZHJtX2ludGVsX2JvICoqc3Jj LCAqKmRzdDsKLQlkcm1faW50ZWxfYm8gKnNub29wLCAqc3BhcmU7CisJc3RydWN0IGJ1Zl9vcHMg KmJvcHM7CisJc3RydWN0IGludGVsX2JiICppYmI7CisJc3RydWN0IGludGVsX2J1ZiAqKnNyYywg Kipkc3Q7CisJc3RydWN0IGludGVsX2J1ZiAqc25vb3AsICpzcGFyZTsKIAl1aW50MzJfdCAqdG1w OwogCWludCB3aWR0aCwgaGVpZ2h0LCBucGl4ZWxzLCBwYWdlX3NpemU7CiAJaW50IGNvdW50LCBu dW1fYnVmZmVyczsKQEAgLTg4LDI5ICs4OSwzMiBAQCBzdHJ1Y3QgYnVmZmVycyB7CiAKICNkZWZp bmUgTUlOX0JVRkZFUlMgMwogCi1zdGF0aWMgdm9pZCBibHRfY29weV9ibyhzdHJ1Y3QgYnVmZmVy cyAqYiwgZHJtX2ludGVsX2JvICpkc3QsIGRybV9pbnRlbF9ibyAqc3JjKTsKK3N0YXRpYyB2b2lk IGJsdF9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJ CQlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpOwogCiBzdGF0aWMgdm9pZAotbm9wX3JlbGVhc2VfYm8o ZHJtX2ludGVsX2JvICpibykKK25vcF9yZWxlYXNlX2JvKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZikK IHsKLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoYm8pOworCWlmIChidWYtPnB0cikKKwkJaW50 ZWxfYnVmX3VubWFwKGJ1Zik7CisJaW50ZWxfYnVmX2Rlc3Ryb3koYnVmKTsKIH0KIAogc3RhdGlj IHZvaWQKLXByd19zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVp bnQzMl90IHZhbCkKK3Byd19zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9i dWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewogCWZvciAoaW50IGkgPSAwOyBpIDwgYi0+bnBpeGVs czsgaSsrKQogCQliLT50bXBbaV0gPSB2YWw7Ci0JZHJtX2ludGVsX2JvX3N1YmRhdGEoYm8sIDAs IDQqYi0+bnBpeGVscywgYi0+dG1wKTsKKwlnZW1fd3JpdGUoZmQsIGJ1Zi0+aGFuZGxlLCAwLCBi LT50bXAsIDQqYi0+bnBpeGVscyk7CiB9CiAKIHN0YXRpYyB2b2lkCi1wcndfY21wX2JvKHN0cnVj dCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitwcndfY21wX2Jv KHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkK IHsKIAl1aW50MzJfdCAqdmFkZHI7CiAKIAl2YWRkciA9IGItPnRtcDsKLQlkb19vcl9kaWUoZHJt X2ludGVsX2JvX2dldF9zdWJkYXRhKGJvLCAwLCA0KmItPm5waXhlbHMsIHZhZGRyKSk7CisJZ2Vt X3JlYWQoZmQsIGJ1Zi0+aGFuZGxlLCAwLCB2YWRkciwgNCpiLT5ucGl4ZWxzKTsKIAlmb3IgKGlu dCBpID0gMDsgaSA8IGItPm5waXhlbHM7IGkrKykKIAkJaWd0X2Fzc2VydF9lcV91MzIodmFkZHJb aV0sIHZhbCk7CiB9CkBAIC0xMTgsMzEgKzEyMiwzMyBAQCBwcndfY21wX2JvKHN0cnVjdCBidWZm ZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCiAjZGVmaW5lIHBpeGVsKHks IHdpZHRoKSAoKHkpKih3aWR0aCkgKyAoKCh5KSArIHBhc3MpJSh3aWR0aCkpKQogCiBzdGF0aWMg dm9pZAotcGFydGlhbF9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8s IHVpbnQzMl90IHZhbCkKK3BhcnRpYWxfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKIAlmb3IgKGludCB5ID0gMDsgeSA8IGIt PmhlaWdodDsgeSsrKQotCQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX3N1YmRhdGEoYm8sIDQqcGl4 ZWwoeSwgYi0+d2lkdGgpLCA0LCAmdmFsKSk7CisJCWdlbV93cml0ZShmZCwgYnVmLT5oYW5kbGUs IDQqcGl4ZWwoeSwgYi0+d2lkdGgpLCAmdmFsLCA0KTsKIH0KIAogc3RhdGljIHZvaWQKLXBhcnRp YWxfY21wX2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2 YWwpCitwYXJ0aWFsX2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAq YnVmLCB1aW50MzJfdCB2YWwpCiB7CiAJZm9yIChpbnQgeSA9IDA7IHkgPCBiLT5oZWlnaHQ7IHkr KykgewotCQl1aW50MzJfdCBidWY7Ci0JCWRvX29yX2RpZShkcm1faW50ZWxfYm9fZ2V0X3N1YmRh dGEoYm8sIDQqcGl4ZWwoeSwgYi0+d2lkdGgpLCA0LCAmYnVmKSk7Ci0JCWlndF9hc3NlcnRfZXFf dTMyKGJ1ZiwgdmFsKTsKKwkJdWludDMyX3QgdG1wOworCisJCWdlbV9yZWFkKGZkLCBidWYtPmhh bmRsZSwgNCpwaXhlbCh5LCBiLT53aWR0aCksICZ0bXAsIDQpOworCQlpZ3RfYXNzZXJ0X2VxX3Uz Mih0bXAsIHZhbCk7CiAJfQogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLWNyZWF0ZV9ub3Jt YWxfYm8oZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLCB1aW50NjRfdCBzaXplKQorc3RhdGljIHN0 cnVjdCBpbnRlbF9idWYgKgorY3JlYXRlX25vcm1hbF9ibyhzdHJ1Y3QgYnVmX29wcyAqYm9wcywg dWludDMyX3Qgd2lkdGgsCisJCSB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IHRpbGluZywgdWlu dDY0X3Qgc2l6ZSkKIHsKLQlkcm1faW50ZWxfYm8gKmJvOworCXN0cnVjdCBpbnRlbF9idWYgKmJ1 ZjsKKwlpbnQgYnBwID0gc2l6ZS9oZWlnaHQvd2lkdGggKiA4OwogCi0JYm8gPSBkcm1faW50ZWxf Ym9fYWxsb2MoYnVmbWdyLCAiYm8iLCBzaXplLCAwKTsKLQlpZ3RfYXNzZXJ0KGJvKTsKKwlidWYg PSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIHdpZHRoLCBoZWlnaHQsIGJwcCwgMCwgdGlsaW5nLCAw KTsKIAotCXJldHVybiBibzsKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0aWMgdm9pZCBjYW5fY3Jl YXRlX25vcm1hbChjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVuc2lnbmVkIGNvdW50KQpA QCAtMTUwLDE5ICsxNTYsMjYgQEAgc3RhdGljIHZvaWQgY2FuX2NyZWF0ZV9ub3JtYWwoY29uc3Qg c3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKIH0KIAogI2lmIEhBVkVfQ1JF QVRFX1BSSVZBVEUKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgotY3JlYXRlX3ByaXZhdGVfYm8oZHJt X2ludGVsX2J1Zm1nciAqYnVmbWdyLCB1aW50NjRfdCBzaXplKQorc3RhdGljIHN0cnVjdCBpbnRl bF9idWYgKgorY3JlYXRlX3ByaXZhdGVfYm8oYnVmX29wcyAqYm9wcywgdWludDMyX3Qgd2lkdGgs IHVpbnQzMl90IGhlaWdodCwKKwkJICB1aW50MzJfdCB0aWxpbmcsIHVpbnQ2NF90IHNpemUpCiB7 Ci0JZHJtX2ludGVsX2JvICpibzsKLQl1aW50MzJfdCBoYW5kbGU7CisJc3RydWN0IGludGVsX2J1 ZiAqYnVmOworCXVpbnQzMl90IGhhbmRsZSwgYnVmX2hhbmRsZSwgbmFtZTsKKwlpbnQgYnBwID0g c2l6ZS9oZWlnaHQvd2lkdGggKiA4OwogCiAJLyogWFhYIGdlbV9jcmVhdGVfd2l0aF9mbGFncyhm ZCwgc2l6ZSwgSTkxNV9DUkVBVEVfUFJJVkFURSk7ICovCiAKIAloYW5kbGUgPSBnZW1fY3JlYXRl KGZkLCBzaXplKTsKLQlibyA9IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGJ1Zm1nciwgZmQsICJz dG9sZW4iLCBoYW5kbGUpOworCW5hbWUgPSBnZW1fZmxpbmsoZmQsIGhhbmRsZSk7CisJYnVmX2hh bmRsZSA9IGdlbV9vcGVuKGZkLCBuYW1lKTsKKworCWJ1ZiA9IGNhbGxvYygxLCBzaXplb2YoKmJ1 ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShib3BzLCBidWZfaGFuZGxlLCBidWYs IHdpZHRoLCBoZWlnaHQsCisJCQkJICAgIGJwcCwgMCwgdGlsaW5nLCAwKTsKIAlnZW1fY2xvc2Uo ZmQsIGhhbmRsZSk7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJuIGJ1ZjsKIH0KIAogc3RhdGljIHZv aWQgY2FuX2NyZWF0ZV9wcml2YXRlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWdu ZWQgY291bnQpCkBAIC0xNzIsMTkgKzE4NSwyNiBAQCBzdGF0aWMgdm9pZCBjYW5fY3JlYXRlX3By aXZhdGUoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKICNlbmRp ZgogCiAjaWYgSEFWRV9DUkVBVEVfU1RPTEVOCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLWNyZWF0 ZV9zdG9sZW5fYm8oZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLCB1aW50NjRfdCBzaXplKQorc3Rh dGljIHN0cnVjdCBpbnRlbF9idWYgKgorY3JlYXRlX3N0b2xlbl9ibyhidWZfb3BzICpib3BzLCB1 aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LAorCQkgdWludDMyX3QgdGlsaW5nLCB1aW50 NjRfdCBzaXplKQogewotCWRybV9pbnRlbF9ibyAqYm87Ci0JdWludDMyX3QgaGFuZGxlOworCXN0 cnVjdCBpbnRlbF9idWYgKmJ1ZjsKKwl1aW50MzJfdCBoYW5kbGUsIGJ1Zl9oYW5kbGUsIG5hbWU7 CisJaW50IGJwcCA9IHNpemUvaGVpZ2h0L3dpZHRoICogODsKIAotCS8qIFhYWCBnZW1fY3JlYXRl X3dpdGhfZmxhZ3MoZmQsIHNpemUsIEk5MTVfQ1JFQVRFX1NUT0xFTik7ICovCisJLyogWFhYIGdl bV9jcmVhdGVfd2l0aF9mbGFncyhmZCwgc2l6ZSwgSTkxNV9DUkVBVEVfUFJJVkFURSk7ICovCiAK IAloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBzaXplKTsKLQlibyA9IGdlbV9oYW5kbGVfdG9fbGli ZHJtX2JvKGJ1Zm1nciwgZmQsICJzdG9sZW4iLCBoYW5kbGUpOworCW5hbWUgPSBnZW1fZmxpbmso ZmQsIGhhbmRsZSk7CisJYnVmX2hhbmRsZSA9IGdlbV9vcGVuKGZkLCBuYW1lKTsKKworCWJ1ZiA9 IGNhbGxvYygxLCBzaXplb2YoKmJ1ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShi b3BzLCBidWZfaGFuZGxlLCBidWYsIHdpZHRoLCBoZWlnaHQsCisJCQkJICAgIGJwcCwgMCwgdGls aW5nLCAwKTsKIAlnZW1fY2xvc2UoZmQsIGhhbmRsZSk7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJu IGJ1ZjsKIH0KIAogc3RhdGljIHZvaWQgY2FuX2NyZWF0ZV9zdG9sZW4oY29uc3Qgc3RydWN0IGNy ZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKQEAgLTIwMSwxMCArMjIxLDE3IEBAIHN0YXRp YyB2b2lkIGNyZWF0ZV9jcHVfcmVxdWlyZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVu c2lnbmVkIGNvdW50KQogI2VuZGlmCiB9CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGlj IHN0cnVjdCBpbnRlbF9idWYgKgorY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiLCB1 aW50MzJfdCB0aWxpbmcpCit7CisJcmV0dXJuIGItPmNyZWF0ZS0+Y3JlYXRlKGItPmJvcHMsIGIt PndpZHRoLCBiLT5oZWlnaHQsCisJCQkJIHRpbGluZywgNCpiLT5ucGl4ZWxzKTsKK30KKworc3Rh dGljIHN0cnVjdCBpbnRlbF9idWYgKgogdW5tYXBwZWRfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBi dWZmZXJzICpiKQogewotCXJldHVybiBiLT5jcmVhdGUtPmNyZWF0ZShiLT5idWZtZ3IsIDQqYi0+ bnBpeGVscyk7CisJcmV0dXJuIGNyZWF0ZV9ibyhiLCBJOTE1X1RJTElOR19OT05FKTsKIH0KIAog c3RhdGljIHZvaWQgY3JlYXRlX3Nub29wX3JlcXVpcmUoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3Jl YXRlLCB1bnNpZ25lZCBjb3VudCkKQEAgLTIxMywxNiArMjQwLDE1IEBAIHN0YXRpYyB2b2lkIGNy ZWF0ZV9zbm9vcF9yZXF1aXJlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQg Y291bnQpCiAJaWd0X3JlcXVpcmUoIWdlbV9oYXNfbGxjKGZkKSk7CiB9CiAKLXN0YXRpYyBkcm1f aW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBpbnRlbF9idWYgKgogc25vb3BfY3JlYXRlX2JvKGNv bnN0IHN0cnVjdCBidWZmZXJzICpiKQogewotCWRybV9pbnRlbF9ibyAqYm87CisJc3RydWN0IGlu dGVsX2J1ZiAqYnVmOwogCi0JYm8gPSB1bm1hcHBlZF9jcmVhdGVfYm8oYik7Ci0JZ2VtX3NldF9j YWNoaW5nKGZkLCBiby0+aGFuZGxlLCBJOTE1X0NBQ0hJTkdfQ0FDSEVEKTsKLQlkcm1faW50ZWxf Ym9fZGlzYWJsZV9yZXVzZShibyk7CisJYnVmID0gdW5tYXBwZWRfY3JlYXRlX2JvKGIpOworCWdl bV9zZXRfY2FjaGluZyhmZCwgYnVmLT5oYW5kbGUsIEk5MTVfQ0FDSElOR19DQUNIRUQpOwogCi0J cmV0dXJuIGJvOworCXJldHVybiBidWY7CiB9CiAKIHN0YXRpYyB2b2lkIGNyZWF0ZV91c2VycHRy X3JlcXVpcmUoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKQEAg LTI1MSwxMSArMjc3LDExIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV91c2VycHRyX3JlcXVpcmUoY29u c3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKIAlpZ3RfcmVxdWlyZSho YXNfdXNlcnB0cik7CiB9CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBp bnRlbF9idWYgKgogdXNlcnB0cl9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiB7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV91c2VycHRyIHVzZXJwdHI7Ci0JZHJtX2ludGVsX2JvICpi bzsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CiAJdm9pZCAqcHRyOwogCiAJbWVtc2V0KCZ1c2Vy cHRyLCAwLCBzaXplb2YodXNlcnB0cikpOwpAQCAtMjY2LDU0ICsyOTIsNDggQEAgdXNlcnB0cl9j cmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiAJaWd0X2Fzc2VydChwdHIgIT0gKHZv aWQgKiktMSk7CiAJdXNlcnB0ci51c2VyX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihwdHIpOwogCi0j aWYgMAogCWRvX29yX2RpZShkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX1VTRVJQVFIs ICZ1c2VycHRyKSk7Ci0JYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhiLT5idWZtZ3IsIGZk LCAidXNlcnB0ciIsIHVzZXJwdHIuaGFuZGxlKTsKLQlnZW1fY2xvc2UoZmQsIHVzZXJwdHIuaGFu ZGxlKTsKLSNlbHNlCi0JYm8gPSBkcm1faW50ZWxfYm9fYWxsb2NfdXNlcnB0cihiLT5idWZtZ3Is ICJuYW1lIiwKLQkJCQkJcHRyLCBJOTE1X1RJTElOR19OT05FLCAwLAotCQkJCQl1c2VycHRyLnVz ZXJfc2l6ZSwgMCk7Ci0JaWd0X2Fzc2VydChibyk7Ci0jZW5kaWYKLQliby0+dmlydHVhbCA9IGZy b21fdXNlcl9wb2ludGVyKHVzZXJwdHIudXNlcl9wdHIpOworCWJ1ZiA9IGNhbGxvYygxLCBzaXpl b2YoKmJ1ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShiLT5ib3BzLCB1c2VycHRy LmhhbmRsZSwgYnVmLCBiLT53aWR0aCwKKwkJCQkgICAgYi0+aGVpZ2h0LCAzMiwgMCwgSTkxNV9U SUxJTkdfTk9ORSwgMCk7CisKKwlidWYtPnB0ciA9ICh2b2lkICopIGZyb21fdXNlcl9wb2ludGVy KHVzZXJwdHIudXNlcl9wdHIpOwogCi0JcmV0dXJuIGJvOworCXJldHVybiBidWY7CiB9CiAKIHN0 YXRpYyB2b2lkCi11c2VycHRyX3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2Jv ICpibywgdWludDMyX3QgdmFsKQordXNlcnB0cl9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0 cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewogCWludCBzaXplID0gYi0+bnBp eGVsczsKLQl1aW50MzJfdCAqdmFkZHIgPSBiby0+dmlydHVhbDsKKwl1aW50MzJfdCAqdmFkZHIg PSBidWYtPnB0cjsKIAotCWdlbV9zZXRfZG9tYWluKGZkLCBiby0+aGFuZGxlLAorCWdlbV9zZXRf ZG9tYWluKGZkLCBidWYtPmhhbmRsZSwKIAkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIEk5 MTVfR0VNX0RPTUFJTl9DUFUpOwogCXdoaWxlIChzaXplLS0pCiAJCSp2YWRkcisrID0gdmFsOwog fQogCiBzdGF0aWMgdm9pZAotdXNlcnB0cl9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9p bnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK3VzZXJwdHJfY21wX2JvKHN0cnVjdCBidWZmZXJz ICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKIAlpbnQgc2l6ZSA9 ICBiLT5ucGl4ZWxzOwotCXVpbnQzMl90ICp2YWRkciA9IGJvLT52aXJ0dWFsOworCXVpbnQzMl90 ICp2YWRkciA9IGJ1Zi0+cHRyOwogCi0JZ2VtX3NldF9kb21haW4oZmQsIGJvLT5oYW5kbGUsCisJ Z2VtX3NldF9kb21haW4oZmQsIGJ1Zi0+aGFuZGxlLAogCQkgICAgICAgSTkxNV9HRU1fRE9NQUlO X0NQVSwgMCk7CiAJd2hpbGUgKHNpemUtLSkKIAkJaWd0X2Fzc2VydF9lcV91MzIoKnZhZGRyKyss IHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkCi11c2VycHRyX3JlbGVhc2VfYm8oZHJtX2ludGVsX2Jv ICpibykKK3VzZXJwdHJfcmVsZWFzZV9ibyhzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7Ci0JaWd0 X2Fzc2VydChiby0+dmlydHVhbCk7CisJaWd0X2Fzc2VydChidWYtPnB0cik7CiAKLQltdW5tYXAo Ym8tPnZpcnR1YWwsIGJvLT5zaXplKTsKLQliby0+dmlydHVhbCA9IE5VTEw7CisJbXVubWFwKGJ1 Zi0+cHRyLCBidWYtPnN1cmZhY2VbMF0uc2l6ZSk7CiAKLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVu Y2UoYm8pOworCWludGVsX2J1Zl9kZXN0cm95KGJ1Zik7CiB9CiAKIHN0YXRpYyB2b2lkIGNyZWF0 ZV9kbWFidWZfcmVxdWlyZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVuc2lnbmVkIGNv dW50KQpAQCAtMzQ5LDEzICszNjksMTQgQEAgc3RydWN0IGRtYWJ1ZiB7CiAJdm9pZCAqbWFwOwog fTsKIAotc3RhdGljIGRybV9pbnRlbF9ibyAqCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqCiBk bWFidWZfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogewogCXN0cnVjdCBkcm1f cHJpbWVfaGFuZGxlIGFyZ3M7Ci0JZHJtX2ludGVsX2JvICpibzsKKwlzdGF0aWMgc3RydWN0IGlu dGVsX2J1ZiAqYnVmOwogCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZjsKIAlpbnQgc2l6ZTsKKwl1aW50 MzJfdCBoYW5kbGU7CiAKIAlzaXplID0gYi0+cGFnZV9zaXplOwogCkBAIC0zNjYsOSArMzg3LDEy IEBAIGRtYWJ1Zl9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiAKIAlkb19pb2N0 bChmZCwgRFJNX0lPQ1RMX1BSSU1FX0hBTkRMRV9UT19GRCwgJmFyZ3MpOwogCWdlbV9jbG9zZShm ZCwgYXJncy5oYW5kbGUpOworCWlndF9hc3NlcnQoYXJncy5mZCAhPSAtMSk7CiAKLQlibyA9IGRy bV9pbnRlbF9ib19nZW1fY3JlYXRlX2Zyb21fcHJpbWUoYi0+YnVmbWdyLCBhcmdzLmZkLCBzaXpl KTsKLQlpZ3RfYXNzZXJ0KGJvKTsKKwloYW5kbGUgPSBwcmltZV9mZF90b19oYW5kbGUoYnVmX29w c19nZXRfZmQoYi0+Ym9wcyksIGFyZ3MuZmQpOworCWJ1ZiA9IGNhbGxvYygxLCBzaXplb2YoKmJ1 ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShiLT5ib3BzLCBoYW5kbGUsIGJ1Ziwg Yi0+d2lkdGgsCisJCQkJICAgIGItPmhlaWdodCwgMzIsIDAsIEk5MTVfVElMSU5HX05PTkUsIDAp OwogCiAJZG1hYnVmID0gbWFsbG9jKHNpemVvZigqZG1hYnVmKSk7CiAJaWd0X2Fzc2VydChkbWFi dWYpOwpAQCAtMzc5LDE1ICs0MDMsMTUgQEAgZG1hYnVmX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3Qg YnVmZmVycyAqYikKIAkJCSAgIGRtYWJ1Zi0+ZmQsIDApOwogCWlndF9hc3NlcnQoZG1hYnVmLT5t YXAgIT0gKHZvaWQgKiktMSk7CiAKLQliby0+dmlydHVhbCA9IGRtYWJ1ZjsKKwlidWYtPnB0ciA9 ICh2b2lkICopIGRtYWJ1ZjsKIAotCXJldHVybiBibzsKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0 aWMgdm9pZAotZG1hYnVmX3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpi bywgdWludDMyX3QgdmFsKQorZG1hYnVmX3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0 IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwpCiB7Ci0Jc3RydWN0IGRtYWJ1ZiAqZG1hYnVm ID0gYm8tPnZpcnR1YWw7CisJc3RydWN0IGRtYWJ1ZiAqZG1hYnVmID0gKHZvaWQgKikgYnVmLT5w dHI7CiAJdWludDMyX3QgKnYgPSBkbWFidWYtPm1hcDsKIAlpbnQgeTsKIApAQCAtMzk4LDkgKzQy Miw5IEBAIGRtYWJ1Zl9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8s IHVpbnQzMl90IHZhbCkKIH0KIAogc3RhdGljIHZvaWQKLWRtYWJ1Zl9jbXBfYm8oc3RydWN0IGJ1 ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2RtYWJ1Zl9jbXBfYm8o c3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQog ewotCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9IGJvLT52aXJ0dWFsOworCXN0cnVjdCBkbWFidWYg KmRtYWJ1ZiA9ICh2b2lkICopIGJ1Zi0+cHRyOwogCXVpbnQzMl90ICp2ID0gZG1hYnVmLT5tYXA7 CiAJaW50IHk7CiAKQEAgLTQxMSwxNyArNDM1LDE2IEBAIGRtYWJ1Zl9jbXBfYm8oc3RydWN0IGJ1 ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKIH0KIAogc3RhdGljIHZv aWQKLWRtYWJ1Zl9yZWxlYXNlX2JvKGRybV9pbnRlbF9ibyAqYm8pCitkbWFidWZfcmVsZWFzZV9i byhzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7Ci0Jc3RydWN0IGRtYWJ1ZiAqZG1hYnVmID0gYm8t PnZpcnR1YWw7CisJc3RydWN0IGRtYWJ1ZiAqZG1hYnVmID0gKHZvaWQgKikgYnVmLT5wdHI7CiAJ aWd0X2Fzc2VydChkbWFidWYpOwogCi0JbXVubWFwKGRtYWJ1Zi0+bWFwLCBiby0+c2l6ZSk7CisJ bXVubWFwKGRtYWJ1Zi0+bWFwLCBidWYtPnN1cmZhY2VbMF0uc2l6ZSk7CiAJY2xvc2UoZG1hYnVm LT5mZCk7CiAJZnJlZShkbWFidWYpOwogCi0JYm8tPnZpcnR1YWwgPSBOVUxMOwotCWRybV9pbnRl bF9ib191bnJlZmVyZW5jZShibyk7CisJaW50ZWxfYnVmX2Rlc3Ryb3koYnVmKTsKIH0KIAogc3Rh dGljIGJvb2wgaGFzX3ByaW1lX2V4cG9ydChpbnQgX2ZkKQpAQCAtNDQ2LDEzICs0NjksMTQgQEAg c3RhdGljIHZvaWQgY3JlYXRlX2d0dF9yZXF1aXJlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0 ZSwgdW5zaWduZWQgY291bnQpCiAJZ2VtX3JlcXVpcmVfbWFwcGFibGVfZ2d0dChmZCk7CiB9CiAK LXN0YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBpbnRlbF9idWYgKgogdmdlbV9j cmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiB7CiAJc3RydWN0IGRybV9wcmltZV9o YW5kbGUgYXJnczsKLQlkcm1faW50ZWxfYm8gKmJvOworCXN0cnVjdCBpbnRlbF9idWYgKmJ1ZjsK IAlzdHJ1Y3QgdmdlbV9ibyB2Z2VtOwogCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZjsKKwl1aW50MzJf dCBoYW5kbGU7CiAKIAlpZ3RfYXNzZXJ0KHZnZW1fZHJ2ICE9IC0xKTsKIApAQCAtNDcwLDggKzQ5 NCwxMSBAQCB2Z2VtX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIAlnZW1fY2xv c2UodmdlbV9kcnYsIGFyZ3MuaGFuZGxlKTsKIAlpZ3RfYXNzZXJ0KGFyZ3MuZmQgIT0gLTEpOwog Ci0JYm8gPSBkcm1faW50ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9tX3ByaW1lKGItPmJ1Zm1nciwgYXJn cy5mZCwgdmdlbS5zaXplKTsKLQlpZ3RfYXNzZXJ0KGJvKTsKKwloYW5kbGUgPSBwcmltZV9mZF90 b19oYW5kbGUoYnVmX29wc19nZXRfZmQoYi0+Ym9wcyksIGFyZ3MuZmQpOworCWJ1ZiA9IGNhbGxv YygxLCBzaXplb2YoKmJ1ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShiLT5ib3Bz LCBoYW5kbGUsIGJ1ZiwKKwkJCQkgICAgdmdlbS53aWR0aCwgdmdlbS5oZWlnaHQsIHZnZW0uYnBw LAorCQkJCSAgICAwLCBJOTE1X1RJTElOR19OT05FLCAwKTsKIAogCWRtYWJ1ZiA9IG1hbGxvYyhz aXplb2YoKmRtYWJ1ZikpOwogCWlndF9hc3NlcnQoZG1hYnVmKTsKQEAgLTQ4Miw2NCArNTA5LDU4 IEBAIHZnZW1fY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogCQkJICAgZG1hYnVm LT5mZCwgMCk7CiAJaWd0X2Fzc2VydChkbWFidWYtPm1hcCAhPSAodm9pZCAqKS0xKTsKIAotCWJv LT52aXJ0dWFsID0gZG1hYnVmOworCWJ1Zi0+cHRyID0gKHZvaWQgKikgZG1hYnVmOwogCi0JcmV0 dXJuIGJvOworCXJldHVybiBidWY7CiB9CiAKIHN0YXRpYyB2b2lkCi1ndHRfc2V0X2JvKHN0cnVj dCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitndHRfc2V0X2Jv KHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkK IHsKLQl1aW50MzJfdCAqdmFkZHIgPSBiby0+dmlydHVhbDsKKwl1aW50MzJfdCAqdmFkZHIgPSBi dWYtPnB0cjsKKworCWdlbV9zZXRfZG9tYWluKGZkLCBidWYtPmhhbmRsZSwKKwkJICAgICAgIEk5 MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwogCi0JZHJtX2ludGVsX2dl bV9ib19zdGFydF9ndHRfYWNjZXNzKGJvLCB0cnVlKTsKIAlmb3IgKGludCB5ID0gMDsgeSA8IGIt PmhlaWdodDsgeSsrKQogCQl2YWRkcltwaXhlbCh5LCBiLT53aWR0aCldID0gdmFsOwogfQogCiBz dGF0aWMgdm9pZAotZ3R0X2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpi bywgdWludDMyX3QgdmFsKQorZ3R0X2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0ICBp bnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewotCXVpbnQzMl90ICp2YWRkciA9IGJvLT52 aXJ0dWFsOworCXVpbnQzMl90ICp2YWRkciA9IGJ1Zi0+cHRyOwogCiAJLyogR1RUIGFjY2VzcyBp cyBzbG93LiBTbyB3ZSBqdXN0IGNvbXBhcmUgYSBmZXcgcG9pbnRzICovCi0JZHJtX2ludGVsX2dl bV9ib19zdGFydF9ndHRfYWNjZXNzKGJvLCBmYWxzZSk7CisJZ2VtX3NldF9kb21haW4oZmQsIGJ1 Zi0+aGFuZGxlLAorCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7CisKIAlmb3IgKGlu dCB5ID0gMDsgeSA8IGItPmhlaWdodDsgeSsrKQogCQlpZ3RfYXNzZXJ0X2VxX3UzMih2YWRkcltw aXhlbCh5LCBiLT53aWR0aCldLCB2YWwpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLW1h cF9ibyhkcm1faW50ZWxfYm8gKmJvKQorc3RhdGljIHN0cnVjdCBpbnRlbF9idWYgKgorbWFwX2Jv KHN0cnVjdCBpbnRlbF9idWYgKmJ1ZikKIHsKIAkvKiBndHQgbWFwIGRvZXNuJ3QgaGF2ZSBhIHdy aXRlIHBhcmFtZXRlciwgc28ganVzdCBrZWVwIHRoZSBtYXBwaW5nCiAJICogYXJvdW5kICh0byBh dm9pZCB0aGUgc2V0X2RvbWFpbiB3aXRoIHRoZSBndHQgd3JpdGUgZG9tYWluIHNldCkgYW5kCiAJ ICogbWFudWFsbHkgdGVsbCB0aGUga2VybmVsIHdoZW4gd2Ugc3RhcnQgYWNjZXNzIHRoZSBndHQu ICovCi0JZG9fb3JfZGllKGRybV9pbnRlbF9nZW1fYm9fbWFwX2d0dChibykpOwotCi0JcmV0dXJu IGJvOwotfQotCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLXRpbGVfYm8oZHJtX2ludGVsX2JvICpi bywgaW50IHdpZHRoKQotewotCXVpbnQzMl90IHRpbGluZyA9IEk5MTVfVElMSU5HX1g7Ci0JdWlu dDMyX3Qgc3RyaWRlID0gd2lkdGggKiA0OwotCi0JZG9fb3JfZGllKGRybV9pbnRlbF9ib19zZXRf dGlsaW5nKGJvLCAmdGlsaW5nLCBzdHJpZGUpKTsKKwlidWYtPnB0ciA9IGdlbV9tbWFwX19ndHQo YnVmX29wc19nZXRfZmQoYnVmLT5ib3BzKSwgYnVmLT5oYW5kbGUsCisJCQkJIGJ1Zi0+c3VyZmFj ZVswXS5zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKIAotCXJldHVybiBibzsKKwlyZXR1 cm4gYnVmOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxf YnVmICoKIGd0dF9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiB7CiAJcmV0dXJu IG1hcF9ibyh1bm1hcHBlZF9jcmVhdGVfYm8oYikpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2Jv ICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKIGd0dFhfY3JlYXRlX2JvKGNvbnN0IHN0cnVj dCBidWZmZXJzICpiKQogewotCXJldHVybiB0aWxlX2JvKGd0dF9jcmVhdGVfYm8oYiksIGItPndp ZHRoKTsKKwlyZXR1cm4gbWFwX2JvKGNyZWF0ZV9ibyhiLCBJOTE1X1RJTElOR19YKSk7CiB9CiAK IHN0YXRpYyB2b2lkIGJpdDE3X3JlcXVpcmUodm9pZCkKQEAgLTU3NCw4NSArNTk1LDgzIEBAIHdj X2NyZWF0ZV9yZXF1aXJlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291 bnQpCiAJd2NfcmVxdWlyZSgpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBz dHJ1Y3QgaW50ZWxfYnVmICoKIHdjX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikK IHsKLQlkcm1faW50ZWxfYm8gKmJvOworCXN0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CiAK LQlibyA9IHVubWFwcGVkX2NyZWF0ZV9ibyhiKTsKLQliby0+dmlydHVhbCA9IGdlbV9tbWFwX193 YyhmZCwgYm8tPmhhbmRsZSwgMCwgYm8tPnNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwot CXJldHVybiBibzsKKwlidWYgPSB1bm1hcHBlZF9jcmVhdGVfYm8oYik7CisJYnVmLT5wdHIgPSBn ZW1fbW1hcF9fd2MoZmQsIGJ1Zi0+aGFuZGxlLCAwLCBidWYtPnN1cmZhY2VbMF0uc2l6ZSwKKwkJ CQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0aWMgdm9p ZAotd2NfcmVsZWFzZV9ibyhkcm1faW50ZWxfYm8gKmJvKQord2NfcmVsZWFzZV9ibyhzdHJ1Y3Qg aW50ZWxfYnVmICpidWYpCiB7Ci0JaWd0X2Fzc2VydChiby0+dmlydHVhbCk7CisJaWd0X2Fzc2Vy dChidWYtPnB0cik7CiAKLQltdW5tYXAoYm8tPnZpcnR1YWwsIGJvLT5zaXplKTsKLQliby0+dmly dHVhbCA9IE5VTEw7CisJbXVubWFwKGJ1Zi0+cHRyLCBidWYtPnN1cmZhY2VbMF0uc2l6ZSk7CisJ YnVmLT5wdHIgPSAwOwogCi0Jbm9wX3JlbGVhc2VfYm8oYm8pOworCW5vcF9yZWxlYXNlX2JvKGJ1 Zik7CiB9CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBpbnRlbF9idWYg KgogZ3B1X2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIHsKIAlyZXR1cm4gdW5t YXBwZWRfY3JlYXRlX2JvKGIpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBz dHJ1Y3QgaW50ZWxfYnVmICoKIGdwdVhfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpi KQogewotCXJldHVybiB0aWxlX2JvKGdwdV9jcmVhdGVfYm8oYiksIGItPndpZHRoKTsKKwlyZXR1 cm4gY3JlYXRlX2JvKGIsIEk5MTVfVElMSU5HX1gpOwogfQogCiBzdGF0aWMgdm9pZAotY3B1X3Nl dF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFsKQor Y3B1X3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50 MzJfdCB2YWwpCiB7CiAJaW50IHNpemUgPSBiLT5ucGl4ZWxzOwogCXVpbnQzMl90ICp2YWRkcjsK IAotCWRvX29yX2RpZShkcm1faW50ZWxfYm9fbWFwKGJvLCB0cnVlKSk7Ci0JdmFkZHIgPSBiby0+ dmlydHVhbDsKKwlpbnRlbF9idWZfY3B1X21hcChidWYsIHRydWUpOworCXZhZGRyID0gYnVmLT5w dHI7CiAJd2hpbGUgKHNpemUtLSkKIAkJKnZhZGRyKysgPSB2YWw7Ci0JZHJtX2ludGVsX2JvX3Vu bWFwKGJvKTsKKwlpbnRlbF9idWZfdW5tYXAoYnVmKTsKIH0KIAogc3RhdGljIHZvaWQKLWNwdV9j bXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkK K2NwdV9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWlu dDMyX3QgdmFsKQogewogCWludCBzaXplID0gYi0+bnBpeGVsczsKIAl1aW50MzJfdCAqdmFkZHI7 CiAKLQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX21hcChibywgZmFsc2UpKTsKLQl2YWRkciA9IGJv LT52aXJ0dWFsOworCWludGVsX2J1Zl9jcHVfbWFwKGJ1ZiwgZmFsc2UpOworCXZhZGRyID0gYnVm LT5wdHI7CiAJd2hpbGUgKHNpemUtLSkKIAkJaWd0X2Fzc2VydF9lcV91MzIoKnZhZGRyKyssIHZh bCk7Ci0JZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKKwlpbnRlbF9idWZfdW5tYXAoYnVmKTsKIH0K IAogc3RhdGljIHZvaWQKLWdwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsIGRybV9p bnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2dwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmJ1 ZmZlcnMsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewogCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY1sxXTsKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiBnZW1fZXhlY1syXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNi dWZmZXIyIGV4ZWNidWY7Ci0JdWludDMyX3QgYnVmWzEwXSwgKmI7Ci0JdWludDMyX3QgdGlsaW5n LCBzd2l6emxlOwotCi0JZHJtX2ludGVsX2JvX2dldF90aWxpbmcoYm8sICZ0aWxpbmcsICZzd2l6 emxlKTsKKwl1aW50MzJfdCB0bXBbMTBdLCAqYjsKIAogCW1lbXNldChyZWxvYywgMCwgc2l6ZW9m KHJlbG9jKSk7CiAJbWVtc2V0KGdlbV9leGVjLCAwLCBzaXplb2YoZ2VtX2V4ZWMpKTsKIAltZW1z ZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CiAKLQliID0gYnVmOworCWIgPSB0bXA7 CiAJKmIrKyA9IFhZX0NPTE9SX0JMVF9DTURfTk9MRU4gfAogCQkoKGdlbiA+PSA4KSA/IDUgOiA0 KSB8CiAJCUNPTE9SX0JMVF9XUklURV9BTFBIQSB8IFhZX0NPTE9SX0JMVF9XUklURV9SR0I7Ci0J aWYgKGdlbiA+PSA0ICYmIHRpbGluZykgeworCWlmIChnZW4gPj0gNCAmJiBidWYtPnRpbGluZykg ewogCQliWy0xXSB8PSBYWV9DT0xPUl9CTFRfVElMRUQ7CiAJCSpiID0gYnVmZmVycy0+d2lkdGg7 CiAJfSBlbHNlCkBAIC02NjAsOCArNjc5LDggQEAgZ3B1X3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAq YnVmZmVycywgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFsKQogCSpiKysgfD0gMHhmMCA8 PCAxNiB8IDEgPDwgMjUgfCAxIDw8IDI0OwogCSpiKysgPSAwOwogCSpiKysgPSBidWZmZXJzLT5o ZWlnaHQgPDwgMTYgfCBidWZmZXJzLT53aWR0aDsKLQlyZWxvY1swXS5vZmZzZXQgPSAoYiAtIGJ1 ZikgKiBzaXplb2YodWludDMyX3QpOwotCXJlbG9jWzBdLnRhcmdldF9oYW5kbGUgPSBiby0+aGFu ZGxlOworCXJlbG9jWzBdLm9mZnNldCA9IChiIC0gdG1wKSAqIHNpemVvZih1aW50MzJfdCk7CisJ cmVsb2NbMF0udGFyZ2V0X2hhbmRsZSA9IGJ1Zi0+aGFuZGxlOwogCXJlbG9jWzBdLnJlYWRfZG9t YWlucyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7CiAJcmVsb2NbMF0ud3JpdGVfZG9tYWluID0g STkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKIAkqYisrID0gMDsKQEAgLTY2OSwxMCArNjg4LDEwIEBA IGdwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsIGRybV9pbnRlbF9ibyAqYm8sIHVp bnQzMl90IHZhbCkKIAkJKmIrKyA9IDA7CiAJKmIrKyA9IHZhbDsKIAkqYisrID0gTUlfQkFUQ0hf QlVGRkVSX0VORDsKLQlpZiAoKGIgLSBidWYpICYgMSkKKwlpZiAoKGIgLSB0bXApICYgMSkKIAkJ KmIrKyA9IDA7CiAKLQlnZW1fZXhlY1swXS5oYW5kbGUgPSBiby0+aGFuZGxlOworCWdlbV9leGVj WzBdLmhhbmRsZSA9IGJ1Zi0+aGFuZGxlOwogCWdlbV9leGVjWzBdLmZsYWdzID0gRVhFQ19PQkpF Q1RfTkVFRFNfRkVOQ0U7CiAKIAlnZW1fZXhlY1sxXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0 MDk2KTsKQEAgLTY4MSwzMCArNzAwLDMwIEBAIGdwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmJ1 ZmZlcnMsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKIAogCWV4ZWNidWYuYnVmZmVy c19wdHIgPSB0b191c2VyX3BvaW50ZXIoZ2VtX2V4ZWMpOwogCWV4ZWNidWYuYnVmZmVyX2NvdW50 ID0gMjsKLQlleGVjYnVmLmJhdGNoX2xlbiA9IChiIC0gYnVmKSAqIHNpemVvZihidWZbMF0pOwor CWV4ZWNidWYuYmF0Y2hfbGVuID0gKGIgLSB0bXApICogc2l6ZW9mKHRtcFswXSk7CiAJaWYgKGdl biA+PSA2KQogCQlleGVjYnVmLmZsYWdzID0gSTkxNV9FWEVDX0JMVDsKIAotCWdlbV93cml0ZShm ZCwgZ2VtX2V4ZWNbMV0uaGFuZGxlLCAwLCBidWYsIGV4ZWNidWYuYmF0Y2hfbGVuKTsKKwlnZW1f d3JpdGUoZmQsIGdlbV9leGVjWzFdLmhhbmRsZSwgMCwgdG1wLCBleGVjYnVmLmJhdGNoX2xlbik7 CiAJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKIAogCWdlbV9jbG9zZShmZCwgZ2VtX2V4ZWNb MV0uaGFuZGxlKTsKIH0KIAogc3RhdGljIHZvaWQKLWdwdV9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMg KmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2dwdV9jbXBfYm8oc3RydWN0IGJ1 ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewotCWJsdF9j b3B5X2JvKGIsIGItPnNub29wLCBibyk7CisJYmx0X2NvcHlfYm8oYiwgYi0+c25vb3AsIGJ1Zik7 CiAJY3B1X2NtcF9ibyhiLCBiLT5zbm9vcCwgdmFsKTsKIH0KIAogc3RydWN0IGFjY2Vzc19tb2Rl IHsKIAljb25zdCBjaGFyICpuYW1lOwogCXZvaWQgKCpyZXF1aXJlKShjb25zdCBzdHJ1Y3QgY3Jl YXRlICosIHVuc2lnbmVkKTsKLQlkcm1faW50ZWxfYm8gKigqY3JlYXRlX2JvKShjb25zdCBzdHJ1 Y3QgYnVmZmVycyAqYik7Ci0Jdm9pZCAoKnNldF9ibykoc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9p bnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCk7Ci0Jdm9pZCAoKmNtcF9ibykoc3RydWN0IGJ1ZmZl cnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCk7Ci0Jdm9pZCAoKnJlbGVhc2Vf Ym8pKGRybV9pbnRlbF9ibyAqYm8pOworCXN0cnVjdCBpbnRlbF9idWYgKigqY3JlYXRlX2JvKShj b25zdCBzdHJ1Y3QgYnVmZmVycyAqYik7CisJdm9pZCAoKnNldF9ibykoc3RydWN0IGJ1ZmZlcnMg KmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKTsKKwl2b2lkICgqY21wX2Jv KShzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwp OworCXZvaWQgKCpyZWxlYXNlX2JvKShzdHJ1Y3QgaW50ZWxfYnVmICpidWYpOwogfTsKIGlndF9y ZW5kZXJfY29weWZ1bmNfdCByZW5kZXJjb3B5OwogCkBAIC03NDUsNyArNzY0LDcgQEAgc3RhdGlj IHZvaWQgYnVmZmVyc19pbml0KHN0cnVjdCBidWZmZXJzICpiLAogCQkJIGNvbnN0IHN0cnVjdCBh Y2Nlc3NfbW9kZSAqbW9kZSwKIAkJCSBjb25zdCBzdHJ1Y3Qgc2l6ZSAqc2l6ZSwKIAkJCSBpbnQg bnVtX2J1ZmZlcnMsCi0JCQkgaW50IF9mZCwgaW50IGVuYWJsZV9yZXVzZSkKKwkJCSBpbnQgX2Zk KQogewogCW1lbXNldChiLCAwLCBzaXplb2YoKmIpKTsKIAliLT5uYW1lID0gbmFtZTsKQEAgLTc2 MywxNyArNzgyLDEzIEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcnNfaW5pdChzdHJ1Y3QgYnVmZmVycyAq YiwKIAliLT50bXAgPSBtYWxsb2MoYi0+cGFnZV9zaXplKTsKIAlpZ3RfYXNzZXJ0KGItPnRtcCk7 CiAKLQliLT5idWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KF9mZCwgNDA5Nik7Ci0J aWd0X2Fzc2VydChiLT5idWZtZ3IpOworCWItPmJvcHMgPSBidWZfb3BzX2NyZWF0ZShfZmQpOwog Ci0JYi0+c3JjID0gbWFsbG9jKDIqc2l6ZW9mKGRybV9pbnRlbF9ibyAqKSpudW1fYnVmZmVycyk7 CisJYi0+c3JjID0gbWFsbG9jKDIqc2l6ZW9mKHN0cnVjdCBpbnRlbF9idWYgKikqbnVtX2J1ZmZl cnMpOwogCWlndF9hc3NlcnQoYi0+c3JjKTsKIAliLT5kc3QgPSBiLT5zcmMgKyBudW1fYnVmZmVy czsKIAotCWlmIChlbmFibGVfcmV1c2UpCi0JCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9y ZXVzZShiLT5idWZtZ3IpOwotCWItPmJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoYi0+ YnVmbWdyLCBkZXZpZCk7Ci0JaWd0X2Fzc2VydChiLT5iYXRjaCk7CisJYi0+aWJiID0gaW50ZWxf YmJfY3JlYXRlKF9mZCwgNDA5Nik7CiB9CiAKIHN0YXRpYyB2b2lkIGJ1ZmZlcnNfZGVzdHJveShz dHJ1Y3QgYnVmZmVycyAqYikKQEAgLTgwOSw3ICs4MjQsNyBAQCBzdGF0aWMgdm9pZCBidWZmZXJz X2Rlc3Ryb3koc3RydWN0IGJ1ZmZlcnMgKmIpCiBzdGF0aWMgdm9pZCBidWZmZXJzX2NyZWF0ZShz dHJ1Y3QgYnVmZmVycyAqYikKIHsKIAlpbnQgY291bnQgPSBiLT5udW1fYnVmZmVyczsKLQlpZ3Rf YXNzZXJ0KGItPmJ1Zm1ncik7CisJaWd0X2Fzc2VydChiLT5ib3BzKTsKIAogCWJ1ZmZlcnNfZGVz dHJveShiKTsKIAlpZ3RfYXNzZXJ0KGItPmNvdW50ID09IDApOwpAQCAtODIzLDIwICs4MzgsMTUg QEAgc3RhdGljIHZvaWQgYnVmZmVyc19jcmVhdGUoc3RydWN0IGJ1ZmZlcnMgKmIpCiAJYi0+c25v b3AgPSBzbm9vcF9jcmVhdGVfYm8oYik7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1ZmZlcnNfcmVzZXQo c3RydWN0IGJ1ZmZlcnMgKmIsIGJvb2wgZW5hYmxlX3JldXNlKQorc3RhdGljIHZvaWQgYnVmZmVy c19yZXNldChzdHJ1Y3QgYnVmZmVycyAqYikKIHsKLQliLT5idWZtZ3IgPSBkcm1faW50ZWxfYnVm bWdyX2dlbV9pbml0KGZkLCA0MDk2KTsKLQlpZ3RfYXNzZXJ0KGItPmJ1Zm1ncik7Ci0KLQlpZiAo ZW5hYmxlX3JldXNlKQotCQlkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoYi0+YnVm bWdyKTsKLQliLT5iYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGItPmJ1Zm1nciwgZGV2 aWQpOwotCWlndF9hc3NlcnQoYi0+YmF0Y2gpOworCWItPmJvcHMgPSBidWZfb3BzX2NyZWF0ZShm ZCk7CisJYi0+aWJiID0gaW50ZWxfYmJfY3JlYXRlKGZkLCA0MDk2KTsKIH0KIAogc3RhdGljIHZv aWQgYnVmZmVyc19maW5pKHN0cnVjdCBidWZmZXJzICpiKQogewotCWlmIChiLT5idWZtZ3IgPT0g TlVMTCkKKwlpZiAoYi0+Ym9wcyA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAlidWZmZXJzX2Rlc3Ry b3koYik7CkBAIC04NDQsNTggKzg1NCw0NyBAQCBzdGF0aWMgdm9pZCBidWZmZXJzX2Zpbmkoc3Ry dWN0IGJ1ZmZlcnMgKmIpCiAJZnJlZShiLT50bXApOwogCWZyZWUoYi0+c3JjKTsKIAotCWludGVs X2JhdGNoYnVmZmVyX2ZyZWUoYi0+YmF0Y2gpOwotCWRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShi LT5idWZtZ3IpOworCWludGVsX2JiX2Rlc3Ryb3koYi0+aWJiKTsKKwlidWZfb3BzX2Rlc3Ryb3ko Yi0+Ym9wcyk7CiAKIAltZW1zZXQoYiwgMCwgc2l6ZW9mKCpiKSk7CiB9CiAKLXR5cGVkZWYgdm9p ZCAoKmRvX2NvcHkpKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2lu dGVsX2JvICpzcmMpOwordHlwZWRlZiB2b2lkICgqZG9fY29weSkoc3RydWN0IGJ1ZmZlcnMgKmIs IHN0cnVjdCBpbnRlbF9idWYgKmRzdCwKKwkJCXN0cnVjdCBpbnRlbF9idWYgKnNyYyk7CiB0eXBl ZGVmIGlndF9oYW5nX3QgKCpkb19oYW5nKSh2b2lkKTsKIAotc3RhdGljIHZvaWQgcmVuZGVyX2Nv cHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxfYm8g KnNyYykKK3N0YXRpYyB2b2lkIHJlbmRlcl9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1 Y3QgaW50ZWxfYnVmICpkc3QsCisJCQkgICBzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpCiB7Ci0Jc3Ry dWN0IGlndF9idWYgZCA9IHsKLQkJLmJvID0gZHN0LAotCQkubnVtX3RpbGVzID0gYi0+bnBpeGVs cyAqIDQsCi0JCS5zdXJmYWNlWzBdID0gewotCQkJLnNpemUgPSBiLT5ucGl4ZWxzICogNCwgLnN0 cmlkZSA9IGItPndpZHRoICogNCwKLQkJfSwKLQkJLmJwcCA9IDMyLAotCX0sIHMgPSB7Ci0JCS5i byA9IHNyYywKLQkJLm51bV90aWxlcyA9IGItPm5waXhlbHMgKiA0LAotCQkuc3VyZmFjZVswXSA9 IHsKLQkJCS5zaXplID0gYi0+bnBpeGVscyAqIDQsIC5zdHJpZGUgPSBiLT53aWR0aCAqIDQsCi0J CX0sCi0JCS5icHAgPSAzMiwKLQl9OwotCXVpbnQzMl90IHN3aXp6bGU7Ci0KLQlkcm1faW50ZWxf Ym9fZ2V0X3RpbGluZyhkc3QsICZkLnRpbGluZywgJnN3aXp6bGUpOwotCWRybV9pbnRlbF9ib19n ZXRfdGlsaW5nKHNyYywgJnMudGlsaW5nLCAmc3dpenpsZSk7Ci0KLQlyZW5kZXJjb3B5KGItPmJh dGNoLCBOVUxMLAotCQkgICAmcywgMCwgMCwKKwlyZW5kZXJjb3B5KGItPmliYiwgMCwKKwkJICAg c3JjLCAwLCAwLAogCQkgICBiLT53aWR0aCwgYi0+aGVpZ2h0LAotCQkgICAmZCwgMCwgMCk7CisJ CSAgIGRzdCwgMCwgMCk7CisJaW50ZWxfYmJfc3luYyhiLT5pYmIpOworCWludGVsX2JiX3Jlc2V0 KGItPmliYiwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGJsdF9jb3B5X2JvKHN0cnVjdCBidWZm ZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2JvICpzcmMpCitzdGF0aWMgdm9p ZCBibHRfY29weV9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqZHN0LAor CQkJc3RydWN0IGludGVsX2J1ZiAqc3JjKQogewotCWludGVsX2JsdF9jb3B5KGItPmJhdGNoLAor CWludGVsX2JiX2JsdF9jb3B5KGItPmliYiwKIAkJICAgICAgIHNyYywgMCwgMCwgNCpiLT53aWR0 aCwKIAkJICAgICAgIGRzdCwgMCwgMCwgNCpiLT53aWR0aCwKIAkJICAgICAgIGItPndpZHRoLCBi LT5oZWlnaHQsIDMyKTsKKwlpbnRlbF9iYl9zeW5jKGItPmliYik7CisJaW50ZWxfYmJfcmVzZXQo Yi0+aWJiLCB0cnVlKTsKIH0KIAotc3RhdGljIHZvaWQgY3B1X2NvcHlfYm8oc3RydWN0IGJ1ZmZl cnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxfYm8gKnNyYykKK3N0YXRpYyB2b2lk IGNwdV9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJ CQlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpCiB7CiAJY29uc3QgaW50IHNpemUgPSBiLT5wYWdlX3Np emU7CiAJdm9pZCAqZCwgKnM7CiAKIAlnZW1fc2V0X2RvbWFpbihmZCwgc3JjLT5oYW5kbGUsIEk5 MTVfR0VNX0RPTUFJTl9DUFUsIDApOwotCWdlbV9zZXRfZG9tYWluKGZkLCBkc3QtPmhhbmRsZSwg STkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7CisJZ2VtX3NldF9kb21h aW4oZmQsIGRzdC0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLAorCQkgICAgICAgSTkxNV9H RU1fRE9NQUlOX0NQVSk7CiAJcyA9IGdlbV9tbWFwX19jcHUoZmQsIHNyYy0+aGFuZGxlLCAwLCBz aXplLCBQUk9UX1JFQUQpOwogCWQgPSBnZW1fbW1hcF9fY3B1KGZkLCBkc3QtPmhhbmRsZSwgMCwg c2l6ZSwgUFJPVF9XUklURSk7CiAKQEAgLTkwNSwxMyArOTA0LDE1IEBAIHN0YXRpYyB2b2lkIGNw dV9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVs X2JvICpzcmMpCiAJbXVubWFwKHMsIHNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBndHRfY29weV9i byhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpkc3QsIGRybV9pbnRlbF9ibyAqc3Jj KQorc3RhdGljIHZvaWQgZ3R0X2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRl bF9idWYgKmRzdCwKKwkJCXN0cnVjdCBpbnRlbF9idWYgKnNyYykKIHsKIAljb25zdCBpbnQgc2l6 ZSA9IGItPnBhZ2Vfc2l6ZTsKIAl2b2lkICpkLCAqczsKIAogCWdlbV9zZXRfZG9tYWluKGZkLCBz cmMtPmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7Ci0JZ2VtX3NldF9kb21haW4oZmQs IGRzdC0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsK KwlnZW1fc2V0X2RvbWFpbihmZCwgZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9HVFQsCisJ CSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RUKTsKIAogCXMgPSBnZW1fbW1hcF9fZ3R0KGZkLCBz cmMtPmhhbmRsZSwgc2l6ZSwgUFJPVF9SRUFEKTsKIAlkID0gZ2VtX21tYXBfX2d0dChmZCwgZHN0 LT5oYW5kbGUsIHNpemUsIFBST1RfV1JJVEUpOwpAQCAtOTIyLDEzICs5MjMsMTUgQEAgc3RhdGlj IHZvaWQgZ3R0X2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBk cm1faW50ZWxfYm8gKnNyYykKIAltdW5tYXAocywgc2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdj X2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxf Ym8gKnNyYykKK3N0YXRpYyB2b2lkIHdjX2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVj dCBpbnRlbF9idWYgKmRzdCwKKwkJICAgICAgIHN0cnVjdCBpbnRlbF9idWYgKnNyYykKIHsKIAlj b25zdCBpbnQgc2l6ZSA9IGItPnBhZ2Vfc2l6ZTsKIAl2b2lkICpkLCAqczsKIAogCWdlbV9zZXRf ZG9tYWluKGZkLCBzcmMtPmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX1dDLCAwKTsKLQlnZW1fc2V0 X2RvbWFpbihmZCwgZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9XQywgSTkxNV9HRU1fRE9N QUlOX1dDKTsKKwlnZW1fc2V0X2RvbWFpbihmZCwgZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJ Tl9XQywKKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9XQyk7CiAKIAlzID0gZ2VtX21tYXBfX3dj KGZkLCBzcmMtPmhhbmRsZSwgMCwgc2l6ZSwgUFJPVF9SRUFEKTsKIAlkID0gZ2VtX21tYXBfX3dj KGZkLCBkc3QtPmhhbmRsZSwgMCwgc2l6ZSwgUFJPVF9XUklURSk7CkBAIC0xMzM1LDcgKzEzMzgs NyBAQCBzdGF0aWMgdm9pZCBydW5fY2hpbGQoc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsCiAJCSAg ICAgIGRvX2hhbmcgZG9faGFuZ19mdW5jKQogCiB7Ci0JLyogV2UgaW5oZXJpdCB0aGUgYnVmZmVy cyBmcm9tIHRoZSBwYXJlbnQsIGJ1dCB0aGUgYnVmbWdyL2JhdGNoCisJLyogV2UgaW5oZXJpdCB0 aGUgYnVmZmVycyBmcm9tIHRoZSBwYXJlbnQsIGJ1dCB0aGUgYm9wcy9pbnRlbF9iYgogCSAqIG5l ZWRzIHRvIGJlIGxvY2FsIGFzIHRoZSBjYWNoZSBvZiByZXVzYWJsZSBpdHNlbGYgd2lsbCBiZSBD T1dlZCwKIAkgKiBsZWFkaW5nIHRvIHRoZSBjaGlsZCBjbG9zaW5nIGFuIG9iamVjdCB3aXRob3V0 IHRoZSBwYXJlbnQga25vd2luZy4KIAkgKi8KQEAgLTEzNTMsMTAgKzEzNTYsMTAgQEAgc3RhdGlj IHZvaWQgX19ydW5fZm9ya2VkKHN0cnVjdCBidWZmZXJzICpidWZmZXJzLAogCQkJIGRvX2hhbmcg ZG9faGFuZ19mdW5jKQogCiB7Ci0JLyogcHVyZ2UgdGhlIGxpYmRybSBjYWNoZXMgYmVmb3JlIGNs b2luZyB0aGUgcHJvY2VzcyAqLworCS8qIHB1cmdlIHRoZSBjYWNoZXMgYmVmb3JlIGNsb2luZyB0 aGUgcHJvY2VzcyAqLwogCWJ1ZmZlcnNfZGVzdHJveShidWZmZXJzKTsKLQlpbnRlbF9iYXRjaGJ1 ZmZlcl9mcmVlKGJ1ZmZlcnMtPmJhdGNoKTsKLQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koYnVm ZmVycy0+YnVmbWdyKTsKKwlpbnRlbF9iYl9kZXN0cm95KGJ1ZmZlcnMtPmliYik7CisJYnVmX29w c19kZXN0cm95KGJ1ZmZlcnMtPmJvcHMpOwogCiAJaWd0X2ZvcmsoY2hpbGQsIG51bV9jaGlsZHJl bikgewogCQlpbnQgbnVtX2J1ZmZlcnM7CkBAIC0xMzY5LDcgKzEzNzIsNyBAQCBzdGF0aWMgdm9p ZCBfX3J1bl9mb3JrZWQoc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsCiAJCWlmIChudW1fYnVmZmVy cyA8IGJ1ZmZlcnMtPm51bV9idWZmZXJzKQogCQkJYnVmZmVycy0+bnVtX2J1ZmZlcnMgPSBudW1f YnVmZmVyczsKIAotCQlidWZmZXJzX3Jlc2V0KGJ1ZmZlcnMsIHRydWUpOworCQlidWZmZXJzX3Jl c2V0KGJ1ZmZlcnMpOwogCQlidWZmZXJzX2NyZWF0ZShidWZmZXJzKTsKIAogCQlpZ3Rfd2hpbGVf aW50ZXJydXB0aWJsZShpbnRlcnJ1cHQpIHsKQEAgLTEzODIsNyArMTM4NSw3IEBAIHN0YXRpYyB2 b2lkIF9fcnVuX2ZvcmtlZChzdHJ1Y3QgYnVmZmVycyAqYnVmZmVycywKIAlpZ3Rfd2FpdGNoaWxk cmVuKCk7CiAJaWd0X2Fzc2VydF9lcShpbnRlbF9kZXRlY3RfYW5kX2NsZWFyX21pc3NlZF9pbnRl cnJ1cHRzKGZkKSwgMCk7CiAKLQlidWZmZXJzX3Jlc2V0KGJ1ZmZlcnMsIHRydWUpOworCWJ1ZmZl cnNfcmVzZXQoYnVmZmVycyk7CiB9CiAKIHN0YXRpYyB2b2lkIHJ1bl9mb3JrZWQoc3RydWN0IGJ1 ZmZlcnMgKmJ1ZmZlcnMsCkBAIC0xNDU5LDggKzE0NjIsNyBAQCBydW5fbW9kZShjb25zdCBjaGFy ICpwcmVmaXgsCiAKIAlpZ3RfZml4dHVyZQogCQlidWZmZXJzX2luaXQoJmJ1ZmZlcnMsIHByZWZp eCwgY3JlYXRlLCBtb2RlLAotCQkJICAgICBzaXplLCBudW1fYnVmZmVycywKLQkJCSAgICAgZmQs IHJ1bl93cmFwX2Z1bmMgIT0gcnVuX2NoaWxkKTsKKwkJCSAgICAgc2l6ZSwgbnVtX2J1ZmZlcnMs IGZkKTsKIAogCWZvciAoaCA9IGhhbmdzOyBoLT5zdWZmaXg7IGgrKykgewogCQlpZiAoIWFsbCAm JiAqaC0+c3VmZml4KQpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcHBndHQuYyBiL3Rlc3Rz L2k5MTUvZ2VtX3BwZ3R0LmMKaW5kZXggOGMwMmU0YWYuLmQ1NmU4MDhlIDEwMDY0NAotLS0gYS90 ZXN0cy9pOTE1L2dlbV9wcGd0dC5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3BwZ3R0LmMKQEAgLTM4 LDU2ICszOCw0NiBAQAogI2luY2x1ZGUgImk5MTUvZ2VtLmgiCiAjaW5jbHVkZSAiaWd0LmgiCiAj aW5jbHVkZSAiaWd0X2RlYnVnZnMuaCIKLSNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKIAogI2Rl ZmluZSBXSURUSCA1MTIKICNkZWZpbmUgU1RSSURFIChXSURUSCo0KQogI2RlZmluZSBIRUlHSFQg NTEyCiAjZGVmaW5lIFNJWkUgKEhFSUdIVCpTVFJJREUpCiAKLXN0YXRpYyBkcm1faW50ZWxfYm8g KmNyZWF0ZV9ibyhkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCi0JCQkgICAgICAgdWludDMyX3Qg cGl4ZWwpCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqY3JlYXRlX2JvKHN0cnVjdCBidWZfb3Bz ICpib3BzLCB1aW50MzJfdCBwaXhlbCkKIHsKIAl1aW50NjRfdCB2YWx1ZSA9ICh1aW50NjRfdClw aXhlbCA8PCAzMiB8IHBpeGVsLCAqdjsKLQlkcm1faW50ZWxfYm8gKmJvOworCXN0cnVjdCBpbnRl bF9idWYgKmJ1ZjsKIAotCWJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwgInN1cmZhY2Ui LCBTSVpFLCA0MDk2KTsKLQlpZ3RfYXNzZXJ0KGJvKTsKKwlidWYgPSBpbnRlbF9idWZfY3JlYXRl KGJvcHMsIFdJRFRILCBIRUlHSFQsIDMyLCAwLCBJOTE1X1RJTElOR19OT05FLCAwKTsKKwl2ID0g aW50ZWxfYnVmX2NwdV9tYXAoYnVmLCAxKTsKIAotCWRvX29yX2RpZShkcm1faW50ZWxfYm9fbWFw KGJvLCAxKSk7Ci0JdiA9IGJvLT52aXJ0dWFsOwogCWZvciAoaW50IGkgPSAwOyBpIDwgU0laRSAv IHNpemVvZih2YWx1ZSk7IGkgKz0gOCkgewogCQl2W2kgKyAwXSA9IHZhbHVlOyB2W2kgKyAxXSA9 IHZhbHVlOwogCQl2W2kgKyAyXSA9IHZhbHVlOyB2W2kgKyAzXSA9IHZhbHVlOwogCQl2W2kgKyA0 XSA9IHZhbHVlOyB2W2kgKyA1XSA9IHZhbHVlOwogCQl2W2kgKyA2XSA9IHZhbHVlOyB2W2kgKyA3 XSA9IHZhbHVlOwogCX0KLQlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOworCWludGVsX2J1Zl91bm1h cChidWYpOwogCi0JcmV0dXJuIGJvOworCXJldHVybiBidWY7CiB9CiAKLXN0YXRpYyB2b2lkIHNj cmF0Y2hfYnVmX2luaXQoc3RydWN0IGlndF9idWYgKmJ1ZiwKLQkJCSAgICAgZHJtX2ludGVsX2J1 Zm1nciAqYnVmbWdyLAotCQkJICAgICB1aW50MzJfdCBwaXhlbCkKK3N0YXRpYyB2b2lkIGNsZWFu dXBfYnVmcyhzdHJ1Y3QgaW50ZWxfYnVmICoqYnVmLCBpbnQgY291bnQpCiB7Ci0JbWVtc2V0KGJ1 ZiwgMCwgc2l6ZW9mKCpidWYpKTsKKwlmb3IgKGludCBjaGlsZCA9IDA7IGNoaWxkIDwgY291bnQ7 IGNoaWxkKyspIHsKKwkJc3RydWN0IGJ1Zl9vcHMgKmJvcHMgPSBidWZbY2hpbGRdLT5ib3BzOwor CQlpbnQgZmQgPSBidWZfb3BzX2dldF9mZChidWZbY2hpbGRdLT5ib3BzKTsKIAotCWJ1Zi0+Ym8g PSBjcmVhdGVfYm8oYnVmbWdyLCBwaXhlbCk7Ci0JYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IFNU UklERTsKLQlidWYtPnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Ci0JYnVmLT5zdXJmYWNlWzBd LnNpemUgPSBTSVpFOwotCWJ1Zi0+YnBwID0gMzI7Ci19CisJCWludGVsX2J1Zl9kZXN0cm95KGJ1 ZltjaGlsZF0pOworCQlidWZfb3BzX2Rlc3Ryb3koYm9wcyk7CisJCWNsb3NlKGZkKTsKKwl9CiAK LXN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2Zpbmkoc3RydWN0IGlndF9idWYgKmJ1ZikKLXsKLQlk cm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoYnVmLT5ibyk7Ci0JbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9m KCpidWYpKTsKIH0KIAogc3RhdGljIHZvaWQgZm9ya19yY3NfY29weShpbnQgdGltZW91dCwgdWlu dDMyX3QgZmluYWwsCi0JCQkgIGRybV9pbnRlbF9ibyAqKmRzdCwgaW50IGNvdW50LAorCQkJICBz dHJ1Y3QgaW50ZWxfYnVmICoqZHN0LCBpbnQgY291bnQsCiAJCQkgIHVuc2lnbmVkIGZsYWdzKQog I2RlZmluZSBDUkVBVEVfQ09OVEVYVCAweDEKIHsKQEAgLTEwMiwyMSArOTIsMTMgQEAgc3RhdGlj IHZvaWQgZm9ya19yY3NfY29weShpbnQgdGltZW91dCwgdWludDMyX3QgZmluYWwsCiAKIAlmb3Ig KGludCBjaGlsZCA9IDA7IGNoaWxkIDwgY291bnQ7IGNoaWxkKyspIHsKIAkJaW50IGZkID0gZHJt X29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Ci0JCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsK KwkJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CiAKIAkJZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2Rldmlk KGZkKTsKIAotCQlidWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGZkLCA0MDk2KTsK LQkJaWd0X2Fzc2VydChidWZtZ3IpOwotCi0JCWRzdFtjaGlsZF0gPSBjcmVhdGVfYm8oYnVmbWdy LCB+MCk7CisJCWJvcHMgPSBidWZfb3BzX2NyZWF0ZShmZCk7CiAKLQkJaWYgKGZsYWdzICYgQ1JF QVRFX0NPTlRFWFQpIHsKLQkJCWRybV9pbnRlbF9jb250ZXh0ICpjdHg7Ci0KLQkJCWN0eCA9IGRy bV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoZHN0W2NoaWxkXS0+YnVmbWdyKTsKLQkJCWlndF9y ZXF1aXJlKGN0eCk7Ci0JCX0KKwkJZHN0W2NoaWxkXSA9IGNyZWF0ZV9ibyhib3BzLCB+MCk7CiAK IAkJcmVuZGVyX2NvcHkgPSBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhkZXZpZCk7CiAJCWlndF9y ZXF1aXJlX2YocmVuZGVyX2NvcHksCkBAIC0xMjQsMTEzICsxMDYsMTA2IEBAIHN0YXRpYyB2b2lk IGZvcmtfcmNzX2NvcHkoaW50IHRpbWVvdXQsIHVpbnQzMl90IGZpbmFsLAogCX0KIAogCWlndF9m b3JrKGNoaWxkLCBjb3VudCkgewotCQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwot CQlzdHJ1Y3QgaWd0X2J1ZiBidWYgPSB7fTsKLQkJc3RydWN0IGlndF9idWYgc3JjOworCQlzdHJ1 Y3QgaW50ZWxfYmIgKmliYjsKKwkJdWludDMyX3QgY3R4ID0gMDsKKwkJc3RydWN0IGludGVsX2J1 ZiAqc3JjOwogCQl1bnNpZ25lZCBsb25nIGk7CiAKLQkJYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZl cl9hbGxvYyhkc3RbY2hpbGRdLT5idWZtZ3IsCi0JCQkJCQlkZXZpZCk7Ci0JCWlndF9hc3NlcnQo YmF0Y2gpOwotCi0JCWlmIChmbGFncyAmIENSRUFURV9DT05URVhUKSB7Ci0JCQlkcm1faW50ZWxf Y29udGV4dCAqY3R4OworCQlpYmIgPSBpbnRlbF9iYl9jcmVhdGUoYnVmX29wc19nZXRfZmQoZHN0 W2NoaWxkXS0+Ym9wcyksIDQwOTYpOwogCi0JCQljdHggPSBkcm1faW50ZWxfZ2VtX2NvbnRleHRf Y3JlYXRlKGRzdFtjaGlsZF0tPmJ1Zm1ncik7Ci0JCQlpbnRlbF9iYXRjaGJ1ZmZlcl9zZXRfY29u dGV4dChiYXRjaCwgY3R4KTsKLQkJfQotCi0JCWJ1Zi5ibyA9IGRzdFtjaGlsZF07Ci0JCWJ1Zi5z dXJmYWNlWzBdLnN0cmlkZSA9IFNUUklERTsKLQkJYnVmLnRpbGluZyA9IEk5MTVfVElMSU5HX05P TkU7Ci0JCWJ1Zi5zdXJmYWNlWzBdLnNpemUgPSBTSVpFOwotCQlidWYuYnBwID0gMzI7CisJCWlm IChmbGFncyAmIENSRUFURV9DT05URVhUKQorCQkJY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGJ1 Zl9vcHNfZ2V0X2ZkKGRzdFtjaGlsZF0tPmJvcHMpKTsKIAogCQlpID0gMDsKIAkJaWd0X3VudGls X3RpbWVvdXQodGltZW91dCkgewotCQkJc2NyYXRjaF9idWZfaW5pdCgmc3JjLCBkc3RbY2hpbGRd LT5idWZtZ3IsCi0JCQkJCSBpKysgfCBjaGlsZCA8PCAxNik7Ci0JCQlyZW5kZXJfY29weShiYXRj aCwgTlVMTCwKLQkJCQkgICAgJnNyYywgMCwgMCwKKwkJCXNyYyA9IGNyZWF0ZV9ibyhkc3RbY2hp bGRdLT5ib3BzLAorCQkJCQlpKysgfCBjaGlsZCA8PCAxNik7CisJCQlyZW5kZXJfY29weShpYmIs IGN0eCwKKwkJCQkgICAgc3JjLCAwLCAwLAogCQkJCSAgICBXSURUSCwgSEVJR0hULAotCQkJCSAg ICAmYnVmLCAwLCAwKTsKLQkJCXNjcmF0Y2hfYnVmX2ZpbmkoJnNyYyk7CisJCQkJICAgIGRzdFtj aGlsZF0sIDAsIDApOworCisJCQlpbnRlbF9idWZfZGVzdHJveShzcmMpOwogCQl9CiAKLQkJc2Ny YXRjaF9idWZfaW5pdCgmc3JjLCBkc3RbY2hpbGRdLT5idWZtZ3IsCi0JCQkJIGZpbmFsIHwgY2hp bGQgPDwgMTYpOwotCQlyZW5kZXJfY29weShiYXRjaCwgTlVMTCwKLQkJCSAgICAmc3JjLCAwLCAw LAorCQlzcmMgPSBjcmVhdGVfYm8oZHN0W2NoaWxkXS0+Ym9wcywKKwkJCQlmaW5hbCB8IGNoaWxk IDw8IDE2KTsKKwkJcmVuZGVyX2NvcHkoaWJiLCBjdHgsCisJCQkgICAgc3JjLCAwLCAwLAogCQkJ ICAgIFdJRFRILCBIRUlHSFQsCi0JCQkgICAgJmJ1ZiwgMCwgMCk7Ci0JCXNjcmF0Y2hfYnVmX2Zp bmkoJnNyYyk7CisJCQkgICAgZHN0W2NoaWxkXSwgMCwgMCk7CisJCWludGVsX2JiX3N5bmMoaWJi KTsKKworCQlpbnRlbF9idWZfZGVzdHJveShzcmMpOworCisJCWludGVsX2JiX2Rlc3Ryb3koaWJi KTsKIAl9CiB9CiAKIHN0YXRpYyB2b2lkIGZvcmtfYmNzX2NvcHkoaW50IHRpbWVvdXQsIHVpbnQz Ml90IGZpbmFsLAotCQkJICBkcm1faW50ZWxfYm8gKipkc3QsIGludCBjb3VudCkKKwkJCSAgc3Ry dWN0IGludGVsX2J1ZiAqKmRzdCwgaW50IGNvdW50KQogewotCWludCBkZXZpZDsKLQogCWZvciAo aW50IGNoaWxkID0gMDsgY2hpbGQgPCBjb3VudDsgY2hpbGQrKykgewotCQlkcm1faW50ZWxfYnVm bWdyICpidWZtZ3I7CisJCXN0cnVjdCBidWZfb3BzICpib3BzOwogCQlpbnQgZmQgPSBkcm1fb3Bl bl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKIAotCQlkZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQo ZmQpOwotCi0JCWJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZmQsIDQwOTYpOwot CQlpZ3RfYXNzZXJ0KGJ1Zm1ncik7Ci0KLQkJZHN0W2NoaWxkXSA9IGNyZWF0ZV9ibyhidWZtZ3Is IH4wKTsKKwkJYm9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGZkKTsKKwkJZHN0W2NoaWxkXSA9IGNyZWF0 ZV9ibyhib3BzLCB+MCk7CiAJfQogCiAJaWd0X2ZvcmsoY2hpbGQsIGNvdW50KSB7Ci0JCXN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0JCWRybV9pbnRlbF9ibyAqc3JjWzJdOworCQlz dHJ1Y3QgaW50ZWxfYnVmICpzcmNbMl07CisJCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwogCQl1bnNp Z25lZCBsb25nIGk7CiAKLQotCQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRzdFtj aGlsZF0tPmJ1Zm1nciwKLQkJCQkJCWRldmlkKTsKLQkJaWd0X2Fzc2VydChiYXRjaCk7CisJCWli YiA9IGludGVsX2JiX2NyZWF0ZShidWZfb3BzX2dldF9mZChkc3RbY2hpbGRdLT5ib3BzKSwgNDA5 Nik7CiAKIAkJaSA9IDA7CiAJCWlndF91bnRpbF90aW1lb3V0KHRpbWVvdXQpIHsKLQkJCXNyY1sw XSA9IGNyZWF0ZV9ibyhkc3RbY2hpbGRdLT5idWZtZ3IsCisJCQlzcmNbMF0gPSBjcmVhdGVfYm8o ZHN0W2NoaWxkXS0+Ym9wcywKIAkJCQkJICAgfjApOwotCQkJc3JjWzFdID0gY3JlYXRlX2JvKGRz dFtjaGlsZF0tPmJ1Zm1nciwKKwkJCXNyY1sxXSA9IGNyZWF0ZV9ibyhkc3RbY2hpbGRdLT5ib3Bz LAogCQkJCQkgICBpKysgfCBjaGlsZCA8PCAxNik7CiAKLQkJCWludGVsX2NvcHlfYm8oYmF0Y2gs IHNyY1swXSwgc3JjWzFdLCBTSVpFKTsKLQkJCWludGVsX2NvcHlfYm8oYmF0Y2gsIGRzdFtjaGls ZF0sIHNyY1swXSwgU0laRSk7CisJCQlpbnRlbF9iYl9ibHRfY29weShpYmIsIHNyY1sxXSwgMCwg MCwgNDA5NiwKKwkJCQkJICBzcmNbMF0sIDAsIDAsIDQwOTYsCisJCQkJCSAgNDA5Ni80LCBTSVpF LzQwOTYsIDMyKTsKKwkJCWludGVsX2JiX2JsdF9jb3B5KGliYiwgc3JjWzBdLCAwLCAwLCA0MDk2 LAorCQkJCQkgIGRzdFtjaGlsZF0sIDAsIDAsIDQwOTYsCisJCQkJCSAgNDA5Ni80LCBTSVpFLzQw OTYsIDMyKTsKIAotCQkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKHNyY1sxXSk7Ci0JCQlkcm1f aW50ZWxfYm9fdW5yZWZlcmVuY2Uoc3JjWzBdKTsKKwkJCWludGVsX2J1Zl9kZXN0cm95KHNyY1sx XSk7CisJCQlpbnRlbF9idWZfZGVzdHJveShzcmNbMF0pOwogCQl9CiAKLQkJc3JjWzBdID0gY3Jl YXRlX2JvKGRzdFtjaGlsZF0tPmJ1Zm1nciwKLQkJCQkgICB+MCk7Ci0JCXNyY1sxXSA9IGNyZWF0 ZV9ibyhkc3RbY2hpbGRdLT5idWZtZ3IsCisJCXNyY1swXSA9IGNyZWF0ZV9ibyhkc3RbY2hpbGRd LT5ib3BzLCB+MCk7CisJCXNyY1sxXSA9IGNyZWF0ZV9ibyhkc3RbY2hpbGRdLT5ib3BzLAogCQkJ CSAgIGZpbmFsIHwgY2hpbGQgPDwgMTYpOwogCi0JCWludGVsX2NvcHlfYm8oYmF0Y2gsIHNyY1sw XSwgc3JjWzFdLCBTSVpFKTsKLQkJaW50ZWxfY29weV9ibyhiYXRjaCwgZHN0W2NoaWxkXSwgc3Jj WzBdLCBTSVpFKTsKKwkJaW50ZWxfYmJfYmx0X2NvcHkoaWJiLCBzcmNbMV0sIDAsIDAsIDQwOTYs CisJCQkJICBzcmNbMF0sIDAsIDAsIDQwOTYsCisJCQkJICA0MDk2LzQsIFNJWkUvNDA5NiwgMzIp OworCQlpbnRlbF9iYl9ibHRfY29weShpYmIsIHNyY1swXSwgMCwgMCwgNDA5NiwKKwkJCQkgIGRz dFtjaGlsZF0sIDAsIDAsIDQwOTYsCisJCQkJICA0MDk2LzQsIFNJWkUvNDA5NiwgMzIpOworCQlp bnRlbF9iYl9zeW5jKGliYik7CisKKwkJaW50ZWxfYnVmX2Rlc3Ryb3koc3JjWzFdKTsKKwkJaW50 ZWxfYnVmX2Rlc3Ryb3koc3JjWzBdKTsKIAotCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2Uoc3Jj WzFdKTsKLQkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKHNyY1swXSk7CisJCWludGVsX2JiX2Rl c3Ryb3koaWJiKTsKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIHN1cmZhY2VzX2NoZWNrKGRybV9pbnRl bF9ibyAqKmJvLCBpbnQgY291bnQsIHVpbnQzMl90IGV4cGVjdGVkKQorc3RhdGljIHZvaWQgc3Vy ZmFjZXNfY2hlY2soc3RydWN0IGludGVsX2J1ZiAqKmJ1ZiwgaW50IGNvdW50LCB1aW50MzJfdCBl eHBlY3RlZCkKIHsKIAlmb3IgKGludCBjaGlsZCA9IDA7IGNoaWxkIDwgY291bnQ7IGNoaWxkKysp IHsKIAkJdWludDMyX3QgKnB0cjsKIAotCQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX21hcChib1tj aGlsZF0sIDApKTsKLQkJcHRyID0gYm9bY2hpbGRdLT52aXJ0dWFsOworCQlwdHIgPSBpbnRlbF9i dWZfY3B1X21hcChidWZbY2hpbGRdLCAwKTsKIAkJZm9yIChpbnQgaiA9IDA7IGogPCBTSVpFLzQ7 IGorKykKIAkJCWlndF9hc3NlcnRfZXEocHRyW2pdLCBleHBlY3RlZCB8IGNoaWxkIDw8IDE2KTsK LQkJZHJtX2ludGVsX2JvX3VubWFwKGJvW2NoaWxkXSk7CisJCWludGVsX2J1Zl91bm1hcChidWZb Y2hpbGRdKTsKIAl9CiB9CiAKQEAgLTMwMSw3ICsyNzYsNyBAQCBpZ3RfbWFpbgogCX0KIAogCWln dF9zdWJ0ZXN0KCJibHQtdnMtcmVuZGVyLWN0eDAiKSB7Ci0JCWRybV9pbnRlbF9ibyAqYmNzWzFd LCAqcmNzW05fQ0hJTERdOworCQlzdHJ1Y3QgaW50ZWxfYnVmICpiY3NbMV0sICpyY3NbTl9DSElM RF07CiAKIAkJZm9ya19iY3NfY29weSgzMCwgMHg0MDAwLCBiY3MsIDEpOwogCQlmb3JrX3Jjc19j b3B5KDMwLCAweDgwMDAgLyBOX0NISUxELCByY3MsIE5fQ0hJTEQsIDApOwpAQCAtMzEwLDEwICsy ODUsMTMgQEAgaWd0X21haW4KIAogCQlzdXJmYWNlc19jaGVjayhiY3MsIDEsIDB4NDAwMCk7CiAJ CXN1cmZhY2VzX2NoZWNrKHJjcywgTl9DSElMRCwgMHg4MDAwIC8gTl9DSElMRCk7CisKKwkJY2xl YW51cF9idWZzKGJjcywgMSk7CisJCWNsZWFudXBfYnVmcyhyY3MsIE5fQ0hJTEQpOwogCX0KIAog CWlndF9zdWJ0ZXN0KCJibHQtdnMtcmVuZGVyLWN0eE4iKSB7Ci0JCWRybV9pbnRlbF9ibyAqYmNz WzFdLCAqcmNzW05fQ0hJTERdOworCQlzdHJ1Y3QgaW50ZWxfYnVmICpiY3NbMV0sICpyY3NbTl9D SElMRF07CiAKIAkJZm9ya19yY3NfY29weSgzMCwgMHg4MDAwIC8gTl9DSElMRCwgcmNzLCBOX0NI SUxELCBDUkVBVEVfQ09OVEVYVCk7CiAJCWZvcmtfYmNzX2NvcHkoMzAsIDB4NDAwMCwgYmNzLCAx KTsKQEAgLTMyMiw2ICszMDAsOSBAQCBpZ3RfbWFpbgogCiAJCXN1cmZhY2VzX2NoZWNrKGJjcywg MSwgMHg0MDAwKTsKIAkJc3VyZmFjZXNfY2hlY2socmNzLCBOX0NISUxELCAweDgwMDAgLyBOX0NI SUxEKTsKKworCQljbGVhbnVwX2J1ZnMoYmNzLCAxKTsKKwkJY2xlYW51cF9idWZzKHJjcywgTl9D SElMRCk7CiAJfQogCiAJaWd0X3N1YnRlc3QoImZsaW5rLWFuZC1jbG9zZS12bWEtbGVhayIpCmRp ZmYgLS1naXQgYS90ZXN0cy9rbXNfZHJhd19jcmMuYyBiL3Rlc3RzL2ttc19kcmF3X2NyYy5jCmlu ZGV4IDcwYjliMDVmLi5mZmQ2NTViMCAxMDA2NDQKLS0tIGEvdGVzdHMva21zX2RyYXdfY3JjLmMK KysrIGIvdGVzdHMva21zX2RyYXdfY3JjLmMKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IG1vZGVz ZXRfcGFyYW1zIHsKIGludCBkcm1fZmQ7CiBkcm1Nb2RlUmVzUHRyIGRybV9yZXM7CiBkcm1Nb2Rl Q29ubmVjdG9yUHRyIGRybV9jb25uZWN0b3JzW01BWF9DT05ORUNUT1JTXTsKLWRybV9pbnRlbF9i dWZtZ3IgKmJ1Zm1ncjsKK3N0cnVjdCBidWZfb3BzICpib3BzOwogaWd0X3BpcGVfY3JjX3QgKnBp cGVfY3JjOwogCiAjZGVmaW5lIE5fRk9STUFUUyAzCkBAIC0xMjYsMjMgKzEyNiwyMyBAQCBzdGF0 aWMgdm9pZCBnZXRfbWV0aG9kX2NyYyhlbnVtIGlndF9kcmF3X21ldGhvZCBtZXRob2QsIHVpbnQz Ml90IGRybV9mb3JtYXQsCiAKIAlpZ3RfY3JlYXRlX2ZiKGRybV9mZCwgbXMubW9kZS0+aGRpc3Bs YXksIG1zLm1vZGUtPnZkaXNwbGF5LAogCQkgICAgICBkcm1fZm9ybWF0LCB0aWxpbmcsICZmYik7 Ci0JaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQsIGJ1Zm1nciwgTlVMTCwgJmZiLCBtZXRob2QsCisJ aWd0X2RyYXdfcmVjdF9mYihkcm1fZmQsIGJvcHMsIDAsICZmYiwgbWV0aG9kLAogCQkJIDAsIDAs IGZiLndpZHRoLCBmYi5oZWlnaHQsCiAJCQkgZ2V0X2NvbG9yKGRybV9mb3JtYXQsIDAsIDAsIDEp KTsKIAotCWlndF9kcmF3X3JlY3RfZmIoZHJtX2ZkLCBidWZtZ3IsIE5VTEwsICZmYiwgbWV0aG9k LAorCWlndF9kcmF3X3JlY3RfZmIoZHJtX2ZkLCBib3BzLCAwLCAmZmIsIG1ldGhvZCwKIAkJCSBm Yi53aWR0aCAvIDQsIGZiLmhlaWdodCAvIDQsCiAJCQkgZmIud2lkdGggLyAyLCBmYi5oZWlnaHQg LyAyLAogCQkJIGdldF9jb2xvcihkcm1fZm9ybWF0LCAwLCAxLCAwKSk7Ci0JaWd0X2RyYXdfcmVj dF9mYihkcm1fZmQsIGJ1Zm1nciwgTlVMTCwgJmZiLCBtZXRob2QsCisJaWd0X2RyYXdfcmVjdF9m Yihkcm1fZmQsIGJvcHMsIDAsICZmYiwgbWV0aG9kLAogCQkJIGZiLndpZHRoIC8gOCwgZmIuaGVp Z2h0IC8gOCwKIAkJCSBmYi53aWR0aCAvIDQsIGZiLmhlaWdodCAvIDQsCiAJCQkgZ2V0X2NvbG9y KGRybV9mb3JtYXQsIDEsIDAsIDApKTsKLQlpZ3RfZHJhd19yZWN0X2ZiKGRybV9mZCwgYnVmbWdy LCBOVUxMLCAmZmIsIG1ldGhvZCwKKwlpZ3RfZHJhd19yZWN0X2ZiKGRybV9mZCwgYm9wcywgMCwg JmZiLCBtZXRob2QsCiAJCQkgZmIud2lkdGggLyAyLCBmYi5oZWlnaHQgLyAyLAogCQkJIGZiLndp ZHRoIC8gMywgZmIuaGVpZ2h0IC8gMywKIAkJCSBnZXRfY29sb3IoZHJtX2Zvcm1hdCwgMSwgMCwg MSkpOwotCWlndF9kcmF3X3JlY3RfZmIoZHJtX2ZkLCBidWZtZ3IsIE5VTEwsICZmYiwgbWV0aG9k LCAxLCAxLCAxNSwgMTUsCisJaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQsIGJvcHMsIDAsICZmYiwg bWV0aG9kLCAxLCAxLCAxNSwgMTUsCiAJCQkgZ2V0X2NvbG9yKGRybV9mb3JtYXQsIDAsIDEsIDEp KTsKIAogCXJjID0gZHJtTW9kZVNldENydGMoZHJtX2ZkLCBtcy5jcnRjX2lkLCBmYi5mYl9pZCwg MCwgMCwKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdGF0aWMgdm9pZCBmaWxsX2ZiX3N1YnRlc3Qodm9p ZCkKIAlpZ3RfY3JlYXRlX2ZiKGRybV9mZCwgbXMubW9kZS0+aGRpc3BsYXksIG1zLm1vZGUtPnZk aXNwbGF5LAogCQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01P RF9OT05FLCAmZmIpOwogCi0JaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQsIGJ1Zm1nciwgTlVMTCwg JmZiLAorCWlndF9kcmF3X3JlY3RfZmIoZHJtX2ZkLCBib3BzLCAwLCAmZmIsCiAJCQkgZ2VtX2hh c19tYXBwYWJsZV9nZ3R0KGRybV9mZCkgPyBJR1RfRFJBV19NTUFQX0dUVCA6CiAJCQkJCQkJIElH VF9EUkFXX01NQVBfV0MsCiAJCQkgMCwgMCwgZmIud2lkdGgsIGZiLmhlaWdodCwgMHhGRik7CkBA IC0yNzAsOSArMjcwLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBfZW52aXJvbm1lbnQodm9pZCkKIAog CWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKIAotCWJ1Zm1nciA9IGRybV9pbnRlbF9i dWZtZ3JfZ2VtX2luaXQoZHJtX2ZkLCA0MDk2KTsKLQlpZ3RfYXNzZXJ0KGJ1Zm1ncik7Ci0JZHJt X2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGJ1Zm1ncik7CisJYm9wcyA9IGJ1Zl9vcHNf Y3JlYXRlKGRybV9mZCk7CiAKIAlmaW5kX21vZGVzZXRfcGFyYW1zKCk7CiAJcGlwZV9jcmMgPSBp Z3RfcGlwZV9jcmNfbmV3KGRybV9mZCwga21zdGVzdF9nZXRfY3J0Y19pZHgoZHJtX3JlcywgbXMu Y3J0Y19pZCksCkBAIC0yODUsNyArMjgzLDcgQEAgc3RhdGljIHZvaWQgdGVhcmRvd25fZW52aXJv bm1lbnQodm9pZCkKIAogCWlndF9waXBlX2NyY19mcmVlKHBpcGVfY3JjKTsKIAotCWRybV9pbnRl bF9idWZtZ3JfZGVzdHJveShidWZtZ3IpOworCWJ1Zl9vcHNfZGVzdHJveShib3BzKTsKIAogCWZv ciAoaSA9IDA7IGkgPCBkcm1fcmVzLT5jb3VudF9jb25uZWN0b3JzOyBpKyspCiAJCWRybU1vZGVG cmVlQ29ubmVjdG9yKGRybV9jb25uZWN0b3JzW2ldKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19m cm9udGJ1ZmZlcl90cmFja2luZy5jIGIvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMK aW5kZXggNzgwZmVjZmUuLjE0ZjUyMmQ4IDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfZnJvbnRidWZm ZXJfdHJhY2tpbmcuYworKysgYi90ZXN0cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwpAQCAt MTY2LDcgKzE2Niw3IEBAIHN0cnVjdCB7CiAJaW50IGRlYnVnZnM7CiAJaWd0X2Rpc3BsYXlfdCBk aXNwbGF5OwogCi0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOworCXN0cnVjdCBidWZfb3BzICpi b3BzOwogfSBkcm07CiAKIHN0cnVjdCB7CkBAIC0xMDkxLDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9p ZCBkcmF3X3JlY3Qoc3RydWN0IGRyYXdfcGF0dGVybl9pbmZvICpwYXR0ZXJuLCBzdHJ1Y3QgZmJf cmVnaW9uICpmYiwKIHsKIAlzdHJ1Y3QgcmVjdCByZWN0ID0gcGF0dGVybi0+Z2V0X3JlY3QoZmIs IHIpOwogCi0JaWd0X2RyYXdfcmVjdF9mYihkcm0uZmQsIGRybS5idWZtZ3IsIE5VTEwsIGZiLT5m YiwgbWV0aG9kLAorCWlndF9kcmF3X3JlY3RfZmIoZHJtLmZkLCBkcm0uYm9wcywgMCwgZmItPmZi LCBtZXRob2QsCiAJCQkgZmItPnggKyByZWN0LngsIGZiLT55ICsgcmVjdC55LAogCQkJIHJlY3Qu dywgcmVjdC5oLCByZWN0LmNvbG9yKTsKIApAQCAtMTExNyw3ICsxMTE3LDcgQEAgc3RhdGljIHZv aWQgZmlsbF9mYl9yZWdpb24oc3RydWN0IGZiX3JlZ2lvbiAqcmVnaW9uLCBlbnVtIGNvbG9yIGVj b2xvcikKIHsKIAl1aW50MzJfdCBjb2xvciA9IHBpY2tfY29sb3IocmVnaW9uLT5mYiwgZWNvbG9y KTsKIAotCWlndF9kcmF3X3JlY3RfZmIoZHJtLmZkLCBkcm0uYnVmbWdyLCBOVUxMLCByZWdpb24t PmZiLCBJR1RfRFJBV19CTFQsCisJaWd0X2RyYXdfcmVjdF9mYihkcm0uZmQsIGRybS5ib3BzLCAw LCByZWdpb24tPmZiLCBJR1RfRFJBV19CTFQsCiAJCQkgcmVnaW9uLT54LCByZWdpb24tPnksIHJl Z2lvbi0+dywgcmVnaW9uLT5oLAogCQkJIGNvbG9yKTsKIH0KQEAgLTExNDEsNyArMTE0MSw3IEBA IHN0YXRpYyBib29sIGRpc2FibGVfZmVhdHVyZXMoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkK IHN0YXRpYyB2b2lkICpidXN5X3RocmVhZF9mdW5jKHZvaWQgKmRhdGEpCiB7CiAJd2hpbGUgKCFi dXN5X3RocmVhZC5zdG9wKQotCQlpZ3RfZHJhd19yZWN0KGRybS5mZCwgZHJtLmJ1Zm1nciwgTlVM TCwgYnVzeV90aHJlYWQuaGFuZGxlLAorCQlpZ3RfZHJhd19yZWN0KGRybS5mZCwgZHJtLmJvcHMs IDAsIGJ1c3lfdGhyZWFkLmhhbmRsZSwKIAkJCSAgICAgIGJ1c3lfdGhyZWFkLnNpemUsIGJ1c3lf dGhyZWFkLnN0cmlkZSwKIAkJCSAgICAgIGJ1c3lfdGhyZWFkLnRpbGluZywgSUdUX0RSQVdfQkxU LCAwLCAwLAogCQkJICAgICAgYnVzeV90aHJlYWQud2lkdGgsIGJ1c3lfdGhyZWFkLmhlaWdodCwK QEAgLTEyODgsMTQgKzEyODgsMTIgQEAgc3RhdGljIHZvaWQgc2V0dXBfZHJtKHZvaWQpCiAJa21z dGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwogCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRybS5k aXNwbGF5LCBkcm0uZmQpOwogCi0JZHJtLmJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2lu aXQoZHJtLmZkLCA0MDk2KTsKLQlpZ3RfYXNzZXJ0KGRybS5idWZtZ3IpOwotCWRybV9pbnRlbF9i dWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShkcm0uYnVmbWdyKTsKKwlkcm0uYm9wcyA9IGJ1Zl9vcHNf Y3JlYXRlKGRybS5mZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlYXJkb3duX2RybSh2b2lkKQogewot CWRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShkcm0uYnVmbWdyKTsKKwlidWZfb3BzX2Rlc3Ryb3ko ZHJtLmJvcHMpOwogCWlndF9kaXNwbGF5X2ZpbmkoJmRybS5kaXNwbGF5KTsKIAljbG9zZShkcm0u ZmQpOwogfQpAQCAtMjYyMiwxNCArMjYyMCwxNCBAQCBzdGF0aWMgdm9pZCBzY2FsZWRwcmltYXJ5 X3N1YnRlc3QoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkKIAkJICB0LT50aWxpbmcsIHQtPnBs YW5lLCAmbmV3X2ZiKTsKIAlmaWxsX2ZiKCZuZXdfZmIsIENPTE9SX0JMVUUpOwogCi0JaWd0X2Ry YXdfcmVjdF9mYihkcm0uZmQsIGRybS5idWZtZ3IsIE5VTEwsICZuZXdfZmIsIHQtPm1ldGhvZCwK KwlpZ3RfZHJhd19yZWN0X2ZiKGRybS5mZCwgZHJtLmJvcHMsIDAsICZuZXdfZmIsIHQtPm1ldGhv ZCwKIAkJCSByZWctPngsIHJlZy0+eSwgcmVnLT53IC8gMiwgcmVnLT5oIC8gMiwKIAkJCSBwaWNr X2NvbG9yKCZuZXdfZmIsIENPTE9SX0dSRUVOKSk7Ci0JaWd0X2RyYXdfcmVjdF9mYihkcm0uZmQs IGRybS5idWZtZ3IsIE5VTEwsICZuZXdfZmIsIHQtPm1ldGhvZCwKKwlpZ3RfZHJhd19yZWN0X2Zi KGRybS5mZCwgZHJtLmJvcHMsIDAsICZuZXdfZmIsIHQtPm1ldGhvZCwKIAkJCSByZWctPnggKyBy ZWctPncgLyAyLCByZWctPnkgKyByZWctPmggLyAyLAogCQkJIHJlZy0+dyAvIDIsIHJlZy0+aCAv IDIsCiAJCQkgcGlja19jb2xvcigmbmV3X2ZiLCBDT0xPUl9SRUQpKTsKLQlpZ3RfZHJhd19yZWN0 X2ZiKGRybS5mZCwgZHJtLmJ1Zm1nciwgTlVMTCwgJm5ld19mYiwgdC0+bWV0aG9kLAorCWlndF9k cmF3X3JlY3RfZmIoZHJtLmZkLCBkcm0uYm9wcywgMCwgJm5ld19mYiwgdC0+bWV0aG9kLAogCQkJ IHJlZy0+eCArIHJlZy0+dyAvIDIsIHJlZy0+eSArIHJlZy0+aCAvIDIsCiAJCQkgcmVnLT53IC8g NCwgcmVnLT5oIC8gNCwKIAkJCSBwaWNrX2NvbG9yKCZuZXdfZmIsIENPTE9SX01BR0VOVEEpKTsK ZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19wc3IuYyBiL3Rlc3RzL2ttc19wc3IuYwppbmRleCA0OWVh NDQ2YS4uZDJjNWM1NDAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19wc3IuYworKysgYi90ZXN0cy9r bXNfcHNyLmMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxzdGRib29sLmg+CiAjaW5jbHVk ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlICJpbnRlbF9idWZtZ3Iu aCIKIAogZW51bSBvcGVyYXRpb25zIHsKIAlQQUdFX0ZMSVAsCkBAIC02NSw3ICs2NCw3IEBAIHR5 cGVkZWYgc3RydWN0IHsKIAl1aW50MzJfdCBkZXZpZDsKIAl1aW50MzJfdCBjcnRjX2lkOwogCWln dF9kaXNwbGF5X3QgZGlzcGxheTsKLQlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7CisJc3RydWN0 IGJ1Zl9vcHMgKmJvcHM7CiAJc3RydWN0IGlndF9mYiBmYl9ncmVlbiwgZmJfd2hpdGU7CiAJaWd0 X3BsYW5lX3QgKnRlc3RfcGxhbmU7CiAJaW50IG1vZF9zaXplOwpAQCAtMTIzLDczICsxMjIsOTEg QEAgc3RhdGljIHZvaWQgZGlzcGxheV9maW5pKGRhdGFfdCAqZGF0YSkKIAlpZ3RfZGlzcGxheV9m aW5pKCZkYXRhLT5kaXNwbGF5KTsKIH0KIAotc3RhdGljIHZvaWQgZmlsbF9ibHQoZGF0YV90ICpk YXRhLCB1aW50MzJfdCBoYW5kbGUsIHVuc2lnbmVkIGNoYXIgY29sb3IpCitzdGF0aWMgdm9pZCBj b2xvcl9ibGl0X3N0YXJ0KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogewotCWRybV9pbnRlbF9ibyAq ZHN0ID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8oZGF0YS0+YnVmbWdyLAotCQkJCQkJICAgIGRh dGEtPmRybV9mZCwKLQkJCQkJCSAgICAiIiwgaGFuZGxlKTsKLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIgKmJhdGNoOwotCi0JYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhkYXRhLT5i dWZtZ3IsIGRhdGEtPmRldmlkKTsKLQlpZ3RfYXNzZXJ0KGJhdGNoKTsKLQotCUNPTE9SX0JMSVRf Q09QWV9CQVRDSF9TVEFSVCgwKTsKLQlPVVRfQkFUQ0goKDEgPDwgMjQpIHwgKDB4ZjAgPDwgMTYp IHwgMCk7Ci0JT1VUX0JBVENIKDApOwotCU9VVF9CQVRDSCgweGZmZiA8PCAxNiB8IDB4ZmZmKTsK LQlPVVRfUkVMT0MoZHN0LCBJOTE1X0dFTV9ET01BSU5fUkVOREVSLCBJOTE1X0dFTV9ET01BSU5f UkVOREVSLCAwKTsKLQlPVVRfQkFUQ0goY29sb3IpOwotCUFEVkFOQ0VfQkFUQ0goKTsKLQotCWlu dGVsX2JhdGNoYnVmZmVyX2ZsdXNoKGJhdGNoKTsKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGJh dGNoKTsKLQotCWdlbV9ib19idXN5KGRhdGEtPmRybV9mZCwgaGFuZGxlKTsKKwlpbnRlbF9iYl9v dXQoaWJiLCBYWV9DT0xPUl9CTFRfQ01EX05PTEVOIHwKKwkJICAgICBDT0xPUl9CTFRfV1JJVEVf QUxQSEEgfAorCQkgICAgIFhZX0NPTE9SX0JMVF9XUklURV9SR0IgfAorCQkgICAgICg0ICsgKGli Yi0+Z2VuID49IDgpKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoc3RydWN0 IGlndF9idWYgKmJ1ZiwgZHJtX2ludGVsX2JvICpibywKLQkJCSAgICAgaW50IHNpemUsIGludCBz dHJpZGUpCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqY3JlYXRlX2J1Zl9mcm9tX2ZiKGRhdGFf dCAqZGF0YSwKKwkJCQkJICAgIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiKQogewotCW1lbXNldChi dWYsIDAsIHNpemVvZigqYnVmKSk7CisJdWludDMyX3QgbmFtZSwgaGFuZGxlLCB0aWxpbmcsIHN0 cmlkZSwgd2lkdGgsIGhlaWdodCwgYnBwLCBzaXplOworCXN0cnVjdCBpbnRlbF9idWYgKmJ1ZjsK KworCWlndF9hc3NlcnRfZXEoZmItPm9mZnNldHNbMF0sIDApOworCisJdGlsaW5nID0gaWd0X2Zi X21vZF90b190aWxpbmcoZmItPm1vZGlmaWVyKTsKKwlzdHJpZGUgPSBmYi0+c3RyaWRlc1swXTsK KwlicHAgPSBmYi0+cGxhbmVfYnBwWzBdOworCXNpemUgPSBmYi0+c2l6ZTsKKwl3aWR0aCA9IHN0 cmlkZSAvIChicHAgLyA4KTsKKwloZWlnaHQgPSBzaXplIC8gc3RyaWRlOworCisJYnVmID0gY2Fs bG9jKDEsIHNpemVvZigqYnVmKSk7CisJaWd0X2Fzc2VydChidWYpOworCisJbmFtZSA9IGdlbV9m bGluayhkYXRhLT5kcm1fZmQsIGZiLT5nZW1faGFuZGxlKTsKKwloYW5kbGUgPSBnZW1fb3Blbihk YXRhLT5kcm1fZmQsIG5hbWUpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShkYXRhLT5i b3BzLCBoYW5kbGUsIGJ1ZiwKKwkJCQkgICAgd2lkdGgsIGhlaWdodCwgYnBwLCAwLCB0aWxpbmcs IDApOworCXJldHVybiBidWY7Cit9CiAKLQlidWYtPmJvID0gYm87Ci0JYnVmLT5zdXJmYWNlWzBd LnN0cmlkZSA9IHN0cmlkZTsKLQlidWYtPnRpbGluZyA9IEk5MTVfVElMSU5HX1g7Ci0JYnVmLT5z dXJmYWNlWzBdLnNpemUgPSBzaXplOwotCWJ1Zi0+YnBwID0gMzI7CitzdGF0aWMgdm9pZCBmaWxs X2JsdChkYXRhX3QgKmRhdGEsIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCB1bnNpZ25lZCBjaGFy IGNvbG9yKQoreworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCXN0cnVjdCBpbnRlbF9idWYgKmRz dDsKKworCWliYiA9IGludGVsX2JiX2NyZWF0ZShkYXRhLT5kcm1fZmQsIDQwOTYpOworCWRzdCA9 IGNyZWF0ZV9idWZfZnJvbV9mYihkYXRhLCBmYik7CisKKwljb2xvcl9ibGl0X3N0YXJ0KGliYik7 CisJaW50ZWxfYmJfb3V0KGliYiwgKDEgPDwgMjQpIHwgKDB4ZjAgPDwgMTYpIHwgMCk7CisJaW50 ZWxfYmJfb3V0KGliYiwgMCk7CisJaW50ZWxfYmJfb3V0KGliYiwgMHhmZmYgPDwgMTYgfCAweGZm Zik7CisJaW50ZWxfYmJfZW1pdF9yZWxvYyhpYmIsIGRzdC0+aGFuZGxlLCBJOTE1X0dFTV9ET01B SU5fUkVOREVSLAorCQkJICAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsIDAsIDB4MCk7CisJaW50 ZWxfYmJfb3V0KGliYiwgY29sb3IpOworCisJaW50ZWxfYmJfZmx1c2hfYmxpdChpYmIpOworCWlu dGVsX2JiX3N5bmMoaWJiKTsKKwlpbnRlbF9iYl9kZXN0cm95KGliYik7CisJaW50ZWxfYnVmX2Rl c3Ryb3koZHN0KTsKIH0KIAotc3RhdGljIHZvaWQgZmlsbF9yZW5kZXIoZGF0YV90ICpkYXRhLCB1 aW50MzJfdCBoYW5kbGUsIHVuc2lnbmVkIGNoYXIgY29sb3IpCitzdGF0aWMgdm9pZCBmaWxsX3Jl bmRlcihkYXRhX3QgKmRhdGEsIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLAorCQkJdW5zaWduZWQg Y2hhciBjb2xvcikKIHsKLQlkcm1faW50ZWxfYm8gKnNyYywgKmRzdDsKLQlzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoOwotCXN0cnVjdCBpZ3RfYnVmIHNyY19idWYsIGRzdF9idWY7CisJ c3RydWN0IGludGVsX2J1ZiAqc3JjLCAqZHN0OworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwogCWNv bnN0IHVpbnQ4X3QgYnVmWzRdID0geyBjb2xvciwgY29sb3IsIGNvbG9yLCBjb2xvciB9OwogCWln dF9yZW5kZXJfY29weWZ1bmNfdCByZW5kZXJjb3B5ID0gaWd0X2dldF9yZW5kZXJfY29weWZ1bmMo ZGF0YS0+ZGV2aWQpOworCWludCBoZWlnaHQsIHdpZHRoLCB0aWxpbmc7CiAKIAlpZ3Rfc2tpcF9v bighcmVuZGVyY29weSk7CiAKLQlkc3QgPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhkYXRhLT5i dWZtZ3IsIGRhdGEtPmRybV9mZCwgIiIsIGhhbmRsZSk7Ci0JaWd0X2Fzc2VydChkc3QpOworCWli YiA9IGludGVsX2JiX2NyZWF0ZShkYXRhLT5kcm1fZmQsIDQwOTYpOworCWRzdCA9IGNyZWF0ZV9i dWZfZnJvbV9mYihkYXRhLCBmYik7CiAKLQlzcmMgPSBkcm1faW50ZWxfYm9fYWxsb2MoZGF0YS0+ YnVmbWdyLCAiIiwgZGF0YS0+bW9kX3NpemUsIDQwOTYpOwotCWlndF9hc3NlcnQoc3JjKTsKKwl3 aWR0aCA9IGZiLT5zdHJpZGVzWzBdIC8gKGZiLT5wbGFuZV9icHBbMF0gLyA4KTsKKwloZWlnaHQg PSBmYi0+c2l6ZSAvIGZiLT5zdHJpZGVzWzBdOworCXRpbGluZyA9IGlndF9mYl9tb2RfdG9fdGls aW5nKGZiLT5tb2RpZmllcik7CiAKKwlzcmMgPSBpbnRlbF9idWZfY3JlYXRlKGRhdGEtPmJvcHMs IHdpZHRoLCBoZWlnaHQsIGZiLT5wbGFuZV9icHBbMF0sCisJCQkgICAgICAgMCwgdGlsaW5nLCAw KTsKIAlnZW1fd3JpdGUoZGF0YS0+ZHJtX2ZkLCBzcmMtPmhhbmRsZSwgMCwgYnVmLCA0KTsKIAot CXNjcmF0Y2hfYnVmX2luaXQoJnNyY19idWYsIHNyYywgZGF0YS0+bW9kX3NpemUsIGRhdGEtPm1v ZF9zdHJpZGUpOwotCXNjcmF0Y2hfYnVmX2luaXQoJmRzdF9idWYsIGRzdCwgZGF0YS0+bW9kX3Np emUsIGRhdGEtPm1vZF9zdHJpZGUpOwotCi0JYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxv YyhkYXRhLT5idWZtZ3IsIGRhdGEtPmRldmlkKTsKLQlpZ3RfYXNzZXJ0KGJhdGNoKTsKLQotCXJl bmRlcmNvcHkoYmF0Y2gsIE5VTEwsCi0JCSAgICZzcmNfYnVmLCAwLCAwLCAweGZmLCAweGZmLAot CQkgICAmZHN0X2J1ZiwgMCwgMCk7CisJcmVuZGVyY29weShpYmIsIDAsCisJCSAgIHNyYywgMCwg MCwgMHhmZiwgMHhmZiwKKwkJICAgZHN0LCAwLCAwKTsKIAotCWludGVsX2JhdGNoYnVmZmVyX2Zy ZWUoYmF0Y2gpOwotCi0JZ2VtX2JvX2J1c3koZGF0YS0+ZHJtX2ZkLCBoYW5kbGUpOworCWludGVs X2JiX3N5bmMoaWJiKTsKKwlpbnRlbF9iYl9kZXN0cm95KGliYik7CisJaW50ZWxfYnVmX2Rlc3Ry b3koc3JjKTsKKwlpbnRlbF9idWZfZGVzdHJveShkc3QpOwogfQogCiBzdGF0aWMgYm9vbCBzaW5r X3N1cHBvcnQoZGF0YV90ICpkYXRhLCBlbnVtIHBzcl9tb2RlIG1vZGUpCkBAIC0yOTAsMTEgKzMw NywxMSBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChkYXRhX3QgKmRhdGEpCiAJCWV4cGVjdGVkID0g IkJMQUNLIG9yIFRSQU5TUEFSRU5UIG1hcmsgb24gdG9wIG9mIHBsYW5lIGluIHRlc3QiOwogCQli cmVhazsKIAljYXNlIEJMVDoKLQkJZmlsbF9ibHQoZGF0YSwgaGFuZGxlLCAwKTsKKwkJZmlsbF9i bHQoZGF0YSwgJmRhdGEtPmZiX3doaXRlLCAwKTsKIAkJZXhwZWN0ZWQgPSAiQkxBQ0sgb3IgVFJB TlNQQVJFTlQgbWFyayBvbiB0b3Agb2YgcGxhbmUgaW4gdGVzdCI7CiAJCWJyZWFrOwogCWNhc2Ug UkVOREVSOgotCQlmaWxsX3JlbmRlcihkYXRhLCBoYW5kbGUsIDApOworCQlmaWxsX3JlbmRlcihk YXRhLCAmZGF0YS0+ZmJfd2hpdGUsIDApOwogCQlleHBlY3RlZCA9ICJCTEFDSyBvciBUUkFOU1BB UkVOVCBtYXJrIG9uIHRvcCBvZiBwbGFuZSBpbiB0ZXN0IjsKIAkJYnJlYWs7CiAJY2FzZSBQTEFO RV9NT1ZFOgpAQCAtMzE0LDcgKzMzMSw4IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGRhdGFfdCAq ZGF0YSkKIAltYW51YWwoZXhwZWN0ZWQpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0X2NsZWFudXAo ZGF0YV90ICpkYXRhKSB7CitzdGF0aWMgdm9pZCB0ZXN0X2NsZWFudXAoZGF0YV90ICpkYXRhKQor ewogCWlndF9wbGFuZV90ICpwcmltYXJ5OwogCiAJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3Bs YW5lX3R5cGUoZGF0YS0+b3V0cHV0LApAQCAtNDQ0LDExICs0NjIsNyBAQCBpZ3RfbWFpbl9hcmdz KCIiLCBsb25nX29wdGlvbnMsIGhlbHBfc3RyLCBvcHRfaGFuZGxlciwgJmRhdGEpCiAJCQkgICAg ICAiU2luayBkb2VzIG5vdCBzdXBwb3J0IFBTUlxuIik7CiAKIAkJZGF0YS5zdXBwb3J0c19wc3Iy ID0gc2lua19zdXBwb3J0KCZkYXRhLCBQU1JfTU9ERV8yKTsKLQotCQlkYXRhLmJ1Zm1nciA9IGRy bV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZGF0YS5kcm1fZmQsIDQwOTYpOwotCQlpZ3RfYXNzZXJ0 KGRhdGEuYnVmbWdyKTsKLQkJZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGRhdGEu YnVmbWdyKTsKLQorCQlkYXRhLmJvcHMgPSBidWZfb3BzX2NyZWF0ZShkYXRhLmRybV9mZCk7CiAJ CWRpc3BsYXlfaW5pdCgmZGF0YSk7CiAJfQogCkBAIC01MjgsNyArNTQyLDcgQEAgaWd0X21haW5f YXJncygiIiwgbG9uZ19vcHRpb25zLCBoZWxwX3N0ciwgb3B0X2hhbmRsZXIsICZkYXRhKQogCQkJ cHNyX2Rpc2FibGUoZGF0YS5kcm1fZmQsIGRhdGEuZGVidWdmc19mZCk7CiAKIAkJY2xvc2UoZGF0 YS5kZWJ1Z2ZzX2ZkKTsKLQkJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGRhdGEuYnVmbWdyKTsK KwkJYnVmX29wc19kZXN0cm95KGRhdGEuYm9wcyk7CiAJCWRpc3BsYXlfZmluaSgmZGF0YSk7CiAJ fQogfQotLSAKMi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK