From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Tom spot Callaway To: git-commits@fedoraproject.org Subject: [rpms/ntfs-3g] epel9: apply upstream patches for CVE-2026-42616 CVE-2026-42617 CVE-2026-42618 CVE-2026-46569 CVE-2026-46571 CVE-2026-46570 CVE-2026-46572 CVE-2026-56135 CVE-2026-56136 Date: Thu, 24 Sep 2026 14:59:53 GMT Message-ID: <179026199326.1.14826978534258203108.rpms-ntfs-3g-00d0161b0d32@fedoraproject.org> List-ID: X-Git-Repo: rpms/ntfs-3g X-Git-Branch: epel9 X-Git-Rev: 00d0161b0d3288a196cc8b949ca5bf20c1eba497 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvbnRmcy0zZwpCcmFu Y2ggOiBlcGVsOQpDb21taXQgOiAwMGQwMTYxYjBkMzI4OGExOTZjYzhiOTQ5Y2E1YmYyMGMxZWJh NDk3CkF1dGhvciA6IFRvbSBzcG90IENhbGxhd2F5IDxzcG90YXdzQGFtYXpvbi5jb20+CkRhdGUg ICA6IDIwMjYtMDktMjRUMTA6NTk6NDgtMDQ6MDAKU3RhdHMgIDogKzEwNTAvLTEgaW4gMTAgZmls ZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL250ZnMtM2cv Yy8wMGQwMTYxYjBkMzI4OGExOTZjYzhiOTQ5Y2E1YmYyMGMxZWJhNDk3P2JyYW5jaD1lcGVsOQoK TG9nOgphcHBseSB1cHN0cmVhbSBwYXRjaGVzIGZvciBDVkUtMjAyNi00MjYxNiBDVkUtMjAyNi00 MjYxNyBDVkUtMjAyNi00MjYxOCBDVkUtMjAyNi00NjU2OSBDVkUtMjAyNi00NjU3MSBDVkUtMjAy Ni00NjU3MCBDVkUtMjAyNi00NjU3MiBDVkUtMjAyNi01NjEzNSBDVkUtMjAyNi01NjEzNgoKLS0t CmRpZmYgLS1naXQgYS8xX250ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTQyNjE4LnBhdGNoIGIv MV9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi00MjYxOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi42YmY4NzhkCi0tLSAvZGV2L251bGwKKysrIGIvMV9udGZzLTNn XzIwMjIuMTAuMy1DVkUtMjAyNi00MjYxOC5wYXRjaApAQCAtMCwwICsxLDM2MSBAQAorZGlmZiAt LWdpdCBhL2xpYm50ZnMtM2cvY29tcHJlc3MuYyBiL2xpYm50ZnMtM2cvY29tcHJlc3MuYworaW5k ZXggMzkwYjJkOTdkLi41MGQ5ZGFmMzIgMTAwNjQ0CistLS0gYS9saWJudGZzLTNnL2NvbXByZXNz LmMKKysrKyBiL2xpYm50ZnMtM2cvY29tcHJlc3MuYworQEAgLTQ1OSw3ICs0NTksOCBAQCBzdGF0 aWMgdW5zaWduZWQgaW50IG50ZnNfY29tcHJlc3NfYmxvY2soY29uc3QgY2hhciAqaW5idWYsIGNv bnN0IGludCBidWZzaXplLAorICAqIEBjYl9zdGFydCBpcyBhIHBvaW50ZXIgdG8gdGhlIGNvbXBy ZXNzaW9uIGJsb2NrIHdoaWNoIG5lZWRzIGRlY29tcHJlc3NpbmcKKyAgKiBhbmQgQGNiX3NpemUg aXMgdGhlIHNpemUgb2YgQGNiX3N0YXJ0IGluIGJ5dGVzICg4LTY0a2lCKS4KKyAgKgorLSAqIFJl dHVybiAwIGlmIHN1Y2Nlc3Mgb3IgLUVPVkVSRkxPVyBvbiBlcnJvciBpbiB0aGUgY29tcHJlc3Nl ZCBzdHJlYW0uCisrICogUmV0dXJuIDAgb24gc3VjY2Vzcy4gIE9uIGVycm9yIGluIHRoZSBjb21w cmVzc2VkIHN0cmVhbSwgc2V0IGVycm5vIHRvCisrICogRU9WRVJGTE9XIGFuZCByZXR1cm4gLTEu CisgICovCisgc3RhdGljIGludCBudGZzX2RlY29tcHJlc3ModTggKmRlc3QsIGNvbnN0IHUzMiBk ZXN0X3NpemUsCisgCQl1OCAqY29uc3QgY2Jfc3RhcnQsIGNvbnN0IHUzMiBjYl9zaXplKQorQEAg LTQ3OSwxNTMgKzQ4MCwyMTEgQEAgc3RhdGljIGludCBudGZzX2RlY29tcHJlc3ModTggKmRlc3Qs IGNvbnN0IHUzMiBkZXN0X3NpemUsCisgCS8qIFZhcmlhYmxlcyBmb3IgdGFnIGFuZCB0b2tlbiBw YXJzaW5nLiAqLworIAl1OCB0YWc7CQkJLyogQ3VycmVudCB0YWcuICovCisgCWludCB0b2tlbjsJ CS8qIExvb3AgY291bnRlciBmb3IgdGhlIGVpZ2h0IHRva2VucyBpbiB0YWcuICovCisrCXUxNiBo ZHI7CQkvKiBDdXJyZW50IHN1Yi1ibG9jayBoZWFkZXIuICovCisgCisgCW50ZnNfbG9nX3RyYWNl KCJFbnRlcmluZywgY2Jfc2l6ZSA9IDB4JXguXG4iLCAodW5zaWduZWQpY2Jfc2l6ZSk7CisgZG9f bmV4dF9zYjoKKy0JbnRmc19sb2dfZGVidWcoIkJlZ2lubmluZyBzdWItYmxvY2sgYXQgb2Zmc2V0 ID0gJWQgaW4gdGhlIGNiLlxuIiwKKy0JCQkoaW50KShjYiAtIGNiX3N0YXJ0KSk7CistCS8qCist CSAqIEhhdmUgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2lvbiBibG9jayBvciB0 aGUgZW5kIG9mIHRoZQorLQkgKiBkZWNvbXByZXNzZWQgZGF0YT8gIFRoZSBsYXR0ZXIgY2FuIGhh cHBlbiBmb3IgZXhhbXBsZSBpZiB0aGUgY3VycmVudAorLQkgKiBwb3NpdGlvbiBpbiB0aGUgY29t cHJlc3Npb24gYmxvY2sgaXMgb25lIGJ5dGUgYmVmb3JlIGl0cyBlbmQgc28gdGhlCistCSAqIGZp cnN0IHR3byBjaGVja3MgZG8gbm90IGRldGVjdCBpdC4KKy0JICovCistCWlmIChjYiA9PSBjYl9l bmQgfHwgIWxlMTZfdG9fY3B1cCgobGUxNiopY2IpIHx8IGRlc3QgPT0gZGVzdF9lbmQpIHsKKy0J CWlmIChkZXN0X2VuZCA+IGRlc3QpCistCQkJbWVtc2V0KGRlc3QsIDAsIGRlc3RfZW5kIC0gZGVz dCk7CistCQludGZzX2xvZ19kZWJ1ZygiQ29tcGxldGVkLiBSZXR1cm5pbmcgc3VjY2VzcyAoMCku XG4iKTsKKy0JCXJldHVybiAwOworLQl9CistCS8qIFNldHVwIG9mZnNldCBmb3IgdGhlIGN1cnJl bnQgc3ViLWJsb2NrIGRlc3RpbmF0aW9uLiAqLworLQlkZXN0X3NiX3N0YXJ0ID0gZGVzdDsKKy0J ZGVzdF9zYl9lbmQgPSBkZXN0ICsgTlRGU19TQl9TSVpFOworLQkvKiBDaGVjayB0aGF0IHdlIGFy ZSBzdGlsbCB3aXRoaW4gYWxsb3dlZCBib3VuZGFyaWVzLiAqLworLQlpZiAoZGVzdF9zYl9lbmQg PiBkZXN0X2VuZCkKKy0JCWdvdG8gcmV0dXJuX292ZXJmbG93OworLQkvKiBEb2VzIHRoZSBtaW5p bXVtIHNpemUgb2YgYSBjb21wcmVzc2VkIHNiIG92ZXJmbG93IHZhbGlkIHJhbmdlPyAqLworLQlp ZiAoY2IgKyA2ID4gY2JfZW5kKQorLQkJZ290byByZXR1cm5fb3ZlcmZsb3c7CistCS8qIFNldHVw IHRoZSBjdXJyZW50IHN1Yi1ibG9jayBzb3VyY2UgcG9pbnRlcnMgYW5kIHZhbGlkYXRlIHJhbmdl LiAqLworLQljYl9zYl9zdGFydCA9IGNiOworLQljYl9zYl9lbmQgPSBjYl9zYl9zdGFydCArIChs ZTE2X3RvX2NwdXAoKGxlMTYqKWNiKSAmIE5URlNfU0JfU0laRV9NQVNLKQorLQkJCSsgMzsKKy0J aWYgKGNiX3NiX2VuZCA+IGNiX2VuZCkKKy0JCWdvdG8gcmV0dXJuX292ZXJmbG93OworLQkvKiBO b3csIHdlIGFyZSByZWFkeSB0byBwcm9jZXNzIHRoZSBjdXJyZW50IHN1Yi1ibG9jayAoc2IpLiAq LworLQlpZiAoIShsZTE2X3RvX2NwdXAoKGxlMTYqKWNiKSAmIE5URlNfU0JfSVNfQ09NUFJFU1NF RCkpIHsKKy0JCW50ZnNfbG9nX2RlYnVnKCJGb3VuZCB1bmNvbXByZXNzZWQgc3ViLWJsb2NrLlxu Iik7CistCQkvKiBUaGlzIHNiIGlzIG5vdCBjb21wcmVzc2VkLCBqdXN0IGNvcHkgaXQgaW50byBk ZXN0aW5hdGlvbi4gKi8KKy0JCS8qIEFkdmFuY2Ugc291cmNlIHBvc2l0aW9uIHRvIGZpcnN0IGRh dGEgYnl0ZS4gKi8KKy0JCWNiICs9IDI7CistCQkvKiBBbiB1bmNvbXByZXNzZWQgc2IgbXVzdCBi ZSBmdWxsIHNpemUuICovCistCQlpZiAoY2Jfc2JfZW5kIC0gY2IgIT0gTlRGU19TQl9TSVpFKQor LQkJCWdvdG8gcmV0dXJuX292ZXJmbG93OworLQkJLyogQ29weSB0aGUgYmxvY2sgYW5kIGFkdmFu Y2UgdGhlIHNvdXJjZSBwb3NpdGlvbi4gKi8KKy0JCW1lbWNweShkZXN0LCBjYiwgTlRGU19TQl9T SVpFKTsKKy0JCWNiICs9IE5URlNfU0JfU0laRTsKKy0JCS8qIEFkdmFuY2UgZGVzdGluYXRpb24g cG9zaXRpb24gdG8gbmV4dCBzdWItYmxvY2suICovCistCQlkZXN0ICs9IE5URlNfU0JfU0laRTsK Ky0JCWdvdG8gZG9fbmV4dF9zYjsKKy0JfQorLQludGZzX2xvZ19kZWJ1ZygiRm91bmQgY29tcHJl c3NlZCBzdWItYmxvY2suXG4iKTsKKy0JLyogVGhpcyBzYiBpcyBjb21wcmVzc2VkLCBkZWNvbXBy ZXNzIGl0IGludG8gZGVzdGluYXRpb24uICovCistCS8qIEZvcndhcmQgdG8gdGhlIGZpcnN0IHRh ZyBpbiB0aGUgc3ViLWJsb2NrLiAqLworLQljYiArPSAyOworLWRvX25leHRfdGFnOgorLQlpZiAo Y2IgPT0gY2Jfc2JfZW5kKSB7CistCQkvKiBDaGVjayBpZiB0aGUgZGVjb21wcmVzc2VkIHN1Yi1i bG9jayB3YXMgbm90IGZ1bGwtbGVuZ3RoLiAqLworLQkJaWYgKGRlc3QgPCBkZXN0X3NiX2VuZCkg eworLQkJCWludCBucl9ieXRlcyA9IGRlc3Rfc2JfZW5kIC0gZGVzdDsKKy0KKy0JCQludGZzX2xv Z19kZWJ1ZygiRmlsbGluZyBpbmNvbXBsZXRlIHN1Yi1ibG9jayB3aXRoIHplcm9lcy5cbiIpOwor LQkJCS8qIFplcm8gcmVtYWluZGVyIGFuZCB1cGRhdGUgZGVzdGluYXRpb24gcG9zaXRpb24uICov CistCQkJbWVtc2V0KGRlc3QsIDAsIG5yX2J5dGVzKTsKKy0JCQlkZXN0ICs9IG5yX2J5dGVzOwor LQkJfQorLQkJLyogV2UgaGF2ZSBmaW5pc2hlZCB0aGUgY3VycmVudCBzdWItYmxvY2suICovCist CQlnb3RvIGRvX25leHRfc2I7CistCX0KKy0JLyogQ2hlY2sgd2UgYXJlIHN0aWxsIGluIHJhbmdl LiAqLworLQlpZiAoY2IgPiBjYl9zYl9lbmQgfHwgZGVzdCA+IGRlc3Rfc2JfZW5kKQorLQkJZ290 byByZXR1cm5fb3ZlcmZsb3c7CistCS8qIEdldCB0aGUgbmV4dCB0YWcgYW5kIGFkdmFuY2UgdG8g Zmlyc3QgdG9rZW4uICovCistCXRhZyA9ICpjYisrOworLQkvKiBQYXJzZSB0aGUgZWlnaHQgdG9r ZW5zIGRlc2NyaWJlZCBieSB0aGUgdGFnLiAqLworLQlmb3IgKHRva2VuID0gMDsgdG9rZW4gPCA4 OyB0b2tlbisrLCB0YWcgPj49IDEpIHsKKy0JCXUxNiBsZywgcHQsIGxlbmd0aCwgbWF4X25vbl9v dmVybGFwOworLQkJcmVnaXN0ZXIgdTE2IGk7CistCQl1OCAqZGVzdF9iYWNrX2FkZHI7CistCist CQkvKiBDaGVjayBpZiB3ZSBhcmUgZG9uZSAvIHN0aWxsIGluIHJhbmdlLiAqLworLQkJaWYgKGNi ID49IGNiX3NiX2VuZCB8fCBkZXN0ID4gZGVzdF9zYl9lbmQpCistCQkJYnJlYWs7CistCQkvKiBE ZXRlcm1pbmUgdG9rZW4gdHlwZSBhbmQgcGFyc2UgYXBwcm9wcmlhdGVseS4qLworLQkJaWYgKCh0 YWcgJiBOVEZTX1RPS0VOX01BU0spID09IE5URlNfU1lNQk9MX1RPS0VOKSB7CistCQkJLyoKKy0J CQkgKiBXZSBoYXZlIGEgc3ltYm9sIHRva2VuLCBjb3B5IHRoZSBzeW1ib2wgYWNyb3NzLCBhbmQK Ky0JCQkgKiBhZHZhbmNlIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHBvc2l0aW9ucy4KKy0J CQkgKi8KKy0JCQkqZGVzdCsrID0gKmNiKys7CistCQkJLyogQ29udGludWUgd2l0aCB0aGUgbmV4 dCB0b2tlbi4gKi8KKy0JCQljb250aW51ZTsKKy0JCX0KKysJeworKwkJbnRmc19sb2dfZGVidWco IkJlZ2lubmluZyBzdWItYmxvY2sgYXQgb2Zmc2V0ID0gJWQgaW4gdGhlICIKKysJCQkJImNiLlxu IiwKKysJCQkJKGludCkoY2IgLSBjYl9zdGFydCkpOworIAkJLyoKKy0JCSAqIFdlIGhhdmUgYSBw aHJhc2UgdG9rZW4uIE1ha2Ugc3VyZSBpdCBpcyBub3QgdGhlIGZpcnN0IHRhZyBpbgorLQkJICog dGhlIHNiIGFzIHRoaXMgaXMgaWxsZWdhbCBhbmQgd291bGQgY29uZnVzZSB0aGUgY29kZSBiZWxv dy4KKysJCSAqIEhhdmUgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2lvbiBibG9j ayBvciB0aGUgZW5kCisrCQkgKiBvZiB0aGUgZGVjb21wcmVzc2VkIGRhdGE/CisrCQkgKgorKwkJ ICogQ2hlY2sgZGVzdCA9PSBkZXN0X2VuZCBiZWZvcmUgcmVhZGluZyB0aGUgbmV4dCB0d28tYnl0 ZSBzdWItCisrCQkgKiBibG9jayBoZWFkZXIuICBUaGUgY29tcHJlc3NlZCBwb2ludGVyIGNhbiBs ZWdhbGx5IGJlIG5lYXIgdGhlCisrCQkgKiBlbmQgb2YgdGhlIGJ1ZmZlciB3aGVuIHRoZSByZXF1 ZXN0ZWQgb3V0cHV0IGhhcyBhbHJlYWR5IGJlZW4KKysJCSAqIHByb2R1Y2VkLgorIAkJICovCist CQlpZiAoZGVzdCA9PSBkZXN0X3NiX3N0YXJ0KQorKwkJaWYgKGNiID09IGNiX2VuZCB8fCBkZXN0 ID09IGRlc3RfZW5kKQorKwkJCWdvdG8gY29tcGxldGU7CisrCQkvKiBBIHN1Yi1ibG9jayBoZWFk ZXIgaXMgdHdvIGJ5dGVzLiAqLworKwkJaWYgKChzaXplX3QpKGNiX2VuZCAtIGNiKSA8IDIpCisg CQkJZ290byByZXR1cm5fb3ZlcmZsb3c7CistCQkvKgorLQkJICogRGV0ZXJtaW5lIHRoZSBudW1i ZXIgb2YgYnl0ZXMgdG8gZ28gYmFjayAocCkgYW5kIHRoZSBudW1iZXIKKy0JCSAqIG9mIGJ5dGVz IHRvIGNvcHkgKGwpLiBXZSB1c2UgYW4gb3B0aW1pemVkIGFsZ29yaXRobSBpbiB3aGljaAorLQkJ ICogd2UgZmlyc3QgY2FsY3VsYXRlIGxvZzIoY3VycmVudCBkZXN0aW5hdGlvbiBwb3NpdGlvbiBp biBzYiksCistCQkgKiB3aGljaCBhbGxvd3MgZGV0ZXJtaW5hdGlvbiBvZiBsIGFuZCBwIGluIE8o MSkgcmF0aGVyIHRoYW4KKy0JCSAqIE8obikuIFdlIGp1c3QgbmVlZCBhbiBhcmNoLW9wdGltaXpl ZCBsb2cyKCkgZnVuY3Rpb24gbm93LgorLQkJICovCistCQlsZyA9IDA7CistCQlmb3IgKGkgPSBk ZXN0IC0gZGVzdF9zYl9zdGFydCAtIDE7IGkgPj0gMHgxMDsgaSA+Pj0gMSkKKy0JCQlsZysrOwor LQkJLyogR2V0IHRoZSBwaHJhc2UgdG9rZW4gaW50byBpLiAqLworLQkJcHQgPSBsZTE2X3RvX2Nw dXAoKGxlMTYqKWNiKTsKKy0JCS8qCistCQkgKiBDYWxjdWxhdGUgc3RhcnRpbmcgcG9zaXRpb24g b2YgdGhlIGJ5dGUgc2VxdWVuY2UgaW4KKy0JCSAqIHRoZSBkZXN0aW5hdGlvbiB1c2luZyB0aGUg ZmFjdCB0aGF0IHAgPSAocHQgPj4gKDEyIC0gbGcpKSArIDEKKy0JCSAqIGFuZCBtYWtlIHN1cmUg d2UgZG9uJ3QgZ28gdG9vIGZhciBiYWNrLgorLQkJICovCistCQlkZXN0X2JhY2tfYWRkciA9IGRl c3QgLSAocHQgPj4gKDEyIC0gbGcpKSAtIDE7CistCQlpZiAoZGVzdF9iYWNrX2FkZHIgPCBkZXN0 X3NiX3N0YXJ0KQorKwkJaGRyID0gbGUxNl90b19jcHVwKChsZTE2KiljYik7CisrCQlpZiAoIWhk cikKKysJCQlnb3RvIGNvbXBsZXRlOworKwkJLyogU2V0dXAgb2Zmc2V0IGZvciB0aGUgY3VycmVu dCBzdWItYmxvY2sgZGVzdGluYXRpb24uICovCisrCQlkZXN0X3NiX3N0YXJ0ID0gZGVzdDsKKysJ CWRlc3Rfc2JfZW5kID0gZGVzdCArIE5URlNfU0JfU0laRTsKKysJCS8qIENoZWNrIHRoYXQgd2Ug YXJlIHN0aWxsIHdpdGhpbiBhbGxvd2VkIGJvdW5kYXJpZXMuICovCisrCQlpZiAoZGVzdF9zYl9l bmQgPiBkZXN0X2VuZCkKKyAJCQlnb3RvIHJldHVybl9vdmVyZmxvdzsKKy0JCS8qIE5vdyBjYWxj dWxhdGUgdGhlIGxlbmd0aCBvZiB0aGUgYnl0ZSBzZXF1ZW5jZS4gKi8KKy0JCWxlbmd0aCA9IChw dCAmICgweGZmZiA+PiBsZykpICsgMzsKKy0JCS8qIFZlcmlmeSBkZXN0aW5hdGlvbiBpcyBpbiBy YW5nZS4gKi8KKy0JCWlmIChkZXN0ICsgbGVuZ3RoID4gZGVzdF9zYl9lbmQpCisrCQkvKiBEb2Vz IHRoZSBtaW5pbXVtIHNpemUgb2YgYSBjb21wcmVzc2VkIHNiIG92ZXJmbG93IHZhbGlkCisrCQkg KiByYW5nZT8gKi8KKysJCWlmICgoc2l6ZV90KShjYl9lbmQgLSBjYikgPCA2KQorIAkJCWdvdG8g cmV0dXJuX292ZXJmbG93OworLQkJLyogVGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgYnl0 ZXMuICovCistCQltYXhfbm9uX292ZXJsYXAgPSBkZXN0IC0gZGVzdF9iYWNrX2FkZHI7CistCQlp ZiAobGVuZ3RoIDw9IG1heF9ub25fb3ZlcmxhcCkgeworLQkJCS8qIFRoZSBieXRlIHNlcXVlbmNl IGRvZXNuJ3Qgb3ZlcmxhcCwganVzdCBjb3B5IGl0LiAqLworLQkJCW1lbWNweShkZXN0LCBkZXN0 X2JhY2tfYWRkciwgbGVuZ3RoKTsKKy0JCQkvKiBBZHZhbmNlIGRlc3RpbmF0aW9uIHBvaW50ZXIu ICovCistCQkJZGVzdCArPSBsZW5ndGg7CistCQl9IGVsc2UgeworKwkJLyogU2V0dXAgdGhlIGN1 cnJlbnQgc3ViLWJsb2NrIHNvdXJjZSBwb2ludGVycyBhbmQgdmFsaWRhdGUKKysJCSAqIHJhbmdl LiAqLworKwkJY2Jfc2Jfc3RhcnQgPSBjYjsKKysJCWNiX3NiX2VuZCA9IGNiX3NiX3N0YXJ0ICsg KGhkciAmIE5URlNfU0JfU0laRV9NQVNLKSArIDM7CisrCQlpZiAoY2Jfc2JfZW5kID4gY2JfZW5k KQorKwkJCWdvdG8gcmV0dXJuX292ZXJmbG93OworKwkJLyogTm93LCB3ZSBhcmUgcmVhZHkgdG8g cHJvY2VzcyB0aGUgY3VycmVudCBzdWItYmxvY2sgKHNiKS4gKi8KKysJCWlmICghKGhkciAmIE5U RlNfU0JfSVNfQ09NUFJFU1NFRCkpIHsKKysJCQludGZzX2xvZ19kZWJ1ZygiRm91bmQgdW5jb21w cmVzc2VkIHN1Yi1ibG9jay5cbiIpOworKwkJCS8qIFRoaXMgc2IgaXMgbm90IGNvbXByZXNzZWQs IGp1c3QgY29weSBpdCBpbnRvCisrCQkJICogZGVzdGluYXRpb24uICovCisrCQkJLyogQWR2YW5j ZSBzb3VyY2UgcG9zaXRpb24gdG8gZmlyc3QgZGF0YSBieXRlLiAqLworKwkJCWNiICs9IDI7Cisr CQkJLyogQW4gdW5jb21wcmVzc2VkIHNiIG11c3QgYmUgZnVsbCBzaXplLiAqLworKwkJCWlmIChj Yl9zYl9lbmQgLSBjYiAhPSBOVEZTX1NCX1NJWkUpCisrCQkJCWdvdG8gcmV0dXJuX292ZXJmbG93 OworKwkJCS8qIENvcHkgdGhlIGJsb2NrIGFuZCBhZHZhbmNlIHRoZSBzb3VyY2UgcG9zaXRpb24u ICovCisrCQkJbWVtY3B5KGRlc3QsIGNiLCBOVEZTX1NCX1NJWkUpOworKwkJCWNiICs9IE5URlNf U0JfU0laRTsKKysJCQkvKiBBZHZhbmNlIGRlc3RpbmF0aW9uIHBvc2l0aW9uIHRvIG5leHQgc3Vi LWJsb2NrLiAqLworKwkJCWRlc3QgKz0gTlRGU19TQl9TSVpFOworKwkJCWdvdG8gZG9fbmV4dF9z YjsKKysJCX0KKysJCW50ZnNfbG9nX2RlYnVnKCJGb3VuZCBjb21wcmVzc2VkIHN1Yi1ibG9jay5c biIpOworKwkJLyogVGhpcyBzYiBpcyBjb21wcmVzc2VkLCBkZWNvbXByZXNzIGl0IGludG8gZGVz dGluYXRpb24uICovCisrCQkvKiBGb3J3YXJkIHRvIHRoZSBmaXJzdCB0YWcgaW4gdGhlIHN1Yi1i bG9jay4gKi8KKysJCWNiICs9IDI7CisrZG9fbmV4dF90YWc6CisrCQl7CisrCQkJLyogQ2hlY2sg d2UgYXJlIHN0aWxsIGluIHJhbmdlLiAqLworKwkJCWlmIChjYiA+IGNiX3NiX2VuZCB8fCBkZXN0 ID4gZGVzdF9zYl9lbmQpCisrCQkJCWdvdG8gcmV0dXJuX292ZXJmbG93OworIAkJCS8qCistCQkJ ICogVGhlIGJ5dGUgc2VxdWVuY2UgZG9lcyBvdmVybGFwLCBjb3B5IG5vbi1vdmVybGFwcGluZwor LQkJCSAqIHBhcnQgYW5kIHRoZW4gZG8gYSBzbG93IGJ5dGUgYnkgYnl0ZSBjb3B5IGZvciB0aGUK Ky0JCQkgKiBvdmVybGFwcGluZyBwYXJ0LiBBbHNvLCBhZHZhbmNlIHRoZSBkZXN0aW5hdGlvbgor LQkJCSAqIHBvaW50ZXIuCisrCQkJICogRmluaXNoIHRoaXMgY29tcHJlc3NlZCBzdWItYmxvY2sg d2hlbiBlaXRoZXIgaXRzCisrCQkJICogY29tcHJlc3NlZCBpbnB1dCBpcyBleGhhdXN0ZWQgb3Ig aXRzIDQgS2lCIG91dHB1dAorKwkJCSAqIHNsb3QgaXMgZnVsbC4gIElmIG91dHB1dCBiZWNvbWVz IGZ1bGwgZmlyc3QsIHNraXAgdGhlCisrCQkJICogcmVtYWluaW5nIGNvbXByZXNzZWQgYnl0ZXMg aW4gdGhpcyBzdWItYmxvY2sgaW5zdGVhZAorKwkJCSAqIG9mIGludGVycHJldGluZyB0aGVtIGFz IG1vcmUgdGFncy90b2tlbnMuCisgCQkJICovCistCQkJbWVtY3B5KGRlc3QsIGRlc3RfYmFja19h ZGRyLCBtYXhfbm9uX292ZXJsYXApOworLQkJCWRlc3QgKz0gbWF4X25vbl9vdmVybGFwOworLQkJ CWRlc3RfYmFja19hZGRyICs9IG1heF9ub25fb3ZlcmxhcDsKKy0JCQlsZW5ndGggLT0gbWF4X25v bl9vdmVybGFwOworLQkJCXdoaWxlIChsZW5ndGgtLSkKKy0JCQkJKmRlc3QrKyA9ICpkZXN0X2Jh Y2tfYWRkcisrOworKwkJCWlmIChjYiA9PSBjYl9zYl9lbmQgfHwgZGVzdCA9PSBkZXN0X3NiX2Vu ZCkKKysJCQkJZ290byBmaW5pc2hfY29tcHJlc3NlZF9zYjsKKysJCQkvKiBHZXQgdGhlIG5leHQg dGFnIGFuZCBhZHZhbmNlIHRvIGZpcnN0IHRva2VuLiAqLworKwkJCXRhZyA9ICpjYisrOworKwkJ CS8qIFBhcnNlIHRoZSBlaWdodCB0b2tlbnMgZGVzY3JpYmVkIGJ5IHRoZSB0YWcuICovCisrCQkJ Zm9yICh0b2tlbiA9IDA7IHRva2VuIDwgODsgdG9rZW4rKywgdGFnID4+PSAxKSB7CisrCQkJCXUx NiBsZywgcHQsIGxlbmd0aCwgbWF4X25vbl9vdmVybGFwOworKwkJCQlyZWdpc3RlciB1MTYgaTsK KysJCQkJdTggKmRlc3RfYmFja19hZGRyOworKworKwkJCQkvKiBDaGVjayBpZiB3ZSBhcmUgZG9u ZSAvIHN0aWxsIGluIHJhbmdlLiAqLworKwkJCQlpZiAoY2IgPiBjYl9zYl9lbmQgfHwgZGVzdCA+ IGRlc3Rfc2JfZW5kKQorKwkJCQkJZ290byByZXR1cm5fb3ZlcmZsb3c7CisrCQkJCWlmIChjYiA9 PSBjYl9zYl9lbmQgfHwgZGVzdCA9PSBkZXN0X3NiX2VuZCkKKysJCQkJCWdvdG8gZmluaXNoX2Nv bXByZXNzZWRfc2I7CisrCQkJCS8qIERldGVybWluZSB0b2tlbiB0eXBlIGFuZCBwYXJzZQorKwkJ CQkgKiBhcHByb3ByaWF0ZWx5LiAqLworKwkJCQlpZiAoKHRhZyAmIE5URlNfVE9LRU5fTUFTSykg PT0KKysJCQkJCQlOVEZTX1NZTUJPTF9UT0tFTikKKysJCQkJeworKwkJCQkJLyoKKysJCQkJCSAq IFdlIGhhdmUgYSBzeW1ib2wgdG9rZW4sIGNvcHkgdGhlCisrCQkJCQkgKiBzeW1ib2wgYWNyb3Nz LCBhbmQgYWR2YW5jZSB0aGUgc291cmNlCisrCQkJCQkgKiBhbmQgZGVzdGluYXRpb24gcG9zaXRp b25zLgorKwkJCQkJICovCisrCQkJCQkqZGVzdCsrID0gKmNiKys7CisrCQkJCQkvKiBDb250aW51 ZSB3aXRoIHRoZSBuZXh0IHRva2VuLiAqLworKwkJCQkJY29udGludWU7CisrCQkJCX0KKysJCQkJ LyoKKysJCQkJICogV2UgaGF2ZSBhIHBocmFzZSB0b2tlbi4gTWFrZSBzdXJlIGl0IGlzIG5vdAor KwkJCQkgKiB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlIHNiIGFzIHRoaXMgaXMgaWxsZWdhbAorKwkJ CQkgKiBhbmQgd291bGQgY29uZnVzZSB0aGUgY29kZSBiZWxvdy4KKysJCQkJICovCisrCQkJCWlm IChkZXN0ID09IGRlc3Rfc2Jfc3RhcnQpCisrCQkJCQlnb3RvIHJldHVybl9vdmVyZmxvdzsKKysJ CQkJLyoKKysJCQkJICogQSBwaHJhc2UgdG9rZW4gaXMgYSB0d28tYnl0ZSBjb21wcmVzc2VkIHdv cmQuCisrCQkJCSAqIFRoZSBnZW5lcmljIHRva2VuIGNoZWNrIGFib3ZlIG9ubHkgcHJvdmVzCisr CQkJCSAqIHRoYXQgYXQgbGVhc3Qgb25lIGJ5dGUgcmVtYWlucywgd2hpY2ggaXMKKysJCQkJICog ZW5vdWdoIGZvciBhIHN5bWJvbCB0b2tlbiBidXQgbm90IGZvciBhCisrCQkJCSAqIHBocmFzZSB0 b2tlbi4KKysJCQkJICovCisrCQkJCWlmICgoc2l6ZV90KShjYl9zYl9lbmQgLSBjYikgPCAyKQor KwkJCQkJZ290byByZXR1cm5fb3ZlcmZsb3c7CisrCQkJCS8qCisrCQkJCSAqIERldGVybWluZSB0 aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGdvIGJhY2sgKHApCisrCQkJCSAqIGFuZCB0aGUgbnVtYmVy IG9mIGJ5dGVzIHRvIGNvcHkgKGwpLiBXZSB1c2UKKysJCQkJICogYW4gb3B0aW1pemVkIGFsZ29y aXRobSBpbiB3aGljaCB3ZSBmaXJzdAorKwkJCQkgKiBjYWxjdWxhdGUgbG9nMihjdXJyZW50IGRl c3RpbmF0aW9uIHBvc2l0aW9uCisrCQkJCSAqIGluIHNiKSwgd2hpY2ggYWxsb3dzIGRldGVybWlu YXRpb24gb2YgbCBhbmQgcAorKwkJCQkgKiBpbiBPKDEpIHJhdGhlciB0aGFuIE8obikuIFdlIGp1 c3QgbmVlZCBhbgorKwkJCQkgKiBhcmNoLW9wdGltaXplZCBsb2cyKCkgZnVuY3Rpb24gbm93Lgor KwkJCQkgKi8KKysJCQkJbGcgPSAwOworKwkJCQlmb3IgKGkgPSBkZXN0IC0gZGVzdF9zYl9zdGFy dCAtIDE7IGkgPj0gMHgxMDsKKysJCQkJCQlpID4+PSAxKQorKwkJCQl7CisrCQkJCQlsZysrOwor KwkJCQl9CisrCQkJCS8qIEdldCB0aGUgcGhyYXNlIHRva2VuIGludG8gaS4gKi8KKysJCQkJcHQg PSBsZTE2X3RvX2NwdXAoKGxlMTYqKWNiKTsKKysJCQkJLyoKKysJCQkJICogQ2FsY3VsYXRlIHN0 YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSBieXRlCisrCQkJCSAqIHNlcXVlbmNlIGluIHRoZSBkZXN0 aW5hdGlvbiB1c2luZyB0aGUgZmFjdAorKwkJCQkgKiB0aGF0IHAgPSAocHQgPj4gKDEyIC0gbGcp KSArIDEgYW5kIG1ha2Ugc3VyZQorKwkJCQkgKiB3ZSBkb24ndCBnbyB0b28gZmFyIGJhY2suCisr CQkJCSAqLworKwkJCQlkZXN0X2JhY2tfYWRkciA9IGRlc3QgLSAocHQgPj4gKDEyIC0gbGcpKSAt IDE7CisrCQkJCWlmIChkZXN0X2JhY2tfYWRkciA8IGRlc3Rfc2Jfc3RhcnQpCisrCQkJCQlnb3Rv IHJldHVybl9vdmVyZmxvdzsKKysJCQkJLyogTm93IGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRo ZSBieXRlCisrCQkJCSAqIHNlcXVlbmNlLiAqLworKwkJCQlsZW5ndGggPSAocHQgJiAoMHhmZmYg Pj4gbGcpKSArIDM7CisrCQkJCS8qIFZlcmlmeSBkZXN0aW5hdGlvbiBpcyBpbiByYW5nZS4gKi8K KysJCQkJaWYgKGRlc3QgKyBsZW5ndGggPiBkZXN0X3NiX2VuZCkKKysJCQkJCWdvdG8gcmV0dXJu X292ZXJmbG93OworKwkJCQkvKiBUaGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBieXRlcy4g Ki8KKysJCQkJbWF4X25vbl9vdmVybGFwID0gZGVzdCAtIGRlc3RfYmFja19hZGRyOworKwkJCQlp ZiAobGVuZ3RoIDw9IG1heF9ub25fb3ZlcmxhcCkgeworKwkJCQkJLyogVGhlIGJ5dGUgc2VxdWVu Y2UgZG9lc24ndCBvdmVybGFwLAorKwkJCQkJICoganVzdCBjb3B5IGl0LiAqLworKwkJCQkJbWVt Y3B5KGRlc3QsIGRlc3RfYmFja19hZGRyLCBsZW5ndGgpOworKwkJCQkJLyogQWR2YW5jZSBkZXN0 aW5hdGlvbiBwb2ludGVyLiAqLworKwkJCQkJZGVzdCArPSBsZW5ndGg7CisrCQkJCX0gZWxzZSB7 CisrCQkJCQkvKgorKwkJCQkJICogVGhlIGJ5dGUgc2VxdWVuY2UgZG9lcyBvdmVybGFwLCBjb3B5 CisrCQkJCQkgKiBub24tb3ZlcmxhcHBpbmcgcGFydCBhbmQgdGhlbiBkbyBhCisrCQkJCQkgKiBz bG93IGJ5dGUgYnkgYnl0ZSBjb3B5IGZvciB0aGUKKysJCQkJCSAqIG92ZXJsYXBwaW5nIHBhcnQu IEFsc28sIGFkdmFuY2UgdGhlCisrCQkJCQkgKiBkZXN0aW5hdGlvbiBwb2ludGVyLgorKwkJCQkJ ICovCisrCQkJCQltZW1jcHkoZGVzdCwgZGVzdF9iYWNrX2FkZHIsCisrCQkJCQkJbWF4X25vbl9v dmVybGFwKTsKKysJCQkJCWRlc3QgKz0gbWF4X25vbl9vdmVybGFwOworKwkJCQkJZGVzdF9iYWNr X2FkZHIgKz0gbWF4X25vbl9vdmVybGFwOworKwkJCQkJbGVuZ3RoIC09IG1heF9ub25fb3Zlcmxh cDsKKysJCQkJCXdoaWxlIChsZW5ndGgtLSkKKysJCQkJCQkqZGVzdCsrID0gKmRlc3RfYmFja19h ZGRyKys7CisrCQkJCX0KKysJCQkJLyogQWR2YW5jZSBzb3VyY2UgcG9zaXRpb24gYW5kIGNvbnRp bnVlIHdpdGggdGhlCisrCQkJCSAqIG5leHQgdG9rZW4uICovCisrCQkJCWNiICs9IDI7CisrCQkJ fQorKwkJCS8qIE5vIHRva2VucyBsZWZ0IGluIHRoZSBjdXJyZW50IHRhZy4gQ29udGludWUgd2l0 aCB0aGUKKysJCQkgKiBuZXh0IHRhZy4gKi8KKysJCQlnb3RvIGRvX25leHRfdGFnOworIAkJfQor LQkJLyogQWR2YW5jZSBzb3VyY2UgcG9zaXRpb24gYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQg dG9rZW4uICovCistCQljYiArPSAyOworIAl9CistCS8qIE5vIHRva2VucyBsZWZ0IGluIHRoZSBj dXJyZW50IHRhZy4gQ29udGludWUgd2l0aCB0aGUgbmV4dCB0YWcuICovCistCWdvdG8gZG9fbmV4 dF90YWc7CisrZmluaXNoX2NvbXByZXNzZWRfc2I6CisrCS8qIENoZWNrIGlmIHRoZSBkZWNvbXBy ZXNzZWQgc3ViLWJsb2NrIHdhcyBub3QgZnVsbC1sZW5ndGguICovCisrCWlmIChkZXN0IDwgZGVz dF9zYl9lbmQpIHsKKysJCXNpemVfdCBucl9ieXRlcyA9IGRlc3Rfc2JfZW5kIC0gZGVzdDsKKysK KysJCW50ZnNfbG9nX2RlYnVnKCJGaWxsaW5nIGluY29tcGxldGUgc3ViLWJsb2NrIHdpdGggemVy b2VzLlxuIik7CisrCQkvKiBaZXJvIHJlbWFpbmRlciBhbmQgdXBkYXRlIGRlc3RpbmF0aW9uIHBv c2l0aW9uLiAqLworKwkJbWVtc2V0KGRlc3QsIDAsIG5yX2J5dGVzKTsKKysJCWRlc3QgKz0gbnJf Ynl0ZXM7CisrCX0KKysJLyoKKysJICogSWYgdGhlIG91dHB1dCBzdWItYmxvY2sgZmlsbGVkIGJl Zm9yZSB0aGUgY29tcHJlc3NlZCBzdWItYmxvY2sgaW5wdXQKKysJICogd2FzIGV4aGF1c3RlZCwg c2tpcCB0aGUgcmVtYWluaW5nIGNvbXByZXNzZWQgYnl0ZXMgaW4gdGhpcyBzdWItYmxvY2suCisr CSAqLworKwljYiA9IGNiX3NiX2VuZDsKKysJZ290byBkb19uZXh0X3NiOworK2NvbXBsZXRlOgor KwlpZiAoZGVzdF9lbmQgPiBkZXN0KQorKwkJbWVtc2V0KGRlc3QsIDAsIGRlc3RfZW5kIC0gZGVz dCk7CisrCW50ZnNfbG9nX2RlYnVnKCJDb21wbGV0ZWQuIFJldHVybmluZyBzdWNjZXNzICgwKS5c biIpOworKwlyZXR1cm4gMDsKKyByZXR1cm5fb3ZlcmZsb3c6CisgCWVycm5vID0gRU9WRVJGTE9X OworIAludGZzX2xvZ19wZXJyb3IoIkZhaWxlZCB0byBkZWNvbXByZXNzIGZpbGUiKTsKCmRpZmYg LS1naXQgYS8yX250ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTQyNjE2LnBhdGNoIGIvMl9udGZz LTNnXzIwMjIuMTAuMy1DVkUtMjAyNi00MjYxNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi40MzZlYzliCi0tLSAvZGV2L251bGwKKysrIGIvMl9udGZzLTNnXzIwMjIu MTAuMy1DVkUtMjAyNi00MjYxNi5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitkaWZmIC0tZ2l0IGEv bnRmc3Byb2dzL250ZnNjYXQuYyBiL250ZnNwcm9ncy9udGZzY2F0LmMKK2luZGV4IGI4YWYyNTAz My4uMGY3MTE4MTVhIDEwMDY0NAorLS0tIGEvbnRmc3Byb2dzL250ZnNjYXQuYworKysrIGIvbnRm c3Byb2dzL250ZnNjYXQuYworQEAgLTMzNCwyMiArMzM0LDE3IEBAIHN0YXRpYyBpbnQgaW5kZXhf Z2V0X3NpemUobnRmc19pbm9kZSAqaW5vZGUpCisgc3RhdGljIGludCBjYXQobnRmc192b2x1bWUg KnZvbCwgbnRmc19pbm9kZSAqaW5vZGUsIEFUVFJfVFlQRVMgdHlwZSwKKyAJCW50ZnNjaGFyICpu YW1lLCBpbnQgbmFtZWxlbikKKyB7CistCWNvbnN0IGludCBidWZzaXplID0gNDA5NjsKKyAJY2hh ciAqYnVmZmVyOworIAludGZzX2F0dHIgKmF0dHI7CisgCXM2NCBieXRlc19yZWFkLCB3cml0dGVu OworIAlzNjQgb2Zmc2V0OworIAl1MzIgYmxvY2tfc2l6ZTsKKy0KKy0JYnVmZmVyID0gbWFsbG9j KGJ1ZnNpemUpOworLQlpZiAoIWJ1ZmZlcikKKy0JCXJldHVybiAxOworKwl1MzIgYnVmc2l6ZSA9 IDQwOTY7CisgCisgCWF0dHIgPSBudGZzX2F0dHJfb3Blbihpbm9kZSwgdHlwZSwgbmFtZSwgbmFt ZWxlbik7CisgCWlmICghYXR0cikgeworIAkJbnRmc19sb2dfZXJyb3IoIkNhbm5vdCBmaW5kIGF0 dHJpYnV0ZSB0eXBlIDB4JXguXG4iLAorIAkJCQlsZTMyX3RvX2NwdSh0eXBlKSk7CistCQlmcmVl KGJ1ZmZlcik7CisgCQlyZXR1cm4gMTsKKyAJfQorIAorQEAgLTM2MCw2ICszNTUsMTUgQEAgc3Rh dGljIGludCBjYXQobnRmc192b2x1bWUgKnZvbCwgbnRmc19pbm9kZSAqaW5vZGUsIEFUVFJfVFlQ RVMgdHlwZSwKKyAJZWxzZQorIAkJYmxvY2tfc2l6ZSA9IDA7CisgCisrCWlmIChidWZzaXplIDwg YmxvY2tfc2l6ZSkgeworKwkJYnVmc2l6ZSA9IGJsb2NrX3NpemU7CisrCX0KKysKKysJYnVmZmVy ID0gbWFsbG9jKGJ1ZnNpemUpOworKwlpZiAoIWJ1ZmZlcikgeworKwkJcmV0dXJuIDE7CisrCX0K KysKKyAJb2Zmc2V0ID0gMDsKKyAJZm9yICg7OykgeworIAkJaWYgKCFvcHRzLnJhdyAmJiBibG9j a19zaXplID4gMCkgewoKZGlmZiAtLWdpdCBhLzNfbnRmcy0zZ18yMDIyLjEwLjMtQ1ZFLTIwMjYt NDI2MTcucGF0Y2ggYi8zX250ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTQyNjE3LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNjhlZTMKLS0tIC9kZXYvbnVsbAor KysgYi8zX250ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTQyNjE3LnBhdGNoCkBAIC0wLDAgKzEs MTMwIEBACitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9udGZzLTNnL2luZGV4LmggYi9pbmNsdWRlL250 ZnMtM2cvaW5kZXguaAoraW5kZXggZDAwMTg2M2FlLi4xZDU4NDVkNDcgMTAwNjQ0CistLS0gYS9p bmNsdWRlL250ZnMtM2cvaW5kZXguaAorKysrIGIvaW5jbHVkZS9udGZzLTNnL2luZGV4LmgKK0BA IC0xNDMsNiArMTQzLDcgQEAgZXh0ZXJuIGludCBudGZzX2luZGV4X2Jsb2NrX2luY29uc2lzdGVu dChjb25zdCBJTkRFWF9CTE9DSyAqaWIsIHUzMiBibG9ja19zaXplLAorIAkJCXU2NCBpbnVtLCBW Q04gdmNuKTsKKyBleHRlcm4gaW50IG50ZnNfaW5kZXhfZW50cnlfaW5jb25zaXN0ZW50KGNvbnN0 IElOREVYX0VOVFJZICppZSwKKyAJCQlDT0xMQVRJT05fUlVMRVMgY29sbGF0aW9uX3J1bGUsIHU2 NCBpbnVtKTsKKytleHRlcm4gaW50IG50ZnNfaWVfc3RyZWFtX2luY29uc2lzdGVudChjb25zdCBJ TkRFWF9IRUFERVIgKmloLCB1NjQgaW51bSk7CisgZXh0ZXJuIGludCBudGZzX2luZGV4X2xvb2t1 cChjb25zdCB2b2lkICprZXksIGNvbnN0IGludCBrZXlfbGVuLAorIAkJbnRmc19pbmRleF9jb250 ZXh0ICppY3R4KSBfX2F0dHJpYnV0ZV93YXJuX3VudXNlZF9yZXN1bHRfXzsKKyAKK2RpZmYgLS1n aXQgYS9saWJudGZzLTNnL2F0dHJpYi5jIGIvbGlibnRmcy0zZy9hdHRyaWIuYworaW5kZXggZWZi OTE5NDM4Li5jZmMyNDQ2ZTMgMTAwNjQ0CistLS0gYS9saWJudGZzLTNnL2F0dHJpYi5jCisrKysg Yi9saWJudGZzLTNnL2F0dHJpYi5jCitAQCAtMzUyOCw2ICszNTI4LDEwIEBAIGludCBudGZzX2F0 dHJfaW5jb25zaXN0ZW50KGNvbnN0IEFUVFJfUkVDT1JEICphLCBjb25zdCBNRlRfUkVGIG1yZWYp CisgCQkJaWYgKGEtPm5vbl9yZXNpZGVudAorIAkJCSAgICB8fCAobGUzMl90b19jcHUoYS0+dmFs dWVfbGVuZ3RoKQorIAkJCQk8IG9mZnNldG9mKElOREVYX1JPT1QsIGluZGV4LnJlc2VydmVkKSkK KysJCQkgICAgfHwgKGxlMzJfdG9fY3B1KGlyLT5pbmRleF9ibG9ja19zaXplKQorKwkJCQk8IE5U RlNfQkxPQ0tfU0laRSkKKysJCQkgICAgfHwgKGxlMzJfdG9fY3B1KGlyLT5pbmRleF9ibG9ja19z aXplKQorKwkJCQkmIChsZTMyX3RvX2NwdShpci0+aW5kZXhfYmxvY2tfc2l6ZSkgLSAxKSkKKyAJ CQkgICAgfHwgKGxlMzJfdG9fY3B1KGlyLT5pbmRleC5lbnRyaWVzX29mZnNldCkKKyAJCQkJPCBz aXplb2YoSU5ERVhfSEVBREVSKSkKKyAJCQkgICAgfHwgKGxlMzJfdG9fY3B1KGlyLT5pbmRleC5p bmRleF9sZW5ndGgpCitAQCAtMzU0Miw2ICszNTQ2LDkgQEAgaW50IG50ZnNfYXR0cl9pbmNvbnNp c3RlbnQoY29uc3QgQVRUUl9SRUNPUkQgKmEsIGNvbnN0IE1GVF9SRUYgbXJlZikKKyAJCQkJCShs b25nIGxvbmcpaW51bSk7CisgCQkJCWVycm5vID0gRUlPOworIAkJCQlyZXQgPSAtMTsKKysJCQl9 IGVsc2UgaWYgKG50ZnNfaWVfc3RyZWFtX2luY29uc2lzdGVudCgmaXItPmluZGV4LCBpbnVtKSkg eworKwkJCQllcnJubyA9IEVJTzsKKysJCQkJcmV0ID0gLTE7CisgCQkJfQorIAkJCWJyZWFrOwor IAkJY2FzZSBBVF9TVEFOREFSRF9JTkZPUk1BVElPTiA6CitkaWZmIC0tZ2l0IGEvbGlibnRmcy0z Zy9pbmRleC5jIGIvbGlibnRmcy0zZy9pbmRleC5jCitpbmRleCBlNDhkNmFhZmIuLmM5NjUxYTYy YyAxMDA2NDQKKy0tLSBhL2xpYm50ZnMtM2cvaW5kZXguYworKysrIGIvbGlibnRmcy0zZy9pbmRl eC5jCitAQCAtNTA0LDYgKzUwNCw4IEBAIGludCBudGZzX2luZGV4X2Jsb2NrX2luY29uc2lzdGVu dChjb25zdCBJTkRFWF9CTE9DSyAqaWIsIHUzMiBibG9ja19zaXplLAorIAkJCQkodW5zaWduZWQg bG9uZyBsb25nKWludW0pOworIAkJcmV0dXJuIC0xOworIAl9CisrCWlmIChudGZzX2llX3N0cmVh bV9pbmNvbnNpc3RlbnQoJmliLT5pbmRleCwgaW51bSkpCisrCQlyZXR1cm4gLTE7CisgCisgCXJl dHVybiAoMCk7CisgfQorQEAgLTU2MCw3ICs1NjIsNDAgQEAgaW50IG50ZnNfaW5kZXhfZW50cnlf aW5jb25zaXN0ZW50KGNvbnN0IElOREVYX0VOVFJZICppZSwKKyAJcmV0dXJuIChyZXQpOworIH0K KyAKKy0vKiogCisraW50IG50ZnNfaWVfc3RyZWFtX2luY29uc2lzdGVudChjb25zdCBJTkRFWF9I RUFERVIgKmloLCB1NjQgaW51bSkKKyt7CisrCWNvbnN0IHU4ICppZXNfc3RhcnQgPSAoY29uc3Qg dTggKilpaCArIGxlMzJfdG9fY3B1KGloLT5lbnRyaWVzX29mZnNldCk7CisrCWNvbnN0IHU4ICpp ZXNfZW5kID0gKGNvbnN0IHU4ICopaWggKyBsZTMyX3RvX2NwdShpaC0+aW5kZXhfbGVuZ3RoKTsK KysJY29uc3QgdTggKmllOworKworKwludGZzX2xvZ190cmFjZSgiRW50ZXJpbmdcbiIpOworKwor Kwlmb3IgKGllID0gaWVzX3N0YXJ0OyBpZSA8IGllc19lbmQ7ICkgeworKwkJdTMyIGxlbjsKKysJ CWNvbnN0IElOREVYX0VOVFJZICplbnQgPSAoY29uc3QgSU5ERVhfRU5UUlkgKilpZTsKKysKKysJ CWlmICgoc2l6ZV90KShpZXNfZW5kIC0gaWUpIDwgc2l6ZW9mKElOREVYX0VOVFJZX0hFQURFUikp CisrCQkJZ290byBlcnI7CisrCQlsZW4gPSBsZTE2X3RvX2NwdShlbnQtPmxlbmd0aCk7CisrCQlp ZiAobGVuIDwgc2l6ZW9mKElOREVYX0VOVFJZX0hFQURFUikgfHwgKGxlbiAmIDcpKQorKwkJCWdv dG8gZXJyOworKwkJaWYgKChzaXplX3QpKGllc19lbmQgLSBpZSkgPCBsZW4pCisrCQkJZ290byBl cnI7CisrCQlpZiAoZW50LT5pZV9mbGFncyAmIElOREVYX0VOVFJZX0VORCkgeworKwkJCS8qIEVO RCBtdXN0IHRlcm1pbmF0ZSB0aGUgc3RyZWFtIGV4YWN0bHkuICovCisrCQkJaWYgKGllICsgbGVu ICE9IGllc19lbmQpCisrCQkJCWdvdG8gZXJyOworKwkJCXJldHVybiAwOworKwkJfQorKwkJaWUg Kz0gbGVuOworKwl9CisrZXJyOgorKwludGZzX2xvZ19lcnJvcigiQ29ycnVwdCBpbmRleCBlbnRy eSBzdHJlYW0gaW4gaW5vZGUgJWxsZFxuIiwKKysJCQkobG9uZyBsb25nKWludW0pOworKwlyZXR1 cm4gLTE7CisrfQorKworKy8qKgorICAqIEZpbmQgYSBrZXkgaW4gdGhlIGluZGV4IGJsb2NrLgor ICAqIAorICAqIFJldHVybiB2YWx1ZXM6CitAQCAtMTA5MSwxNCArMTEyNiwxNiBAQCBvdXQ6Cisg Cisgc3RhdGljIElOREVYX0JMT0NLICpudGZzX2lyX3RvX2liKElOREVYX1JPT1QgKmlyLCBWQ04g aWJfdmNuKQorIHsKKysJdTMyIGliX3NpemU7CisgCUlOREVYX0JMT0NLICppYjsKKyAJSU5ERVhf RU5UUlkgKmllX2xhc3Q7CisgCWNoYXIgKmllc19zdGFydCwgKmllc19lbmQ7CisgCWludCBpOwor IAkKKyAJbnRmc19sb2dfdHJhY2UoIkVudGVyaW5nXG4iKTsKKy0JCistCWliID0gbnRmc19pYl9h bGxvYyhpYl92Y24sIGxlMzJfdG9fY3B1KGlyLT5pbmRleF9ibG9ja19zaXplKSwgTEVBRl9OT0RF KTsKKysKKysJaWJfc2l6ZSA9IGxlMzJfdG9fY3B1KGlyLT5pbmRleF9ibG9ja19zaXplKTsKKysJ aWIgPSBudGZzX2liX2FsbG9jKGliX3ZjbiwgaWJfc2l6ZSwgTEVBRl9OT0RFKTsKKyAJaWYgKCFp YikKKyAJCXJldHVybiBOVUxMOworIAkKK0BAIC0xMTEwLDYgKzExNDcsMTggQEAgc3RhdGljIElO REVYX0JMT0NLICpudGZzX2lyX3RvX2liKElOREVYX1JPT1QgKmlyLCBWQ04gaWJfdmNuKQorIAkg KiBhcyB3ZWxsLCB3aGljaCBjYW4gbmV2ZXIgaGF2ZSBhbnkgZGF0YS4KKyAJICovCisgCWkgPSAo Y2hhciAqKWllX2xhc3QgLSBpZXNfc3RhcnQgKyBsZTE2X3RvX2NwdShpZV9sYXN0LT5sZW5ndGgp OworKworKwlpZiAob2Zmc2V0b2YoSU5ERVhfQkxPQ0ssIGluZGV4KSArIGxlMzJfdG9fY3B1KGli LT5pbmRleC5lbnRyaWVzX29mZnNldCkKKysJCQkrIGkgPiBpYl9zaXplKQorKwl7CisrCQludGZz X2xvZ19lcnJvcigiTGFzdCBlbnRyeSBpbiBpbmRleCByb290IG92ZXJmbG93cyB0aGUgaW5kZXgg IgorKwkJCQkiYmxvY2sgc2l6ZTogJWQgKGluZGV4IGJsb2NrIHNpemU6ICVsdSlcbiIsCisrCQkJ CWksICh1bnNpZ25lZCBsb25nKWliX3NpemUpOworKwkJZnJlZShpYik7CisrCQllcnJubyA9IEVJ TzsKKysJCXJldHVybiBOVUxMOworKwl9CisrCisgCW1lbWNweShudGZzX2llX2dldF9maXJzdCgm aWItPmluZGV4KSwgaWVzX3N0YXJ0LCBpKTsKKyAJCisgCWliLT5pbmRleC5paF9mbGFncyA9IGly LT5pbmRleC5paF9mbGFnczsKCmRpZmYgLS1naXQgYS80X250ZnMtM2dfMjAyMi4xMC4zLUNWRS0y MDI2LTQ2NTY5LnBhdGNoIGIvNF9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi00NjU2OS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODM2ZTg3Ci0tLSAvZGV2L251 bGwKKysrIGIvNF9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi00NjU2OS5wYXRjaApAQCAtMCww ICsxLDM5IEBACitkaWZmIC0tZ2l0IGEvbGlibnRmcy0zZy9pbmRleC5jIGIvbGlibnRmcy0zZy9p bmRleC5jCitpbmRleCBlNDhkNmFhZmIuLjZlYmFhMmU0YSAxMDA2NDQKKy0tLSBhL2xpYm50ZnMt M2cvaW5kZXguYworKysrIGIvbGlibnRmcy0zZy9pbmRleC5jCitAQCAtMTE0NCw3ICsxMTQ0LDcg QEAgc3RhdGljIGludCBudGZzX2liX2NvcHlfdGFpbChudGZzX2luZGV4X2NvbnRleHQgKmljeCwg SU5ERVhfQkxPQ0sgKnNyYywKKyB7CisgCXU4ICppZXNfZW5kOworIAlJTkRFWF9FTlRSWSAqaWVf aGVhZDsJCS8qIGZpcnN0IGVudHJ5IGFmdGVyIHRoZSBtZWRpYW4gKi8KKy0JaW50IHRhaWxfc2l6 ZSwgcmV0OworKwlpbnQgdGFpbF9zaXplLCBkc3RfY2FwYWNpdHksIHJldDsKKyAJSU5ERVhfQkxP Q0sgKmRzdDsKKyAJCisgCW50ZnNfbG9nX3RyYWNlKCJFbnRlcmluZ1xuIik7CitAQCAtMTE1OCw2 ICsxMTU4LDI1IEBAIHN0YXRpYyBpbnQgbnRmc19pYl9jb3B5X3RhaWwobnRmc19pbmRleF9jb250 ZXh0ICppY3gsIElOREVYX0JMT0NLICpzcmMsCisgCQorIAlpZXNfZW5kID0gKHU4ICopbnRmc19p ZV9nZXRfZW5kKCZzcmMtPmluZGV4KTsKKyAJdGFpbF9zaXplID0gaWVzX2VuZCAtICh1OCAqKWll X2hlYWQ7CisrCWRzdF9jYXBhY2l0eSA9IChpbnQpKGxlMzJfdG9fY3B1KGRzdC0+aW5kZXguYWxs b2NhdGVkX3NpemUpCisrCQkJICAgICAtIGxlMzJfdG9fY3B1KGRzdC0+aW5kZXguZW50cmllc19v ZmZzZXQpKTsKKysKKysJLyoKKysJICogc3JjLT5pbmRleC5lbnRyaWVzX29mZnNldCAob24tZGlz aywgb25seSByZXF1aXJlZCB0byBiZSA+PQorKwkgKiBzaXplb2YoSU5ERVhfSEVBREVSKSBieSBu dGZzX2luZGV4X2Jsb2NrX2luY29uc2lzdGVudCkgbWF5IGJlIHNtYWxsZXIKKysJICogdGhhbiBk c3Qncywgd2hpY2ggbnRmc19pYl9hbGxvYyBmaXhlcyAoNDAgb24gYSA0IEtpQiBibG9jaykuICBX aGVuCisrCSAqIHRoZSBtZWRpYW4gbGFuZHMgbmVhciB0aGUgc3RhcnQgb2YgdGhlIHNvdXJjZSBz dHJlYW0gdGhlIGdhcCBsZXRzCisrCSAqIHRhaWxfc2l6ZSBleGNlZWQgZHN0J3MgdXNhYmxlIHNw YWNlLiAgVGhlIDwgMCBndWFyZCBjYXRjaGVzIGEKKysJICogbmVnYXRpdmUgdGFpbF9zaXplIGJl Zm9yZSBtZW1jcHkgc2lnbi1leHRlbmRzIGl0IGludG8gYSBodWdlIHNpemVfdC4KKysJICovCisr CWlmICh0YWlsX3NpemUgPCAwIHx8IHRhaWxfc2l6ZSA+IGRzdF9jYXBhY2l0eSkgeworKwkJbnRm c19sb2dfZXJyb3IoIkludmFsaWQgdGFpbF9zaXplICVkIChkc3QgY2FwYWNpdHkgJWQpIGluICIK KysJCQkJIm50ZnNfaWJfY29weV90YWlsXG4iLCB0YWlsX3NpemUsIGRzdF9jYXBhY2l0eSk7Cisr CQlmcmVlKGRzdCk7CisrCQllcnJubyA9IEVJTzsKKysJCXJldHVybiBTVEFUVVNfRVJST1I7Cisr CX0KKysKKyAJbWVtY3B5KG50ZnNfaWVfZ2V0X2ZpcnN0KCZkc3QtPmluZGV4KSwgaWVfaGVhZCwg dGFpbF9zaXplKTsKKyAJCisgCWRzdC0+aW5kZXguaW5kZXhfbGVuZ3RoID0gY3B1X3RvX2xlMzIo dGFpbF9zaXplICsgCgpkaWZmIC0tZ2l0IGEvNV9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi00 NjU3MS5wYXRjaCBiLzVfbnRmcy0zZ18yMDIyLjEwLjMtQ1ZFLTIwMjYtNDY1NzEucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWExZjhmMgotLS0gL2Rldi9udWxsCisr KyBiLzVfbnRmcy0zZ18yMDIyLjEwLjMtQ1ZFLTIwMjYtNDY1NzEucGF0Y2gKQEAgLTAsMCArMSwy NyBAQAorZGlmZiAtLWdpdCBhL2xpYm50ZnMtM2cvcmVwYXJzZS5jIGIvbGlibnRmcy0zZy9yZXBh cnNlLmMKK2luZGV4IDc2ZGJlMmYxYi4uNTQ4NThjYWE3IDEwMDY0NAorLS0tIGEvbGlibnRmcy0z Zy9yZXBhcnNlLmMKKysrKyBiL2xpYm50ZnMtM2cvcmVwYXJzZS5jCitAQCAtMTk2LDExICsxOTYs MTkgQEAgc3RhdGljIHU2NCBudGZzX2ZpeF9maWxlX25hbWUobnRmc19pbm9kZSAqZGlyX25pLCBu dGZzY2hhciAqdW5hbWUsCisgCQkJCWxlbXJlZiA9IGVudHJ5LT5pbmRleGVkX2ZpbGU7CisgCQkJ CW1yZWYgPSBsZTY0X3RvX2NwdShsZW1yZWYpOworIAkJCQlpZiAoTlZvbENhc2VTZW5zaXRpdmUo dm9sKSB8fCAhdm9sLT5sb2Nhc2UpIHsKKy0JCQkJCWZvciAoaT0wOyBpPGZvdW5kLT5maWxlX25h bWVfbGVuZ3RoOyBpKyspCisrCQkJCQlmb3IgKGk9MDsgaTxmb3VuZC0+ZmlsZV9uYW1lX2xlbmd0 aDsKKysJCQkJCQkJaSsrKQorIAkJCQkJCXVuYW1lW2ldID0gZm91bmQtPmZpbGVfbmFtZVtpXTsK KyAJCQkJfSBlbHNlIHsKKy0JCQkJCWZvciAoaT0wOyBpPGZvdW5kLT5maWxlX25hbWVfbGVuZ3Ro OyBpKyspCistCQkJCQkJdW5hbWVbaV0gPSB2b2wtPmxvY2FzZVtsZTE2X3RvX2NwdShmb3VuZC0+ ZmlsZV9uYW1lW2ldKV07CisrCQkJCQlmb3IgKGk9MDsgaTxmb3VuZC0+ZmlsZV9uYW1lX2xlbmd0 aDsKKysJCQkJCQkJaSsrKSB7CisrCQkJCQkJdTE2IHUgPSBsZTE2X3RvX2NwdShmb3VuZC0+Cisr CQkJCQkJCQlmaWxlX25hbWVbaV0pOworKwkJCQkJCXVuYW1lW2ldID0gKHUgPCB2b2wtPnVwY2Fz ZV9sZW4pCisrCQkJCQkJCQk/IHZvbC0+bG9jYXNlW3VdCisrCQkJCQkJCQk6IGZvdW5kLT4KKysJ CQkJCQkJCSAgZmlsZV9uYW1lW2ldOworKwkJCQkJfQorIAkJCQl9CisgCQkJfQorIAkJfQoKZGlm ZiAtLWdpdCBhLzZfbnRmcy0zZ18yMDIyLjEwLjMtQ1ZFLTIwMjYtNDY1NzAucGF0Y2ggYi82X250 ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTQ2NTcwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjQxNjNkZDIKLS0tIC9kZXYvbnVsbAorKysgYi82X250ZnMtM2dfMjAy Mi4xMC4zLUNWRS0yMDI2LTQ2NTcwLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK2RpZmYgLS1naXQg YS9saWJudGZzLTNnL2luZGV4LmMgYi9saWJudGZzLTNnL2luZGV4LmMKK2luZGV4IGU0OGQ2YWFm Yi4uNDc2ODEyOGQyIDEwMDY0NAorLS0tIGEvbGlibnRmcy0zZy9pbmRleC5jCisrKysgYi9saWJu dGZzLTNnL2luZGV4LmMKK0BAIC0yMDU2LDYgKzIwNTYsMTMgQEAgc3RhdGljIElOREVYX0VOVFJZ ICpudGZzX2luZGV4X3dhbGtfZG93bihJTkRFWF9FTlRSWSAqaWUsCisgCQkJLyogZG93biBmcm9t IG5vbi16ZXJvIGxldmVsICovCisgCQkJCisgCQkJaWN0eC0+cGluZGV4Kys7CisrCQkJaWYgKGlj dHgtPnBpbmRleCA+PSBNQVhfUEFSRU5UX1ZDTikgeworKwkJCQllcnJubyA9IEVPUE5PVFNVUFA7 CisrCQkJCW50ZnNfbG9nX3BlcnJvcigiSW5kZXggaXMgb3ZlciAlZCBsZXZlbCBkZWVwIiwKKysJ CQkJCQlNQVhfUEFSRU5UX1ZDTik7CisrCQkJCWVudHJ5ID0gKElOREVYX0VOVFJZKilOVUxMOwor KwkJCQlicmVhazsKKysJCQl9CisgCQl9CisgCQlpY3R4LT5wYXJlbnRfcG9zW2ljdHgtPnBpbmRl eF0gPSAwOworIAkJaWN0eC0+cGFyZW50X3ZjbltpY3R4LT5waW5kZXhdID0gdmNuOwoKZGlmZiAt LWdpdCBhLzdfbnRmcy0zZ18yMDIyLjEwLjMtQ1ZFLTIwMjYtNDY1NzIucGF0Y2ggYi83X250ZnMt M2dfMjAyMi4xMC4zLUNWRS0yMDI2LTQ2NTcyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmIxNjhlZTMKLS0tIC9kZXYvbnVsbAorKysgYi83X250ZnMtM2dfMjAyMi4x MC4zLUNWRS0yMDI2LTQ2NTcyLnBhdGNoCkBAIC0wLDAgKzEsMTMwIEBACitkaWZmIC0tZ2l0IGEv aW5jbHVkZS9udGZzLTNnL2luZGV4LmggYi9pbmNsdWRlL250ZnMtM2cvaW5kZXguaAoraW5kZXgg ZDAwMTg2M2FlLi4xZDU4NDVkNDcgMTAwNjQ0CistLS0gYS9pbmNsdWRlL250ZnMtM2cvaW5kZXgu aAorKysrIGIvaW5jbHVkZS9udGZzLTNnL2luZGV4LmgKK0BAIC0xNDMsNiArMTQzLDcgQEAgZXh0 ZXJuIGludCBudGZzX2luZGV4X2Jsb2NrX2luY29uc2lzdGVudChjb25zdCBJTkRFWF9CTE9DSyAq aWIsIHUzMiBibG9ja19zaXplLAorIAkJCXU2NCBpbnVtLCBWQ04gdmNuKTsKKyBleHRlcm4gaW50 IG50ZnNfaW5kZXhfZW50cnlfaW5jb25zaXN0ZW50KGNvbnN0IElOREVYX0VOVFJZICppZSwKKyAJ CQlDT0xMQVRJT05fUlVMRVMgY29sbGF0aW9uX3J1bGUsIHU2NCBpbnVtKTsKKytleHRlcm4gaW50 IG50ZnNfaWVfc3RyZWFtX2luY29uc2lzdGVudChjb25zdCBJTkRFWF9IRUFERVIgKmloLCB1NjQg aW51bSk7CisgZXh0ZXJuIGludCBudGZzX2luZGV4X2xvb2t1cChjb25zdCB2b2lkICprZXksIGNv bnN0IGludCBrZXlfbGVuLAorIAkJbnRmc19pbmRleF9jb250ZXh0ICppY3R4KSBfX2F0dHJpYnV0 ZV93YXJuX3VudXNlZF9yZXN1bHRfXzsKKyAKK2RpZmYgLS1naXQgYS9saWJudGZzLTNnL2F0dHJp Yi5jIGIvbGlibnRmcy0zZy9hdHRyaWIuYworaW5kZXggZWZiOTE5NDM4Li5jZmMyNDQ2ZTMgMTAw NjQ0CistLS0gYS9saWJudGZzLTNnL2F0dHJpYi5jCisrKysgYi9saWJudGZzLTNnL2F0dHJpYi5j CitAQCAtMzUyOCw2ICszNTI4LDEwIEBAIGludCBudGZzX2F0dHJfaW5jb25zaXN0ZW50KGNvbnN0 IEFUVFJfUkVDT1JEICphLCBjb25zdCBNRlRfUkVGIG1yZWYpCisgCQkJaWYgKGEtPm5vbl9yZXNp ZGVudAorIAkJCSAgICB8fCAobGUzMl90b19jcHUoYS0+dmFsdWVfbGVuZ3RoKQorIAkJCQk8IG9m ZnNldG9mKElOREVYX1JPT1QsIGluZGV4LnJlc2VydmVkKSkKKysJCQkgICAgfHwgKGxlMzJfdG9f Y3B1KGlyLT5pbmRleF9ibG9ja19zaXplKQorKwkJCQk8IE5URlNfQkxPQ0tfU0laRSkKKysJCQkg ICAgfHwgKGxlMzJfdG9fY3B1KGlyLT5pbmRleF9ibG9ja19zaXplKQorKwkJCQkmIChsZTMyX3Rv X2NwdShpci0+aW5kZXhfYmxvY2tfc2l6ZSkgLSAxKSkKKyAJCQkgICAgfHwgKGxlMzJfdG9fY3B1 KGlyLT5pbmRleC5lbnRyaWVzX29mZnNldCkKKyAJCQkJPCBzaXplb2YoSU5ERVhfSEVBREVSKSkK KyAJCQkgICAgfHwgKGxlMzJfdG9fY3B1KGlyLT5pbmRleC5pbmRleF9sZW5ndGgpCitAQCAtMzU0 Miw2ICszNTQ2LDkgQEAgaW50IG50ZnNfYXR0cl9pbmNvbnNpc3RlbnQoY29uc3QgQVRUUl9SRUNP UkQgKmEsIGNvbnN0IE1GVF9SRUYgbXJlZikKKyAJCQkJCShsb25nIGxvbmcpaW51bSk7CisgCQkJ CWVycm5vID0gRUlPOworIAkJCQlyZXQgPSAtMTsKKysJCQl9IGVsc2UgaWYgKG50ZnNfaWVfc3Ry ZWFtX2luY29uc2lzdGVudCgmaXItPmluZGV4LCBpbnVtKSkgeworKwkJCQllcnJubyA9IEVJTzsK KysJCQkJcmV0ID0gLTE7CisgCQkJfQorIAkJCWJyZWFrOworIAkJY2FzZSBBVF9TVEFOREFSRF9J TkZPUk1BVElPTiA6CitkaWZmIC0tZ2l0IGEvbGlibnRmcy0zZy9pbmRleC5jIGIvbGlibnRmcy0z Zy9pbmRleC5jCitpbmRleCBlNDhkNmFhZmIuLmM5NjUxYTYyYyAxMDA2NDQKKy0tLSBhL2xpYm50 ZnMtM2cvaW5kZXguYworKysrIGIvbGlibnRmcy0zZy9pbmRleC5jCitAQCAtNTA0LDYgKzUwNCw4 IEBAIGludCBudGZzX2luZGV4X2Jsb2NrX2luY29uc2lzdGVudChjb25zdCBJTkRFWF9CTE9DSyAq aWIsIHUzMiBibG9ja19zaXplLAorIAkJCQkodW5zaWduZWQgbG9uZyBsb25nKWludW0pOworIAkJ cmV0dXJuIC0xOworIAl9CisrCWlmIChudGZzX2llX3N0cmVhbV9pbmNvbnNpc3RlbnQoJmliLT5p bmRleCwgaW51bSkpCisrCQlyZXR1cm4gLTE7CisgCisgCXJldHVybiAoMCk7CisgfQorQEAgLTU2 MCw3ICs1NjIsNDAgQEAgaW50IG50ZnNfaW5kZXhfZW50cnlfaW5jb25zaXN0ZW50KGNvbnN0IElO REVYX0VOVFJZICppZSwKKyAJcmV0dXJuIChyZXQpOworIH0KKyAKKy0vKiogCisraW50IG50ZnNf aWVfc3RyZWFtX2luY29uc2lzdGVudChjb25zdCBJTkRFWF9IRUFERVIgKmloLCB1NjQgaW51bSkK Kyt7CisrCWNvbnN0IHU4ICppZXNfc3RhcnQgPSAoY29uc3QgdTggKilpaCArIGxlMzJfdG9fY3B1 KGloLT5lbnRyaWVzX29mZnNldCk7CisrCWNvbnN0IHU4ICppZXNfZW5kID0gKGNvbnN0IHU4ICop aWggKyBsZTMyX3RvX2NwdShpaC0+aW5kZXhfbGVuZ3RoKTsKKysJY29uc3QgdTggKmllOworKwor KwludGZzX2xvZ190cmFjZSgiRW50ZXJpbmdcbiIpOworKworKwlmb3IgKGllID0gaWVzX3N0YXJ0 OyBpZSA8IGllc19lbmQ7ICkgeworKwkJdTMyIGxlbjsKKysJCWNvbnN0IElOREVYX0VOVFJZICpl bnQgPSAoY29uc3QgSU5ERVhfRU5UUlkgKilpZTsKKysKKysJCWlmICgoc2l6ZV90KShpZXNfZW5k IC0gaWUpIDwgc2l6ZW9mKElOREVYX0VOVFJZX0hFQURFUikpCisrCQkJZ290byBlcnI7CisrCQls ZW4gPSBsZTE2X3RvX2NwdShlbnQtPmxlbmd0aCk7CisrCQlpZiAobGVuIDwgc2l6ZW9mKElOREVY X0VOVFJZX0hFQURFUikgfHwgKGxlbiAmIDcpKQorKwkJCWdvdG8gZXJyOworKwkJaWYgKChzaXpl X3QpKGllc19lbmQgLSBpZSkgPCBsZW4pCisrCQkJZ290byBlcnI7CisrCQlpZiAoZW50LT5pZV9m bGFncyAmIElOREVYX0VOVFJZX0VORCkgeworKwkJCS8qIEVORCBtdXN0IHRlcm1pbmF0ZSB0aGUg c3RyZWFtIGV4YWN0bHkuICovCisrCQkJaWYgKGllICsgbGVuICE9IGllc19lbmQpCisrCQkJCWdv dG8gZXJyOworKwkJCXJldHVybiAwOworKwkJfQorKwkJaWUgKz0gbGVuOworKwl9CisrZXJyOgor KwludGZzX2xvZ19lcnJvcigiQ29ycnVwdCBpbmRleCBlbnRyeSBzdHJlYW0gaW4gaW5vZGUgJWxs ZFxuIiwKKysJCQkobG9uZyBsb25nKWludW0pOworKwlyZXR1cm4gLTE7CisrfQorKworKy8qKgor ICAqIEZpbmQgYSBrZXkgaW4gdGhlIGluZGV4IGJsb2NrLgorICAqIAorICAqIFJldHVybiB2YWx1 ZXM6CitAQCAtMTA5MSwxNCArMTEyNiwxNiBAQCBvdXQ6CisgCisgc3RhdGljIElOREVYX0JMT0NL ICpudGZzX2lyX3RvX2liKElOREVYX1JPT1QgKmlyLCBWQ04gaWJfdmNuKQorIHsKKysJdTMyIGli X3NpemU7CisgCUlOREVYX0JMT0NLICppYjsKKyAJSU5ERVhfRU5UUlkgKmllX2xhc3Q7CisgCWNo YXIgKmllc19zdGFydCwgKmllc19lbmQ7CisgCWludCBpOworIAkKKyAJbnRmc19sb2dfdHJhY2Uo IkVudGVyaW5nXG4iKTsKKy0JCistCWliID0gbnRmc19pYl9hbGxvYyhpYl92Y24sIGxlMzJfdG9f Y3B1KGlyLT5pbmRleF9ibG9ja19zaXplKSwgTEVBRl9OT0RFKTsKKysKKysJaWJfc2l6ZSA9IGxl MzJfdG9fY3B1KGlyLT5pbmRleF9ibG9ja19zaXplKTsKKysJaWIgPSBudGZzX2liX2FsbG9jKGli X3ZjbiwgaWJfc2l6ZSwgTEVBRl9OT0RFKTsKKyAJaWYgKCFpYikKKyAJCXJldHVybiBOVUxMOwor IAkKK0BAIC0xMTEwLDYgKzExNDcsMTggQEAgc3RhdGljIElOREVYX0JMT0NLICpudGZzX2lyX3Rv X2liKElOREVYX1JPT1QgKmlyLCBWQ04gaWJfdmNuKQorIAkgKiBhcyB3ZWxsLCB3aGljaCBjYW4g bmV2ZXIgaGF2ZSBhbnkgZGF0YS4KKyAJICovCisgCWkgPSAoY2hhciAqKWllX2xhc3QgLSBpZXNf c3RhcnQgKyBsZTE2X3RvX2NwdShpZV9sYXN0LT5sZW5ndGgpOworKworKwlpZiAob2Zmc2V0b2Yo SU5ERVhfQkxPQ0ssIGluZGV4KSArIGxlMzJfdG9fY3B1KGliLT5pbmRleC5lbnRyaWVzX29mZnNl dCkKKysJCQkrIGkgPiBpYl9zaXplKQorKwl7CisrCQludGZzX2xvZ19lcnJvcigiTGFzdCBlbnRy eSBpbiBpbmRleCByb290IG92ZXJmbG93cyB0aGUgaW5kZXggIgorKwkJCQkiYmxvY2sgc2l6ZTog JWQgKGluZGV4IGJsb2NrIHNpemU6ICVsdSlcbiIsCisrCQkJCWksICh1bnNpZ25lZCBsb25nKWli X3NpemUpOworKwkJZnJlZShpYik7CisrCQllcnJubyA9IEVJTzsKKysJCXJldHVybiBOVUxMOwor Kwl9CisrCisgCW1lbWNweShudGZzX2llX2dldF9maXJzdCgmaWItPmluZGV4KSwgaWVzX3N0YXJ0 LCBpKTsKKyAJCisgCWliLT5pbmRleC5paF9mbGFncyA9IGlyLT5pbmRleC5paF9mbGFnczsKCmRp ZmYgLS1naXQgYS84X250ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTU2MTM1LnBhdGNoIGIvOF9u dGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi01NjEzNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5iNmRhZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvOF9udGZzLTNnXzIw MjIuMTAuMy1DVkUtMjAyNi01NjEzNS5wYXRjaApAQCAtMCwwICsxLDE1MSBAQAorZGlmZiAtLWdp dCBhL2luY2x1ZGUvbnRmcy0zZy9hY2xzLmggYi9pbmNsdWRlL250ZnMtM2cvYWNscy5oCitpbmRl eCA5MzI3OTFlOTcuLjRmMzYzODljNSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbnRmcy0zZy9hY2xz LmgKKysrKyBiL2luY2x1ZGUvbnRmcy0zZy9hY2xzLmgKK0BAIC0xNjgsNiArMTY4LDggQEAgY2hh ciAqbnRmc19idWlsZF9kZXNjcl9wb3NpeChzdHJ1Y3QgTUFQUElORyogY29uc3QgbWFwcGluZ1td LAorIAorICNlbmRpZiAvKiBQT1NJWEFDTFMgKi8KKyAKKytpbnQgbnRmc19pbmhlcml0X2FjbF9l eHRyYV9zaXplKGNvbnN0IEFDTCAqYWNsLCBjb25zdCBTSUQgKnVzaWQsCisrCQkJY29uc3QgU0lE ICpnc2lkKTsKKyBpbnQgbnRmc19pbmhlcml0X2FjbChjb25zdCBBQ0wgKm9sZGFjbCwgQUNMICpu ZXdhY2wsCisgCQkJY29uc3QgU0lEICp1c2lkLCBjb25zdCBTSUQgKmdzaWQsCisgCQkJQk9PTCBm b3JkaXIsIGxlMTYgaW5oZXJpdGVkKTsKK2RpZmYgLS1naXQgYS9saWJudGZzLTNnL2FjbHMuYyBi L2xpYm50ZnMtM2cvYWNscy5jCitpbmRleCA5ZjE2ZmVjZDAuLmY5ZWQ1OGY0MCAxMDA2NDQKKy0t LSBhL2xpYm50ZnMtM2cvYWNscy5jCisrKysgYi9saWJudGZzLTNnL2FjbHMuYworQEAgLTU2MCw3 ICs1NjAsOSBAQCBzdGF0aWMgQk9PTCB2YWxpZF9hY2woY29uc3QgQUNMICpwYWNsLCB1bnNpZ25l ZCBpbnQgZW5kKQorIAkJCXBhY2UgPSAoY29uc3QgQUNDRVNTX0FMTE9XRURfQUNFKikKKyAJCQkJ JigoY29uc3QgY2hhciopcGFjbClbb2ZmYWNlXTsKKyAJCQlhY2VzeiA9IGxlMTZfdG9fY3B1KHBh Y2UtPnNpemUpOworLQkJCXN3aXRjaCAocGFjZS0+dHlwZSkgeworKwkJCWlmIChhY2VzeiA8IHNp emVvZihBQ0VfSEVBREVSKSkKKysJCQkJb2sgPSBGQUxTRTsKKysJCQllbHNlIHN3aXRjaCAocGFj ZS0+dHlwZSkgeworIAkJCWNhc2UgQUNDRVNTX0FMTE9XRURfQUNFX1RZUEUgOgorIAkJCWNhc2Ug QUNDRVNTX0RFTklFRF9BQ0VfVFlQRSA6CisgCQkJCXdhbnRzeiA9IG50ZnNfc2lkX3NpemUoJnBh Y2UtPnNpZCkgKyA4OworQEAgLTY4MSw2ICs2ODMsODcgQEAgQk9PTCBudGZzX3ZhbGlkX2Rlc2Ny KGNvbnN0IGNoYXIgKnNlY3VyYXR0ciwgdW5zaWduZWQgaW50IGF0dHJzeikKKyAJcmV0dXJuIChv ayk7CisgfQorIAorKy8qKgorKyAqIG50ZnNfaW5oZXJpdF9hY2xfZXh0cmFfc2l6ZTogY29tcHV0 ZSBjcmVhdG9yIFNJRCBpbmhlcml0YW5jZSBzbGFjaworKyAqIEBhY2w6IEFDTCB0byBzY2FuCisr ICogQHVzaWQ6IG93bmVyIFNJRCB0byBzdWJzdGl0dXRlIGZvciBDUkVBVE9SX09XTkVSCisrICog QGdzaWQ6IGdyb3VwIFNJRCB0byBzdWJzdGl0dXRlIGZvciBDUkVBVE9SX0dST1VQCisrICoKKysg KiBXYWxrcyBAYWNsIGJvdW5kZWQgYnkgYWNsLT5zaXplLCBhZGRpbmcgc2xhY2sgZm9yIEFMTE9X IGFuZCBERU5ZIEFDRXMKKysgKiB3aG9zZSBTSUQgbWF0Y2hlcyBlaXRoZXIgY3JlYXRvciBwbGFj ZWhvbGRlci4gIG50ZnNfaW5oZXJpdF9hY2woKSBjYW4KKysgKiByZXBsYWNlIHRob3NlIHBsYWNl aG9sZGVycyBieSBAdXNpZCBvciBAZ3NpZCBhbmQsIGZvciBkaXJlY3RvcmllcywgY2FuCisrICog YWxzbyBrZWVwIGEgdmVyYmF0aW0gY29weSBmb3IgY2hpbGQgaW5oZXJpdGFuY2UuICBDb3VudCB0 aGUgd29yc3QtY2FzZQorKyAqIGV4dHJhIGJ5dGVzIHNvIHRoZSBpbmhlcml0ZWQgZGVzY3JpcHRv ciBhbGxvY2F0aW9uIGNhbm5vdCBiZSBvdmVycnVuLgorKyAqCisrICogUmV0dXJuOiBleHRyYSBi eXRlcyBuZWVkZWQsIG9yIDAgaWYgQGFjbCBpcyBOVUxMIG9yIHN0cnVjdHVyYWxseSByZWplY3Rl ZC4KKysgKi8KKysKKytpbnQgbnRmc19pbmhlcml0X2FjbF9leHRyYV9zaXplKGNvbnN0IEFDTCAq YWNsLAorKwkJCWNvbnN0IFNJRCAqdXNpZCwgY29uc3QgU0lEICpnc2lkKQorK3sKKysJY29uc3Qg QUNDRVNTX0FMTE9XRURfQUNFICphY2U7CisrCXVuc2lnbmVkIGludCBvZmY7CisrCXVuc2lnbmVk IGludCBhY2xfc2l6ZTsKKysJdW5zaWduZWQgaW50IGFjZXN6OworKwl1bnNpZ25lZCBpbnQgc2lk c3o7CisrCWludCB1c2lkc3o7CisrCWludCBnc2lkc3o7CisrCWludCBvd25lcnNpZHN6OworKwlp bnQgZ3JvdXBzaWRzejsKKysJaW50IG9sZGNudDsKKysJaW50IG5hY2U7CisrCWludCBleHRyYTsK KysJQk9PTCB1c2lkX2lzX2dyb3VwX3NpZDsKKysKKysJZXh0cmEgPSAwOworKwlpZiAoIWFjbCB8 fCAhdXNpZCB8fCAhZ3NpZCkKKysJCXJldHVybiAoMCk7CisrCWFjbF9zaXplID0gbGUxNl90b19j cHUoYWNsLT5zaXplKTsKKysJaWYgKGFjbF9zaXplIDwgc2l6ZW9mKEFDTCkpCisrCQlyZXR1cm4g KDApOworKwlvbGRjbnQgPSBsZTE2X3RvX2NwdShhY2wtPmFjZV9jb3VudCk7CisrCXVzaWRzeiA9 IG50ZnNfc2lkX3NpemUodXNpZCk7CisrCWdzaWRzeiA9IG50ZnNfc2lkX3NpemUoZ3NpZCk7Cisr CW93bmVyc2lkc3ogPSBzaXplb2Yob3duZXJzaWRieXRlcyk7CisrCWdyb3Vwc2lkc3ogPSBzaXpl b2YoZ3JvdXBzaWRieXRlcyk7CisrCXVzaWRfaXNfZ3JvdXBfc2lkID0gbnRmc19zYW1lX3NpZCh1 c2lkLCBncm91cHNpZCk7CisrCW9mZiA9IHNpemVvZihBQ0wpOworKwlmb3IgKG5hY2UgPSAwOyBu YWNlIDwgb2xkY250OyBuYWNlKyspIHsKKysJCWlmIChvZmYgKyA4ID4gYWNsX3NpemUpCisrCQkJ YnJlYWs7CisrCQlhY2UgPSAoY29uc3QgQUNDRVNTX0FMTE9XRURfQUNFKikoKGNvbnN0IGNoYXIq KWFjbCArIG9mZik7CisrCQlhY2VzeiA9IGxlMTZfdG9fY3B1KGFjZS0+c2l6ZSk7CisrCQlpZiAo YWNlc3ogPCA4IHx8IGFjZXN6ID4gYWNsX3NpemUgLSBvZmYpCisrCQkJYnJlYWs7CisrCQlzd2l0 Y2ggKGFjZS0+dHlwZSkgeworKwkJY2FzZSBBQ0NFU1NfQUxMT1dFRF9BQ0VfVFlQRSA6CisrCQlj YXNlIEFDQ0VTU19ERU5JRURfQUNFX1RZUEUgOgorKwkJCWlmICgoYWNlc3ogPj0gOCArIHNpemVv Zihvd25lcnNpZGJ5dGVzKSkKKysJCQkJCSYmIG50ZnNfdmFsaWRfc2lkKCZhY2UtPnNpZCkpIHsK KysJCQkJc2lkc3ogPSBudGZzX3NpZF9zaXplKCZhY2UtPnNpZCk7CisrCQkJCWlmIChzaWRzeiA8 PSBhY2VzeiAtIDgpIHsKKysJCQkJCWlmIChudGZzX3NhbWVfc2lkKCZhY2UtPnNpZCwgb3duZXJz aWQpKQorKwkJCQkJeworKwkJCQkJCWV4dHJhICs9IHVzaWRzegktIG93bmVyc2lkc3ogKworKwkJ CQkJCQkJMjA7CisrCQkJCQkJaWYgKHVzaWRfaXNfZ3JvdXBfc2lkKQorKwkJCQkJCQlleHRyYSAr PSBnc2lkc3oJLQorKwkJCQkJCQkJZ3JvdXBzaWRzeiArIDIwOworKwkJCQkJfQorKwkJCQkJaWYg KG50ZnNfc2FtZV9zaWQoJmFjZS0+c2lkLCBncm91cHNpZCkpCisrCQkJCQkJZXh0cmEgKz0gZ3Np ZHN6CS0gZ3JvdXBzaWRzeiArCisrCQkJCQkJCQkyMDsKKysJCQkJfQorKwkJCX0KKysJCQlicmVh azsKKysJCWRlZmF1bHQgOgorKwkJCWJyZWFrOworKwkJfQorKwkJb2ZmICs9IGFjZXN6OworKwl9 CisrCXJldHVybiBleHRyYTsKKyt9CisrCisgLyoKKyAgKgkJQ29weSB0aGUgaW5oZXJpdGFibGUg cGFydHMgb2YgYW4gQUNMCisgICoKK2RpZmYgLS1naXQgYS9saWJudGZzLTNnL3NlY3VyaXR5LmMg Yi9saWJudGZzLTNnL3NlY3VyaXR5LmMKK2luZGV4IGFjZWUwYTVlZC4uZDBlMDMwZTE5IDEwMDY0 NAorLS0tIGEvbGlibnRmcy0zZy9zZWN1cml0eS5jCisrKysgYi9saWJudGZzLTNnL3NlY3VyaXR5 LmMKK0BAIC0zOTQ0LDYgKzM5NDQsMzAgQEAgc3RhdGljIGxlMzIgYnVpbGRfaW5oZXJpdGVkX2lk KHN0cnVjdCBTRUNVUklUWV9DT05URVhUICpzY3gsCisgCXVzaWRzeiA9IG50ZnNfc2lkX3NpemUo dXNpZCk7CisgCWdzaWRzeiA9IG50ZnNfc2lkX3NpemUoZ3NpZCk7CisgCW5ld2F0dHJzeiA9IHBh cmVudGF0dHJzeiArIDMqdXNpZHN6ICsgMypnc2lkc3o7CisrCS8qCisrCSAqIFRoZSArMyp1c2lk c3ogKyAzKmdzaWRzeiBzbGFjayBhYm92ZSBvbmx5IGNvdmVycyBhIGZldyBjcmVhdG9yIFNJRAor KwkgKiBleHBhbnNpb25zIGR1cmluZyBudGZzX2luaGVyaXRfYWNsKCkuICBBZGQgd29yc3QtY2Fz ZSBzbGFjayBmb3IgZXZlcnkKKysJICogQUxMT1cvREVOWSBjcmVhdG9yLW93bmVyIGFuZCBjcmVh dG9yLWdyb3VwIEFDRSBpbiBib3RoIHRoZSBwYXJlbnQKKysJICogREFDTCBhbmQgU0FDTC4KKysJ ICovCisrCWlmIChwcGhlYWQtPmRhY2wpIHsKKysJCW9mZnBhY2wgPSBsZTMyX3RvX2NwdShwcGhl YWQtPmRhY2wpOworKwkJaWYgKCh1bnNpZ25lZCBpbnQpb2ZmcGFjbCArIHNpemVvZihBQ0wpIDw9 CisrCQkJCSh1bnNpZ25lZCBpbnQpcGFyZW50YXR0cnN6KSB7CisrCQkJcHBhY2wgPSAoY29uc3Qg QUNMKikmcGFyZW50YXR0cltvZmZwYWNsXTsKKysJCQluZXdhdHRyc3ogKz0gbnRmc19pbmhlcml0 X2FjbF9leHRyYV9zaXplKHBwYWNsLAorKwkJCQkJdXNpZCwgZ3NpZCk7CisrCQl9CisrCX0KKysJ aWYgKHBwaGVhZC0+c2FjbCkgeworKwkJb2ZmcGFjbCA9IGxlMzJfdG9fY3B1KHBwaGVhZC0+c2Fj bCk7CisrCQlpZiAoKHVuc2lnbmVkIGludClvZmZwYWNsICsgc2l6ZW9mKEFDTCkgPD0KKysJCQkJ KHVuc2lnbmVkIGludClwYXJlbnRhdHRyc3opIHsKKysJCQlwcGFjbCA9IChjb25zdCBBQ0wqKSZw YXJlbnRhdHRyW29mZnBhY2xdOworKwkJCW5ld2F0dHJzeiArPSBudGZzX2luaGVyaXRfYWNsX2V4 dHJhX3NpemUocHBhY2wsCisrCQkJCQl1c2lkLCBnc2lkKTsKKysJCX0KKysJfQorIAlpZiAoZm9y ZGlyKQorIAkJbmV3YXR0cnN6ICo9IDI7CisgCW5ld2F0dHIgPSAoY2hhciopbnRmc19tYWxsb2Mo bmV3YXR0cnN6KTsKCmRpZmYgLS1naXQgYS85X250ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTU2 MTM2LnBhdGNoIGIvOV9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi01NjEzNi5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTY4ZWUzCi0tLSAvZGV2L251bGwKKysr IGIvOV9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi01NjEzNi5wYXRjaApAQCAtMCwwICsxLDEz MCBAQAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvbnRmcy0zZy9pbmRleC5oIGIvaW5jbHVkZS9udGZz LTNnL2luZGV4LmgKK2luZGV4IGQwMDE4NjNhZS4uMWQ1ODQ1ZDQ3IDEwMDY0NAorLS0tIGEvaW5j bHVkZS9udGZzLTNnL2luZGV4LmgKKysrKyBiL2luY2x1ZGUvbnRmcy0zZy9pbmRleC5oCitAQCAt MTQzLDYgKzE0Myw3IEBAIGV4dGVybiBpbnQgbnRmc19pbmRleF9ibG9ja19pbmNvbnNpc3RlbnQo Y29uc3QgSU5ERVhfQkxPQ0sgKmliLCB1MzIgYmxvY2tfc2l6ZSwKKyAJCQl1NjQgaW51bSwgVkNO IHZjbik7CisgZXh0ZXJuIGludCBudGZzX2luZGV4X2VudHJ5X2luY29uc2lzdGVudChjb25zdCBJ TkRFWF9FTlRSWSAqaWUsCisgCQkJQ09MTEFUSU9OX1JVTEVTIGNvbGxhdGlvbl9ydWxlLCB1NjQg aW51bSk7CisrZXh0ZXJuIGludCBudGZzX2llX3N0cmVhbV9pbmNvbnNpc3RlbnQoY29uc3QgSU5E RVhfSEVBREVSICppaCwgdTY0IGludW0pOworIGV4dGVybiBpbnQgbnRmc19pbmRleF9sb29rdXAo Y29uc3Qgdm9pZCAqa2V5LCBjb25zdCBpbnQga2V5X2xlbiwKKyAJCW50ZnNfaW5kZXhfY29udGV4 dCAqaWN0eCkgX19hdHRyaWJ1dGVfd2Fybl91bnVzZWRfcmVzdWx0X187CisgCitkaWZmIC0tZ2l0 IGEvbGlibnRmcy0zZy9hdHRyaWIuYyBiL2xpYm50ZnMtM2cvYXR0cmliLmMKK2luZGV4IGVmYjkx OTQzOC4uY2ZjMjQ0NmUzIDEwMDY0NAorLS0tIGEvbGlibnRmcy0zZy9hdHRyaWIuYworKysrIGIv bGlibnRmcy0zZy9hdHRyaWIuYworQEAgLTM1MjgsNiArMzUyOCwxMCBAQCBpbnQgbnRmc19hdHRy X2luY29uc2lzdGVudChjb25zdCBBVFRSX1JFQ09SRCAqYSwgY29uc3QgTUZUX1JFRiBtcmVmKQor IAkJCWlmIChhLT5ub25fcmVzaWRlbnQKKyAJCQkgICAgfHwgKGxlMzJfdG9fY3B1KGEtPnZhbHVl X2xlbmd0aCkKKyAJCQkJPCBvZmZzZXRvZihJTkRFWF9ST09ULCBpbmRleC5yZXNlcnZlZCkpCisr CQkJICAgIHx8IChsZTMyX3RvX2NwdShpci0+aW5kZXhfYmxvY2tfc2l6ZSkKKysJCQkJPCBOVEZT X0JMT0NLX1NJWkUpCisrCQkJICAgIHx8IChsZTMyX3RvX2NwdShpci0+aW5kZXhfYmxvY2tfc2l6 ZSkKKysJCQkJJiAobGUzMl90b19jcHUoaXItPmluZGV4X2Jsb2NrX3NpemUpIC0gMSkpCisgCQkJ ICAgIHx8IChsZTMyX3RvX2NwdShpci0+aW5kZXguZW50cmllc19vZmZzZXQpCisgCQkJCTwgc2l6 ZW9mKElOREVYX0hFQURFUikpCisgCQkJICAgIHx8IChsZTMyX3RvX2NwdShpci0+aW5kZXguaW5k ZXhfbGVuZ3RoKQorQEAgLTM1NDIsNiArMzU0Niw5IEBAIGludCBudGZzX2F0dHJfaW5jb25zaXN0 ZW50KGNvbnN0IEFUVFJfUkVDT1JEICphLCBjb25zdCBNRlRfUkVGIG1yZWYpCisgCQkJCQkobG9u ZyBsb25nKWludW0pOworIAkJCQllcnJubyA9IEVJTzsKKyAJCQkJcmV0ID0gLTE7CisrCQkJfSBl bHNlIGlmIChudGZzX2llX3N0cmVhbV9pbmNvbnNpc3RlbnQoJmlyLT5pbmRleCwgaW51bSkpIHsK KysJCQkJZXJybm8gPSBFSU87CisrCQkJCXJldCA9IC0xOworIAkJCX0KKyAJCQlicmVhazsKKyAJ CWNhc2UgQVRfU1RBTkRBUkRfSU5GT1JNQVRJT04gOgorZGlmZiAtLWdpdCBhL2xpYm50ZnMtM2cv aW5kZXguYyBiL2xpYm50ZnMtM2cvaW5kZXguYworaW5kZXggZTQ4ZDZhYWZiLi5jOTY1MWE2MmMg MTAwNjQ0CistLS0gYS9saWJudGZzLTNnL2luZGV4LmMKKysrKyBiL2xpYm50ZnMtM2cvaW5kZXgu YworQEAgLTUwNCw2ICs1MDQsOCBAQCBpbnQgbnRmc19pbmRleF9ibG9ja19pbmNvbnNpc3RlbnQo Y29uc3QgSU5ERVhfQkxPQ0sgKmliLCB1MzIgYmxvY2tfc2l6ZSwKKyAJCQkJKHVuc2lnbmVkIGxv bmcgbG9uZylpbnVtKTsKKyAJCXJldHVybiAtMTsKKyAJfQorKwlpZiAobnRmc19pZV9zdHJlYW1f aW5jb25zaXN0ZW50KCZpYi0+aW5kZXgsIGludW0pKQorKwkJcmV0dXJuIC0xOworIAorIAlyZXR1 cm4gKDApOworIH0KK0BAIC01NjAsNyArNTYyLDQwIEBAIGludCBudGZzX2luZGV4X2VudHJ5X2lu Y29uc2lzdGVudChjb25zdCBJTkRFWF9FTlRSWSAqaWUsCisgCXJldHVybiAocmV0KTsKKyB9Cisg CistLyoqIAorK2ludCBudGZzX2llX3N0cmVhbV9pbmNvbnNpc3RlbnQoY29uc3QgSU5ERVhfSEVB REVSICppaCwgdTY0IGludW0pCisreworKwljb25zdCB1OCAqaWVzX3N0YXJ0ID0gKGNvbnN0IHU4 ICopaWggKyBsZTMyX3RvX2NwdShpaC0+ZW50cmllc19vZmZzZXQpOworKwljb25zdCB1OCAqaWVz X2VuZCA9IChjb25zdCB1OCAqKWloICsgbGUzMl90b19jcHUoaWgtPmluZGV4X2xlbmd0aCk7Cisr CWNvbnN0IHU4ICppZTsKKysKKysJbnRmc19sb2dfdHJhY2UoIkVudGVyaW5nXG4iKTsKKysKKysJ Zm9yIChpZSA9IGllc19zdGFydDsgaWUgPCBpZXNfZW5kOyApIHsKKysJCXUzMiBsZW47CisrCQlj b25zdCBJTkRFWF9FTlRSWSAqZW50ID0gKGNvbnN0IElOREVYX0VOVFJZICopaWU7CisrCisrCQlp ZiAoKHNpemVfdCkoaWVzX2VuZCAtIGllKSA8IHNpemVvZihJTkRFWF9FTlRSWV9IRUFERVIpKQor KwkJCWdvdG8gZXJyOworKwkJbGVuID0gbGUxNl90b19jcHUoZW50LT5sZW5ndGgpOworKwkJaWYg KGxlbiA8IHNpemVvZihJTkRFWF9FTlRSWV9IRUFERVIpIHx8IChsZW4gJiA3KSkKKysJCQlnb3Rv IGVycjsKKysJCWlmICgoc2l6ZV90KShpZXNfZW5kIC0gaWUpIDwgbGVuKQorKwkJCWdvdG8gZXJy OworKwkJaWYgKGVudC0+aWVfZmxhZ3MgJiBJTkRFWF9FTlRSWV9FTkQpIHsKKysJCQkvKiBFTkQg bXVzdCB0ZXJtaW5hdGUgdGhlIHN0cmVhbSBleGFjdGx5LiAqLworKwkJCWlmIChpZSArIGxlbiAh PSBpZXNfZW5kKQorKwkJCQlnb3RvIGVycjsKKysJCQlyZXR1cm4gMDsKKysJCX0KKysJCWllICs9 IGxlbjsKKysJfQorK2VycjoKKysJbnRmc19sb2dfZXJyb3IoIkNvcnJ1cHQgaW5kZXggZW50cnkg c3RyZWFtIGluIGlub2RlICVsbGRcbiIsCisrCQkJKGxvbmcgbG9uZylpbnVtKTsKKysJcmV0dXJu IC0xOworK30KKysKKysvKioKKyAgKiBGaW5kIGEga2V5IGluIHRoZSBpbmRleCBibG9jay4KKyAg KiAKKyAgKiBSZXR1cm4gdmFsdWVzOgorQEAgLTEwOTEsMTQgKzExMjYsMTYgQEAgb3V0OgorIAor IHN0YXRpYyBJTkRFWF9CTE9DSyAqbnRmc19pcl90b19pYihJTkRFWF9ST09UICppciwgVkNOIGli X3ZjbikKKyB7CisrCXUzMiBpYl9zaXplOworIAlJTkRFWF9CTE9DSyAqaWI7CisgCUlOREVYX0VO VFJZICppZV9sYXN0OworIAljaGFyICppZXNfc3RhcnQsICppZXNfZW5kOworIAlpbnQgaTsKKyAJ CisgCW50ZnNfbG9nX3RyYWNlKCJFbnRlcmluZ1xuIik7CistCQorLQlpYiA9IG50ZnNfaWJfYWxs b2MoaWJfdmNuLCBsZTMyX3RvX2NwdShpci0+aW5kZXhfYmxvY2tfc2l6ZSksIExFQUZfTk9ERSk7 CisrCisrCWliX3NpemUgPSBsZTMyX3RvX2NwdShpci0+aW5kZXhfYmxvY2tfc2l6ZSk7CisrCWli ID0gbnRmc19pYl9hbGxvYyhpYl92Y24sIGliX3NpemUsIExFQUZfTk9ERSk7CisgCWlmICghaWIp CisgCQlyZXR1cm4gTlVMTDsKKyAJCitAQCAtMTExMCw2ICsxMTQ3LDE4IEBAIHN0YXRpYyBJTkRF WF9CTE9DSyAqbnRmc19pcl90b19pYihJTkRFWF9ST09UICppciwgVkNOIGliX3ZjbikKKyAJICog YXMgd2VsbCwgd2hpY2ggY2FuIG5ldmVyIGhhdmUgYW55IGRhdGEuCisgCSAqLworIAlpID0gKGNo YXIgKilpZV9sYXN0IC0gaWVzX3N0YXJ0ICsgbGUxNl90b19jcHUoaWVfbGFzdC0+bGVuZ3RoKTsK KysKKysJaWYgKG9mZnNldG9mKElOREVYX0JMT0NLLCBpbmRleCkgKyBsZTMyX3RvX2NwdShpYi0+ aW5kZXguZW50cmllc19vZmZzZXQpCisrCQkJKyBpID4gaWJfc2l6ZSkKKysJeworKwkJbnRmc19s b2dfZXJyb3IoIkxhc3QgZW50cnkgaW4gaW5kZXggcm9vdCBvdmVyZmxvd3MgdGhlIGluZGV4ICIK KysJCQkJImJsb2NrIHNpemU6ICVkIChpbmRleCBibG9jayBzaXplOiAlbHUpXG4iLAorKwkJCQlp LCAodW5zaWduZWQgbG9uZylpYl9zaXplKTsKKysJCWZyZWUoaWIpOworKwkJZXJybm8gPSBFSU87 CisrCQlyZXR1cm4gTlVMTDsKKysJfQorKworIAltZW1jcHkobnRmc19pZV9nZXRfZmlyc3QoJmli LT5pbmRleCksIGllc19zdGFydCwgaSk7CisgCQorIAlpYi0+aW5kZXguaWhfZmxhZ3MgPSBpci0+ aW5kZXguaWhfZmxhZ3M7CgpkaWZmIC0tZ2l0IGEvbnRmcy0zZy5zcGVjIGIvbnRmcy0zZy5zcGVj CmluZGV4IGM2MDFhY2QuLjdkNmRmMWEgMTAwNjQ0Ci0tLSBhL250ZnMtM2cuc3BlYworKysgYi9u dGZzLTNnLnNwZWMKQEAgLTgsNyArOCw3IEBACiBOYW1lOiAgICAgICAgICAgbnRmcy0zZwogRXBv Y2g6ICAgICAgICAgIDIKIFZlcnNpb246ICAgICAgICAyMDIyLjEwLjMKLVJlbGVhc2U6ICAgICAg ICAxMCV7P2Rpc3R9CitSZWxlYXNlOiAgICAgICAgMTElez9kaXN0fQogU3VtbWFyeTogICAgICAg IExpbnV4IE5URlMgdXNlcnNwYWNlIGRyaXZlcgogIyBBdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCBm cm9tIG9sZCBmb3JtYXQ6IEdQTHYyKyAtIHJldmlldyBpcyBoaWdobHkgcmVjb21tZW5kZWQuCiBM aWNlbnNlOiAgICAgICAgR1BMLTIuMC1vci1sYXRlcgpAQCAtMjYsNiArMjYsMTkgQEAgUGF0Y2g2 OgkJaHR0cHM6Ly9naXRodWIuY29tL3R1eGVyYS9udGZzLTNnL2NvbW1pdC83NWRjZGMyY2YzNzQ3 OGZhZDZjMGUzNDI3NDAzZDEKICMgQ1ZFLTIwMjYtNDA3MDYKIFBhdGNoNzogICAgICAgICBodHRw czovL2dpdGh1Yi5jb20vdHV4ZXJhL250ZnMtM2cvY29tbWl0L2U0OGUxZWYyYTFmY2ZmMTNhNTkw YzIyMjRlYzIxYzViZDVkM2U5MmUucGF0Y2gKIAorIyBVcHN0cmVhbSBwcm92aWRlZCBiYWNrcG9y dCBwYXRjaGVzIGZvciBDVkVzCisjIGZpeCBmb3IgQ1ZFLTIwMjYtNDI2MTcgaXMgdGhlIHNhbWUg YXMgZm9yIENWRS0yMDI2LTQ2NTcyIGFuZCBDVkUtMjAyNi01NjEzNgorCitQYXRjaDEwMDogICAg ICAgMV9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi00MjYxOC5wYXRjaAorUGF0Y2gxMDE6ICAg ICAgIDJfbnRmcy0zZ18yMDIyLjEwLjMtQ1ZFLTIwMjYtNDI2MTYucGF0Y2gKK1BhdGNoMTAyOiAg ICAgICAzX250ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTQyNjE3LnBhdGNoCitQYXRjaDEwMzog ICAgICAgNF9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi00NjU2OS5wYXRjaAorUGF0Y2gxMDQ6 ICAgICAgIDVfbnRmcy0zZ18yMDIyLjEwLjMtQ1ZFLTIwMjYtNDY1NzEucGF0Y2gKK1BhdGNoMTA1 OiAgICAgICA2X250ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTQ2NTcwLnBhdGNoCisjIFBhdGNo MTA2OiAgICAgICA3X250ZnMtM2dfMjAyMi4xMC4zLUNWRS0yMDI2LTQ2NTcyLnBhdGNoCitQYXRj aDEwNzogICAgICAgOF9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi01NjEzNS5wYXRjaAorIyBQ YXRjaDEwODogICAgICAgOV9udGZzLTNnXzIwMjIuMTAuMy1DVkUtMjAyNi01NjEzNi5wYXRjaAor CiBCdWlsZFJlcXVpcmVzOiAgbWFrZQogIyBudGZzLTNnIEJ1aWxkUmVxdWlyZXMKIEJ1aWxkUmVx dWlyZXM6ICBnbnV0bHMtZGV2ZWwKQEAgLTIwMyw2ICsyMTYsMTIgQEAgcm0gLXJmICV7YnVpbGRy b290fSV7X2RlZmF1bHRkb2NkaXJ9LyV7bmFtZX0vUkVBRE1FCiAlZXhjbHVkZSAle19tYW5kaXJ9 L21hbjgvbnRmcy0zZyoKIAogJWNoYW5nZWxvZworKiBUaHUgU2VwIDI0IDIwMjYgVG9tIENhbGxh d2F5IDxzcG90QGZlZG9yYXByb2plY3Qub3JnPiAtIDI6MjAyMi4xMC4zLTExCistIGFwcGx5IHVw c3RyZWFtIHBhdGNoZXMgZm9yOgorICBDVkUtMjAyNi00MjYxNiBDVkUtMjAyNi00MjYxNyBDVkUt MjAyNi00MjYxOAorICBDVkUtMjAyNi00NjU2OSBDVkUtMjAyNi00NjU3MSBDVkUtMjAyNi00NjU3 MAorICBDVkUtMjAyNi00NjU3MiBDVkUtMjAyNi01NjEzNSBDVkUtMjAyNi01NjEzNgorCiAqIFdl ZCBKdWwgMTUgMjAyNiBDYXJsIEdlb3JnZSA8Y2FybHdnZW9yZ2VAZ21haWwuY29tPiAtIDI6MjAy Mi4xMC4zLTEwCiAtIEJhY2twb3J0IHVwc3RyZWFtIGZpeCBmb3IgQ1ZFLTIwMjYtNDA3MDYKIAo=