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.1-10 Date: Mon, 29 Jun 2026 12:24:33 GMT Message-ID: <178273587344.1.12331251637533048247.rpms-gcc-116cffef392f@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 116cffef392f300f788b2f056328571b2d219e9a QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogMTE2Y2ZmZWYzOTJmMzAwZjc4OGIyZjA1NjMyODU3MWIy ZDIxOWU5YQpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOS0wOS0wOFQxMTowNTo0MyswMDowMApTdGF0cyAgOiArNTE4Ly0xMzI3IGlu IDExIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9n Y2MvYy8xMTZjZmZlZjM5MmYzMDBmNzg4YjJmMDU2MzI4NTcxYjJkMjE5ZTlhP2JyYW5jaD1yaGVs LWY0MS1iYXNlCgpMb2c6CjQuNC4xLTEwCgotLS0KZGlmZiAtLWdpdCBhLy5jdnNpZ25vcmUgYi8u Y3ZzaWdub3JlCmluZGV4IDBlZTNkN2IuLmM2OTI4NzggMTAwNjQ0Ci0tLSBhLy5jdnNpZ25vcmUK KysrIGIvLmN2c2lnbm9yZQpAQCAtMSwyICsxLDIgQEAKIGZhc3RqYXItMC45Ny50YXIuZ3oKLWdj Yy00LjQuMS0yMDA5MDkwMy50YXIuYnoyCitnY2MtNC40LjEtMjAwOTA5MDgudGFyLmJ6MgoKZGlm ZiAtLWdpdCBhL2djYy5zcGVjIGIvZ2NjLnNwZWMKaW5kZXggNmJhZDViZi4uYzM5ZTdlOSAxMDA2 NDQKLS0tIGEvZ2NjLnNwZWMKKysrIGIvZ2NjLnNwZWMKQEAgLTEsOSArMSw5IEBACi0lZ2xvYmFs IERBVEUgMjAwOTA5MDMKLSVnbG9iYWwgU1ZOUkVWIDE1MTM5NgorJWdsb2JhbCBEQVRFIDIwMDkw OTA4CislZ2xvYmFsIFNWTlJFViAxNTE1MDUKICVnbG9iYWwgZ2NjX3ZlcnNpb24gNC40LjEKICMg Tm90ZSwgZ2NjX3JlbGVhc2UgbXVzdCBiZSBpbnRlZ2VyLCBpZiB5b3Ugd2FudCB0byBhZGQgc3Vm Zml4ZXMgdG8KICMgJXtyZWxlYXNlfSwgYXBwZW5kIHRoZW0gYWZ0ZXIgJXtnY2NfcmVsZWFzZX0g b24gUmVsZWFzZTogbGluZS4KLSVnbG9iYWwgZ2NjX3JlbGVhc2UgOQorJWdsb2JhbCBnY2NfcmVs ZWFzZSAxMAogJWdsb2JhbCBfdW5wYWNrYWdlZF9maWxlc190ZXJtaW5hdGVfYnVpbGQgMAogJWds b2JhbCBtdWx0aWxpYl82NF9hcmNocyBzcGFyYzY0IHBwYzY0IHMzOTB4IHg4Nl82NAogJWdsb2Jh bCBpbmNsdWRlX2dhcHBsZXR2aWV3ZXIgMQpAQCAtNzAsNiArNzAsOCBAQCBCdWlsZFJlcXVpcmVz OiBiaW51dGlscyA+PSAyLjE5LjUxLjAuMTQKICMgLXN0YXRpYyBpcyB1c2VkIHNldmVyYWwgdGlt ZXMuCiBCdWlsZFJlcXVpcmVzOiBnbGliYy1zdGF0aWMKIEJ1aWxkUmVxdWlyZXM6IHpsaWItZGV2 ZWwsIGdldHRleHQsIGRlamFnbnUsIGJpc29uLCBmbGV4LCB0ZXhpbmZvLCBzaGFydXRpbHMKKyMg Rm9yIFZUQSBndWFsaXR5IHRlc3RpbmcKK0J1aWxkUmVxdWlyZXM6IGdkYgogJWlmICV7YnVpbGRf amF2YX0KIEJ1aWxkUmVxdWlyZXM6IC91c3Ivc2hhcmUvamF2YS9lY2xpcHNlLWVjai5qYXIsIHpp cCwgdW56aXAKICVpZiAle2Jvb3RzdHJhcF9qYXZhfQpAQCAtMTU3LDggKzE1OSwxMiBAQCBQYXRj aDE1OiBnY2M0NC1yYXctc3RyaW5nLnBhdGNoCiBQYXRjaDE2OiBnY2M0NC11bndpbmQtZGVidWct aG9vay5wYXRjaAogUGF0Y2gxNzogZ2NjNDQtcHIzODc1Ny5wYXRjaAogUGF0Y2gxODogZ2NjNDQt bGlic3RkYysrLWRvY3MucGF0Y2gKLVBhdGNoMTk6IGdjYzQ0LXJoNTAzODE2LTEucGF0Y2gKLVBh dGNoMjA6IGdjYzQ0LXJoNTAzODE2LTIucGF0Y2gKK1BhdGNoMTk6IGdjYzQ0LXZ0YS1jZmdleHBh bmQtcHRyLW1vZGUtcHI0MTI0OC5wYXRjaAorUGF0Y2gyMDogZ2NjNDQtdnRhLWNzZWxpYi1zdWJy ZWctb2YtdmFsdWUtcHI0MTI3Ni5wYXRjaAorUGF0Y2gyMTogZ2NjNDQtdnRhLWxvb3AtaXZvcHRz LXByb3BhZ2F0ZS1vbi1yZWxlYXNlLnBhdGNoCitQYXRjaDIyOiBnY2M0NC12dGEtbm8tZy13aXRo LWd0b2dnbGUucGF0Y2gKK1BhdGNoMjM6IGdjYzQ0LXZ0YS1waGlvcHQtcHI0MTIzMi5wYXRjaAor UGF0Y2gyNDogZ2NjNDQtdnRhLXNzYS11cGRhdGUtZm9ybWVyLXZvcHMtcHI0MTIyOS5wYXRjaAog CiBQYXRjaDEwMDA6IGZhc3RqYXItMC45Ny1zZWdmYXVsdC5wYXRjaAogCkBAIC00NjQsOCArNDcw LDEyIEBAIHdoaWNoIGFyZSByZXF1aXJlZCB0byBjb21waWxlIHdpdGggdGhlIEdOQVQuCiAlaWYg JXtidWlsZF9saWJzdGRjeHhfZG9jc30KICVwYXRjaDE4IC1wMCAtYiAubGlic3RkYysrLWRvY3N+ CiAlZW5kaWYKLSVwYXRjaDE5IC1wMCAtYiAucmg1MDM4MTYtMX4KLSVwYXRjaDIwIC1wMCAtYiAu cmg1MDM4MTYtMn4KKyVwYXRjaDE5IC1wMCAtYiAudnRhLWNmZ2V4cGFuZC1wdHItbW9kZS1wcjQx MjQ4fgorJXBhdGNoMjAgLXAwIC1iIC52dGEtY3NlbGliLXN1YnJlZy1vZi12YWx1ZS1wcjQxMjc2 fgorJXBhdGNoMjEgLXAwIC1iIC52dGEtbG9vcC1pdm9wdHMtcHJvcGFnYXRlLW9uLXJlbGVhc2V+ CislcGF0Y2gyMiAtcDAgLWIgLnZ0YS1uby1nLXdpdGgtZ3RvZ2dsZX4KKyVwYXRjaDIzIC1wMCAt YiAudnRhLXBoaW9wdC1wcjQxMjMyfgorJXBhdGNoMjQgLXAwIC1iIC52dGEtc3NhLXVwZGF0ZS1m b3JtZXItdm9wcy1wcjQxMjI5fgogCiAjIFRoaXMgdGVzdGNhc2UgZG9lc24ndCBjb21waWxlLgog cm0gbGliamF2YS90ZXN0c3VpdGUvbGliamF2YS5sYW5nL1BSMzUwMjAqCkBAIC0xODA1LDYgKzE4 MTUsMTMgQEAgZmkKICVkb2MgcnBtLmRvYy9jaGFuZ2Vsb2dzL2xpYm11ZGZsYXAvQ2hhbmdlTG9n KgogCiAlY2hhbmdlbG9nCisqIFR1ZSBTZXAgIDggMjAwOSBKYWt1YiBKZWxpbmVrIDxqYWt1YkBy ZWRoYXQuY29tPiA0LjQuMS0xMAorLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5jaAorICAtIFBS cyBmb3J0cmFuLzQxMjU4LCBydGwtb3B0aW1pemF0aW9uLzQwODYxCistIGZpeCBzY2hlZHVsZXIg bm90IHRvIHJlb3JkZXIgcG90ZW50aWFsbHkgdHJhcHBpbmcgaW5zbnMgYWNyb3NzCisgIGNhbGxz IHRoYXQgbWlnaHQgbm90IGFsd2F5cyByZXR1cm4gKCM1MjA5MTYsIFBSIHJ0bC1vcHRpbWl6YXRp b24vNDEyMzkpCistIG1lcmdlIGluIFZUQQorCiAqIFRodSBTZXAgIDMgMjAwOSBKYWt1YiBKZWxp bmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjQuMS05CiAtIHVwZGF0ZSBmcm9tIGdjYy00XzQtYnJh bmNoCiAgIC0gZml4IHdpZGUgY2hhciBjb25zdGFudCBzdHJpbmdpZmljYXRpb24KCmRpZmYgLS1n aXQgYS9nY2M0NC1yaDUwMzgxNi0xLnBhdGNoIGIvZ2NjNDQtcmg1MDM4MTYtMS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxNmY4NS4uMDAwMDAwMAotLS0gYS9nY2M0NC1y aDUwMzgxNi0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODI3ICswLDAgQEAKLTIwMDktMDYt MjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JKiB2YXItdHJhY2tpbmcu YyAoc3RydWN0IHNoYXJlZF9oYXNoX2RlZiwgc2hhcmVkX2hhc2gpOiBOZXcgdHlwZXMuCi0JKGRh dGFmbG93X3NldCk6IENoYW5nZSB2YXJzIHR5cGUgZnJvbSBodGFiX3QgdG8gc2hhcmVkX2hhc2gu Ci0JKHNoYXJlZF9oYXNoX3Bvb2wsIGVtcHR5X3NoYXJlZF9oYXNoKTogTmV3IHZhcmlhYmxlcy4K LQkodmFyc19jbGVhcik6IFJlbW92ZWQuCi0JKHNoYXJlZF9oYXNoX3NoYXJlZCwgc2hhcmVkX2hh c2hfaHRhYiwgc2hhcmVkX2hhc2hfY29weSwKLQlzaGFyZWRfaGFzaF9maW5kX3Nsb3RfdW5zaGFy ZSwgc2hhcmVkX2hhc2hfZmluZF9zbG90LAotCXNoYXJlZF9oYXNoX2ZpbmRfc2xvdF9ub2luc2Vy dCwgc2hhcmVkX2hhc2hfZmluZCk6IE5ldwotCXN0YXRpYyBpbmxpbmVzLgotCShzaGFyZWRfaGFz aF91bnNoYXJlLCBzaGFyZWRfaGFzaF9kZXN0cm95KTogTmV3IGZ1bmN0aW9ucy4KLQkodW5zaGFy ZV92YXJpYWJsZSk6IFVuc2hhcmUgc2V0LT52YXJzIGlmIHNoYXJlZCwgdXNlCi0Jc2hhcmVkX2hh c2hfaHRhYi4KLQkodmFyc19jb3B5KTogVXNlIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgaW5zdGVh ZCBvZiBodGFiX3RyYXZlcnNlLgotCShnZXRfaW5pdF92YWx1ZSwgZmluZF9zcmNfc2V0X3NyYywg ZHVtcF9kYXRhZmxvd19zZXQsCi0JY2xvYmJlcl92YXJpYWJsZV9wYXJ0LCBlbWl0X25vdGVzX2Zv cl9kaWZmZXJlbmNlcyk6IFVzZQotCXNoYXJlZF9oYXNoX2h0YWIuCi0JKGRhdGFmbG93X3NldF9p bml0KTogUmVtb3ZlIHNlY29uZCBhcmd1bWVudCwgc2V0IHZhcnMgdG8KLQllbXB0eV9zaGFyZWRf aGFzaCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IGh0YWIuCi0JKGRhdGFmbG93X3NldF9jbGVh cik6IENhbGwgc2hhcmVkX2hhc2hfZGVzdHJveSBhbmQgc2V0IHZhcnMKLQl0byBlbXB0eV9zaGFy ZWRfaGFzaCBpbnN0ZWFkIG9mIGNhbGxpbmcgdmFyc19jbGVhci4KLQkoZGF0YWZsb3dfc2V0X2Nv cHkpOiBEb24ndCBjYWxsIHZhcnNfY29weSwgaW5zdGVhZCBqdXN0IHNoYXJlCi0JdGhlIHNyYyBo dGFiIHdpdGggZHN0LgotCSh2YXJpYWJsZV91bmlvbik6IFVzZSBzaGFyZWRfaGFzaF8qLCB1c2Ug aW5pdGlhbGx5IE5PX0lOU0VSVAotCWxvb2t1cCBpZiBzZXQtPnZhcnMgaXMgc2hhcmVkLiAgRG9u J3Qga2VlcCBzbG90IGNsZWFyZWQgYmVmb3JlCi0JY2FsbGluZyB1bnNoYXJlX3ZhcmlhYmxlLiAg VW5zaGFyZSBzZXQtPnZhcnMgaWYgbmVlZGVkLgotCUV2ZW4gLT5yZWZjb3VudCA9PSAxIHZhcnMg bXVzdCBiZSB1bnNoYXJlZCBpZiBzZXQtPnZhcnMgaXMgc2hhcmVkCi0JYW5kIHZhciBuZWVkcyB0 byBiZSBtb2RpZmllZC4KLQkodmFyaWFibGVfY2Fub25pY2FsaXplKTogTmV3IGZ1bmN0aW9uLgot CShkYXRhZmxvd19zZXRfdW5pb24pOiBJZiBkc3QtPnZhcnMgaXMgZW1wdHksIGp1c3Qgc2hhcmUg c3JjLT52YXJzCi0Jd2l0aCBkc3QtPnZhcnMgYW5kIHRyYXZlcnNlIHdpdGggdmFyaWFibGVfY2Fu b25pY2FsaXplIHRvIGNhbm9uaWNhbGl6ZQotCWFuZCB1bnNoYXJlIHdoYXQgaXMgbmVlZGVkLgot CShkYXRhZmxvd19zZXRfZGlmZmVyZW50KTogSWYgb2xkX3NldCBhbmQgbmV3X3NldCB1c2UgdGhl IHNhbWUgc2hhcmVkCi0JaHRhYiwgdGhleSBhcmVuJ3QgZGlmZmVyZW50LiAgSWYgbnVtYmVyIG9m IGh0YWIgZWxlbWVudHMgaXMgZGlmZmVyZW50LAotCWh0YWJzIGFyZSBkaWZmZXJlbnQuICBVc2Ug c2hhcmVkX2hhc2hfKi4KLQkoZGF0YWZsb3dfc2V0X2Rlc3Ryb3kpOiBDYWxsIHNoYXJlZF9oYXNo X2Rlc3Ryb3kgaW5zdGVhZCBvZgotCWh0YWJfZGVsZXRlLgotCShjb21wdXRlX2JiX2RhdGFmbG93 LCBlbWl0X25vdGVzX2luX2JiLCB2dF9lbWl0X25vdGVzKTogRG9uJ3QgcGFzcwotCXNlY29uZCBh cmd1bWVudCB0byBkYXRhZmxvd19zZXRfaW5pdC4KLQkodnRfaW5pdGlhbGl6ZSk6IExpa2V3aXNl LiAgSW5pdGlhbGl6ZSBzaGFyZWRfaGFzaF9wb29sIGFuZAotCWVtcHR5X3NoYXJlZF9oYXNoLCBt b3ZlIGJiIGluL291dCBpbml0aWFsaXphdGlvbiBhZnRlcndhcmRzLgotCVVzZSB2YXJpYWJsZV9o dGFiX2ZyZWUgaW5zdGVhZCBvZiBOVUxMIGFzIGNoYW5nZWRfdmFyaWFibGVzIGRlbCBob29rLgot CSh2YXJpYWJsZV93YXNfY2hhbmdlZCk6IENoYW5nZSB0eXBlIG9mIHNlY29uZCBhcmd1bWVudCB0 byBwb2ludGVyIHRvCi0JZGF0YWZsb3dfc2V0LiAgV2hlbiBpbnNlcnRpbmcgdmFyIGludG8gY2hh bmdlZF92YXJpYWJsZXMsIGJ1bXAKLQlyZWZjb3VudC4gIFVuc2hhcmUgc2V0LT52YXJzIGlmIHNl dCBpcyBzaGFyZWQgaHRhYiBhbmQgc2xvdCBuZWVkcyB0bwotCWJlIGNsZWFyZWQuCi0JKHNldF92 YXJpYWJsZV9wYXJ0KTogVXNlIHNoYXJlZF9oYXNoXyosIHVzZSBpbml0aWFsbHkgTk9fSU5TRVJU Ci0JbG9va3VwIGlmIHNldC0+dmFycyBpcyBzaGFyZWQuICBVbnNoYXJlIHNldC0+dmFycyBpZiBu ZWVkZWQuCi0JRXZlbiAtPnJlZmNvdW50ID09IDEgdmFycyBtdXN0IGJlIHVuc2hhcmVkIGlmIHNl dC0+dmFycyBpcyBzaGFyZWQKLQlhbmQgdmFyIG5lZWRzIHRvIGJlIG1vZGlmaWVkLiAgQWRqdXN0 IHZhcmlhYmxlX3dhc19jaGFuZ2VkIGNhbGxlci4KLQkoZGVsZXRlX3ZhcmlhYmxlX3BhcnQpOiBV c2Ugc2hhcmVkX2hhc2hfKi4gIEV2ZW4gLT5yZWZjb3VudCA9PSAxCi0JdmFycyBtdXN0IGJlIHVu c2hhcmVkIGlmIHNldC0+dmFycyBpcyBzaGFyZWQgYW5kIHZhciBuZWVkcyB0byBiZQotCW1vZGlm aWVkLiAgQWRqdXN0IHZhcmlhYmxlX3dhc19jaGFuZ2VkIGNhbGxlci4KLQkoZW1pdF9ub3RlX2lu c25fdmFyX2xvY2F0aW9uKTogRG9uJ3QgcG9vbF9mcmVlIHZhci4KLQkoZW1pdF9ub3Rlc19mb3Jf ZGlmZmVyZW5jZXNfMSk6IEluaXRpYWxpemUgZW1wdHlfdmFyLT5yZWZjb3VudCB0byAwCi0JaW5z dGVhZCBvZiAxLgotCSh2dF9maW5hbGl6ZSk6IENhbGwgaHRhYl9kZWxldGUgb24gZW1wdHlfc2hh cmVkX2hhc2gtPmh0YWIgYW5kCi0JZnJlZV9hbGxvY19wb29sIG9uIHNoYXJlZF9oYXNoX3Bvb2wu Ci0KLQkqIGhhc2h0YWIuYyAoaHRhYl90cmF2ZXJzZSk6IERvbid0IGNhbGwgaHRhYl9leHBhbmQg Zm9yCi0JbmVhcmx5IGVtcHR5IGhhc2h0YWJzIHdpdGggc2l6ZXMgNywgMTMgb3IgMzEuCi0KLS0t LSBnY2MvdmFyLXRyYWNraW5nLmMJKHJldmlzaW9uIDE0ODc1OCkKLSsrKyBnY2MvdmFyLXRyYWNr aW5nLmMJKHJldmlzaW9uIDE0ODc2MCkKLUBAIC0xODIsNiArMTgyLDE3IEBAIHR5cGVkZWYgc3Ry dWN0IGF0dHJzX2RlZgotICAgSE9TVF9XSURFX0lOVCBvZmZzZXQ7Ci0gfSAqYXR0cnM7Ci0gCi0r LyogU3RydWN0dXJlIGhvbGRpbmcgYSByZWZjb3VudGVkIGhhc2ggdGFibGUuICBJZiByZWZjb3Vu dCA+IDEsCi0rICAgaXQgbXVzdCBiZSBmaXJzdCB1bnNoYXJlZCBiZWZvcmUgbW9kaWZpZWQuICAq LwotK3R5cGVkZWYgc3RydWN0IHNoYXJlZF9oYXNoX2RlZgotK3sKLSsgIC8qIFJlZmVyZW5jZSBj b3VudC4gICovCi0rICBpbnQgcmVmY291bnQ7Ci0rCi0rICAvKiBBY3R1YWwgaGFzaCB0YWJsZS4g ICovCi0rICBodGFiX3QgaHRhYjsKLSt9ICpzaGFyZWRfaGFzaDsKLSsKLSAvKiBTdHJ1Y3R1cmUg aG9sZGluZyB0aGUgSU4gb3IgT1VUIHNldCBmb3IgYSBiYXNpYyBibG9jay4gICovCi0gdHlwZWRl ZiBzdHJ1Y3QgZGF0YWZsb3dfc2V0X2RlZgotIHsKLUBAIC0xOTIsNyArMjAzLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgZGF0YWZsb3dfc2V0X2RlZgotICAgYXR0cnMgcmVnc1tGSVJTVF9QU0VVRE9fUkVH SVNURVJdOwotIAotICAgLyogVmFyaWFibGUgbG9jYXRpb25zLiAgKi8KLS0gIGh0YWJfdCB2YXJz OwotKyAgc2hhcmVkX2hhc2ggdmFyczsKLSB9IGRhdGFmbG93X3NldDsKLSAKLSAvKiBUaGUgc3Ry dWN0dXJlIChvbmUgZm9yIGVhY2ggYmFzaWMgYmxvY2spIGNvbnRhaW5pbmcgdGhlIGluZm9ybWF0 aW9uCi1AQCAtMjgwLDEyICsyOTEsMTggQEAgc3RhdGljIGFsbG9jX3Bvb2wgdmFyX3Bvb2w7Ci0g LyogQWxsb2MgcG9vbCBmb3Igc3RydWN0IGxvY2F0aW9uX2NoYWluX2RlZi4gICovCi0gc3RhdGlj IGFsbG9jX3Bvb2wgbG9jX2NoYWluX3Bvb2w7Ci0gCi0rLyogQWxsb2MgcG9vbCBmb3Igc3RydWN0 IHNoYXJlZF9oYXNoX2RlZi4gICovCi0rc3RhdGljIGFsbG9jX3Bvb2wgc2hhcmVkX2hhc2hfcG9v bDsKLSsKLSAvKiBDaGFuZ2VkIHZhcmlhYmxlcywgbm90ZXMgd2lsbCBiZSBlbWl0dGVkIGZvciB0 aGVtLiAgKi8KLSBzdGF0aWMgaHRhYl90IGNoYW5nZWRfdmFyaWFibGVzOwotIAotIC8qIFNoYWxs IG5vdGVzIGJlIGVtaXR0ZWQ/ICAqLwotIHN0YXRpYyBib29sIGVtaXRfbm90ZXM7Ci0gCi0rLyog RW1wdHkgc2hhcmVkIGhhc2h0YWJsZS4gICovCi0rc3RhdGljIHNoYXJlZF9oYXNoIGVtcHR5X3No YXJlZF9oYXNoOwotKwotIC8qIExvY2FsIGZ1bmN0aW9uIHByb3RvdHlwZXMuICAqLwotIHN0YXRp YyB2b2lkIHN0YWNrX2FkanVzdF9vZmZzZXRfcHJlX3Bvc3QgKHJ0eCwgSE9TVF9XSURFX0lOVCAq LAotIAkJCQkJICBIT1NUX1dJREVfSU5UICopOwotQEAgLTMwNSw3ICszMjIsNiBAQCBzdGF0aWMg dm9pZCBhdHRyc19saXN0X2luc2VydCAoYXR0cnMgKiwgCi0gc3RhdGljIHZvaWQgYXR0cnNfbGlz dF9jb3B5IChhdHRycyAqLCBhdHRycyk7Ci0gc3RhdGljIHZvaWQgYXR0cnNfbGlzdF91bmlvbiAo YXR0cnMgKiwgYXR0cnMpOwotIAotLXN0YXRpYyB2b2lkIHZhcnNfY2xlYXIgKGh0YWJfdCk7Ci0g c3RhdGljIHZhcmlhYmxlIHVuc2hhcmVfdmFyaWFibGUgKGRhdGFmbG93X3NldCAqc2V0LCB2YXJp YWJsZSB2YXIsIAotIAkJCQkgIGVudW0gdmFyX2luaXRfc3RhdHVzKTsKLSBzdGF0aWMgaW50IHZh cnNfY29weV8xICh2b2lkICoqLCB2b2lkICopOwotQEAgLTMyMSwxMSArMzM3LDEyIEBAIHN0YXRp YyB2b2lkIHZhcl9tZW1fZGVsZXRlX2FuZF9zZXQgKGRhdGEKLSAJCQkJICAgIGVudW0gdmFyX2lu aXRfc3RhdHVzLCBydHgpOwotIHN0YXRpYyB2b2lkIHZhcl9tZW1fZGVsZXRlIChkYXRhZmxvd19z ZXQgKiwgcnR4LCBib29sKTsKLSAKLS1zdGF0aWMgdm9pZCBkYXRhZmxvd19zZXRfaW5pdCAoZGF0 YWZsb3dfc2V0ICosIGludCk7Ci0rc3RhdGljIHZvaWQgZGF0YWZsb3dfc2V0X2luaXQgKGRhdGFm bG93X3NldCAqKTsKLSBzdGF0aWMgdm9pZCBkYXRhZmxvd19zZXRfY2xlYXIgKGRhdGFmbG93X3Nl dCAqKTsKLSBzdGF0aWMgdm9pZCBkYXRhZmxvd19zZXRfY29weSAoZGF0YWZsb3dfc2V0ICosIGRh dGFmbG93X3NldCAqKTsKLSBzdGF0aWMgaW50IHZhcmlhYmxlX3VuaW9uX2luZm9fY21wX3BvcyAo Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwotIHN0YXRpYyBpbnQgdmFyaWFibGVfdW5pb24g KHZvaWQgKiosIHZvaWQgKik7Ci0rc3RhdGljIGludCB2YXJpYWJsZV9jYW5vbmljYWxpemUgKHZv aWQgKiosIHZvaWQgKik7Ci0gc3RhdGljIHZvaWQgZGF0YWZsb3dfc2V0X3VuaW9uIChkYXRhZmxv d19zZXQgKiwgZGF0YWZsb3dfc2V0ICopOwotIHN0YXRpYyBib29sIHZhcmlhYmxlX3BhcnRfZGlm ZmVyZW50X3AgKHZhcmlhYmxlX3BhcnQgKiwgdmFyaWFibGVfcGFydCAqKTsKLSBzdGF0aWMgYm9v bCB2YXJpYWJsZV9kaWZmZXJlbnRfcCAodmFyaWFibGUsIHZhcmlhYmxlLCBib29sKTsKLUBAIC0z NTIsNyArMzY5LDcgQEAgc3RhdGljIHZvaWQgZHVtcF92YXJzIChodGFiX3QpOwotIHN0YXRpYyB2 b2lkIGR1bXBfZGF0YWZsb3dfc2V0IChkYXRhZmxvd19zZXQgKik7Ci0gc3RhdGljIHZvaWQgZHVt cF9kYXRhZmxvd19zZXRzICh2b2lkKTsKLSAKLS1zdGF0aWMgdm9pZCB2YXJpYWJsZV93YXNfY2hh bmdlZCAodmFyaWFibGUsIGh0YWJfdCk7Ci0rc3RhdGljIHZvaWQgdmFyaWFibGVfd2FzX2NoYW5n ZWQgKHZhcmlhYmxlLCBkYXRhZmxvd19zZXQgKik7Ci0gc3RhdGljIHZvaWQgc2V0X3ZhcmlhYmxl X3BhcnQgKGRhdGFmbG93X3NldCAqLCBydHgsIHRyZWUsIEhPU1RfV0lERV9JTlQsIAotIAkJCSAg ICAgICBlbnVtIHZhcl9pbml0X3N0YXR1cywgcnR4KTsKLSBzdGF0aWMgdm9pZCBjbG9iYmVyX3Zh cmlhYmxlX3BhcnQgKGRhdGFmbG93X3NldCAqLCBydHgsIHRyZWUsIEhPU1RfV0lERV9JTlQsIAot QEAgLTc0MiwxMiArNzU5LDEwNyBAQCBhdHRyc19saXN0X3VuaW9uIChhdHRycyAqZHN0cCwgYXR0 cnMgc3JjCi0gICAgIH0KLSB9Ci0gCi0tLyogRGVsZXRlIGFsbCB2YXJpYWJsZXMgZnJvbSBoYXNo IHRhYmxlIFZBUlMuICAqLwotKy8qIFNoYXJlZCBoYXNodGFibGUgc3VwcG9ydC4gICovCi0rCi0r LyogUmV0dXJuIHRydWUgaWYgVkFSUyBpcyBzaGFyZWQuICAqLwotKwotK3N0YXRpYyBpbmxpbmUg Ym9vbAotK3NoYXJlZF9oYXNoX3NoYXJlZCAoc2hhcmVkX2hhc2ggdmFycykKLSt7Ci0rICByZXR1 cm4gdmFycy0+cmVmY291bnQgPiAxOwotK30KLSsKLSsvKiBSZXR1cm4gdGhlIGhhc2ggdGFibGUg Zm9yIFZBUlMuICAqLwotKwotK3N0YXRpYyBpbmxpbmUgaHRhYl90Ci0rc2hhcmVkX2hhc2hfaHRh YiAoc2hhcmVkX2hhc2ggdmFycykKLSt7Ci0rICByZXR1cm4gdmFycy0+aHRhYjsKLSt9Ci0rCi0r LyogQ29weSB2YXJpYWJsZXMgaW50byBhIG5ldyBoYXNoIHRhYmxlLiAgKi8KLSsKLStzdGF0aWMg c2hhcmVkX2hhc2gKLStzaGFyZWRfaGFzaF91bnNoYXJlIChzaGFyZWRfaGFzaCB2YXJzKQotK3sK LSsgIHNoYXJlZF9oYXNoIG5ld192YXJzID0gKHNoYXJlZF9oYXNoKSBwb29sX2FsbG9jIChzaGFy ZWRfaGFzaF9wb29sKTsKLSsgIGdjY19hc3NlcnQgKHZhcnMtPnJlZmNvdW50ID4gMSk7Ci0rICBu ZXdfdmFycy0+cmVmY291bnQgPSAxOwotKyAgbmV3X3ZhcnMtPmh0YWIKLSsgICAgPSBodGFiX2Ny ZWF0ZSAoaHRhYl9lbGVtZW50cyAodmFycy0+aHRhYikgKyAzLCB2YXJpYWJsZV9odGFiX2hhc2gs Ci0rCQkgICB2YXJpYWJsZV9odGFiX2VxLCB2YXJpYWJsZV9odGFiX2ZyZWUpOwotKyAgdmFyc19j b3B5IChuZXdfdmFycy0+aHRhYiwgdmFycy0+aHRhYik7Ci0rICB2YXJzLT5yZWZjb3VudC0tOwot KyAgcmV0dXJuIG5ld192YXJzOwotK30KLSsKLSsvKiBJbmNyZW1lbnQgcmVmZXJlbmNlIGNvdW50 ZXIgb24gVkFSUyBhbmQgcmV0dXJuIGl0LiAgKi8KLSsKLStzdGF0aWMgaW5saW5lIHNoYXJlZF9o YXNoCi0rc2hhcmVkX2hhc2hfY29weSAoc2hhcmVkX2hhc2ggdmFycykKLSt7Ci0rICB2YXJzLT5y ZWZjb3VudCsrOwotKyAgcmV0dXJuIHZhcnM7Ci0rfQotKwotKy8qIERlY3JlbWVudCByZWZlcmVu Y2UgY291bnRlciBhbmQgZGVzdHJveSBoYXNoIHRhYmxlIGlmIG5vdCBzaGFyZWQKLSsgICBhbnlt b3JlLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXZhcnNfY2xlYXIgKGh0YWJfdCB2YXJzKQotK3No YXJlZF9oYXNoX2Rlc3Ryb3kgKHNoYXJlZF9oYXNoIHZhcnMpCi0gewotLSAgaHRhYl9lbXB0eSAo dmFycyk7Ci0rICBnY2NfYXNzZXJ0ICh2YXJzLT5yZWZjb3VudCA+IDApOwotKyAgaWYgKC0tdmFy cy0+cmVmY291bnQgPT0gMCkKLSsgICAgewotKyAgICAgIGh0YWJfZGVsZXRlICh2YXJzLT5odGFi KTsKLSsgICAgICBwb29sX2ZyZWUgKHNoYXJlZF9oYXNoX3Bvb2wsIHZhcnMpOwotKyAgICB9Ci0r fQotKwotKy8qIFVuc2hhcmUgKlBWQVJTIGlmIHNoYXJlZCBhbmQgcmV0dXJuIHNsb3QgZm9yIERF Q0wuICBJZiBJTlMgaXMKLSsgICBJTlNFUlQsIGluc2VydCBpdCBpZiBub3QgYWxyZWFkeSBwcmVz ZW50LiAgKi8KLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgKioKLStzaGFyZWRfaGFzaF9maW5kX3Ns b3RfdW5zaGFyZSAoc2hhcmVkX2hhc2ggKnB2YXJzLCB0cmVlIGRlY2wsCi0rCQkJICAgICAgIGVu dW0gaW5zZXJ0X29wdGlvbiBpbnMpCi0rewotKyAgaWYgKHNoYXJlZF9oYXNoX3NoYXJlZCAoKnB2 YXJzKSkKLSsgICAgKnB2YXJzID0gc2hhcmVkX2hhc2hfdW5zaGFyZSAoKnB2YXJzKTsKLSsgIHJl dHVybiBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2ggKHNoYXJlZF9oYXNoX2h0YWIgKCpwdmFycyks IGRlY2wsCi0rCQkJCSAgIFZBUklBQkxFX0hBU0hfVkFMIChkZWNsKSwgaW5zKTsKLSt9Ci0rCi0r LyogUmV0dXJuIHNsb3QgZm9yIERFQ0wsIGlmIGl0IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUg aGFzaCB0YWJsZS4KLSsgICBJZiBpdCBpcyBub3QgcHJlc2VudCwgaW5zZXJ0IGl0IG9ubHkgVkFS UyBpcyBub3Qgc2hhcmVkLCBvdGhlcndpc2UKLSsgICByZXR1cm4gTlVMTC4gICovCi0rCi0rc3Rh dGljIGlubGluZSB2b2lkICoqCi0rc2hhcmVkX2hhc2hfZmluZF9zbG90IChzaGFyZWRfaGFzaCB2 YXJzLCB0cmVlIGRlY2wpCi0rewotKyAgcmV0dXJuIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAo c2hhcmVkX2hhc2hfaHRhYiAodmFycyksIGRlY2wsCi0rCQkJCSAgIFZBUklBQkxFX0hBU0hfVkFM IChkZWNsKSwKLSsJCQkJICAgc2hhcmVkX2hhc2hfc2hhcmVkICh2YXJzKQotKwkJCQkgICA/IE5P X0lOU0VSVCA6IElOU0VSVCk7Ci0rfQotKwotKy8qIFJldHVybiBzbG90IGZvciBERUNMIG9ubHkg aWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSsKLStzdGF0 aWMgaW5saW5lIHZvaWQgKioKLStzaGFyZWRfaGFzaF9maW5kX3Nsb3Rfbm9pbnNlcnQgKHNoYXJl ZF9oYXNoIHZhcnMsIHRyZWUgZGVjbCkKLSt7Ci0rICByZXR1cm4gaHRhYl9maW5kX3Nsb3Rfd2l0 aF9oYXNoIChzaGFyZWRfaGFzaF9odGFiICh2YXJzKSwgZGVjbCwKLSsJCQkJICAgVkFSSUFCTEVf SEFTSF9WQUwgKGRlY2wpLCBOT19JTlNFUlQpOwotK30KLSsKLSsvKiBSZXR1cm4gdmFyaWFibGUg Zm9yIERFQ0wgb3IgTlVMTCBpZiBub3QgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBoYXNoCi0rICAg dGFibGUuICAqLwotKwotK3N0YXRpYyBpbmxpbmUgdmFyaWFibGUKLStzaGFyZWRfaGFzaF9maW5k IChzaGFyZWRfaGFzaCB2YXJzLCB0cmVlIGRlY2wpCi0rewotKyAgcmV0dXJuICh2YXJpYWJsZSkK LSsJIGh0YWJfZmluZF93aXRoX2hhc2ggKHNoYXJlZF9oYXNoX2h0YWIgKHZhcnMpLCBkZWNsLAot KwkJCSAgICAgIFZBUklBQkxFX0hBU0hfVkFMIChkZWNsKSk7Ci0gfQotIAotIC8qIFJldHVybiBh IGNvcHkgb2YgYSB2YXJpYWJsZSBWQVIgYW5kIGluc2VydCBpdCB0byBkYXRhZmxvdyBzZXQgU0VU LiAgKi8KLUBAIC04MDEsOSArOTEzLDcgQEAgdW5zaGFyZV92YXJpYWJsZSAoZGF0YWZsb3dfc2V0 ICpzZXQsIHZhcgotIAluZXdfdmFyLT52YXJfcGFydFtpXS5jdXJfbG9jID0gTlVMTDsKLSAgICAg fQotIAotLSAgc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoc2V0LT52YXJzLCBuZXdf dmFyLT5kZWNsLAotLQkJCQkgICBWQVJJQUJMRV9IQVNIX1ZBTCAobmV3X3Zhci0+ZGVjbCksCi0t CQkJCSAgIElOU0VSVCk7Ci0rICBzbG90ID0gc2hhcmVkX2hhc2hfZmluZF9zbG90X3Vuc2hhcmUg KCZzZXQtPnZhcnMsIG5ld192YXItPmRlY2wsIElOU0VSVCk7Ci0gICAqc2xvdCA9IG5ld192YXI7 Ci0gICByZXR1cm4gbmV3X3ZhcjsKLSB9Ci1AQCAtODM0LDggKzk0NCw3IEBAIHZhcnNfY29weV8x ICh2b2lkICoqc2xvdCwgdm9pZCAqZGF0YSkKLSBzdGF0aWMgdm9pZAotIHZhcnNfY29weSAoaHRh Yl90IGRzdCwgaHRhYl90IHNyYykKLSB7Ci0tICB2YXJzX2NsZWFyIChkc3QpOwotLSAgaHRhYl90 cmF2ZXJzZSAoc3JjLCB2YXJzX2NvcHlfMSwgZHN0KTsKLSsgIGh0YWJfdHJhdmVyc2Vfbm9yZXNp emUgKHNyYywgdmFyc19jb3B5XzEsIGRzdCk7Ci0gfQotIAotIC8qIE1hcCBhIGRlY2wgdG8gaXRz IG1haW4gZGVidWcgZGVjbC4gICovCi1AQCAtODc0LDcgKzk4Myw2IEBAIHZhcl9yZWdfc2V0IChk YXRhZmxvd19zZXQgKnNldCwgcnR4IGxvYywKLSBzdGF0aWMgaW50Ci0gZ2V0X2luaXRfdmFsdWUg KGRhdGFmbG93X3NldCAqc2V0LCBydHggbG9jLCB0cmVlIGRlY2wpCi0gewotLSAgdm9pZCAqKnNs b3Q7Ci0gICB2YXJpYWJsZSB2YXI7Ci0gICBpbnQgaTsKLSAgIGludCByZXRfdmFsID0gVkFSX0lO SVRfU1RBVFVTX1VOS05PV047Ci1AQCAtODgyLDExICs5OTAsOSBAQCBnZXRfaW5pdF92YWx1ZSAo ZGF0YWZsb3dfc2V0ICpzZXQsIHJ0eCBsCi0gICBpZiAoISBmbGFnX3Zhcl90cmFja2luZ191bmlu aXQpCi0gICAgIHJldHVybiBWQVJfSU5JVF9TVEFUVVNfSU5JVElBTElaRUQ7Ci0gCi0tICBzbG90 ID0gaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoIChzZXQtPnZhcnMsIGRlY2wsIFZBUklBQkxFX0hB U0hfVkFMIChkZWNsKSwKLS0JCQkJICAgTk9fSU5TRVJUKTsKLS0gIGlmIChzbG90KQotKyAgdmFy ID0gc2hhcmVkX2hhc2hfZmluZCAoc2V0LT52YXJzLCBkZWNsKTsKLSsgIGlmICh2YXIpCi0gICAg IHsKLS0gICAgICB2YXIgPSAqICh2YXJpYWJsZSAqKSBzbG90OwotICAgICAgIGZvciAoaSA9IDA7 IGkgPCB2YXItPm5fdmFyX3BhcnRzICYmIHJldF92YWwgPT0gVkFSX0lOSVRfU1RBVFVTX1VOS05P V047IGkrKykKLSAJewotIAkgIGxvY2F0aW9uX2NoYWluIG5leHRwOwotQEAgLTEwNTAsMTEgKzEx NTYsMTAgQEAgdmFyX21lbV9kZWxldGUgKGRhdGFmbG93X3NldCAqc2V0LCBydHggbAotICAgIFZB UlNfU0laRSBpcyB0aGUgaW5pdGlhbCBzaXplIG9mIGhhc2ggdGFibGUgVkFSUy4gICovCi0gCi0g c3RhdGljIHZvaWQKLS1kYXRhZmxvd19zZXRfaW5pdCAoZGF0YWZsb3dfc2V0ICpzZXQsIGludCB2 YXJzX3NpemUpCi0rZGF0YWZsb3dfc2V0X2luaXQgKGRhdGFmbG93X3NldCAqc2V0KQotIHsKLSAg IGluaXRfYXR0cnNfbGlzdF9zZXQgKHNldC0+cmVncyk7Ci0tICBzZXQtPnZhcnMgPSBodGFiX2Ny ZWF0ZSAodmFyc19zaXplLCB2YXJpYWJsZV9odGFiX2hhc2gsIHZhcmlhYmxlX2h0YWJfZXEsCi0t CQkJICAgdmFyaWFibGVfaHRhYl9mcmVlKTsKLSsgIHNldC0+dmFycyA9IHNoYXJlZF9oYXNoX2Nv cHkgKGVtcHR5X3NoYXJlZF9oYXNoKTsKLSAgIHNldC0+c3RhY2tfYWRqdXN0ID0gMDsKLSB9Ci0g Ci1AQCAtMTA2OCw3ICsxMTczLDggQEAgZGF0YWZsb3dfc2V0X2NsZWFyIChkYXRhZmxvd19zZXQg KnNldCkKLSAgIGZvciAoaSA9IDA7IGkgPCBGSVJTVF9QU0VVRE9fUkVHSVNURVI7IGkrKykKLSAg ICAgYXR0cnNfbGlzdF9jbGVhciAoJnNldC0+cmVnc1tpXSk7Ci0gCi0tICB2YXJzX2NsZWFyIChz ZXQtPnZhcnMpOwotKyAgc2hhcmVkX2hhc2hfZGVzdHJveSAoc2V0LT52YXJzKTsKLSsgIHNldC0+ dmFycyA9IHNoYXJlZF9oYXNoX2NvcHkgKGVtcHR5X3NoYXJlZF9oYXNoKTsKLSB9Ci0gCi0gLyog Q29weSB0aGUgY29udGVudHMgb2YgZGF0YWZsb3cgc2V0IFNSQyB0byBEU1QuICAqLwotQEAgLTEw ODEsNyArMTE4Nyw4IEBAIGRhdGFmbG93X3NldF9jb3B5IChkYXRhZmxvd19zZXQgKmRzdCwgZGEK LSAgIGZvciAoaSA9IDA7IGkgPCBGSVJTVF9QU0VVRE9fUkVHSVNURVI7IGkrKykKLSAgICAgYXR0 cnNfbGlzdF9jb3B5ICgmZHN0LT5yZWdzW2ldLCBzcmMtPnJlZ3NbaV0pOwotIAotLSAgdmFyc19j b3B5IChkc3QtPnZhcnMsIHNyYy0+dmFycyk7Ci0rICBzaGFyZWRfaGFzaF9kZXN0cm95IChkc3Qt PnZhcnMpOwotKyAgZHN0LT52YXJzID0gc2hhcmVkX2hhc2hfY29weSAoc3JjLT52YXJzKTsKLSAg IGRzdC0+c3RhY2tfYWRqdXN0ID0gc3JjLT5zdGFja19hZGp1c3Q7Ci0gfQotIAotQEAgLTExMjks MTUgKzEyMzYsMTQgQEAgdmFyaWFibGVfdW5pb25faW5mb19jbXBfcG9zIChjb25zdCB2b2lkIAot IHN0YXRpYyBpbnQKLSB2YXJpYWJsZV91bmlvbiAodm9pZCAqKnNsb3QsIHZvaWQgKmRhdGEpCi0g ewotLSAgdmFyaWFibGUgc3JjLCBkc3QsICpkc3RwOwotKyAgdmFyaWFibGUgc3JjLCBkc3Q7Ci0r ICB2b2lkICoqZHN0cDsKLSAgIGRhdGFmbG93X3NldCAqc2V0ID0gKGRhdGFmbG93X3NldCAqKSBk YXRhOwotICAgaW50IGksIGosIGs7Ci0gCi0gICBzcmMgPSAqKHZhcmlhYmxlICopIHNsb3Q7Ci0t ICBkc3RwID0gKHZhcmlhYmxlICopIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoc2V0LT52YXJz LCBzcmMtPmRlY2wsCi0tCQkJCQkJVkFSSUFCTEVfSEFTSF9WQUwgKHNyYy0+ZGVjbCksCi0tCQkJ CQkJSU5TRVJUKTsKLS0gIGlmICghKmRzdHApCi0rICBkc3RwID0gc2hhcmVkX2hhc2hfZmluZF9z bG90IChzZXQtPnZhcnMsIHNyYy0+ZGVjbCk7Ci0rICBpZiAoIWRzdHAgfHwgISpkc3RwKQotICAg ICB7Ci0gICAgICAgc3JjLT5yZWZjb3VudCsrOwotIAotQEAgLTExNjIsMTYgKzEyNjgsMjMgQEAg dmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRhKQotIAkgIGlmICghIGZsYWdf dmFyX3RyYWNraW5nX3VuaW5pdCkKLSAJICAgIHN0YXR1cyA9IFZBUl9JTklUX1NUQVRVU19JTklU SUFMSVpFRDsKLSAKLSsJICBpZiAoZHN0cCkKLSsJICAgICpkc3RwID0gKHZvaWQgKikgc3JjOwot IAkgIHVuc2hhcmVfdmFyaWFibGUgKHNldCwgc3JjLCBzdGF0dXMpOwotIAl9Ci0gICAgICAgZWxz ZQotLQkqZHN0cCA9IHNyYzsKLSsJewotKwkgIGlmICghZHN0cCkKLSsJICAgIGRzdHAgPSBzaGFy ZWRfaGFzaF9maW5kX3Nsb3RfdW5zaGFyZSAoJnNldC0+dmFycywgc3JjLT5kZWNsLAotKwkJCQkJ CSAgSU5TRVJUKTsKLSsJICAqZHN0cCA9ICh2b2lkICopIHNyYzsKLSsJfQotIAotICAgICAgIC8q IENvbnRpbnVlIHRyYXZlcnNpbmcgdGhlIGhhc2ggdGFibGUuICAqLwotICAgICAgIHJldHVybiAx OwotICAgICB9Ci0gICBlbHNlCi0tICAgIGRzdCA9ICpkc3RwOwotKyAgICBkc3QgPSAodmFyaWFi bGUpICpkc3RwOwotIAotICAgZ2NjX2Fzc2VydCAoc3JjLT5uX3Zhcl9wYXJ0cyk7Ci0gCi1AQCAt MTE5Niw3ICsxMzA5LDggQEAgdmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRh KQotICAgICAgdGh1cyB0aGVyZSBhcmUgYXQgbW9zdCBNQVhfVkFSX1BBUlRTIGRpZmZlcmVudCBv ZmZzZXRzLiAgKi8KLSAgIGdjY19hc3NlcnQgKGsgPD0gTUFYX1ZBUl9QQVJUUyk7Ci0gCi0tICBp ZiAoZHN0LT5yZWZjb3VudCA+IDEgJiYgZHN0LT5uX3Zhcl9wYXJ0cyAhPSBrKQotKyAgaWYgKChk c3QtPnJlZmNvdW50ID4gMSB8fCBzaGFyZWRfaGFzaF9zaGFyZWQgKHNldC0+dmFycykpCi0rICAg ICAgJiYgZHN0LT5uX3Zhcl9wYXJ0cyAhPSBrKQotICAgICB7Ci0gICAgICAgZW51bSB2YXJfaW5p dF9zdGF0dXMgc3RhdHVzID0gVkFSX0lOSVRfU1RBVFVTX1VOS05PV047Ci0gICAgICAgCi1AQCAt MTIyNiw3ICsxMzQwLDcgQEAgdmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRh KQotIAkgIC8qIElmIERTVCBpcyBzaGFyZWQgY29tcGFyZSB0aGUgbG9jYXRpb24gY2hhaW5zLgot IAkgICAgIElmIHRoZXkgYXJlIGRpZmZlcmVudCB3ZSB3aWxsIG1vZGlmeSB0aGUgY2hhaW4gaW4g RFNUIHdpdGgKLSAJICAgICBoaWdoIHByb2JhYmlsaXR5IHNvIG1ha2UgYSBjb3B5IG9mIERTVC4g ICovCi0tCSAgaWYgKGRzdC0+cmVmY291bnQgPiAxKQotKwkgIGlmIChkc3QtPnJlZmNvdW50ID4g MSB8fCBzaGFyZWRfaGFzaF9zaGFyZWQgKHNldC0+dmFycykpCi0gCSAgICB7Ci0gCSAgICAgIGZv ciAobm9kZSA9IHNyYy0+dmFyX3BhcnRbaV0ubG9jX2NoYWluLAotIAkJICAgbm9kZTIgPSBkc3Qt PnZhcl9wYXJ0W2pdLmxvY19jaGFpbjsgbm9kZSAmJiBub2RlMjsKLUBAIC0xMzc5LDYgKzE0OTMs NDYgQEAgdmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90LCB2b2lkICpkYXRhKQotICAgcmV0dXJu IDE7Ci0gfQotIAotKy8qIExpa2UgdmFyaWFibGVfdW5pb24sIGJ1dCBvbmx5IHVzZWQgd2hlbiBk b2luZyBkYXRhZmxvd19zZXRfdW5pb24KLSsgICBpbnRvIGFuIGVtcHR5IGhhc2h0YWIuICBUbyBh bGxvdyBzaGFyaW5nLCBkc3QgaXMgaW5pdGlhbGx5IHNoYXJlZAotKyAgIHdpdGggc3JjIChzbyBh bGwgdmFyaWFibGVzIGFyZSAiY29waWVkIiBmcm9tIHNyYyB0byBkc3QgaGFzaHRhYiksCi0rICAg c28gb25seSB1bnNoYXJlX3ZhcmlhYmxlIGZvciB2YXJpYWJsZXMgdGhhdCBuZWVkIGNhbm9uaWNh bGl6YXRpb24KLSsgICBhcmUgbmVlZGVkLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rdmFyaWFibGVf Y2Fub25pY2FsaXplICh2b2lkICoqc2xvdCwgdm9pZCAqZGF0YSkKLSt7Ci0rICB2YXJpYWJsZSBz cmM7Ci0rICBkYXRhZmxvd19zZXQgKnNldCA9IChkYXRhZmxvd19zZXQgKikgZGF0YTsKLSsgIGlu dCBrOwotKwotKyAgc3JjID0gKih2YXJpYWJsZSAqKSBzbG90OwotKwotKyAgLyogSWYgQ1VSX0xP QyBvZiBzb21lIHZhcmlhYmxlIHBhcnQgaXMgbm90IHRoZSBmaXJzdCBlbGVtZW50IG9mCi0rICAg ICB0aGUgbG9jYXRpb24gY2hhaW4gd2UgYXJlIGdvaW5nIHRvIGNoYW5nZSBpdCBzbyB3ZSBoYXZl IHRvIG1ha2UKLSsgICAgIGEgY29weSBvZiB0aGUgdmFyaWFibGUuICAqLwotKyAgZm9yIChrID0g MDsgayA8IHNyYy0+bl92YXJfcGFydHM7IGsrKykKLSsgICAgewotKyAgICAgIGdjY19hc3NlcnQg KCFzcmMtPnZhcl9wYXJ0W2tdLmxvY19jaGFpbiA9PSAhc3JjLT52YXJfcGFydFtrXS5jdXJfbG9j KTsKLSsgICAgICBpZiAoc3JjLT52YXJfcGFydFtrXS5sb2NfY2hhaW4pCi0rCXsKLSsJICBnY2Nf YXNzZXJ0IChzcmMtPnZhcl9wYXJ0W2tdLmN1cl9sb2MpOwotKwkgIGlmIChzcmMtPnZhcl9wYXJ0 W2tdLmN1cl9sb2MgIT0gc3JjLT52YXJfcGFydFtrXS5sb2NfY2hhaW4tPmxvYykKLSsJICAgIGJy ZWFrOwotKwl9Ci0rICAgIH0KLSsgIGlmIChrIDwgc3JjLT5uX3Zhcl9wYXJ0cykKLSsgICAgewot KyAgICAgIGVudW0gdmFyX2luaXRfc3RhdHVzIHN0YXR1cyA9IFZBUl9JTklUX1NUQVRVU19VTktO T1dOOwotKwotKyAgICAgIGlmICghIGZsYWdfdmFyX3RyYWNraW5nX3VuaW5pdCkKLSsJc3RhdHVz ID0gVkFSX0lOSVRfU1RBVFVTX0lOSVRJQUxJWkVEOwotKwotKyAgICAgIHVuc2hhcmVfdmFyaWFi bGUgKHNldCwgc3JjLCBzdGF0dXMpOwotKyAgICB9Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0gLyog Q29tcHV0ZSB1bmlvbiBvZiBkYXRhZmxvdyBzZXRzIFNSQyBhbmQgRFNUIGFuZCBzdG9yZSBpdCB0 byBEU1QuICAqLwotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTM4OSw3ICsxNTQzLDE0IEBAIGRhdGFm bG93X3NldF91bmlvbiAoZGF0YWZsb3dfc2V0ICpkc3QsIGQKLSAgIGZvciAoaSA9IDA7IGkgPCBG SVJTVF9QU0VVRE9fUkVHSVNURVI7IGkrKykKLSAgICAgYXR0cnNfbGlzdF91bmlvbiAoJmRzdC0+ cmVnc1tpXSwgc3JjLT5yZWdzW2ldKTsKLSAKLS0gIGh0YWJfdHJhdmVyc2UgKHNyYy0+dmFycywg dmFyaWFibGVfdW5pb24sIGRzdCk7Ci0rICBpZiAoZHN0LT52YXJzID09IGVtcHR5X3NoYXJlZF9o YXNoKQotKyAgICB7Ci0rICAgICAgc2hhcmVkX2hhc2hfZGVzdHJveSAoZHN0LT52YXJzKTsKLSsg ICAgICBkc3QtPnZhcnMgPSBzaGFyZWRfaGFzaF9jb3B5IChzcmMtPnZhcnMpOwotKyAgICAgIGh0 YWJfdHJhdmVyc2UgKHNoYXJlZF9oYXNoX2h0YWIgKHNyYy0+dmFycyksIHZhcmlhYmxlX2Nhbm9u aWNhbGl6ZSwgZHN0KTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBodGFiX3RyYXZlcnNlIChzaGFy ZWRfaGFzaF9odGFiIChzcmMtPnZhcnMpLCB2YXJpYWJsZV91bmlvbiwgZHN0KTsKLSB9Ci0gCi0g LyogRmxhZyB3aGV0aGVyIHR3byBkYXRhZmxvdyBzZXRzIGJlaW5nIGNvbXBhcmVkIGNvbnRhaW4g ZGlmZmVyZW50IGRhdGEuICAqLwotQEAgLTE1MjIsMTUgKzE2ODMsMjQgQEAgZGF0YWZsb3dfc2V0 X2RpZmZlcmVudF8yICh2b2lkICoqc2xvdCwgdgotIHN0YXRpYyBib29sCi0gZGF0YWZsb3dfc2V0 X2RpZmZlcmVudCAoZGF0YWZsb3dfc2V0ICpvbGRfc2V0LCBkYXRhZmxvd19zZXQgKm5ld19zZXQp Ci0gewotKyAgaWYgKG9sZF9zZXQtPnZhcnMgPT0gbmV3X3NldC0+dmFycykKLSsgICAgcmV0dXJu IGZhbHNlOwotKwotKyAgaWYgKGh0YWJfZWxlbWVudHMgKHNoYXJlZF9oYXNoX2h0YWIgKG9sZF9z ZXQtPnZhcnMpKQotKyAgICAgICE9IGh0YWJfZWxlbWVudHMgKHNoYXJlZF9oYXNoX2h0YWIgKG5l d19zZXQtPnZhcnMpKSkKLSsgICAgcmV0dXJuIHRydWU7Ci0rCi0gICBkYXRhZmxvd19zZXRfZGlm ZmVyZW50X3ZhbHVlID0gZmFsc2U7Ci0gCi0tICBodGFiX3RyYXZlcnNlIChvbGRfc2V0LT52YXJz LCBkYXRhZmxvd19zZXRfZGlmZmVyZW50XzEsIG5ld19zZXQtPnZhcnMpOwotKyAgaHRhYl90cmF2 ZXJzZSAoc2hhcmVkX2hhc2hfaHRhYiAob2xkX3NldC0+dmFycyksIGRhdGFmbG93X3NldF9kaWZm ZXJlbnRfMSwKLSsJCSBzaGFyZWRfaGFzaF9odGFiIChuZXdfc2V0LT52YXJzKSk7Ci0gICBpZiAo IWRhdGFmbG93X3NldF9kaWZmZXJlbnRfdmFsdWUpCi0gICAgIHsKLSAgICAgICAvKiBXZSBoYXZl IGNvbXBhcmVkIHRoZSB2YXJpYWJsZXMgd2hpY2ggYXJlIGluIGJvdGggaGFzaCB0YWJsZXMKLSAJ IHNvIG5vdyBvbmx5IGNoZWNrIHdoZXRoZXIgdGhlcmUgYXJlIHNvbWUgdmFyaWFibGVzIGluIE5F V19TRVQtPlZBUlMKLSAJIHdoaWNoIGFyZSBub3QgaW4gT0xEX1NFVC0+VkFSUy4gICovCi0tICAg ICAgaHRhYl90cmF2ZXJzZSAobmV3X3NldC0+dmFycywgZGF0YWZsb3dfc2V0X2RpZmZlcmVudF8y LCBvbGRfc2V0LT52YXJzKTsKLSsgICAgICBodGFiX3RyYXZlcnNlIChzaGFyZWRfaGFzaF9odGFi IChuZXdfc2V0LT52YXJzKSwgZGF0YWZsb3dfc2V0X2RpZmZlcmVudF8yLAotKwkJICAgICBzaGFy ZWRfaGFzaF9odGFiIChvbGRfc2V0LT52YXJzKSk7Ci0gICAgIH0KLSAgIHJldHVybiBkYXRhZmxv d19zZXRfZGlmZmVyZW50X3ZhbHVlOwotIH0KLUBAIC0xNTQ1LDcgKzE3MTUsNyBAQCBkYXRhZmxv d19zZXRfZGVzdHJveSAoZGF0YWZsb3dfc2V0ICpzZXQpCi0gICBmb3IgKGkgPSAwOyBpIDwgRklS U1RfUFNFVURPX1JFR0lTVEVSOyBpKyspCi0gICAgIGF0dHJzX2xpc3RfY2xlYXIgKCZzZXQtPnJl Z3NbaV0pOwotIAotLSAgaHRhYl9kZWxldGUgKHNldC0+dmFycyk7Ci0rICBzaGFyZWRfaGFzaF9k ZXN0cm95IChzZXQtPnZhcnMpOwotICAgc2V0LT52YXJzID0gTlVMTDsKLSB9Ci0gCi1AQCAtMTk4 NSw3ICsyMTU1LDYgQEAgZmluZF9zcmNfc2V0X3NyYyAoZGF0YWZsb3dfc2V0ICpzZXQsIHJ0eAot IHsKLSAgIHRyZWUgZGVjbCA9IE5VTExfVFJFRTsgICAvKiBUaGUgdmFyaWFibGUgYmVpbmcgY29w aWVkIGFyb3VuZC4gICAgICAgICAgKi8KLSAgIHJ0eCBzZXRfc3JjID0gTlVMTF9SVFg7ICAvKiBU aGUgdmFsdWUgZm9yICJkZWNsIiBzdG9yZWQgaW4gInNyYyIuICAgICAgKi8KLS0gIHZvaWQgKipz bG90OwotICAgdmFyaWFibGUgdmFyOwotICAgbG9jYXRpb25fY2hhaW4gbmV4dHA7Ci0gICBpbnQg aTsKLUBAIC0xOTk4LDEyICsyMTY3LDkgQEAgZmluZF9zcmNfc2V0X3NyYyAoZGF0YWZsb3dfc2V0 ICpzZXQsIHJ0eAotIAotICAgaWYgKHNyYyAmJiBkZWNsKQotICAgICB7Ci0tICAgICAgc2xvdCA9 IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoc2V0LT52YXJzLCBkZWNsLCAKLS0JCQkJICAgICAg IFZBUklBQkxFX0hBU0hfVkFMIChkZWNsKSwgTk9fSU5TRVJUKTsKLS0KLS0gICAgICBpZiAoc2xv dCkKLSsgICAgICB2YXIgPSBzaGFyZWRfaGFzaF9maW5kIChzZXQtPnZhcnMsIGRlY2wpOwotKyAg ICAgIGlmICh2YXIpCi0gCXsKLS0JICB2YXIgPSAqKHZhcmlhYmxlICopIHNsb3Q7Ci0gCSAgZm91 bmQgPSBmYWxzZTsKLSAJICBmb3IgKGkgPSAwOyBpIDwgdmFyLT5uX3Zhcl9wYXJ0cyAmJiAhZm91 bmQ7IGkrKykKLSAJICAgIGZvciAobmV4dHAgPSB2YXItPnZhcl9wYXJ0W2ldLmxvY19jaGFpbjsg bmV4dHAgJiYgIWZvdW5kOyAKLUBAIC0yMDMxLDcgKzIxOTcsNyBAQCBjb21wdXRlX2JiX2RhdGFm bG93IChiYXNpY19ibG9jayBiYikKLSAgIGRhdGFmbG93X3NldCAqaW4gPSAmVlRJIChiYiktPmlu OwotICAgZGF0YWZsb3dfc2V0ICpvdXQgPSAmVlRJIChiYiktPm91dDsKLSAKLS0gIGRhdGFmbG93 X3NldF9pbml0ICgmb2xkX291dCwgaHRhYl9lbGVtZW50cyAoVlRJIChiYiktPm91dC52YXJzKSAr IDMpOwotKyAgZGF0YWZsb3dfc2V0X2luaXQgKCZvbGRfb3V0KTsKLSAgIGRhdGFmbG93X3NldF9j b3B5ICgmb2xkX291dCwgb3V0KTsKLSAgIGRhdGFmbG93X3NldF9jb3B5IChvdXQsIGluKTsKLSAK LUBAIC0yMzIzLDcgKzI0ODksNyBAQCBkdW1wX2RhdGFmbG93X3NldCAoZGF0YWZsb3dfc2V0ICpz ZXQpCi0gCSAgZHVtcF9hdHRyc19saXN0IChzZXQtPnJlZ3NbaV0pOwotIAl9Ci0gICAgIH0KLS0g IGR1bXBfdmFycyAoc2V0LT52YXJzKTsKLSsgIGR1bXBfdmFycyAoc2hhcmVkX2hhc2hfaHRhYiAo c2V0LT52YXJzKSk7Ci0gICBmcHJpbnRmIChkdW1wX2ZpbGUsICJcbiIpOwotIH0KLSAKLUBAIC0y MzQ1LDEwICsyNTExLDEwIEBAIGR1bXBfZGF0YWZsb3dfc2V0cyAodm9pZCkKLSB9Ci0gCi0gLyog QWRkIHZhcmlhYmxlIFZBUiB0byB0aGUgaGFzaCB0YWJsZSBvZiBjaGFuZ2VkIHZhcmlhYmxlcyBh bmQKLS0gICBpZiBpdCBoYXMgbm8gbG9jYXRpb25zIGRlbGV0ZSBpdCBmcm9tIGhhc2ggdGFibGUg SFRBQi4gICovCi0rICAgaWYgaXQgaGFzIG5vIGxvY2F0aW9ucyBkZWxldGUgaXQgZnJvbSBTRVQn cyBoYXNoIHRhYmxlLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXZhcmlhYmxlX3dhc19jaGFuZ2Vk ICh2YXJpYWJsZSB2YXIsIGh0YWJfdCBodGFiKQotK3ZhcmlhYmxlX3dhc19jaGFuZ2VkICh2YXJp YWJsZSB2YXIsIGRhdGFmbG93X3NldCAqc2V0KQotIHsKLSAgIGhhc2h2YWxfdCBoYXNoID0gVkFS SUFCTEVfSEFTSF9WQUwgKHZhci0+ZGVjbCk7Ci0gCi1AQCAtMjM1OSwzNiArMjUyNSwzOSBAQCB2 YXJpYWJsZV93YXNfY2hhbmdlZCAodmFyaWFibGUgdmFyLCBodGFiCi0gICAgICAgc2xvdCA9ICh2 YXJpYWJsZSAqKSBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2ggKGNoYW5nZWRfdmFyaWFibGVzLAot IAkJCQkJCSAgICB2YXItPmRlY2wsIGhhc2gsIElOU0VSVCk7Ci0gCi0tICAgICAgaWYgKGh0YWIg JiYgdmFyLT5uX3Zhcl9wYXJ0cyA9PSAwKQotKyAgICAgIGlmIChzZXQgJiYgdmFyLT5uX3Zhcl9w YXJ0cyA9PSAwKQotIAl7Ci0gCSAgdmFyaWFibGUgZW1wdHlfdmFyOwotLQkgIHZvaWQgKipvbGQ7 Ci0gCi0gCSAgZW1wdHlfdmFyID0gKHZhcmlhYmxlKSBwb29sX2FsbG9jICh2YXJfcG9vbCk7Ci0g CSAgZW1wdHlfdmFyLT5kZWNsID0gdmFyLT5kZWNsOwotIAkgIGVtcHR5X3Zhci0+cmVmY291bnQg PSAxOwotIAkgIGVtcHR5X3Zhci0+bl92YXJfcGFydHMgPSAwOwotIAkgICpzbG90ID0gZW1wdHlf dmFyOwotLQotLQkgIG9sZCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoaHRhYiwgdmFyLT5k ZWNsLCBoYXNoLAotLQkJCQkJICBOT19JTlNFUlQpOwotLQkgIGlmIChvbGQpCi0tCSAgICBodGFi X2NsZWFyX3Nsb3QgKGh0YWIsIG9sZCk7Ci0rCSAgZ290byBkcm9wX3ZhcjsKLSAJfQotICAgICAg IGVsc2UKLSAJewotKwkgIHZhci0+cmVmY291bnQrKzsKLSAJICAqc2xvdCA9IHZhcjsKLSAJfQot ICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBnY2NfYXNzZXJ0IChodGFiKTsKLSsgICAg ICBnY2NfYXNzZXJ0IChzZXQpOwotICAgICAgIGlmICh2YXItPm5fdmFyX3BhcnRzID09IDApCi0g CXsKLS0JICB2b2lkICoqc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoaHRhYiwgdmFy LT5kZWNsLCBoYXNoLAotLQkJCQkJCSAgTk9fSU5TRVJUKTsKLSsJICB2b2lkICoqc2xvdDsKLSsK LSsJZHJvcF92YXI6Ci0rCSAgc2xvdCA9IHNoYXJlZF9oYXNoX2ZpbmRfc2xvdF9ub2luc2VydCAo c2V0LT52YXJzLCB2YXItPmRlY2wpOwotIAkgIGlmIChzbG90KQotLQkgICAgaHRhYl9jbGVhcl9z bG90IChodGFiLCBzbG90KTsKLSsJICAgIHsKLSsJICAgICAgaWYgKHNoYXJlZF9oYXNoX3NoYXJl ZCAoc2V0LT52YXJzKSkKLSsJCXNsb3QgPSBzaGFyZWRfaGFzaF9maW5kX3Nsb3RfdW5zaGFyZSAo JnNldC0+dmFycywgdmFyLT5kZWNsLAotKwkJCQkJCSAgICAgIE5PX0lOU0VSVCk7Ci0rCSAgICAg IGh0YWJfY2xlYXJfc2xvdCAoc2hhcmVkX2hhc2hfaHRhYiAoc2V0LT52YXJzKSwgc2xvdCk7Ci0r CSAgICB9Ci0gCX0KLSAgICAgfQotIH0KLUBAIC0yNDM4LDEyICsyNjA3LDEyIEBAIHNldF92YXJp YWJsZV9wYXJ0IChkYXRhZmxvd19zZXQgKnNldCwgcnQKLSAgIGxvY2F0aW9uX2NoYWluIG5vZGUs IG5leHQ7Ci0gICBsb2NhdGlvbl9jaGFpbiAqbmV4dHA7Ci0gICB2YXJpYWJsZSB2YXI7Ci0tICB2 b2lkICoqc2xvdDsKLS0gIAotLSAgc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoc2V0 LT52YXJzLCBkZWNsLAotLQkJCQkgICBWQVJJQUJMRV9IQVNIX1ZBTCAoZGVjbCksIElOU0VSVCk7 Ci0tICBpZiAoISpzbG90KQotKyAgdm9pZCAqKnNsb3QgPSBzaGFyZWRfaGFzaF9maW5kX3Nsb3Qg KHNldC0+dmFycywgZGVjbCk7Ci0rCi0rICBpZiAoIXNsb3QgfHwgISpzbG90KQotICAgICB7Ci0r ICAgICAgaWYgKCFzbG90KQotKwlzbG90ID0gc2hhcmVkX2hhc2hfZmluZF9zbG90X3Vuc2hhcmUg KCZzZXQtPnZhcnMsIGRlY2wsIElOU0VSVCk7Ci0gICAgICAgLyogQ3JlYXRlIG5ldyB2YXJpYWJs ZSBpbmZvcm1hdGlvbi4gICovCi0gICAgICAgdmFyID0gKHZhcmlhYmxlKSBwb29sX2FsbG9jICh2 YXJfcG9vbCk7Ci0gICAgICAgdmFyLT5kZWNsID0gZGVjbDsKLUBAIC0yNDc5LDEzICsyNjQ4LDEy IEBAIHNldF92YXJpYWJsZV9wYXJ0IChkYXRhZmxvd19zZXQgKnNldCwgcnQKLSAJICAgICAgaWYg KHNldF9zcmMgIT0gTlVMTCkKLSAJCW5vZGUtPnNldF9zcmMgPSBzZXRfc3JjOwotIAotLQkgICAg ICAqc2xvdCA9IHZhcjsKLSAJICAgICAgcmV0dXJuOwotIAkgICAgfQotIAkgIGVsc2UKLSAJICAg IHsKLSAJICAgICAgLyogV2UgaGF2ZSB0byBtYWtlIGEgY29weSBvZiBhIHNoYXJlZCB2YXJpYWJs ZS4gICovCi0tCSAgICAgIGlmICh2YXItPnJlZmNvdW50ID4gMSkKLSsJICAgICAgaWYgKHZhci0+ cmVmY291bnQgPiAxIHx8IHNoYXJlZF9oYXNoX3NoYXJlZCAoc2V0LT52YXJzKSkKLSAJCXZhciA9 IHVuc2hhcmVfdmFyaWFibGUgKHNldCwgdmFyLCBpbml0aWFsaXplZCk7Ci0gCSAgICB9Ci0gCX0K LUBAIC0yNDk0LDcgKzI2NjIsNyBAQCBzZXRfdmFyaWFibGVfcGFydCAoZGF0YWZsb3dfc2V0ICpz ZXQsIHJ0Ci0gCSAgLyogV2UgaGF2ZSBub3QgZm91bmQgdGhlIGxvY2F0aW9uIHBhcnQsIG5ldyBv bmUgd2lsbCBiZSBjcmVhdGVkLiAgKi8KLSAKLSAJICAvKiBXZSBoYXZlIHRvIG1ha2UgYSBjb3B5 IG9mIHRoZSBzaGFyZWQgdmFyaWFibGUuICAqLwotLQkgIGlmICh2YXItPnJlZmNvdW50ID4gMSkK LSsJICBpZiAodmFyLT5yZWZjb3VudCA+IDEgfHwgc2hhcmVkX2hhc2hfc2hhcmVkIChzZXQtPnZh cnMpKQotIAkgICAgdmFyID0gdW5zaGFyZV92YXJpYWJsZSAoc2V0LCB2YXIsIGluaXRpYWxpemVk KTsKLSAKLSAJICAvKiBXZSB0cmFjayBvbmx5IHZhcmlhYmxlcyB3aG9zZSBzaXplIGlzIDw9IE1B WF9WQVJfUEFSVFMgYnl0ZXMKLUBAIC0yNTQ4LDcgKzI3MTYsNyBAQCBzZXRfdmFyaWFibGVfcGFy dCAoZGF0YWZsb3dfc2V0ICpzZXQsIHJ0Ci0gICBpZiAodmFyLT52YXJfcGFydFtwb3NdLmN1cl9s b2MgPT0gTlVMTCkKLSAgICAgewotICAgICAgIHZhci0+dmFyX3BhcnRbcG9zXS5jdXJfbG9jID0g bG9jOwotLSAgICAgIHZhcmlhYmxlX3dhc19jaGFuZ2VkICh2YXIsIHNldC0+dmFycyk7Ci0rICAg ICAgdmFyaWFibGVfd2FzX2NoYW5nZWQgKHZhciwgc2V0KTsKLSAgICAgfQotIH0KLSAKLUBAIC0y NTYxLDE2ICsyNzI5LDE0IEBAIHN0YXRpYyB2b2lkCi0gY2xvYmJlcl92YXJpYWJsZV9wYXJ0IChk YXRhZmxvd19zZXQgKnNldCwgcnR4IGxvYywgdHJlZSBkZWNsLAotIAkJICAgICAgIEhPU1RfV0lE RV9JTlQgb2Zmc2V0LCBydHggc2V0X3NyYykKLSB7Ci0tICB2b2lkICoqc2xvdDsKLSsgIHZhcmlh YmxlIHZhcjsKLSAKLSAgIGlmICghIGRlY2wgfHwgISBERUNMX1AgKGRlY2wpKQotICAgICByZXR1 cm47Ci0gCi0tICBzbG90ID0gaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoIChzZXQtPnZhcnMsIGRl Y2wsIFZBUklBQkxFX0hBU0hfVkFMIChkZWNsKSwKLS0JCQkJICAgTk9fSU5TRVJUKTsKLS0gIGlm IChzbG90KQotKyAgdmFyID0gc2hhcmVkX2hhc2hfZmluZCAoc2V0LT52YXJzLCBkZWNsKTsKLSsg IGlmICh2YXIpCi0gICAgIHsKLS0gICAgICB2YXJpYWJsZSB2YXIgPSAodmFyaWFibGUpICpzbG90 OwotICAgICAgIGludCBwb3MgPSBmaW5kX3ZhcmlhYmxlX2xvY2F0aW9uX3BhcnQgKHZhciwgb2Zm c2V0LCBOVUxMKTsKLSAKLSAgICAgICBpZiAocG9zID49IDApCi1AQCAtMjYyNywxMyArMjc5Myw5 IEBAIHN0YXRpYyB2b2lkCi0gZGVsZXRlX3ZhcmlhYmxlX3BhcnQgKGRhdGFmbG93X3NldCAqc2V0 LCBydHggbG9jLCB0cmVlIGRlY2wsCi0gCQkgICAgICBIT1NUX1dJREVfSU5UIG9mZnNldCkKLSB7 Ci0tICB2b2lkICoqc2xvdDsKLS0gICAgCi0tICBzbG90ID0gaHRhYl9maW5kX3Nsb3Rfd2l0aF9o YXNoIChzZXQtPnZhcnMsIGRlY2wsIFZBUklBQkxFX0hBU0hfVkFMIChkZWNsKSwKLS0JCQkJICAg Tk9fSU5TRVJUKTsKLS0gIGlmIChzbG90KQotKyAgdmFyaWFibGUgdmFyID0gc2hhcmVkX2hhc2hf ZmluZCAoc2V0LT52YXJzLCBkZWNsKTs7Ci0rICBpZiAodmFyKQotICAgICB7Ci0tICAgICAgdmFy aWFibGUgdmFyID0gKHZhcmlhYmxlKSAqc2xvdDsKLSAgICAgICBpbnQgcG9zID0gZmluZF92YXJp YWJsZV9sb2NhdGlvbl9wYXJ0ICh2YXIsIG9mZnNldCwgTlVMTCk7Ci0gCi0gICAgICAgaWYgKHBv cyA+PSAwKQotQEAgLTI2NDIsNyArMjgwNCw3IEBAIGRlbGV0ZV92YXJpYWJsZV9wYXJ0IChkYXRh Zmxvd19zZXQgKnNldCwKLSAJICBsb2NhdGlvbl9jaGFpbiAqbmV4dHA7Ci0gCSAgYm9vbCBjaGFu Z2VkOwotIAotLQkgIGlmICh2YXItPnJlZmNvdW50ID4gMSkKLSsJICBpZiAodmFyLT5yZWZjb3Vu dCA+IDEgfHwgc2hhcmVkX2hhc2hfc2hhcmVkIChzZXQtPnZhcnMpKQotIAkgICAgewotIAkgICAg ICAvKiBJZiB0aGUgdmFyaWFibGUgY29udGFpbnMgdGhlIGxvY2F0aW9uIHBhcnQgd2UgaGF2ZSB0 bwotIAkJIG1ha2UgYSBjb3B5IG9mIHRoZSB2YXJpYWJsZS4gICovCi1AQCAtMjcwNSw3ICsyODY3 LDcgQEAgZGVsZXRlX3ZhcmlhYmxlX3BhcnQgKGRhdGFmbG93X3NldCAqc2V0LAotIAkJfQotIAkg ICAgfQotIAkgIGlmIChjaGFuZ2VkKQotLQkgICAgdmFyaWFibGVfd2FzX2NoYW5nZWQgKHZhciwg c2V0LT52YXJzKTsKLSsJICAgIHZhcmlhYmxlX3dhc19jaGFuZ2VkICh2YXIsIHNldCk7Ci0gCX0K LSAgICAgfQotIH0KLUBAIC0yODY0LDE0ICszMDI2LDYgQEAgZW1pdF9ub3RlX2luc25fdmFyX2xv Y2F0aW9uICh2b2lkICoqdmFycAotIAotICAgaHRhYl9jbGVhcl9zbG90IChjaGFuZ2VkX3Zhcmlh YmxlcywgdmFycCk7Ci0gCi0tICAvKiBXaGVuIHRoZXJlIGFyZSBubyBsb2NhdGlvbiBwYXJ0cyB0 aGUgdmFyaWFibGUgaGFzIGJlZW4gYWxyZWFkeQotLSAgICAgcmVtb3ZlZCBmcm9tIGhhc2ggdGFi bGUgYW5kIGEgbmV3IGVtcHR5IHZhcmlhYmxlIHdhcyBjcmVhdGVkLgotLSAgICAgRnJlZSB0aGUg ZW1wdHkgdmFyaWFibGUuICAqLwotLSAgaWYgKHZhci0+bl92YXJfcGFydHMgPT0gMCkKLS0gICAg ewotLSAgICAgIHBvb2xfZnJlZSAodmFyX3Bvb2wsIHZhcik7Ci0tICAgIH0KLS0KLSAgIC8qIENv bnRpbnVlIHRyYXZlcnNpbmcgdGhlIGhhc2ggdGFibGUuICAqLwotICAgcmV0dXJuIDE7Ci0gfQot QEAgLTI5MTAsNyArMzA2NCw3IEBAIGVtaXRfbm90ZXNfZm9yX2RpZmZlcmVuY2VzXzEgKHZvaWQg KipzbG8KLSAKLSAgICAgICBlbXB0eV92YXIgPSAodmFyaWFibGUpIHBvb2xfYWxsb2MgKHZhcl9w b29sKTsKLSAgICAgICBlbXB0eV92YXItPmRlY2wgPSBvbGRfdmFyLT5kZWNsOwotLSAgICAgIGVt cHR5X3Zhci0+cmVmY291bnQgPSAxOwotKyAgICAgIGVtcHR5X3Zhci0+cmVmY291bnQgPSAwOwot ICAgICAgIGVtcHR5X3Zhci0+bl92YXJfcGFydHMgPSAwOwotICAgICAgIHZhcmlhYmxlX3dhc19j aGFuZ2VkIChlbXB0eV92YXIsIE5VTEwpOwotICAgICB9Ci1AQCAtMjk1Miw4ICszMTA2LDEyIEBA IHN0YXRpYyB2b2lkCi0gZW1pdF9ub3Rlc19mb3JfZGlmZmVyZW5jZXMgKHJ0eCBpbnNuLCBkYXRh Zmxvd19zZXQgKm9sZF9zZXQsCi0gCQkJICAgIGRhdGFmbG93X3NldCAqbmV3X3NldCkKLSB7Ci0t ICBodGFiX3RyYXZlcnNlIChvbGRfc2V0LT52YXJzLCBlbWl0X25vdGVzX2Zvcl9kaWZmZXJlbmNl c18xLCBuZXdfc2V0LT52YXJzKTsKLS0gIGh0YWJfdHJhdmVyc2UgKG5ld19zZXQtPnZhcnMsIGVt aXRfbm90ZXNfZm9yX2RpZmZlcmVuY2VzXzIsIG9sZF9zZXQtPnZhcnMpOwotKyAgaHRhYl90cmF2 ZXJzZSAoc2hhcmVkX2hhc2hfaHRhYiAob2xkX3NldC0+dmFycyksCi0rCQkgZW1pdF9ub3Rlc19m b3JfZGlmZmVyZW5jZXNfMSwKLSsJCSBzaGFyZWRfaGFzaF9odGFiIChuZXdfc2V0LT52YXJzKSk7 Ci0rICBodGFiX3RyYXZlcnNlIChzaGFyZWRfaGFzaF9odGFiIChuZXdfc2V0LT52YXJzKSwKLSsJ CSBlbWl0X25vdGVzX2Zvcl9kaWZmZXJlbmNlc18yLAotKwkJIHNoYXJlZF9oYXNoX2h0YWIgKG9s ZF9zZXQtPnZhcnMpKTsKLSAgIGVtaXRfbm90ZXNfZm9yX2NoYW5nZXMgKGluc24sIEVNSVRfTk9U RV9CRUZPUkVfSU5TTik7Ci0gfQotIAotQEAgLTI5NjUsNyArMzEyMyw3IEBAIGVtaXRfbm90ZXNf aW5fYmIgKGJhc2ljX2Jsb2NrIGJiKQotICAgaW50IGk7Ci0gICBkYXRhZmxvd19zZXQgc2V0Owot IAotLSAgZGF0YWZsb3dfc2V0X2luaXQgKCZzZXQsIGh0YWJfZWxlbWVudHMgKFZUSSAoYmIpLT5p bi52YXJzKSArIDMpOwotKyAgZGF0YWZsb3dfc2V0X2luaXQgKCZzZXQpOwotICAgZGF0YWZsb3df c2V0X2NvcHkgKCZzZXQsICZWVEkgKGJiKS0+aW4pOwotIAotICAgZm9yIChpID0gMDsgaSA8IFZU SSAoYmIpLT5uX21vczsgaSsrKQotQEAgLTMwOTgsNyArMzI1Niw3IEBAIHZ0X2VtaXRfbm90ZXMg KHZvaWQpCi0gICAgICBkZWxldGVfdmFyaWFibGVfcGFydCkuICAqLwotICAgZW1pdF9ub3RlcyA9 IHRydWU7Ci0gCi0tICBkYXRhZmxvd19zZXRfaW5pdCAoJmVtcHR5LCA3KTsKLSsgIGRhdGFmbG93 X3NldF9pbml0ICgmZW1wdHkpOwotICAgbGFzdF9vdXQgPSAmZW1wdHk7Ci0gCi0gICBGT1JfRUFD SF9CQiAoYmIpCi1AQCAtMzM0MywxNCArMzUwMSw2IEBAIHZ0X2luaXRpYWxpemUgKHZvaWQpCi0g CX0KLSAgICAgfQotIAotLSAgLyogSW5pdCB0aGUgSU4gYW5kIE9VVCBzZXRzLiAgKi8KLS0gIEZP Ul9BTExfQkIgKGJiKQotLSAgICB7Ci0tICAgICAgVlRJIChiYiktPnZpc2l0ZWQgPSBmYWxzZTsK LS0gICAgICBkYXRhZmxvd19zZXRfaW5pdCAoJlZUSSAoYmIpLT5pbiwgNyk7Ci0tICAgICAgZGF0 YWZsb3dfc2V0X2luaXQgKCZWVEkgKGJiKS0+b3V0LCA3KTsKLS0gICAgfQotLQotICAgYXR0cnNf cG9vbCA9IGNyZWF0ZV9hbGxvY19wb29sICgiYXR0cnNfZGVmIHBvb2wiLAotIAkJCQkgIHNpemVv ZiAoc3RydWN0IGF0dHJzX2RlZiksIDEwMjQpOwotICAgdmFyX3Bvb2wgPSBjcmVhdGVfYWxsb2Nf cG9vbCAoInZhcmlhYmxlX2RlZiBwb29sIiwKLUBAIC0zMzU4LDggKzM1MDgsMjQgQEAgdnRfaW5p dGlhbGl6ZSAodm9pZCkKLSAgIGxvY19jaGFpbl9wb29sID0gY3JlYXRlX2FsbG9jX3Bvb2wgKCJs b2NhdGlvbl9jaGFpbl9kZWYgcG9vbCIsCi0gCQkJCSAgICAgIHNpemVvZiAoc3RydWN0IGxvY2F0 aW9uX2NoYWluX2RlZiksCi0gCQkJCSAgICAgIDEwMjQpOwotKyAgc2hhcmVkX2hhc2hfcG9vbCA9 IGNyZWF0ZV9hbGxvY19wb29sICgic2hhcmVkX2hhc2hfZGVmIHBvb2wiLAotKwkJCQkJc2l6ZW9m IChzdHJ1Y3Qgc2hhcmVkX2hhc2hfZGVmKSwgMjU2KTsKLSsgIGVtcHR5X3NoYXJlZF9oYXNoID0g KHNoYXJlZF9oYXNoKSBwb29sX2FsbG9jIChzaGFyZWRfaGFzaF9wb29sKTsKLSsgIGVtcHR5X3No YXJlZF9oYXNoLT5yZWZjb3VudCA9IDE7Ci0rICBlbXB0eV9zaGFyZWRfaGFzaC0+aHRhYgotKyAg ICA9IGh0YWJfY3JlYXRlICgxLCB2YXJpYWJsZV9odGFiX2hhc2gsIHZhcmlhYmxlX2h0YWJfZXEs Ci0rCQkgICB2YXJpYWJsZV9odGFiX2ZyZWUpOwotICAgY2hhbmdlZF92YXJpYWJsZXMgPSBodGFi X2NyZWF0ZSAoMTAsIHZhcmlhYmxlX2h0YWJfaGFzaCwgdmFyaWFibGVfaHRhYl9lcSwKLS0JCQkJ ICAgTlVMTCk7Ci0rCQkJCSAgIHZhcmlhYmxlX2h0YWJfZnJlZSk7Ci0rCi0rICAvKiBJbml0IHRo ZSBJTiBhbmQgT1VUIHNldHMuICAqLwotKyAgRk9SX0FMTF9CQiAoYmIpCi0rICAgIHsKLSsgICAg ICBWVEkgKGJiKS0+dmlzaXRlZCA9IGZhbHNlOwotKyAgICAgIGRhdGFmbG93X3NldF9pbml0ICgm VlRJIChiYiktPmluKTsKLSsgICAgICBkYXRhZmxvd19zZXRfaW5pdCAoJlZUSSAoYmIpLT5vdXQp OwotKyAgICB9Ci0rCi0gICB2dF9hZGRfZnVuY3Rpb25fcGFyYW1ldGVycyAoKTsKLSB9Ci0gCi1A QCAtMzM4MSwxMCArMzU0NywxMiBAQCB2dF9maW5hbGl6ZSAodm9pZCkKLSAgICAgICBkYXRhZmxv d19zZXRfZGVzdHJveSAoJlZUSSAoYmIpLT5vdXQpOwotICAgICB9Ci0gICBmcmVlX2F1eF9mb3Jf YmxvY2tzICgpOwotKyAgaHRhYl9kZWxldGUgKGVtcHR5X3NoYXJlZF9oYXNoLT5odGFiKTsKLSsg IGh0YWJfZGVsZXRlIChjaGFuZ2VkX3ZhcmlhYmxlcyk7Ci0gICBmcmVlX2FsbG9jX3Bvb2wgKGF0 dHJzX3Bvb2wpOwotICAgZnJlZV9hbGxvY19wb29sICh2YXJfcG9vbCk7Ci0gICBmcmVlX2FsbG9j X3Bvb2wgKGxvY19jaGFpbl9wb29sKTsKLS0gIGh0YWJfZGVsZXRlIChjaGFuZ2VkX3ZhcmlhYmxl cyk7Ci0rICBmcmVlX2FsbG9jX3Bvb2wgKHNoYXJlZF9oYXNoX3Bvb2wpOwotIH0KLSAKLSAvKiBU aGUgZW50cnkgcG9pbnQgdG8gdmFyaWFibGUgdHJhY2tpbmcgcGFzcy4gICovCi0tLS0gbGliaWJl cnR5L2hhc2h0YWIuYwkocmV2aXNpb24gMTQ4NzU4KQotKysrIGxpYmliZXJ0eS9oYXNodGFiLmMJ KHJldmlzaW9uIDE0ODc2MCkKLUBAIC03NTksNyArNzU5LDggQEAgaHRhYl90cmF2ZXJzZV9ub3Jl c2l6ZSAoaHRhYl90IGh0YWIsIGh0YQotIHZvaWQKLSBodGFiX3RyYXZlcnNlIChodGFiX3QgaHRh YiwgaHRhYl90cmF2IGNhbGxiYWNrLCBQVFIgaW5mbykKLSB7Ci0tICBpZiAoaHRhYl9lbGVtZW50 cyAoaHRhYikgKiA4IDwgaHRhYl9zaXplIChodGFiKSkKLSsgIHNpemVfdCBzaXplID0gaHRhYl9z aXplIChodGFiKTsKLSsgIGlmIChodGFiX2VsZW1lbnRzIChodGFiKSAqIDggPCBzaXplICYmIHNp emUgPiAzMikKLSAgICAgaHRhYl9leHBhbmQgKGh0YWIpOwotIAotICAgaHRhYl90cmF2ZXJzZV9u b3Jlc2l6ZSAoaHRhYiwgY2FsbGJhY2ssIGluZm8pOwoKZGlmZiAtLWdpdCBhL2djYzQ0LXJoNTAz ODE2LTIucGF0Y2ggYi9nY2M0NC1yaDUwMzgxNi0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA1ZWU0NTJhLi4wMDAwMDAwCi0tLSBhL2djYzQ0LXJoNTAzODE2LTIucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw0OTEgKzAsMCBAQAotMjAwOS0wNi0yMyAgSmFrdWIgSmVsaW5l ayAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQkqIHZhci10cmFja2luZy5jICh1bnNoYXJlX3Zhcmlh YmxlKTogRm9yY2UgaW5pdGlhbGl6ZWQgdG8KLQliZSBWQVJfSU5JVF9TVEFUVVNfSU5JVElBTEla RUQgdW5sZXNzIGZsYWdfdmFyX3RyYWNraW5nX3VuaW5pdC4KLQkoc2V0X3ZhcmlhYmxlX3BhcnQp OiBMaWtld2lzZS4KLQkoc3RydWN0IHZhcmlhYmxlX3VuaW9uX2luZm8pOiBSZW1vdmUgcG9zX3Ny YyBmaWVsZC4KLQkodnVpX3ZlYywgdnVpX2FsbG9jYXRlZCk6IE5ldyB2YXJpYWJsZXMuCi0JKHZh cmlhYmxlX3VuaW9uKTogUGFzcyBWQVJfSU5JVF9TVEFUVVNfVU5LTk9XTiB0byB1bnNoYXJlX3Zh cmlhYmxlCi0JdW5jb25kaXRpb25hbGx5LiAgQXZvaWQgWENWRUNORVcvZnJlZSBmb3IgZXZlcnkg c29ydGluZywgZm9yIGRzdF9sCi0JPT0gMSB1c2UgYSBzaW1wbGVyIHNvcnRpbmcgYWxnb3JpdGht LiAgQ29tcHV0ZSBwb3MgZmllbGQgcmlnaHQKLQlhd2F5LCBkb24ndCBmaWxsIGluIHBvc19zcmMu ICBGb3IgZHN0X2wgPT0gMiBhdm9pZCBxc29ydC4KLQlBdm9pZCBxdWFkcmF0aWMgY29tcGFyaXNv biBpZiAhZmxhZ192YXJfdHJhY2tpbmdfdW5pbml0LgotCSh2YXJpYWJsZV9jYW5vbmljYWxpemUp OiBQYXNzIFZBUl9JTklUX1NUQVRVU19VTktOT1dOIHRvCi0JdW5zaGFyZV92YXJpYWJsZSB1bmNv bmRpdGlvbmFsbHkuICAgCi0JKGRhdGFmbG93X3NldF9kaWZmZXJlbnRfMik6IFJlbW92ZWQuCi0J KGRhdGFmbG93X3NldF9kaWZmZXJlbnQpOiBEb24ndCB0cmF2ZXJzZSBzZWNvbmQgaGFzaCB0YWJs ZS4KLQkoY29tcHV0ZV9iYl9kYXRhZmxvdyk6IFBhc3MgVkFSX0lOSVRfU1RBVFVTX1VOSU5JVElB TElaRUQKLQl1bmNvbmRpdGlvbmFsbHkgdG8gdmFyX3JlZ19zZXQgb3IgdmFyX21lbV9zZXQuCi0J KGVtaXRfbm90ZXNfaW5fYmIpOiBMaWtld2lzZS4KLQkoZGVsZXRlX3ZhcmlhYmxlX3BhcnQpOiBQ YXNzIFZBUl9JTklUX1NUQVRVU19VTktOT1dOIHRvCi0JdW5zaGFyZV92YXJpYWJsZS4KLQkoZW1p dF9ub3RlX2luc25fdmFyX2xvY2F0aW9uKTogRG9uJ3Qgc2V0IGluaXRpYWxpemVkIHRvCi0JVkFS X0lOSVRfU1RBVFVTX0lOSVRJQUxJWkVEIGVhcmx5LgotCSh2dF9maW5hbGl6ZSk6IEZyZWUgdnVp X3ZlYyBpZiBuZWVkZWQsIGNsZWFyIHZ1aV92ZWMgYW5kCi0JdnVpX2FsbG9jYXRlZC4KLQotLS0t IGdjYy92YXItdHJhY2tpbmcuYwkocmV2aXNpb24gMTQ4ODUxKQotKysrIGdjYy92YXItdHJhY2tp bmcuYwkocmV2aXNpb24gMTQ4ODUyKQotQEAgLTM0Nyw3ICszNDcsNiBAQCBzdGF0aWMgdm9pZCBk YXRhZmxvd19zZXRfdW5pb24gKGRhdGFmbG93Ci0gc3RhdGljIGJvb2wgdmFyaWFibGVfcGFydF9k aWZmZXJlbnRfcCAodmFyaWFibGVfcGFydCAqLCB2YXJpYWJsZV9wYXJ0ICopOwotIHN0YXRpYyBi b29sIHZhcmlhYmxlX2RpZmZlcmVudF9wICh2YXJpYWJsZSwgdmFyaWFibGUsIGJvb2wpOwotIHN0 YXRpYyBpbnQgZGF0YWZsb3dfc2V0X2RpZmZlcmVudF8xICh2b2lkICoqLCB2b2lkICopOwotLXN0 YXRpYyBpbnQgZGF0YWZsb3dfc2V0X2RpZmZlcmVudF8yICh2b2lkICoqLCB2b2lkICopOwotIHN0 YXRpYyBib29sIGRhdGFmbG93X3NldF9kaWZmZXJlbnQgKGRhdGFmbG93X3NldCAqLCBkYXRhZmxv d19zZXQgKik7Ci0gc3RhdGljIHZvaWQgZGF0YWZsb3dfc2V0X2Rlc3Ryb3kgKGRhdGFmbG93X3Nl dCAqKTsKLSAKLUBAIC04NzgsNiArODc3LDkgQEAgdW5zaGFyZV92YXJpYWJsZSAoZGF0YWZsb3df c2V0ICpzZXQsIHZhcgotICAgdmFyLT5yZWZjb3VudC0tOwotICAgbmV3X3Zhci0+bl92YXJfcGFy dHMgPSB2YXItPm5fdmFyX3BhcnRzOwotIAotKyAgaWYgKCEgZmxhZ192YXJfdHJhY2tpbmdfdW5p bml0KQotKyAgICBpbml0aWFsaXplZCA9IFZBUl9JTklUX1NUQVRVU19JTklUSUFMSVpFRDsKLSsK LSAgIGZvciAoaSA9IDA7IGkgPCB2YXItPm5fdmFyX3BhcnRzOyBpKyspCi0gICAgIHsKLSAgICAg ICBsb2NhdGlvbl9jaGFpbiBub2RlOwotQEAgLTEyMDIsMTEgKzEyMDQsMTQgQEAgc3RydWN0IHZh cmlhYmxlX3VuaW9uX2luZm8KLSAgIC8qIFRoZSBzdW0gb2YgcG9zaXRpb25zIGluIHRoZSBpbnB1 dCBjaGFpbnMuICAqLwotICAgaW50IHBvczsKLSAKLS0gIC8qIFRoZSBwb3NpdGlvbiBpbiB0aGUg Y2hhaW5zIG9mIFNSQyBhbmQgRFNUIGRhdGFmbG93IHNldHMuICAqLwotLSAgaW50IHBvc19zcmM7 Ci0rICAvKiBUaGUgcG9zaXRpb24gaW4gdGhlIGNoYWluIG9mIERTVCBkYXRhZmxvdyBzZXQuICAq LwotICAgaW50IHBvc19kc3Q7Ci0gfTsKLSAKLSsvKiBCdWZmZXIgZm9yIGxvY2F0aW9uIGxpc3Qg c29ydGluZyBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KLStzdGF0aWMgc3RydWN0IHZhcmlh YmxlX3VuaW9uX2luZm8gKnZ1aV92ZWM7Ci0rc3RhdGljIGludCB2dWlfYWxsb2NhdGVkOwotKwot IC8qIENvbXBhcmUgZnVuY3Rpb24gZm9yIHFzb3J0LCBvcmRlciB0aGUgc3RydWN0dXJlcyBieSBQ T1MgZWxlbWVudC4gICovCi0gCi0gc3RhdGljIGludAotQEAgLTEyNjMsMTQgKzEyNjgsOSBAQCB2 YXJpYWJsZV91bmlvbiAodm9pZCAqKnNsb3QsIHZvaWQgKmRhdGEpCi0gCX0KLSAgICAgICBpZiAo ayA8IHNyYy0+bl92YXJfcGFydHMpCi0gCXsKLS0JICBlbnVtIHZhcl9pbml0X3N0YXR1cyBzdGF0 dXMgPSBWQVJfSU5JVF9TVEFUVVNfVU5LTk9XTjsKLS0JICAKLS0JICBpZiAoISBmbGFnX3Zhcl90 cmFja2luZ191bmluaXQpCi0tCSAgICBzdGF0dXMgPSBWQVJfSU5JVF9TVEFUVVNfSU5JVElBTEla RUQ7Ci0tCi0gCSAgaWYgKGRzdHApCi0gCSAgICAqZHN0cCA9ICh2b2lkICopIHNyYzsKLS0JICB1 bnNoYXJlX3ZhcmlhYmxlIChzZXQsIHNyYywgc3RhdHVzKTsKLSsJICB1bnNoYXJlX3ZhcmlhYmxl IChzZXQsIHNyYywgVkFSX0lOSVRfU1RBVFVTX1VOS05PV04pOwotIAl9Ci0gICAgICAgZWxzZQot IAl7Ci1AQCAtMTMxMSwxMyArMTMxMSw3IEBAIHZhcmlhYmxlX3VuaW9uICh2b2lkICoqc2xvdCwg dm9pZCAqZGF0YSkKLSAKLSAgIGlmICgoZHN0LT5yZWZjb3VudCA+IDEgfHwgc2hhcmVkX2hhc2hf c2hhcmVkIChzZXQtPnZhcnMpKQotICAgICAgICYmIGRzdC0+bl92YXJfcGFydHMgIT0gaykKLS0g ICAgewotLSAgICAgIGVudW0gdmFyX2luaXRfc3RhdHVzIHN0YXR1cyA9IFZBUl9JTklUX1NUQVRV U19VTktOT1dOOwotLSAgICAgIAotLSAgICAgIGlmICghIGZsYWdfdmFyX3RyYWNraW5nX3VuaW5p dCkKLS0Jc3RhdHVzID0gVkFSX0lOSVRfU1RBVFVTX0lOSVRJQUxJWkVEOwotLSAgICAgIGRzdCA9 IHVuc2hhcmVfdmFyaWFibGUgKHNldCwgZHN0LCBzdGF0dXMpOwotLSAgICB9Ci0rICAgIGRzdCA9 IHVuc2hhcmVfdmFyaWFibGUgKHNldCwgZHN0LCBWQVJfSU5JVF9TVEFUVVNfVU5LTk9XTik7Ci0g Ci0gICBpID0gc3JjLT5uX3Zhcl9wYXJ0cyAtIDE7Ci0gICBqID0gZHN0LT5uX3Zhcl9wYXJ0cyAt IDE7Ci1AQCAtMTM2Niw3MCArMTM2MCwxNTIgQEAgdmFyaWFibGVfdW5pb24gKHZvaWQgKipzbG90 LCB2b2lkICpkYXRhKQotIAkgIGRzdF9sID0gMDsKLSAJICBmb3IgKG5vZGUgPSBkc3QtPnZhcl9w YXJ0W2pdLmxvY19jaGFpbjsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHQpCi0gCSAgICBkc3RfbCsr OwotLQkgIHZ1aSA9IFhDTkVXVkVDIChzdHJ1Y3QgdmFyaWFibGVfdW5pb25faW5mbywgc3JjX2wg KyBkc3RfbCk7Ci0gCi0tCSAgLyogRmlsbCBpbiB0aGUgbG9jYXRpb25zIGZyb20gRFNULiAgKi8K LS0JICBmb3IgKG5vZGUgPSBkc3QtPnZhcl9wYXJ0W2pdLmxvY19jaGFpbiwgamogPSAwOyBub2Rl OwotLQkgICAgICAgbm9kZSA9IG5vZGUtPm5leHQsIGpqKyspCi0rCSAgaWYgKGRzdF9sID09IDEp Ci0gCSAgICB7Ci0tCSAgICAgIHZ1aVtqal0ubGMgPSBub2RlOwotLQkgICAgICB2dWlbampdLnBv c19kc3QgPSBqajsKLSsJICAgICAgLyogVGhlIG1vc3QgY29tbW9uIGNhc2UsIG11Y2ggc2ltcGxl ciwgbm8gcXNvcnQgaXMgbmVlZGVkLiAgKi8KLSsJICAgICAgbG9jYXRpb25fY2hhaW4gZHN0bm9k ZSA9IGRzdC0+dmFyX3BhcnRbal0ubG9jX2NoYWluOwotKwkgICAgICBkc3QtPnZhcl9wYXJ0W2td LmxvY19jaGFpbiA9IGRzdG5vZGU7Ci0rCSAgICAgIGRzdC0+dmFyX3BhcnRba10ub2Zmc2V0ID0g ZHN0LT52YXJfcGFydFtqXS5vZmZzZXQ7Ci0rCSAgICAgIG5vZGUyID0gZHN0bm9kZTsKLSsJICAg ICAgZm9yIChub2RlID0gc3JjLT52YXJfcGFydFtpXS5sb2NfY2hhaW47IG5vZGU7IG5vZGUgPSBu b2RlLT5uZXh0KQotKwkJaWYgKCEoKFJFR19QIChkc3Rub2RlLT5sb2MpCi0rCQkgICAgICAgJiYg UkVHX1AgKG5vZGUtPmxvYykKLSsJCSAgICAgICAmJiBSRUdOTyAoZHN0bm9kZS0+bG9jKSA9PSBS RUdOTyAobm9kZS0+bG9jKSkKLSsJCSAgICAgIHx8IHJ0eF9lcXVhbF9wIChkc3Rub2RlLT5sb2Ms IG5vZGUtPmxvYykpKQotKwkJICB7Ci0rCQkgICAgbG9jYXRpb25fY2hhaW4gbmV3X25vZGU7Ci0g Ci0tCSAgICAgIC8qIFZhbHVlIGxhcmdlciB0aGFuIGEgc3VtIG9mIDIgdmFsaWQgcG9zaXRpb25z LiAgKi8KLS0JICAgICAgdnVpW2pqXS5wb3Nfc3JjID0gc3JjX2wgKyBkc3RfbDsKLSsJCSAgICAv KiBDb3B5IHRoZSBsb2NhdGlvbiBmcm9tIFNSQy4gICovCi0rCQkgICAgbmV3X25vZGUgPSAobG9j YXRpb25fY2hhaW4pIHBvb2xfYWxsb2MgKGxvY19jaGFpbl9wb29sKTsKLSsJCSAgICBuZXdfbm9k ZS0+bG9jID0gbm9kZS0+bG9jOwotKwkJICAgIG5ld19ub2RlLT5pbml0ID0gbm9kZS0+aW5pdDsK LSsJCSAgICBpZiAoIW5vZGUtPnNldF9zcmMgfHwgTUVNX1AgKG5vZGUtPnNldF9zcmMpKQotKwkJ ICAgICAgbmV3X25vZGUtPnNldF9zcmMgPSBOVUxMOwotKwkJICAgIGVsc2UKLSsJCSAgICAgIG5l d19ub2RlLT5zZXRfc3JjID0gbm9kZS0+c2V0X3NyYzsKLSsJCSAgICBub2RlMi0+bmV4dCA9IG5l d19ub2RlOwotKwkJICAgIG5vZGUyID0gbmV3X25vZGU7Ci0rCQkgIH0KLSsJICAgICAgbm9kZTIt Pm5leHQgPSBOVUxMOwotIAkgICAgfQotLQotLQkgIC8qIEZpbGwgaW4gdGhlIGxvY2F0aW9ucyBm cm9tIFNSQy4gICovCi0tCSAgbiA9IGRzdF9sOwotLQkgIGZvciAobm9kZSA9IHNyYy0+dmFyX3Bh cnRbaV0ubG9jX2NoYWluLCBpaSA9IDA7IG5vZGU7Ci0tCSAgICAgICBub2RlID0gbm9kZS0+bmV4 dCwgaWkrKykKLSsJICBlbHNlCi0gCSAgICB7Ci0tCSAgICAgIC8qIEZpbmQgbG9jYXRpb24gZnJv bSBOT0RFLiAgKi8KLS0JICAgICAgZm9yIChqaiA9IDA7IGpqIDwgZHN0X2w7IGpqKyspCi0rCSAg ICAgIGlmIChzcmNfbCArIGRzdF9sID4gdnVpX2FsbG9jYXRlZCkKLSAJCXsKLS0JCSAgaWYgKChS RUdfUCAodnVpW2pqXS5sYy0+bG9jKQotLQkJICAgICAgICYmIFJFR19QIChub2RlLT5sb2MpCi0t CQkgICAgICAgJiYgUkVHTk8gKHZ1aVtqal0ubGMtPmxvYykgPT0gUkVHTk8gKG5vZGUtPmxvYykp Ci0tCQkgICAgICB8fCBydHhfZXF1YWxfcCAodnVpW2pqXS5sYy0+bG9jLCBub2RlLT5sb2MpKQot LQkJICAgIHsKLS0JCSAgICAgIHZ1aVtqal0ucG9zX3NyYyA9IGlpOwotLQkJICAgICAgYnJlYWs7 Ci0tCQkgICAgfQotKwkJICB2dWlfYWxsb2NhdGVkID0gTUFYICh2dWlfYWxsb2NhdGVkICogMiwg c3JjX2wgKyBkc3RfbCk7Ci0rCQkgIHZ1aV92ZWMgPSBYUkVTSVpFVkVDIChzdHJ1Y3QgdmFyaWFi bGVfdW5pb25faW5mbywgdnVpX3ZlYywKLSsJCQkJCXZ1aV9hbGxvY2F0ZWQpOwotIAkJfQotLQkg ICAgICBpZiAoamogPj0gZHN0X2wpCS8qIFRoZSBsb2NhdGlvbiBoYXMgbm90IGJlZW4gZm91bmQu ICAqLwotKwkgICAgICB2dWkgPSB2dWlfdmVjOwotKwotKwkgICAgICAvKiBGaWxsIGluIHRoZSBs b2NhdGlvbnMgZnJvbSBEU1QuICAqLwotKwkgICAgICBmb3IgKG5vZGUgPSBkc3QtPnZhcl9wYXJ0 W2pdLmxvY19jaGFpbiwgamogPSAwOyBub2RlOwotKwkJICAgbm9kZSA9IG5vZGUtPm5leHQsIGpq KyspCi0gCQl7Ci0tCQkgIGxvY2F0aW9uX2NoYWluIG5ld19ub2RlOwotKwkJICB2dWlbampdLmxj ID0gbm9kZTsKLSsJCSAgdnVpW2pqXS5wb3NfZHN0ID0gamo7Ci0gCi0tCQkgIC8qIENvcHkgdGhl IGxvY2F0aW9uIGZyb20gU1JDLiAgKi8KLS0JCSAgbmV3X25vZGUgPSAobG9jYXRpb25fY2hhaW4p IHBvb2xfYWxsb2MgKGxvY19jaGFpbl9wb29sKTsKLS0JCSAgbmV3X25vZGUtPmxvYyA9IG5vZGUt PmxvYzsKLS0JCSAgbmV3X25vZGUtPmluaXQgPSBub2RlLT5pbml0OwotLQkJICBpZiAoIW5vZGUt PnNldF9zcmMgfHwgTUVNX1AgKG5vZGUtPnNldF9zcmMpKQotLQkJICAgIG5ld19ub2RlLT5zZXRf c3JjID0gTlVMTDsKLS0JCSAgZWxzZQotLQkJICAgIG5ld19ub2RlLT5zZXRfc3JjID0gbm9kZS0+ c2V0X3NyYzsKLS0JCSAgdnVpW25dLmxjID0gbmV3X25vZGU7Ci0tCQkgIHZ1aVtuXS5wb3Nfc3Jj ID0gaWk7Ci0tCQkgIHZ1aVtuXS5wb3NfZHN0ID0gc3JjX2wgKyBkc3RfbDsKLS0JCSAgbisrOwot KwkJICAvKiBQb3MgcGx1cyB2YWx1ZSBsYXJnZXIgdGhhbiBhIHN1bSBvZiAyIHZhbGlkIHBvc2l0 aW9ucy4gICovCi0rCQkgIHZ1aVtqal0ucG9zID0gamogKyBzcmNfbCArIGRzdF9sOwotIAkJfQot LQkgICAgfQotIAotLQkgIGZvciAoaWkgPSAwOyBpaSA8IHNyY19sICsgZHN0X2w7IGlpKyspCi0t CSAgICB2dWlbaWldLnBvcyA9IHZ1aVtpaV0ucG9zX3NyYyArIHZ1aVtpaV0ucG9zX2RzdDsKLSsJ ICAgICAgLyogRmlsbCBpbiB0aGUgbG9jYXRpb25zIGZyb20gU1JDLiAgKi8KLSsJICAgICAgbiA9 IGRzdF9sOwotKwkgICAgICBmb3IgKG5vZGUgPSBzcmMtPnZhcl9wYXJ0W2ldLmxvY19jaGFpbiwg aWkgPSAwOyBub2RlOwotKwkJICAgbm9kZSA9IG5vZGUtPm5leHQsIGlpKyspCi0rCQl7Ci0rCQkg IC8qIEZpbmQgbG9jYXRpb24gZnJvbSBOT0RFLiAgKi8KLSsJCSAgZm9yIChqaiA9IDA7IGpqIDwg ZHN0X2w7IGpqKyspCi0rCQkgICAgewotKwkJICAgICAgaWYgKChSRUdfUCAodnVpW2pqXS5sYy0+ bG9jKQotKwkJCSAgICYmIFJFR19QIChub2RlLT5sb2MpCi0rCQkJICAgJiYgUkVHTk8gKHZ1aVtq al0ubGMtPmxvYykgPT0gUkVHTk8gKG5vZGUtPmxvYykpCi0rCQkJICB8fCBydHhfZXF1YWxfcCAo dnVpW2pqXS5sYy0+bG9jLCBub2RlLT5sb2MpKQotKwkJCXsKLSsJCQkgIHZ1aVtqal0ucG9zID0g amogKyBpaTsKLSsJCQkgIGJyZWFrOwotKwkJCX0KLSsJCSAgICB9Ci0rCQkgIGlmIChqaiA+PSBk c3RfbCkJLyogVGhlIGxvY2F0aW9uIGhhcyBub3QgYmVlbiBmb3VuZC4gICovCi0rCQkgICAgewot KwkJICAgICAgbG9jYXRpb25fY2hhaW4gbmV3X25vZGU7Ci0gCi0tCSAgcXNvcnQgKHZ1aSwgbiwg c2l6ZW9mIChzdHJ1Y3QgdmFyaWFibGVfdW5pb25faW5mbyksCi0tCQkgdmFyaWFibGVfdW5pb25f aW5mb19jbXBfcG9zKTsKLSsJCSAgICAgIC8qIENvcHkgdGhlIGxvY2F0aW9uIGZyb20gU1JDLiAg Ki8KLSsJCSAgICAgIG5ld19ub2RlID0gKGxvY2F0aW9uX2NoYWluKSBwb29sX2FsbG9jIChsb2Nf Y2hhaW5fcG9vbCk7Ci0rCQkgICAgICBuZXdfbm9kZS0+bG9jID0gbm9kZS0+bG9jOwotKwkJICAg ICAgbmV3X25vZGUtPmluaXQgPSBub2RlLT5pbml0OwotKwkJICAgICAgaWYgKCFub2RlLT5zZXRf c3JjIHx8IE1FTV9QIChub2RlLT5zZXRfc3JjKSkKLSsJCQluZXdfbm9kZS0+c2V0X3NyYyA9IE5V TEw7Ci0rCQkgICAgICBlbHNlCi0rCQkJbmV3X25vZGUtPnNldF9zcmMgPSBub2RlLT5zZXRfc3Jj OwotKwkJICAgICAgdnVpW25dLmxjID0gbmV3X25vZGU7Ci0rCQkgICAgICB2dWlbbl0ucG9zX2Rz dCA9IHNyY19sICsgZHN0X2w7Ci0rCQkgICAgICB2dWlbbl0ucG9zID0gaWkgKyBzcmNfbCArIGRz dF9sOwotKwkJICAgICAgbisrOwotKwkJICAgIH0KLSsJCX0KLSAKLS0JICAvKiBSZWNvbm5lY3Qg dGhlIG5vZGVzIGluIHNvcnRlZCBvcmRlci4gICovCi0tCSAgZm9yIChpaSA9IDE7IGlpIDwgbjsg aWkrKykKLS0JICAgIHZ1aVtpaSAtIDFdLmxjLT5uZXh0ID0gdnVpW2lpXS5sYzsKLS0JICB2dWlb biAtIDFdLmxjLT5uZXh0ID0gTlVMTDsKLSsJICAgICAgaWYgKGRzdF9sID09IDIpCi0rCQl7Ci0r CQkgIC8qIFNwZWNpYWwgY2FzZSBzdGlsbCB2ZXJ5IGNvbW1vbiBjYXNlLiAgRm9yIGRzdF9sID09 IDIKLSsJCSAgICAgYWxsIGVudHJpZXMgZHN0X2wgLi4uIG4tMSBhcmUgc29ydGVkLCB3aXRoIGZv ciBpID49IGRzdF9sCi0rCQkgICAgIHZ1aVtpXS5wb3MgPT0gaSArIHNyY19sICsgZHN0X2wuICAq LwotKwkJICBpZiAodnVpWzBdLnBvcyA+IHZ1aVsxXS5wb3MpCi0rCQkgICAgewotKwkJICAgICAg LyogT3JkZXIgc2hvdWxkIGJlIDEsIDAsIDIuLi4gKi8KLSsJCSAgICAgIGRzdC0+dmFyX3BhcnRb a10ubG9jX2NoYWluID0gdnVpWzFdLmxjOwotKwkJICAgICAgdnVpWzFdLmxjLT5uZXh0ID0gdnVp WzBdLmxjOwotKwkJICAgICAgaWYgKG4gPj0gMykKLSsJCQl7Ci0rCQkJICB2dWlbMF0ubGMtPm5l eHQgPSB2dWlbMl0ubGM7Ci0rCQkJICB2dWlbbiAtIDFdLmxjLT5uZXh0ID0gTlVMTDsKLSsJCQl9 Ci0rCQkgICAgICBlbHNlCi0rCQkJdnVpWzBdLmxjLT5uZXh0ID0gTlVMTDsKLSsJCSAgICAgIGlp ID0gMzsKLSsJCSAgICB9Ci0rCQkgIGVsc2UKLSsJCSAgICB7Ci0rCQkgICAgICBkc3QtPnZhcl9w YXJ0W2tdLmxvY19jaGFpbiA9IHZ1aVswXS5sYzsKLSsJCSAgICAgIGlmIChuID49IDMgJiYgdnVp WzJdLnBvcyA8IHZ1aVsxXS5wb3MpCi0rCQkJewotKwkJCSAgLyogT3JkZXIgc2hvdWxkIGJlIDAs IDIsIDEsIDMuLi4gKi8KLSsJCQkgIHZ1aVswXS5sYy0+bmV4dCA9IHZ1aVsyXS5sYzsKLSsJCQkg IHZ1aVsyXS5sYy0+bmV4dCA9IHZ1aVsxXS5sYzsKLSsJCQkgIGlmIChuID49IDQpCi0rCQkJICAg IHsKLSsJCQkgICAgICB2dWlbMV0ubGMtPm5leHQgPSB2dWlbM10ubGM7Ci0rCQkJICAgICAgdnVp W24gLSAxXS5sYy0+bmV4dCA9IE5VTEw7Ci0rCQkJICAgIH0KLSsJCQkgIGVsc2UKLSsJCQkgICAg dnVpWzFdLmxjLT5uZXh0ID0gTlVMTDsKLSsJCQkgIGlpID0gNDsKLSsJCQl9Ci0rCQkgICAgICBl bHNlCi0rCQkJewotKwkJCSAgLyogT3JkZXIgc2hvdWxkIGJlIDAsIDEsIDIuLi4gKi8KLSsJCQkg IGlpID0gMTsKLSsJCQkgIHZ1aVtuIC0gMV0ubGMtPm5leHQgPSBOVUxMOwotKwkJCX0KLSsJCSAg ICB9Ci0rCQkgIGZvciAoOyBpaSA8IG47IGlpKyspCi0rCQkgICAgdnVpW2lpIC0gMV0ubGMtPm5l eHQgPSB2dWlbaWldLmxjOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIHFzb3J0ICh2 dWksIG4sIHNpemVvZiAoc3RydWN0IHZhcmlhYmxlX3VuaW9uX2luZm8pLAotKwkJCSB2YXJpYWJs ZV91bmlvbl9pbmZvX2NtcF9wb3MpOwotIAotLQkgIGRzdC0+dmFyX3BhcnRba10ubG9jX2NoYWlu ID0gdnVpWzBdLmxjOwotLQkgIGRzdC0+dmFyX3BhcnRba10ub2Zmc2V0ID0gZHN0LT52YXJfcGFy dFtqXS5vZmZzZXQ7Ci0rCQkgIC8qIFJlY29ubmVjdCB0aGUgbm9kZXMgaW4gc29ydGVkIG9yZGVy LiAgKi8KLSsJCSAgZm9yIChpaSA9IDE7IGlpIDwgbjsgaWkrKykKLSsJCSAgICB2dWlbaWkgLSAx XS5sYy0+bmV4dCA9IHZ1aVtpaV0ubGM7Ci0rCQkgIHZ1aVtuIC0gMV0ubGMtPm5leHQgPSBOVUxM OwotKwkJICBkc3QtPnZhcl9wYXJ0W2tdLmxvY19jaGFpbiA9IHZ1aVswXS5sYzsKLSsJCX0KLSAK LS0JICBmcmVlICh2dWkpOwotKwkgICAgICBkc3QtPnZhcl9wYXJ0W2tdLm9mZnNldCA9IGRzdC0+ dmFyX3BhcnRbal0ub2Zmc2V0OwotKwkgICAgfQotIAkgIGktLTsKLSAJICBqLS07Ci0gCX0KLUBA IC0xNDc3LDE3ICsxNTUzLDE4IEBAIHZhcmlhYmxlX3VuaW9uICh2b2lkICoqc2xvdCwgdm9pZCAq ZGF0YSkKLSAJZHN0LT52YXJfcGFydFtrXS5jdXJfbG9jID0gTlVMTDsKLSAgICAgfQotIAotLSAg Zm9yIChpID0gMDsgaSA8IHNyYy0+bl92YXJfcGFydHMgJiYgaSA8IGRzdC0+bl92YXJfcGFydHM7 IGkrKykKLS0gICAgewotLSAgICAgIGxvY2F0aW9uX2NoYWluIG5vZGUsIG5vZGUyOwotLSAgICAg IGZvciAobm9kZSA9IHNyYy0+dmFyX3BhcnRbaV0ubG9jX2NoYWluOyBub2RlOyBub2RlID0gbm9k ZS0+bmV4dCkKLS0JZm9yIChub2RlMiA9IGRzdC0+dmFyX3BhcnRbaV0ubG9jX2NoYWluOyBub2Rl Mjsgbm9kZTIgPSBub2RlMi0+bmV4dCkKLS0JICBpZiAocnR4X2VxdWFsX3AgKG5vZGUtPmxvYywg bm9kZTItPmxvYykpCi0tCSAgICB7Ci0tCSAgICAgIGlmIChub2RlLT5pbml0ID4gbm9kZTItPmlu aXQpCi0tCQlub2RlMi0+aW5pdCA9IG5vZGUtPmluaXQ7Ci0tCSAgICB9Ci0tICAgIH0KLSsgIGlm IChmbGFnX3Zhcl90cmFja2luZ191bmluaXQpCi0rICAgIGZvciAoaSA9IDA7IGkgPCBzcmMtPm5f dmFyX3BhcnRzICYmIGkgPCBkc3QtPm5fdmFyX3BhcnRzOyBpKyspCi0rICAgICAgewotKwlsb2Nh dGlvbl9jaGFpbiBub2RlLCBub2RlMjsKLSsJZm9yIChub2RlID0gc3JjLT52YXJfcGFydFtpXS5s b2NfY2hhaW47IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0KQotKwkgIGZvciAobm9kZTIgPSBkc3Qt PnZhcl9wYXJ0W2ldLmxvY19jaGFpbjsgbm9kZTI7IG5vZGUyID0gbm9kZTItPm5leHQpCi0rCSAg ICBpZiAocnR4X2VxdWFsX3AgKG5vZGUtPmxvYywgbm9kZTItPmxvYykpCi0rCSAgICAgIHsKLSsJ CWlmIChub2RlLT5pbml0ID4gbm9kZTItPmluaXQpCi0rCQkgIG5vZGUyLT5pbml0ID0gbm9kZS0+ aW5pdDsKLSsJICAgICAgfQotKyAgICAgIH0KLSAKLSAgIC8qIENvbnRpbnVlIHRyYXZlcnNpbmcg dGhlIGhhc2ggdGFibGUuICAqLwotICAgcmV0dXJuIDE7Ci1AQCAtMTUyMiwxNCArMTU5OSw3IEBA IHZhcmlhYmxlX2Nhbm9uaWNhbGl6ZSAodm9pZCAqKnNsb3QsIHZvaWQKLSAJfQotICAgICB9Ci0g ICBpZiAoayA8IHNyYy0+bl92YXJfcGFydHMpCi0tICAgIHsKLS0gICAgICBlbnVtIHZhcl9pbml0 X3N0YXR1cyBzdGF0dXMgPSBWQVJfSU5JVF9TVEFUVVNfVU5LTk9XTjsKLS0KLS0gICAgICBpZiAo ISBmbGFnX3Zhcl90cmFja2luZ191bmluaXQpCi0tCXN0YXR1cyA9IFZBUl9JTklUX1NUQVRVU19J TklUSUFMSVpFRDsKLS0KLS0gICAgICB1bnNoYXJlX3ZhcmlhYmxlIChzZXQsIHNyYywgc3RhdHVz KTsKLS0gICAgfQotKyAgICB1bnNoYXJlX3ZhcmlhYmxlIChzZXQsIHNyYywgVkFSX0lOSVRfU1RB VFVTX1VOS05PV04pOwotICAgcmV0dXJuIDE7Ci0gfQotIAotQEAgLTE2NTAsMzQgKzE3MjAsNiBA QCBkYXRhZmxvd19zZXRfZGlmZmVyZW50XzEgKHZvaWQgKipzbG90LCB2Ci0gICByZXR1cm4gMTsK LSB9Ci0gCi0tLyogQ29tcGFyZSB2YXJpYWJsZSAqU0xPVCB3aXRoIHRoZSBzYW1lIHZhcmlhYmxl IGluIGhhc2ggdGFibGUgREFUQQotLSAgIGFuZCBzZXQgREFUQUZMT1dfU0VUX0RJRkZFUkVOVF9W QUxVRSBpZiB0aGV5IGFyZSBkaWZmZXJlbnQuICAqLwotLQotLXN0YXRpYyBpbnQKLS1kYXRhZmxv d19zZXRfZGlmZmVyZW50XzIgKHZvaWQgKipzbG90LCB2b2lkICpkYXRhKQotLXsKLS0gIGh0YWJf dCBodGFiID0gKGh0YWJfdCkgZGF0YTsKLS0gIHZhcmlhYmxlIHZhcjEsIHZhcjI7Ci0tCi0tICB2 YXIxID0gKih2YXJpYWJsZSAqKSBzbG90OwotLSAgdmFyMiA9ICh2YXJpYWJsZSkgaHRhYl9maW5k X3dpdGhfaGFzaCAoaHRhYiwgdmFyMS0+ZGVjbCwKLS0JCQkgICAgICBWQVJJQUJMRV9IQVNIX1ZB TCAodmFyMS0+ZGVjbCkpOwotLSAgaWYgKCF2YXIyKQotLSAgICB7Ci0tICAgICAgZGF0YWZsb3df c2V0X2RpZmZlcmVudF92YWx1ZSA9IHRydWU7Ci0tCi0tICAgICAgLyogU3RvcCB0cmF2ZXJzaW5n IHRoZSBoYXNoIHRhYmxlLiAgKi8KLS0gICAgICByZXR1cm4gMDsKLS0gICAgfQotLQotLSAgLyog SWYgYm90aCB2YXJpYWJsZXMgYXJlIGRlZmluZWQgdGhleSBoYXZlIGJlZW4gYWxyZWFkeSBjaGVj a2VkIGZvcgotLSAgICAgZXF1aXZhbGVuY2UuICAqLwotLSAgZ2NjX2Fzc2VydCAoIXZhcmlhYmxl X2RpZmZlcmVudF9wICh2YXIxLCB2YXIyLCBmYWxzZSkpOwotLQotLSAgLyogQ29udGludWUgdHJh dmVyc2luZyB0aGUgaGFzaCB0YWJsZS4gICovCi0tICByZXR1cm4gMTsKLS19Ci0tCi0gLyogUmV0 dXJuIHRydWUgaWYgZGF0YWZsb3cgc2V0cyBPTERfU0VUIGFuZCBORVdfU0VUIGRpZmZlci4gICov Ci0gCi0gc3RhdGljIGJvb2wKLUBAIC0xNjk0LDE0ICsxNzM2LDkgQEAgZGF0YWZsb3dfc2V0X2Rp ZmZlcmVudCAoZGF0YWZsb3dfc2V0ICpvbAotIAotICAgaHRhYl90cmF2ZXJzZSAoc2hhcmVkX2hh c2hfaHRhYiAob2xkX3NldC0+dmFycyksIGRhdGFmbG93X3NldF9kaWZmZXJlbnRfMSwKLSAJCSBz aGFyZWRfaGFzaF9odGFiIChuZXdfc2V0LT52YXJzKSk7Ci0tICBpZiAoIWRhdGFmbG93X3NldF9k aWZmZXJlbnRfdmFsdWUpCi0tICAgIHsKLS0gICAgICAvKiBXZSBoYXZlIGNvbXBhcmVkIHRoZSB2 YXJpYWJsZXMgd2hpY2ggYXJlIGluIGJvdGggaGFzaCB0YWJsZXMKLS0JIHNvIG5vdyBvbmx5IGNo ZWNrIHdoZXRoZXIgdGhlcmUgYXJlIHNvbWUgdmFyaWFibGVzIGluIE5FV19TRVQtPlZBUlMKLS0J IHdoaWNoIGFyZSBub3QgaW4gT0xEX1NFVC0+VkFSUy4gICovCi0tICAgICAgaHRhYl90cmF2ZXJz ZSAoc2hhcmVkX2hhc2hfaHRhYiAobmV3X3NldC0+dmFycyksIGRhdGFmbG93X3NldF9kaWZmZXJl bnRfMiwKLS0JCSAgICAgc2hhcmVkX2hhc2hfaHRhYiAob2xkX3NldC0+dmFycykpOwotLSAgICB9 Ci0rICAvKiBObyBuZWVkIHRvIHRyYXZlcnNlIHRoZSBzZWNvbmQgaGFzaHRhYiwgaWYgYm90aCBo YXZlIHRoZSBzYW1lIG51bWJlcgotKyAgICAgb2YgZWxlbWVudHMgYW5kIHRoZSBzZWNvbmQgb25l IGhhZCBhbGwgZW50cmllcyBmb3VuZCBpbiB0aGUgZmlyc3Qgb25lLAotKyAgICAgdGhlbiBpdCBj YW4ndCBoYXZlIGFueSBleHRyYSBlbnRyaWVzLiAgKi8KLSAgIHJldHVybiBkYXRhZmxvd19zZXRf ZGlmZmVyZW50X3ZhbHVlOwotIH0KLSAKLUBAIC0yMjE1LDE1ICsyMjUyLDExIEBAIGNvbXB1dGVf YmJfZGF0YWZsb3cgKGJhc2ljX2Jsb2NrIGJiKQotIAkgIGNhc2UgTU9fVVNFOgotIAkgICAgewot IAkgICAgICBydHggbG9jID0gVlRJIChiYiktPm1vc1tpXS51LmxvYzsKLS0JICAgICAgZW51bSB2 YXJfaW5pdF9zdGF0dXMgc3RhdHVzID0gVkFSX0lOSVRfU1RBVFVTX1VOSU5JVElBTElaRUQ7Ci0t Ci0tCSAgICAgIGlmICghIGZsYWdfdmFyX3RyYWNraW5nX3VuaW5pdCkKLS0JCXN0YXR1cyA9IFZB Ul9JTklUX1NUQVRVU19JTklUSUFMSVpFRDsKLSAKLSAJICAgICAgaWYgKEdFVF9DT0RFIChsb2Mp ID09IFJFRykKLS0JCXZhcl9yZWdfc2V0IChvdXQsIGxvYywgc3RhdHVzLCBOVUxMKTsKLSsJCXZh cl9yZWdfc2V0IChvdXQsIGxvYywgVkFSX0lOSVRfU1RBVFVTX1VOSU5JVElBTElaRUQsIE5VTEwp OwotIAkgICAgICBlbHNlIGlmIChHRVRfQ09ERSAobG9jKSA9PSBNRU0pCi0tCQl2YXJfbWVtX3Nl dCAob3V0LCBsb2MsIHN0YXR1cywgTlVMTCk7Ci0rCQl2YXJfbWVtX3NldCAob3V0LCBsb2MsIFZB Ul9JTklUX1NUQVRVU19VTklOSVRJQUxJWkVELCBOVUxMKTsKLSAJICAgIH0KLSAJICAgIGJyZWFr OwotIAotQEAgLTIyNjIsMTAgKzIyOTUsMTIgQEAgY29tcHV0ZV9iYl9kYXRhZmxvdyAoYmFzaWNf YmxvY2sgYmIpCi0gCSAgICAgIGlmICghIGZsYWdfdmFyX3RyYWNraW5nX3VuaW5pdCkKLSAJCXNy Y19zdGF0dXMgPSBWQVJfSU5JVF9TVEFUVVNfSU5JVElBTElaRUQ7Ci0gCSAgICAgIGVsc2UKLS0J CXNyY19zdGF0dXMgPSBmaW5kX3NyY19zdGF0dXMgKGluLCBzZXRfc3JjKTsKLSsJCXsKLSsJCSAg c3JjX3N0YXR1cyA9IGZpbmRfc3JjX3N0YXR1cyAoaW4sIHNldF9zcmMpOwotIAotLQkgICAgICBp ZiAoc3JjX3N0YXR1cyA9PSBWQVJfSU5JVF9TVEFUVVNfVU5LTk9XTikKLS0JCXNyY19zdGF0dXMg PSBmaW5kX3NyY19zdGF0dXMgKG91dCwgc2V0X3NyYyk7Ci0rCQkgIGlmIChzcmNfc3RhdHVzID09 IFZBUl9JTklUX1NUQVRVU19VTktOT1dOKQotKwkJICAgIHNyY19zdGF0dXMgPSBmaW5kX3NyY19z dGF0dXMgKG91dCwgc2V0X3NyYyk7Ci0rCQl9Ci0gCi0gCSAgICAgIHNldF9zcmMgPSBmaW5kX3Ny Y19zZXRfc3JjIChpbiwgc2V0X3NyYyk7Ci0gCi1AQCAtMjYwOSw2ICsyNjQ0LDkgQEAgc2V0X3Zh cmlhYmxlX3BhcnQgKGRhdGFmbG93X3NldCAqc2V0LCBydAotICAgdmFyaWFibGUgdmFyOwotICAg dm9pZCAqKnNsb3QgPSBzaGFyZWRfaGFzaF9maW5kX3Nsb3QgKHNldC0+dmFycywgZGVjbCk7Ci0g Ci0rICBpZiAoISBmbGFnX3Zhcl90cmFja2luZ191bmluaXQpCi0rICAgIGluaXRpYWxpemVkID0g VkFSX0lOSVRfU1RBVFVTX0lOSVRJQUxJWkVEOwotKwotICAgaWYgKCFzbG90IHx8ICEqc2xvdCkK LSAgICAgewotICAgICAgIGlmICghc2xvdCkKLUBAIC0yODE1LDEwICsyODUzLDggQEAgZGVsZXRl X3ZhcmlhYmxlX3BhcnQgKGRhdGFmbG93X3NldCAqc2V0LAotIAkJICAgICAgICYmIFJFR05PIChu b2RlLT5sb2MpID09IFJFR05PIChsb2MpKQotIAkJICAgICAgfHwgcnR4X2VxdWFsX3AgKG5vZGUt PmxvYywgbG9jKSkKLSAJCSAgICB7Ci0tCQkgICAgICBlbnVtIHZhcl9pbml0X3N0YXR1cyBzdGF0 dXMgPSBWQVJfSU5JVF9TVEFUVVNfVU5LTk9XTjsKLS0JCSAgICAgIGlmICghIGZsYWdfdmFyX3Ry YWNraW5nX3VuaW5pdCkKLS0JCQlzdGF0dXMgPSBWQVJfSU5JVF9TVEFUVVNfSU5JVElBTElaRUQ7 Ci0tCQkgICAgICB2YXIgPSB1bnNoYXJlX3ZhcmlhYmxlIChzZXQsIHZhciwgc3RhdHVzKTsKLSsJ CSAgICAgIHZhciA9IHVuc2hhcmVfdmFyaWFibGUgKHNldCwgdmFyLAotKwkJCQkJICAgICAgVkFS X0lOSVRfU1RBVFVTX1VOS05PV04pOwotIAkJICAgICAgYnJlYWs7Ci0gCQkgICAgfQotIAkJfQot QEAgLTI4OTMsOSArMjkyOSw2IEBAIGVtaXRfbm90ZV9pbnNuX3Zhcl9sb2NhdGlvbiAodm9pZCAq KnZhcnAKLSAKLSAgIGdjY19hc3NlcnQgKHZhci0+ZGVjbCk7Ci0gCi0tICBpZiAoISBmbGFnX3Zh cl90cmFja2luZ191bmluaXQpCi0tICAgIGluaXRpYWxpemVkID0gVkFSX0lOSVRfU1RBVFVTX0lO SVRJQUxJWkVEOwotLQotICAgY29tcGxldGUgPSB0cnVlOwotICAgbGFzdF9saW1pdCA9IDA7Ci0g ICBuX3Zhcl9wYXJ0cyA9IDA7Ci1AQCAtMzE0OCwxNCArMzE4MSwxMSBAQCBlbWl0X25vdGVzX2lu X2JiIChiYXNpY19ibG9jayBiYikKLSAJICBjYXNlIE1PX1VTRToKLSAJICAgIHsKLSAJICAgICAg cnR4IGxvYyA9IFZUSSAoYmIpLT5tb3NbaV0udS5sb2M7Ci0tICAgICAgCi0tCSAgICAgIGVudW0g dmFyX2luaXRfc3RhdHVzIHN0YXR1cyA9IFZBUl9JTklUX1NUQVRVU19VTklOSVRJQUxJWkVEOwot LQkgICAgICBpZiAoISBmbGFnX3Zhcl90cmFja2luZ191bmluaXQpCi0tCQlzdGF0dXMgPSBWQVJf SU5JVF9TVEFUVVNfSU5JVElBTElaRUQ7Ci0rCi0gCSAgICAgIGlmIChHRVRfQ09ERSAobG9jKSA9 PSBSRUcpCi0tCQl2YXJfcmVnX3NldCAoJnNldCwgbG9jLCBzdGF0dXMsIE5VTEwpOwotKwkJdmFy X3JlZ19zZXQgKCZzZXQsIGxvYywgVkFSX0lOSVRfU1RBVFVTX1VOSU5JVElBTElaRUQsIE5VTEwp OwotIAkgICAgICBlbHNlCi0tCQl2YXJfbWVtX3NldCAoJnNldCwgbG9jLCBzdGF0dXMsIE5VTEwp OwotKwkJdmFyX21lbV9zZXQgKCZzZXQsIGxvYywgVkFSX0lOSVRfU1RBVFVTX1VOSU5JVElBTEla RUQsIE5VTEwpOwotIAotIAkgICAgICBlbWl0X25vdGVzX2Zvcl9jaGFuZ2VzIChpbnNuLCBFTUlU X05PVEVfQUZURVJfSU5TTik7Ci0gCSAgICB9Ci1AQCAtMzU1Myw2ICszNTgzLDEwIEBAIHZ0X2Zp bmFsaXplICh2b2lkKQotICAgZnJlZV9hbGxvY19wb29sICh2YXJfcG9vbCk7Ci0gICBmcmVlX2Fs bG9jX3Bvb2wgKGxvY19jaGFpbl9wb29sKTsKLSAgIGZyZWVfYWxsb2NfcG9vbCAoc2hhcmVkX2hh c2hfcG9vbCk7Ci0rICBpZiAodnVpX3ZlYykKLSsgICAgZnJlZSAodnVpX3ZlYyk7Ci0rICB2dWlf dmVjID0gTlVMTDsKLSsgIHZ1aV9hbGxvY2F0ZWQgPSAwOwotIH0KLSAKLSAvKiBUaGUgZW50cnkg cG9pbnQgdG8gdmFyaWFibGUgdHJhY2tpbmcgcGFzcy4gICovCgpkaWZmIC0tZ2l0IGEvZ2NjNDQt dnRhLWNmZ2V4cGFuZC1wdHItbW9kZS1wcjQxMjQ4LnBhdGNoIGIvZ2NjNDQtdnRhLWNmZ2V4cGFu ZC1wdHItbW9kZS1wcjQxMjQ4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjI3ZGM0M2QKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0NC12dGEtY2ZnZXhwYW5kLXB0ci1t b2RlLXByNDEyNDgucGF0Y2gKQEAgLTAsMCArMSwxNTEgQEAKK2ZvciAgZ2NjL0NoYW5nZUxvZwor ZnJvbSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CisKKwlQUiBkZWJ1Zy80 MTI0OAorCSogY2ZnZXhwYW5kLmMgKGNvbnZlcnRfZGVidWdfbWVtb3J5X2FkZHJlc3MpOiBOZXcu CisJKGV4cGFuZF9kZWJ1Z19leHByKTogQ29udmVydCBiYXNlIGFkZHJlc3MgYW5kIG9mZnNldCB0 byB0aGUgc2FtZQorCW1vZGUuICBVc2UgaXQgdG8gY29udmVydCBhZGRyZXNzZXMgdG8gb3RoZXIg bW9kZXMuICBBY2NlcHQKKwlwdHJfbW9kZSBhZGRyZXNzZXMuCisJCitmb3IgIGdjYy90ZXN0c3Vp dGUvQ2hhbmdlTG9nCitmcm9tICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4K KworCVBSIGRlYnVnLzQxMjQ4CisJKiBnY2MuZGcvcHI0MTI0OC5jOiBOZXcuCisKK0luZGV4OiBn Y2MvY2ZnZXhwYW5kLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MvY2ZnZXhwYW5kLmMub3JpZwkyMDA5 LTA5LTA3IDE5OjAwOjIwLjAwMDAwMDAwMCAtMDMwMAorKysrIGdjYy9jZmdleHBhbmQuYwkyMDA5 LTA5LTA3IDE5OjE3OjI3LjAwMDAwMDAwMCAtMDMwMAorQEAgLTE5NjYsNiArMTk2NiwzOCBAQCB1 bndyYXBfY29uc3RhbnQgKHJ0eCB4KQorICAgcmV0dXJuIHJldDsKKyB9CisgCisrLyogQ29udmVy dCBYIHRvIE1PREUsIHRoYXQgbXVzdCBiZSBQbW9kZSBvciBwdHJfbW9kZSwgd2l0aG91dCBlbWl0 dGluZworKyAgIGFueSBydGwuICAqLworKworK3N0YXRpYyBydHgKKytjb252ZXJ0X2RlYnVnX21l bW9yeV9hZGRyZXNzIChlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggeCkKKyt7CisrICBlbnVt IG1hY2hpbmVfbW9kZSB4bW9kZSA9IEdFVF9NT0RFICh4KTsKKysKKysjaWZuZGVmIFBPSU5URVJT X0VYVEVORF9VTlNJR05FRAorKyAgZ2NjX2Fzc2VydCAobW9kZSA9PSBQbW9kZSk7CisrICBnY2Nf YXNzZXJ0ICh4bW9kZSA9PSBtb2RlIHx8IHhtb2RlID09IFZPSURtb2RlKTsKKysjZWxzZQorKyAg Z2NjX2Fzc2VydCAobW9kZSA9PSBQbW9kZSB8fCBtb2RlID09IHB0cl9tb2RlKTsKKysKKysgIGlm IChHRVRfTU9ERSAoeCkgPT0gbW9kZSB8fCBHRVRfTU9ERSAoeCkgPT0gVk9JRG1vZGUpCisrICAg IHJldHVybiB4OworKworKyAgaWYgKEdFVF9NT0RFX0JJVFNJWkUgKG1vZGUpIDwgR0VUX01PREVf QklUU0laRSAoeG1vZGUpKQorKyAgICB4ID0gc2ltcGxpZnlfZ2VuX3N1YnJlZyAobW9kZSwgeCwg eG1vZGUsCisrCQkJICAgICBzdWJyZWdfbG93cGFydF9vZmZzZXQKKysJCQkgICAgIChtb2RlLCB4 bW9kZSkpOworKyAgZWxzZSBpZiAoUE9JTlRFUlNfRVhURU5EX1VOU0lHTkVEID4gMCkKKysgICAg eCA9IGdlbl9ydHhfWkVST19FWFRFTkQgKG1vZGUsIHgpOworKyAgZWxzZSBpZiAoIVBPSU5URVJT X0VYVEVORF9VTlNJR05FRCkKKysgICAgeCA9IGdlbl9ydHhfU0lHTl9FWFRFTkQgKG1vZGUsIHgp OworKyAgZWxzZQorKyAgICBnY2NfdW5yZWFjaGFibGUgKCk7CisrI2VuZGlmIC8qIFBPSU5URVJT X0VYVEVORF9VTlNJR05FRCAqLworKworKyAgcmV0dXJuIHg7CisrfQorKworIC8qIFJldHVybiBh biBSVFggZXF1aXZhbGVudCB0byB0aGUgdmFsdWUgb2YgdGhlIHRyZWUgZXhwcmVzc2lvbgorICAg IEVYUC4gICovCisgCitAQCAtMjE0MSw2ICsyMTczLDcgQEAgZXhwYW5kX2RlYnVnX2V4cHIgKHRy ZWUgZXhwKQorIAlyZXR1cm4gTlVMTDsKKyAKKyAgICAgICBnY2NfYXNzZXJ0IChHRVRfTU9ERSAo b3AwKSA9PSBQbW9kZQorKwkJICB8fCBHRVRfTU9ERSAob3AwKSA9PSBwdHJfbW9kZQorIAkJICB8 fCBHRVRfQ09ERSAob3AwKSA9PSBDT05TVF9JTlQKKyAJCSAgfHwgR0VUX0NPREUgKG9wMCkgPT0g Q09OU1RfRE9VQkxFKTsKKyAKK0BAIC0yMTY3LDYgKzIyMDAsNyBAQCBleHBhbmRfZGVidWdfZXhw ciAodHJlZSBleHApCisgCXJldHVybiBOVUxMOworIAorICAgICAgIGdjY19hc3NlcnQgKEdFVF9N T0RFIChvcDApID09IFBtb2RlCisrCQkgIHx8IEdFVF9NT0RFIChvcDApID09IHB0cl9tb2RlCisg CQkgIHx8IEdFVF9DT0RFIChvcDApID09IENPTlNUX0lOVAorIAkJICB8fCBHRVRfQ09ERSAob3Aw KSA9PSBDT05TVF9ET1VCTEUpOworIAorQEAgLTIxOTksMTMgKzIyMzMsMzIgQEAgZXhwYW5kX2Rl YnVnX2V4cHIgKHRyZWUgZXhwKQorIAorIAlpZiAob2Zmc2V0KQorIAkgIHsKKysJICAgIGVudW0g bWFjaGluZV9tb2RlIGFkZHJtb2RlLCBvZmZtb2RlOworKworIAkgICAgZ2NjX2Fzc2VydCAoTUVN X1AgKG9wMCkpOworIAorKwkgICAgb3AwID0gWEVYUCAob3AwLCAwKTsKKysJICAgIGFkZHJtb2Rl ID0gR0VUX01PREUgKG9wMCk7CisrCSAgICBpZiAoYWRkcm1vZGUgPT0gVk9JRG1vZGUpCisrCSAg ICAgIGFkZHJtb2RlID0gUG1vZGU7CisrCisgCSAgICBvcDEgPSBleHBhbmRfZGVidWdfZXhwciAo b2Zmc2V0KTsKKyAJICAgIGlmICghb3AxKQorIAkgICAgICByZXR1cm4gTlVMTDsKKyAKKy0JICAg IG9wMCA9IGdlbl9ydHhfTUVNIChtb2RlLCBnZW5fcnR4X1BMVVMgKFBtb2RlLCBYRVhQIChvcDAs IDApLCBvcDEpKTsKKysJICAgIG9mZm1vZGUgPSBHRVRfTU9ERSAob3AxKTsKKysJICAgIGlmIChv ZmZtb2RlID09IFZPSURtb2RlKQorKwkgICAgICBvZmZtb2RlID0gVFlQRV9NT0RFIChUUkVFX1RZ UEUgKG9mZnNldCkpOworKworKwkgICAgaWYgKGFkZHJtb2RlICE9IG9mZm1vZGUpCisrCSAgICAg IG9wMSA9IHNpbXBsaWZ5X2dlbl9zdWJyZWcgKGFkZHJtb2RlLCBvcDEsIG9mZm1vZGUsCisrCQkJ CQkgc3VicmVnX2xvd3BhcnRfb2Zmc2V0IChhZGRybW9kZSwKKysJCQkJCQkJCW9mZm1vZGUpKTsK KysKKysJICAgIC8qIERvbid0IHVzZSBvZmZzZXRfYWRkcmVzcyBoZXJlLCB3ZSBkb24ndCBuZWVk IGEKKysJICAgICAgIHJlY29nbml6YWJsZSBhZGRyZXNzLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBn ZW5lcmF0ZQorKwkgICAgICAgY29kZS4gICovCisrCSAgICBvcDAgPSBnZW5fcnR4X01FTSAobW9k ZSwgZ2VuX3J0eF9QTFVTIChhZGRybW9kZSwgb3AwLCBvcDEpKTsKKyAJICB9CisgCisgCWlmIChN RU1fUCAob3AwKSkKK0BAIC0yNTI1LDcgKzI1NzgsOSBAQCBleHBhbmRfZGVidWdfZXhwciAodHJl ZSBleHApCisgICAgICAgaWYgKCFvcDAgfHwgIU1FTV9QIChvcDApKQorIAlyZXR1cm4gTlVMTDsK KyAKKy0gICAgICByZXR1cm4gWEVYUCAob3AwLCAwKTsKKysgICAgICBvcDAgPSBjb252ZXJ0X2Rl YnVnX21lbW9yeV9hZGRyZXNzIChtb2RlLCBYRVhQIChvcDAsIDApKTsKKysKKysgICAgICByZXR1 cm4gb3AwOworIAorICAgICBjYXNlIFZFQ1RPUl9DU1Q6CisgICAgICAgZXhwID0gYnVpbGRfY29u c3RydWN0b3JfZnJvbV9saXN0IChUUkVFX1RZUEUgKGV4cCksCitJbmRleDogZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcHI0MTI0OC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI0MTI0 OC5jCTIwMDktMDktMDcgMTk6MTc6MjcuMDAwMDAwMDAwIC0wMzAwCitAQCAtMCwwICsxLDI3IEBA CisrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZyIgfSAq LworKworK3N0cnVjdCBfX2djb3ZfdmFyIHsKKysgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworKyAg IHVuc2lnbmVkIGludCBidWZmZXJbKDEgPDwgMTApICsgMV07CisrfSBfX2djb3ZfdmFyOworK3Vu c2lnbmVkIGludCAqIGdjb3Zfd3JpdGVfd29yZHMgKHVuc2lnbmVkIGludCB3b3JkcykgeworKyAg IHVuc2lnbmVkIGludCAqcmVzdWx0OworKyAgIHJlc3VsdCA9ICZfX2djb3ZfdmFyLmJ1ZmZlcltf X2djb3ZfdmFyLm9mZnNldF07CisrICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrc3RydWN0IGdj b3ZfY3RyX3N1bW1hcnkgeyB9OworK3N0cnVjdCBnY292X3N1bW1hcnkgeworKyAgIHVuc2lnbmVk IGludCBjaGVja3N1bTsKKysgICBzdHJ1Y3QgZ2Nvdl9jdHJfc3VtbWFyeSBjdHJzWzFdOworK307 Cisrdm9pZCBfX2djb3Zfd3JpdGVfdW5zaWduZWQgKHVuc2lnbmVkIGludCk7Cisrdm9pZCBfX2dj b3Zfd3JpdGVfc3VtbWFyeSAodW5zaWduZWQgaW50IHRhZywKKysJCQkgICBjb25zdCBzdHJ1Y3Qg Z2Nvdl9zdW1tYXJ5ICpzdW1tYXJ5KQorK3sKKysgICB1bnNpZ25lZCBpeDsKKysgICBjb25zdCBz dHJ1Y3QgZ2Nvdl9jdHJfc3VtbWFyeSAqY3N1bTsKKysgICBfX2djb3Zfd3JpdGVfdW5zaWduZWQg KHN1bW1hcnktPmNoZWNrc3VtKTsKKysgICBmb3IgKGNzdW0gPSBzdW1tYXJ5LT5jdHJzLCBpeCA9 IDE7IGl4LS07IGNzdW0rKykgeyB9CisrfQoKZGlmZiAtLWdpdCBhL2djYzQ0LXZ0YS1jc2VsaWIt c3VicmVnLW9mLXZhbHVlLXByNDEyNzYucGF0Y2ggYi9nY2M0NC12dGEtY3NlbGliLXN1YnJlZy1v Zi12YWx1ZS1wcjQxMjc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjZkZTYwZWIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0NC12dGEtY3NlbGliLXN1YnJlZy1vZi12 YWx1ZS1wcjQxMjc2LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK2ZvciAgZ2NjL0NoYW5nZUxvZwor ZnJvbSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CisKKwlQUiBkZWJ1Zy80 MTI3NgorCSogY3NlbGliLmMgKGNzZWxpYl9leHBhbmRfdmFsdWVfcnR4XzEpOiBEb24ndCByZXR1 cm4gY29weSBvZgorCWludmFsaWQgc3VicmVnLgorCitJbmRleDogZ2NjL2NzZWxpYi5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2NjL2NzZWxpYi5jLm9yaWcJMjAwOS0wOC0xNCAwODowMDoxMi4wMDAwMDAw MDAgLTAzMDAKKysrKyBnY2MvY3NlbGliLmMJMjAwOS0wOS0wNyAxOToxNzozNS4wMDAwMDAwMDAg LTAzMDAKK0BAIC0xMTY1LDEyICsxMTY1LDEyIEBAIGNzZWxpYl9leHBhbmRfdmFsdWVfcnR4XzEg KHJ0eCBvcmlnLCBzdHIKKyAJc2NvcHkgPSBzaW1wbGlmeV9nZW5fc3VicmVnIChHRVRfTU9ERSAo b3JpZyksIHN1YnJlZywKKyAJCQkJICAgICBHRVRfTU9ERSAoU1VCUkVHX1JFRyAob3JpZykpLAor IAkJCQkgICAgIFNVQlJFR19CWVRFIChvcmlnKSk7CistCWlmIChzY29weSA9PSBOVUxMCistCSAg ICB8fCAoR0VUX0NPREUgKHNjb3B5KSA9PSBTVUJSRUcKKy0JCSYmICFSRUdfUCAoU1VCUkVHX1JF RyAoc2NvcHkpKQorLQkJJiYgIU1FTV9QIChTVUJSRUdfUkVHIChzY29weSkpCistCQkmJiAoUkVH X1AgKFNVQlJFR19SRUcgKG9yaWcpKQorLQkJICAgIHx8IE1FTV9QIChTVUJSRUdfUkVHIChvcmln KSkpKSkKKysJaWYgKChzY29weSA9PSBOVUxMCisrCSAgICAgfHwgKEdFVF9DT0RFIChzY29weSkg PT0gU1VCUkVHCisrCQkgJiYgIVJFR19QIChTVUJSRUdfUkVHIChzY29weSkpCisrCQkgJiYgIU1F TV9QIChTVUJSRUdfUkVHIChzY29weSkpKSkKKysJICAgICYmIChSRUdfUCAoU1VCUkVHX1JFRyAo b3JpZykpCisrCQl8fCBNRU1fUCAoU1VCUkVHX1JFRyAob3JpZykpKSkKKyAJICByZXR1cm4gc2hh bGxvd19jb3B5X3J0eCAob3JpZyk7CisgCXJldHVybiBzY29weTsKKyAgICAgICB9CgpkaWZmIC0t Z2l0IGEvZ2NjNDQtdnRhLWxvb3AtaXZvcHRzLXByb3BhZ2F0ZS1vbi1yZWxlYXNlLnBhdGNoIGIv Z2NjNDQtdnRhLWxvb3AtaXZvcHRzLXByb3BhZ2F0ZS1vbi1yZWxlYXNlLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNzZkNjQKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2M0NC12dGEtbG9vcC1pdm9wdHMtcHJvcGFnYXRlLW9uLXJlbGVhc2UucGF0Y2gKQEAgLTAsMCAr MSwyMDcgQEAKK2ZvciAgZ2NjL0NoYW5nZUxvZworZnJvbSAgQWxleGFuZHJlIE9saXZhICA8YW9s aXZhQHJlZGhhdC5jb20+CisKKwkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGdldF9waGlfd2l0 aF9yZXN1bHQpOiBSZW1vdmUuCisJKHJlbW92ZV9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KKwkocmV3 cml0ZV91c2Vfbm9ubGluZWFyX2V4cHIpOiBBZGp1c3QuCisJKHJlbW92ZV91bnVzZWRfaXZzKTog Q29sbGVjdCBTU0EgTkFNRXMgdG8gcmVtb3ZlIGFuZCBjYWxsLi4uCisJKiB0cmVlLXNzYS5jIChy ZWxlYXNlX2RlZnNfYml0c2V0KTogLi4uIHRoaXMuICBOZXcuCisJKiB0cmVlLWZsb3cuaCAocmVs ZWFzZV9kZWZzX2JpdHNldCk6IERlY2xhcmUuCisKK0luZGV4OiBnY2MvdHJlZS1zc2EtbG9vcC1p dm9wdHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy90cmVlLXNzYS1sb29wLWl2b3B0cy5jLm9yaWcJ MjAwOS0wOS0wNyAxOTowMDo1Mi4wMDAwMDAwMDAgLTAzMDAKKysrKyBnY2MvdHJlZS1zc2EtbG9v cC1pdm9wdHMuYwkyMDA5LTA5LTA3IDE5OjE1OjM5LjAwMDAwMDAwMCAtMDMwMAorQEAgLTUwMzgs NDIgKzUwMzgsNiBAQCBjcmVhdGVfbmV3X2l2cyAoc3RydWN0IGl2b3B0c19kYXRhICpkYXRhCisg ICAgIH0KKyB9CisgCistLyogUmV0dXJucyB0aGUgcGhpLW5vZGUgaW4gQkIgd2l0aCByZXN1bHQg UkVTVUxULiAgKi8KKy0KKy1zdGF0aWMgZ2ltcGxlCistZ2V0X3BoaV93aXRoX3Jlc3VsdCAoYmFz aWNfYmxvY2sgYmIsIHRyZWUgcmVzdWx0KQorLXsKKy0gIGdpbXBsZV9zdG10X2l0ZXJhdG9yIGkg PSBnc2lfc3RhcnRfcGhpcyAoYmIpOworLQorLSAgZm9yICg7ICFnc2lfZW5kX3AgKGkpOyBnc2lf bmV4dCAoJmkpKQorLSAgICBpZiAoZ2ltcGxlX3BoaV9yZXN1bHQgKGdzaV9zdG10IChpKSkgPT0g cmVzdWx0KQorLSAgICAgIHJldHVybiBnc2lfc3RtdCAoaSk7CistCistICBnY2NfdW5yZWFjaGFi bGUgKCk7CistICByZXR1cm4gTlVMTDsKKy19CistCistCistLyogUmVtb3ZlcyBzdGF0ZW1lbnQg U1RNVCAocmVhbCBvciBhIHBoaSBub2RlKS4gIElmIElOQ0xVRElOR19ERUZJTkVEX05BTUUKKy0g ICBpcyB0cnVlLCByZW1vdmUgYWxzbyB0aGUgc3NhIG5hbWUgZGVmaW5lZCBieSB0aGUgc3RhdGVt ZW50LiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLXJlbW92ZV9zdGF0ZW1lbnQgKGdpbXBsZSBzdG10 LCBib29sIGluY2x1ZGluZ19kZWZpbmVkX25hbWUpCisteworLSAgaWYgKGdpbXBsZV9jb2RlIChz dG10KSA9PSBHSU1QTEVfUEhJKQorLSAgICB7CistICAgICAgZ2ltcGxlIGJiX3BoaSA9IGdldF9w aGlfd2l0aF9yZXN1bHQgKGdpbXBsZV9iYiAoc3RtdCksIAorLQkJCQkJIGdpbXBsZV9waGlfcmVz dWx0IChzdG10KSk7CistICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgYnNpID0gZ3NpX2Zvcl9z dG10IChiYl9waGkpOworLSAgICAgIHJlbW92ZV9waGlfbm9kZSAoJmJzaSwgaW5jbHVkaW5nX2Rl ZmluZWRfbmFtZSk7CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIGdpbXBsZV9zdG10 X2l0ZXJhdG9yIGJzaSA9IGdzaV9mb3Jfc3RtdCAoc3RtdCk7CistICAgICAgZ3NpX3JlbW92ZSAo JmJzaSwgdHJ1ZSk7CistICAgICAgcmVsZWFzZV9kZWZzIChzdG10KTsgCistICAgIH0KKy19Cisg CisgLyogUmV3cml0ZXMgVVNFIChkZWZpbml0aW9uIG9mIGl2IHVzZWQgaW4gYSBub25saW5lYXIg ZXhwcmVzc2lvbikKKyAgICB1c2luZyBjYW5kaWRhdGUgQ0FORC4gICovCitAQCAtNTE3Niw3ICs1 MTQwLDkgQEAgcmV3cml0ZV91c2Vfbm9ubGluZWFyX2V4cHIgKHN0cnVjdCBpdm9wdAorICAgICB7 CisgICAgICAgYXNzID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAodGd0LCBvcCk7CisgICAgICAgZ3Np X2luc2VydF9iZWZvcmUgKCZic2ksIGFzcywgR1NJX1NBTUVfU1RNVCk7CistICAgICAgcmVtb3Zl X3N0YXRlbWVudCAodXNlLT5zdG10LCBmYWxzZSk7CisrCisrICAgICAgYnNpID0gZ3NpX2Zvcl9z dG10ICh1c2UtPnN0bXQpOworKyAgICAgIHJlbW92ZV9waGlfbm9kZSAoJmJzaSwgZmFsc2UpOwor ICAgICB9CisgICBlbHNlCisgICAgIHsKK0BAIC01NDE0LDcgKzUzODAsMTEgQEAgcmVtb3ZlX3Vu dXNlZF9pdnMgKHN0cnVjdCBpdm9wdHNfZGF0YSAqZAorIHsKKyAgIHVuc2lnbmVkIGo7CisgICBi aXRtYXBfaXRlcmF0b3IgYmk7CisrICBiaXRtYXAgdG9yZW1vdmUgPSBCSVRNQVBfQUxMT0MgKE5V TEwpOworIAorKyAgLyogRmlndXJlIG91dCBhbiBvcmRlciBpbiB3aGljaCB0byByZWxlYXNlIFNT QSBERUZzIHNvIHRoYXQgd2UgZG9uJ3QKKysgICAgIHJlbGVhc2Ugc29tZXRoaW5nIHRoYXQgd2Un ZCBoYXZlIHRvIHByb3BhZ2F0ZSBpbnRvIGEgZGVidWcgc3RtdAorKyAgICAgYWZ0ZXJ3YXJkcy4g ICovCisgICBFWEVDVVRFX0lGX1NFVF9JTl9CSVRNQVAgKGRhdGEtPnJlbGV2YW50LCAwLCBqLCBi aSkKKyAgICAgeworICAgICAgIHN0cnVjdCB2ZXJzaW9uX2luZm8gKmluZm87CitAQCAtNTQyNSwy NSArNTM5NSwxMiBAQCByZW1vdmVfdW51c2VkX2l2cyAoc3RydWN0IGl2b3B0c19kYXRhICpkCisg CSAgJiYgIWluZm8tPmludl9pZAorIAkgICYmICFpbmZvLT5pdi0+aGF2ZV91c2VfZm9yCisgCSAg JiYgIWluZm8tPnByZXNlcnZlX2JpdikKKy0JeworLQkgIGlmIChNQVlfSEFWRV9ERUJVR19TVE1U UykKKy0JICAgIHsKKy0JICAgICAgZ2ltcGxlIHN0bXQ7CistCSAgICAgIGltbV91c2VfaXRlcmF0 b3IgaXRlcjsKKy0KKy0JICAgICAgRk9SX0VBQ0hfSU1NX1VTRV9TVE1UIChzdG10LCBpdGVyLCBp bmZvLT5pdi0+c3NhX25hbWUpCistCQl7CistCQkgIGlmICghZ2ltcGxlX2RlYnVnX2JpbmRfcCAo c3RtdCkpCistCQkgICAgY29udGludWU7CistCistCQkgIC8qID8/PyBXZSBjYW4gcHJvYmFibHkg ZG8gYmV0dGVyIHRoYW4gdGhpcy4gICovCistCQkgIGdpbXBsZV9kZWJ1Z19iaW5kX3Jlc2V0X3Zh bHVlIChzdG10KTsKKy0JCSAgdXBkYXRlX3N0bXQgKHN0bXQpOworLQkJfQorLQkgICAgfQorLQkg IHJlbW92ZV9zdGF0ZW1lbnQgKFNTQV9OQU1FX0RFRl9TVE1UIChpbmZvLT5pdi0+c3NhX25hbWUp LCB0cnVlKTsKKy0JfQorKwliaXRtYXBfc2V0X2JpdCAodG9yZW1vdmUsIFNTQV9OQU1FX1ZFUlNJ T04gKGluZm8tPml2LT5zc2FfbmFtZSkpOworICAgICB9CisrCisrICByZWxlYXNlX2RlZnNfYml0 c2V0ICh0b3JlbW92ZSk7CisrCisrICBCSVRNQVBfRlJFRSAodG9yZW1vdmUpOworIH0KKyAKKyAv KiBGcmVlcyBkYXRhIGFsbG9jYXRlZCBieSB0aGUgb3B0aW1pemF0aW9uIG9mIGEgc2luZ2xlIGxv b3AuICAqLworSW5kZXg6IGdjYy90cmVlLWZsb3cuaAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy90cmVl LWZsb3cuaC5vcmlnCTIwMDktMDctMTIgMDg6MTk6MzYuMDAwMDAwMDAwIC0wMzAwCisrKysgZ2Nj L3RyZWUtZmxvdy5oCTIwMDktMDktMDcgMTk6MTU6MzkuMDAwMDAwMDAwIC0wMzAwCitAQCAtNTg2 LDkgKzU4NiwxMCBAQCB0eXBlZGVmIHN0cnVjdCAKKyAgICAgICAgKFZBUikgPSBuZXh0X3JlZmVy ZW5jZWRfdmFyICgmKElURVIpKSkgCisgCisgdm9pZCBwcm9wYWdhdGVfZGVmc19pbnRvX2RlYnVn X3N0bXRzIChnaW1wbGUsIGJhc2ljX2Jsb2NrLAorLQkJCQkgIGNvbnN0IGdpbXBsZV9zdG10X2l0 ZXJhdG9yICopOworKwkJCQkgICAgICBjb25zdCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqKTsKKyB2 b2lkIHByb3BhZ2F0ZV92YXJfZGVmX2ludG9fZGVidWdfc3RtdHMgKHRyZWUsIGJhc2ljX2Jsb2Nr LAorLQkJCQkJICBjb25zdCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqKTsKKysJCQkJCSBjb25zdCBn aW1wbGVfc3RtdF9pdGVyYXRvciAqKTsKKyt2b2lkIHJlbGVhc2VfZGVmc19iaXRzZXQgKGJpdG1h cCB0b3JlbW92ZSk7CisgCisgdHlwZWRlZiBzdHJ1Y3QKKyB7CitJbmRleDogZ2NjL3RyZWUtc3Nh LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnY2MvdHJlZS1zc2EuYy5vcmlnCTIwMDktMDktMDEgMTY6MTY6 MDQuMDAwMDAwMDAwIC0wMzAwCisrKysgZ2NjL3RyZWUtc3NhLmMJMjAwOS0wOS0wNyAxOToxNToz OS4wMDAwMDAwMDAgLTAzMDAKK0BAIC00NDAsNiArNDQwLDc0IEBAIHByb3BhZ2F0ZV9kZWZzX2lu dG9fZGVidWdfc3RtdHMgKGdpbXBsZSAKKyAgICAgfQorIH0KKyAKKysvKiBEZWxldGUgU1NBIERF RnMgZm9yIFNTQSB2ZXJzaW9ucyBpbiB0aGUgVE9SRU1PVkUgYml0bWFwLCByZW1vdmluZworKyAg IGRvbWluYXRlZCBzdG10cyBiZWZvcmUgdGhlaXIgZG9taW5hdG9ycywgc28gdGhhdCByZWxlYXNl X3NzYV9kZWZzCisrICAgc3RhbmRzIGEgY2hhbmNlIG9mIHByb3BhZ2F0aW5nIERFRnMgaW50byBk ZWJ1ZyBiaW5kIHN0bXRzLiAgKi8KKysKKyt2b2lkCisrcmVsZWFzZV9kZWZzX2JpdHNldCAoYml0 bWFwIHRvcmVtb3ZlKQorK3sKKysgIHVuc2lnbmVkIGo7CisrICBiaXRtYXBfaXRlcmF0b3IgYmk7 CisrCisrICAvKiBQZXJmb3JtaW5nIGEgdG9wb2xvZ2ljYWwgc29ydCBpcyBwcm9iYWJseSBvdmVy a2lsbCwgdGhpcyB3aWxsCisrICAgICBtb3N0IGxpa2VseSBydW4gaW4gc2xpZ2h0bHkgc3VwZXJs aW5lYXIgdGltZSwgcmF0aGVyIHRoYW4gdGhlCisrICAgICBwYXRob2xvZ2ljYWwgcXVhZHJhdGlj IHdvcnN0IGNhc2UuICAqLworKyAgd2hpbGUgKCFiaXRtYXBfZW1wdHlfcCAodG9yZW1vdmUpKQor KyAgICBFWEVDVVRFX0lGX1NFVF9JTl9CSVRNQVAgKHRvcmVtb3ZlLCAwLCBqLCBiaSkKKysgICAg ICB7CisrCWJvb2wgcmVtb3ZlX25vdyA9IHRydWU7CisrCXRyZWUgdmFyID0gc3NhX25hbWUgKGop OworKwlnaW1wbGUgc3RtdDsKKysJaW1tX3VzZV9pdGVyYXRvciB1aXQ7CisrCisrCUZPUl9FQUNI X0lNTV9VU0VfU1RNVCAoc3RtdCwgdWl0LCB2YXIpCisrCSAgeworKwkgICAgc3NhX29wX2l0ZXIg ZGl0OworKwkgICAgZGVmX29wZXJhbmRfcCBkZWZfcDsKKysKKysJICAgIC8qIFdlIGNhbid0IHBy b3BhZ2F0ZSBQSEkgbm9kZXMgaW50byBkZWJ1ZyBzdG10cy4gICovCisrCSAgICBpZiAoZ2ltcGxl X2NvZGUgKHN0bXQpID09IEdJTVBMRV9QSEkKKysJCXx8IGlzX2dpbXBsZV9kZWJ1ZyAoc3RtdCkp CisrCSAgICAgIGNvbnRpbnVlOworKworKwkgICAgLyogSWYgd2UgZmluZCBhbm90aGVyIGRlZmlu aXRpb24gdG8gcmVtb3ZlIHRoYXQgdXNlcworKwkgICAgICAgdGhlIG9uZSB3ZSdyZSBsb29raW5n IGF0LCBkZWZlciB0aGUgcmVtb3ZhbCBvZiB0aGlzCisrCSAgICAgICBvbmUsIHNvIHRoYXQgaXQg Y2FuIGJlIHByb3BhZ2F0ZWQgaW50byBkZWJ1ZyBzdG10cworKwkgICAgICAgYWZ0ZXIgdGhlIG90 aGVyIGlzLiAgKi8KKysJICAgIEZPUl9FQUNIX1NTQV9ERUZfT1BFUkFORCAoZGVmX3AsIHN0bXQs IGRpdCwgU1NBX09QX0RFRikKKysJICAgICAgeworKwkJdHJlZSBvZGVmID0gREVGX0ZST01fUFRS IChkZWZfcCk7CisrCisrCQlpZiAoYml0bWFwX2JpdF9wICh0b3JlbW92ZSwgU1NBX05BTUVfVkVS U0lPTiAob2RlZikpKQorKwkJICB7CisrCQkgICAgcmVtb3ZlX25vdyA9IGZhbHNlOworKwkJICAg IGJyZWFrOworKwkJICB9CisrCSAgICAgIH0KKysKKysJICAgIGlmICghcmVtb3ZlX25vdykKKysJ ICAgICAgQlJFQUtfRlJPTV9JTU1fVVNFX1NUTVQgKHVpdCk7CisrCSAgfQorKworKwlpZiAocmVt b3ZlX25vdykKKysJICB7CisrCSAgICBnaW1wbGUgZGVmID0gU1NBX05BTUVfREVGX1NUTVQgKHZh cik7CisrCSAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciBnc2kgPSBnc2lfZm9yX3N0bXQgKGRlZik7 CisrCisrCSAgICBpZiAoZ2ltcGxlX2NvZGUgKGRlZikgPT0gR0lNUExFX1BISSkKKysJICAgICAg cmVtb3ZlX3BoaV9ub2RlICgmZ3NpLCB0cnVlKTsKKysJICAgIGVsc2UKKysJICAgICAgeworKwkJ Z3NpX3JlbW92ZSAoJmdzaSwgdHJ1ZSk7CisrCQlyZWxlYXNlX2RlZnMgKGRlZik7CisrCSAgICAg IH0KKysKKysJICAgIGJpdG1hcF9jbGVhcl9iaXQgKHRvcmVtb3ZlLCBqKTsKKysJICB9CisrICAg ICAgfQorK30KKysKKyAvKiBSZXR1cm4gdHJ1ZSBpZiBTU0FfTkFNRSBpcyBtYWxmb3JtZWQgYW5k IG1hcmsgaXQgdmlzaXRlZC4KKyAKKyAgICBJU19WSVJUVUFMIGlzIHRydWUgaWYgdGhpcyBTU0Ff TkFNRSB3YXMgZm91bmQgaW5zaWRlIGEgdmlydHVhbAoKZGlmZiAtLWdpdCBhL2djYzQ0LXZ0YS1u by1nLXdpdGgtZ3RvZ2dsZS5wYXRjaCBiL2djYzQ0LXZ0YS1uby1nLXdpdGgtZ3RvZ2dsZS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTdmZDA2Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjNDQtdnRhLW5vLWctd2l0aC1ndG9nZ2xlLnBhdGNoCkBAIC0wLDAgKzEsMTgg QEAKK0luZGV4OiBnY2MvdG9wbGV2LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MvdG9wbGV2LmMub3Jp ZwkyMDA5LTA5LTA3IDE5OjExOjQ3LjAwMDAwMDAwMCAtMDMwMAorKysrIGdjYy90b3BsZXYuYwky MDA5LTA5LTA3IDE5OjE3OjMxLjAwMDAwMDAwMCAtMDMwMAorQEAgLTE3OTYsNyArMTc5NiwxMiBA QCBwcm9jZXNzX29wdGlvbnMgKHZvaWQpCisgICBpZiAoZmxhZ19ndG9nZ2xlKQorICAgICB7Cisg ICAgICAgaWYgKGRlYnVnX2luZm9fbGV2ZWwgPT0gRElORk9fTEVWRUxfTk9ORSkKKy0JZGVidWdf aW5mb19sZXZlbCA9IERJTkZPX0xFVkVMX05PUk1BTDsKKysJeworKwkgIGRlYnVnX2luZm9fbGV2 ZWwgPSBESU5GT19MRVZFTF9OT1JNQUw7CisrCisrCSAgaWYgKHdyaXRlX3N5bWJvbHMgPT0gTk9f REVCVUcpCisrCSAgICB3cml0ZV9zeW1ib2xzID0gUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFOwor Kwl9CisgICAgICAgZWxzZQorIAlkZWJ1Z19pbmZvX2xldmVsID0gRElORk9fTEVWRUxfTk9ORTsK KyAgICAgfQoKZGlmZiAtLWdpdCBhL2djYzQ0LXZ0YS1waGlvcHQtcHI0MTIzMi5wYXRjaCBiL2dj YzQ0LXZ0YS1waGlvcHQtcHI0MTIzMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5hY2UxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDQtdnRhLXBoaW9wdC1wcjQx MjMyLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK2ZvciAgZ2NjL0NoYW5nZUxvZworZnJvbSAgQWxl eGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CisKKwlQUiBkZWJ1Zy80MTIzMgorCSog dHJlZS1zc2EtcGhpb3B0LmMgKG1pbm1heF9yZXBsYWNlbWVudCk6IFNraXAgZGVidWcgc3RtdHMK KwlpbiB0aGUgbWlkZGxlIGJsb2NrLgorCitmb3IgIGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCitm cm9tICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KKworCVBSIGRlYnVnLzQx MjMyCisJKiBnY2MuZGcvcHI0MTIzMi5jOiBOZXcuCisKK0luZGV4OiBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9wcjQxMjMyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjQxMjMyLmMJ MjAwOS0wOS0wNyAxOToxNTozNS4wMDAwMDAwMDAgLTAzMDAKK0BAIC0wLDAgKzEsMTQgQEAKKysv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8xIC1nIiB9ICovCisr ZXh0ZXJuIGludCBhdG9pIChjb25zdCBjaGFyICopOworK2V4dGVybiBpbnQgc3ByaW50ZiAoY2hh ciAqLCBjb25zdCBjaGFyICosIC4uLik7Cisrdm9pZCBtYWxsb2NfaW5pdCgpIHsKKysgIGNoYXIg KmNwdHI7CisrICBjaGFyIGJ1ZlsxXTsKKysgIGludCB0bWJkID0gYXRvaShjcHRyKTsKKysgIGlm ICh0bWJkID4gMCkKKysgICAgdG1iZCA9ICh0bWJkIDw9IDEyNCkgPyB0bWJkIDogMTI0OworKyAg IGVsc2UKKysgICAgdG1iZCA9IDA7CisrICAgc3ByaW50ZihidWYsICIlZFxuIiwgdG1iZCk7Cisr fQorSW5kZXg6IGdjYy90cmVlLXNzYS1waGlvcHQuYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy90cmVl LXNzYS1waGlvcHQuYy5vcmlnCTIwMDktMDktMDcgMTk6MDA6MjkuMDAwMDAwMDAwIC0wMzAwCisr KysgZ2NjL3RyZWUtc3NhLXBoaW9wdC5jCTIwMDktMDktMDcgMTk6MTU6MzUuMDAwMDAwMDAwIC0w MzAwCitAQCAtODQ4LDcgKzg0OCw3IEBAIG1pbm1heF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sg Y29uZF9iYiwKKyAKKyAgICAgICAvKiBNb3ZlIHRoZSBzdGF0ZW1lbnQgZnJvbSB0aGUgbWlkZGxl IGJsb2NrLiAgKi8KKyAgICAgICBnc2kgPSBnc2lfbGFzdF9iYiAoY29uZF9iYik7CistICAgICAg Z3NpX2Zyb20gPSBnc2lfbGFzdF9iYiAobWlkZGxlX2JiKTsKKysgICAgICBnc2lfZnJvbSA9IGdz aV9sYXN0X25vbmRlYnVnX2JiIChtaWRkbGVfYmIpOworICAgICAgIGdzaV9tb3ZlX2JlZm9yZSAo JmdzaV9mcm9tLCAmZ3NpKTsKKyAgICAgfQorIAoKZGlmZiAtLWdpdCBhL2djYzQ0LXZ0YS1zc2Et dXBkYXRlLWZvcm1lci12b3BzLXByNDEyMjkucGF0Y2ggYi9nY2M0NC12dGEtc3NhLXVwZGF0ZS1m b3JtZXItdm9wcy1wcjQxMjI5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjNmMTI3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0NC12dGEtc3NhLXVwZGF0ZS1mb3Jt ZXItdm9wcy1wcjQxMjI5LnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK2ZvciAgZ2NjL0NoYW5nZUxv ZworZnJvbSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CisKKwlQUiBkZWJ1 Zy80MTIyOQorCSogdHJlZS1zc2EuYyAoZXhlY3V0ZV91cGRhdGVfYWRkcmVzc2VzX3Rha2VuKTog VXBkYXRlIGRlYnVnIGluc25zLgorCitmb3IgIGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCitmcm9t ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KKworCVBSIGRlYnVnLzQxMjI5 CisJKiBnZm9ydHJhbi5kZy9wcjQxMjI5LmY5MDogTmV3LgorCitJbmRleDogZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9wcjQxMjI5LmY5MAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdjYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvcHI0MTIyOS5mOTAJMjAwOS0wOS0wNyAxOToxNjoxNy4wMDAwMDAwMDAgLTAzMDAKK0BA IC0wLDAgKzEsMTAgQEAKKyshIHsgZGctZG8gY29tcGlsZSB9CisrISB7IGRnLW9wdGlvbnMgIi1P MiAtZyIgfQorK1NVQlJPVVRJTkUgY3BfZm1fdHJpYW5ndWxhcl9tdWx0aXBseSgpCisrICAgIElO VEVHRVIsIFBBUkFNRVRFUiA6OiBkcD1LSU5EKDAuMEQwKQorKyAgICBSRUFMKGRwKSwgQUxMT0NB VEFCTEUsIERJTUVOU0lPTig6KSAgICAgIDo6IHRhdSwgd29yaworKyAgICBSRUFMKEtJTkQ9ZHAp LCBESU1FTlNJT04oOiwgOiksIFBPSU5URVIgIDo6IGEKKysgICAgbmRpbSA9IFNJWkUoYSwyKQor KyAgICBBTExPQ0FURSh0YXUobmRpbSksU1RBVD1pc3RhdCkKKysgICAgQUxMT0NBVEUod29yaygy Km5kaW0pLFNUQVQ9aXN0YXQpCisrRU5EIFNVQlJPVVRJTkUKK0luZGV4OiBnY2MvdHJlZS1zc2Eu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdjYy90cmVlLXNzYS5jLm9yaWcJMjAwOS0wOS0wNyAxOToxNToz OS4wMDAwMDAwMDAgLTAzMDAKKysrKyBnY2MvdHJlZS1zc2EuYwkyMDA5LTA5LTA3IDE5OjE3OjE5 LjAwMDAwMDAwMCAtMDMwMAorQEAgLTIwNjcsNyArMjA2Nyw4IEBAIGV4ZWN1dGVfdXBkYXRlX2Fk ZHJlc3Nlc190YWtlbiAodm9pZCkKKyAJICBpZiAoKGdpbXBsZV9sb2FkZWRfc3ltcyAoc3RtdCkK KyAJICAgICAgICYmIGJpdG1hcF9pbnRlcnNlY3RfcCAoZ2ltcGxlX2xvYWRlZF9zeW1zIChzdG10 KSwgdmFyc191cGRhdGVkKSkKKyAJICAgICAgfHwgKGdpbXBsZV9zdG9yZWRfc3ltcyAoc3RtdCkK Ky0JCSAgJiYgYml0bWFwX2ludGVyc2VjdF9wIChnaW1wbGVfc3RvcmVkX3N5bXMgKHN0bXQpLCB2 YXJzX3VwZGF0ZWQpKSkKKysJCSAgJiYgYml0bWFwX2ludGVyc2VjdF9wIChnaW1wbGVfc3RvcmVk X3N5bXMgKHN0bXQpLCB2YXJzX3VwZGF0ZWQpKQorKwkgICAgICB8fCBpc19naW1wbGVfZGVidWcg KHN0bXQpKQorIAkgICAgdXBkYXRlX3N0bXQgKHN0bXQpOworIAl9CisgICBCSVRNQVBfRlJFRSAo bm90X3JlZ19uZWVkcyk7CgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggZDZj MDU2ZS4uZTEzNDZiYyAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIg KzEsMiBAQAogMjY1OWYwOWMyZTQzZWY4YjdkNDQwNjMyMTc1M2YxYjIgIGZhc3RqYXItMC45Ny50 YXIuZ3oKLTY3ZTUwZDA1OTBmNTZhMjE4NDEyMWUwMzVjNzkwN2M4ICBnY2MtNC40LjEtMjAwOTA5 MDMudGFyLmJ6MgorMTJmOTIzMjViYWY2NjQ5ODkxMzZlYTZjNzU4NTI3M2YgIGdjYy00LjQuMS0y MDA5MDkwOC50YXIuYnoyCg==