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: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.4.0-10 Date: Mon, 29 Jun 2026 12:24:23 GMT Message-ID: <178273586345.1.4922577892046196772.rpms-gcc-561373393ee7@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 561373393ee7750164f6855685497198910de3af QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogNTYxMzczMzkzZWU3NzUwMTY0ZjY4NTU2ODU0OTcxOTg5 MTBkZTNhZgpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOS0wNi0yM1QxNjo1NzoxOCswMDowMApTdGF0cyAgOiArMTMyMS8tOTUgaW4g NiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2Nj L2MvNTYxMzczMzkzZWU3NzUwMTY0ZjY4NTU2ODU0OTcxOTg5MTBkZTNhZj9icmFuY2g9cmhlbC1m NDEtYmFzZQoKTG9nOgo0LjQuMC0xMAoKLS0tCmRpZmYgLS1naXQgYS8uY3ZzaWdub3JlIGIvLmN2 c2lnbm9yZQppbmRleCBlMWRiZTdhLi5hODgyN2Y0IDEwMDY0NAotLS0gYS8uY3ZzaWdub3JlCisr KyBiLy5jdnNpZ25vcmUKQEAgLTEsMiArMSwyIEBACiBmYXN0amFyLTAuOTcudGFyLmd6Ci1nY2Mt NC40LjAtMjAwOTA2MTUudGFyLmJ6MgorZ2NjLTQuNC4wLTIwMDkwNjIzLnRhci5iejIKCmRpZmYg LS1naXQgYS9nY2Muc3BlYyBiL2djYy5zcGVjCmluZGV4IDQ0Y2NkNDYuLmM2NmE4YWIgMTAwNjQ0 Ci0tLSBhL2djYy5zcGVjCisrKyBiL2djYy5zcGVjCkBAIC0zLDcgKzMsNyBAQAogJWdsb2JhbCBn Y2NfdmVyc2lvbiA0LjQuMAogIyBOb3RlLCBnY2NfcmVsZWFzZSBtdXN0IGJlIGludGVnZXIsIGlm IHlvdSB3YW50IHRvIGFkZCBzdWZmaXhlcyB0bwogIyAle3JlbGVhc2V9LCBhcHBlbmQgdGhlbSBh ZnRlciAle2djY19yZWxlYXNlfSBvbiBSZWxlYXNlOiBsaW5lLgotJWdsb2JhbCBnY2NfcmVsZWFz ZSA5CislZ2xvYmFsIGdjY19yZWxlYXNlIDEwCiAlZ2xvYmFsIF91bnBhY2thZ2VkX2ZpbGVzX3Rl cm1pbmF0ZV9idWlsZCAwCiAlZ2xvYmFsIG11bHRpbGliXzY0X2FyY2hzIHNwYXJjNjQgcHBjNjQg czM5MHggeDg2XzY0CiAlZ2xvYmFsIGluY2x1ZGVfZ2FwcGxldHZpZXdlciAxCgpkaWZmIC0tZ2l0 IGEvZ2NjNDQtcmg1MDM4MTYtMS5wYXRjaCBiL2djYzQ0LXJoNTAzODE2LTEucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUxNmY4NQotLS0gL2Rldi9udWxsCisrKyBi L2djYzQ0LXJoNTAzODE2LTEucGF0Y2gKQEAgLTAsMCArMSw4MjcgQEAKKzIwMDktMDYtMjEgIEph a3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJKiB2YXItdHJhY2tpbmcuYyAoc3Ry dWN0IHNoYXJlZF9oYXNoX2RlZiwgc2hhcmVkX2hhc2gpOiBOZXcgdHlwZXMuCisJKGRhdGFmbG93 X3NldCk6IENoYW5nZSB2YXJzIHR5cGUgZnJvbSBodGFiX3QgdG8gc2hhcmVkX2hhc2guCisJKHNo YXJlZF9oYXNoX3Bvb2wsIGVtcHR5X3NoYXJlZF9oYXNoKTogTmV3IHZhcmlhYmxlcy4KKwkodmFy c19jbGVhcik6IFJlbW92ZWQuCisJKHNoYXJlZF9oYXNoX3NoYXJlZCwgc2hhcmVkX2hhc2hfaHRh Yiwgc2hhcmVkX2hhc2hfY29weSwKKwlzaGFyZWRfaGFzaF9maW5kX3Nsb3RfdW5zaGFyZSwgc2hh cmVkX2hhc2hfZmluZF9zbG90LAorCXNoYXJlZF9oYXNoX2ZpbmRfc2xvdF9ub2luc2VydCwgc2hh cmVkX2hhc2hfZmluZCk6IE5ldworCXN0YXRpYyBpbmxpbmVzLgorCShzaGFyZWRfaGFzaF91bnNo YXJlLCBzaGFyZWRfaGFzaF9kZXN0cm95KTogTmV3IGZ1bmN0aW9ucy4KKwkodW5zaGFyZV92YXJp YWJsZSk6IFVuc2hhcmUgc2V0LT52YXJzIGlmIHNoYXJlZCwgdXNlCisJc2hhcmVkX2hhc2hfaHRh Yi4KKwkodmFyc19jb3B5KTogVXNlIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgaW5zdGVhZCBvZiBo dGFiX3RyYXZlcnNlLgorCShnZXRfaW5pdF92YWx1ZSwgZmluZF9zcmNfc2V0X3NyYywgZHVtcF9k YXRhZmxvd19zZXQsCisJY2xvYmJlcl92YXJpYWJsZV9wYXJ0LCBlbWl0X25vdGVzX2Zvcl9kaWZm ZXJlbmNlcyk6IFVzZQorCXNoYXJlZF9oYXNoX2h0YWIuCisJKGRhdGFmbG93X3NldF9pbml0KTog UmVtb3ZlIHNlY29uZCBhcmd1bWVudCwgc2V0IHZhcnMgdG8KKwllbXB0eV9zaGFyZWRfaGFzaCBp bnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IGh0YWIuCisJKGRhdGFmbG93X3NldF9jbGVhcik6IENh bGwgc2hhcmVkX2hhc2hfZGVzdHJveSBhbmQgc2V0IHZhcnMKKwl0byBlbXB0eV9zaGFyZWRfaGFz aCBpbnN0ZWFkIG9mIGNhbGxpbmcgdmFyc19jbGVhci4KKwkoZGF0YWZsb3dfc2V0X2NvcHkpOiBE b24ndCBjYWxsIHZhcnNfY29weSwgaW5zdGVhZCBqdXN0IHNoYXJlCisJdGhlIHNyYyBodGFiIHdp dGggZHN0LgorCSh2YXJpYWJsZV91bmlvbik6IFVzZSBzaGFyZWRfaGFzaF8qLCB1c2UgaW5pdGlh bGx5IE5PX0lOU0VSVAorCWxvb2t1cCBpZiBzZXQtPnZhcnMgaXMgc2hhcmVkLiAgRG9uJ3Qga2Vl cCBzbG90IGNsZWFyZWQgYmVmb3JlCisJY2FsbGluZyB1bnNoYXJlX3ZhcmlhYmxlLiAgVW5zaGFy ZSBzZXQtPnZhcnMgaWYgbmVlZGVkLgorCUV2ZW4gLT5yZWZjb3VudCA9PSAxIHZhcnMgbXVzdCBi ZSB1bnNoYXJlZCBpZiBzZXQtPnZhcnMgaXMgc2hhcmVkCisJYW5kIHZhciBuZWVkcyB0byBiZSBt b2RpZmllZC4KKwkodmFyaWFibGVfY2Fub25pY2FsaXplKTogTmV3IGZ1bmN0aW9uLgorCShkYXRh Zmxvd19zZXRfdW5pb24pOiBJZiBkc3QtPnZhcnMgaXMgZW1wdHksIGp1c3Qgc2hhcmUgc3JjLT52 YXJzCisJd2l0aCBkc3QtPnZhcnMgYW5kIHRyYXZlcnNlIHdpdGggdmFyaWFibGVfY2Fub25pY2Fs aXplIHRvIGNhbm9uaWNhbGl6ZQorCWFuZCB1bnNoYXJlIHdoYXQgaXMgbmVlZGVkLgorCShkYXRh Zmxvd19zZXRfZGlmZmVyZW50KTogSWYgb2xkX3NldCBhbmQgbmV3X3NldCB1c2UgdGhlIHNhbWUg c2hhcmVkCisJaHRhYiwgdGhleSBhcmVuJ3QgZGlmZmVyZW50LiAgSWYgbnVtYmVyIG9mIGh0YWIg ZWxlbWVudHMgaXMgZGlmZmVyZW50LAorCWh0YWJzIGFyZSBkaWZmZXJlbnQuICBVc2Ugc2hhcmVk X2hhc2hfKi4KKwkoZGF0YWZsb3dfc2V0X2Rlc3Ryb3kpOiBDYWxsIHNoYXJlZF9oYXNoX2Rlc3Ry b3kgaW5zdGVhZCBvZgorCWh0YWJfZGVsZXRlLgorCShjb21wdXRlX2JiX2RhdGFmbG93LCBlbWl0 X25vdGVzX2luX2JiLCB2dF9lbWl0X25vdGVzKTogRG9uJ3QgcGFzcworCXNlY29uZCBhcmd1bWVu dCB0byBkYXRhZmxvd19zZXRfaW5pdC4KKwkodnRfaW5pdGlhbGl6ZSk6IExpa2V3aXNlLiAgSW5p dGlhbGl6ZSBzaGFyZWRfaGFzaF9wb29sIGFuZAorCWVtcHR5X3NoYXJlZF9oYXNoLCBtb3ZlIGJi IGluL291dCBpbml0aWFsaXphdGlvbiBhZnRlcndhcmRzLgorCVVzZSB2YXJpYWJsZV9odGFiX2Zy ZWUgaW5zdGVhZCBvZiBOVUxMIGFzIGNoYW5nZWRfdmFyaWFibGVzIGRlbCBob29rLgorCSh2YXJp YWJsZV93YXNfY2hhbmdlZCk6IENoYW5nZSB0eXBlIG9mIHNlY29uZCBhcmd1bWVudCB0byBwb2lu dGVyIHRvCisJZGF0YWZsb3dfc2V0LiAgV2hlbiBpbnNlcnRpbmcgdmFyIGludG8gY2hhbmdlZF92 YXJpYWJsZXMsIGJ1bXAKKwlyZWZjb3VudC4gIFVuc2hhcmUgc2V0LT52YXJzIGlmIHNldCBpcyBz aGFyZWQgaHRhYiBhbmQgc2xvdCBuZWVkcyB0bworCWJlIGNsZWFyZWQuCisJKHNldF92YXJpYWJs ZV9wYXJ0KTogVXNlIHNoYXJlZF9oYXNoXyosIHVzZSBpbml0aWFsbHkgTk9fSU5TRVJUCisJbG9v a3VwIGlmIHNldC0+dmFycyBpcyBzaGFyZWQuICBVbnNoYXJlIHNldC0+dmFycyBpZiBuZWVkZWQu CisJRXZlbiAtPnJlZmNvdW50ID09IDEgdmFycyBtdXN0IGJlIHVuc2hhcmVkIGlmIHNldC0+dmFy cyBpcyBzaGFyZWQKKwlhbmQgdmFyIG5lZWRzIHRvIGJlIG1vZGlmaWVkLiAgQWRqdXN0IHZhcmlh YmxlX3dhc19jaGFuZ2VkIGNhbGxlci4KKwkoZGVsZXRlX3ZhcmlhYmxlX3BhcnQpOiBVc2Ugc2hh cmVkX2hhc2hfKi4gIEV2ZW4gLT5yZWZjb3VudCA9PSAxCisJdmFycyBtdXN0IGJlIHVuc2hhcmVk IGlmIHNldC0+dmFycyBpcyBzaGFyZWQgYW5kIHZhciBuZWVkcyB0byBiZQorCW1vZGlmaWVkLiAg QWRqdXN0IHZhcmlhYmxlX3dhc19jaGFuZ2VkIGNhbGxlci4KKwkoZW1pdF9ub3RlX2luc25fdmFy X2xvY2F0aW9uKTogRG9uJ3QgcG9vbF9mcmVlIHZhci4KKwkoZW1pdF9ub3Rlc19mb3JfZGlmZmVy ZW5jZXNfMSk6IEluaXRpYWxpemUgZW1wdHlfdmFyLT5yZWZjb3VudCB0byAwCisJaW5zdGVhZCBv ZiAxLgorCSh2dF9maW5hbGl6ZSk6IENhbGwgaHRhYl9kZWxldGUgb24gZW1wdHlfc2hhcmVkX2hh c2gtPmh0YWIgYW5kCisJZnJlZV9hbGxvY19wb29sIG9uIHNoYXJlZF9oYXNoX3Bvb2wuCisKKwkq IGhhc2h0YWIuYyAoaHRhYl90cmF2ZXJzZSk6IERvbid0IGNhbGwgaHRhYl9leHBhbmQgZm9yCisJ bmVhcmx5IGVtcHR5IGhhc2h0YWJzIHdpdGggc2l6ZXMgNywgMTMgb3IgMzEuCisKKy0tLSBnY2Mv dmFyLXRyYWNraW5nLmMJKHJldmlzaW9uIDE0ODc1OCkKKysrKyBnY2MvdmFyLXRyYWNraW5nLmMJ KHJldmlzaW9uIDE0ODc2MCkKK0BAIC0xODIsNiArMTgyLDE3IEBAIHR5cGVkZWYgc3RydWN0IGF0 dHJzX2RlZgorICAgSE9TVF9XSURFX0lOVCBvZmZzZXQ7CisgfSAqYXR0cnM7CisgCisrLyogU3Ry dWN0dXJlIGhvbGRpbmcgYSByZWZjb3VudGVkIGhhc2ggdGFibGUuICBJZiByZWZjb3VudCA+IDEs CisrICAgaXQgbXVzdCBiZSBmaXJzdCB1bnNoYXJlZCBiZWZvcmUgbW9kaWZpZWQuICAqLworK3R5 cGVkZWYgc3RydWN0IHNoYXJlZF9oYXNoX2RlZgorK3sKKysgIC8qIFJlZmVyZW5jZSBjb3VudC4g ICovCisrICBpbnQgcmVmY291bnQ7CisrCisrICAvKiBBY3R1YWwgaGFzaCB0YWJsZS4gICovCisr ICBodGFiX3QgaHRhYjsKKyt9ICpzaGFyZWRfaGFzaDsKKysKKyAvKiBTdHJ1Y3R1cmUgaG9sZGlu ZyB0aGUgSU4gb3IgT1VUIHNldCBmb3IgYSBiYXNpYyBibG9jay4gICovCisgdHlwZWRlZiBzdHJ1 Y3QgZGF0YWZsb3dfc2V0X2RlZgorIHsKK0BAIC0xOTIsNyArMjAzLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgZGF0YWZsb3dfc2V0X2RlZgorICAgYXR0cnMgcmVnc1tGSVJTVF9QU0VVRE9fUkVHSVNURVJd OworIAorICAgLyogVmFyaWFibGUgbG9jYXRpb25zLiAgKi8KKy0gIGh0YWJfdCB2YXJzOworKyAg c2hhcmVkX2hhc2ggdmFyczsKKyB9IGRhdGFmbG93X3NldDsKKyAKKyAvKiBUaGUgc3RydWN0dXJl IChvbmUgZm9yIGVhY2ggYmFzaWMgYmxvY2spIGNvbnRhaW5pbmcgdGhlIGluZm9ybWF0aW9uCitA QCAtMjgwLDEyICsyOTEsMTggQEAgc3RhdGljIGFsbG9jX3Bvb2wgdmFyX3Bvb2w7CisgLyogQWxs b2MgcG9vbCBmb3Igc3RydWN0IGxvY2F0aW9uX2NoYWluX2RlZi4gICovCisgc3RhdGljIGFsbG9j X3Bvb2wgbG9jX2NoYWluX3Bvb2w7CisgCisrLyogQWxsb2MgcG9vbCBmb3Igc3RydWN0IHNoYXJl ZF9oYXNoX2RlZi4gICovCisrc3RhdGljIGFsbG9jX3Bvb2wgc2hhcmVkX2hhc2hfcG9vbDsKKysK KyAvKiBDaGFuZ2VkIHZhcmlhYmxlcywgbm90ZXMgd2lsbCBiZSBlbWl0dGVkIGZvciB0aGVtLiAg Ki8KKyBzdGF0aWMgaHRhYl90IGNoYW5nZWRfdmFyaWFibGVzOworIAorIC8qIFNoYWxsIG5vdGVz IGJlIGVtaXR0ZWQ/ICAqLworIHN0YXRpYyBib29sIGVtaXRfbm90ZXM7CisgCisrLyogRW1wdHkg c2hhcmVkIGhhc2h0YWJsZS4gICovCisrc3RhdGljIHNoYXJlZF9oYXNoIGVtcHR5X3NoYXJlZF9o YXNoOworKworIC8qIExvY2FsIGZ1bmN0aW9uIHByb3RvdHlwZXMuICAqLworIHN0YXRpYyB2b2lk IHN0YWNrX2FkanVzdF9vZmZzZXRfcHJlX3Bvc3QgKHJ0eCwgSE9TVF9XSURFX0lOVCAqLAorIAkJ CQkJICBIT1NUX1dJREVfSU5UICopOworQEAgLTMwNSw3ICszMjIsNiBAQCBzdGF0aWMgdm9pZCBh dHRyc19saXN0X2luc2VydCAoYXR0cnMgKiwgCisgc3RhdGljIHZvaWQgYXR0cnNfbGlzdF9jb3B5 IChhdHRycyAqLCBhdHRycyk7Cisgc3RhdGljIHZvaWQgYXR0cnNfbGlzdF91bmlvbiAoYXR0cnMg KiwgYXR0cnMpOworIAorLXN0YXRpYyB2b2lkIHZhcnNfY2xlYXIgKGh0YWJfdCk7Cisgc3RhdGlj IHZhcmlhYmxlIHVuc2hhcmVfdmFyaWFibGUgKGRhdGFmbG93X3NldCAqc2V0LCB2YXJpYWJsZSB2 YXIsIAorIAkJCQkgIGVudW0gdmFyX2luaXRfc3RhdHVzKTsKKyBzdGF0aWMgaW50IHZhcnNfY29w eV8xICh2b2lkICoqLCB2b2lkICopOworQEAgLTMyMSwxMSArMzM3LDEyIEBAIHN0YXRpYyB2b2lk IHZhcl9tZW1fZGVsZXRlX2FuZF9zZXQgKGRhdGEKKyAJCQkJICAgIGVudW0gdmFyX2luaXRfc3Rh dHVzLCBydHgpOworIHN0YXRpYyB2b2lkIHZhcl9tZW1fZGVsZXRlIChkYXRhZmxvd19zZXQgKiwg cnR4LCBib29sKTsKKyAKKy1zdGF0aWMgdm9pZCBkYXRhZmxvd19zZXRfaW5pdCAoZGF0YWZsb3df c2V0ICosIGludCk7Cisrc3RhdGljIHZvaWQgZGF0YWZsb3dfc2V0X2luaXQgKGRhdGFmbG93X3Nl dCAqKTsKKyBzdGF0aWMgdm9pZCBkYXRhZmxvd19zZXRfY2xlYXIgKGRhdGFmbG93X3NldCAqKTsK KyBzdGF0aWMgdm9pZCBkYXRhZmxvd19zZXRfY29weSAoZGF0YWZsb3dfc2V0ICosIGRhdGFmbG93 X3NldCAqKTsKKyBzdGF0aWMgaW50IHZhcmlhYmxlX3VuaW9uX2luZm9fY21wX3BvcyAoY29uc3Qg dm9pZCAqLCBjb25zdCB2b2lkICopOworIHN0YXRpYyBpbnQgdmFyaWFibGVfdW5pb24gKHZvaWQg KiosIHZvaWQgKik7Cisrc3RhdGljIGludCB2YXJpYWJsZV9jYW5vbmljYWxpemUgKHZvaWQgKios IHZvaWQgKik7Cisgc3RhdGljIHZvaWQgZGF0YWZsb3dfc2V0X3VuaW9uIChkYXRhZmxvd19zZXQg KiwgZGF0YWZsb3dfc2V0ICopOworIHN0YXRpYyBib29sIHZhcmlhYmxlX3BhcnRfZGlmZmVyZW50 X3AgKHZhcmlhYmxlX3BhcnQgKiwgdmFyaWFibGVfcGFydCAqKTsKKyBzdGF0aWMgYm9vbCB2YXJp YWJsZV9kaWZmZXJlbnRfcCAodmFyaWFibGUsIHZhcmlhYmxlLCBib29sKTsKK0BAIC0zNTIsNyAr MzY5LDcgQEAgc3RhdGljIHZvaWQgZHVtcF92YXJzIChodGFiX3QpOworIHN0YXRpYyB2b2lkIGR1 bXBfZGF0YWZsb3dfc2V0IChkYXRhZmxvd19zZXQgKik7Cisgc3RhdGljIHZvaWQgZHVtcF9kYXRh Zmxvd19zZXRzICh2b2lkKTsKKyAKKy1zdGF0aWMgdm9pZCB2YXJpYWJsZV93YXNfY2hhbmdlZCAo dmFyaWFibGUsIGh0YWJfdCk7Cisrc3RhdGljIHZvaWQgdmFyaWFibGVfd2FzX2NoYW5nZWQgKHZh cmlhYmxlLCBkYXRhZmxvd19zZXQgKik7Cisgc3RhdGljIHZvaWQgc2V0X3ZhcmlhYmxlX3BhcnQg KGRhdGFmbG93X3NldCAqLCBydHgsIHRyZWUsIEhPU1RfV0lERV9JTlQsIAorIAkJCSAgICAgICBl bnVtIHZhcl9pbml0X3N0YXR1cywgcnR4KTsKKyBzdGF0aWMgdm9pZCBjbG9iYmVyX3ZhcmlhYmxl X3BhcnQgKGRhdGFmbG93X3NldCAqLCBydHgsIHRyZWUsIEhPU1RfV0lERV9JTlQsIAorQEAgLTc0 MiwxMiArNzU5LDEwNyBAQCBhdHRyc19saXN0X3VuaW9uIChhdHRycyAqZHN0cCwgYXR0cnMgc3Jj CisgICAgIH0KKyB9CisgCistLyogRGVsZXRlIGFsbCB2YXJpYWJsZXMgZnJvbSBoYXNoIHRhYmxl IFZBUlMuICAqLworKy8qIFNoYXJlZCBoYXNodGFibGUgc3VwcG9ydC4gICovCisrCisrLyogUmV0 dXJuIHRydWUgaWYgVkFSUyBpcyBzaGFyZWQuICAqLworKworK3N0YXRpYyBpbmxpbmUgYm9vbAor K3NoYXJlZF9oYXNoX3NoYXJlZCAoc2hhcmVkX2hhc2ggdmFycykKKyt7CisrICByZXR1cm4gdmFy cy0+cmVmY291bnQgPiAxOworK30KKysKKysvKiBSZXR1cm4gdGhlIGhhc2ggdGFibGUgZm9yIFZB UlMuICAqLworKworK3N0YXRpYyBpbmxpbmUgaHRhYl90Cisrc2hhcmVkX2hhc2hfaHRhYiAoc2hh cmVkX2hhc2ggdmFycykKKyt7CisrICByZXR1cm4gdmFycy0+aHRhYjsKKyt9CisrCisrLyogQ29w eSB2YXJpYWJsZXMgaW50byBhIG5ldyBoYXNoIHRhYmxlLiAgKi8KKysKKytzdGF0aWMgc2hhcmVk X2hhc2gKKytzaGFyZWRfaGFzaF91bnNoYXJlIChzaGFyZWRfaGFzaCB2YXJzKQorK3sKKysgIHNo YXJlZF9oYXNoIG5ld192YXJzID0gKHNoYXJlZF9oYXNoKSBwb29sX2FsbG9jIChzaGFyZWRfaGFz aF9wb29sKTsKKysgIGdjY19hc3NlcnQgKHZhcnMtPnJlZmNvdW50ID4gMSk7CisrICBuZXdfdmFy cy0+cmVmY291bnQgPSAxOworKyAgbmV3X3ZhcnMtPmh0YWIKKysgICAgPSBodGFiX2NyZWF0ZSAo aHRhYl9lbGVtZW50cyAodmFycy0+aHRhYikgKyAzLCB2YXJpYWJsZV9odGFiX2hhc2gsCisrCQkg ICB2YXJpYWJsZV9odGFiX2VxLCB2YXJpYWJsZV9odGFiX2ZyZWUpOworKyAgdmFyc19jb3B5IChu ZXdfdmFycy0+aHRhYiwgdmFycy0+aHRhYik7CisrICB2YXJzLT5yZWZjb3VudC0tOworKyAgcmV0 dXJuIG5ld192YXJzOworK30KKysKKysvKiBJbmNyZW1lbnQgcmVmZXJlbmNlIGNvdW50ZXIgb24g VkFSUyBhbmQgcmV0dXJuIGl0LiAgKi8KKysKKytzdGF0aWMgaW5saW5lIHNoYXJlZF9oYXNoCisr c2hhcmVkX2hhc2hfY29weSAoc2hhcmVkX2hhc2ggdmFycykKKyt7CisrICB2YXJzLT5yZWZjb3Vu dCsrOworKyAgcmV0dXJuIHZhcnM7CisrfQorKworKy8qIERlY3JlbWVudCByZWZlcmVuY2UgY291 bnRlciBhbmQgZGVzdHJveSBoYXNoIHRhYmxlIGlmIG5vdCBzaGFyZWQKKysgICBhbnltb3JlLiAg Ki8KKyAKKyBzdGF0aWMgdm9pZAorLXZhcnNfY2xlYXIgKGh0YWJfdCB2YXJzKQorK3NoYXJlZF9o YXNoX2Rlc3Ryb3kgKHNoYXJlZF9oYXNoIHZhcnMpCisgeworLSAgaHRhYl9lbXB0eSAodmFycyk7 CisrICBnY2NfYXNzZXJ0ICh2YXJzLT5yZWZjb3VudCA+IDApOworKyAgaWYgKC0tdmFycy0+cmVm Y291bnQgPT0gMCkKKysgICAgeworKyAgICAgIGh0YWJfZGVsZXRlICh2YXJzLT5odGFiKTsKKysg ICAgICBwb29sX2ZyZWUgKHNoYXJlZF9oYXNoX3Bvb2wsIHZhcnMpOworKyAgICB9CisrfQorKwor Ky8qIFVuc2hhcmUgKlBWQVJTIGlmIHNoYXJlZCBhbmQgcmV0dXJuIHNsb3QgZm9yIERFQ0wuICBJ ZiBJTlMgaXMKKysgICBJTlNFUlQsIGluc2VydCBpdCBpZiBub3QgYWxyZWFkeSBwcmVzZW50LiAg Ki8KKysKKytzdGF0aWMgaW5saW5lIHZvaWQgKioKKytzaGFyZWRfaGFzaF9maW5kX3Nsb3RfdW5z aGFyZSAoc2hhcmVkX2hhc2ggKnB2YXJzLCB0cmVlIGRlY2wsCisrCQkJICAgICAgIGVudW0gaW5z ZXJ0X29wdGlvbiBpbnMpCisreworKyAgaWYgKHNoYXJlZF9oYXNoX3NoYXJlZCAoKnB2YXJzKSkK KysgICAgKnB2YXJzID0gc2hhcmVkX2hhc2hfdW5zaGFyZSAoKnB2YXJzKTsKKysgIHJldHVybiBo dGFiX2ZpbmRfc2xvdF93aXRoX2hhc2ggKHNoYXJlZF9oYXNoX2h0YWIgKCpwdmFycyksIGRlY2ws CisrCQkJCSAgIFZBUklBQkxFX0hBU0hfVkFMIChkZWNsKSwgaW5zKTsKKyt9CisrCisrLyogUmV0 dXJuIHNsb3QgZm9yIERFQ0wsIGlmIGl0IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgaGFzaCB0 YWJsZS4KKysgICBJZiBpdCBpcyBub3QgcHJlc2VudCwgaW5zZXJ0IGl0IG9ubHkgVkFSUyBpcyBu b3Qgc2hhcmVkLCBvdGhlcndpc2UKKysgICByZXR1cm4gTlVMTC4gICovCisrCisrc3RhdGljIGlu bGluZSB2b2lkICoqCisrc2hhcmVkX2hhc2hfZmluZF9zbG90IChzaGFyZWRfaGFzaCB2YXJzLCB0 cmVlIGRlY2wpCisreworKyAgcmV0dXJuIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoc2hhcmVk X2hhc2hfaHRhYiAodmFycyksIGRlY2wsCisrCQkJCSAgIFZBUklBQkxFX0hBU0hfVkFMIChkZWNs KSwKKysJCQkJICAgc2hhcmVkX2hhc2hfc2hhcmVkICh2YXJzKQorKwkJCQkgICA/IE5PX0lOU0VS VCA6IElOU0VSVCk7CisrfQorKworKy8qIFJldHVybiBzbG90IGZvciBERUNMIG9ubHkgaWYgaXQg aXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKysKKytzdGF0aWMgaW5s aW5lIHZvaWQgKioKKytzaGFyZWRfaGFzaF9maW5kX3Nsb3Rfbm9pbnNlcnQgKHNoYXJlZF9oYXNo IHZhcnMsIHRyZWUgZGVjbCkKKyt7CisrICByZXR1cm4gaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNo IChzaGFyZWRfaGFzaF9odGFiICh2YXJzKSwgZGVjbCwKKysJCQkJICAgVkFSSUFCTEVfSEFTSF9W QUwgKGRlY2wpLCBOT19JTlNFUlQpOworK30KKysKKysvKiBSZXR1cm4gdmFyaWFibGUgZm9yIERF Q0wgb3IgTlVMTCBpZiBub3QgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBoYXNoCisrICAgdGFibGUu ICAqLworKworK3N0YXRpYyBpbmxpbmUgdmFyaWFibGUKKytzaGFyZWRfaGFzaF9maW5kIChzaGFy ZWRfaGFzaCB2YXJzLCB0cmVlIGRlY2wpCisreworKyAgcmV0dXJuICh2YXJpYWJsZSkKKysJIGh0 YWJfZmluZF93aXRoX2hhc2ggKHNoYXJlZF9oYXNoX2h0YWIgKHZhcnMpLCBkZWNsLAorKwkJCSAg ICAgIFZBUklBQkxFX0hBU0hfVkFMIChkZWNsKSk7CisgfQorIAorIC8qIFJldHVybiBhIGNvcHkg b2YgYSB2YXJpYWJsZSBWQVIgYW5kIGluc2VydCBpdCB0byBkYXRhZmxvdyBzZXQgU0VULiAgKi8K K0BAIC04MDEsOSArOTEzLDcgQEAgdW5zaGFyZV92YXJpYWJsZSAoZGF0YWZsb3dfc2V0ICpzZXQs IHZhcgorIAluZXdfdmFyLT52YXJfcGFydFtpXS5jdXJfbG9jID0gTlVMTDsKKyAgICAgfQorIAor LSAgc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoc2V0LT52YXJzLCBuZXdfdmFyLT5k ZWNsLAorLQkJCQkgICBWQVJJQUJMRV9IQVNIX1ZBTCAobmV3X3Zhci0+ZGVjbCksCistCQkJCSAg IElOU0VSVCk7CisrICBzbG90ID0gc2hhcmVkX2hhc2hfZmluZF9zbG90X3Vuc2hhcmUgKCZzZXQt PnZhcnMsIG5ld192YXItPmRlY2wsIElOU0VSVCk7CisgICAqc2xvdCA9IG5ld192YXI7CisgICBy ZXR1cm4gbmV3X3ZhcjsKKyB9CitAQCAtODM0LDggKzk0NCw3IEBAIHZhcnNfY29weV8xICh2b2lk ICoqc2xvdCwgdm9pZCAqZGF0YSkKKyBzdGF0aWMgdm9pZAorIHZhcnNfY29weSAoaHRhYl90IGRz dCwgaHRhYl90IHNyYykKKyB7CistICB2YXJzX2NsZWFyIChkc3QpOworLSAgaHRhYl90cmF2ZXJz ZSAoc3JjLCB2YXJzX2NvcHlfMSwgZHN0KTsKKysgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHNy YywgdmFyc19jb3B5XzEsIGRzdCk7CisgfQorIAorIC8qIE1hcCBhIGRlY2wgdG8gaXRzIG1haW4g ZGVidWcgZGVjbC4gICovCitAQCAtODc0LDcgKzk4Myw2IEBAIHZhcl9yZWdfc2V0IChkYXRhZmxv d19zZXQgKnNldCwgcnR4IGxvYywKKyBzdGF0aWMgaW50CisgZ2V0X2luaXRfdmFsdWUgKGRhdGFm bG93X3NldCAqc2V0LCBydHggbG9jLCB0cmVlIGRlY2wpCisgeworLSAgdm9pZCAqKnNsb3Q7Cisg ICB2YXJpYWJsZSB2YXI7CisgICBpbnQgaTsKKyAgIGludCByZXRfdmFsID0gVkFSX0lOSVRfU1RB VFVTX1VOS05PV047CitAQCAtODgyLDExICs5OTAsOSBAQCBnZXRfaW5pdF92YWx1ZSAoZGF0YWZs b3dfc2V0ICpzZXQsIHJ0eCBsCisgICBpZiAoISBmbGFnX3Zhcl90cmFja2luZ191bmluaXQpCisg ICAgIHJldHVybiBWQVJfSU5JVF9TVEFUVVNfSU5JVElBTElaRUQ7CisgCistICBzbG90ID0gaHRh Yl9maW5kX3Nsb3Rfd2l0aF9oYXNoIChzZXQtPnZhcnMsIGRlY2wsIFZBUklBQkxFX0hBU0hfVkFM IChkZWNsKSwKKy0JCQkJICAgTk9fSU5TRVJUKTsKKy0gIGlmIChzbG90KQorKyAgdmFyID0gc2hh cmVkX2hhc2hfZmluZCAoc2V0LT52YXJzLCBkZWNsKTsKKysgIGlmICh2YXIpCisgICAgIHsKKy0g ICAgICB2YXIgPSAqICh2YXJpYWJsZSAqKSBzbG90OworICAgICAgIGZvciAoaSA9IDA7IGkgPCB2 YXItPm5fdmFyX3BhcnRzICYmIHJldF92YWwgPT0gVkFSX0lOSVRfU1RBVFVTX1VOS05PV047IGkr KykKKyAJeworIAkgIGxvY2F0aW9uX2NoYWluIG5leHRwOworQEAgLTEwNTAsMTEgKzExNTYsMTAg QEAgdmFyX21lbV9kZWxldGUgKGRhdGFmbG93X3NldCAqc2V0LCBydHggbAorICAgIFZBUlNfU0la RSBpcyB0aGUgaW5pdGlhbCBzaXplIG9mIGhhc2ggdGFibGUgVkFSUy4gICovCisgCisgc3RhdGlj IHZvaWQKKy1kYXRhZmxvd19zZXRfaW5pdCAoZGF0YWZsb3dfc2V0ICpzZXQsIGludCB2YXJzX3Np emUpCisrZGF0YWZsb3dfc2V0X2luaXQgKGRhdGFmbG93X3NldCAqc2V0KQorIHsKKyAgIGluaXRf YXR0cnNfbGlzdF9zZXQgKHNldC0+cmVncyk7CistICBzZXQtPnZhcnMgPSBodGFiX2NyZWF0ZSAo dmFyc19zaXplLCB2YXJpYWJsZV9odGFiX2hhc2gsIHZhcmlhYmxlX2h0YWJfZXEsCistCQkJICAg dmFyaWFibGVfaHRhYl9mcmVlKTsKKysgIHNldC0+dmFycyA9IHNoYXJlZF9oYXNoX2NvcHkgKGVt cHR5X3NoYXJlZF9oYXNoKTsKKyAgIHNldC0+c3RhY2tfYWRqdXN0ID0gMDsKKyB9CisgCitAQCAt MTA2OCw3ICsxMTczLDggQEAgZGF0YWZsb3dfc2V0X2NsZWFyIChkYXRhZmxvd19zZXQgKnNldCkK KyAgIGZvciAoaSA9IDA7IGkgPCBGSVJTVF9QU0VVRE9fUkVHSVNURVI7IGkrKykKKyAgICAgYXR0 cnNfbGlzdF9jbGVhciAoJnNldC0+cmVnc1tpXSk7CisgCistICB2YXJzX2NsZWFyIChzZXQtPnZh cnMpOworKyAgc2hhcmVkX2hhc2hfZGVzdHJveSAoc2V0LT52YXJzKTsKKysgIHNldC0+dmFycyA9 IHNoYXJlZF9oYXNoX2NvcHkgKGVtcHR5X3NoYXJlZF9oYXNoKTsKKyB9CisgCisgLyogQ29weSB0 aGUgY29udGVudHMgb2YgZGF0YWZsb3cgc2V0IFNSQyB0byBEU1QuICAqLworQEAgLTEwODEsNyAr MTE4Nyw4IEBAIGRhdGFmbG93X3NldF9jb3B5IChkYXRhZmxvd19zZXQgKmRzdCwgZGEKKyAgIGZv ciAoaSA9IDA7IGkgPCBGSVJTVF9QU0VVRE9fUkVHSVNURVI7IGkrKykKKyAgICAgYXR0cnNfbGlz dF9jb3B5ICgmZHN0LT5yZWdzW2ldLCBzcmMtPnJlZ3NbaV0pOworIAorLSAgdmFyc19jb3B5IChk c3QtPnZhcnMsIHNyYy0+dmFycyk7CisrICBzaGFyZWRfaGFzaF9kZXN0cm95IChkc3QtPnZhcnMp OworKyAgZHN0LT52YXJzID0gc2hhcmVkX2hhc2hfY29weSAoc3JjLT52YXJzKTsKKyAgIGRzdC0+ c3RhY2tfYWRqdXN0ID0gc3JjLT5zdGFja19hZGp1c3Q7CisgfQorIAorQEAgLTExMjksMTUgKzEy MzYsMTQgQEAgdmFyaWFibGVfdW5pb25faW5mb19jbXBfcG9zIChjb25zdCB2b2lkIAorIHN0YXRp YyBpbnQKKyB2YXJpYWJsZV91bmlvbiAodm9pZCAqKnNsb3QsIHZvaWQgKmRhdGEpCisgeworLSAg dmFyaWFibGUgc3JjLCBkc3QsICpkc3RwOworKyAgdmFyaWFibGUgc3JjLCBkc3Q7CisrICB2b2lk ICoqZHN0cDsKKyAgIGRhdGFmbG93X3NldCAqc2V0ID0gKGRhdGFmbG93X3NldCAqKSBkYXRhOwor ICAgaW50IGksIGosIGs7CisgCisgICBzcmMgPSAqKHZhcmlhYmxlICopIHNsb3Q7CistICBkc3Rw ID0gKHZhcmlhYmxlICopIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoc2V0LT52YXJzLCBzcmMt PmRlY2wsCistCQkJCQkJVkFSSUFCTEVfSEFTSF9WQUwgKHNyYy0+ZGVjbCksCistCQkJCQkJSU5T RVJUKTsKKy0gIGlmICghKmRzdHApCisrICBkc3RwID0gc2hhcmVkX2hhc2hfZmluZF9zbG90IChz ZXQtPnZhcnMsIHNyYy0+ZGVjbCk7CisrICBpZiAoIWRzdHAgfHwgISpkc3RwKQorICAgICB7Cisg ICAgICAgc3JjLT5yZWZjb3VudCsrOworIAorQEAgLTExNjIsMTYgKzEyNjgsMjMgQEAgdmFyaWFi bGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRhKQorIAkgIGlmICghIGZsYWdfdmFyX3Ry YWNraW5nX3VuaW5pdCkKKyAJICAgIHN0YXR1cyA9IFZBUl9JTklUX1NUQVRVU19JTklUSUFMSVpF RDsKKyAKKysJICBpZiAoZHN0cCkKKysJICAgICpkc3RwID0gKHZvaWQgKikgc3JjOworIAkgIHVu c2hhcmVfdmFyaWFibGUgKHNldCwgc3JjLCBzdGF0dXMpOworIAl9CisgICAgICAgZWxzZQorLQkq ZHN0cCA9IHNyYzsKKysJeworKwkgIGlmICghZHN0cCkKKysJICAgIGRzdHAgPSBzaGFyZWRfaGFz aF9maW5kX3Nsb3RfdW5zaGFyZSAoJnNldC0+dmFycywgc3JjLT5kZWNsLAorKwkJCQkJCSAgSU5T RVJUKTsKKysJICAqZHN0cCA9ICh2b2lkICopIHNyYzsKKysJfQorIAorICAgICAgIC8qIENvbnRp bnVlIHRyYXZlcnNpbmcgdGhlIGhhc2ggdGFibGUuICAqLworICAgICAgIHJldHVybiAxOworICAg ICB9CisgICBlbHNlCistICAgIGRzdCA9ICpkc3RwOworKyAgICBkc3QgPSAodmFyaWFibGUpICpk c3RwOworIAorICAgZ2NjX2Fzc2VydCAoc3JjLT5uX3Zhcl9wYXJ0cyk7CisgCitAQCAtMTE5Niw3 ICsxMzA5LDggQEAgdmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRhKQorICAg ICAgdGh1cyB0aGVyZSBhcmUgYXQgbW9zdCBNQVhfVkFSX1BBUlRTIGRpZmZlcmVudCBvZmZzZXRz LiAgKi8KKyAgIGdjY19hc3NlcnQgKGsgPD0gTUFYX1ZBUl9QQVJUUyk7CisgCistICBpZiAoZHN0 LT5yZWZjb3VudCA+IDEgJiYgZHN0LT5uX3Zhcl9wYXJ0cyAhPSBrKQorKyAgaWYgKChkc3QtPnJl ZmNvdW50ID4gMSB8fCBzaGFyZWRfaGFzaF9zaGFyZWQgKHNldC0+dmFycykpCisrICAgICAgJiYg ZHN0LT5uX3Zhcl9wYXJ0cyAhPSBrKQorICAgICB7CisgICAgICAgZW51bSB2YXJfaW5pdF9zdGF0 dXMgc3RhdHVzID0gVkFSX0lOSVRfU1RBVFVTX1VOS05PV047CisgICAgICAgCitAQCAtMTIyNiw3 ICsxMzQwLDcgQEAgdmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRhKQorIAkg IC8qIElmIERTVCBpcyBzaGFyZWQgY29tcGFyZSB0aGUgbG9jYXRpb24gY2hhaW5zLgorIAkgICAg IElmIHRoZXkgYXJlIGRpZmZlcmVudCB3ZSB3aWxsIG1vZGlmeSB0aGUgY2hhaW4gaW4gRFNUIHdp dGgKKyAJICAgICBoaWdoIHByb2JhYmlsaXR5IHNvIG1ha2UgYSBjb3B5IG9mIERTVC4gICovCist CSAgaWYgKGRzdC0+cmVmY291bnQgPiAxKQorKwkgIGlmIChkc3QtPnJlZmNvdW50ID4gMSB8fCBz aGFyZWRfaGFzaF9zaGFyZWQgKHNldC0+dmFycykpCisgCSAgICB7CisgCSAgICAgIGZvciAobm9k ZSA9IHNyYy0+dmFyX3BhcnRbaV0ubG9jX2NoYWluLAorIAkJICAgbm9kZTIgPSBkc3QtPnZhcl9w YXJ0W2pdLmxvY19jaGFpbjsgbm9kZSAmJiBub2RlMjsKK0BAIC0xMzc5LDYgKzE0OTMsNDYgQEAg dmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRhKQorICAgcmV0dXJuIDE7Cisg fQorIAorKy8qIExpa2UgdmFyaWFibGVfdW5pb24sIGJ1dCBvbmx5IHVzZWQgd2hlbiBkb2luZyBk YXRhZmxvd19zZXRfdW5pb24KKysgICBpbnRvIGFuIGVtcHR5IGhhc2h0YWIuICBUbyBhbGxvdyBz aGFyaW5nLCBkc3QgaXMgaW5pdGlhbGx5IHNoYXJlZAorKyAgIHdpdGggc3JjIChzbyBhbGwgdmFy aWFibGVzIGFyZSAiY29waWVkIiBmcm9tIHNyYyB0byBkc3QgaGFzaHRhYiksCisrICAgc28gb25s eSB1bnNoYXJlX3ZhcmlhYmxlIGZvciB2YXJpYWJsZXMgdGhhdCBuZWVkIGNhbm9uaWNhbGl6YXRp b24KKysgICBhcmUgbmVlZGVkLiAgKi8KKysKKytzdGF0aWMgaW50CisrdmFyaWFibGVfY2Fub25p Y2FsaXplICh2b2lkICoqc2xvdCwgdm9pZCAqZGF0YSkKKyt7CisrICB2YXJpYWJsZSBzcmM7Cisr ICBkYXRhZmxvd19zZXQgKnNldCA9IChkYXRhZmxvd19zZXQgKikgZGF0YTsKKysgIGludCBrOwor KworKyAgc3JjID0gKih2YXJpYWJsZSAqKSBzbG90OworKworKyAgLyogSWYgQ1VSX0xPQyBvZiBz b21lIHZhcmlhYmxlIHBhcnQgaXMgbm90IHRoZSBmaXJzdCBlbGVtZW50IG9mCisrICAgICB0aGUg bG9jYXRpb24gY2hhaW4gd2UgYXJlIGdvaW5nIHRvIGNoYW5nZSBpdCBzbyB3ZSBoYXZlIHRvIG1h a2UKKysgICAgIGEgY29weSBvZiB0aGUgdmFyaWFibGUuICAqLworKyAgZm9yIChrID0gMDsgayA8 IHNyYy0+bl92YXJfcGFydHM7IGsrKykKKysgICAgeworKyAgICAgIGdjY19hc3NlcnQgKCFzcmMt PnZhcl9wYXJ0W2tdLmxvY19jaGFpbiA9PSAhc3JjLT52YXJfcGFydFtrXS5jdXJfbG9jKTsKKysg ICAgICBpZiAoc3JjLT52YXJfcGFydFtrXS5sb2NfY2hhaW4pCisrCXsKKysJICBnY2NfYXNzZXJ0 IChzcmMtPnZhcl9wYXJ0W2tdLmN1cl9sb2MpOworKwkgIGlmIChzcmMtPnZhcl9wYXJ0W2tdLmN1 cl9sb2MgIT0gc3JjLT52YXJfcGFydFtrXS5sb2NfY2hhaW4tPmxvYykKKysJICAgIGJyZWFrOwor Kwl9CisrICAgIH0KKysgIGlmIChrIDwgc3JjLT5uX3Zhcl9wYXJ0cykKKysgICAgeworKyAgICAg IGVudW0gdmFyX2luaXRfc3RhdHVzIHN0YXR1cyA9IFZBUl9JTklUX1NUQVRVU19VTktOT1dOOwor KworKyAgICAgIGlmICghIGZsYWdfdmFyX3RyYWNraW5nX3VuaW5pdCkKKysJc3RhdHVzID0gVkFS X0lOSVRfU1RBVFVTX0lOSVRJQUxJWkVEOworKworKyAgICAgIHVuc2hhcmVfdmFyaWFibGUgKHNl dCwgc3JjLCBzdGF0dXMpOworKyAgICB9CisrICByZXR1cm4gMTsKKyt9CisrCisgLyogQ29tcHV0 ZSB1bmlvbiBvZiBkYXRhZmxvdyBzZXRzIFNSQyBhbmQgRFNUIGFuZCBzdG9yZSBpdCB0byBEU1Qu ICAqLworIAorIHN0YXRpYyB2b2lkCitAQCAtMTM4OSw3ICsxNTQzLDE0IEBAIGRhdGFmbG93X3Nl dF91bmlvbiAoZGF0YWZsb3dfc2V0ICpkc3QsIGQKKyAgIGZvciAoaSA9IDA7IGkgPCBGSVJTVF9Q U0VVRE9fUkVHSVNURVI7IGkrKykKKyAgICAgYXR0cnNfbGlzdF91bmlvbiAoJmRzdC0+cmVnc1tp XSwgc3JjLT5yZWdzW2ldKTsKKyAKKy0gIGh0YWJfdHJhdmVyc2UgKHNyYy0+dmFycywgdmFyaWFi bGVfdW5pb24sIGRzdCk7CisrICBpZiAoZHN0LT52YXJzID09IGVtcHR5X3NoYXJlZF9oYXNoKQor KyAgICB7CisrICAgICAgc2hhcmVkX2hhc2hfZGVzdHJveSAoZHN0LT52YXJzKTsKKysgICAgICBk c3QtPnZhcnMgPSBzaGFyZWRfaGFzaF9jb3B5IChzcmMtPnZhcnMpOworKyAgICAgIGh0YWJfdHJh dmVyc2UgKHNoYXJlZF9oYXNoX2h0YWIgKHNyYy0+dmFycyksIHZhcmlhYmxlX2Nhbm9uaWNhbGl6 ZSwgZHN0KTsKKysgICAgfQorKyAgZWxzZQorKyAgICBodGFiX3RyYXZlcnNlIChzaGFyZWRfaGFz aF9odGFiIChzcmMtPnZhcnMpLCB2YXJpYWJsZV91bmlvbiwgZHN0KTsKKyB9CisgCisgLyogRmxh ZyB3aGV0aGVyIHR3byBkYXRhZmxvdyBzZXRzIGJlaW5nIGNvbXBhcmVkIGNvbnRhaW4gZGlmZmVy ZW50IGRhdGEuICAqLworQEAgLTE1MjIsMTUgKzE2ODMsMjQgQEAgZGF0YWZsb3dfc2V0X2RpZmZl cmVudF8yICh2b2lkICoqc2xvdCwgdgorIHN0YXRpYyBib29sCisgZGF0YWZsb3dfc2V0X2RpZmZl cmVudCAoZGF0YWZsb3dfc2V0ICpvbGRfc2V0LCBkYXRhZmxvd19zZXQgKm5ld19zZXQpCisgewor KyAgaWYgKG9sZF9zZXQtPnZhcnMgPT0gbmV3X3NldC0+dmFycykKKysgICAgcmV0dXJuIGZhbHNl OworKworKyAgaWYgKGh0YWJfZWxlbWVudHMgKHNoYXJlZF9oYXNoX2h0YWIgKG9sZF9zZXQtPnZh cnMpKQorKyAgICAgICE9IGh0YWJfZWxlbWVudHMgKHNoYXJlZF9oYXNoX2h0YWIgKG5ld19zZXQt PnZhcnMpKSkKKysgICAgcmV0dXJuIHRydWU7CisrCisgICBkYXRhZmxvd19zZXRfZGlmZmVyZW50 X3ZhbHVlID0gZmFsc2U7CisgCistICBodGFiX3RyYXZlcnNlIChvbGRfc2V0LT52YXJzLCBkYXRh Zmxvd19zZXRfZGlmZmVyZW50XzEsIG5ld19zZXQtPnZhcnMpOworKyAgaHRhYl90cmF2ZXJzZSAo c2hhcmVkX2hhc2hfaHRhYiAob2xkX3NldC0+dmFycyksIGRhdGFmbG93X3NldF9kaWZmZXJlbnRf MSwKKysJCSBzaGFyZWRfaGFzaF9odGFiIChuZXdfc2V0LT52YXJzKSk7CisgICBpZiAoIWRhdGFm bG93X3NldF9kaWZmZXJlbnRfdmFsdWUpCisgICAgIHsKKyAgICAgICAvKiBXZSBoYXZlIGNvbXBh cmVkIHRoZSB2YXJpYWJsZXMgd2hpY2ggYXJlIGluIGJvdGggaGFzaCB0YWJsZXMKKyAJIHNvIG5v dyBvbmx5IGNoZWNrIHdoZXRoZXIgdGhlcmUgYXJlIHNvbWUgdmFyaWFibGVzIGluIE5FV19TRVQt PlZBUlMKKyAJIHdoaWNoIGFyZSBub3QgaW4gT0xEX1NFVC0+VkFSUy4gICovCistICAgICAgaHRh Yl90cmF2ZXJzZSAobmV3X3NldC0+dmFycywgZGF0YWZsb3dfc2V0X2RpZmZlcmVudF8yLCBvbGRf c2V0LT52YXJzKTsKKysgICAgICBodGFiX3RyYXZlcnNlIChzaGFyZWRfaGFzaF9odGFiIChuZXdf c2V0LT52YXJzKSwgZGF0YWZsb3dfc2V0X2RpZmZlcmVudF8yLAorKwkJICAgICBzaGFyZWRfaGFz aF9odGFiIChvbGRfc2V0LT52YXJzKSk7CisgICAgIH0KKyAgIHJldHVybiBkYXRhZmxvd19zZXRf ZGlmZmVyZW50X3ZhbHVlOworIH0KK0BAIC0xNTQ1LDcgKzE3MTUsNyBAQCBkYXRhZmxvd19zZXRf ZGVzdHJveSAoZGF0YWZsb3dfc2V0ICpzZXQpCisgICBmb3IgKGkgPSAwOyBpIDwgRklSU1RfUFNF VURPX1JFR0lTVEVSOyBpKyspCisgICAgIGF0dHJzX2xpc3RfY2xlYXIgKCZzZXQtPnJlZ3NbaV0p OworIAorLSAgaHRhYl9kZWxldGUgKHNldC0+dmFycyk7CisrICBzaGFyZWRfaGFzaF9kZXN0cm95 IChzZXQtPnZhcnMpOworICAgc2V0LT52YXJzID0gTlVMTDsKKyB9CisgCitAQCAtMTk4NSw3ICsy MTU1LDYgQEAgZmluZF9zcmNfc2V0X3NyYyAoZGF0YWZsb3dfc2V0ICpzZXQsIHJ0eAorIHsKKyAg IHRyZWUgZGVjbCA9IE5VTExfVFJFRTsgICAvKiBUaGUgdmFyaWFibGUgYmVpbmcgY29waWVkIGFy b3VuZC4gICAgICAgICAgKi8KKyAgIHJ0eCBzZXRfc3JjID0gTlVMTF9SVFg7ICAvKiBUaGUgdmFs dWUgZm9yICJkZWNsIiBzdG9yZWQgaW4gInNyYyIuICAgICAgKi8KKy0gIHZvaWQgKipzbG90Owor ICAgdmFyaWFibGUgdmFyOworICAgbG9jYXRpb25fY2hhaW4gbmV4dHA7CisgICBpbnQgaTsKK0BA IC0xOTk4LDEyICsyMTY3LDkgQEAgZmluZF9zcmNfc2V0X3NyYyAoZGF0YWZsb3dfc2V0ICpzZXQs IHJ0eAorIAorICAgaWYgKHNyYyAmJiBkZWNsKQorICAgICB7CistICAgICAgc2xvdCA9IGh0YWJf ZmluZF9zbG90X3dpdGhfaGFzaCAoc2V0LT52YXJzLCBkZWNsLCAKKy0JCQkJICAgICAgIFZBUklB QkxFX0hBU0hfVkFMIChkZWNsKSwgTk9fSU5TRVJUKTsKKy0KKy0gICAgICBpZiAoc2xvdCkKKysg ICAgICB2YXIgPSBzaGFyZWRfaGFzaF9maW5kIChzZXQtPnZhcnMsIGRlY2wpOworKyAgICAgIGlm ICh2YXIpCisgCXsKKy0JICB2YXIgPSAqKHZhcmlhYmxlICopIHNsb3Q7CisgCSAgZm91bmQgPSBm YWxzZTsKKyAJICBmb3IgKGkgPSAwOyBpIDwgdmFyLT5uX3Zhcl9wYXJ0cyAmJiAhZm91bmQ7IGkr KykKKyAJICAgIGZvciAobmV4dHAgPSB2YXItPnZhcl9wYXJ0W2ldLmxvY19jaGFpbjsgbmV4dHAg JiYgIWZvdW5kOyAKK0BAIC0yMDMxLDcgKzIxOTcsNyBAQCBjb21wdXRlX2JiX2RhdGFmbG93IChi YXNpY19ibG9jayBiYikKKyAgIGRhdGFmbG93X3NldCAqaW4gPSAmVlRJIChiYiktPmluOworICAg ZGF0YWZsb3dfc2V0ICpvdXQgPSAmVlRJIChiYiktPm91dDsKKyAKKy0gIGRhdGFmbG93X3NldF9p bml0ICgmb2xkX291dCwgaHRhYl9lbGVtZW50cyAoVlRJIChiYiktPm91dC52YXJzKSArIDMpOwor KyAgZGF0YWZsb3dfc2V0X2luaXQgKCZvbGRfb3V0KTsKKyAgIGRhdGFmbG93X3NldF9jb3B5ICgm b2xkX291dCwgb3V0KTsKKyAgIGRhdGFmbG93X3NldF9jb3B5IChvdXQsIGluKTsKKyAKK0BAIC0y MzIzLDcgKzI0ODksNyBAQCBkdW1wX2RhdGFmbG93X3NldCAoZGF0YWZsb3dfc2V0ICpzZXQpCisg CSAgZHVtcF9hdHRyc19saXN0IChzZXQtPnJlZ3NbaV0pOworIAl9CisgICAgIH0KKy0gIGR1bXBf dmFycyAoc2V0LT52YXJzKTsKKysgIGR1bXBfdmFycyAoc2hhcmVkX2hhc2hfaHRhYiAoc2V0LT52 YXJzKSk7CisgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJcbiIpOworIH0KKyAKK0BAIC0yMzQ1LDEw ICsyNTExLDEwIEBAIGR1bXBfZGF0YWZsb3dfc2V0cyAodm9pZCkKKyB9CisgCisgLyogQWRkIHZh cmlhYmxlIFZBUiB0byB0aGUgaGFzaCB0YWJsZSBvZiBjaGFuZ2VkIHZhcmlhYmxlcyBhbmQKKy0g ICBpZiBpdCBoYXMgbm8gbG9jYXRpb25zIGRlbGV0ZSBpdCBmcm9tIGhhc2ggdGFibGUgSFRBQi4g ICovCisrICAgaWYgaXQgaGFzIG5vIGxvY2F0aW9ucyBkZWxldGUgaXQgZnJvbSBTRVQncyBoYXNo IHRhYmxlLiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLXZhcmlhYmxlX3dhc19jaGFuZ2VkICh2YXJp YWJsZSB2YXIsIGh0YWJfdCBodGFiKQorK3ZhcmlhYmxlX3dhc19jaGFuZ2VkICh2YXJpYWJsZSB2 YXIsIGRhdGFmbG93X3NldCAqc2V0KQorIHsKKyAgIGhhc2h2YWxfdCBoYXNoID0gVkFSSUFCTEVf SEFTSF9WQUwgKHZhci0+ZGVjbCk7CisgCitAQCAtMjM1OSwzNiArMjUyNSwzOSBAQCB2YXJpYWJs ZV93YXNfY2hhbmdlZCAodmFyaWFibGUgdmFyLCBodGFiCisgICAgICAgc2xvdCA9ICh2YXJpYWJs ZSAqKSBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2ggKGNoYW5nZWRfdmFyaWFibGVzLAorIAkJCQkJ CSAgICB2YXItPmRlY2wsIGhhc2gsIElOU0VSVCk7CisgCistICAgICAgaWYgKGh0YWIgJiYgdmFy LT5uX3Zhcl9wYXJ0cyA9PSAwKQorKyAgICAgIGlmIChzZXQgJiYgdmFyLT5uX3Zhcl9wYXJ0cyA9 PSAwKQorIAl7CisgCSAgdmFyaWFibGUgZW1wdHlfdmFyOworLQkgIHZvaWQgKipvbGQ7CisgCisg CSAgZW1wdHlfdmFyID0gKHZhcmlhYmxlKSBwb29sX2FsbG9jICh2YXJfcG9vbCk7CisgCSAgZW1w dHlfdmFyLT5kZWNsID0gdmFyLT5kZWNsOworIAkgIGVtcHR5X3Zhci0+cmVmY291bnQgPSAxOwor IAkgIGVtcHR5X3Zhci0+bl92YXJfcGFydHMgPSAwOworIAkgICpzbG90ID0gZW1wdHlfdmFyOwor LQorLQkgIG9sZCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoaHRhYiwgdmFyLT5kZWNsLCBo YXNoLAorLQkJCQkJICBOT19JTlNFUlQpOworLQkgIGlmIChvbGQpCistCSAgICBodGFiX2NsZWFy X3Nsb3QgKGh0YWIsIG9sZCk7CisrCSAgZ290byBkcm9wX3ZhcjsKKyAJfQorICAgICAgIGVsc2UK KyAJeworKwkgIHZhci0+cmVmY291bnQrKzsKKyAJICAqc2xvdCA9IHZhcjsKKyAJfQorICAgICB9 CisgICBlbHNlCisgICAgIHsKKy0gICAgICBnY2NfYXNzZXJ0IChodGFiKTsKKysgICAgICBnY2Nf YXNzZXJ0IChzZXQpOworICAgICAgIGlmICh2YXItPm5fdmFyX3BhcnRzID09IDApCisgCXsKKy0J ICB2b2lkICoqc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoaHRhYiwgdmFyLT5kZWNs LCBoYXNoLAorLQkJCQkJCSAgTk9fSU5TRVJUKTsKKysJICB2b2lkICoqc2xvdDsKKysKKysJZHJv cF92YXI6CisrCSAgc2xvdCA9IHNoYXJlZF9oYXNoX2ZpbmRfc2xvdF9ub2luc2VydCAoc2V0LT52 YXJzLCB2YXItPmRlY2wpOworIAkgIGlmIChzbG90KQorLQkgICAgaHRhYl9jbGVhcl9zbG90ICho dGFiLCBzbG90KTsKKysJICAgIHsKKysJICAgICAgaWYgKHNoYXJlZF9oYXNoX3NoYXJlZCAoc2V0 LT52YXJzKSkKKysJCXNsb3QgPSBzaGFyZWRfaGFzaF9maW5kX3Nsb3RfdW5zaGFyZSAoJnNldC0+ dmFycywgdmFyLT5kZWNsLAorKwkJCQkJCSAgICAgIE5PX0lOU0VSVCk7CisrCSAgICAgIGh0YWJf Y2xlYXJfc2xvdCAoc2hhcmVkX2hhc2hfaHRhYiAoc2V0LT52YXJzKSwgc2xvdCk7CisrCSAgICB9 CisgCX0KKyAgICAgfQorIH0KK0BAIC0yNDM4LDEyICsyNjA3LDEyIEBAIHNldF92YXJpYWJsZV9w YXJ0IChkYXRhZmxvd19zZXQgKnNldCwgcnQKKyAgIGxvY2F0aW9uX2NoYWluIG5vZGUsIG5leHQ7 CisgICBsb2NhdGlvbl9jaGFpbiAqbmV4dHA7CisgICB2YXJpYWJsZSB2YXI7CistICB2b2lkICoq c2xvdDsKKy0gIAorLSAgc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoc2V0LT52YXJz LCBkZWNsLAorLQkJCQkgICBWQVJJQUJMRV9IQVNIX1ZBTCAoZGVjbCksIElOU0VSVCk7CistICBp ZiAoISpzbG90KQorKyAgdm9pZCAqKnNsb3QgPSBzaGFyZWRfaGFzaF9maW5kX3Nsb3QgKHNldC0+ dmFycywgZGVjbCk7CisrCisrICBpZiAoIXNsb3QgfHwgISpzbG90KQorICAgICB7CisrICAgICAg aWYgKCFzbG90KQorKwlzbG90ID0gc2hhcmVkX2hhc2hfZmluZF9zbG90X3Vuc2hhcmUgKCZzZXQt PnZhcnMsIGRlY2wsIElOU0VSVCk7CisgICAgICAgLyogQ3JlYXRlIG5ldyB2YXJpYWJsZSBpbmZv cm1hdGlvbi4gICovCisgICAgICAgdmFyID0gKHZhcmlhYmxlKSBwb29sX2FsbG9jICh2YXJfcG9v bCk7CisgICAgICAgdmFyLT5kZWNsID0gZGVjbDsKK0BAIC0yNDc5LDEzICsyNjQ4LDEyIEBAIHNl dF92YXJpYWJsZV9wYXJ0IChkYXRhZmxvd19zZXQgKnNldCwgcnQKKyAJICAgICAgaWYgKHNldF9z cmMgIT0gTlVMTCkKKyAJCW5vZGUtPnNldF9zcmMgPSBzZXRfc3JjOworIAorLQkgICAgICAqc2xv dCA9IHZhcjsKKyAJICAgICAgcmV0dXJuOworIAkgICAgfQorIAkgIGVsc2UKKyAJICAgIHsKKyAJ ICAgICAgLyogV2UgaGF2ZSB0byBtYWtlIGEgY29weSBvZiBhIHNoYXJlZCB2YXJpYWJsZS4gICov CistCSAgICAgIGlmICh2YXItPnJlZmNvdW50ID4gMSkKKysJICAgICAgaWYgKHZhci0+cmVmY291 bnQgPiAxIHx8IHNoYXJlZF9oYXNoX3NoYXJlZCAoc2V0LT52YXJzKSkKKyAJCXZhciA9IHVuc2hh cmVfdmFyaWFibGUgKHNldCwgdmFyLCBpbml0aWFsaXplZCk7CisgCSAgICB9CisgCX0KK0BAIC0y NDk0LDcgKzI2NjIsNyBAQCBzZXRfdmFyaWFibGVfcGFydCAoZGF0YWZsb3dfc2V0ICpzZXQsIHJ0 CisgCSAgLyogV2UgaGF2ZSBub3QgZm91bmQgdGhlIGxvY2F0aW9uIHBhcnQsIG5ldyBvbmUgd2ls bCBiZSBjcmVhdGVkLiAgKi8KKyAKKyAJICAvKiBXZSBoYXZlIHRvIG1ha2UgYSBjb3B5IG9mIHRo ZSBzaGFyZWQgdmFyaWFibGUuICAqLworLQkgIGlmICh2YXItPnJlZmNvdW50ID4gMSkKKysJICBp ZiAodmFyLT5yZWZjb3VudCA+IDEgfHwgc2hhcmVkX2hhc2hfc2hhcmVkIChzZXQtPnZhcnMpKQor IAkgICAgdmFyID0gdW5zaGFyZV92YXJpYWJsZSAoc2V0LCB2YXIsIGluaXRpYWxpemVkKTsKKyAK KyAJICAvKiBXZSB0cmFjayBvbmx5IHZhcmlhYmxlcyB3aG9zZSBzaXplIGlzIDw9IE1BWF9WQVJf UEFSVFMgYnl0ZXMKK0BAIC0yNTQ4LDcgKzI3MTYsNyBAQCBzZXRfdmFyaWFibGVfcGFydCAoZGF0 YWZsb3dfc2V0ICpzZXQsIHJ0CisgICBpZiAodmFyLT52YXJfcGFydFtwb3NdLmN1cl9sb2MgPT0g TlVMTCkKKyAgICAgeworICAgICAgIHZhci0+dmFyX3BhcnRbcG9zXS5jdXJfbG9jID0gbG9jOwor LSAgICAgIHZhcmlhYmxlX3dhc19jaGFuZ2VkICh2YXIsIHNldC0+dmFycyk7CisrICAgICAgdmFy aWFibGVfd2FzX2NoYW5nZWQgKHZhciwgc2V0KTsKKyAgICAgfQorIH0KKyAKK0BAIC0yNTYxLDE2 ICsyNzI5LDE0IEBAIHN0YXRpYyB2b2lkCisgY2xvYmJlcl92YXJpYWJsZV9wYXJ0IChkYXRhZmxv d19zZXQgKnNldCwgcnR4IGxvYywgdHJlZSBkZWNsLAorIAkJICAgICAgIEhPU1RfV0lERV9JTlQg b2Zmc2V0LCBydHggc2V0X3NyYykKKyB7CistICB2b2lkICoqc2xvdDsKKysgIHZhcmlhYmxlIHZh cjsKKyAKKyAgIGlmICghIGRlY2wgfHwgISBERUNMX1AgKGRlY2wpKQorICAgICByZXR1cm47Cisg CistICBzbG90ID0gaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoIChzZXQtPnZhcnMsIGRlY2wsIFZB UklBQkxFX0hBU0hfVkFMIChkZWNsKSwKKy0JCQkJICAgTk9fSU5TRVJUKTsKKy0gIGlmIChzbG90 KQorKyAgdmFyID0gc2hhcmVkX2hhc2hfZmluZCAoc2V0LT52YXJzLCBkZWNsKTsKKysgIGlmICh2 YXIpCisgICAgIHsKKy0gICAgICB2YXJpYWJsZSB2YXIgPSAodmFyaWFibGUpICpzbG90OworICAg ICAgIGludCBwb3MgPSBmaW5kX3ZhcmlhYmxlX2xvY2F0aW9uX3BhcnQgKHZhciwgb2Zmc2V0LCBO VUxMKTsKKyAKKyAgICAgICBpZiAocG9zID49IDApCitAQCAtMjYyNywxMyArMjc5Myw5IEBAIHN0 YXRpYyB2b2lkCisgZGVsZXRlX3ZhcmlhYmxlX3BhcnQgKGRhdGFmbG93X3NldCAqc2V0LCBydHgg bG9jLCB0cmVlIGRlY2wsCisgCQkgICAgICBIT1NUX1dJREVfSU5UIG9mZnNldCkKKyB7CistICB2 b2lkICoqc2xvdDsKKy0gICAgCistICBzbG90ID0gaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoIChz ZXQtPnZhcnMsIGRlY2wsIFZBUklBQkxFX0hBU0hfVkFMIChkZWNsKSwKKy0JCQkJICAgTk9fSU5T RVJUKTsKKy0gIGlmIChzbG90KQorKyAgdmFyaWFibGUgdmFyID0gc2hhcmVkX2hhc2hfZmluZCAo c2V0LT52YXJzLCBkZWNsKTs7CisrICBpZiAodmFyKQorICAgICB7CistICAgICAgdmFyaWFibGUg dmFyID0gKHZhcmlhYmxlKSAqc2xvdDsKKyAgICAgICBpbnQgcG9zID0gZmluZF92YXJpYWJsZV9s b2NhdGlvbl9wYXJ0ICh2YXIsIG9mZnNldCwgTlVMTCk7CisgCisgICAgICAgaWYgKHBvcyA+PSAw KQorQEAgLTI2NDIsNyArMjgwNCw3IEBAIGRlbGV0ZV92YXJpYWJsZV9wYXJ0IChkYXRhZmxvd19z ZXQgKnNldCwKKyAJICBsb2NhdGlvbl9jaGFpbiAqbmV4dHA7CisgCSAgYm9vbCBjaGFuZ2VkOwor IAorLQkgIGlmICh2YXItPnJlZmNvdW50ID4gMSkKKysJICBpZiAodmFyLT5yZWZjb3VudCA+IDEg fHwgc2hhcmVkX2hhc2hfc2hhcmVkIChzZXQtPnZhcnMpKQorIAkgICAgeworIAkgICAgICAvKiBJ ZiB0aGUgdmFyaWFibGUgY29udGFpbnMgdGhlIGxvY2F0aW9uIHBhcnQgd2UgaGF2ZSB0bworIAkJ IG1ha2UgYSBjb3B5IG9mIHRoZSB2YXJpYWJsZS4gICovCitAQCAtMjcwNSw3ICsyODY3LDcgQEAg ZGVsZXRlX3ZhcmlhYmxlX3BhcnQgKGRhdGFmbG93X3NldCAqc2V0LAorIAkJfQorIAkgICAgfQor IAkgIGlmIChjaGFuZ2VkKQorLQkgICAgdmFyaWFibGVfd2FzX2NoYW5nZWQgKHZhciwgc2V0LT52 YXJzKTsKKysJICAgIHZhcmlhYmxlX3dhc19jaGFuZ2VkICh2YXIsIHNldCk7CisgCX0KKyAgICAg fQorIH0KK0BAIC0yODY0LDE0ICszMDI2LDYgQEAgZW1pdF9ub3RlX2luc25fdmFyX2xvY2F0aW9u ICh2b2lkICoqdmFycAorIAorICAgaHRhYl9jbGVhcl9zbG90IChjaGFuZ2VkX3ZhcmlhYmxlcywg dmFycCk7CisgCistICAvKiBXaGVuIHRoZXJlIGFyZSBubyBsb2NhdGlvbiBwYXJ0cyB0aGUgdmFy aWFibGUgaGFzIGJlZW4gYWxyZWFkeQorLSAgICAgcmVtb3ZlZCBmcm9tIGhhc2ggdGFibGUgYW5k IGEgbmV3IGVtcHR5IHZhcmlhYmxlIHdhcyBjcmVhdGVkLgorLSAgICAgRnJlZSB0aGUgZW1wdHkg dmFyaWFibGUuICAqLworLSAgaWYgKHZhci0+bl92YXJfcGFydHMgPT0gMCkKKy0gICAgeworLSAg ICAgIHBvb2xfZnJlZSAodmFyX3Bvb2wsIHZhcik7CistICAgIH0KKy0KKyAgIC8qIENvbnRpbnVl IHRyYXZlcnNpbmcgdGhlIGhhc2ggdGFibGUuICAqLworICAgcmV0dXJuIDE7CisgfQorQEAgLTI5 MTAsNyArMzA2NCw3IEBAIGVtaXRfbm90ZXNfZm9yX2RpZmZlcmVuY2VzXzEgKHZvaWQgKipzbG8K KyAKKyAgICAgICBlbXB0eV92YXIgPSAodmFyaWFibGUpIHBvb2xfYWxsb2MgKHZhcl9wb29sKTsK KyAgICAgICBlbXB0eV92YXItPmRlY2wgPSBvbGRfdmFyLT5kZWNsOworLSAgICAgIGVtcHR5X3Zh ci0+cmVmY291bnQgPSAxOworKyAgICAgIGVtcHR5X3Zhci0+cmVmY291bnQgPSAwOworICAgICAg IGVtcHR5X3Zhci0+bl92YXJfcGFydHMgPSAwOworICAgICAgIHZhcmlhYmxlX3dhc19jaGFuZ2Vk IChlbXB0eV92YXIsIE5VTEwpOworICAgICB9CitAQCAtMjk1Miw4ICszMTA2LDEyIEBAIHN0YXRp YyB2b2lkCisgZW1pdF9ub3Rlc19mb3JfZGlmZmVyZW5jZXMgKHJ0eCBpbnNuLCBkYXRhZmxvd19z ZXQgKm9sZF9zZXQsCisgCQkJICAgIGRhdGFmbG93X3NldCAqbmV3X3NldCkKKyB7CistICBodGFi X3RyYXZlcnNlIChvbGRfc2V0LT52YXJzLCBlbWl0X25vdGVzX2Zvcl9kaWZmZXJlbmNlc18xLCBu ZXdfc2V0LT52YXJzKTsKKy0gIGh0YWJfdHJhdmVyc2UgKG5ld19zZXQtPnZhcnMsIGVtaXRfbm90 ZXNfZm9yX2RpZmZlcmVuY2VzXzIsIG9sZF9zZXQtPnZhcnMpOworKyAgaHRhYl90cmF2ZXJzZSAo c2hhcmVkX2hhc2hfaHRhYiAob2xkX3NldC0+dmFycyksCisrCQkgZW1pdF9ub3Rlc19mb3JfZGlm ZmVyZW5jZXNfMSwKKysJCSBzaGFyZWRfaGFzaF9odGFiIChuZXdfc2V0LT52YXJzKSk7CisrICBo dGFiX3RyYXZlcnNlIChzaGFyZWRfaGFzaF9odGFiIChuZXdfc2V0LT52YXJzKSwKKysJCSBlbWl0 X25vdGVzX2Zvcl9kaWZmZXJlbmNlc18yLAorKwkJIHNoYXJlZF9oYXNoX2h0YWIgKG9sZF9zZXQt PnZhcnMpKTsKKyAgIGVtaXRfbm90ZXNfZm9yX2NoYW5nZXMgKGluc24sIEVNSVRfTk9URV9CRUZP UkVfSU5TTik7CisgfQorIAorQEAgLTI5NjUsNyArMzEyMyw3IEBAIGVtaXRfbm90ZXNfaW5fYmIg KGJhc2ljX2Jsb2NrIGJiKQorICAgaW50IGk7CisgICBkYXRhZmxvd19zZXQgc2V0OworIAorLSAg ZGF0YWZsb3dfc2V0X2luaXQgKCZzZXQsIGh0YWJfZWxlbWVudHMgKFZUSSAoYmIpLT5pbi52YXJz KSArIDMpOworKyAgZGF0YWZsb3dfc2V0X2luaXQgKCZzZXQpOworICAgZGF0YWZsb3dfc2V0X2Nv cHkgKCZzZXQsICZWVEkgKGJiKS0+aW4pOworIAorICAgZm9yIChpID0gMDsgaSA8IFZUSSAoYmIp LT5uX21vczsgaSsrKQorQEAgLTMwOTgsNyArMzI1Niw3IEBAIHZ0X2VtaXRfbm90ZXMgKHZvaWQp CisgICAgICBkZWxldGVfdmFyaWFibGVfcGFydCkuICAqLworICAgZW1pdF9ub3RlcyA9IHRydWU7 CisgCistICBkYXRhZmxvd19zZXRfaW5pdCAoJmVtcHR5LCA3KTsKKysgIGRhdGFmbG93X3NldF9p bml0ICgmZW1wdHkpOworICAgbGFzdF9vdXQgPSAmZW1wdHk7CisgCisgICBGT1JfRUFDSF9CQiAo YmIpCitAQCAtMzM0MywxNCArMzUwMSw2IEBAIHZ0X2luaXRpYWxpemUgKHZvaWQpCisgCX0KKyAg ICAgfQorIAorLSAgLyogSW5pdCB0aGUgSU4gYW5kIE9VVCBzZXRzLiAgKi8KKy0gIEZPUl9BTExf QkIgKGJiKQorLSAgICB7CistICAgICAgVlRJIChiYiktPnZpc2l0ZWQgPSBmYWxzZTsKKy0gICAg ICBkYXRhZmxvd19zZXRfaW5pdCAoJlZUSSAoYmIpLT5pbiwgNyk7CistICAgICAgZGF0YWZsb3df c2V0X2luaXQgKCZWVEkgKGJiKS0+b3V0LCA3KTsKKy0gICAgfQorLQorICAgYXR0cnNfcG9vbCA9 IGNyZWF0ZV9hbGxvY19wb29sICgiYXR0cnNfZGVmIHBvb2wiLAorIAkJCQkgIHNpemVvZiAoc3Ry dWN0IGF0dHJzX2RlZiksIDEwMjQpOworICAgdmFyX3Bvb2wgPSBjcmVhdGVfYWxsb2NfcG9vbCAo InZhcmlhYmxlX2RlZiBwb29sIiwKK0BAIC0zMzU4LDggKzM1MDgsMjQgQEAgdnRfaW5pdGlhbGl6 ZSAodm9pZCkKKyAgIGxvY19jaGFpbl9wb29sID0gY3JlYXRlX2FsbG9jX3Bvb2wgKCJsb2NhdGlv bl9jaGFpbl9kZWYgcG9vbCIsCisgCQkJCSAgICAgIHNpemVvZiAoc3RydWN0IGxvY2F0aW9uX2No YWluX2RlZiksCisgCQkJCSAgICAgIDEwMjQpOworKyAgc2hhcmVkX2hhc2hfcG9vbCA9IGNyZWF0 ZV9hbGxvY19wb29sICgic2hhcmVkX2hhc2hfZGVmIHBvb2wiLAorKwkJCQkJc2l6ZW9mIChzdHJ1 Y3Qgc2hhcmVkX2hhc2hfZGVmKSwgMjU2KTsKKysgIGVtcHR5X3NoYXJlZF9oYXNoID0gKHNoYXJl ZF9oYXNoKSBwb29sX2FsbG9jIChzaGFyZWRfaGFzaF9wb29sKTsKKysgIGVtcHR5X3NoYXJlZF9o YXNoLT5yZWZjb3VudCA9IDE7CisrICBlbXB0eV9zaGFyZWRfaGFzaC0+aHRhYgorKyAgICA9IGh0 YWJfY3JlYXRlICgxLCB2YXJpYWJsZV9odGFiX2hhc2gsIHZhcmlhYmxlX2h0YWJfZXEsCisrCQkg ICB2YXJpYWJsZV9odGFiX2ZyZWUpOworICAgY2hhbmdlZF92YXJpYWJsZXMgPSBodGFiX2NyZWF0 ZSAoMTAsIHZhcmlhYmxlX2h0YWJfaGFzaCwgdmFyaWFibGVfaHRhYl9lcSwKKy0JCQkJICAgTlVM TCk7CisrCQkJCSAgIHZhcmlhYmxlX2h0YWJfZnJlZSk7CisrCisrICAvKiBJbml0IHRoZSBJTiBh bmQgT1VUIHNldHMuICAqLworKyAgRk9SX0FMTF9CQiAoYmIpCisrICAgIHsKKysgICAgICBWVEkg KGJiKS0+dmlzaXRlZCA9IGZhbHNlOworKyAgICAgIGRhdGFmbG93X3NldF9pbml0ICgmVlRJIChi YiktPmluKTsKKysgICAgICBkYXRhZmxvd19zZXRfaW5pdCAoJlZUSSAoYmIpLT5vdXQpOworKyAg ICB9CisrCisgICB2dF9hZGRfZnVuY3Rpb25fcGFyYW1ldGVycyAoKTsKKyB9CisgCitAQCAtMzM4 MSwxMCArMzU0NywxMiBAQCB2dF9maW5hbGl6ZSAodm9pZCkKKyAgICAgICBkYXRhZmxvd19zZXRf ZGVzdHJveSAoJlZUSSAoYmIpLT5vdXQpOworICAgICB9CisgICBmcmVlX2F1eF9mb3JfYmxvY2tz ICgpOworKyAgaHRhYl9kZWxldGUgKGVtcHR5X3NoYXJlZF9oYXNoLT5odGFiKTsKKysgIGh0YWJf ZGVsZXRlIChjaGFuZ2VkX3ZhcmlhYmxlcyk7CisgICBmcmVlX2FsbG9jX3Bvb2wgKGF0dHJzX3Bv b2wpOworICAgZnJlZV9hbGxvY19wb29sICh2YXJfcG9vbCk7CisgICBmcmVlX2FsbG9jX3Bvb2wg KGxvY19jaGFpbl9wb29sKTsKKy0gIGh0YWJfZGVsZXRlIChjaGFuZ2VkX3ZhcmlhYmxlcyk7Cisr ICBmcmVlX2FsbG9jX3Bvb2wgKHNoYXJlZF9oYXNoX3Bvb2wpOworIH0KKyAKKyAvKiBUaGUgZW50 cnkgcG9pbnQgdG8gdmFyaWFibGUgdHJhY2tpbmcgcGFzcy4gICovCistLS0gbGliaWJlcnR5L2hh c2h0YWIuYwkocmV2aXNpb24gMTQ4NzU4KQorKysrIGxpYmliZXJ0eS9oYXNodGFiLmMJKHJldmlz aW9uIDE0ODc2MCkKK0BAIC03NTksNyArNzU5LDggQEAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAo aHRhYl90IGh0YWIsIGh0YQorIHZvaWQKKyBodGFiX3RyYXZlcnNlIChodGFiX3QgaHRhYiwgaHRh Yl90cmF2IGNhbGxiYWNrLCBQVFIgaW5mbykKKyB7CistICBpZiAoaHRhYl9lbGVtZW50cyAoaHRh YikgKiA4IDwgaHRhYl9zaXplIChodGFiKSkKKysgIHNpemVfdCBzaXplID0gaHRhYl9zaXplICho dGFiKTsKKysgIGlmIChodGFiX2VsZW1lbnRzIChodGFiKSAqIDggPCBzaXplICYmIHNpemUgPiAz MikKKyAgICAgaHRhYl9leHBhbmQgKGh0YWIpOworIAorICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6 ZSAoaHRhYiwgY2FsbGJhY2ssIGluZm8pOwoKZGlmZiAtLWdpdCBhL2djYzQ0LXJoNTAzODE2LTIu cGF0Y2ggYi9nY2M0NC1yaDUwMzgxNi0yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjVlZTQ1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0NC1yaDUwMzgxNi0yLnBh dGNoCkBAIC0wLDAgKzEsNDkxIEBACisyMDA5LTA2LTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJA cmVkaGF0LmNvbT4KKworCSogdmFyLXRyYWNraW5nLmMgKHVuc2hhcmVfdmFyaWFibGUpOiBGb3Jj ZSBpbml0aWFsaXplZCB0bworCWJlIFZBUl9JTklUX1NUQVRVU19JTklUSUFMSVpFRCB1bmxlc3Mg ZmxhZ192YXJfdHJhY2tpbmdfdW5pbml0LgorCShzZXRfdmFyaWFibGVfcGFydCk6IExpa2V3aXNl LgorCShzdHJ1Y3QgdmFyaWFibGVfdW5pb25faW5mbyk6IFJlbW92ZSBwb3Nfc3JjIGZpZWxkLgor CSh2dWlfdmVjLCB2dWlfYWxsb2NhdGVkKTogTmV3IHZhcmlhYmxlcy4KKwkodmFyaWFibGVfdW5p b24pOiBQYXNzIFZBUl9JTklUX1NUQVRVU19VTktOT1dOIHRvIHVuc2hhcmVfdmFyaWFibGUKKwl1 bmNvbmRpdGlvbmFsbHkuICBBdm9pZCBYQ1ZFQ05FVy9mcmVlIGZvciBldmVyeSBzb3J0aW5nLCBm b3IgZHN0X2wKKwk9PSAxIHVzZSBhIHNpbXBsZXIgc29ydGluZyBhbGdvcml0aG0uICBDb21wdXRl IHBvcyBmaWVsZCByaWdodAorCWF3YXksIGRvbid0IGZpbGwgaW4gcG9zX3NyYy4gIEZvciBkc3Rf bCA9PSAyIGF2b2lkIHFzb3J0LgorCUF2b2lkIHF1YWRyYXRpYyBjb21wYXJpc29uIGlmICFmbGFn X3Zhcl90cmFja2luZ191bmluaXQuCisJKHZhcmlhYmxlX2Nhbm9uaWNhbGl6ZSk6IFBhc3MgVkFS X0lOSVRfU1RBVFVTX1VOS05PV04gdG8KKwl1bnNoYXJlX3ZhcmlhYmxlIHVuY29uZGl0aW9uYWxs eS4gICAKKwkoZGF0YWZsb3dfc2V0X2RpZmZlcmVudF8yKTogUmVtb3ZlZC4KKwkoZGF0YWZsb3df c2V0X2RpZmZlcmVudCk6IERvbid0IHRyYXZlcnNlIHNlY29uZCBoYXNoIHRhYmxlLgorCShjb21w dXRlX2JiX2RhdGFmbG93KTogUGFzcyBWQVJfSU5JVF9TVEFUVVNfVU5JTklUSUFMSVpFRAorCXVu Y29uZGl0aW9uYWxseSB0byB2YXJfcmVnX3NldCBvciB2YXJfbWVtX3NldC4KKwkoZW1pdF9ub3Rl c19pbl9iYik6IExpa2V3aXNlLgorCShkZWxldGVfdmFyaWFibGVfcGFydCk6IFBhc3MgVkFSX0lO SVRfU1RBVFVTX1VOS05PV04gdG8KKwl1bnNoYXJlX3ZhcmlhYmxlLgorCShlbWl0X25vdGVfaW5z bl92YXJfbG9jYXRpb24pOiBEb24ndCBzZXQgaW5pdGlhbGl6ZWQgdG8KKwlWQVJfSU5JVF9TVEFU VVNfSU5JVElBTElaRUQgZWFybHkuCisJKHZ0X2ZpbmFsaXplKTogRnJlZSB2dWlfdmVjIGlmIG5l ZWRlZCwgY2xlYXIgdnVpX3ZlYyBhbmQKKwl2dWlfYWxsb2NhdGVkLgorCistLS0gZ2NjL3Zhci10 cmFja2luZy5jCShyZXZpc2lvbiAxNDg4NTEpCisrKysgZ2NjL3Zhci10cmFja2luZy5jCShyZXZp c2lvbiAxNDg4NTIpCitAQCAtMzQ3LDcgKzM0Nyw2IEBAIHN0YXRpYyB2b2lkIGRhdGFmbG93X3Nl dF91bmlvbiAoZGF0YWZsb3cKKyBzdGF0aWMgYm9vbCB2YXJpYWJsZV9wYXJ0X2RpZmZlcmVudF9w ICh2YXJpYWJsZV9wYXJ0ICosIHZhcmlhYmxlX3BhcnQgKik7Cisgc3RhdGljIGJvb2wgdmFyaWFi bGVfZGlmZmVyZW50X3AgKHZhcmlhYmxlLCB2YXJpYWJsZSwgYm9vbCk7Cisgc3RhdGljIGludCBk YXRhZmxvd19zZXRfZGlmZmVyZW50XzEgKHZvaWQgKiosIHZvaWQgKik7Cistc3RhdGljIGludCBk YXRhZmxvd19zZXRfZGlmZmVyZW50XzIgKHZvaWQgKiosIHZvaWQgKik7Cisgc3RhdGljIGJvb2wg ZGF0YWZsb3dfc2V0X2RpZmZlcmVudCAoZGF0YWZsb3dfc2V0ICosIGRhdGFmbG93X3NldCAqKTsK KyBzdGF0aWMgdm9pZCBkYXRhZmxvd19zZXRfZGVzdHJveSAoZGF0YWZsb3dfc2V0ICopOworIAor QEAgLTg3OCw2ICs4NzcsOSBAQCB1bnNoYXJlX3ZhcmlhYmxlIChkYXRhZmxvd19zZXQgKnNldCwg dmFyCisgICB2YXItPnJlZmNvdW50LS07CisgICBuZXdfdmFyLT5uX3Zhcl9wYXJ0cyA9IHZhci0+ bl92YXJfcGFydHM7CisgCisrICBpZiAoISBmbGFnX3Zhcl90cmFja2luZ191bmluaXQpCisrICAg IGluaXRpYWxpemVkID0gVkFSX0lOSVRfU1RBVFVTX0lOSVRJQUxJWkVEOworKworICAgZm9yIChp ID0gMDsgaSA8IHZhci0+bl92YXJfcGFydHM7IGkrKykKKyAgICAgeworICAgICAgIGxvY2F0aW9u X2NoYWluIG5vZGU7CitAQCAtMTIwMiwxMSArMTIwNCwxNCBAQCBzdHJ1Y3QgdmFyaWFibGVfdW5p b25faW5mbworICAgLyogVGhlIHN1bSBvZiBwb3NpdGlvbnMgaW4gdGhlIGlucHV0IGNoYWlucy4g ICovCisgICBpbnQgcG9zOworIAorLSAgLyogVGhlIHBvc2l0aW9uIGluIHRoZSBjaGFpbnMgb2Yg U1JDIGFuZCBEU1QgZGF0YWZsb3cgc2V0cy4gICovCistICBpbnQgcG9zX3NyYzsKKysgIC8qIFRo ZSBwb3NpdGlvbiBpbiB0aGUgY2hhaW4gb2YgRFNUIGRhdGFmbG93IHNldC4gICovCisgICBpbnQg cG9zX2RzdDsKKyB9OworIAorKy8qIEJ1ZmZlciBmb3IgbG9jYXRpb24gbGlzdCBzb3J0aW5nIGFu ZCBpdHMgYWxsb2NhdGVkIHNpemUuICAqLworK3N0YXRpYyBzdHJ1Y3QgdmFyaWFibGVfdW5pb25f aW5mbyAqdnVpX3ZlYzsKKytzdGF0aWMgaW50IHZ1aV9hbGxvY2F0ZWQ7CisrCisgLyogQ29tcGFy ZSBmdW5jdGlvbiBmb3IgcXNvcnQsIG9yZGVyIHRoZSBzdHJ1Y3R1cmVzIGJ5IFBPUyBlbGVtZW50 LiAgKi8KKyAKKyBzdGF0aWMgaW50CitAQCAtMTI2MywxNCArMTI2OCw5IEBAIHZhcmlhYmxlX3Vu aW9uICh2b2lkICoqc2xvdCwgdm9pZCAqZGF0YSkKKyAJfQorICAgICAgIGlmIChrIDwgc3JjLT5u X3Zhcl9wYXJ0cykKKyAJeworLQkgIGVudW0gdmFyX2luaXRfc3RhdHVzIHN0YXR1cyA9IFZBUl9J TklUX1NUQVRVU19VTktOT1dOOworLQkgIAorLQkgIGlmICghIGZsYWdfdmFyX3RyYWNraW5nX3Vu aW5pdCkKKy0JICAgIHN0YXR1cyA9IFZBUl9JTklUX1NUQVRVU19JTklUSUFMSVpFRDsKKy0KKyAJ ICBpZiAoZHN0cCkKKyAJICAgICpkc3RwID0gKHZvaWQgKikgc3JjOworLQkgIHVuc2hhcmVfdmFy aWFibGUgKHNldCwgc3JjLCBzdGF0dXMpOworKwkgIHVuc2hhcmVfdmFyaWFibGUgKHNldCwgc3Jj LCBWQVJfSU5JVF9TVEFUVVNfVU5LTk9XTik7CisgCX0KKyAgICAgICBlbHNlCisgCXsKK0BAIC0x MzExLDEzICsxMzExLDcgQEAgdmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRh KQorIAorICAgaWYgKChkc3QtPnJlZmNvdW50ID4gMSB8fCBzaGFyZWRfaGFzaF9zaGFyZWQgKHNl dC0+dmFycykpCisgICAgICAgJiYgZHN0LT5uX3Zhcl9wYXJ0cyAhPSBrKQorLSAgICB7CistICAg ICAgZW51bSB2YXJfaW5pdF9zdGF0dXMgc3RhdHVzID0gVkFSX0lOSVRfU1RBVFVTX1VOS05PV047 CistICAgICAgCistICAgICAgaWYgKCEgZmxhZ192YXJfdHJhY2tpbmdfdW5pbml0KQorLQlzdGF0 dXMgPSBWQVJfSU5JVF9TVEFUVVNfSU5JVElBTElaRUQ7CistICAgICAgZHN0ID0gdW5zaGFyZV92 YXJpYWJsZSAoc2V0LCBkc3QsIHN0YXR1cyk7CistICAgIH0KKysgICAgZHN0ID0gdW5zaGFyZV92 YXJpYWJsZSAoc2V0LCBkc3QsIFZBUl9JTklUX1NUQVRVU19VTktOT1dOKTsKKyAKKyAgIGkgPSBz cmMtPm5fdmFyX3BhcnRzIC0gMTsKKyAgIGogPSBkc3QtPm5fdmFyX3BhcnRzIC0gMTsKK0BAIC0x MzY2LDcwICsxMzYwLDE1MiBAQCB2YXJpYWJsZV91bmlvbiAodm9pZCAqKnNsb3QsIHZvaWQgKmRh dGEpCisgCSAgZHN0X2wgPSAwOworIAkgIGZvciAobm9kZSA9IGRzdC0+dmFyX3BhcnRbal0ubG9j X2NoYWluOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCkKKyAJICAgIGRzdF9sKys7CistCSAgdnVp ID0gWENORVdWRUMgKHN0cnVjdCB2YXJpYWJsZV91bmlvbl9pbmZvLCBzcmNfbCArIGRzdF9sKTsK KyAKKy0JICAvKiBGaWxsIGluIHRoZSBsb2NhdGlvbnMgZnJvbSBEU1QuICAqLworLQkgIGZvciAo bm9kZSA9IGRzdC0+dmFyX3BhcnRbal0ubG9jX2NoYWluLCBqaiA9IDA7IG5vZGU7CistCSAgICAg ICBub2RlID0gbm9kZS0+bmV4dCwgamorKykKKysJICBpZiAoZHN0X2wgPT0gMSkKKyAJICAgIHsK Ky0JICAgICAgdnVpW2pqXS5sYyA9IG5vZGU7CistCSAgICAgIHZ1aVtqal0ucG9zX2RzdCA9IGpq OworKwkgICAgICAvKiBUaGUgbW9zdCBjb21tb24gY2FzZSwgbXVjaCBzaW1wbGVyLCBubyBxc29y dCBpcyBuZWVkZWQuICAqLworKwkgICAgICBsb2NhdGlvbl9jaGFpbiBkc3Rub2RlID0gZHN0LT52 YXJfcGFydFtqXS5sb2NfY2hhaW47CisrCSAgICAgIGRzdC0+dmFyX3BhcnRba10ubG9jX2NoYWlu ID0gZHN0bm9kZTsKKysJICAgICAgZHN0LT52YXJfcGFydFtrXS5vZmZzZXQgPSBkc3QtPnZhcl9w YXJ0W2pdLm9mZnNldDsKKysJICAgICAgbm9kZTIgPSBkc3Rub2RlOworKwkgICAgICBmb3IgKG5v ZGUgPSBzcmMtPnZhcl9wYXJ0W2ldLmxvY19jaGFpbjsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHQp CisrCQlpZiAoISgoUkVHX1AgKGRzdG5vZGUtPmxvYykKKysJCSAgICAgICAmJiBSRUdfUCAobm9k ZS0+bG9jKQorKwkJICAgICAgICYmIFJFR05PIChkc3Rub2RlLT5sb2MpID09IFJFR05PIChub2Rl LT5sb2MpKQorKwkJICAgICAgfHwgcnR4X2VxdWFsX3AgKGRzdG5vZGUtPmxvYywgbm9kZS0+bG9j KSkpCisrCQkgIHsKKysJCSAgICBsb2NhdGlvbl9jaGFpbiBuZXdfbm9kZTsKKyAKKy0JICAgICAg LyogVmFsdWUgbGFyZ2VyIHRoYW4gYSBzdW0gb2YgMiB2YWxpZCBwb3NpdGlvbnMuICAqLworLQkg ICAgICB2dWlbampdLnBvc19zcmMgPSBzcmNfbCArIGRzdF9sOworKwkJICAgIC8qIENvcHkgdGhl IGxvY2F0aW9uIGZyb20gU1JDLiAgKi8KKysJCSAgICBuZXdfbm9kZSA9IChsb2NhdGlvbl9jaGFp bikgcG9vbF9hbGxvYyAobG9jX2NoYWluX3Bvb2wpOworKwkJICAgIG5ld19ub2RlLT5sb2MgPSBu b2RlLT5sb2M7CisrCQkgICAgbmV3X25vZGUtPmluaXQgPSBub2RlLT5pbml0OworKwkJICAgIGlm ICghbm9kZS0+c2V0X3NyYyB8fCBNRU1fUCAobm9kZS0+c2V0X3NyYykpCisrCQkgICAgICBuZXdf bm9kZS0+c2V0X3NyYyA9IE5VTEw7CisrCQkgICAgZWxzZQorKwkJICAgICAgbmV3X25vZGUtPnNl dF9zcmMgPSBub2RlLT5zZXRfc3JjOworKwkJICAgIG5vZGUyLT5uZXh0ID0gbmV3X25vZGU7Cisr CQkgICAgbm9kZTIgPSBuZXdfbm9kZTsKKysJCSAgfQorKwkgICAgICBub2RlMi0+bmV4dCA9IE5V TEw7CisgCSAgICB9CistCistCSAgLyogRmlsbCBpbiB0aGUgbG9jYXRpb25zIGZyb20gU1JDLiAg Ki8KKy0JICBuID0gZHN0X2w7CistCSAgZm9yIChub2RlID0gc3JjLT52YXJfcGFydFtpXS5sb2Nf Y2hhaW4sIGlpID0gMDsgbm9kZTsKKy0JICAgICAgIG5vZGUgPSBub2RlLT5uZXh0LCBpaSsrKQor KwkgIGVsc2UKKyAJICAgIHsKKy0JICAgICAgLyogRmluZCBsb2NhdGlvbiBmcm9tIE5PREUuICAq LworLQkgICAgICBmb3IgKGpqID0gMDsgamogPCBkc3RfbDsgamorKykKKysJICAgICAgaWYgKHNy Y19sICsgZHN0X2wgPiB2dWlfYWxsb2NhdGVkKQorIAkJeworLQkJICBpZiAoKFJFR19QICh2dWlb ampdLmxjLT5sb2MpCistCQkgICAgICAgJiYgUkVHX1AgKG5vZGUtPmxvYykKKy0JCSAgICAgICAm JiBSRUdOTyAodnVpW2pqXS5sYy0+bG9jKSA9PSBSRUdOTyAobm9kZS0+bG9jKSkKKy0JCSAgICAg IHx8IHJ0eF9lcXVhbF9wICh2dWlbampdLmxjLT5sb2MsIG5vZGUtPmxvYykpCistCQkgICAgewor LQkJICAgICAgdnVpW2pqXS5wb3Nfc3JjID0gaWk7CistCQkgICAgICBicmVhazsKKy0JCSAgICB9 CisrCQkgIHZ1aV9hbGxvY2F0ZWQgPSBNQVggKHZ1aV9hbGxvY2F0ZWQgKiAyLCBzcmNfbCArIGRz dF9sKTsKKysJCSAgdnVpX3ZlYyA9IFhSRVNJWkVWRUMgKHN0cnVjdCB2YXJpYWJsZV91bmlvbl9p bmZvLCB2dWlfdmVjLAorKwkJCQkJdnVpX2FsbG9jYXRlZCk7CisgCQl9CistCSAgICAgIGlmIChq aiA+PSBkc3RfbCkJLyogVGhlIGxvY2F0aW9uIGhhcyBub3QgYmVlbiBmb3VuZC4gICovCisrCSAg ICAgIHZ1aSA9IHZ1aV92ZWM7CisrCisrCSAgICAgIC8qIEZpbGwgaW4gdGhlIGxvY2F0aW9ucyBm cm9tIERTVC4gICovCisrCSAgICAgIGZvciAobm9kZSA9IGRzdC0+dmFyX3BhcnRbal0ubG9jX2No YWluLCBqaiA9IDA7IG5vZGU7CisrCQkgICBub2RlID0gbm9kZS0+bmV4dCwgamorKykKKyAJCXsK Ky0JCSAgbG9jYXRpb25fY2hhaW4gbmV3X25vZGU7CisrCQkgIHZ1aVtqal0ubGMgPSBub2RlOwor KwkJICB2dWlbampdLnBvc19kc3QgPSBqajsKKyAKKy0JCSAgLyogQ29weSB0aGUgbG9jYXRpb24g ZnJvbSBTUkMuICAqLworLQkJICBuZXdfbm9kZSA9IChsb2NhdGlvbl9jaGFpbikgcG9vbF9hbGxv YyAobG9jX2NoYWluX3Bvb2wpOworLQkJICBuZXdfbm9kZS0+bG9jID0gbm9kZS0+bG9jOworLQkJ ICBuZXdfbm9kZS0+aW5pdCA9IG5vZGUtPmluaXQ7CistCQkgIGlmICghbm9kZS0+c2V0X3NyYyB8 fCBNRU1fUCAobm9kZS0+c2V0X3NyYykpCistCQkgICAgbmV3X25vZGUtPnNldF9zcmMgPSBOVUxM OworLQkJICBlbHNlCistCQkgICAgbmV3X25vZGUtPnNldF9zcmMgPSBub2RlLT5zZXRfc3JjOwor LQkJICB2dWlbbl0ubGMgPSBuZXdfbm9kZTsKKy0JCSAgdnVpW25dLnBvc19zcmMgPSBpaTsKKy0J CSAgdnVpW25dLnBvc19kc3QgPSBzcmNfbCArIGRzdF9sOworLQkJICBuKys7CisrCQkgIC8qIFBv cyBwbHVzIHZhbHVlIGxhcmdlciB0aGFuIGEgc3VtIG9mIDIgdmFsaWQgcG9zaXRpb25zLiAgKi8K KysJCSAgdnVpW2pqXS5wb3MgPSBqaiArIHNyY19sICsgZHN0X2w7CisgCQl9CistCSAgICB9Cisg CistCSAgZm9yIChpaSA9IDA7IGlpIDwgc3JjX2wgKyBkc3RfbDsgaWkrKykKKy0JICAgIHZ1aVtp aV0ucG9zID0gdnVpW2lpXS5wb3Nfc3JjICsgdnVpW2lpXS5wb3NfZHN0OworKwkgICAgICAvKiBG aWxsIGluIHRoZSBsb2NhdGlvbnMgZnJvbSBTUkMuICAqLworKwkgICAgICBuID0gZHN0X2w7Cisr CSAgICAgIGZvciAobm9kZSA9IHNyYy0+dmFyX3BhcnRbaV0ubG9jX2NoYWluLCBpaSA9IDA7IG5v ZGU7CisrCQkgICBub2RlID0gbm9kZS0+bmV4dCwgaWkrKykKKysJCXsKKysJCSAgLyogRmluZCBs b2NhdGlvbiBmcm9tIE5PREUuICAqLworKwkJICBmb3IgKGpqID0gMDsgamogPCBkc3RfbDsgamor KykKKysJCSAgICB7CisrCQkgICAgICBpZiAoKFJFR19QICh2dWlbampdLmxjLT5sb2MpCisrCQkJ ICAgJiYgUkVHX1AgKG5vZGUtPmxvYykKKysJCQkgICAmJiBSRUdOTyAodnVpW2pqXS5sYy0+bG9j KSA9PSBSRUdOTyAobm9kZS0+bG9jKSkKKysJCQkgIHx8IHJ0eF9lcXVhbF9wICh2dWlbampdLmxj LT5sb2MsIG5vZGUtPmxvYykpCisrCQkJeworKwkJCSAgdnVpW2pqXS5wb3MgPSBqaiArIGlpOwor KwkJCSAgYnJlYWs7CisrCQkJfQorKwkJICAgIH0KKysJCSAgaWYgKGpqID49IGRzdF9sKQkvKiBU aGUgbG9jYXRpb24gaGFzIG5vdCBiZWVuIGZvdW5kLiAgKi8KKysJCSAgICB7CisrCQkgICAgICBs b2NhdGlvbl9jaGFpbiBuZXdfbm9kZTsKKyAKKy0JICBxc29ydCAodnVpLCBuLCBzaXplb2YgKHN0 cnVjdCB2YXJpYWJsZV91bmlvbl9pbmZvKSwKKy0JCSB2YXJpYWJsZV91bmlvbl9pbmZvX2NtcF9w b3MpOworKwkJICAgICAgLyogQ29weSB0aGUgbG9jYXRpb24gZnJvbSBTUkMuICAqLworKwkJICAg ICAgbmV3X25vZGUgPSAobG9jYXRpb25fY2hhaW4pIHBvb2xfYWxsb2MgKGxvY19jaGFpbl9wb29s KTsKKysJCSAgICAgIG5ld19ub2RlLT5sb2MgPSBub2RlLT5sb2M7CisrCQkgICAgICBuZXdfbm9k ZS0+aW5pdCA9IG5vZGUtPmluaXQ7CisrCQkgICAgICBpZiAoIW5vZGUtPnNldF9zcmMgfHwgTUVN X1AgKG5vZGUtPnNldF9zcmMpKQorKwkJCW5ld19ub2RlLT5zZXRfc3JjID0gTlVMTDsKKysJCSAg ICAgIGVsc2UKKysJCQluZXdfbm9kZS0+c2V0X3NyYyA9IG5vZGUtPnNldF9zcmM7CisrCQkgICAg ICB2dWlbbl0ubGMgPSBuZXdfbm9kZTsKKysJCSAgICAgIHZ1aVtuXS5wb3NfZHN0ID0gc3JjX2wg KyBkc3RfbDsKKysJCSAgICAgIHZ1aVtuXS5wb3MgPSBpaSArIHNyY19sICsgZHN0X2w7CisrCQkg ICAgICBuKys7CisrCQkgICAgfQorKwkJfQorIAorLQkgIC8qIFJlY29ubmVjdCB0aGUgbm9kZXMg aW4gc29ydGVkIG9yZGVyLiAgKi8KKy0JICBmb3IgKGlpID0gMTsgaWkgPCBuOyBpaSsrKQorLQkg ICAgdnVpW2lpIC0gMV0ubGMtPm5leHQgPSB2dWlbaWldLmxjOworLQkgIHZ1aVtuIC0gMV0ubGMt Pm5leHQgPSBOVUxMOworKwkgICAgICBpZiAoZHN0X2wgPT0gMikKKysJCXsKKysJCSAgLyogU3Bl Y2lhbCBjYXNlIHN0aWxsIHZlcnkgY29tbW9uIGNhc2UuICBGb3IgZHN0X2wgPT0gMgorKwkJICAg ICBhbGwgZW50cmllcyBkc3RfbCAuLi4gbi0xIGFyZSBzb3J0ZWQsIHdpdGggZm9yIGkgPj0gZHN0 X2wKKysJCSAgICAgdnVpW2ldLnBvcyA9PSBpICsgc3JjX2wgKyBkc3RfbC4gICovCisrCQkgIGlm ICh2dWlbMF0ucG9zID4gdnVpWzFdLnBvcykKKysJCSAgICB7CisrCQkgICAgICAvKiBPcmRlciBz aG91bGQgYmUgMSwgMCwgMi4uLiAqLworKwkJICAgICAgZHN0LT52YXJfcGFydFtrXS5sb2NfY2hh aW4gPSB2dWlbMV0ubGM7CisrCQkgICAgICB2dWlbMV0ubGMtPm5leHQgPSB2dWlbMF0ubGM7Cisr CQkgICAgICBpZiAobiA+PSAzKQorKwkJCXsKKysJCQkgIHZ1aVswXS5sYy0+bmV4dCA9IHZ1aVsy XS5sYzsKKysJCQkgIHZ1aVtuIC0gMV0ubGMtPm5leHQgPSBOVUxMOworKwkJCX0KKysJCSAgICAg IGVsc2UKKysJCQl2dWlbMF0ubGMtPm5leHQgPSBOVUxMOworKwkJICAgICAgaWkgPSAzOworKwkJ ICAgIH0KKysJCSAgZWxzZQorKwkJICAgIHsKKysJCSAgICAgIGRzdC0+dmFyX3BhcnRba10ubG9j X2NoYWluID0gdnVpWzBdLmxjOworKwkJICAgICAgaWYgKG4gPj0gMyAmJiB2dWlbMl0ucG9zIDwg dnVpWzFdLnBvcykKKysJCQl7CisrCQkJICAvKiBPcmRlciBzaG91bGQgYmUgMCwgMiwgMSwgMy4u LiAqLworKwkJCSAgdnVpWzBdLmxjLT5uZXh0ID0gdnVpWzJdLmxjOworKwkJCSAgdnVpWzJdLmxj LT5uZXh0ID0gdnVpWzFdLmxjOworKwkJCSAgaWYgKG4gPj0gNCkKKysJCQkgICAgeworKwkJCSAg ICAgIHZ1aVsxXS5sYy0+bmV4dCA9IHZ1aVszXS5sYzsKKysJCQkgICAgICB2dWlbbiAtIDFdLmxj LT5uZXh0ID0gTlVMTDsKKysJCQkgICAgfQorKwkJCSAgZWxzZQorKwkJCSAgICB2dWlbMV0ubGMt Pm5leHQgPSBOVUxMOworKwkJCSAgaWkgPSA0OworKwkJCX0KKysJCSAgICAgIGVsc2UKKysJCQl7 CisrCQkJICAvKiBPcmRlciBzaG91bGQgYmUgMCwgMSwgMi4uLiAqLworKwkJCSAgaWkgPSAxOwor KwkJCSAgdnVpW24gLSAxXS5sYy0+bmV4dCA9IE5VTEw7CisrCQkJfQorKwkJICAgIH0KKysJCSAg Zm9yICg7IGlpIDwgbjsgaWkrKykKKysJCSAgICB2dWlbaWkgLSAxXS5sYy0+bmV4dCA9IHZ1aVtp aV0ubGM7CisrCQl9CisrCSAgICAgIGVsc2UKKysJCXsKKysJCSAgcXNvcnQgKHZ1aSwgbiwgc2l6 ZW9mIChzdHJ1Y3QgdmFyaWFibGVfdW5pb25faW5mbyksCisrCQkJIHZhcmlhYmxlX3VuaW9uX2lu Zm9fY21wX3Bvcyk7CisgCistCSAgZHN0LT52YXJfcGFydFtrXS5sb2NfY2hhaW4gPSB2dWlbMF0u bGM7CistCSAgZHN0LT52YXJfcGFydFtrXS5vZmZzZXQgPSBkc3QtPnZhcl9wYXJ0W2pdLm9mZnNl dDsKKysJCSAgLyogUmVjb25uZWN0IHRoZSBub2RlcyBpbiBzb3J0ZWQgb3JkZXIuICAqLworKwkJ ICBmb3IgKGlpID0gMTsgaWkgPCBuOyBpaSsrKQorKwkJICAgIHZ1aVtpaSAtIDFdLmxjLT5uZXh0 ID0gdnVpW2lpXS5sYzsKKysJCSAgdnVpW24gLSAxXS5sYy0+bmV4dCA9IE5VTEw7CisrCQkgIGRz dC0+dmFyX3BhcnRba10ubG9jX2NoYWluID0gdnVpWzBdLmxjOworKwkJfQorIAorLQkgIGZyZWUg KHZ1aSk7CisrCSAgICAgIGRzdC0+dmFyX3BhcnRba10ub2Zmc2V0ID0gZHN0LT52YXJfcGFydFtq XS5vZmZzZXQ7CisrCSAgICB9CisgCSAgaS0tOworIAkgIGotLTsKKyAJfQorQEAgLTE0NzcsMTcg KzE1NTMsMTggQEAgdmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRhKQorIAlk c3QtPnZhcl9wYXJ0W2tdLmN1cl9sb2MgPSBOVUxMOworICAgICB9CisgCistICBmb3IgKGkgPSAw OyBpIDwgc3JjLT5uX3Zhcl9wYXJ0cyAmJiBpIDwgZHN0LT5uX3Zhcl9wYXJ0czsgaSsrKQorLSAg ICB7CistICAgICAgbG9jYXRpb25fY2hhaW4gbm9kZSwgbm9kZTI7CistICAgICAgZm9yIChub2Rl ID0gc3JjLT52YXJfcGFydFtpXS5sb2NfY2hhaW47IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0KQor LQlmb3IgKG5vZGUyID0gZHN0LT52YXJfcGFydFtpXS5sb2NfY2hhaW47IG5vZGUyOyBub2RlMiA9 IG5vZGUyLT5uZXh0KQorLQkgIGlmIChydHhfZXF1YWxfcCAobm9kZS0+bG9jLCBub2RlMi0+bG9j KSkKKy0JICAgIHsKKy0JICAgICAgaWYgKG5vZGUtPmluaXQgPiBub2RlMi0+aW5pdCkKKy0JCW5v ZGUyLT5pbml0ID0gbm9kZS0+aW5pdDsKKy0JICAgIH0KKy0gICAgfQorKyAgaWYgKGZsYWdfdmFy X3RyYWNraW5nX3VuaW5pdCkKKysgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+bl92YXJfcGFydHMg JiYgaSA8IGRzdC0+bl92YXJfcGFydHM7IGkrKykKKysgICAgICB7CisrCWxvY2F0aW9uX2NoYWlu IG5vZGUsIG5vZGUyOworKwlmb3IgKG5vZGUgPSBzcmMtPnZhcl9wYXJ0W2ldLmxvY19jaGFpbjsg bm9kZTsgbm9kZSA9IG5vZGUtPm5leHQpCisrCSAgZm9yIChub2RlMiA9IGRzdC0+dmFyX3BhcnRb aV0ubG9jX2NoYWluOyBub2RlMjsgbm9kZTIgPSBub2RlMi0+bmV4dCkKKysJICAgIGlmIChydHhf ZXF1YWxfcCAobm9kZS0+bG9jLCBub2RlMi0+bG9jKSkKKysJICAgICAgeworKwkJaWYgKG5vZGUt PmluaXQgPiBub2RlMi0+aW5pdCkKKysJCSAgbm9kZTItPmluaXQgPSBub2RlLT5pbml0OworKwkg ICAgICB9CisrICAgICAgfQorIAorICAgLyogQ29udGludWUgdHJhdmVyc2luZyB0aGUgaGFzaCB0 YWJsZS4gICovCisgICByZXR1cm4gMTsKK0BAIC0xNTIyLDE0ICsxNTk5LDcgQEAgdmFyaWFibGVf Y2Fub25pY2FsaXplICh2b2lkICoqc2xvdCwgdm9pZAorIAl9CisgICAgIH0KKyAgIGlmIChrIDwg c3JjLT5uX3Zhcl9wYXJ0cykKKy0gICAgeworLSAgICAgIGVudW0gdmFyX2luaXRfc3RhdHVzIHN0 YXR1cyA9IFZBUl9JTklUX1NUQVRVU19VTktOT1dOOworLQorLSAgICAgIGlmICghIGZsYWdfdmFy X3RyYWNraW5nX3VuaW5pdCkKKy0Jc3RhdHVzID0gVkFSX0lOSVRfU1RBVFVTX0lOSVRJQUxJWkVE OworLQorLSAgICAgIHVuc2hhcmVfdmFyaWFibGUgKHNldCwgc3JjLCBzdGF0dXMpOworLSAgICB9 CisrICAgIHVuc2hhcmVfdmFyaWFibGUgKHNldCwgc3JjLCBWQVJfSU5JVF9TVEFUVVNfVU5LTk9X Tik7CisgICByZXR1cm4gMTsKKyB9CisgCitAQCAtMTY1MCwzNCArMTcyMCw2IEBAIGRhdGFmbG93 X3NldF9kaWZmZXJlbnRfMSAodm9pZCAqKnNsb3QsIHYKKyAgIHJldHVybiAxOworIH0KKyAKKy0v KiBDb21wYXJlIHZhcmlhYmxlICpTTE9UIHdpdGggdGhlIHNhbWUgdmFyaWFibGUgaW4gaGFzaCB0 YWJsZSBEQVRBCistICAgYW5kIHNldCBEQVRBRkxPV19TRVRfRElGRkVSRU5UX1ZBTFVFIGlmIHRo ZXkgYXJlIGRpZmZlcmVudC4gICovCistCistc3RhdGljIGludAorLWRhdGFmbG93X3NldF9kaWZm ZXJlbnRfMiAodm9pZCAqKnNsb3QsIHZvaWQgKmRhdGEpCisteworLSAgaHRhYl90IGh0YWIgPSAo aHRhYl90KSBkYXRhOworLSAgdmFyaWFibGUgdmFyMSwgdmFyMjsKKy0KKy0gIHZhcjEgPSAqKHZh cmlhYmxlICopIHNsb3Q7CistICB2YXIyID0gKHZhcmlhYmxlKSBodGFiX2ZpbmRfd2l0aF9oYXNo IChodGFiLCB2YXIxLT5kZWNsLAorLQkJCSAgICAgIFZBUklBQkxFX0hBU0hfVkFMICh2YXIxLT5k ZWNsKSk7CistICBpZiAoIXZhcjIpCistICAgIHsKKy0gICAgICBkYXRhZmxvd19zZXRfZGlmZmVy ZW50X3ZhbHVlID0gdHJ1ZTsKKy0KKy0gICAgICAvKiBTdG9wIHRyYXZlcnNpbmcgdGhlIGhhc2gg dGFibGUuICAqLworLSAgICAgIHJldHVybiAwOworLSAgICB9CistCistICAvKiBJZiBib3RoIHZh cmlhYmxlcyBhcmUgZGVmaW5lZCB0aGV5IGhhdmUgYmVlbiBhbHJlYWR5IGNoZWNrZWQgZm9yCist ICAgICBlcXVpdmFsZW5jZS4gICovCistICBnY2NfYXNzZXJ0ICghdmFyaWFibGVfZGlmZmVyZW50 X3AgKHZhcjEsIHZhcjIsIGZhbHNlKSk7CistCistICAvKiBDb250aW51ZSB0cmF2ZXJzaW5nIHRo ZSBoYXNoIHRhYmxlLiAgKi8KKy0gIHJldHVybiAxOworLX0KKy0KKyAvKiBSZXR1cm4gdHJ1ZSBp ZiBkYXRhZmxvdyBzZXRzIE9MRF9TRVQgYW5kIE5FV19TRVQgZGlmZmVyLiAgKi8KKyAKKyBzdGF0 aWMgYm9vbAorQEAgLTE2OTQsMTQgKzE3MzYsOSBAQCBkYXRhZmxvd19zZXRfZGlmZmVyZW50IChk YXRhZmxvd19zZXQgKm9sCisgCisgICBodGFiX3RyYXZlcnNlIChzaGFyZWRfaGFzaF9odGFiIChv bGRfc2V0LT52YXJzKSwgZGF0YWZsb3dfc2V0X2RpZmZlcmVudF8xLAorIAkJIHNoYXJlZF9oYXNo X2h0YWIgKG5ld19zZXQtPnZhcnMpKTsKKy0gIGlmICghZGF0YWZsb3dfc2V0X2RpZmZlcmVudF92 YWx1ZSkKKy0gICAgeworLSAgICAgIC8qIFdlIGhhdmUgY29tcGFyZWQgdGhlIHZhcmlhYmxlcyB3 aGljaCBhcmUgaW4gYm90aCBoYXNoIHRhYmxlcworLQkgc28gbm93IG9ubHkgY2hlY2sgd2hldGhl ciB0aGVyZSBhcmUgc29tZSB2YXJpYWJsZXMgaW4gTkVXX1NFVC0+VkFSUworLQkgd2hpY2ggYXJl IG5vdCBpbiBPTERfU0VULT5WQVJTLiAgKi8KKy0gICAgICBodGFiX3RyYXZlcnNlIChzaGFyZWRf aGFzaF9odGFiIChuZXdfc2V0LT52YXJzKSwgZGF0YWZsb3dfc2V0X2RpZmZlcmVudF8yLAorLQkJ ICAgICBzaGFyZWRfaGFzaF9odGFiIChvbGRfc2V0LT52YXJzKSk7CistICAgIH0KKysgIC8qIE5v IG5lZWQgdG8gdHJhdmVyc2UgdGhlIHNlY29uZCBoYXNodGFiLCBpZiBib3RoIGhhdmUgdGhlIHNh bWUgbnVtYmVyCisrICAgICBvZiBlbGVtZW50cyBhbmQgdGhlIHNlY29uZCBvbmUgaGFkIGFsbCBl bnRyaWVzIGZvdW5kIGluIHRoZSBmaXJzdCBvbmUsCisrICAgICB0aGVuIGl0IGNhbid0IGhhdmUg YW55IGV4dHJhIGVudHJpZXMuICAqLworICAgcmV0dXJuIGRhdGFmbG93X3NldF9kaWZmZXJlbnRf dmFsdWU7CisgfQorIAorQEAgLTIyMTUsMTUgKzIyNTIsMTEgQEAgY29tcHV0ZV9iYl9kYXRhZmxv dyAoYmFzaWNfYmxvY2sgYmIpCisgCSAgY2FzZSBNT19VU0U6CisgCSAgICB7CisgCSAgICAgIHJ0 eCBsb2MgPSBWVEkgKGJiKS0+bW9zW2ldLnUubG9jOworLQkgICAgICBlbnVtIHZhcl9pbml0X3N0 YXR1cyBzdGF0dXMgPSBWQVJfSU5JVF9TVEFUVVNfVU5JTklUSUFMSVpFRDsKKy0KKy0JICAgICAg aWYgKCEgZmxhZ192YXJfdHJhY2tpbmdfdW5pbml0KQorLQkJc3RhdHVzID0gVkFSX0lOSVRfU1RB VFVTX0lOSVRJQUxJWkVEOworIAorIAkgICAgICBpZiAoR0VUX0NPREUgKGxvYykgPT0gUkVHKQor LQkJdmFyX3JlZ19zZXQgKG91dCwgbG9jLCBzdGF0dXMsIE5VTEwpOworKwkJdmFyX3JlZ19zZXQg KG91dCwgbG9jLCBWQVJfSU5JVF9TVEFUVVNfVU5JTklUSUFMSVpFRCwgTlVMTCk7CisgCSAgICAg IGVsc2UgaWYgKEdFVF9DT0RFIChsb2MpID09IE1FTSkKKy0JCXZhcl9tZW1fc2V0IChvdXQsIGxv Yywgc3RhdHVzLCBOVUxMKTsKKysJCXZhcl9tZW1fc2V0IChvdXQsIGxvYywgVkFSX0lOSVRfU1RB VFVTX1VOSU5JVElBTElaRUQsIE5VTEwpOworIAkgICAgfQorIAkgICAgYnJlYWs7CisgCitAQCAt MjI2MiwxMCArMjI5NSwxMiBAQCBjb21wdXRlX2JiX2RhdGFmbG93IChiYXNpY19ibG9jayBiYikK KyAJICAgICAgaWYgKCEgZmxhZ192YXJfdHJhY2tpbmdfdW5pbml0KQorIAkJc3JjX3N0YXR1cyA9 IFZBUl9JTklUX1NUQVRVU19JTklUSUFMSVpFRDsKKyAJICAgICAgZWxzZQorLQkJc3JjX3N0YXR1 cyA9IGZpbmRfc3JjX3N0YXR1cyAoaW4sIHNldF9zcmMpOworKwkJeworKwkJICBzcmNfc3RhdHVz ID0gZmluZF9zcmNfc3RhdHVzIChpbiwgc2V0X3NyYyk7CisgCistCSAgICAgIGlmIChzcmNfc3Rh dHVzID09IFZBUl9JTklUX1NUQVRVU19VTktOT1dOKQorLQkJc3JjX3N0YXR1cyA9IGZpbmRfc3Jj X3N0YXR1cyAob3V0LCBzZXRfc3JjKTsKKysJCSAgaWYgKHNyY19zdGF0dXMgPT0gVkFSX0lOSVRf U1RBVFVTX1VOS05PV04pCisrCQkgICAgc3JjX3N0YXR1cyA9IGZpbmRfc3JjX3N0YXR1cyAob3V0 LCBzZXRfc3JjKTsKKysJCX0KKyAKKyAJICAgICAgc2V0X3NyYyA9IGZpbmRfc3JjX3NldF9zcmMg KGluLCBzZXRfc3JjKTsKKyAKK0BAIC0yNjA5LDYgKzI2NDQsOSBAQCBzZXRfdmFyaWFibGVfcGFy dCAoZGF0YWZsb3dfc2V0ICpzZXQsIHJ0CisgICB2YXJpYWJsZSB2YXI7CisgICB2b2lkICoqc2xv dCA9IHNoYXJlZF9oYXNoX2ZpbmRfc2xvdCAoc2V0LT52YXJzLCBkZWNsKTsKKyAKKysgIGlmICgh IGZsYWdfdmFyX3RyYWNraW5nX3VuaW5pdCkKKysgICAgaW5pdGlhbGl6ZWQgPSBWQVJfSU5JVF9T VEFUVVNfSU5JVElBTElaRUQ7CisrCisgICBpZiAoIXNsb3QgfHwgISpzbG90KQorICAgICB7Cisg ICAgICAgaWYgKCFzbG90KQorQEAgLTI4MTUsMTAgKzI4NTMsOCBAQCBkZWxldGVfdmFyaWFibGVf cGFydCAoZGF0YWZsb3dfc2V0ICpzZXQsCisgCQkgICAgICAgJiYgUkVHTk8gKG5vZGUtPmxvYykg PT0gUkVHTk8gKGxvYykpCisgCQkgICAgICB8fCBydHhfZXF1YWxfcCAobm9kZS0+bG9jLCBsb2Mp KQorIAkJICAgIHsKKy0JCSAgICAgIGVudW0gdmFyX2luaXRfc3RhdHVzIHN0YXR1cyA9IFZBUl9J TklUX1NUQVRVU19VTktOT1dOOworLQkJICAgICAgaWYgKCEgZmxhZ192YXJfdHJhY2tpbmdfdW5p bml0KQorLQkJCXN0YXR1cyA9IFZBUl9JTklUX1NUQVRVU19JTklUSUFMSVpFRDsKKy0JCSAgICAg IHZhciA9IHVuc2hhcmVfdmFyaWFibGUgKHNldCwgdmFyLCBzdGF0dXMpOworKwkJICAgICAgdmFy ID0gdW5zaGFyZV92YXJpYWJsZSAoc2V0LCB2YXIsCisrCQkJCQkgICAgICBWQVJfSU5JVF9TVEFU VVNfVU5LTk9XTik7CisgCQkgICAgICBicmVhazsKKyAJCSAgICB9CisgCQl9CitAQCAtMjg5Myw5 ICsyOTI5LDYgQEAgZW1pdF9ub3RlX2luc25fdmFyX2xvY2F0aW9uICh2b2lkICoqdmFycAorIAor ICAgZ2NjX2Fzc2VydCAodmFyLT5kZWNsKTsKKyAKKy0gIGlmICghIGZsYWdfdmFyX3RyYWNraW5n X3VuaW5pdCkKKy0gICAgaW5pdGlhbGl6ZWQgPSBWQVJfSU5JVF9TVEFUVVNfSU5JVElBTElaRUQ7 CistCisgICBjb21wbGV0ZSA9IHRydWU7CisgICBsYXN0X2xpbWl0ID0gMDsKKyAgIG5fdmFyX3Bh cnRzID0gMDsKK0BAIC0zMTQ4LDE0ICszMTgxLDExIEBAIGVtaXRfbm90ZXNfaW5fYmIgKGJhc2lj X2Jsb2NrIGJiKQorIAkgIGNhc2UgTU9fVVNFOgorIAkgICAgeworIAkgICAgICBydHggbG9jID0g VlRJIChiYiktPm1vc1tpXS51LmxvYzsKKy0gICAgICAKKy0JICAgICAgZW51bSB2YXJfaW5pdF9z dGF0dXMgc3RhdHVzID0gVkFSX0lOSVRfU1RBVFVTX1VOSU5JVElBTElaRUQ7CistCSAgICAgIGlm ICghIGZsYWdfdmFyX3RyYWNraW5nX3VuaW5pdCkKKy0JCXN0YXR1cyA9IFZBUl9JTklUX1NUQVRV U19JTklUSUFMSVpFRDsKKysKKyAJICAgICAgaWYgKEdFVF9DT0RFIChsb2MpID09IFJFRykKKy0J CXZhcl9yZWdfc2V0ICgmc2V0LCBsb2MsIHN0YXR1cywgTlVMTCk7CisrCQl2YXJfcmVnX3NldCAo JnNldCwgbG9jLCBWQVJfSU5JVF9TVEFUVVNfVU5JTklUSUFMSVpFRCwgTlVMTCk7CisgCSAgICAg IGVsc2UKKy0JCXZhcl9tZW1fc2V0ICgmc2V0LCBsb2MsIHN0YXR1cywgTlVMTCk7CisrCQl2YXJf bWVtX3NldCAoJnNldCwgbG9jLCBWQVJfSU5JVF9TVEFUVVNfVU5JTklUSUFMSVpFRCwgTlVMTCk7 CisgCisgCSAgICAgIGVtaXRfbm90ZXNfZm9yX2NoYW5nZXMgKGluc24sIEVNSVRfTk9URV9BRlRF Ul9JTlNOKTsKKyAJICAgIH0KK0BAIC0zNTUzLDYgKzM1ODMsMTAgQEAgdnRfZmluYWxpemUgKHZv aWQpCisgICBmcmVlX2FsbG9jX3Bvb2wgKHZhcl9wb29sKTsKKyAgIGZyZWVfYWxsb2NfcG9vbCAo bG9jX2NoYWluX3Bvb2wpOworICAgZnJlZV9hbGxvY19wb29sIChzaGFyZWRfaGFzaF9wb29sKTsK KysgIGlmICh2dWlfdmVjKQorKyAgICBmcmVlICh2dWlfdmVjKTsKKysgIHZ1aV92ZWMgPSBOVUxM OworKyAgdnVpX2FsbG9jYXRlZCA9IDA7CisgfQorIAorIC8qIFRoZSBlbnRyeSBwb2ludCB0byB2 YXJpYWJsZSB0cmFja2luZyBwYXNzLiAgKi8KCmRpZmYgLS1naXQgYS9nY2M0NC1yaDUwNjA5OS5w YXRjaCBiL2djYzQ0LXJoNTA2MDk5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBkZmFlODE4Li4wMDAwMDAwCi0tLSBhL2djYzQ0LXJoNTA2MDk5LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsOTIgKzAsMCBAQAotMjAwOS0wNi0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJl ZGhhdC5jb20+Ci0KLQkqIHRyZWUtb2JqZWN0LXNpemUuYyAoYWRkcl9vYmplY3Rfc2l6ZSk6IEZp eCBhIHBhc3RvIGluIHRoZSBsYXN0Ci0JY2hhbmdlLgotCi0JKiBnY2MuZGcvYnVpbHRpbi1vYmpl Y3Qtc2l6ZS03LmM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL3RyZWUtb2JqZWN0LXNpemUuYy5qagky MDA5LTA2LTEyIDEwOjM2OjA4LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90cmVlLW9iamVjdC1z aXplLmMJMjAwOS0wNi0xNSAxODo0MDoxNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMTYsNyArMzE2 LDcgQEAgYWRkcl9vYmplY3Rfc2l6ZSAoc3RydWN0IG9iamVjdF9zaXplX2luZgotIAkJICAmJiB0 cmVlX2ludF9jc3RfbHQgKHB0X3Zhcl9zaXplLCBieXRlczIpKQotIAkJYnl0ZXMyID0gc2l6ZV96 ZXJvX25vZGU7Ci0gCSAgICAgIGVsc2UKLS0JCWJ5dGVzMiA9IHNpemVfYmlub3AgKE1JTlVTX0VY UFIsIHZhcl9zaXplLCBieXRlczIpOwotKwkJYnl0ZXMyID0gc2l6ZV9iaW5vcCAoTUlOVVNfRVhQ UiwgcHRfdmFyX3NpemUsIGJ5dGVzMik7Ci0gCSAgICAgIGJ5dGVzID0gc2l6ZV9iaW5vcCAoTUlO X0VYUFIsIGJ5dGVzLCBieXRlczIpOwotIAkgICAgfQotIAl9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS03LmMuamoJMjAwOS0wNi0xNSAxODo1NDozMy4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGluLW9iamVjdC1zaXpl LTcuYwkyMDA5LTA2LTE1IDE4OjU1OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw3MSBA QAotKy8qIHsgZGctZG8gcnVuIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLwotKwot K3R5cGVkZWYgX19TSVpFX1RZUEVfXyBzaXplX3Q7Ci0rZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6 ZV90KTsKLStleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7Ci0rCi0rc3RydWN0IEEKLSt7Ci0rICBp bnQgaSwgaiwgazsKLSsgIGNoYXIgYnVmWzI1NV07Ci0rICBpbnQgbCwgbSwgbiwgbzsKLSt9Owot KwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgY29uc3Qgc2l6ZV90IHMgPSBzaXplb2YgKHN0 cnVjdCBBKTsKLSsgIGNvbnN0IHNpemVfdCBvID0gX19idWlsdGluX29mZnNldG9mIChzdHJ1Y3Qg QSwgYnVmKTsKLSsgIHN0cnVjdCBBICphID0gbWFsbG9jIChzKTsKLSsgIHN0cnVjdCBBICpiID0g bWFsbG9jIChvICsgMjEyKTsKLSsgIGlmIChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGEtPmJ1Ziwg MCkgIT0gcyAtIG8pCi0rICAgIGFib3J0ICgpOwotKyAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6 ZSAoYS0+YnVmLCAxKSAhPSBzaXplb2YgKGEtPmJ1ZikpCi0rICAgIGFib3J0ICgpOwotKyAgaWYg KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoYS0+YnVmLCAyKSAhPSBzIC0gbykKLSsgICAgYWJvcnQg KCk7Ci0rICBpZiAoX19idWlsdGluX29iamVjdF9zaXplIChhLT5idWYsIDMpICE9IHNpemVvZiAo YS0+YnVmKSkKLSsgICAgYWJvcnQgKCk7Ci0rICBpZiAoX19idWlsdGluX29iamVjdF9zaXplICgm YS0+YnVmWzBdLCAwKSAhPSBzIC0gbykKLSsgICAgYWJvcnQgKCk7Ci0rICBpZiAoX19idWlsdGlu X29iamVjdF9zaXplICgmYS0+YnVmWzBdLCAxKSAhPSBzaXplb2YgKGEtPmJ1ZikpCi0rICAgIGFi b3J0ICgpOwotKyAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJmEtPmJ1ZlswXSwgMikgIT0g cyAtIG8pCi0rICAgIGFib3J0ICgpOwotKyAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJmEt PmJ1ZlswXSwgMykgIT0gc2l6ZW9mIChhLT5idWYpKQotKyAgICBhYm9ydCAoKTsKLSsgIGlmIChf X2J1aWx0aW5fb2JqZWN0X3NpemUgKCZhLT5idWZbNl0sIDApICE9IHMgLSBvIC0gNikKLSsgICAg YWJvcnQgKCk7Ci0rICBpZiAoX19idWlsdGluX29iamVjdF9zaXplICgmYS0+YnVmWzZdLCAxKSAh PSBzaXplb2YgKGEtPmJ1ZikgLSA2KQotKyAgICBhYm9ydCAoKTsKLSsgIGlmIChfX2J1aWx0aW5f b2JqZWN0X3NpemUgKCZhLT5idWZbNl0sIDIpICE9IHMgLSBvIC0gNikKLSsgICAgYWJvcnQgKCk7 Ci0rICBpZiAoX19idWlsdGluX29iamVjdF9zaXplICgmYS0+YnVmWzZdLCAzKSAhPSBzaXplb2Yg KGEtPmJ1ZikgLSA2KQotKyAgICBhYm9ydCAoKTsKLSsgIGlmIChfX2J1aWx0aW5fb2JqZWN0X3Np emUgKGItPmJ1ZiwgMCkgIT0gMjEyKQotKyAgICBhYm9ydCAoKTsKLSsgIGlmIChfX2J1aWx0aW5f b2JqZWN0X3NpemUgKGItPmJ1ZiwgMSkgIT0gMjEyKQotKyAgICBhYm9ydCAoKTsKLSsgIGlmIChf X2J1aWx0aW5fb2JqZWN0X3NpemUgKGItPmJ1ZiwgMikgIT0gMjEyKQotKyAgICBhYm9ydCAoKTsK LSsgIGlmIChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGItPmJ1ZiwgMykgIT0gMjEyKQotKyAgICBh Ym9ydCAoKTsKLSsgIGlmIChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKCZiLT5idWZbMF0sIDApICE9 IDIxMikKLSsgICAgYWJvcnQgKCk7Ci0rICBpZiAoX19idWlsdGluX29iamVjdF9zaXplICgmYi0+ YnVmWzBdLCAxKSAhPSAyMTIpCi0rICAgIGFib3J0ICgpOwotKyAgaWYgKF9fYnVpbHRpbl9vYmpl Y3Rfc2l6ZSAoJmItPmJ1ZlswXSwgMikgIT0gMjEyKQotKyAgICBhYm9ydCAoKTsKLSsgIGlmIChf X2J1aWx0aW5fb2JqZWN0X3NpemUgKCZiLT5idWZbMF0sIDMpICE9IDIxMikKLSsgICAgYWJvcnQg KCk7Ci0rICBpZiAoX19idWlsdGluX29iamVjdF9zaXplICgmYi0+YnVmWzI4XSwgMCkgIT0gMjEy IC0gMjgpCi0rICAgIGFib3J0ICgpOwotKyAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJmIt PmJ1ZlsyOF0sIDEpICE9IDIxMiAtIDI4KQotKyAgICBhYm9ydCAoKTsKLSsgIGlmIChfX2J1aWx0 aW5fb2JqZWN0X3NpemUgKCZiLT5idWZbMjhdLCAyKSAhPSAyMTIgLSAyOCkKLSsgICAgYWJvcnQg KCk7Ci0rICBpZiAoX19idWlsdGluX29iamVjdF9zaXplICgmYi0+YnVmWzI4XSwgMykgIT0gMjEy IC0gMjgpCi0rICAgIGFib3J0ICgpOwotKyAgcmV0dXJuIDA7Ci0rfQoKZGlmZiAtLWdpdCBhL3Nv dXJjZXMgYi9zb3VyY2VzCmluZGV4IGVhZDRkNjQuLmY1ODdmNzQgMTAwNjQ0Ci0tLSBhL3NvdXJj ZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKIDI2NTlmMDljMmU0M2VmOGI3ZDQ0MDYz MjE3NTNmMWIyICBmYXN0amFyLTAuOTcudGFyLmd6Ci0yOGQ1ZTY1MzRkZmQ1MTZmODkwMmY3OTk3 ZTdjNzUzMCAgZ2NjLTQuNC4wLTIwMDkwNjE1LnRhci5iejIKKzU0MzIwMTU4MWY2NTAyOTNhYzg4 ZWQ3MTZjZDUzNTk3ICBnY2MtNC40LjAtMjAwOTA2MjMudGFyLmJ6Mgo=