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: Jocelyn Falempe To: git-commits@fedoraproject.org Subject: [rpms/kmscon] f44: Update to v10.0.1 Date: Thu, 02 Jul 2026 16:23:46 GMT Message-ID: <178300942664.1.6854664993962553899.rpms-kmscon-48ceef03d3a4@fedoraproject.org> List-ID: X-Git-Repo: rpms/kmscon X-Git-Branch: f44 X-Git-Rev: 48ceef03d3a4a145919b346909c025f159e5328b ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMva21zY29uCiAgICAgICAgICAgIEJyYW5jaCA6IGY0NAogICAgICAgICAgICBD b21taXQgOiA0OGNlZWYwM2QzYTRhMTQ1OTE5YjM0NjkwOWMwMjVmMTU5ZTUzMjhiCiAgICAgICAg ICAgIEF1dGhvciA6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KICAgICAg ICAgICAgRGF0ZSAgIDogMjAyNi0wNy0wMlQxODoxMToyMSswMjowMAogICAgICAgICAgICBTdGF0 cyAgOiArMzcvLTI4ODMgaW4gNyBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBzOi8v c3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMva21zY29uL2MvNDhjZWVmMDNkM2E0YTE0NTkxOWIz NDY5MDljMDI1ZjE1OWU1MzI4Yj9icmFuY2g9ZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAg ICAgIFVwZGF0ZSB0byB2MTAuMC4xCgpSZW1vdmUgdGhlIHBhdGNoZXMgdGhhdCBhcmUgbm93IGlu dGVncmF0ZWQgdXBzdHJlYW0KQWRkIGEgd29ya2Fyb3VuZCBmb3IgYWdldHR5IG9uIEZlZG9yYSA8 IDQ1CgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDJjOThm YmEuLjg3MWI4YmYgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAt OSwzICs5LDQgQEAKIC9rbXNjb24tOS4zLjQudGFyLmd6CiAva21zY29uLTkuMy41LnRhci5negog L2ttc2Nvbi0xMC4wLjAudGFyLmd6Cisva21zY29uLTEwLjAuMS50YXIuZ3oKCmRpZmYgLS1naXQg YS8wMDAxLVVzZS1hZ2V0dHktb24tRmVkb3JhLnBhdGNoIGIvMDAwMS1Vc2UtYWdldHR5LW9uLUZl ZG9yYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFmOTA5Ny4uMDAwMDAw MAotLS0gYS8wMDAxLVVzZS1hZ2V0dHktb24tRmVkb3JhLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMzAgKzAsMCBAQAotRnJvbSBiNGNjOWI0MTMwNmZlYWEzN2Q2MDA3MzI5OTM5MjkwOTBhNzNm MmU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlcGhlbiBHYWxsYWdoZXIgPHNn YWxsYWdoQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDUgSnVuIDIwMjYgMDk6NDY6NTUgLTA0MDAK LVN1YmplY3Q6IFtQQVRDSF0gVXNlIGFnZXR0eSBvbiBGZWRvcmEKLQotVGhlIHVwc3RyZWFtIGtt c2NvbiBzdXBwb3J0IGZvciAvdXNyL2xpYi9pc3N1ZS5kIGlzIGxhY2tpbmcgYW5kIHdlIG5lZWQK LXRoaXMgZm9yIEZlZG9yYSBTZXJ2ZXIgYW5kIEZlZG9yYSBFTE4gdG8gaW5mb3JtIHRoZSB1c2Vy IG9mIHRoZSBDb2NrcGl0Ci1jb25zb2xlIGFkZHJlc3MuCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZXBo ZW4gR2FsbGFnaGVyIDxzZ2FsbGFnaEByZWRoYXQuY29tPgotLS0tCi0gc2NyaXB0cy9zeXN0ZW1k L2ttc2NvbnZ0QC5zZXJ2aWNlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc2NyaXB0cy9zeXN0ZW1kL2ttc2Nv bnZ0QC5zZXJ2aWNlLmluIGIvc2NyaXB0cy9zeXN0ZW1kL2ttc2NvbnZ0QC5zZXJ2aWNlLmluCi1p bmRleCBmODZlNWE5YmIzZGU5ZDY2NWUwMWRjY2ZiYjZmZjU1MWNjZGQ5NmFiLi4xNTJiYWMyZmJj YWNjYzRjNWY5YzNiNDUyYjU1NDU4YWE0NjQ1MzM0IDEwMDY0NAotLS0tIGEvc2NyaXB0cy9zeXN0 ZW1kL2ttc2NvbnZ0QC5zZXJ2aWNlLmluCi0rKysgYi9zY3JpcHRzL3N5c3RlbWQva21zY29udnRA LnNlcnZpY2UuaW4KLUBAIC0zOSw3ICszOSw3IEBAIENvbmRpdGlvblBhdGhFeGlzdHM9L2Rldi90 dHkwCi0gCi0gW1NlcnZpY2VdCi0gQFBBTV9DRkdACi0tRXhlY1N0YXJ0PWttc2NvbiAtLXZ0PSVJ IC0tbm8tc3dpdGNodnQKLStFeGVjU3RhcnQ9a21zY29uIC0tdnQ9JUkgLS1uby1zd2l0Y2h2dCAt LW5vLWlzc3VlIC0tbG9naW4gLS0gL3Vzci9iaW4vYWdldHR5IC1vICctcCAtLSBcXHUnIC0tbm9j bGVhciAtLSAtICQkVEVSTQotIFV0bXBJZGVudGlmaWVyPSVJCi0gVFRZUGF0aD0vZGV2LyVJCi0g VFRZUmVzZXQ9eWVzCi0tLSAKLTIuNTQuMAotCgpkaWZmIC0tZ2l0IGEvMDAwMS1zZWF0LUZpeC1z ZWF0LXN0YXJ0dXAtaW4tYmFja2dyb3VuZC5wYXRjaCBiLzAwMDEtc2VhdC1GaXgtc2VhdC1zdGFy dHVwLWluLWJhY2tncm91bmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJm NzM1OWYuLjAwMDAwMDAKLS0tIGEvMDAwMS1zZWF0LUZpeC1zZWF0LXN0YXJ0dXAtaW4tYmFja2dy b3VuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMDg3ZGVkM2Fj MWVmOTMyZTczZmQwZjFmYjQ3YThkNDljNDQwNGE2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwg OSBKdW4gMjAyNiAxNDozODo0NCArMDIwMAotU3ViamVjdDogW1BBVENIXSBzZWF0OiBGaXggc2Vh dCBzdGFydHVwIGluIGJhY2tncm91bmQKLQotSWYgVlQgMiBpcyBhY3RpdmUsIGFuZCB5b3UgcnVu IHN5c3RlbWN0bCByZXN0YXJ0IGttc2NvbnZ0QHR0eTMKLQotVGhlbiB0aGUgc2Vzc2lvbiB3aWxs IHRyeSB0byBkaXJlY3RseSB0YWtlIHRoZSBHUFUsIGFuZCBmYWlscy4KLVNvIGRvbid0IGF3YWtl IHRoZSBzZWF0IG9uIHN0YXJ0dXAsIGJ1dCB3YWl0IGZvciB0aGUgdHR5IGJlIGJlIGFjdGl2YXRl ZC4KLQotRml4OiAwZGZmYmQ3IHNlc3Npb246IFNpbXBsaWZ5IHNlc3Npb24gbWFuYWdlbWVudAot U2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgotLS0t Ci0gc3JjL2ttc2Nvbl9zZWF0LmMgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9zcmMva21zY29uX3NlYXQuYyBiL3NyYy9rbXNjb25fc2VhdC5j Ci1pbmRleCA5MWI4ZGI4Li43ZGQxM2RlIDEwMDY0NAotLS0tIGEvc3JjL2ttc2Nvbl9zZWF0LmMK LSsrKyBiL3NyYy9rbXNjb25fc2VhdC5jCi1AQCAtMTEwMSw4ICsxMTAxLDYgQEAgdm9pZCBrbXNj b25fc2VhdF9zdGFydHVwKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSAJaWYgKCFzZWF0KQot IAkJcmV0dXJuOwotIAotLQlzZWF0X2dvX2F3YWtlKHNlYXQpOwotLQotIAlzID0ga21zY29uX3Nl YXRfbmV3X3Nlc3Npb24oc2VhdCk7Ci0gCWlmIChzKQotIAkJc2VhdF9zd2l0Y2goc2VhdCwgcyk7 Ci0tLSAKLTIuNTQuMAotCgpkaWZmIC0tZ2l0IGEvV29ya2Fyb3VuZC1hZ2V0dHktaXNzdWUtZmls ZS1vbi1GZWRvcmEucGF0Y2ggYi9Xb3JrYXJvdW5kLWFnZXR0eS1pc3N1ZS1maWxlLW9uLUZlZG9y YS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTFiNWZhCi0tLSAv ZGV2L251bGwKKysrIGIvV29ya2Fyb3VuZC1hZ2V0dHktaXNzdWUtZmlsZS1vbi1GZWRvcmEucGF0 Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBlNzFhMjA2NGJjOGE4OTE3MTI3Y2M3NGM5ODNkZjI4 YWViZDgyMTU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9jZWx5biBGYWxlbXBl IDxqZmFsZW1wZUByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyIEp1bCAyMDI2IDE3OjU4OjMwICsw MjAwCitTdWJqZWN0OiBbUEFUQ0hdIFdvcmthcm91bmQgYWdldHR5IGlzc3VlLWZpbGUgb24gRmVk b3JhCisKK0ZlZG9yYSdzIHZlcnNpb24gb2YgYWdldHR5IGRvZXNuJ3QgaGFuZGxlIHByb3Blcmx5 IHdoZW4gL2V0Yy9pc3N1ZSBpcyBhCitzeW1ib2xpYyBsaW5rIHRvIC91c3IvbGliL2lzc3VlLiBT byBzcGVjaWZ5IHRoZSBpc3N1ZS1maWxlIHRvIGF2b2lkCitwcmludGluZyB0aGUgaXNzdWUgbWVz c2FnZSB0d2ljZS4KKworU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUBy ZWRoYXQuY29tPgorLS0tCisgc2NyaXB0cy9zeXN0ZW1kL2ttc2NvbnZ0QC5zZXJ2aWNlLmluIHwg MiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitk aWZmIC0tZ2l0IGEvc2NyaXB0cy9zeXN0ZW1kL2ttc2NvbnZ0QC5zZXJ2aWNlLmluIGIvc2NyaXB0 cy9zeXN0ZW1kL2ttc2NvbnZ0QC5zZXJ2aWNlLmluCitpbmRleCA5NzYyZmMxLi5mMTY2Zjk0IDEw MDY0NAorLS0tIGEvc2NyaXB0cy9zeXN0ZW1kL2ttc2NvbnZ0QC5zZXJ2aWNlLmluCisrKysgYi9z Y3JpcHRzL3N5c3RlbWQva21zY29udnRALnNlcnZpY2UuaW4KK0BAIC0zOSw3ICszOSw3IEBAIENv bmRpdGlvblBhdGhFeGlzdHM9L2Rldi90dHkwCisgCisgW1NlcnZpY2VdCisgQFBBTV9DRkdACist RXhlY1N0YXJ0PWttc2NvbiAtLXZ0PSVJIC0tbm8tc3dpdGNodnQgLS1sb2dpbiAtLSAvc2Jpbi9h Z2V0dHkgLTggLW8gJy1wIC0tIFxcdScgLS1ub2NsZWFyIC0tIC0gJCRURVJNCisrRXhlY1N0YXJ0 PWttc2NvbiAtLXZ0PSVJIC0tbm8tc3dpdGNodnQgLS1sb2dpbiAtLSAvc2Jpbi9hZ2V0dHkgLTgg LW8gJy1wIC0tIFxcdScgLS1ub2NsZWFyIC0taXNzdWUtZmlsZT0vZXRjL2lzc3VlOi9ldGMvaXNz dWUuZDovcnVuL2lzc3VlLmQ6L3Vzci9saWIvaXNzdWUuZCAtLSAtICQkVEVSTQorIFV0bXBJZGVu dGlmaWVyPSVJCisgVFRZUGF0aD0vZGV2LyVJCisgVFRZUmVzZXQ9eWVzCistLSAKKzIuNTQuMAor CgpkaWZmIC0tZ2l0IGEva21zY29uLnNwZWMgYi9rbXNjb24uc3BlYwppbmRleCAzMzAyOWM2Li40 ZjlmZjc5IDEwMDY0NAotLS0gYS9rbXNjb24uc3BlYworKysgYi9rbXNjb24uc3BlYwpAQCAtMSw1 ICsxLDUgQEAKIE5hbWU6ICAgICAgICAgICBrbXNjb24KLVZlcnNpb246ICAgICAgICAxMC4wLjAK K1ZlcnNpb246ICAgICAgICAxMC4wLjEKIFJlbGVhc2U6ICAgICAgICAlYXV0b3JlbGVhc2UKIFN1 bW1hcnk6ICAgICAgICBMaW51eCBLTVMvRFJNIGJhc2VkIHZpcnR1YWwgQ29uc29sZSBFbXVsYXRv cgogTGljZW5zZTogICAgICAgIE1JVApAQCAtNyw3ICs3LDcgQEAgVVJMOiAgICAgICAgICAgIGh0 dHBzOi8vZ2l0aHViLmNvbS9rbXNjb24va21zY29uLwogU291cmNlOiAgICAgICAgICV7dXJsfS9h cmNoaXZlL3Yle3ZlcnNpb259LyV7bmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKIEJ1aWxkUmVxdWly ZXM6ICBjaGVjay1kZXZlbAogQnVpbGRSZXF1aXJlczogIGRvY2Jvb2stc3R5bGUteHNsCi1CdWls ZFJlcXVpcmVzOiAgbGlidHNtLWRldmVsID49IDQuNS4wCitCdWlsZFJlcXVpcmVzOiAgbGlidHNt LWRldmVsID49IDQuNi4wCiBCdWlsZFJlcXVpcmVzOiAgbWVzb24KIEJ1aWxkUmVxdWlyZXM6ICBu Y3Vyc2VzCiBCdWlsZFJlcXVpcmVzOiAgZ2NjCkBAIC0yOSwxNiArMjksOSBAQCBCdWlsZFJlcXVp cmVzOiAgcGtnY29uZmlnKHN5c3RlbWQpCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHhrYmNv bW1vbikgPj0gMC41LjAKIEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcoemxpYikKIAotUGF0Y2gx OiBsb2NhbGVjdGxfc3VwcG9ydC5wYXRjaAotCi0jIEZpeCBiYWNrZ3JvdW5kIHN0YXJ0dXA6Ci1Q YXRjaDI6IDAwMDEtc2VhdC1GaXgtc2VhdC1zdGFydHVwLWluLWJhY2tncm91bmQucGF0Y2gKLQot IyBUZW1wb3JhcnkgZG93bnN0cmVhbSBwYXRjaCB1bnRpbCBrbXNjb24gbmF0aXZlbHkgc3VwcG9y dHMgL3Vzci9saWIvaXNzdWUuZAotIyBUaGlzIGlzIG5lZWRlZCBieSBGZWRvcmEgU2VydmVyIGFu ZCBGZWRvcmEgRUxOIHRvIGRpc3BsYXkgdGhlIENvY2twaXQKLSMgY29uc29sZSBVUkwgYXQgdGhl IGxvZ2luIHByb21wdC4KLSMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9rbXNjb24va21zY29uL2lz c3Vlcy80MDcgZm9yIG1vcmUgZGV0YWlscwotUGF0Y2gxMDogMDAwMS1Vc2UtYWdldHR5LW9uLUZl ZG9yYS5wYXRjaAorIyBhZ2V0dHkgdmVyc2lvbiBvbiBGZWRvcmEgPCA0NSBwcmludHMgdGhlIC9l dGMvaXNzdWUgZmlsZSB0d2ljZQorIyB3aXRob3V0IHRoaXMgd29ya2Fyb3VuZAorUGF0Y2g6IFdv cmthcm91bmQtYWdldHR5LWlzc3VlLWZpbGUtb24tRmVkb3JhLnBhdGNoCiAKICVkZXNjcmlwdGlv bgogS21zY29uIGlzIGEgc2ltcGxlIHRlcm1pbmFsIGVtdWxhdG9yIGJhc2VkIG9uIGxpbnV4IGtl cm5lbCBtb2RlIHNldHRpbmcgKEtNUykuCgpkaWZmIC0tZ2l0IGEvbG9jYWxlY3RsX3N1cHBvcnQu cGF0Y2ggYi9sb2NhbGVjdGxfc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggM2ZkNTE3ZC4uMDAwMDAwMAotLS0gYS9sb2NhbGVjdGxfc3VwcG9ydC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDI4MDcgKzAsMCBAQAotRnJvbSA1MTlhNTdiODU0Njk3N2QwMzc4YWM0 OTEwNjU3OTdkMzA0MGY5MTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9jZWx5 biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgotRGF0ZTogRnJpLCA1IEp1biAyMDI2IDEy OjA4OjU2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNxdWFzaGVkIGNvbW1pdCBvZiB0aGUgZm9s bG93aW5nOgotCi1jb21taXQgMjFhN2Y0MTI2NmE4ODExNjk2MDk0NTJkM2QzZDc2MjNjMTA0MDRh ZQotQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci1EYXRlOiAg IEZyaSBKdW4gNSAxMToxMTo0MiAyMDI2ICswMjAwCi0KLSAgICBkYnVzOiBMaXN0ZW4gdG8gbG9j YWxlMSBwcm9wZXJ0eSBjaGFuZ2VzCi0KLSAgICBBbmQgdXBkYXRlIHRoZSBrZXlib2FyZCBsYXlv dXQgYWNjb3JkaW5nbHkuCi0KLSAgICBEb24ndCBsaXN0ZW4gdG8gbG9jYWxlMSBwcm9wZXJ0eSBj aGFuZ2VzIGlmIHRoZSBrZXlib2FyZCBsYXlvdXQgd2FzCi0gICAgc2V0IGluIHRoZSBjb25maWcg ZmlsZSBvciBpbiBjb21tYW5kIGxpbmUgYXJndW1lbnQuCi0KLSAgICBUaGlzIGFsbG93cyB0byB1 c2UgYGxvY2FsZWN0bCBzZXQta2V5bWFwYCB0byBjaGFuZ2UgdGhlIGtleWJvYXJkCi0gICAgbGF5 b3V0IGF0IHJ1bnRpbWUuCi0gICAgT25lIGRpZmZlcmVuY2UgZnJvbSAibG9hZGtleXMiIGlzIHRo YXQgdGhpcyBpcyBhIHN5c3RlbS13aWRlIHNldHRpbmcsCi0gICAgYW5kIHRoYXQgaXQgd2lsbCBh ZmZlY3QgYWxsIGttc2NvbiBpbnN0YW5jZSBvbiBhbGwgdHR5LgotCi0gICAgU2lnbmVkLW9mZi1i eTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgotCi1jb21taXQgOTliNWU3 ZTg0MDAzNWY5ZjZhNDM3Y2I0ZDFjNTA2YmUwODVjYmQ5MgotQXV0aG9yOiBKb2NlbHluIEZhbGVt cGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci1EYXRlOiAgIEZyaSBKdW4gNSAxMDo0ODoyMSAyMDI2 ICswMjAwCi0KLSAgICBjb25mOiBVc2UgTlVMTCBmb3IgZGVmYXVsdCB4a2IgY29uZmlnIHZhcmlh YmxlCi0KLSAgICBUaGlzIGJldHRlciBmaXQgbGlieGtiY29tbW9uIEFQSQotICAgIFJlbW92ZSB0 aGUgd29ya2Fyb3VuZCBpbiBpbnB1dCwgYXMgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LgotCi0g ICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgot Ci1jb21taXQgMzAxMDAwOGM1ZDgxMGE3OTRiNDdlMzhiZWZiZDc4MGY0MDZjNDkwNAotQXV0aG9y OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci1EYXRlOiAgIEZyaSBKdW4g NSAxMDoyMjowMSAyMDI2ICswMjAwCi0KLSAgICBpbnB1dDogQWRkIGlucHV0X3VwZGF0ZV9rZXlt YXAoKSB0byBjaGFuZ2UgdGhlIGtleW1hcCBhdCBydW50aW1lCi0KLSAgICBTaWduZWQtb2ZmLWJ5 OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci0KLWNvbW1pdCBkNzE2ZDcy Y2FlNjMzMWU2ODFhMGYwYTM3ZGZhNGFkMmNjNDkzNjZkCi1BdXRob3I6IEpvY2VseW4gRmFsZW1w ZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KLURhdGU6ICAgRnJpIEp1biA1IDEwOjE2OjA5IDIwMjYg KzAyMDAKLQotICAgIGlucHV0OiBzcGxpdCBrZXlib2FyZCBsYXlvdXQgYW5kIGNvbXBvc2UgaW5p dGlhbGl6YXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVt cGVAcmVkaGF0LmNvbT4KLQotY29tbWl0IDBkZmZiZDdhMjdkYjdmMjM4MDZjZmFiMGVjZDUzNjll NWY3YjE1Y2EKLUF1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgot RGF0ZTogICBUaHUgSnVuIDQgMDA6Mzg6MjAgMjAyNiArMDIwMAotCi0gICAgc2Vzc2lvbjogU2lt cGxpZnkgc2Vzc2lvbiBtYW5hZ2VtZW50Ci0KLSAgICBEaXJlY3RseSBzd2l0Y2ggZnJvbSBvbmUg c2Vzc2lvbiB0byBhbm90aGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBl IDxqZmFsZW1wZUByZWRoYXQuY29tPgotCi1jb21taXQgZmE0MmQ2ZDBhZGY4MDZhMDUzNDllZmVk Y2VhYTgwMWRmNzdhY2E2ZAotQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhh dC5jb20+Ci1EYXRlOiAgIFdlZCBKdW4gMyAxNzozNzo0NyAyMDI2ICswMjAwCi0KLSAgICB0ZXJt aW5hbDogcGFzcyBkaXJlY3RseSB0aGUgc2VhdCBpbnB1dCwgY29uZiwgbmFtZSBhbmQgZWxvb3AK LQotICAgIFRoaXMgYXZvaWQgdG8gdXNlIGttc2Nvbl9zZWF0X2dldF94eHgoKSBmb3IgZWFjaC4K LQotICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNv bT4KLQotY29tbWl0IDIxMDExYjE1NjFjOTE5OWZkYWUyYTE1NjZkMjdlNDNiNjdiY2MwYjYKLUF1 dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgotRGF0ZTogICBXZWQg SnVuIDMgMTY6MjQ6MjQgMjAyNiArMDIwMAotCi0gICAgc2Vzc2lvbjogUmVtb3ZlIHNlc3Npb24g Y2FsbGJhY2sKLQotICAgIEFzIHRlcm1pbmFsIHNlc3Npb25zIGFyZSB0aGUgb25seSBzZXNzaW9u IGF2YWlsYWJsZSwgcmVtb3ZlIHRoZQotICAgIGNhbGxiYWNrcywgYW5kIGNhbGwgZGlyZWN0bHkg dGhlIGNvcnJlc3BvbmRpbmcgdGVybWluYWwgZnVuY3Rpb25zLgotCi0gICAgU2lnbmVkLW9mZi1i eTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgotCi1jb21taXQgMTJjMTA3 MmQyNTRlNmIwNDgxOTg1MDYzMGRlZjkwMjhlMGNmOGQxOQotQXV0aG9yOiBKb2NlbHluIEZhbGVt cGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci1EYXRlOiAgIFdlZCBKdW4gMyAxMjoyNjoxMyAyMDI2 ICswMjAwCi0KLSAgICBkdW1teV9zZXNzaW9uOiBSZW1vdmUgZHVtbXkgc2Vzc2lvbnMKLQotICAg IEttc2NvbiB3YW50ZWQgdG8gcHJvdmlkZSBkaWZmZXJlbnQgdHlwZSBvZiBzZXNzaW9uLCBidXQg b25seSB0aGUKLSAgICB0ZXJtaW5hbCBzZXNzaW9uIGlzIHVzZWQuCi0gICAgRHVtbXkgc2Vzc2lv biBpcyBqdXN0IGEgYmxhY2sgc2NyZWVuLCBzbyBoYXMgbm8gcmVhbCB1c2FnZS4KLQotICAgIExl dCdzIGZvY3VzIG9uIHRlcm1pbmFsIHNlc3Npb25zLCBhbmQgcmVtb3ZlIHRoZSBkdW1teSBzZXNz aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRo YXQuY29tPgotCi1jb21taXQgYTZlNzgxNTNhNTY5MDY1OWQ5OWU1ODdmZTc3MGVjYTRiNTZkMDlh ZAotQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci1EYXRlOiAg IE1vbiBKdW4gMSAyMzo0MTozMiAyMDI2ICswMjAwCi0KLSAgICBSZW1vdmUgc3RhcnR1cCBzY3Jp cHQsIGFzIGl0IGlzIG5vIG1vcmUgbmVjZXNzYXJ5Ci0KLSAgICBrbXNjb24gbm93IHJldHJpZXZl IHhrYiBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRpcmVjdGx5IGZvcm0gZGJ1cywKLSAgICBzbyB0 aGVyZSBpcyBubyBuZWVkIGZvciB0aGUgc3RhcnR1cCBzY3JpcHQuCi0KLSAgICBTaWduZWQtb2Zm LWJ5OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci0KLWNvbW1pdCAwNmJi NzQxMzI5MmQ3YzU1NmZmYzgxN2JjMzA3NWMzYzNjOTZmYjBjCi1BdXRob3I6IEpvY2VseW4gRmFs ZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KLURhdGU6ICAgVGh1IE1heSAyMSAxODowOTo1MSAy MDI2ICswMjAwCi0KLSAgICBVc2UgbGliZGJ1cyBkaXJlY3RseSB0byBnZXQgbG9jYWxlCi0KLSAg ICBTaWduZWQtb2ZmLWJ5OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci0K LWNvbW1pdCA4NDUwMTY4NGRiN2RkYTYwNjIwOWM0YzdhZTA0ZjdlNjZkOTY0ODA5Ci1BdXRob3I6 IEZhYmlhbiBWb2d0IDxmdm9ndEBzdXNlLmRlPgotRGF0ZTogICBUdWUgSnVuIDIgMTI6MzE6MDUg MjAyNiArMDIwMAotCi0gICAgZnJlZXR5cGU6IEVuYWJsZSBsaWdodCBoaW50aW5nCi0KLSAgICBO b3QgaGludGluZyBhdCBhbGwgcmVzdWx0cyBpbiBibHVycnkgZWRnZXMsIGVzcGVjaWFsbHkgdmlz aWJsZSB3aXRoIHN0cmFpZ2h0Ci0gICAgbGluZXMgaW4gY29tbW9uIGNoYXJhY3RlcnMgc3VjaCBh cyAiLVtdIi4KLQotICAgIExpZ2h0IGhpbnRpbmcgaW4gRnJlZVR5cGUgaGFzIHRoZSBuaWNlIHBy b3BlcnR5IHRoYXQgaXQgb25seSB0cmllcyB0bwotICAgIGFsaWduIGVkZ2VzIHZlcnRpY2FsbHks IHNvIHRoZSB3aWR0aCBvZiBnbHlwaHMgZG9lcyBub3QgY2hhbmdlLCBwcmVzZXJ2aW5nCi0gICAg bW9ub3NwYWNlbmVzcy4KLQotY29tbWl0IGQ3ODlkMWMzNTE3ZDk5N2YxMjcxYTM4YjQ1OTRjMjk4 OThlYWYxOTkKLUF1dGhvcjogRmFiaWFuIFZvZ3QgPGZ2b2d0QHN1c2UuZGU+Ci1EYXRlOiAgIE1v biBKdW4gMSAxNzowMzo0NyAyMDI2ICswMjAwCi0KLSAgICBEZWZpbmUgZGVmYXVsdCBpc3N1ZSBz ZWFyY2ggcGF0aCBpbiBhIHNpbmdsZSBwbGFjZQotCi0gICAgSXQgd2FzIGhhcmRjb2RlZCBpbiBm b3VyIGRpZmZlcmVudCBwbGFjZXMsIG9mIHdoaWNoIG9ubHkgb25lIGhhcyBhbiBhY3R1YWwKLSAg ICBlZmZlY3QuIENvbnNvbGlkYXRlIGl0LgotCi1jb21taXQgNDRjMGRmMTJmZjIwMmViODQzOTRl YTBjOGUwNTk4OTQ1NjNmZTUwMQotQXV0aG9yOiBBZGFtIER1c2tldHQgPGFkYW0uZHVza2V0dEBh bWFydWxhc29sdXRpb25zLmNvbT4KLURhdGU6ICAgVGh1IE1heSAyMSAxNjoyNDoyMyAyMDI2ICsw MjAwCi0KLSAgICBmaXggemxpYiBjcm9zcy1jb21waWxpbmcgZXJyb3JzCi0KLSAgICB6bGliIGNv bXByZXNzaW9uIHdhcyBpbnRyb2R1Y2VkIGluIHZlcnNpb24gOS4zLjMuIEhvd2V2ZXIsIHdoZW4K LSAgICBjcm9zcy1jb21waWxpbmcga21zY29uIGZvciBhbiBhcmNoaXRlY3R1cmUgb3RoZXIgdGhh biB4ODZfNjQsIHRoZQotICAgIGdlbnVuaWZvbnQgZXhlY3V0YWJsZSB0cmllcyB0byB1c2UgdGhl IGJ1aWxkLXN5c3RlbXMgemxpYiBpbnN0ZWFkCi0gICAgb2YgdGhlIGhvc3RzIHpsaWIuCi0KLSAg ICBUaGlzIGxlYWRzIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3IgZHVyaW5nIGNvbXBpbGluZzoKLSAg ICBsaWJ6LnNvOiBlcnJvciBhZGRpbmcgc3ltYm9sczogZmlsZSBpbiB3cm9uZyBmb3JtYXQKLQot ICAgIEZpeCB0aGlzIGJ5IGFkZGluZyBhIG5ldyBuYXRpdmUgemxpYiBkZXBlbmRlbmN5IHNwZWNp ZmljYWxseSBmb3IgdGhlCi0gICAgZ2VudW5pZm9udCBleGVjdXRhYmxlLgotLS0tCi0gUkVBRE1F Lm1kICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAtCi0gZG9jcy9tYW4va21zY29uLjEueG1s LmluICAgICAgICB8ICAyOSArLQotIGRvY3MvbWFuL2ttc2Nvbi5jb25mLjUueG1sLmluICAgfCAg MTQgLQotIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KLSBtZXNvbi5v cHRpb25zICAgICAgICAgICAgICAgICAgIHwgICA4ICstCi0gc2NyaXB0cy9ldGMva21zY29uLmNv bmYuZXhhbXBsZSB8ICAgMSAtCi0gc2NyaXB0cy9rbXNjb24uaW4gICAgICAgICAgICAgICB8ICA2 MyAtLS0tCi0gc3JjL2RidXMuYyAgICAgICAgICAgICAgICAgICAgICB8IDM2OCArKysrKysrKysr KysrKysrKysrCi0gc3JjL3trbXNjb25fZHVtbXkuaCA9PiBkYnVzLmh9ICB8ICA1MyArLS0KLSBz cmMvZm9udC9mb250X2ZyZWV0eXBlLmMgICAgICAgIHwgICA0ICstCi0gc3JjL2ZvbnQvbWVzb24u YnVpbGQgICAgICAgICAgICB8ICAgNCArLQotIHNyYy9pbnB1dC9pbnB1dC5jICAgICAgICAgICAg ICAgfCAgNjAgKysrLQotIHNyYy9pbnB1dC9pbnB1dC5oICAgICAgICAgICAgICAgfCAgIDcgKy0K LSBzcmMvaW5wdXQvaW5wdXRfaW50ZXJuYWwuaCAgICAgIHwgIDEwICstCi0gc3JjL2lucHV0L2lu cHV0X3V4a2IuYyAgICAgICAgICB8ICAzMyArLQotIHNyYy9rbXNjb25fY29uZi5jICAgICAgICAg ICAgICAgfCAgMjYgKy0KLSBzcmMva21zY29uX2NvbmYuaCAgICAgICAgICAgICAgIHwgICA0IC0K LSBzcmMva21zY29uX2R1bW15LmMgICAgICAgICAgICAgIHwgMTU0IC0tLS0tLS0tCi0gc3JjL2tt c2Nvbl9pc3N1ZS5jICAgICAgICAgICAgICB8ICAxMCAtCi0gc3JjL2ttc2Nvbl9pc3N1ZS5oICAg ICAgICAgICAgICB8ICAgOSArCi0gc3JjL2ttc2Nvbl9tYWluLmMgICAgICAgICAgICAgICB8ICAz MyArKwotIHNyYy9rbXNjb25fc2VhdC5jICAgICAgICAgICAgICAgfCA2MDIgKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMva21zY29uX3NlYXQuaCAgICAgICAgICAgICAgIHwg IDQxICstLQotIHNyYy9rbXNjb25fdGVybWluYWwuYyAgICAgICAgICAgfCAgOTggKystLS0tCi0g c3JjL2ttc2Nvbl90ZXJtaW5hbC5oICAgICAgICAgICB8ICAzNCArLQotIHNyYy9tZXNvbi5idWls ZCAgICAgICAgICAgICAgICAgfCAgMjUgKy0KLSBzcmMvc2hsL2RsaXN0LmggICAgICAgICAgICAg ICAgIHwgIDEwICsKLSB0ZXN0cy90ZXN0X2lucHV0LmMgICAgICAgICAgICAgIHwgICA3ICstCi0g MjggZmlsZXMgY2hhbmdlZCwgNzUxIGluc2VydGlvbnMoKyksIDk2OCBkZWxldGlvbnMoLSkKLSBk ZWxldGUgbW9kZSAxMDA3NTUgc2NyaXB0cy9rbXNjb24uaW4KLSBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2RidXMuYwotIHJlbmFtZSBzcmMve2ttc2Nvbl9kdW1teS5oID0+IGRidXMuaH0gKDUwJSkK LSBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2ttc2Nvbl9kdW1teS5jCi0KLWRpZmYgLS1naXQgYS9S RUFETUUubWQgYi9SRUFETUUubWQKLWluZGV4IDg2NzU0MTMuLjNiZjQ5MTIgMTAwNjQ0Ci0tLS0g YS9SRUFETUUubWQKLSsrKyBiL1JFQURNRS5tZAotQEAgLTgyLDggKzgyLDYgQEAgZXhwbGljaXRs eSBlbmFibGUgaXQgdmlhIGNvbW1hbmQgbGluZToKLSB8YGZvbnRfZnJlZXR5cGVgfCBgYXV0b2Ag fCBGcmVldHlwZTIgYmFzZWQgc2NhbGFibGUgZm9udCByZW5kZXJlciwgYWxzbyBoYW5kbGUgYml0 bWFwIGZvbnRzIHwKLSB8YGZvbnRfcGFuZ29gfCBgYXV0b2AgfCBQYW5nbyBiYXNlZCBzY2FsYWJs ZSBmb250IHJlbmRlcmVyIHwKLSB8YHJlbmRlcmVyX2dsdGV4YHwgYGF1dG9gIHwgT3BlbkdMRVN2 MiBhY2NlbGVyYXRlZCByZW5kZXJlciB8Ci0tfGBzZXNzaW9uX2R1bW15YHwgYGF1dG9gIHwgRHVt bXkgZmFsbGJhY2sgc2Vzc2lvbiB8Ci0tfGBzZXNzaW9uX3Rlcm1pbmFsYHwgYGF1dG9gIHwgVGVy bWluYWwtZW11bGF0b3Igc2Vzc2lvbnMgfAotIHxgZG9jc2B8YGF1dG9gfCBCdWlsZCBtYW5wYWdl cyBhbmQgZG9jdW1lbnRhdGlvbiB8Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvZG9jcy9tYW4va21zY29u LjEueG1sLmluIGIvZG9jcy9tYW4va21zY29uLjEueG1sLmluCi1pbmRleCAwNTM4MTg2Li4yNWNm MjlhIDEwMDY0NAotLS0tIGEvZG9jcy9tYW4va21zY29uLjEueG1sLmluCi0rKysgYi9kb2NzL21h bi9rbXNjb24uMS54bWwuaW4KLUBAIC0xODcsMTQgKzE4Nyw2IEBACi0gICAgICAgICAgICAgICAg IHNlc3Npb25zIHZpYSBrZXlib2FyZCBpbnB1dC4gKGRlZmF1bHQ6IG9mZik8L3BhcmE+Ci0gICAg ICAgICA8L2xpc3RpdGVtPgotICAgICAgIDwvdmFybGlzdGVudHJ5PgotLQotLSAgICAgIDx2YXJs aXN0ZW50cnk+Ci0tICAgICAgICA8dGVybT48b3B0aW9uPi0tdGVybWluYWwtc2Vzc2lvbjwvb3B0 aW9uPjwvdGVybT4KLS0gICAgICAgIDxsaXN0aXRlbT4KLS0gICAgICAgICAgPHBhcmE+U3RhcnQg YSB0ZXJtaW5hbCBzZXNzaW9uIGFmdGVyIHNldHVwIGlzIGRvbmUuCi0tICAgICAgICAgICAgICAg IChkZWZhdWx0OiBvbik8L3BhcmE+Ci0tICAgICAgICA8L2xpc3RpdGVtPgotLSAgICAgIDwvdmFy bGlzdGVudHJ5PgotICAgICA8L3ZhcmlhYmxlbGlzdD4KLSAKLSAgICAgPHBhcmE+VGVybWluYWwg T3B0aW9uczo8L3BhcmE+Ci1AQCAtNDYzLDE0ICs0NTUsNiBAQAotICAgICAgICAgPC9saXN0aXRl bT4KLSAgICAgICA8L3Zhcmxpc3RlbnRyeT4KLSAKLS0gICAgICA8dmFybGlzdGVudHJ5PgotLSAg ICAgICAgPHRlcm0+PG9wdGlvbj4tLWdyYWItc2Vzc2lvbi1kdW1teSB7Z3JhYn08L29wdGlvbj48 L3Rlcm0+Ci0tICAgICAgICA8bGlzdGl0ZW0+Ci0tICAgICAgICAgIDxwYXJhPlN3aXRjaCB0byBh IGR1bW15IHNlc3Npb24gKGJsYW5rIHNjcmVlbikuCi0tICAgICAgICAgICAgICAgIChkZWZhdWx0 OiAmbHQ7Q3RybCZndDsmbHQ7TG9nbyZndDtFc2NhcGUpPC9wYXJhPgotLSAgICAgICAgPC9saXN0 aXRlbT4KLS0gICAgICA8L3Zhcmxpc3RlbnRyeT4KLS0KLSAgICAgICA8dmFybGlzdGVudHJ5Pgot ICAgICAgICAgPHRlcm0+PG9wdGlvbj4tLWdyYWItc2Vzc2lvbi1jbG9zZSB7Z3JhYn08L29wdGlv bj48L3Rlcm0+Ci0gICAgICAgICA8bGlzdGl0ZW0+Ci1AQCAtODg2LDE2ICs4NzAsMTEgQEAKLSAg IDxyZWZzZWN0MT4KLSAgICAgPHRpdGxlPlNlc3Npb25zPC90aXRsZT4KLSAgICAgPHBhcmE+SWYg S01TQ09OIGlzIGFjdGl2ZSBvbiBhIHNlYXQsIHRoZSBpbnRlcm5hbCBzZXNzaW9uLW1hbmFnZXIg aXMgd29rZW4KLS0gICAgICAgICAgdXAuIEF0IG1vc3QgdGltZXMsIG9ubHkgdGhlIHRlcm1pbmFs LXNlc3Npb24gaXMgYWN0aXZlLCBidXQgS01TQ09OIGNhbgotLSAgICAgICAgICBhbHNvIHN1cHBv cnQgYW55IG90aGVyIHNlc3Npb24gdHlwZS4gWW91IGNhbiBzd2l0Y2ggYmV0d2VlbiBzZXNzaW9u cwotLSAgICAgICAgICB3aXRoIGtleWJvYXJkLXNob3J0Y3V0cyBhbmQgeW91IGNhbiBjcmVhdGUv ZGVzdHJveSBzZXNzaW9ucyBkdXJpbmcKLS0gICAgICAgICAgcnVudGltZS48L3BhcmE+Ci0tCi0t ICAgIDxwYXJhPkR1bW15IHNlc3Npb25zIHNpbXBseSBzaG93IGEgYmxhY2sgc2NyZWVuIGFuZCBh cmUgdXNlZCBpZiBubyBvdGhlcgotLSAgICAgICAgICBzZXNzaW9uIGlzIGF2YWlsYWJsZS4gT3Ro ZXJ3aXNlLCBkdW1teSBzZXNzaW9ucyBhcmUgaGlkZGVuIGZyb20gdGhlCi0tICAgICAgICAgIHVz ZXIgc28gdGhleSBjYW5ub3Qgc3dpdGNoIHRvIGl0LjwvcGFyYT4KLSsgICAgICAgICAgdXAuIEF0 IG1vc3QgdGltZXMsIG9ubHkgdGhlIHRlcm1pbmFsLXNlc3Npb24gaXMgYWN0aXZlLiBZb3UgY2Fu IHN3aXRjaAotKyAgICAgICAgICBiZXR3ZWVuIHNlc3Npb25zIHdpdGgga2V5Ym9hcmQtc2hvcnRj dXRzIGFuZCB5b3UgY2FuIGNyZWF0ZS9kZXN0cm95Ci0rICAgICAgICAgIHRlcm1pbmFsIHNlc3Np b25zIGR1cmluZyBydW50aW1lLjwvcGFyYT4KLSAKLS0gICAgPHBhcmE+VGVybWluYWwgc2Vzc2lv bnMgcHJvdmlkZSBhIHRlcm1pbmFsIGVtdWxhdG9yLiBUaGV5IGFyZSB0aGUgbWFpbgotKyAgICA8 cGFyYT5UZXJtaW5hbCBzZXNzaW9ucyBwcm92aWRlIGEgdGVybWluYWwgZW11bGF0b3IuIFRoZXkg YXJlIHRoZSBvbmx5Ci0gICAgICAgICAgIHNlc3Npb24gdHlwZSBhbmQgcHJvdmlkZSBhbGwgdGhl IHRlcm1pbmFsLWVtdWxhdGlvbgotICAgICAgICAgICBmdW5jdGlvbmFsaXR5LjwvcGFyYT4KLSAg IDwvcmVmc2VjdDE+Ci1kaWZmIC0tZ2l0IGEvZG9jcy9tYW4va21zY29uLmNvbmYuNS54bWwuaW4g Yi9kb2NzL21hbi9rbXNjb24uY29uZi41LnhtbC5pbgotaW5kZXggZGNhMDU2ZC4uOGFmNDU4MCAx MDA2NDQKLS0tLSBhL2RvY3MvbWFuL2ttc2Nvbi5jb25mLjUueG1sLmluCi0rKysgYi9kb2NzL21h bi9rbXNjb24uY29uZi41LnhtbC5pbgotQEAgLTE2MSwxMyArMTYxLDYgQEAgZm9udC1uYW1lPVVi dW50dSBNb25vCi0gICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgIDwvdmFybGlzdGVudHJ5Pgot IAotLSAgICAgIDx2YXJsaXN0ZW50cnk+Ci0tICAgICAgICA8dGVybT48b3B0aW9uPnRlcm1pbmFs LXNlc3Npb248L29wdGlvbj48L3Rlcm0+Ci0tICAgICAgICA8bGlzdGl0ZW0+Ci0tICAgICAgICAg IDxwYXJhPkVuYWJsZSB0ZXJtaW5hbCBzZXNzaW9uLiAoZGVmYXVsdDogb24pPC9wYXJhPgotLSAg ICAgICAgPC9saXN0aXRlbT4KLS0gICAgICA8L3Zhcmxpc3RlbnRyeT4KLS0KLSAgICAgICA8dmFy bGlzdGVudHJ5PgotICAgICAgICAgPHRlcm0+PG9wdGlvbj5sb2dpbjwvb3B0aW9uPjwvdGVybT4K LSAgICAgICAgIDxsaXN0aXRlbT4KLUBAIC0zNjgsMTMgKzM2MSw2IEBAIGZvbnQtbmFtZT1VYnVu dHUgTW9ubwotICAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICA8L3Zhcmxpc3RlbnRyeT4KLSAK LS0gICAgICA8dmFybGlzdGVudHJ5PgotLSAgICAgICAgPHRlcm0+PG9wdGlvbj5ncmFiLXNlc3Np b24tZHVtbXk8L29wdGlvbj48L3Rlcm0+Ci0tICAgICAgICA8bGlzdGl0ZW0+Ci0tICAgICAgICAg IDxwYXJhPlN3aXRjaCB0byBkdW1teSBzZXNzaW9uLiAoZGVmYXVsdDogJmx0O0N0cmwmZ3Q7Jmx0 O0xvZ28mZ3Q7RXNjYXBlKTwvcGFyYT4KLS0gICAgICAgIDwvbGlzdGl0ZW0+Ci0tICAgICAgPC92 YXJsaXN0ZW50cnk+Ci0tCi0gICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgIDx0ZXJtPjxv cHRpb24+Z3JhYi1zZXNzaW9uLWNsb3NlPC9vcHRpb24+PC90ZXJtPgotICAgICAgICAgPGxpc3Rp dGVtPgotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGRlODlk NzIuLjFhYTcyZjIgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQK LUBAIC01Myw2ICs1Myw3IEBAIGxpYnVkZXZfZGVwcyA9IGRlcGVuZGVuY3koJ2xpYnVkZXYnLCB2 ZXJzaW9uOiAnPj0xNzInKQotIGRsX2RlcHMgPSBkZXBlbmRlbmN5KCdkbCcpCi0gdGhyZWFkc19k ZXBzID0gZGVwZW5kZW5jeSgndGhyZWFkcycpCi0gemxpYl9kZXBzID0gZGVwZW5kZW5jeSgnemxp YicpCi0remxpYl9kZXBzX25hdGl2ZSA9IGRlcGVuZGVuY3koJ3psaWInLCBuYXRpdmU6IHRydWUp Ci0gCi0gcHl0aG9uID0gZmluZF9wcm9ncmFtKCdweXRob24zJykKLSAKLUBAIC03NSw2ICs3Niw3 IEBAIGdsZXN2Ml9kZXBzID0gZGVwZW5kZW5jeSgnZ2xlc3YyJywgZGlzYWJsZXI6IHRydWUsIHJl cXVpcmVkOiByZXF1aXJlX2dsZXN2MikKLSBwYW5nb19kZXBzID0gZGVwZW5kZW5jeSgncGFuZ29m dDInLCBkaXNhYmxlcjogdHJ1ZSwgcmVxdWlyZWQ6IGdldF9vcHRpb24oJ2ZvbnRfcGFuZ28nKSkK LSBmcmVldHlwZV9kZXBzID0gZGVwZW5kZW5jeSgnZnJlZXR5cGUyJywgZGlzYWJsZXI6IHRydWUs IHJlcXVpcmVkOiBnZXRfb3B0aW9uKCdmb250X2ZyZWV0eXBlJykpCi0gZm9udGNvbmZpZ19kZXBz ID0gZGVwZW5kZW5jeSgnZm9udGNvbmZpZycsIGRpc2FibGVyOiB0cnVlLCByZXF1aXJlZDogZ2V0 X29wdGlvbignZm9udF9mcmVldHlwZScpKQotK2RidXNfZGVwcyA9IGRlcGVuZGVuY3koJ2RidXMt MScsIGRpc2FibGVyOiB0cnVlLCByZXF1aXJlZDogZ2V0X29wdGlvbignZGJ1cycpKQotIHhzbHRw cm9jID0gZmluZF9wcm9ncmFtKCd4c2x0cHJvYycsIG5hdGl2ZTogdHJ1ZSwgZGlzYWJsZXI6IHRy dWUsIHJlcXVpcmVkOiBnZXRfb3B0aW9uKCdkb2NzJykpCi0gY2hlY2tfZGVwcyA9IGRlcGVuZGVu Y3koJ2NoZWNrJywgZGlzYWJsZXI6IHRydWUsIHJlcXVpcmVkOiBnZXRfb3B0aW9uKCd0ZXN0cycp KQotIHRpYyA9IGZpbmRfcHJvZ3JhbSgndGljJywgcmVxdWlyZWQ6IGZhbHNlKQotQEAgLTg5LDcg KzkxLDYgQEAgc2VjdGlvbnMgPSB7Ci0gICAndmlkZW8nOiAnVmlkZW8gQmFja2VuZHMnLAotICAg J2ZvbnQnOiAnRm9udCBCYWNrZW5kcycsCi0gICAncmVuZGVyZXInOiAnUmVuZGVyZXJzJywKLS0g ICdzZXNzaW9uJzogJ1Nlc3Npb24gVHlwZXMnLAotIH0KLSBjb25maWcgPSBjb25maWd1cmF0aW9u X2RhdGEoKQotICMgTm90ZToga2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgZGVwZW5kZW5jaWVz IGFib3ZlCi1AQCAtMTAyLDggKzEwMyw3IEBAIGZvcmVhY2ggbmFtZSwgcmVxcyA6IHsKLSAgICdm b250X3VuaWZvbnQnOiBbXSwKLSAgICdmb250X2ZyZWV0eXBlJzogW2ZyZWV0eXBlX2RlcHMsIGZv bnRjb25maWdfZGVwc10sCi0gICAnZm9udF9wYW5nbyc6IFtwYW5nb19kZXBzXSwKLS0gICdzZXNz aW9uX2R1bW15JzogW10sCi0tICAnc2Vzc2lvbl90ZXJtaW5hbCc6IFtdLAotKyAgJ2RidXMnOiBb ZGJ1c19kZXBzXSwKLSB9Ci0gICBmb3VuZCA9IHRydWUKLSAgIGZvcmVhY2ggcmVxIDogcmVxcwot QEAgLTE5NSwxMCArMTk1LDYgQEAgZWxzZQotICAgZGlyc19pbmZvLnNldCgnUEFNX0NGRycsICcn KQotIGVuZGlmCi0gZm9yZWFjaCBmaWxlbmFtZSwga3dhcmdzIDogewotLSAgJ3NjcmlwdHMva21z Y29uLmluJzogewotLSAgICAnaW5zdGFsbF9kaXInOiBiaW5kaXIsCi0tICAgICdpbnN0YWxsX21v ZGUnOiAncnd4ci14ci14JywKLS0gIH0sCi0gICAnc2NyaXB0cy9rbXNjb24tbGF1bmNoLWd1aS5z aCc6IHsKLSAgICAgJ2luc3RhbGxfZGlyJzogYmluZGlyLAotICAgICAnaW5zdGFsbF9tb2RlJzog J3J3eHIteHIteCcsCi1kaWZmIC0tZ2l0IGEvbWVzb24ub3B0aW9ucyBiL21lc29uLm9wdGlvbnMK LWluZGV4IDVjYWZhNjAuLmFmYTViMzIgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5vcHRpb25zCi0rKysg Yi9tZXNvbi5vcHRpb25zCi1AQCAtMjksOCArMjksNiBAQCBvcHRpb24oJ2ZvbnRfZnJlZXR5cGUn LCB0eXBlOiAnZmVhdHVyZScsIHZhbHVlOiAnYXV0bycsCi0gb3B0aW9uKCdmb250X3BhbmdvJywg dHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1dG8nLAotICAgZGVzY3JpcHRpb246ICdwYW5nbyBm b250IGJhY2tlbmQnKQotIAotLSMga21zY29uIHNlc3Npb25zCi0tb3B0aW9uKCdzZXNzaW9uX2R1 bW15JywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1dG8nLAotLSAgZGVzY3JpcHRpb246ICdk dW1teSBzZXNzaW9uJykKLS1vcHRpb24oJ3Nlc3Npb25fdGVybWluYWwnLCB0eXBlOiAnZmVhdHVy ZScsIHZhbHVlOiAnYXV0bycsCi0tICBkZXNjcmlwdGlvbjogJ3Rlcm1pbmFsIHNlc3Npb24nKQot KyMgZGJ1cyBpbnRlZ3JhdGlvbgotK29wdGlvbignZGJ1cycsIHR5cGU6ICdmZWF0dXJlJywgdmFs dWU6ICdhdXRvJywKLSsgIGRlc2NyaXB0aW9uOiAnZGJ1cyBpbnRlZ3JhdGlvbicpCi1kaWZmIC0t Z2l0IGEvc2NyaXB0cy9ldGMva21zY29uLmNvbmYuZXhhbXBsZSBiL3NjcmlwdHMvZXRjL2ttc2Nv bi5jb25mLmV4YW1wbGUKLWluZGV4IGNhMjIzMmUuLmJlNDVhNGEgMTAwNjQ0Ci0tLS0gYS9zY3Jp cHRzL2V0Yy9rbXNjb24uY29uZi5leGFtcGxlCi0rKysgYi9zY3JpcHRzL2V0Yy9rbXNjb24uY29u Zi5leGFtcGxlCi1AQCAtNjYsNyArNjYsNiBAQAotICNncmFiLXpvb20tb3V0PTxDdHJsPk1pbnVz Ci0gI2dyYWItc2Vzc2lvbi1uZXh0PTxDdHJsPjxMb2dvPlJpZ2h0Ci0gI2dyYWItc2Vzc2lvbi1w cmV2PTxDdHJsPjxMb2dvPkxlZnQKLS0jZ3JhYi1zZXNzaW9uLWR1bW15PTxDdHJsPjxMb2dvPkVz Y2FwZQotICNncmFiLXNlc3Npb24tY2xvc2U9PEN0cmw+PExvZ28+QmFja1NwYWNlCi0gI2dyYWIt dGVybWluYWwtbmV3PTxDdHJsPjxMb2dvPlJldHVybgotICNncmFiLXJvdGF0ZS1jdz08TG9nbz5Q bHVzCi1kaWZmIC0tZ2l0IGEvc2NyaXB0cy9rbXNjb24uaW4gYi9zY3JpcHRzL2ttc2Nvbi5pbgot ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCA2NTQ1Mzk5Li4wMDAwMDAwCi0tLS0gYS9z Y3JpcHRzL2ttc2Nvbi5pbgotKysrIC9kZXYvbnVsbAotQEAgLTEsNjMgKzAsMCBAQAotLSMhL2Jp bi9zaAotLSMKLS0jIENvcHlyaWdodCAoYykgMjAxOCBBZXRmIDxhZXRmQHVubGltaXRlZGNvZGV3 b3Jrcy54eXo+Ci0tIyBDb3B5cmlnaHQgKGMpIDIwMTggRmFiaWFuIFZvZ3QgPGZ2b2d0QHN1c2Uu Y29tPgotLSMKLS0jIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS0jIG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFs Ci0tIyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0tIyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0tIyBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh cmUgaXMKLS0jIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Ci0tIwotLSMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCi0tIyBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLSMKLS0jIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCi0tIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS0jIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLSMgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgotLSMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS0jIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhF Ci0tIyBTT0ZUV0FSRS4KLS0KLS0jIGNvbmZpZ3VyYXRpb24gcGF0aAotLWhlbHBlcmRpcj1AbGli ZXhlY2RpckAKLS0KLS0jIEdldCBhIHByb3BlcnR5IGZyb20gb3JnLmZyZWVkZXNrdG9wLmxvY2Fs ZTEKLS1xdWVyeUxvY2FsZWRidXMoKSB7Ci0tICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLXByaW50 LXJlcGx5PWxpdGVyYWwgLS1kZXN0PW9yZy5mcmVlZGVza3RvcC5sb2NhbGUxIC9vcmcvZnJlZWRl c2t0b3AvbG9jYWxlMSBvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzLkdldCAic3RyaW5n Om9yZy5mcmVlZGVza3RvcC5sb2NhbGUxIiAic3RyaW5nOlgxMSQxIiAyPi9kZXYvbnVsbCB8IGF3 ayAne3ByaW50ICQyfScKLS19Ci0tCi0tcXVlcnlMb2NhbGVjdGwoKSB7Ci0tICAgIGxvY2FsZWN0 bCBzdGF0dXMgfCBhd2sgIi9YMTEgJDEvIHtwcmludCBcJDN9IgotLX0KLS0KLS0jIFF1ZXJ5IGFu ZCBzZXR1cCBzeXN0ZW0gbG9jYWxlIHNldHRpbmdzIGJlZm9yZSBzdGFydCBrbXNjb24KLS1zZXR1 cExvY2FsZSgpIHsKLS0gICAgIyBEb24ndCBvdmVycmlkZSBleGlzdGluZyB2YWx1ZXMuIEFsc28g dGhlcmUgaXMgbm8gcG9pbnQgaW4gc2V0dGluZyBvbmx5IHNvbWUgb2YgdGhlbQotLSAgICAjIGFz IHRoZW4gdGhleSB3b3VsZCBub3QgbWF0Y2ggYW55bW9yZS4KLS0gICAgaWYgdGVzdCAtbiAiJHtY S0JfREVGQVVMVF9NT0RFTH0iIC1vIC1uICIke1hLQl9ERUZBVUxUX0xBWU9VVH0iIC1vIC1uICIk e1hLQl9ERUZBVUxUX1ZBUklBTlR9IiAtbyAtbiAiJHtYS0JfREVGQVVMVF9PUFRJT05TfSI7IHRo ZW4KLS0gICAgICAgIHJldHVybgotLSAgICBmaQotLQotLSAgICBpZiBjb21tYW5kIC12IGRidXMt c2VuZCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCi0tICAgICAgICBxdWVyeWNtZD0icXVl cnlMb2NhbGVkYnVzIgotLSAgICBlbGlmIGNvbW1hbmQgLXYgbG9jYWxlY3RsID4vZGV2L251bGwg Mj4vZGV2L251bGw7IHRoZW4KLS0gICAgICAgIHF1ZXJ5Y21kPSJxdWVyeUxvY2FsZWN0bCIKLS0g ICAgZWxzZQotLSAgICAgICAgcmV0dXJuCi0tICAgIGZpCi0tCi0tICAgIFgxMU1PREVMPSIkKCR7 cXVlcnljbWR9IE1vZGVsKSIKLS0gICAgWDExTEFZT1VUPSIkKCR7cXVlcnljbWR9IExheW91dCki Ci0tICAgIFgxMVZBUklBTlQ9IiQoJHtxdWVyeWNtZH0gVmFyaWFudCkiCi0tICAgIFgxMU9QVElP TlM9IiQoJHtxdWVyeWNtZH0gT3B0aW9ucykiCi0tICAgIFsgLW4gIiR7WDExTU9ERUx9IiBdICYm IGV4cG9ydCBYS0JfREVGQVVMVF9NT0RFTD0iJHtYMTFNT0RFTH0iCi0tICAgIFsgLW4gIiR7WDEx TEFZT1VUfSIgXSAmJiBleHBvcnQgWEtCX0RFRkFVTFRfTEFZT1VUPSIke1gxMUxBWU9VVH0iCi0t ICAgIFsgLW4gIiR7WDExVkFSSUFOVH0iIF0gJiYgZXhwb3J0IFhLQl9ERUZBVUxUX1ZBUklBTlQ9 IiR7WDExVkFSSUFOVH0iCi0tICAgIFsgLW4gIiR7WDExT1BUSU9OU30iIF0gJiYgZXhwb3J0IFhL Ql9ERUZBVUxUX09QVElPTlM9IiR7WDExT1BUSU9OU30iCi0tfQotLQotLXNldHVwTG9jYWxlCi0t ZXhlYyAke2hlbHBlcmRpcn0va21zY29uICIkQCIKLWRpZmYgLS1naXQgYS9zcmMvZGJ1cy5jIGIv c3JjL2RidXMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg0YzQ2N2QK LS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9kYnVzLmMKLUBAIC0wLDAgKzEsMzY4IEBACi0rLyoK LSsgKiBkYnVzIC0gRC1CdXMgc3VwcG9ydAotKyAqCi0rICogQ29weXJpZ2h0IChjKSAyMDI2IFJl ZCBIYXQuCi0rICogQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+ Ci0rICoKLSsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSsgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzCi0rICogKHRoZSAiU29mdHdhcmUiKSwgdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rICog d2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLAotKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotKyAqIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKLSsgKgotKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0rICogaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rICoKLSsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUwotKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YKLSsgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0rICogSU4gTk8gRVZFTlQg U0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkK LSsgKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULAotKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCi0rICogU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0rICovCi0rCi0rI2luY2x1ZGUgPGRi dXMvZGJ1cy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsj aW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2luY2x1ZGUgImRidXMuaCIKLSsjaW5jbHVkZSAic2hs L2Vsb29wLmgiCi0rI2luY2x1ZGUgInNobC9sb2cuaCIKLSsKLSsjZGVmaW5lIExPR19TVUJTWVNU RU0gImRidXMiCi0rCi0rc3RydWN0IHJtbHZvIHsKLSsJY29uc3QgY2hhciAqbW9kZWw7Ci0rCWNv bnN0IGNoYXIgKmxheW91dDsKLSsJY29uc3QgY2hhciAqdmFyaWFudDsKLSsJY29uc3QgY2hhciAq b3B0aW9uczsKLSt9OwotKwotK3N0cnVjdCBrbXNjb25fZGJ1cyB7Ci0rCURCdXNDb25uZWN0aW9u ICpjb25uOwotKwlzdHJ1Y3QgZXZfZWxvb3AgKmVsb29wOwotKwlzdHJ1Y3QgZXZfZmQgKndhdGNo X2ZkOwotKwlkYnVzX3VwZGF0ZV94a2JfbGF5b3V0X2NiIGNiOwotKwl2b2lkICpkYXRhOwotK307 Ci0rCi0rc3RhdGljIHZvaWQgc2V0X2Vudl9mcm9tX2xvY2FsZTFfcHJvcGVydGllcyhEQnVzQ29u bmVjdGlvbiAqY29ubiwgY29uc3QgY2hhciAqcHJvcGVydHlfbmFtZSwKLSsJCQkJCSAgICBjb25z dCBjaGFyICplbnZfbmFtZSkKLSt7Ci0rCURCdXNFcnJvciBlcnJvcjsKLSsJREJ1c01lc3NhZ2Ug Km1zZzsKLSsJREJ1c01lc3NhZ2UgKnJlcGx5OwotKwlEQnVzTWVzc2FnZUl0ZXIgYXJncywgdmFy aWFudF9pdGVyOwotKwljb25zdCBjaGFyICppbnRlcmZhY2VfbmFtZSA9ICJvcmcuZnJlZWRlc2t0 b3AubG9jYWxlMSI7Ci0rCWNoYXIgKnZhbHVlID0gTlVMTDsKLSsKLSsJZGJ1c19lcnJvcl9pbml0 KCZlcnJvcik7Ci0rCi0rCW1zZyA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2NhbGwoIm9yZy5m cmVlZGVza3RvcC5sb2NhbGUxIiwgIi9vcmcvZnJlZWRlc2t0b3AvbG9jYWxlMSIsCi0rCQkJCQkg ICAib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcyIsICJHZXQiKTsKLSsJaWYgKCFtc2cp Ci0rCQlyZXR1cm47Ci0rCi0rCWRidXNfbWVzc2FnZV9pdGVyX2luaXRfYXBwZW5kKG1zZywgJmFy Z3MpOwotKwlpZiAoIWRidXNfbWVzc2FnZV9pdGVyX2FwcGVuZF9iYXNpYygmYXJncywgREJVU19U WVBFX1NUUklORywgJmludGVyZmFjZV9uYW1lKSB8fAotKwkgICAgIWRidXNfbWVzc2FnZV9pdGVy X2FwcGVuZF9iYXNpYygmYXJncywgREJVU19UWVBFX1NUUklORywgJnByb3BlcnR5X25hbWUpKSB7 Ci0rCQlkYnVzX21lc3NhZ2VfdW5yZWYobXNnKTsKLSsJCXJldHVybjsKLSsJfQotKwotKwlyZXBs eSA9IGRidXNfY29ubmVjdGlvbl9zZW5kX3dpdGhfcmVwbHlfYW5kX2Jsb2NrKGNvbm4sIG1zZywg MjAwMCwgJmVycm9yKTsKLSsJZGJ1c19tZXNzYWdlX3VucmVmKG1zZyk7Ci0rCi0rCWlmIChkYnVz X2Vycm9yX2hhc19uYW1lKCZlcnJvciwgREJVU19FUlJPUl9VTktOT1dOX0lOVEVSRkFDRSkgfHwK LSsJICAgIGRidXNfZXJyb3JfaGFzX25hbWUoJmVycm9yLCBEQlVTX0VSUk9SX1VOS05PV05fUFJP UEVSVFkpKSB7Ci0rCQkvKiBUaGlzIGlzIG5vcm1hbCBpZiB0aGUgaW50ZXJmYWNlIGlzIG5vdCBz dXBwb3J0ZWQgYnkgdGhlIHN5c3RlbSAqLwotKwkJZGJ1c19lcnJvcl9mcmVlKCZlcnJvcik7Ci0r CQlyZXR1cm47Ci0rCX0gZWxzZSBpZiAoZGJ1c19lcnJvcl9pc19zZXQoJmVycm9yKSkgewotKwkJ bG9nX3dhcm5pbmcoImRidXMgZXJyb3I6ICVzIC8gJXMiLCBlcnJvci5uYW1lLCBlcnJvci5tZXNz YWdlKTsKLSsJCWRidXNfZXJyb3JfZnJlZSgmZXJyb3IpOwotKwkJcmV0dXJuOwotKwl9IGVsc2Ug aWYgKCFyZXBseSkgewotKwkJbG9nX3dhcm5pbmcoIm5vIHJlcGx5IGZyb20gZGJ1cyIpOwotKwkJ cmV0dXJuOwotKwl9Ci0rCi0rCWlmICghZGJ1c19tZXNzYWdlX2l0ZXJfaW5pdChyZXBseSwgJmFy Z3MpKSB7Ci0rCQlsb2dfZGVidWcoIlJlcGx5IG1lc3NhZ2UgaGFzIG5vIGFyZ3VtZW50cy5cbiIp OwotKwl9IGVsc2UgaWYgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSgmYXJncykgIT0g REJVU19UWVBFX1ZBUklBTlQpIHsKLSsJCWxvZ19kZWJ1ZygiUmVwbHkgYXJndW1lbnQgaXMgbm90 IGEgdmFyaWFudC5cbiIpOwotKwl9IGVsc2UgewotKwkJZGJ1c19tZXNzYWdlX2l0ZXJfcmVjdXJz ZSgmYXJncywgJnZhcmlhbnRfaXRlcik7Ci0rCi0rCQlpZiAoZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0 X2FyZ190eXBlKCZ2YXJpYW50X2l0ZXIpID09IERCVVNfVFlQRV9TVFJJTkcpIHsKLSsJCQlkYnVz X21lc3NhZ2VfaXRlcl9nZXRfYmFzaWMoJnZhcmlhbnRfaXRlciwgJnZhbHVlKTsKLSsJCQlpZiAo c3RybGVuKHZhbHVlKSA+IDApIHsKLSsJCQkJc2V0ZW52KGVudl9uYW1lLCB2YWx1ZSwgMCk7Ci0r CQkJCWxvZ19kZWJ1ZygiU2V0ICVzIHRvICVzXG4iLCBlbnZfbmFtZSwgdmFsdWUpOwotKwkJCX0K LSsJCX0gZWxzZSB7Ci0rCQkJbG9nX2RlYnVnKCJVbmV4cGVjdGVkIGlubmVyIGRhdGEgdHlwZSBp biB2YXJpYW50LlxuIik7Ci0rCQl9Ci0rCX0KLSsKLSsJZGJ1c19tZXNzYWdlX3VucmVmKHJlcGx5 KTsKLSsJcmV0dXJuOwotK30KLSsKLStzdGF0aWMgYm9vbCBpc194a2JfZW52X3NldCh2b2lkKQot K3sKLSsJcmV0dXJuIGdldGVudigiWEtCX0RFRkFVTFRfTU9ERUwiKSB8fCBnZXRlbnYoIlhLQl9E RUZBVUxUX0xBWU9VVCIpIHx8Ci0rCSAgICAgICBnZXRlbnYoIlhLQl9ERUZBVUxUX1ZBUklBTlQi KSB8fCBnZXRlbnYoIlhLQl9ERUZBVUxUX09QVElPTlMiKTsKLSt9Ci0rCi0rLyogVGhpcyBpcyBj YWxsZWQgb25jZSBhdCBzdGFydHVwIHRvIHNldCB0aGUgWEtCIGVudmlyb25tZW50IHZhcmlhYmxl cyBmcm9tIHRoZSBsb2NhbGUxIHByb3BlcnRpZXMuCi0rICovCi0rdm9pZCBrbXNjb25fZGJ1c19z ZXRfeGtiX2Vudl9mcm9tX2xvY2FsZTEoc3RydWN0IGttc2Nvbl9kYnVzICpkYnVzKQotK3sKLSsJ REJ1c0Vycm9yIGVycm9yOwotKwotKwlpZiAoaXNfeGtiX2Vudl9zZXQoKSkKLSsJCXJldHVybjsK LSsKLSsJZGJ1c19lcnJvcl9pbml0KCZlcnJvcik7Ci0rCi0rCXNldF9lbnZfZnJvbV9sb2NhbGUx X3Byb3BlcnRpZXMoZGJ1cy0+Y29ubiwgIlgxMU1vZGVsIiwgIlhLQl9ERUZBVUxUX01PREVMIik7 Ci0rCXNldF9lbnZfZnJvbV9sb2NhbGUxX3Byb3BlcnRpZXMoZGJ1cy0+Y29ubiwgIlgxMUxheW91 dCIsICJYS0JfREVGQVVMVF9MQVlPVVQiKTsKLSsJc2V0X2Vudl9mcm9tX2xvY2FsZTFfcHJvcGVy dGllcyhkYnVzLT5jb25uLCAiWDExVmFyaWFudCIsICJYS0JfREVGQVVMVF9WQVJJQU5UIik7Ci0r CXNldF9lbnZfZnJvbV9sb2NhbGUxX3Byb3BlcnRpZXMoZGJ1cy0+Y29ubiwgIlgxMU9wdGlvbnMi LCAiWEtCX0RFRkFVTFRfT1BUSU9OUyIpOwotK30KLSsKLStzdHJ1Y3Qga21zY29uX2RidXMgKmtt c2Nvbl9kYnVzX25ldyhzdHJ1Y3QgZXZfZWxvb3AgKmVsb29wKQotK3sKLSsJc3RydWN0IGttc2Nv bl9kYnVzICpkYnVzOwotKwlEQnVzRXJyb3IgZXJyb3I7Ci0rCi0rCWRidXMgPSBtYWxsb2Moc2l6 ZW9mKCpkYnVzKSk7Ci0rCWlmICghZGJ1cykKLSsJCXJldHVybiBOVUxMOwotKwltZW1zZXQoZGJ1 cywgMCwgc2l6ZW9mKCpkYnVzKSk7Ci0rCi0rCWRidXMtPmVsb29wID0gZWxvb3A7Ci0rCi0rCWRi dXNfZXJyb3JfaW5pdCgmZXJyb3IpOwotKwlkYnVzLT5jb25uID0gZGJ1c19idXNfZ2V0KERCVVNf QlVTX1NZU1RFTSwgJmVycm9yKTsKLSsJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZlcnJvcikpIHsK LSsJCWxvZ19kZWJ1ZygiQ29ubmVjdGlvbiBFcnJvcjogJXNcbiIsIGVycm9yLm1lc3NhZ2UpOwot KwkJZGJ1c19lcnJvcl9mcmVlKCZlcnJvcik7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJfQotKwlyZXR1 cm4gZGJ1czsKLSt9Ci0rCi0rdm9pZCBrbXNjb25fZGJ1c19mcmVlKHN0cnVjdCBrbXNjb25fZGJ1 cyAqZGJ1cykKLSt7Ci0rCWlmICghZGJ1cykKLSsJCXJldHVybjsKLSsJZGJ1c19jb25uZWN0aW9u X3VucmVmKGRidXMtPmNvbm4pOwotKwlmcmVlKGRidXMpOwotK30KLSsKLStzdGF0aWMgdm9pZCBz ZXRfcm1sdm9fcHJvcGVydHkoc3RydWN0IHJtbHZvICpybWx2bywgY29uc3QgY2hhciAqcHJvcGVy dHlfbmFtZSwKLSsJCQkgICAgICAgY29uc3QgY2hhciAqcHJvcGVydHlfdmFsdWUpCi0rewotKwlp ZiAoIXN0cmNtcChwcm9wZXJ0eV9uYW1lLCAiWDExTW9kZWwiKSkgewotKwkJcm1sdm8tPm1vZGVs ID0gcHJvcGVydHlfdmFsdWU7Ci0rCX0gZWxzZSBpZiAoIXN0cmNtcChwcm9wZXJ0eV9uYW1lLCAi WDExTGF5b3V0IikpIHsKLSsJCXJtbHZvLT5sYXlvdXQgPSBwcm9wZXJ0eV92YWx1ZTsKLSsJfSBl bHNlIGlmICghc3RyY21wKHByb3BlcnR5X25hbWUsICJYMTFWYXJpYW50IikpIHsKLSsJCXJtbHZv LT52YXJpYW50ID0gcHJvcGVydHlfdmFsdWU7Ci0rCX0gZWxzZSBpZiAoIXN0cmNtcChwcm9wZXJ0 eV9uYW1lLCAiWDExT3B0aW9ucyIpKSB7Ci0rCQlybWx2by0+b3B0aW9ucyA9IHByb3BlcnR5X3Zh bHVlOwotKwl9Ci0rfQotKwotKy8qIFBhcnNlIHRoZSBsb2NhbGUxIHByb3BlcnRpZXMgY2hhbmdl ZCBtZXNzYWdlIGFuZCB1cGRhdGUgdGhlIHJtbHZvIHN0cnVjdCAqLwotK3ZvaWQgcGFyc2VfbG9j YWxlX3Byb3BlcnRpZXMoREJ1c01lc3NhZ2UgKm1zZywgc3RydWN0IHJtbHZvICpybWx2bykKLSt7 Ci0rCURCdXNNZXNzYWdlSXRlciByb290X2l0ZXI7Ci0rCURCdXNNZXNzYWdlSXRlciBkaWN0X2l0 ZXI7Ci0rCURCdXNNZXNzYWdlSXRlciBlbnRyeV9pdGVyOwotKwlEQnVzTWVzc2FnZUl0ZXIgdmFy aWFudF9pdGVyOwotKwljaGFyICpwcm9wZXJ0eV9uYW1lOwotKwljaGFyICpwcm9wZXJ0eV92YWx1 ZTsKLSsKLSsJaWYgKCFkYnVzX21lc3NhZ2VfaXRlcl9pbml0KG1zZywgJnJvb3RfaXRlcikpIHsK LSsJCWxvZ19kZWJ1ZygiTWVzc2FnZSBoYXMgbm8gYXJndW1lbnRzLlxuIik7Ci0rCQlyZXR1cm47 Ci0rCX0KLSsKLSsJZGJ1c19tZXNzYWdlX2l0ZXJfbmV4dCgmcm9vdF9pdGVyKTsKLSsJaWYgKGRi dXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSgmcm9vdF9pdGVyKSAhPSBEQlVTX1RZUEVfQVJS QVkpIHsKLSsJCWxvZ19kZWJ1ZygiTm90IHRoZSBjb250YWluZXIgdHlwZSB3ZSBleHBlY3RcbiIp OwotKwkJcmV0dXJuOwotKwl9Ci0rCi0rCWRidXNfbWVzc2FnZV9pdGVyX3JlY3Vyc2UoJnJvb3Rf aXRlciwgJmRpY3RfaXRlcik7Ci0rCXdoaWxlIChkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYXJnX3R5 cGUoJmRpY3RfaXRlcikgPT0gREJVU19UWVBFX0RJQ1RfRU5UUlkpIHsKLSsKLSsJCWRidXNfbWVz c2FnZV9pdGVyX3JlY3Vyc2UoJmRpY3RfaXRlciwgJmVudHJ5X2l0ZXIpOwotKwotKwkJZGJ1c19t ZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKCZlbnRyeV9pdGVyLCAmcHJvcGVydHlfbmFtZSk7Ci0rCi0r CQlkYnVzX21lc3NhZ2VfaXRlcl9uZXh0KCZlbnRyeV9pdGVyKTsKLSsKLSsJCWlmIChkYnVzX21l c3NhZ2VfaXRlcl9nZXRfYXJnX3R5cGUoJmVudHJ5X2l0ZXIpID09IERCVVNfVFlQRV9WQVJJQU5U KSB7Ci0rCi0rCQkJZGJ1c19tZXNzYWdlX2l0ZXJfcmVjdXJzZSgmZW50cnlfaXRlciwgJnZhcmlh bnRfaXRlcik7Ci0rCi0rCQkJaWYgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSgmdmFy aWFudF9pdGVyKSA9PSBEQlVTX1RZUEVfU1RSSU5HKSB7Ci0rCQkJCWRidXNfbWVzc2FnZV9pdGVy X2dldF9iYXNpYygmdmFyaWFudF9pdGVyLCAmcHJvcGVydHlfdmFsdWUpOwotKwkJCQlzZXRfcm1s dm9fcHJvcGVydHkocm1sdm8sIHByb3BlcnR5X25hbWUsIHByb3BlcnR5X3ZhbHVlKTsKLSsJCQkJ bG9nX2RlYnVnKCJwcm9wZXJ0eSAlczogJXNcbiIsIHByb3BlcnR5X25hbWUsIHByb3BlcnR5X3Zh bHVlKTsKLSsJCQl9Ci0rCQl9Ci0rCQlkYnVzX21lc3NhZ2VfaXRlcl9uZXh0KCZkaWN0X2l0ZXIp OwotKwl9Ci0rfQotKwotK3N0YXRpYyB2b2lkIGhhbmRsZV9kaXNwYXRjaF9zdGF0dXMoREJ1c0Nv bm5lY3Rpb24gKmNvbm4sIERCdXNEaXNwYXRjaFN0YXR1cyBzdGF0dXMsIHZvaWQgKmRhdGEpCi0r ewotKwlzdHJ1Y3Qga21zY29uX2RidXMgKmRidXMgPSBkYXRhOwotKwlzdHJ1Y3Qgcm1sdm8gcm1s dm8gPSB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH07Ci0rCi0rCWlmIChzdGF0dXMgPT0gREJVU19E SVNQQVRDSF9EQVRBX1JFTUFJTlMpIHsKLSsJCURCdXNNZXNzYWdlICptc2cgPSBkYnVzX2Nvbm5l Y3Rpb25fcG9wX21lc3NhZ2UoZGJ1cy0+Y29ubik7Ci0rCQlpZiAobXNnKSB7Ci0rCQkJbG9nX2Rl YnVnKCJSZWNlaXZlZCBtZXNzYWdlICVzXG4iLCBkYnVzX21lc3NhZ2VfZ2V0X3NpZ25hdHVyZSht c2cpKTsKLSsJCQlpZiAoZGJ1c19tZXNzYWdlX2lzX3NpZ25hbChtc2csICJvcmcuZnJlZWRlc2t0 b3AuREJ1cy5Qcm9wZXJ0aWVzIiwKLSsJCQkJCQkgICAiUHJvcGVydGllc0NoYW5nZWQiKSkgewot KwkJCQlwYXJzZV9sb2NhbGVfcHJvcGVydGllcyhtc2csICZybWx2byk7Ci0rCQkJCWlmIChkYnVz LT5jYikKLSsJCQkJCWRidXMtPmNiKHJtbHZvLm1vZGVsLCBybWx2by5sYXlvdXQsIHJtbHZvLnZh cmlhbnQsCi0rCQkJCQkJIHJtbHZvLm9wdGlvbnMsIGRidXMtPmRhdGEpOwotKwkJCX0KLSsJCQlk YnVzX21lc3NhZ2VfdW5yZWYobXNnKTsKLSsJCX0KLSsJfQotK30KLSsKLStzdGF0aWMgdm9pZCBs b2NhbGUxX3Byb3BlcnRpZXNfY2hhbmdlZChzdHJ1Y3QgZXZfZmQgKmZkLCBpbnQgbWFzaywgdm9p ZCAqZGF0YSkKLSt7Ci0rCXN0cnVjdCBEQnVzV2F0Y2ggKndhdGNoID0gZGF0YTsKLSsJc3RydWN0 IGttc2Nvbl9kYnVzICpkYnVzID0gZGJ1c193YXRjaF9nZXRfZGF0YSh3YXRjaCk7Ci0rCi0rCXVu c2lnbmVkIGludCBmbGFncyA9IDA7Ci0rCi0rCWxvZ19kZWJ1ZygibG9jYWxlMSBwcm9wZXJ0eSBj aGFuZ2VkXG4iKTsKLSsKLSsJaWYgKG1hc2sgJiBFVl9SRUFEQUJMRSkKLSsJCWZsYWdzIHw9IERC VVNfV0FUQ0hfUkVBREFCTEU7Ci0rCWlmIChtYXNrICYgRVZfV1JJVEVBQkxFKQotKwkJZmxhZ3Mg fD0gREJVU19XQVRDSF9XUklUQUJMRTsKLSsKLSsJZGJ1c193YXRjaF9oYW5kbGUod2F0Y2gsIGZs YWdzKTsKLSsKLSsJd2hpbGUgKGRidXNfY29ubmVjdGlvbl9nZXRfZGlzcGF0Y2hfc3RhdHVzKGRi dXMtPmNvbm4pID09IERCVVNfRElTUEFUQ0hfREFUQV9SRU1BSU5TKSB7Ci0rCQlkYnVzX2Nvbm5l Y3Rpb25fZGlzcGF0Y2goZGJ1cy0+Y29ubik7Ci0rCQkvLyBEQlVTLTEgQVBJIGlzIGEgcGFpbiwg YnV0IGF0IGxlYXN0IHRoYXQgd29ya3MgZm9yIHRoaXMgc2ltcGxlIHVzZSBjYXNlCi0rCQloYW5k bGVfZGlzcGF0Y2hfc3RhdHVzKGRidXMtPmNvbm4sIERCVVNfRElTUEFUQ0hfREFUQV9SRU1BSU5T LCBkYnVzKTsKLSsJfQotK30KLSsKLSsvKiBPbmx5IHJlZ2lzdGVyIG9uZSByZWFkIHdhdGNoLCBh cyB3ZSdyZSBub3QgaW50ZXJlc3RlZCBpbiB3cml0ZXMgKi8KLStzdGF0aWMgdW5zaWduZWQgaW50 IGRidXNfYWRkX3dhdGNoKERCdXNXYXRjaCAqd2F0Y2gsIHZvaWQgKmRhdGEpCi0rewotKwlzdHJ1 Y3Qga21zY29uX2RidXMgKmRidXMgPSBkYXRhOwotKwlpbnQgZmQgPSBkYnVzX3dhdGNoX2dldF91 bml4X2ZkKHdhdGNoKTsKLSsJdW5zaWduZWQgaW50IGZsYWdzID0gZGJ1c193YXRjaF9nZXRfZmxh Z3Mod2F0Y2gpOwotKwl1bnNpZ25lZCBpbnQgZXZfZmxhZ3MgPSAwOwotKwlpbnQgcmV0ID0gMDsK LSsKLSsJbG9nX2RlYnVnKCJBZGRpbmcgd2F0Y2ggZm9yIGZkICVkIHdpdGggZmxhZ3MgJWQgJXAg JWRcbiIsIGZkLCBmbGFncywgd2F0Y2gsCi0rCQkgIGRidXNfd2F0Y2hfZ2V0X2VuYWJsZWQod2F0 Y2gpKTsKLSsKLSsJaWYgKCFkYnVzX3dhdGNoX2dldF9lbmFibGVkKHdhdGNoKSkKLSsJCXJldHVy biBUUlVFOwotKwotKwlpZiAoZGJ1cy0+d2F0Y2hfZmQpIHsKLSsJCWxvZ193YXJuaW5nKCJkYnVz IHdhdGNoIGFscmVhZHkgcmVnaXN0ZXJlZCIpOwotKwkJcmV0dXJuIFRSVUU7Ci0rCX0KLSsJaWYg KGZsYWdzICYgREJVU19XQVRDSF9XUklUQUJMRSkKLSsJCWV2X2ZsYWdzIHw9IEVWX1dSSVRFQUJM RTsKLSsJaWYgKGZsYWdzICYgREJVU19XQVRDSF9SRUFEQUJMRSkKLSsJCWV2X2ZsYWdzIHw9IEVW X1JFQURBQkxFOwotKwotKwlyZXQgPSBldl9lbG9vcF9uZXdfZmQoZGJ1cy0+ZWxvb3AsICZkYnVz LT53YXRjaF9mZCwgZmQsIGV2X2ZsYWdzLAotKwkJCSAgICAgIGxvY2FsZTFfcHJvcGVydGllc19j aGFuZ2VkLCB3YXRjaCk7Ci0rCi0rCWRidXNfd2F0Y2hfc2V0X2RhdGEod2F0Y2gsIGRidXMsIE5V TEwpOwotKwotKwlpZiAocmV0KQotKwkJbG9nX2Vycm9yKCJjYW5ub3QgYWRkIHdhdGNoIGZvciBm ZCAlZDogJWQgJWQgJXAiLCBmZCwgcmV0LCBldl9mbGFncywgd2F0Y2gpOwotKwlyZXR1cm4gVFJV RTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZGJ1c19yZW1vdmVfd2F0Y2goREJ1c1dhdGNoICp3YXRj aCwgdm9pZCAqZGF0YSkKLSt7Ci0rCXN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cyA9IGRhdGE7Ci0r CWxvZ19kZWJ1ZygiUmVtb3Zpbmcgd2F0Y2ggZm9yIGZkICVkXG4iLCBkYnVzX3dhdGNoX2dldF91 bml4X2ZkKHdhdGNoKSk7Ci0rCi0rCWlmIChkYnVzX3dhdGNoX2dldF9kYXRhKHdhdGNoKSAhPSBk YnVzKQotKwkJcmV0dXJuOwotKwotKwlldl9lbG9vcF9ybV9mZChkYnVzLT53YXRjaF9mZCk7Ci0r CWRidXMtPndhdGNoX2ZkID0gTlVMTDsKLSsJZGJ1c193YXRjaF9zZXRfZGF0YSh3YXRjaCwgTlVM TCwgTlVMTCk7Ci0rCXJldHVybjsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZGJ1c190b2dnbGVfd2F0 Y2goREJ1c1dhdGNoICp3YXRjaCwgdm9pZCAqZGF0YSkKLSt7Ci0rCWxvZ19kZWJ1ZygiVG9nZ2xp bmcgd2F0Y2ggZm9yIGZkICVkXG4iLCBkYnVzX3dhdGNoX2dldF91bml4X2ZkKHdhdGNoKSk7Ci0r Ci0rCWlmIChkYnVzX3dhdGNoX2dldF9lbmFibGVkKHdhdGNoKSkKLSsJCWRidXNfYWRkX3dhdGNo KHdhdGNoLCBkYXRhKTsKLSsJZWxzZQotKwkJZGJ1c19yZW1vdmVfd2F0Y2god2F0Y2gsIGRhdGEp OwotK30KLSsKLSsvKiBMaXN0ZW4gdG8gbG9jYWxlMSBwcm9wZXJ0aWVzIGNoYW5nZWQsIGFuZCB1 cGRhdGUgdGhlIFhLQiBsYXlvdXQgaWYgbmVlZGVkICovCi0raW50IGttc2Nvbl9kYnVzX2xpc3Rl bl9sb2NhbGUxKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cywgZGJ1c191cGRhdGVfeGtiX2xheW91 dF9jYiBjYiwgdm9pZCAqZGF0YSkKLSt7Ci0rCURCdXNFcnJvciBlcnJvcjsKLSsKLSsJbG9nX2Rl YnVnKCJMaXN0ZW5pbmcgdG8gbG9jYWxlMVxuIik7Ci0rCi0rCWlmICghY2IpCi0rCQlyZXR1cm4g LUVJTlZBTDsKLSsKLSsJZGJ1cy0+Y2IgPSBjYjsKLSsJZGJ1cy0+ZGF0YSA9IGRhdGE7Ci0rCi0r CWRidXNfZXJyb3JfaW5pdCgmZXJyb3IpOwotKwotKwlkYnVzX2Nvbm5lY3Rpb25fc2V0X3dhdGNo X2Z1bmN0aW9ucyhkYnVzLT5jb25uLCBkYnVzX2FkZF93YXRjaCwgZGJ1c19yZW1vdmVfd2F0Y2gs Ci0rCQkJCQkgICAgZGJ1c190b2dnbGVfd2F0Y2gsIGRidXMsIE5VTEwpOwotKwotKwlkYnVzX2Nv bm5lY3Rpb25fc2V0X2Rpc3BhdGNoX3N0YXR1c19mdW5jdGlvbihkYnVzLT5jb25uLCBoYW5kbGVf ZGlzcGF0Y2hfc3RhdHVzLCBkYnVzLAotKwkJCQkJCSAgICAgTlVMTCk7Ci0rCi0rCWNvbnN0IGNo YXIgKm1hdGNoX3J1bGUgPSAidHlwZT0nc2lnbmFsJywiCi0rCQkJCSAic2VuZGVyPSdvcmcuZnJl ZWRlc2t0b3AubG9jYWxlMScsIgotKwkJCQkgInBhdGg9Jy9vcmcvZnJlZWRlc2t0b3AvbG9jYWxl MScsIgotKwkJCQkgImludGVyZmFjZT0nb3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcycs IgotKwkJCQkgIm1lbWJlcj0nUHJvcGVydGllc0NoYW5nZWQnIjsKLSsKLSsJZGJ1c19idXNfYWRk X21hdGNoKGRidXMtPmNvbm4sIG1hdGNoX3J1bGUsICZlcnJvcik7Ci0rCi0rCWlmIChkYnVzX2Vy cm9yX2lzX3NldCgmZXJyb3IpKSB7Ci0rCQlsb2dfZGVidWcoIkVycm9yIGFkZGluZyBtYXRjaDog JXNcbiIsIGVycm9yLm1lc3NhZ2UpOwotKwkJZGJ1c19lcnJvcl9mcmVlKCZlcnJvcik7Ci0rCQly ZXR1cm4gLUVJTzsKLSsJfQotKwlkYnVzX2Nvbm5lY3Rpb25fZmx1c2goZGJ1cy0+Y29ubik7Ci0r Ci0rCWxvZ19pbmZvKCJMaXN0ZW5pbmcgdG8gbG9jYWxlMSBjaGFuZ2VzIik7Ci0rCi0rCXJldHVy biAwOwotK30KLWRpZmYgLS1naXQgYS9zcmMva21zY29uX2R1bW15LmggYi9zcmMvZGJ1cy5oCi1z aW1pbGFyaXR5IGluZGV4IDUwJQotcmVuYW1lIGZyb20gc3JjL2ttc2Nvbl9kdW1teS5oCi1yZW5h bWUgdG8gc3JjL2RidXMuaAotaW5kZXggYjRmM2FhMi4uMjcyNDM0ZiAxMDA2NDQKLS0tLSBhL3Ny Yy9rbXNjb25fZHVtbXkuaAotKysrIGIvc3JjL2RidXMuaAotQEAgLTEsNyArMSw4IEBACi0gLyoK LS0gKiBrbXNjb24gLSBEdW1teSBTZXNzaW9uCi0rICogZGJ1cyAtIEQtQnVzIHN1cHBvcnQKLSAg KgotLSAqIENvcHlyaWdodCAoYykgMjAxMiBEYXZpZCBIZXJybWFubiA8ZGguaGVycm1hbm5AZ29v Z2xlbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChjKSAyMDI2IFJlZCBIYXQuCi0rICogQXV0aG9y OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Ci0gICoKLSAgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcKLSAgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzCi1AQCAtMjMsMjggKzI0LDM4IEBACi0gICogU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICovCi0gCi0tLyoKLS0gKiBE dW1teSBTZXNzaW9uCi0tICovCi0tCi0tI2lmbmRlZiBLTVNDT05fRFVNTVlfSAotLSNkZWZpbmUg S01TQ09OX0RVTU1ZX0gKLSsjaWZuZGVmIF9LTVNDT05fREJVU19ICi0rI2RlZmluZSBfS01TQ09O X0RCVVNfSAotIAotLSNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0j aW5jbHVkZSAia21zY29uX3NlYXQuaCIKLStzdHJ1Y3QgZXZfZWxvb3A7Ci0rc3RydWN0IGttc2Nv bl9kYnVzOwotIAotLSNpZmRlZiBCVUlMRF9FTkFCTEVfU0VTU0lPTl9EVU1NWQotK3R5cGVkZWYg dm9pZCAoKmRidXNfdXBkYXRlX3hrYl9sYXlvdXRfY2IpKGNvbnN0IGNoYXIgKm1vZGVsLCBjb25z dCBjaGFyICpsYXlvdXQsCi0rCQkJCQkgIGNvbnN0IGNoYXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIg Km9wdGlvbnMsIHZvaWQgKmRhdGEpOwotIAotLWludCBrbXNjb25fZHVtbXlfcmVnaXN0ZXIoc3Ry dWN0IGttc2Nvbl9zZXNzaW9uICoqb3V0LCBzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpOwotKyNp ZmRlZiBCVUlMRF9FTkFCTEVfREJVUwotK3ZvaWQga21zY29uX2RidXNfc2V0X3hrYl9lbnZfZnJv bV9sb2NhbGUxKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cyk7Ci0rc3RydWN0IGttc2Nvbl9kYnVz ICprbXNjb25fZGJ1c19uZXcoc3RydWN0IGV2X2Vsb29wICplbG9vcCk7Ci0rdm9pZCBrbXNjb25f ZGJ1c19mcmVlKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cyk7Ci0raW50IGttc2Nvbl9kYnVzX2xp c3Rlbl9sb2NhbGUxKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cywgZGJ1c191cGRhdGVfeGtiX2xh eW91dF9jYiBjYiwgdm9pZCAqZGF0YSk7Ci0gCi0tI2Vsc2UgLyogIUJVSUxEX0VOQUJMRV9TRVNT SU9OX0RVTU1ZICovCi0tCi0tc3RhdGljIGlubGluZSBpbnQga21zY29uX2R1bW15X3JlZ2lzdGVy KHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91dCwgc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQot KyNlbHNlCi0rc3RhdGljIGlubGluZSB2b2lkIGttc2Nvbl9kYnVzX3NldF94a2JfZW52X2Zyb21f bG9jYWxlMShzdHJ1Y3Qga21zY29uX2RidXMgKmRidXMpCi0gewotLQlyZXR1cm4gLUVPUE5PVFNV UFA7Ci0rCXJldHVybjsKLSB9Ci0tCi0tI2VuZGlmIC8qIEJVSUxEX0VOQUJMRV9TRVNTSU9OX0RV TU1ZICovCi0tCi0tI2VuZGlmIC8qIEtNU0NPTl9EVU1NWV9IICovCi0rc3RhdGljIGlubGluZSBz dHJ1Y3Qga21zY29uX2RidXMgKmttc2Nvbl9kYnVzX25ldyhzdHJ1Y3QgZXZfZWxvb3AgKmVsb29w KQotK3sKLSsJcmV0dXJuIE5VTEw7Ci0rfQotK3N0YXRpYyBpbmxpbmUgdm9pZCBrbXNjb25fZGJ1 c19mcmVlKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cykKLSt7Ci0rCXJldHVybjsKLSt9Ci0rc3Rh dGljIGlubGluZSBpbnQga21zY29uX2RidXNfbGlzdGVuX2xvY2FsZTEoc3RydWN0IGttc2Nvbl9k YnVzICpkYnVzLCBkYnVzX3VwZGF0ZV94a2JfbGF5b3V0X2NiIGNiLAotKwkJCQkJICAgICB2b2lk ICpkYXRhKQotK3sKLSsJcmV0dXJuIDA7Ci0rfQotKyNlbmRpZiAvKiBCVUlMRF9FTkFCTEVfREJV UyAqLwotKyNlbmRpZiAvKiBfS01TQ09OX0RCVVNfSCAqLwotXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCi1kaWZmIC0tZ2l0IGEvc3JjL2ZvbnQvZm9udF9mcmVldHlwZS5jIGIvc3JjL2ZvbnQv Zm9udF9mcmVldHlwZS5jCi1pbmRleCBhODc5ZDY0Li5kMGUzZWU5IDEwMDY0NAotLS0tIGEvc3Jj L2ZvbnQvZm9udF9mcmVldHlwZS5jCi0rKysgYi9zcmMvZm9udC9mb250X2ZyZWV0eXBlLmMKLUBA IC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIGludCBmb250X2dldF93aWR0aChGVF9GYWNlIGZhY2Up Ci0gewotIAlGVF9VSW50IGdseXBoX2luZGV4ID0gRlRfR2V0X0NoYXJfSW5kZXgoZmFjZSwgJ00n KTsKLSAKLS0JaWYgKEZUX0xvYWRfR2x5cGgoZmFjZSwgZ2x5cGhfaW5kZXgsIEZUX0xPQURfREVG QVVMVCkpCi0rCWlmIChGVF9Mb2FkX0dseXBoKGZhY2UsIGdseXBoX2luZGV4LCBGVF9MT0FEX1RB UkdFVF9MSUdIVCkpCi0gCQlyZXR1cm4gLTE7Ci0gCi0gCWlmIChGVF9SZW5kZXJfR2x5cGgoZmFj ZS0+Z2x5cGgsIEZUX1JFTkRFUl9NT0RFX05PUk1BTCkpCi1AQCAtMzc3LDcgKzM3Nyw3IEBAIHN0 YXRpYyBzdHJ1Y3Qga21zY29uX2dseXBoICpyZW5kZXJfZ2x5cGgoRlRfRmFjZSBmYWNlLCBGVF9V SW50IGluZGV4LCBjb25zdCB1aW50Ci0gCWlmICghY3dpZHRoKQotIAkJcmV0dXJuIE5VTEw7Ci0g Ci0tCWlmIChGVF9Mb2FkX0dseXBoKGZhY2UsIGluZGV4LCBGVF9MT0FEX05PX0hJTlRJTkcpKSB7 Ci0rCWlmIChGVF9Mb2FkX0dseXBoKGZhY2UsIGluZGV4LCBGVF9MT0FEX1RBUkdFVF9MSUdIVCkp IHsKLSAJCWxvZ19lcnIoIkZhaWxlZCB0byBsb2FkIGdseXBoXG4iKTsKLSAJCXJldHVybiBOVUxM OwotIAl9Ci1kaWZmIC0tZ2l0IGEvc3JjL2ZvbnQvbWVzb24uYnVpbGQgYi9zcmMvZm9udC9tZXNv bi5idWlsZAotaW5kZXggZGQ1ZDlkYy4uZDI2NWJiMCAxMDA2NDQKLS0tLSBhL3NyYy9mb250L21l c29uLmJ1aWxkCi0rKysgYi9zcmMvZm9udC9tZXNvbi5idWlsZAotQEAgLTIyLDcgKzIyLDcgQEAg Zm9udF9kZXBzID0gZGVjbGFyZV9kZXBlbmRlbmN5KAotICMgVW5pZm9udCBHZW5lcmF0b3IKLSAj IFRoaXMgZ2VuZXJhdGVzIHRoZSB1bmlmb250IHNvdXJjZXMgZnJvbSByYXcgaGV4LWVuY29kZWQg Zm9udCBkYXRhLgotICMKLS1nZW51bmlmb250ID0gZXhlY3V0YWJsZSgnZ2VudW5pZm9udCcsICdn ZW51bmlmb250LmMnLCBkZXBlbmRlbmNpZXM6IFt6bGliX2RlcHNdLCBuYXRpdmU6IHRydWUpCi0r Z2VudW5pZm9udCA9IGV4ZWN1dGFibGUoJ2dlbnVuaWZvbnQnLCAnZ2VudW5pZm9udC5jJywgZGVw ZW5kZW5jaWVzOiBbemxpYl9kZXBzX25hdGl2ZV0sIG5hdGl2ZTogdHJ1ZSkKLSAKLSB1bmlmb250 X2JpbiA9IGN1c3RvbV90YXJnZXQoJ3VuaWZvbnQtYmluJywKLSAgIGlucHV0OiBbJ2ZvbnRfdW5p Zm9udF9kYXRhLmhleCddLAotQEAgLTY4LDQgKzY4LDQgQEAgaWYgZW5hYmxlX2ZvbnRfcGFuZ28K LSAgICAgaW5zdGFsbDogdHJ1ZSwKLSAgICAgaW5zdGFsbF9kaXI6IG1vZHVsZWRpciwKLSAgICkK LS1lbmRpZgotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0rZW5kaWYKLWRpZmYgLS1naXQg YS9zcmMvaW5wdXQvaW5wdXQuYyBiL3NyYy9pbnB1dC9pbnB1dC5jCi1pbmRleCA2NWMxZDZmLi43 MWEwNTNiIDEwMDY0NAotLS0tIGEvc3JjL2lucHV0L2lucHV0LmMKLSsrKyBiL3NyYy9pbnB1dC9p bnB1dC5jCi1AQCAtNTA0LDIzICs1MDQsNDggQEAgZXJyX2ZyZWU6Ci0gCi0gU0hMX0VYUE9SVAot IGludCBpbnB1dF9zZXRfa2V5bWFwKHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKm1v ZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCi0tCQkgICAgIGNvbnN0IGNoYXIgKnZhcmlhbnQsIGNv bnN0IGNoYXIgKm9wdGlvbnMsIGNvbnN0IGNoYXIgKmxvY2FsZSwKLS0JCSAgICAgY29uc3QgY2hh ciAqa2V5bWFwLCBjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUsIHNpemVfdCBjb21wb3NlX2ZpbGVf bGVuKQotLXsKLS0JLyogeGtiY29tbW9uIHdvbid0IHVzZSB0aGUgWEtCX0RFRkFVTFRfT1BUSU9O UyBlbnZpcm9ubWVudAotLQkgKiB2YXJpYWJsZSBpZiBvcHRpb25zIGlzIGFuIGVtcHR5IHN0cmlu Zy4KLS0JICogU28gaWYgYWxsIHZhcmlhYmxlcyBhcmUgZW1wdHksIHVzZSBOVUxMIGluc3RlYWQu Ci0tCSAqLwotLQlpZiAobW9kZWwgJiYgKm1vZGVsID09IDAgJiYgbGF5b3V0ICYmICpsYXlvdXQg PT0gMCAmJiB2YXJpYW50ICYmICp2YXJpYW50ID09IDAgJiYgb3B0aW9ucyAmJgotLQkgICAgKm9w dGlvbnMgPT0gMCkgewotLQkJbW9kZWwgPSBOVUxMOwotLQkJbGF5b3V0ID0gTlVMTDsKLS0JCXZh cmlhbnQgPSBOVUxMOwotLQkJb3B0aW9ucyA9IE5VTEw7Ci0tCX0KLSsJCSAgICAgY29uc3QgY2hh ciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqa2V5bWFwKQotK3sK LSsJcmV0dXJuIHV4a2JfbGF5b3V0X2luaXQoaW5wdXQsIG1vZGVsLCBsYXlvdXQsIHZhcmlhbnQs IG9wdGlvbnMsIGtleW1hcCk7Ci0rfQotIAotLQlyZXR1cm4gdXhrYl9kZXNjX2luaXQoaW5wdXQs IG1vZGVsLCBsYXlvdXQsIHZhcmlhbnQsIG9wdGlvbnMsIGxvY2FsZSwga2V5bWFwLCBjb21wb3Nl X2ZpbGUsCi0tCQkJICAgICAgY29tcG9zZV9maWxlX2xlbik7Ci0rU0hMX0VYUE9SVAotK3ZvaWQg aW5wdXRfc2V0X2NvbXBvc2Uoc3RydWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAqbG9jYWxl LCBjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUsCi0rCQkgICAgICAgc2l6ZV90IGNvbXBvc2VfZmls ZV9sZW4pCi0rewotKwl1eGtiX2NvbXBvc2VfdGFibGVfaW5pdChpbnB1dCwgY29tcG9zZV9maWxl LCBjb21wb3NlX2ZpbGVfbGVuLCBsb2NhbGUpOwotK30KLSsKLStTSExfRVhQT1JUCi0raW50IGlu cHV0X3VwZGF0ZV9rZXltYXAoc3RydWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAqbW9kZWws IGNvbnN0IGNoYXIgKmxheW91dCwKLSsJCQljb25zdCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFy ICpvcHRpb25zKQotK3sKLSsJc3RydWN0IHNobF9kbGlzdCAqaXRlcjsKLSsJc3RydWN0IGlucHV0 X2RldiAqZGV2OwotKwotKwlpZiAoaW5wdXQtPmN0eCkgewotKwkJc2hsX2RsaXN0X2Zvcl9lYWNo KGl0ZXIsICZpbnB1dC0+ZGV2aWNlcykKLSsJCXsKLSsJCQlkZXYgPSBzaGxfZGxpc3RfZW50cnko aXRlciwgc3RydWN0IGlucHV0X2RldiwgbGlzdCk7Ci0rCQkJaWYgKGRldi0+Y2FwYWJpbGl0aWVz ICYgREVWSUNFX0hBU19LRVlTKSB7Ci0rCQkJCWlucHV0X3NsZWVwX2RldihkZXYpOwotKwkJCQlp bnB1dF9leGl0X2tleWJvYXJkKGRldik7Ci0rCQkJfQotKwkJfQotKwl9Ci0rCXV4a2JfY29tcG9z ZV90YWJsZV9kZXN0cm95KGlucHV0KTsKLSsJdXhrYl9sYXlvdXRfZGVzdHJveShpbnB1dCk7Ci0r CXV4a2JfbGF5b3V0X2luaXQoaW5wdXQsIG1vZGVsLCBsYXlvdXQsIHZhcmlhbnQsIG9wdGlvbnMs IE5VTEwpOwotKwlzaGxfZGxpc3RfZm9yX2VhY2goaXRlciwgJmlucHV0LT5kZXZpY2VzKQotKwl7 Ci0rCQlkZXYgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGlucHV0X2RldiwgbGlzdCk7 Ci0rCQlpZiAoZGV2LT5jYXBhYmlsaXRpZXMgJiBERVZJQ0VfSEFTX0tFWVMpIHsKLSsJCQlpbnB1 dF9pbml0X2tleWJvYXJkKGRldik7Ci0rCQkJaWYgKGlucHV0LT5hd2FrZSkKLSsJCQkJaW5wdXRf d2FrZV91cF9kZXYoZGV2KTsKLSsJCX0KLSsJfQotKwlyZXR1cm4gMDsKLSB9Ci0gCi0gU0hMX0VY UE9SVAotQEAgLTU2NSw3ICs1OTAsOCBAQCB2b2lkIGlucHV0X3VucmVmKHN0cnVjdCBpbnB1dCAq aW5wdXQpCi0gCQlpbnB1dF9mcmVlX2RldihkZXYpOwotIAl9Ci0gCi0tCXV4a2JfZGVzY19kZXN0 cm95KGlucHV0KTsKLSsJdXhrYl9jb21wb3NlX3RhYmxlX2Rlc3Ryb3koaW5wdXQpOwotKwl1eGti X2xheW91dF9kZXN0cm95KGlucHV0KTsKLSAJc2hsX2hvb2tfZnJlZShpbnB1dC0+a2V5X2hvb2sp OwotIAlzaGxfaG9va19mcmVlKGlucHV0LT5wb2ludGVyX2hvb2spOwotIAlldl9lbG9vcF9ybV90 aW1lcihpbnB1dC0+aGlkZV9wb2ludGVyKTsKLWRpZmYgLS1naXQgYS9zcmMvaW5wdXQvaW5wdXQu aCBiL3NyYy9pbnB1dC9pbnB1dC5oCi1pbmRleCA4YjgxZTAwLi45ZjI2OWZmIDEwMDY0NAotLS0t IGEvc3JjL2lucHV0L2lucHV0LmgKLSsrKyBiL3NyYy9pbnB1dC9pbnB1dC5oCi1AQCAtOTIsOCAr OTIsMTEgQEAgdHlwZWRlZiB2b2lkICgqdXRlcm1fY2xvc2VfY2IpKGludCBmZCwgaW50IGZkX2lk LCB2b2lkICpkYXRhKTsKLSAKLSBpbnQgaW5wdXRfbmV3KHN0cnVjdCBpbnB1dCAqKm91dCwgc3Ry dWN0IGV2X2Vsb29wICplbG9vcCk7Ci0gaW50IGlucHV0X3NldF9rZXltYXAoc3RydWN0IGlucHV0 ICppbnB1dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKLS0JCSAgICAg Y29uc3QgY2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqbG9j YWxlLAotLQkJICAgICBjb25zdCBjaGFyICprZXltYXAsIGNvbnN0IGNoYXIgKmNvbXBvc2VfZmls ZSwgc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4pOwotKwkJICAgICBjb25zdCBjaGFyICp2YXJpYW50 LCBjb25zdCBjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICprZXltYXApOwotK3ZvaWQgaW5wdXRf c2V0X2NvbXBvc2Uoc3RydWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAqbG9jYWxlLCBjb25z dCBjaGFyICpjb21wb3NlX2ZpbGUsCi0rCQkgICAgICAgc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4p OwotK2ludCBpbnB1dF91cGRhdGVfa2V5bWFwKHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNo YXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCi0rCQkJY29uc3QgY2hhciAqdmFyaWFudCwg Y29uc3QgY2hhciAqb3B0aW9ucyk7Ci0gdm9pZCBpbnB1dF9zZXRfY29uZihzdHJ1Y3QgaW5wdXQg KmlucHV0LCB1bnNpZ25lZCBpbnQgcmVwZWF0X2RlbGF5LCB1bnNpZ25lZCBpbnQgcmVwZWF0X3Jh dGUsCi0gCQkgICAgYm9vbCBtb3VzZV9lbmFibGVkKTsKLSB2b2lkIGlucHV0X3JlZihzdHJ1Y3Qg aW5wdXQgKmlucHV0KTsKLWRpZmYgLS1naXQgYS9zcmMvaW5wdXQvaW5wdXRfaW50ZXJuYWwuaCBi L3NyYy9pbnB1dC9pbnB1dF9pbnRlcm5hbC5oCi1pbmRleCA1NTllOGVjLi5mYzkzMmZhIDEwMDY0 NAotLS0tIGEvc3JjL2lucHV0L2lucHV0X2ludGVybmFsLmgKLSsrKyBiL3NyYy9pbnB1dC9pbnB1 dF9pbnRlcm5hbC5oCi1AQCAtMTQwLDEwICsxNDAsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlu cHV0X2JpdF9pc19zZXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYXJyYXksIGludCBiaXQpCi0gCXJl dHVybiAhIShhcnJheVtiaXQgLyBMT05HX0JJVF0gJiAoMVVMIDw8IChiaXQgJSBMT05HX0JJVCkp KTsKLSB9Ci0gCi0taW50IHV4a2JfZGVzY19pbml0KHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0 IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsIGNvbnN0IGNoYXIgKnZhcmlhbnQsCi0t CQkgICBjb25zdCBjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICpsb2NhbGUsIGNvbnN0IGNoYXIg KmtleW1hcCwKLS0JCSAgIGNvbnN0IGNoYXIgKmNvbXBvc2VfZmlsZSwgc2l6ZV90IGNvbXBvc2Vf ZmlsZV9sZW4pOwotLXZvaWQgdXhrYl9kZXNjX2Rlc3Ryb3koc3RydWN0IGlucHV0ICppbnB1dCk7 Ci0raW50IHV4a2JfbGF5b3V0X2luaXQoc3RydWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAq bW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKLSsJCSAgICAgY29uc3QgY2hhciAqdmFyaWFudCwg Y29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqa2V5bWFwKTsKLSt2b2lkIHV4a2JfY29t cG9zZV90YWJsZV9pbml0KHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKmNvbXBvc2Vf ZmlsZSwgc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4sCi0rCQkJICAgICBjb25zdCBjaGFyICpsb2Nh bGUpOwotK3ZvaWQgdXhrYl9sYXlvdXRfZGVzdHJveShzdHJ1Y3QgaW5wdXQgKmlucHV0KTsKLSt2 b2lkIHV4a2JfY29tcG9zZV90YWJsZV9kZXN0cm95KHN0cnVjdCBpbnB1dCAqaW5wdXQpOwotIAot IGludCB1eGtiX2Rldl9pbml0KHN0cnVjdCBpbnB1dF9kZXYgKmRldik7Ci0gdm9pZCB1eGtiX2Rl dl9kZXN0cm95KHN0cnVjdCBpbnB1dF9kZXYgKmRldik7Ci1kaWZmIC0tZ2l0IGEvc3JjL2lucHV0 L2lucHV0X3V4a2IuYyBiL3NyYy9pbnB1dC9pbnB1dF91eGtiLmMKLWluZGV4IDM3N2U5MzUuLjFh ZTI1NjUgMTAwNjQ0Ci0tLS0gYS9zcmMvaW5wdXQvaW5wdXRfdXhrYi5jCi0rKysgYi9zcmMvaW5w dXQvaW5wdXRfdXhrYi5jCi1AQCAtNjksMTEgKzY5LDEwIEBAIHN0YXRpYyB2b2lkIHV4a2JfbG9n KHN0cnVjdCB4a2JfY29udGV4dCAqY29udGV4dCwgZW51bSB4a2JfbG9nX2xldmVsIGxldmVsLCBj b25zCi0gCWxvZ19zdWJtaXQoTE9HX0RFRkFVTFQsIHNldiwgZm9ybWF0LCBhcmdzKTsKLSB9Ci0g Ci0taW50IHV4a2JfZGVzY19pbml0KHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKm1v ZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsIGNvbnN0IGNoYXIgKnZhcmlhbnQsCi0tCQkgICBjb25z dCBjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICpsb2NhbGUsIGNvbnN0IGNoYXIgKmtleW1hcCwK LS0JCSAgIGNvbnN0IGNoYXIgKmNvbXBvc2VfZmlsZSwgc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4p Ci0raW50IHV4a2JfbGF5b3V0X2luaXQoc3RydWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAq bW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKLSsJCSAgICAgY29uc3QgY2hhciAqdmFyaWFudCwg Y29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqa2V5bWFwKQotIHsKLS0JaW50IHJldDsK LSsJaW50IHJldCA9IDA7Ci0gCXN0cnVjdCB4a2JfcnVsZV9uYW1lcyBybWx2byA9IHsKLSAJCS5y dWxlcyA9ICJldmRldiIsCi0gCQkubW9kZWwgPSBtb2RlbCwKLUBAIC0xNDAsNyArMTM5LDE1IEBA IGludCB1eGtiX2Rlc2NfaW5pdChzdHJ1Y3QgaW5wdXQgKmlucHV0LCBjb25zdCBjaGFyICptb2Rl bCwgY29uc3QgY2hhciAqbGF5b3V0LCBjCi0gCQlsb2dfZGVidWcoIm5ldyBrZXlib2FyZCBkZXNj cmlwdGlvbiAoJXMsICVzLCAlcywgJXMpIiwgbW9kZWwsIGxheW91dCwgdmFyaWFudCwKLSAJCQkg IG9wdGlvbnMpOwotIAl9Ci0rCXJldHVybiAwOwotK2Vycl9jdHg6Ci0rCXhrYl9jb250ZXh0X3Vu cmVmKGlucHV0LT5jdHgpOwotKwlyZXR1cm4gcmV0OwotK30KLSAKLSt2b2lkIHV4a2JfY29tcG9z ZV90YWJsZV9pbml0KHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKmNvbXBvc2VfZmls ZSwgc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4sCi0rCQkJICAgICBjb25zdCBjaGFyICpsb2NhbGUp Ci0rewotIAlpZiAoY29tcG9zZV9maWxlICYmICpjb21wb3NlX2ZpbGUpIHsKLSAJCWlucHV0LT5j b21wb3NlX3RhYmxlID0geGtiX2NvbXBvc2VfdGFibGVfbmV3X2Zyb21fYnVmZmVyKAotIAkJCWlu cHV0LT5jdHgsIGNvbXBvc2VfZmlsZSwgY29tcG9zZV9maWxlX2xlbiwgbG9jYWxlLAotQEAgLTE2 MSwxOSArMTY4LDIwIEBAIGludCB1eGtiX2Rlc2NfaW5pdChzdHJ1Y3QgaW5wdXQgKmlucHV0LCBj b25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LCBjCi0gCQkJCSAidGFibGUsIGRp c2FibGluZyBjb21wb3NlIHN1cHBvcnQiKTsKLSAJCX0KLSAJfQotLQotLQlyZXR1cm4gMDsKLS0K LS1lcnJfY3R4OgotLQl4a2JfY29udGV4dF91bnJlZihpbnB1dC0+Y3R4KTsKLS0JcmV0dXJuIHJl dDsKLSB9Ci0gCi0tdm9pZCB1eGtiX2Rlc2NfZGVzdHJveShzdHJ1Y3QgaW5wdXQgKmlucHV0KQot K3ZvaWQgdXhrYl9jb21wb3NlX3RhYmxlX2Rlc3Ryb3koc3RydWN0IGlucHV0ICppbnB1dCkKLSB7 Ci0gCXhrYl9jb21wb3NlX3RhYmxlX3VucmVmKGlucHV0LT5jb21wb3NlX3RhYmxlKTsKLSsJaW5w dXQtPmNvbXBvc2VfdGFibGUgPSBOVUxMOwotK30KLSsKLSt2b2lkIHV4a2JfbGF5b3V0X2Rlc3Ry b3koc3RydWN0IGlucHV0ICppbnB1dCkKLSt7Ci0gCXhrYl9rZXltYXBfdW5yZWYoaW5wdXQtPmtl eW1hcCk7Ci0gCXhrYl9jb250ZXh0X3VucmVmKGlucHV0LT5jdHgpOwotKwlpbnB1dC0+a2V5bWFw ID0gTlVMTDsKLSsJaW5wdXQtPmN0eCA9IE5VTEw7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHRpbWVy X2V2ZW50KHN0cnVjdCBldl90aW1lciAqdGltZXIsIHVpbnQ2NF90IG51bSwgdm9pZCAqZGF0YSkK LUBAIC0yMTgsNiArMjI2LDkgQEAgdm9pZCB1eGtiX2Rldl9kZXN0cm95KHN0cnVjdCBpbnB1dF9k ZXYgKmRldikKLSAJeGtiX2NvbXBvc2Vfc3RhdGVfdW5yZWYoZGV2LT5jb21wb3NlX3N0YXRlKTsK LSAJeGtiX3N0YXRlX3VucmVmKGRldi0+c3RhdGUpOwotIAlldl9lbG9vcF9ybV90aW1lcihkZXYt PnJlcGVhdF90aW1lcik7Ci0rCWRldi0+Y29tcG9zZV9zdGF0ZSA9IE5VTEw7Ci0rCWRldi0+c3Rh dGUgPSBOVUxMOwotKwlkZXYtPnJlcGVhdF90aW1lciA9IE5VTEw7Ci0gfQotIAotICNkZWZpbmUg RVZERVZfS0VZQ09ERV9PRkZTRVQgOAotZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25fY29uZi5jIGIv c3JjL2ttc2Nvbl9jb25mLmMKLWluZGV4IDZhODcyOGEuLjRiMDFkNGEgMTAwNjQ0Ci0tLS0gYS9z cmMva21zY29uX2NvbmYuYwotKysrIGIvc3JjL2ttc2Nvbl9jb25mLmMKLUBAIC0zNCw2ICszNCw3 IEBACi0gI2luY2x1ZGUgPHhrYmNvbW1vbi94a2Jjb21tb24ta2V5c3ltcy5oPgotICNpbmNsdWRl ICJjb25mLmgiCi0gI2luY2x1ZGUgImttc2Nvbl9jb25mLmgiCi0rI2luY2x1ZGUgImttc2Nvbl9p c3N1ZS5oIgotICNpbmNsdWRlICJzaGwvZ2l0aGVhZC5oIgotICNpbmNsdWRlICJzaGwvbG9nLmgi Ci0gI2luY2x1ZGUgInNobC9taXNjLmgiCi1AQCAtNzgsMTQgKzc5LDEzIEBAIHN0YXRpYyB2b2lk IHByaW50X2hlbHAoKQotIAkJIlNlc3Npb24gT3B0aW9uczpcbiIKLSAJCSJcdCAgICAtLXNlc3Np b24tbWF4IDxtYXg+ICAgICAgICAgWzUwXSAgTWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnNcbiIK LSAJCSJcdCAgICAtLXNlc3Npb24tY29udHJvbCAgICAgICAgICAgW29mZl0gQWxsb3cga2V5Ym9h cmQgc2Vzc2lvbi1jb250cm9sXG4iCi0tCQkiXHQgICAgLS10ZXJtaW5hbC1zZXNzaW9uICAgICAg ICAgIFtvbl0gIEVuYWJsZSB0ZXJtaW5hbCBzZXNzaW9uXG4iCi0gCQkiXG4iCi0gCQkiVGVybWlu YWwgT3B0aW9uczpcbiIKLSAJCSJcdCAgICAtLWlzc3VlICAgICAgICAgICAgICAgICBbb25dXG4i Ci0gCQkiXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5IGlzc3VlIGZpbGVz IGJlZm9yZSB0aGVcbiIKLSAJCSJcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2lu IHByb21wdC4gVXNlIC0tbm8taXNzdWUgdG9cbiIKLSAJCSJcdCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxldCB0aGUgbG9naW4gcHJvY2VzcyBoYW5kbGUgaXQuXG4iCi0tCQkiXHQgICAg LS1pc3N1ZS1wYXRoIDxwYXRoPiAgICAgWy9ldGMvaXNzdWU6L2V0Yy9pc3N1ZS5kXVxuIgotKwkJ Ilx0ICAgIC0taXNzdWUtcGF0aCA8cGF0aD4gICAgIFsiIElTU1VFX0RFRkFVTFRfUEFUSCAiXVxu IgotIAkJIlx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb24tc2VwYXJhdGVkIGxp c3Qgb2YgaXNzdWVcbiIKLSAJCSJcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVz IGFuZCBkaXJlY3RvcmllcyB0byByZWFkXG4iCi0gCQkiXHQtbCwgLS1sb2dpbiAgICAgICAgICAg ICAgICAgWy9iaW4vbG9naW4gLXBdXG4iCi1AQCAtMTQ4LDggKzE0OCw2IEBAIHN0YXRpYyB2b2lk IHByaW50X2hlbHAoKQotIAkJIlx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3 aXRjaCB0byB0aGUgbmV4dCBzZXNzaW9uXG4iCi0gCQkiXHQgICAgLS1ncmFiLXNlc3Npb24tcHJl diA8Z3JhYj4gIFs8Q3RybD48TG9nbz5MZWZ0XVxuIgotIAkJIlx0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN3aXRjaCB0byB0aGUgcHJldmlvdXMgc2Vzc2lvblxuIgotLQkJIlx0 ICAgIC0tZ3JhYi1zZXNzaW9uLWR1bW15IDxncmFiPiBbPEN0cmw+PExvZ28+RXNjYXBlXVxuIgot LQkJIlx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3aXRjaCB0byBhIGR1bW15 IHNlc3Npb25cbiIKLSAJCSJcdCAgICAtLWdyYWItc2Vzc2lvbi1jbG9zZSA8Z3JhYj4gWzxDdHJs PjxMb2dvPkJhY2tTcGFjZV1cbiIKLSAJCSJcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDbG9zZSBjdXJyZW50IHNlc3Npb25cbiIKLSAJCSJcdCAgICAtLWdyYWItdGVybWluYWwt bmV3IDxncmFiPiAgWzxDdHJsPjxMb2dvPlJldHVybl1cbiIKLUBAIC02NTksOSArNjU3LDYgQEAg c3RhdGljIHN0cnVjdCBjb25mX2dyYWIgZGVmX2dyYWJfc2Vzc2lvbl9uZXh0ID0KLSBzdGF0aWMg c3RydWN0IGNvbmZfZ3JhYiBkZWZfZ3JhYl9zZXNzaW9uX3ByZXYgPQotIAlDT05GX1NJTkdMRV9H UkFCKFNITF9DT05UUk9MX01BU0sgfCBTSExfTE9HT19NQVNLLCBYS0JfS0VZX0xlZnQpOwotIAot LXN0YXRpYyBzdHJ1Y3QgY29uZl9ncmFiIGRlZl9ncmFiX3Nlc3Npb25fZHVtbXkgPQotLQlDT05G X1NJTkdMRV9HUkFCKFNITF9DT05UUk9MX01BU0sgfCBTSExfTE9HT19NQVNLLCBYS0JfS0VZX0Vz Y2FwZSk7Ci0tCi0gc3RhdGljIHN0cnVjdCBjb25mX2dyYWIgZGVmX2dyYWJfc2Vzc2lvbl9jbG9z ZSA9Ci0gCUNPTkZfU0lOR0xFX0dSQUIoU0hMX0NPTlRST0xfTUFTSyB8IFNITF9MT0dPX01BU0ss IFhLQl9LRVlfQmFja1NwYWNlKTsKLSAKLUBAIC03MjgsMTEgKzcyMywxMCBAQCBpbnQga21zY29u X2NvbmZfbmV3KHN0cnVjdCBjb25mX2N0eCAqKm91dCkKLSAJCS8qIFNlc3Npb24gT3B0aW9ucyAq LwotIAkJQ09ORl9PUFRJT05fVUlOVCgwLCAic2Vzc2lvbi1tYXgiLCAmY29uZi0+c2Vzc2lvbl9t YXgsIDUwKSwKLSAJCUNPTkZfT1BUSU9OX0JPT0woMCwgInNlc3Npb24tY29udHJvbCIsICZjb25m LT5zZXNzaW9uX2NvbnRyb2wsIGZhbHNlKSwKLS0JCUNPTkZfT1BUSU9OX0JPT0woMCwgInRlcm1p bmFsLXNlc3Npb24iLCAmY29uZi0+dGVybWluYWxfc2Vzc2lvbiwgdHJ1ZSksCi0gCi0gCQkvKiBU ZXJtaW5hbCBPcHRpb25zICovCi0gCQlDT05GX09QVElPTl9CT09MKDAsICJpc3N1ZSIsICZjb25m LT5pc3N1ZSwgdHJ1ZSksCi0tCQlDT05GX09QVElPTl9TVFJJTkcoMCwgImlzc3VlLXBhdGgiLCAm Y29uZi0+aXNzdWVfcGF0aCwgIi9ldGMvaXNzdWU6L2V0Yy9pc3N1ZS5kIiksCi0rCQlDT05GX09Q VElPTl9TVFJJTkcoMCwgImlzc3VlLXBhdGgiLCAmY29uZi0+aXNzdWVfcGF0aCwgSVNTVUVfREVG QVVMVF9QQVRIKSwKLSAJCUNPTkZfT1BUSU9OKDAsICdsJywgImxvZ2luIiwgJmNvbmZfbG9naW4s IGFmdGVyY2hlY2tfbG9naW4sIE5VTEwsIGZpbGVfbG9naW4sCi0gCQkJICAgICZjb25mLT5sb2dp biwgZmFsc2UpLAotIAkJQ09ORl9PUFRJT05fU1RSSU5HKCd0JywgInRlcm0iLCAmY29uZi0+dGVy bSwgImttc2NvbiIpLAotQEAgLTc0MiwxMiArNzM2LDEyIEBAIGludCBrbXNjb25fY29uZl9uZXco c3RydWN0IGNvbmZfY3R4ICoqb3V0KQotIAkJQ09ORl9PUFRJT05fQk9PTCgwLCAiYmVsbCIsICZj b25mLT5iZWxsLCBmYWxzZSksCi0gCi0gCQkvKiBJbnB1dCBPcHRpb25zICovCi0tCQlDT05GX09Q VElPTl9TVFJJTkcoMCwgInhrYi1tb2RlbCIsICZjb25mLT54a2JfbW9kZWwsICIiKSwKLS0JCUNP TkZfT1BUSU9OX1NUUklORygwLCAieGtiLWxheW91dCIsICZjb25mLT54a2JfbGF5b3V0LCAiIiks Ci0tCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi12YXJpYW50IiwgJmNvbmYtPnhrYl92YXJp YW50LCAiIiksCi0tCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi1vcHRpb25zIiwgJmNvbmYt PnhrYl9vcHRpb25zLCAiIiksCi0tCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi1rZXltYXAi LCAmY29uZi0+eGtiX2tleW1hcCwgIiIpLAotLQkJQ09ORl9PUFRJT05fU1RSSU5HKDAsICJ4a2It Y29tcG9zZS1maWxlIiwgJmNvbmYtPnhrYl9jb21wb3NlX2ZpbGUsICIiKSwKLSsJCUNPTkZfT1BU SU9OX1NUUklORygwLCAieGtiLW1vZGVsIiwgJmNvbmYtPnhrYl9tb2RlbCwgTlVMTCksCi0rCQlD T05GX09QVElPTl9TVFJJTkcoMCwgInhrYi1sYXlvdXQiLCAmY29uZi0+eGtiX2xheW91dCwgTlVM TCksCi0rCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi12YXJpYW50IiwgJmNvbmYtPnhrYl92 YXJpYW50LCBOVUxMKSwKLSsJCUNPTkZfT1BUSU9OX1NUUklORygwLCAieGtiLW9wdGlvbnMiLCAm Y29uZi0+eGtiX29wdGlvbnMsIE5VTEwpLAotKwkJQ09ORl9PUFRJT05fU1RSSU5HKDAsICJ4a2It a2V5bWFwIiwgJmNvbmYtPnhrYl9rZXltYXAsIE5VTEwpLAotKwkJQ09ORl9PUFRJT05fU1RSSU5H KDAsICJ4a2ItY29tcG9zZS1maWxlIiwgJmNvbmYtPnhrYl9jb21wb3NlX2ZpbGUsIE5VTEwpLAot IAkJQ09ORl9PUFRJT05fVUlOVCgwLCAieGtiLXJlcGVhdC1kZWxheSIsICZjb25mLT54a2JfcmVw ZWF0X2RlbGF5LCAyNTApLAotIAkJQ09ORl9PUFRJT05fVUlOVCgwLCAieGtiLXJlcGVhdC1yYXRl IiwgJmNvbmYtPnhrYl9yZXBlYXRfcmF0ZSwgNTApLAotIAkJQ09ORl9PUFRJT05fQk9PTCgwLCAi bW91c2UiLCAmY29uZi0+bW91c2UsIHRydWUpLAotQEAgLTc2Nyw4ICs3NjEsNiBAQCBpbnQga21z Y29uX2NvbmZfbmV3KHN0cnVjdCBjb25mX2N0eCAqKm91dCkKLSAJCQkJICZkZWZfZ3JhYl9zZXNz aW9uX25leHQpLAotIAkJQ09ORl9PUFRJT05fR1JBQigwLCAiZ3JhYi1zZXNzaW9uLXByZXYiLCAm Y29uZi0+Z3JhYl9zZXNzaW9uX3ByZXYsCi0gCQkJCSAmZGVmX2dyYWJfc2Vzc2lvbl9wcmV2KSwK LS0JCUNPTkZfT1BUSU9OX0dSQUIoMCwgImdyYWItc2Vzc2lvbi1kdW1teSIsICZjb25mLT5ncmFi X3Nlc3Npb25fZHVtbXksCi0tCQkJCSAmZGVmX2dyYWJfc2Vzc2lvbl9kdW1teSksCi0gCQlDT05G X09QVElPTl9HUkFCKDAsICJncmFiLXNlc3Npb24tY2xvc2UiLCAmY29uZi0+Z3JhYl9zZXNzaW9u X2Nsb3NlLAotIAkJCQkgJmRlZl9ncmFiX3Nlc3Npb25fY2xvc2UpLAotIAkJQ09ORl9PUFRJT05f R1JBQigwLCAiZ3JhYi10ZXJtaW5hbC1uZXciLCAmY29uZi0+Z3JhYl90ZXJtaW5hbF9uZXcsCi1k aWZmIC0tZ2l0IGEvc3JjL2ttc2Nvbl9jb25mLmggYi9zcmMva21zY29uX2NvbmYuaAotaW5kZXgg OGRjN2FmZC4uMzc3ZjhhMyAxMDA2NDQKLS0tLSBhL3NyYy9rbXNjb25fY29uZi5oCi0rKysgYi9z cmMva21zY29uX2NvbmYuaAotQEAgLTc5LDggKzc5LDYgQEAgc3RydWN0IGttc2Nvbl9jb25mX3Qg ewotIAl1bnNpZ25lZCBpbnQgc2Vzc2lvbl9tYXg7Ci0gCS8qIGFsbG93IGtleWJvYXJkIHNlc3Np b24gY29udHJvbCAqLwotIAlib29sIHNlc3Npb25fY29udHJvbDsKLS0JLyogcnVuIHRlcm1pbmFs IHNlc3Npb24gKi8KLS0JYm9vbCB0ZXJtaW5hbF9zZXNzaW9uOwotIAotIAkvKiBUZXJtaW5hbCBP cHRpb25zICovCi0gCS8qIGRpc3BsYXkgL2V0Yy9pc3N1ZSBiZWZvcmUgbG9naW4gcHJvbXB0ICov Ci1AQCAtMTQ1LDggKzE0Myw2IEBAIHN0cnVjdCBrbXNjb25fY29uZl90IHsKLSAJc3RydWN0IGNv bmZfZ3JhYiAqZ3JhYl9zZXNzaW9uX25leHQ7Ci0gCS8qIHNlc3Npb24tcHJldiBncmFiICovCi0g CXN0cnVjdCBjb25mX2dyYWIgKmdyYWJfc2Vzc2lvbl9wcmV2OwotLQkvKiBzZXNzaW9uLWR1bW15 IGdyYWIgKi8KLS0Jc3RydWN0IGNvbmZfZ3JhYiAqZ3JhYl9zZXNzaW9uX2R1bW15OwotIAkvKiBz ZXNzaW9uLWNsb3NlIGdyYWIgKi8KLSAJc3RydWN0IGNvbmZfZ3JhYiAqZ3JhYl9zZXNzaW9uX2Ns b3NlOwotIAkvKiB0ZXJtaW5hbC1uZXcgZ3JhYiAqLwotZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25f ZHVtbXkuYyBiL3NyYy9rbXNjb25fZHVtbXkuYwotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCBmY2FmYjZjLi4wMDAwMDAwCi0tLS0gYS9zcmMva21zY29uX2R1bW15LmMKLSsrKyAvZGV2 L251bGwKLUBAIC0xLDE1NCArMCwwIEBACi0tLyoKLS0gKiBrbXNjb24gLSBEdW1teSBTZXNzaW9u Ci0tICoKLS0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgRGF2aWQgSGVycm1hbm4gPGRoLmhlcnJtYW5u QGdvb2dsZW1haWwuY29tPgotLSAqCi0tICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0tICogYSBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcwotLSAqICh0aGUg IlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZwotLSAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLS0gKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBh bmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLS0gKiBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8KLS0gKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0tICoKLS0gKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl ZAotLSAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3 YXJlLgotLSAqCi0tICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLS0gKiBPUiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0tICogTUVSQ0hBTlRBQklMSVRZ LCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgot LSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZCi0tICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKLS0gKiBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQotLSAqIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotLSAqLwot LQotLS8qCi0tICogRHVtbXkgU2Vzc2lvbgotLSAqLwotLQotLSNpbmNsdWRlIDxlcnJuby5oPgot LSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgImtt c2Nvbl9kdW1teS5oIgotLSNpbmNsdWRlICJrbXNjb25fc2VhdC5oIgotLSNpbmNsdWRlICJzaGwv ZGxpc3QuaCIKLS0jaW5jbHVkZSAic2hsL2xvZy5oIgotLSNpbmNsdWRlICJ2aWRlby92aWRlby5o IgotLQotLSNkZWZpbmUgTE9HX1NVQlNZU1RFTSAiZHVtbXkiCi0tCi0tc3RydWN0IGRpc3BsYXkg ewotLQlzdHJ1Y3Qgc2hsX2RsaXN0IGxpc3Q7Ci0tCXN0cnVjdCBkaXNwbGF5ICpkaXNwOwotLX07 Ci0tCi0tc3RydWN0IGttc2Nvbl9kdW1teSB7Ci0tCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vz c2lvbjsKLS0Jc3RydWN0IHNobF9kbGlzdCBkaXNwbGF5czsKLS0JYm9vbCBhY3RpdmU7Ci0tfTsK LS0KLS1zdGF0aWMgdm9pZCBkdW1teV9yZWRyYXcoc3RydWN0IGttc2Nvbl9kdW1teSAqZHVtbXks IHN0cnVjdCBkaXNwbGF5ICpkKQotLXsKLS0JZGlzcGxheV9jbGVhcihkLT5kaXNwLCAwLCAwLCAw KTsKLS0JZGlzcGxheV9zd2FwKGQtPmRpc3ApOwotLX0KLS0KLS1zdGF0aWMgaW50IGR1bW15X3Nl c3Npb25fZXZlbnQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qga21zY29u X3Nlc3Npb25fZXZlbnQgKmV2LAotLQkJCSAgICAgICB2b2lkICpkYXRhKQotLXsKLS0Jc3RydWN0 IGttc2Nvbl9kdW1teSAqZHVtbXkgPSBkYXRhOwotLQlzdHJ1Y3QgZGlzcGxheSAqZDsKLS0Jc3Ry dWN0IHNobF9kbGlzdCAqaXRlcjsKLS0KLS0Jc3dpdGNoIChldi0+dHlwZSkgewotLQljYXNlIEtN U0NPTl9TRVNTSU9OX0RJU1BMQVlfTkVXOgotLQkJZCA9IG1hbGxvYyhzaXplb2YoKmQpKTsKLS0J CWlmICghZCkgewotLQkJCWxvZ19lcnJvcigiY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3 IGRpc3BsYXkiKTsKLS0JCQlicmVhazsKLS0JCX0KLS0JCW1lbXNldChkLCAwLCBzaXplb2YoKmQp KTsKLS0JCWQtPmRpc3AgPSBldi0+ZGlzcDsKLS0JCXNobF9kbGlzdF9saW5rX3RhaWwoJmR1bW15 LT5kaXNwbGF5cywgJmQtPmxpc3QpOwotLQkJaWYgKGR1bW15LT5hY3RpdmUpCi0tCQkJZHVtbXlf cmVkcmF3KGR1bW15LCBkKTsKLS0JCWJyZWFrOwotLQljYXNlIEtNU0NPTl9TRVNTSU9OX0RJU1BM QVlfR09ORToKLS0JCXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAmZHVtbXktPmRpc3BsYXlzKQot LQkJewotLQkJCWQgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGRpc3BsYXksIGxpc3Qp OwotLQkJCWlmIChkLT5kaXNwICE9IGV2LT5kaXNwKQotLQkJCQljb250aW51ZTsKLS0KLS0JCQlz aGxfZGxpc3RfdW5saW5rKCZkLT5saXN0KTsKLS0JCQlmcmVlKGQpOwotLQkJCWJyZWFrOwotLQkJ fQotLQkJYnJlYWs7Ci0tCWNhc2UgS01TQ09OX1NFU1NJT05fRElTUExBWV9SRUZSRVNIOgotLQkJ c2hsX2RsaXN0X2Zvcl9lYWNoKGl0ZXIsICZkdW1teS0+ZGlzcGxheXMpCi0tCQl7Ci0tCQkJZCA9 IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3QgZGlzcGxheSwgbGlzdCk7Ci0tCQkJaWYgKGQt PmRpc3AgIT0gZXYtPmRpc3ApCi0tCQkJCWNvbnRpbnVlOwotLQotLQkJCWlmIChkdW1teS0+YWN0 aXZlKQotLQkJCQlkdW1teV9yZWRyYXcoZHVtbXksIGQpOwotLQkJCWJyZWFrOwotLQkJfQotLQkJ YnJlYWs7Ci0tCWNhc2UgS01TQ09OX1NFU1NJT05fQUNUSVZBVEU6Ci0tCQlkdW1teS0+YWN0aXZl ID0gdHJ1ZTsKLS0JCXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAmZHVtbXktPmRpc3BsYXlzKQot LQkJewotLQkJCWQgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGRpc3BsYXksIGxpc3Qp OwotLQkJCWR1bW15X3JlZHJhdyhkdW1teSwgZCk7Ci0tCQl9Ci0tCQlicmVhazsKLS0JY2FzZSBL TVNDT05fU0VTU0lPTl9ERUFDVElWQVRFOgotLQkJZHVtbXktPmFjdGl2ZSA9IGZhbHNlOwotLQkJ YnJlYWs7Ci0tCWNhc2UgS01TQ09OX1NFU1NJT05fVU5SRUdJU1RFUjoKLS0JCXdoaWxlICghc2hs X2RsaXN0X2VtcHR5KCZkdW1teS0+ZGlzcGxheXMpKSB7Ci0tCQkJZCA9IHNobF9kbGlzdF9lbnRy eShkdW1teS0+ZGlzcGxheXMucHJldiwgc3RydWN0IGRpc3BsYXksIGxpc3QpOwotLQkJCXNobF9k bGlzdF91bmxpbmsoJmQtPmxpc3QpOwotLQkJCWZyZWUoZCk7Ci0tCQl9Ci0tCi0tCQlmcmVlKGR1 bW15KTsKLS0JCWJyZWFrOwotLQl9Ci0tCi0tCXJldHVybiAwOwotLX0KLS0KLS1pbnQga21zY29u X2R1bW15X3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91dCwgc3RydWN0IGttc2Nv bl9zZWF0ICpzZWF0KQotLXsKLS0Jc3RydWN0IGttc2Nvbl9kdW1teSAqZHVtbXk7Ci0tCWludCBy ZXQ7Ci0tCi0tCWlmICghb3V0IHx8ICFzZWF0KQotLQkJcmV0dXJuIC1FSU5WQUw7Ci0tCi0tCWR1 bW15ID0gbWFsbG9jKHNpemVvZigqZHVtbXkpKTsKLS0JaWYgKCFkdW1teSkKLS0JCXJldHVybiAt RU5PTUVNOwotLQltZW1zZXQoZHVtbXksIDAsIHNpemVvZigqZHVtbXkpKTsKLS0Jc2hsX2RsaXN0 X2luaXQoJmR1bW15LT5kaXNwbGF5cyk7Ci0tCi0tCXJldCA9IGttc2Nvbl9zZWF0X3JlZ2lzdGVy X3Nlc3Npb24oc2VhdCwgJmR1bW15LT5zZXNzaW9uLCBkdW1teV9zZXNzaW9uX2V2ZW50LCBkdW1t eSk7Ci0tCWlmIChyZXQpIHsKLS0JCWxvZ19lcnJvcigiY2Fubm90IHJlZ2lzdGVyIHNlc3Npb24g Zm9yIGR1bW15OiAlZCIsIHJldCk7Ci0tCQlnb3RvIGVycl9mcmVlOwotLQl9Ci0tCi0tCSpvdXQg PSBkdW1teS0+c2Vzc2lvbjsKLS0JbG9nX2RlYnVnKCJuZXcgZHVtbXkgb2JqZWN0ICVwIiwgZHVt bXkpOwotLQlyZXR1cm4gMDsKLS0KLS1lcnJfZnJlZToKLS0JZnJlZShkdW1teSk7Ci0tCXJldHVy biByZXQ7Ci0tfQotZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25faXNzdWUuYyBiL3NyYy9rbXNjb25f aXNzdWUuYwotaW5kZXggMzg0NmY4OS4uYmZmYjc5MiAxMDA2NDQKLS0tLSBhL3NyYy9rbXNjb25f aXNzdWUuYwotKysrIGIvc3JjL2ttc2Nvbl9pc3N1ZS5jCi1AQCAtMzYsMTYgKzM2LDYgQEAKLSAv KiBDYXAgdG90YWwgY29sbGVjdGVkIGlzc3VlIHRleHQgdG8gcHJldmVudCBydW5hd2F5IGFsbG9j YXRpb24uICovCi0gI2RlZmluZSBJU1NVRV9NQVhfU0laRSAoMjU2dSAqIDEwMjR1KQotIAotLS8q Ci0tICogRGVmYXVsdCBzZWFyY2ggcGF0aCwgbWF0Y2hpbmcgYWdldHR5J3MgZGVmYXVsdDoKLS0g KiAgIC9ldGMvaXNzdWU6L2V0Yy9pc3N1ZS5kCi0tICoKLS0gKiBEaXN0cm9zIGNhbiBvdmVycmlk ZSB0aGlzIHdpdGggLS1pc3N1ZS1wYXRoIG9yIHRoZSBpc3N1ZS1wYXRoIGNvbmZpZwotLSAqIG9w dGlvbiB1c2luZyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0LiAgUGxhaW4gZmlsZXMgYXJlIHJlYWQg ZGlyZWN0bHk7Ci0tICogZGlyZWN0b3JpZXMgYXJlIHNjYW5uZWQgZm9yICouaXNzdWUgZmlsZXMg aW4gbGV4aWNvZ3JhcGhpYyBvcmRlci4KLS0gKi8KLS0jZGVmaW5lIElTU1VFX0RFRkFVTFRfUEFU SCAiL2V0Yy9pc3N1ZTovZXRjL2lzc3VlLmQiCi0tCi0gLyogQ29sb3IgZXNjYXBlIGNvZGVzICov Ci0gLy8gY2xhbmctZm9ybWF0IG9mZgotICNkZWZpbmUgVUxfQ09MT1JfUkVTRVQJCSJbMG0iCi1k aWZmIC0tZ2l0IGEvc3JjL2ttc2Nvbl9pc3N1ZS5oIGIvc3JjL2ttc2Nvbl9pc3N1ZS5oCi1pbmRl eCBmNzQzODJhLi44OTAwYzk1IDEwMDY0NAotLS0tIGEvc3JjL2ttc2Nvbl9pc3N1ZS5oCi0rKysg Yi9zcmMva21zY29uX2lzc3VlLmgKLUBAIC0yOSw2ICsyOSwxNSBAQAotICNpbmNsdWRlIDxsaWJ0 c20uaD4KLSAjaW5jbHVkZSAicHR5LmgiCi0gCi0rLyoKLSsgKiBEZWZhdWx0IHNlYXJjaCBwYXRo LCBtYXRjaGluZyBhZ2V0dHkncyBkZWZhdWx0LgotKyAqCi0rICogRGlzdHJvcyBjYW4gb3ZlcnJp ZGUgdGhpcyB3aXRoIC0taXNzdWUtcGF0aCBvciB0aGUgaXNzdWUtcGF0aCBjb25maWcKLSsgKiBv cHRpb24gdXNpbmcgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdC4gIFBsYWluIGZpbGVzIGFyZSByZWFk IGRpcmVjdGx5OwotKyAqIGRpcmVjdG9yaWVzIGFyZSBzY2FubmVkIGZvciAqLmlzc3VlIGZpbGVz IGluIGxleGljb2dyYXBoaWMgb3JkZXIuCi0rICovCi0rI2RlZmluZSBJU1NVRV9ERUZBVUxUX1BB VEggIi9ldGMvaXNzdWU6L2V0Yy9pc3N1ZS5kIgotKwotIHZvaWQga21zY29uX2lzc3VlX3dyaXRl KHN0cnVjdCB0c21fdnRlICp2dGUsIHN0cnVjdCBrbXNjb25fcHR5ICpwdHksIGNvbnN0IGNoYXIg KnNlYXJjaF9wYXRoKTsKLSAKLSAjZW5kaWYgLyogS01TQ09OX0lTU1VFX0ggKi8KLWRpZmYgLS1n aXQgYS9zcmMva21zY29uX21haW4uYyBiL3NyYy9rbXNjb25fbWFpbi5jCi1pbmRleCA2ZmI1N2E4 Li44MTM0M2Y0IDEwMDY0NAotLS0tIGEvc3JjL2ttc2Nvbl9tYWluLmMKLSsrKyBiL3NyYy9rbXNj b25fbWFpbi5jCi1AQCAtMzEsNiArMzEsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5j bHVkZSA8c3lzL3NpZ25hbGZkLmg+Ci0gI2luY2x1ZGUgImNvbmYuaCIKLSsjaW5jbHVkZSAiZGJ1 cy5oIgotICNpbmNsdWRlICJrbXNjb25fY29uZi5oIgotICNpbmNsdWRlICJrbXNjb25fc2VhdC5o IgotICNpbmNsdWRlICJyZW5kZXIvdGV4dC5oIgotQEAgLTM5LDYgKzQwLDggQEAKLSAjaW5jbHVk ZSAic2hsL21vZHVsZS5oIgotICNpbmNsdWRlICJ2aWRlby92aWRlby5oIgotIAotKyNkZWZpbmUg TE9HX1NVQlNZU1RFTSAia21zY29uIgotKwotIHN0cnVjdCBrbXNjb25fYXBwIHsKLSAJc3RydWN0 IGNvbmZfY3R4ICpjb25mX2N0eDsKLSAJc3RydWN0IGttc2Nvbl9jb25mX3QgKmNvbmY7Ci1AQCAt NDksNiArNTIsNyBAQCBzdHJ1Y3Qga21zY29uX2FwcCB7Ci0gCXN0cnVjdCBjb25mX2N0eCAqc2Vh dF9jdHg7Ci0gCXN0cnVjdCBrbXNjb25fY29uZl90ICpzZWF0X2NvbmY7Ci0gCXN0cnVjdCBrbXNj b25fc2VhdCAqc2VhdDsKLSsJc3RydWN0IGttc2Nvbl9kYnVzICpkYnVzOwotIH07Ci0gCi0gc3Rh dGljIGludCBhcHBfc2VhdF9ldmVudChzdHJ1Y3Qga21zY29uX3NlYXQgKnMsIHVuc2lnbmVkIGlu dCBldmVudCwgdm9pZCAqZGF0YSkKLUBAIC0xMTIsNiArMTE2LDMwIEBAIHN0YXRpYyB2b2lkIGRl c3Ryb3lfYXBwKHN0cnVjdCBrbXNjb25fYXBwICphcHApCi0gCWV2X2Vsb29wX3VucmVnaXN0ZXJf c2lnbmFsX2NiKGFwcC0+ZWxvb3AsIFNJR0lOVCwgYXBwX3NpZ19nZW5lcmljLCBhcHApOwotIAll dl9lbG9vcF91bnJlZ2lzdGVyX3NpZ25hbF9jYihhcHAtPmVsb29wLCBTSUdURVJNLCBhcHBfc2ln X2dlbmVyaWMsIGFwcCk7Ci0gCWV2X2Vsb29wX3VucmVmKGFwcC0+ZWxvb3ApOwotKwlrbXNjb25f ZGJ1c19mcmVlKGFwcC0+ZGJ1cyk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIHVwZGF0ZV94a2JfbGF5 b3V0KGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsIGNvbnN0IGNoYXIgKnZh cmlhbnQsCi0rCQkJICAgICAgY29uc3QgY2hhciAqb3B0aW9ucywgdm9pZCAqZGF0YSkKLSt7Ci0r CXN0cnVjdCBrbXNjb25fYXBwICphcHAgPSBkYXRhOwotKwotKwlsb2dfZGVidWcoInVwZGF0aW5n IHhrYiBsYXlvdXQ6ICVzLCAlcywgJXMsICVzIiwgbW9kZWwsIGxheW91dCwgdmFyaWFudCwgb3B0 aW9ucyk7Ci0rCWlmIChrbXNjb25fc2VhdF91cGRhdGVfeGtiX2xheW91dChhcHAtPnNlYXQsIG1v ZGVsLCBsYXlvdXQsIHZhcmlhbnQsIG9wdGlvbnMpKQotKwkJbG9nX2Vycm9yKCJjYW5ub3QgdXBk YXRlIHhrYiBsYXlvdXQiKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgbGlzdGVuX3RvX2RidXNfbG9j YWxlMShzdHJ1Y3Qga21zY29uX2FwcCAqYXBwKQotK3sKLSsJaW50IHJldDsKLSsKLSsJaWYgKGFw cC0+Y29uZi0+eGtiX2tleW1hcCB8fCBhcHAtPmNvbmYtPnhrYl9tb2RlbCB8fCBhcHAtPmNvbmYt PnhrYl9sYXlvdXQgfHwKLSsJICAgIGFwcC0+Y29uZi0+eGtiX3ZhcmlhbnQgfHwgYXBwLT5jb25m LT54a2Jfb3B0aW9ucykKLSsJCXJldHVybjsKLSsKLSsJcmV0ID0ga21zY29uX2RidXNfbGlzdGVu X2xvY2FsZTEoYXBwLT5kYnVzLCB1cGRhdGVfeGtiX2xheW91dCwgYXBwKTsKLSsJaWYgKHJldCkK LSsJCWxvZ193YXJuaW5nKCJjYW5ub3QgbGlzdGVuIHRvIGxvY2FsZTE6ICVkIiwgcmV0KTsKLSB9 Ci0gCi0gc3RhdGljIGludCBzZXR1cF9hcHAoc3RydWN0IGttc2Nvbl9hcHAgKmFwcCkKLUBAIC0x NDIsNiArMTcwLDExIEBAIHN0YXRpYyBpbnQgc2V0dXBfYXBwKHN0cnVjdCBrbXNjb25fYXBwICph cHApCi0gCQlnb3RvIGVycl9hcHA7Ci0gCX0KLSAKLSsJYXBwLT5kYnVzID0ga21zY29uX2RidXNf bmV3KGFwcC0+ZWxvb3ApOwotKwlpZiAoYXBwLT5kYnVzKSB7Ci0rCQlrbXNjb25fZGJ1c19zZXRf eGtiX2Vudl9mcm9tX2xvY2FsZTEoYXBwLT5kYnVzKTsKLSsJCWxpc3Rlbl90b19kYnVzX2xvY2Fs ZTEoYXBwKTsKLSsJfQotIAlyZXR1cm4gMDsKLSAKLSBlcnJfYXBwOgotZGlmZiAtLWdpdCBhL3Ny Yy9rbXNjb25fc2VhdC5jIGIvc3JjL2ttc2Nvbl9zZWF0LmMKLWluZGV4IDdiNjc1OWEuLjkxYjhk YjggMTAwNjQ0Ci0tLS0gYS9zcmMva21zY29uX3NlYXQuYwotKysrIGIvc3JjL2ttc2Nvbl9zZWF0 LmMKLUBAIC0zOSw3ICszOSw2IEBACi0gI2luY2x1ZGUgImNvbmYuaCIKLSAjaW5jbHVkZSAiaW5w dXQvaW5wdXQuaCIKLSAjaW5jbHVkZSAia21zY29uX2NvbmYuaCIKLS0jaW5jbHVkZSAia21zY29u X2R1bW15LmgiCi0gI2luY2x1ZGUgImttc2Nvbl9zZWF0LmgiCi0gI2luY2x1ZGUgImttc2Nvbl90 ZXJtaW5hbC5oIgotICNpbmNsdWRlICJzaGwvZGxpc3QuaCIKLUBAIC01MywxNyArNTIsMTIgQEAK LSAKLSBzdHJ1Y3Qga21zY29uX3Nlc3Npb24gewotIAlzdHJ1Y3Qgc2hsX2RsaXN0IGxpc3Q7Ci0t CXVuc2lnbmVkIGxvbmcgcmVmOwotIAlzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQ7Ci0gCi0tCWJv b2wgZW5hYmxlZDsKLSAJYm9vbCBmb3JlZ3JvdW5kOwotLQlib29sIGRlYWN0aXZhdGluZzsKLSAK LSAJc3RydWN0IGV2X3RpbWVyICp0aW1lcjsKLS0KLS0Ja21zY29uX3Nlc3Npb25fY2JfdCBjYjsK LS0Jdm9pZCAqZGF0YTsKLSsJc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybTsKLSB9OwotIAot IHN0cnVjdCBrbXNjb25fZGlzcGxheSB7Ci1AQCAtODUsMTIgKzc5LDYgQEAgc3RydWN0IGttc2Nv bl92aWRlbyB7Ci0gCWJvb2wgYXdha2U7Ci0gfTsKLSAKLS1lbnVtIGttc2Nvbl9hc3luY19zY2hl ZHVsZSB7Ci0tCVNDSEVEVUxFX1NXSVRDSCwKLS0JU0NIRURVTEVfVlQsCi0tCVNDSEVEVUxFX1VO UkVHSVNURVIsCi0tfTsKLS0KLSBzdHJ1Y3Qga21zY29uX3NlYXQgewotIAlzdHJ1Y3QgZXZfZWxv b3AgKmVsb29wOwotIAlzdHJ1Y3QgY29uZl9jdHggKmNvbmZfY3R4OwotQEAgLTExMCwxMCArOTgs NiBAQCBzdHJ1Y3Qga21zY29uX3NlYXQgewotIAlib29sIGF3YWtlOwotIAlib29sIGZvcmVncm91 bmQ7Ci0gCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqY3VycmVudF9zZXNzOwotLQlzdHJ1Y3Qga21z Y29uX3Nlc3Npb24gKnNjaGVkdWxlZF9zZXNzOwotLQlzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKmR1 bW15X3Nlc3M7Ci0tCi0tCXVuc2lnbmVkIGludCBhc3luY19zY2hlZHVsZTsKLSAKLSAJLyogRFBN UyB0aW1lb3V0IG1hbmFnZW1lbnQgKi8KLSAJc3RydWN0IGV2X3RpbWVyICpkcG1zX3RpbWVyOwot QEAgLTEzMyw0OCArMTE3LDEwIEBAIHN0YXRpYyBpbnQga21zY29uX3NlYXRfYWRkX3ZpZGVvKHN0 cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgZW51bSB1dGVybV9tb25pdG9yX2RlCi0gc3RhdGljIHZv aWQga21zY29uX3NlYXRfcmVtb3ZlX3ZpZGVvKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgdm9p ZCAqZGF0YSk7Ci0gc3RhdGljIHZvaWQga21zY29uX3NlYXRfcG9sbF92aWRlbyh2b2lkICpkYXRh KTsKLSAKLS1zdGF0aWMgaW50IHNlc3Npb25fY2FsbChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNl c3MsIHVuc2lnbmVkIGludCBldmVudCwgc3RydWN0IGRpc3BsYXkgKmRpc3ApCi0tewotLQlzdHJ1 Y3Qga21zY29uX3Nlc3Npb25fZXZlbnQgZXY7Ci0tCi0tCWlmICghc2Vzcy0+Y2IpCi0tCQlyZXR1 cm4gMDsKLS0KLS0JbWVtc2V0KCZldiwgMCwgc2l6ZW9mKGV2KSk7Ci0tCWV2LnR5cGUgPSBldmVu dDsKLS0JZXYuZGlzcCA9IGRpc3A7Ci0tCXJldHVybiBzZXNzLT5jYihzZXNzLCAmZXYsIHNlc3Mt PmRhdGEpOwotLX0KLS0KLS1zdGF0aWMgaW50IHNlc3Npb25fY2FsbF9hY3RpdmF0ZShzdHJ1Y3Qg a21zY29uX3Nlc3Npb24gKnNlc3MpCi0tewotLQlsb2dfZGVidWcoImFjdGl2YXRlIHNlc3Npb24g JXAiLCBzZXNzKTsKLS0JcmV0dXJuIHNlc3Npb25fY2FsbChzZXNzLCBLTVNDT05fU0VTU0lPTl9B Q1RJVkFURSwgTlVMTCk7Ci0tfQotLQotLXN0YXRpYyBpbnQgc2Vzc2lvbl9jYWxsX2RlYWN0aXZh dGUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQotLXsKLS0JbG9nX2RlYnVnKCJkZWFjdGl2 YXRlIHNlc3Npb24gJXAiLCBzZXNzKTsKLS0JcmV0dXJuIHNlc3Npb25fY2FsbChzZXNzLCBLTVND T05fU0VTU0lPTl9ERUFDVElWQVRFLCBOVUxMKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQgc2Vzc2lv bl9jYWxsX2Rpc3BsYXlfbmV3KHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcywgc3RydWN0IGRp c3BsYXkgKmRpc3ApCi0tewotLQlzZXNzaW9uX2NhbGwoc2VzcywgS01TQ09OX1NFU1NJT05fRElT UExBWV9ORVcsIGRpc3ApOwotLX0KLS0KLS1zdGF0aWMgdm9pZCBzZXNzaW9uX2NhbGxfZGlzcGxh eV9nb25lKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcywgc3RydWN0IGRpc3BsYXkgKmRpc3Ap Ci0tewotLQlzZXNzaW9uX2NhbGwoc2VzcywgS01TQ09OX1NFU1NJT05fRElTUExBWV9HT05FLCBk aXNwKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQgc2Vzc2lvbl9jYWxsX2Rpc3BsYXlfcmVmcmVzaChz dHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MsIHN0cnVjdCBkaXNwbGF5ICpkaXNwKQotLXsKLS0J c2Vzc2lvbl9jYWxsKHNlc3MsIEtNU0NPTl9TRVNTSU9OX0RJU1BMQVlfUkVGUkVTSCwgZGlzcCk7 Ci0tfQotLQotIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KLSBzdGF0aWMgdm9pZCBzZWF0X2Rw bXNfcmVzZXRfdGltZXIoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KTsKLStzdGF0aWMgc3RydWN0 IGttc2Nvbl9zZXNzaW9uICprbXNjb25fc2VhdF9uZXdfc2Vzc2lvbihzdHJ1Y3Qga21zY29uX3Nl YXQgKnNlYXQpOwotK3N0YXRpYyB2b2lkIGttc2Nvbl9zZXNzaW9uX3VucmVnaXN0ZXIoc3RydWN0 IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKLSAKLSBzdGF0aWMgdm9pZCBhY3RpdmF0ZV9kaXNwbGF5 KHN0cnVjdCBrbXNjb25fZGlzcGxheSAqZCkKLSB7Ci1AQCAtMjAzLDEyICsxNDksMTIgQEAgc3Rh dGljIHZvaWQgYWN0aXZhdGVfZGlzcGxheShzdHJ1Y3Qga21zY29uX2Rpc3BsYXkgKmQpCi0gCQlz aGxfZGxpc3RfZm9yX2VhY2hfc2FmZShpdGVyLCB0bXAsICZzZWF0LT5zZXNzaW9ucykKLSAJCXsK LSAJCQlzID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiwgbGlz dCk7Ci0tCQkJc2Vzc2lvbl9jYWxsX2Rpc3BsYXlfbmV3KHMsIGQtPmRpc3ApOwotKwkJCXRlcm1p bmFsX2FkZF9kaXNwbGF5KHMtPnRlcm0sIGQtPmRpc3ApOwotIAkJfQotIAl9Ci0gfQotIAotLXN0 YXRpYyBpbnQgc2VhdF9nb19mb3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgYm9v bCBmb3JjZSkKLStzdGF0aWMgaW50IHNlYXRfZ29fZm9yZWdyb3VuZChzdHJ1Y3Qga21zY29uX3Nl YXQgKnNlYXQpCi0gewotIAlzdHJ1Y3Qgc2hsX2RsaXN0ICppdGVyLCAqdG1wOwotIAlzdHJ1Y3Qg a21zY29uX3ZpZGVvICp2aWQ7Ci1AQCAtMjE3LDcgKzE2Myw3IEBAIHN0YXRpYyBpbnQgc2VhdF9n b19mb3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgYm9vbCBmb3JjZSkKLSAKLSAJ aWYgKHNlYXQtPmZvcmVncm91bmQpCi0gCQlyZXR1cm4gMDsKLS0JaWYgKCFzZWF0LT5hd2FrZSB8 fCAoIWZvcmNlICYmIHNlYXQtPmN1cnJlbnRfc2VzcykpCi0rCWlmICghc2VhdC0+YXdha2UpCi0g CQlyZXR1cm4gLUVCVVNZOwotIAotIAlzZWF0LT5mb3JlZ3JvdW5kID0gdHJ1ZTsKLUBAIC0yNTEs MTQgKzE5NywxNCBAQCBzdGF0aWMgaW50IHNlYXRfZ29fZm9yZWdyb3VuZChzdHJ1Y3Qga21zY29u X3NlYXQgKnNlYXQsIGJvb2wgZm9yY2UpCi0gCXJldHVybiAwOwotIH0KLSAKLS1zdGF0aWMgaW50 IHNlYXRfZ29fYmFja2dyb3VuZChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIGJvb2wgZm9yY2Up Ci0rc3RhdGljIGludCBzZWF0X2dvX2JhY2tncm91bmQoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0 KQotIHsKLSAJc3RydWN0IHNobF9kbGlzdCAqaXRlcjsKLSAJc3RydWN0IGttc2Nvbl92aWRlbyAq dmlkOwotIAotIAlpZiAoIXNlYXQtPmZvcmVncm91bmQpCi0gCQlyZXR1cm4gMDsKLS0JaWYgKCFz ZWF0LT5hd2FrZSB8fCAoIWZvcmNlICYmIHNlYXQtPmN1cnJlbnRfc2VzcykpCi0rCWlmICghc2Vh dC0+YXdha2UpCi0gCQlyZXR1cm4gLUVCVVNZOwotIAotIAlzaGxfZGxpc3RfZm9yX2VhY2goaXRl ciwgJnNlYXQtPnZpZGVvcykKLUBAIC0yNzEsMjUgKzIxNywxNSBAQCBzdGF0aWMgaW50IHNlYXRf Z29fYmFja2dyb3VuZChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIGJvb2wgZm9yY2UpCi0gCXJl dHVybiAwOwotIH0KLSAKLS1zdGF0aWMgaW50IHNlYXRfZ29fYXNsZWVwKHN0cnVjdCBrbXNjb25f c2VhdCAqc2VhdCwgYm9vbCBmb3JjZSkKLStzdGF0aWMgaW50IHNlYXRfZ29fYXNsZWVwKHN0cnVj dCBrbXNjb25fc2VhdCAqc2VhdCkKLSB7Ci0tCWludCBlcnIgPSAwOwotLQotIAlpZiAoIXNlYXQt PmF3YWtlKQotIAkJcmV0dXJuIDA7Ci0tCWlmIChzZWF0LT5jdXJyZW50X3Nlc3MgfHwgc2VhdC0+ Zm9yZWdyb3VuZCkgewotLQkJaWYgKGZvcmNlKSB7Ci0tCQkJc2VhdC0+Zm9yZWdyb3VuZCA9IGZh bHNlOwotLQkJCXNlYXQtPmN1cnJlbnRfc2VzcyA9IE5VTEw7Ci0tCQkJZXJyID0gLUVCVVNZOwot LQkJfSBlbHNlIHsKLS0JCQlyZXR1cm4gLUVCVVNZOwotLQkJfQotLQl9Ci0rCi0gCXNlYXQtPmF3 YWtlID0gZmFsc2U7Ci0gCWlucHV0X3NsZWVwKHNlYXQtPmlucHV0KTsKLSAKLS0JcmV0dXJuIGVy cjsKLSsJcmV0dXJuIDA7Ci0gfQotIAotIHN0YXRpYyBpbnQgc2VhdF9nb19hd2FrZShzdHJ1Y3Qg a21zY29uX3NlYXQgKnNlYXQpCi1AQCAtMzEzLDE5NiArMjQ5LDUyIEBAIHN0YXRpYyBpbnQgc2Vh dF9nb19hd2FrZShzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCi0gCXJldHVybiAwOwotIH0KLSAK LS1zdGF0aWMgaW50IHNlYXRfcnVuKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLStzdGF0aWMg dm9pZCBzZWF0X3N3aXRjaChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIHN0cnVjdCBrbXNjb25f c2Vzc2lvbiAqbmV3KQotIHsKLS0JaW50IHJldDsKLS0Jc3RydWN0IGttc2Nvbl9zZXNzaW9uICpz ZXNzaW9uOwotLQotLQlpZiAoIXNlYXQtPmF3YWtlKQotLQkJcmV0dXJuIC1FQlVTWTsKLS0JaWYg KHNlYXQtPmN1cnJlbnRfc2VzcykKLS0JCXJldHVybiAwOwotLQotLQlpZiAoIXNlYXQtPnNjaGVk dWxlZF9zZXNzKSB7Ci0tCQlsb2dfZGVidWcoIm5vIHNlc3Npb24gc2NoZWR1bGVkIHRvIHJ1biAo bnVtICV6dSkiLCBzZWF0LT5zZXNzaW9uX2NvdW50KTsKLS0JCXJldHVybiAtRU5PRU5UOwotLQl9 Ci0tCXNlc3Npb24gPSBzZWF0LT5zY2hlZHVsZWRfc2VzczsKLS0KLS0JaWYgKHNlc3Npb24tPmZv cmVncm91bmQgJiYgIXNlYXQtPmZvcmVncm91bmQpIHsKLS0JCXJldCA9IHNlYXRfZ29fZm9yZWdy b3VuZChzZWF0LCBmYWxzZSk7Ci0tCQlpZiAocmV0KSB7Ci0tCQkJbG9nX3dhcm5pbmcoImNhbm5v dCBwdXQgc2VhdCAlcyBpbnRvIGZvcmVncm91bmQgZm9yIHNlc3Npb24gJXAiLCBzZWF0LT5uYW1l LAotLQkJCQkgICAgc2Vzc2lvbik7Ci0tCQkJcmV0dXJuIHJldDsKLS0JCX0KLS0JfSBlbHNlIGlm ICghc2Vzc2lvbi0+Zm9yZWdyb3VuZCAmJiBzZWF0LT5mb3JlZ3JvdW5kKSB7Ci0tCQlyZXQgPSBz ZWF0X2dvX2JhY2tncm91bmQoc2VhdCwgZmFsc2UpOwotLQkJaWYgKHJldCkgewotLQkJCWxvZ193 YXJuaW5nKCJjYW5ub3QgcHV0IHNlYXQgJXMgaW50byBiYWNrZ3JvdW5kIGZvciBzZXNzaW9uICVw Iiwgc2VhdC0+bmFtZSwKLS0JCQkJICAgIHNlc3Npb24pOwotLQkJCXJldHVybiByZXQ7Ci0tCQl9 Ci0tCX0KLS0KLS0JcmV0ID0gc2Vzc2lvbl9jYWxsX2FjdGl2YXRlKHNlc3Npb24pOwotLQlpZiAo cmV0KSB7Ci0tCQlsb2dfd2FybmluZygiY2Fubm90IGFjdGl2YXRlIHNlc3Npb24gJXA6ICVkIiwg c2Vzc2lvbiwgcmV0KTsKLS0JCXJldHVybiByZXQ7Ci0tCX0KLS0KLS0Jc2VhdC0+Y3VycmVudF9z ZXNzID0gc2Vzc2lvbjsKLS0KLS0JcmV0dXJuIDA7Ci0tfQotLQotLXN0YXRpYyB2b2lkIHNlc3Np b25fZGVhY3RpdmF0ZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCi0tewotLQlpZiAoc2Vz cy0+c2VhdC0+Y3VycmVudF9zZXNzICE9IHNlc3MpCi0rCWlmIChzZWF0LT5jdXJyZW50X3Nlc3Mg PT0gbmV3KQotIAkJcmV0dXJuOwotIAotLQlzZXNzLT5zZWF0LT5hc3luY19zY2hlZHVsZSA9IFND SEVEVUxFX1NXSVRDSDsKLS0Jc2Vzcy0+ZGVhY3RpdmF0aW5nID0gZmFsc2U7Ci0tCXNlc3MtPnNl YXQtPmN1cnJlbnRfc2VzcyA9IE5VTEw7Ci0tfQotLQotLXN0YXRpYyBpbnQgc2VhdF9wYXVzZShz dHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIGJvb2wgZm9yY2UpCi0tewotLQlpbnQgcmV0OwotLQot LQlpZiAoIXNlYXQtPmN1cnJlbnRfc2VzcykKLS0JCXJldHVybiAwOwotLQotLQlzZWF0LT5jdXJy ZW50X3Nlc3MtPmRlYWN0aXZhdGluZyA9IHRydWU7Ci0tCXJldCA9IHNlc3Npb25fY2FsbF9kZWFj dGl2YXRlKHNlYXQtPmN1cnJlbnRfc2Vzcyk7Ci0tCWlmIChyZXQpIHsKLS0JCWlmIChyZXQgPT0g LUVJTlBST0dSRVNTKQotLQkJCWxvZ19kZWJ1ZygicGVuZGluZyBkZWFjdGl2YXRpb24gZm9yIHNl c3Npb24gJXAiLCBzZWF0LT5jdXJyZW50X3Nlc3MpOwotLQkJZWxzZQotLQkJCWxvZ193YXJuaW5n KCJjYW5ub3QgZGVhY3RpdmF0ZSBzZXNzaW9uICVwOiAlZCIsIHNlYXQtPmN1cnJlbnRfc2Vzcywg cmV0KTsKLS0JCWlmICghZm9yY2UpCi0tCQkJcmV0dXJuIHJldDsKLS0JfQotLQotLQlzZXNzaW9u X2RlYWN0aXZhdGUoc2VhdC0+Y3VycmVudF9zZXNzKTsKLS0KLS0JcmV0dXJuIHJldDsKLS19Ci0t Ci0tc3RhdGljIHZvaWQgc2VhdF9yZXNjaGVkdWxlKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkK LS17Ci0tCXN0cnVjdCBzaGxfZGxpc3QgKml0ZXIsICpzdGFydDsKLS0Jc3RydWN0IGttc2Nvbl9z ZXNzaW9uICpzZXNzOwotLQotLQlpZiAoc2VhdC0+c2NoZWR1bGVkX3Nlc3MgJiYgc2VhdC0+c2No ZWR1bGVkX3Nlc3MtPmVuYWJsZWQpCi0tCQlyZXR1cm47Ci0tCi0tCWlmIChzZWF0LT5jdXJyZW50 X3Nlc3MgJiYgc2VhdC0+Y3VycmVudF9zZXNzLT5lbmFibGVkKSB7Ci0tCQlzZWF0LT5zY2hlZHVs ZWRfc2VzcyA9IHNlYXQtPmN1cnJlbnRfc2VzczsKLS0JCXJldHVybjsKLS0JfQotKwlsb2dfZGVi dWcoInN3aXRjaCBzZXNzaW9uIGZyb20gJXAgdG8gJXAgb24gc2VhdCAlcyIsIHNlYXQtPmN1cnJl bnRfc2VzcywgbmV3LCBzZWF0LT5uYW1lKTsKLSAKLSAJaWYgKHNlYXQtPmN1cnJlbnRfc2VzcykK LS0JCXN0YXJ0ID0gJnNlYXQtPmN1cnJlbnRfc2Vzcy0+bGlzdDsKLS0JZWxzZQotLQkJc3RhcnQg PSAmc2VhdC0+c2Vzc2lvbnM7Ci0tCi0tCXNobF9kbGlzdF9mb3JfZWFjaF9idXRfb25lKGl0ZXIs IHN0YXJ0LCAmc2VhdC0+c2Vzc2lvbnMpCi0tCXsKLS0JCXNlc3MgPSBzaGxfZGxpc3RfZW50cnko aXRlciwgc3RydWN0IGttc2Nvbl9zZXNzaW9uLCBsaXN0KTsKLS0JCWlmIChzZXNzID09IHNlYXQt PmR1bW15X3Nlc3MgfHwgIXNlc3MtPmVuYWJsZWQpCi0tCQkJY29udGludWU7Ci0tCQlzZWF0LT5z Y2hlZHVsZWRfc2VzcyA9IHNlc3M7Ci0tCQlyZXR1cm47Ci0rCQl0ZXJtaW5hbF9kZWFjdGl2YXRl KHNlYXQtPmN1cnJlbnRfc2Vzcy0+dGVybSk7Ci0rCWlmIChuZXcpIHsKLSsJCWlmIChuZXctPmZv cmVncm91bmQgJiYgIXNlYXQtPmZvcmVncm91bmQpIHsKLSsJCQlzZWF0X2dvX2ZvcmVncm91bmQo c2VhdCk7Ci0rCQl9IGVsc2UgaWYgKCFuZXctPmZvcmVncm91bmQgJiYgc2VhdC0+Zm9yZWdyb3Vu ZCkgewotKwkJCXNlYXRfZ29fYmFja2dyb3VuZChzZWF0KTsKLSsJCX0KLSsJCXRlcm1pbmFsX2Fj dGl2YXRlKG5ldy0+dGVybSk7Ci0gCX0KLS0KLS0JaWYgKHNlYXQtPmR1bW15X3Nlc3MgJiYgc2Vh dC0+ZHVtbXlfc2Vzcy0+ZW5hYmxlZCkKLS0JCXNlYXQtPnNjaGVkdWxlZF9zZXNzID0gc2VhdC0+ ZHVtbXlfc2VzczsKLS0JZWxzZQotLQkJc2VhdC0+c2NoZWR1bGVkX3Nlc3MgPSBOVUxMOwotLX0K LS0KLS1zdGF0aWMgYm9vbCBzZWF0X2hhc19zY2hlZHVsZShzdHJ1Y3Qga21zY29uX3NlYXQgKnNl YXQpCi0tewotLQlyZXR1cm4gc2VhdC0+c2NoZWR1bGVkX3Nlc3MgJiYgc2VhdC0+c2NoZWR1bGVk X3Nlc3MgIT0gc2VhdC0+Y3VycmVudF9zZXNzOwotLX0KLS0KLS1zdGF0aWMgaW50IHNlYXRfc3dp dGNoKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLS17Ci0tCWludCByZXQ7Ci0tCi0tCXNlYXQt PmFzeW5jX3NjaGVkdWxlID0gU0NIRURVTEVfU1dJVENIOwotLQlyZXQgPSBzZWF0X3BhdXNlKHNl YXQsIGZhbHNlKTsKLS0JaWYgKHJldCkKLS0JCXJldHVybiByZXQ7Ci0tCi0tCXJldHVybiBzZWF0 X3J1bihzZWF0KTsKLSsJc2VhdC0+Y3VycmVudF9zZXNzID0gbmV3OwotIH0KLSAKLSBzdGF0aWMg dm9pZCBzZWF0X25leHQoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQotIHsKLS0Jc3RydWN0IHNo bF9kbGlzdCAqY3VyLCAqaXRlcjsKLS0Jc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzLCAqbmV4dDsK LSsJc3RydWN0IGttc2Nvbl9zZXNzaW9uICpuZXh0ID0gTlVMTDsKLSAKLSAJaWYgKHNlYXQtPmN1 cnJlbnRfc2VzcykKLS0JCWN1ciA9ICZzZWF0LT5jdXJyZW50X3Nlc3MtPmxpc3Q7Ci0tCWVsc2Ug aWYgKHNlYXQtPnNlc3Npb25fY291bnQpCi0tCQljdXIgPSAmc2VhdC0+c2Vzc2lvbnM7Ci0tCWVs c2UKLS0JCXJldHVybjsKLS0KLS0JbmV4dCA9IE5VTEw7Ci0tCWlmICghc2VhdC0+Y3VycmVudF9z ZXNzICYmIHNlYXQtPmR1bW15X3Nlc3MgJiYgc2VhdC0+ZHVtbXlfc2Vzcy0+ZW5hYmxlZCkKLS0J CW5leHQgPSBzZWF0LT5kdW1teV9zZXNzOwotLQotLQlzaGxfZGxpc3RfZm9yX2VhY2hfYnV0X29u ZShpdGVyLCBjdXIsICZzZWF0LT5zZXNzaW9ucykKLS0JewotLQkJcyA9IHNobF9kbGlzdF9lbnRy eShpdGVyLCBzdHJ1Y3Qga21zY29uX3Nlc3Npb24sIGxpc3QpOwotLQkJaWYgKCFzLT5lbmFibGVk IHx8IHNlYXQtPmR1bW15X3Nlc3MgPT0gcykKLS0JCQljb250aW51ZTsKLS0KLS0JCW5leHQgPSBz OwotLQkJYnJlYWs7Ci0tCX0KLS0KLSsJCW5leHQgPSBzaGxfZGxpc3RfbmV4dChzZWF0LT5jdXJy ZW50X3Nlc3MsICZzZWF0LT5zZXNzaW9ucywgbGlzdCk7Ci0gCWlmICghbmV4dCkKLS0JCXJldHVy bjsKLSsJCW5leHQgPSBzaGxfZGxpc3RfZmlyc3QoJnNlYXQtPnNlc3Npb25zLCBzdHJ1Y3Qga21z Y29uX3Nlc3Npb24sIGxpc3QpOwotKwlpZiAobmV4dCAmJiBuZXh0ID09IHNlYXQtPmN1cnJlbnRf c2VzcykKLSsJCW5leHQgPSBOVUxMOwotIAotLQlzZWF0LT5zY2hlZHVsZWRfc2VzcyA9IG5leHQ7 Ci0tCXNlYXRfc3dpdGNoKHNlYXQpOwotKwlzZWF0X3N3aXRjaChzZWF0LCBuZXh0KTsKLSB9Ci0g Ci0gc3RhdGljIHZvaWQgc2VhdF9wcmV2KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSB7Ci0t CXN0cnVjdCBzaGxfZGxpc3QgKmN1ciwgKml0ZXI7Ci0tCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAq cywgKnByZXY7Ci0rCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqcHJldiA9IE5VTEw7Ci0gCi0gCWlm IChzZWF0LT5jdXJyZW50X3Nlc3MpCi0tCQljdXIgPSAmc2VhdC0+Y3VycmVudF9zZXNzLT5saXN0 OwotLQllbHNlIGlmIChzZWF0LT5zZXNzaW9uX2NvdW50KQotLQkJY3VyID0gJnNlYXQtPnNlc3Np b25zOwotLQllbHNlCi0tCQlyZXR1cm47Ci0tCi0tCXByZXYgPSBOVUxMOwotLQlpZiAoIXNlYXQt PmN1cnJlbnRfc2VzcyAmJiBzZWF0LT5kdW1teV9zZXNzICYmIHNlYXQtPmR1bW15X3Nlc3MtPmVu YWJsZWQpCi0tCQlwcmV2ID0gc2VhdC0+ZHVtbXlfc2VzczsKLS0KLS0Jc2hsX2RsaXN0X2Zvcl9l YWNoX3JldmVyc2VfYnV0X29uZShpdGVyLCBjdXIsICZzZWF0LT5zZXNzaW9ucykKLS0JewotLQkJ cyA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3Qga21zY29uX3Nlc3Npb24sIGxpc3QpOwot LQkJaWYgKCFzLT5lbmFibGVkIHx8IHNlYXQtPmR1bW15X3Nlc3MgPT0gcykKLS0JCQljb250aW51 ZTsKLS0KLS0JCXByZXYgPSBzOwotLQkJYnJlYWs7Ci0tCX0KLS0KLSsJCXByZXYgPSBzaGxfZGxp c3RfcHJldihzZWF0LT5jdXJyZW50X3Nlc3MsICZzZWF0LT5zZXNzaW9ucywgbGlzdCk7Ci0gCWlm ICghcHJldikKLS0JCXJldHVybjsKLSsJCXByZXYgPSBzaGxfZGxpc3RfbGFzdCgmc2VhdC0+c2Vz c2lvbnMsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiwgbGlzdCk7Ci0rCWlmIChwcmV2ICYmIHByZXYg PT0gc2VhdC0+Y3VycmVudF9zZXNzKQotKwkJcHJldiA9IE5VTEw7Ci0gCi0tCXNlYXQtPnNjaGVk dWxlZF9zZXNzID0gcHJldjsKLS0Jc2VhdF9zd2l0Y2goc2VhdCk7Ci0rCXNlYXRfc3dpdGNoKHNl YXQsIHByZXYpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBzZWF0X2FkZF9kaXNwbGF5KHN0cnVjdCBr bXNjb25fc2VhdCAqc2VhdCwgc3RydWN0IGRpc3BsYXkgKmRpc3ApCi1AQCAtNTM2LDcgKzMyOCw3 IEBAIHN0YXRpYyB2b2lkIHNlYXRfcmVtb3ZlX2Rpc3BsYXkoc3RydWN0IGttc2Nvbl9zZWF0ICpz ZWF0LCBzdHJ1Y3Qga21zY29uX2Rpc3BsYXkKLSAJCXNobF9kbGlzdF9mb3JfZWFjaF9zYWZlKGl0 ZXIsIHRtcCwgJnNlYXQtPnNlc3Npb25zKQotIAkJewotIAkJCXMgPSBzaGxfZGxpc3RfZW50cnko aXRlciwgc3RydWN0IGttc2Nvbl9zZXNzaW9uLCBsaXN0KTsKLS0JCQlzZXNzaW9uX2NhbGxfZGlz cGxheV9nb25lKHMsIGQtPmRpc3ApOwotKwkJCXRlcm1pbmFsX3JtX2Rpc3BsYXkocy0+dGVybSwg ZC0+ZGlzcCk7Ci0gCQl9Ci0gCX0KLSAKLUBAIC01NjksNyArMzYxLDcgQEAgc3RhdGljIHZvaWQg c2VhdF9yZWZyZXNoX2Rpc3BsYXkoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCBzdHJ1Y3Qga21z Y29uX2Rpc3BsYXkKLSAJCXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAmc2VhdC0+c2Vzc2lvbnMp Ci0gCQl7Ci0gCQkJcyA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3Qga21zY29uX3Nlc3Np b24sIGxpc3QpOwotLQkJCXNlc3Npb25fY2FsbF9kaXNwbGF5X3JlZnJlc2gocywgZC0+ZGlzcCk7 Ci0rCQkJdGVybWluYWxfcmVmcmVzaF9kaXNwbGF5cyhzLT50ZXJtKTsKLSAJCX0KLSAJfQotIH0K LUBAIC01NzgsOSArMzcwLDE0IEBAIHN0YXRpYyB2b2lkIHNlYXRfdnRfYWN0aXZhdGUoc3RydWN0 IHV0ZXJtX3Z0ICp2dCwgdm9pZCAqZGF0YSkKLSB7Ci0gCXN0cnVjdCBrbXNjb25fc2VhdCAqc2Vh dCA9IGRhdGE7Ci0gCi0rCWxvZ19kZWJ1ZygiVlQgJWQgYWN0aXZhdGVkIG9uIHNlYXQgJXMiLCB1 dGVybV92dF9nZXRfbnVtKHZ0KSwgc2VhdC0+bmFtZSk7Ci0rCi0gCWlmIChzZWF0X2dvX2F3YWtl KHNlYXQpKQotIAkJcmV0dXJuOwotLQlzZWF0X3J1bihzZWF0KTsKLSsJaWYgKHNlYXRfZ29fZm9y ZWdyb3VuZChzZWF0KSkKLSsJCXJldHVybjsKLSsJaWYgKHNlYXQtPmN1cnJlbnRfc2VzcykKLSsJ CXRlcm1pbmFsX2FjdGl2YXRlKHNlYXQtPmN1cnJlbnRfc2Vzcy0+dGVybSk7Ci0gfQotIAotIHN0 YXRpYyBpbnQgc2VhdF92dF9kZWFjdGl2YXRlKHN0cnVjdCB1dGVybV92dCAqdnQsIGJvb2wgZm9y Y2UsIHZvaWQgKmRhdGEpCi1AQCAtNTg4LDE0ICszODUsMTMgQEAgc3RhdGljIGludCBzZWF0X3Z0 X2RlYWN0aXZhdGUoc3RydWN0IHV0ZXJtX3Z0ICp2dCwgYm9vbCBmb3JjZSwgdm9pZCAqZGF0YSkK LSAJc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0ID0gZGF0YTsKLSAJaW50IHJldDsKLSAKLS0Jc2Vh dC0+YXN5bmNfc2NoZWR1bGUgPSBTQ0hFRFVMRV9WVDsKLS0JcmV0ID0gc2VhdF9wYXVzZShzZWF0 LCBmYWxzZSk7Ci0tCWlmIChyZXQpCi0tCQlyZXR1cm4gcmV0OwotLQlyZXQgPSBzZWF0X2dvX2Jh Y2tncm91bmQoc2VhdCwgZmFsc2UpOwotKwlpZiAoc2VhdC0+Y3VycmVudF9zZXNzKQotKwkJdGVy bWluYWxfZGVhY3RpdmF0ZShzZWF0LT5jdXJyZW50X3Nlc3MtPnRlcm0pOwotKwotKwlyZXQgPSBz ZWF0X2dvX2JhY2tncm91bmQoc2VhdCk7Ci0gCWlmIChyZXQpCi0gCQlyZXR1cm4gcmV0OwotLQly ZXQgPSBzZWF0X2dvX2FzbGVlcChzZWF0LCBmYWxzZSk7Ci0rCXJldCA9IHNlYXRfZ29fYXNsZWVw KHNlYXQpOwotIAlpZiAocmV0KQotIAkJcmV0dXJuIHJldDsKLSAJcmV0dXJuIDA7Ci1AQCAtNzI2 LDcgKzUyMiw2IEBAIHN0YXRpYyB2b2lkIHNlYXRfaW5wdXRfZXZlbnQoc3RydWN0IGlucHV0ICpp bnB1dCwgc3RydWN0IGlucHV0X2tleV9ldmVudCAqZXYsIHZvCi0gewotIAlzdHJ1Y3Qga21zY29u X3NlYXQgKnNlYXQgPSBkYXRhOwotIAlzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnM7Ci0tCWludCBy ZXQ7Ci0gCi0gCS8qIFJlc2V0IERQTVMgdGltZXIgb24gYW55IGlucHV0IGV2ZW50ICovCi0gCXNl YXRfZHBtc19yZXNldF90aW1lcihzZWF0KTsKLUBAIC03MzYsNDkgKzUzMSwyNyBAQCBzdGF0aWMg dm9pZCBzZWF0X2lucHV0X2V2ZW50KHN0cnVjdCBpbnB1dCAqaW5wdXQsIHN0cnVjdCBpbnB1dF9r ZXlfZXZlbnQgKmV2LCB2bwotIAotIAlpZiAoY29uZl9ncmFiX21hdGNoZXMoc2VhdC0+Y29uZi0+ Z3JhYl9zZXNzaW9uX25leHQsIGV2LT5tb2RzLCBldi0+bnVtX3N5bXMsIGV2LT5rZXlzeW1zKSkg ewotIAkJZXYtPmhhbmRsZWQgPSB0cnVlOwotLQkJaWYgKCFzZWF0LT5jb25mLT5zZXNzaW9uX2Nv bnRyb2wpCi0rCQlpZiAoIXNlYXQtPmNvbmYtPnNlc3Npb25fY29udHJvbCB8fCBzZWF0LT5zZXNz aW9uX2NvdW50IDwgMikKLSAJCQlyZXR1cm47Ci0gCQlzZWF0X25leHQoc2VhdCk7Ci0gCQlyZXR1 cm47Ci0gCX0KLSAJaWYgKGNvbmZfZ3JhYl9tYXRjaGVzKHNlYXQtPmNvbmYtPmdyYWJfc2Vzc2lv bl9wcmV2LCBldi0+bW9kcywgZXYtPm51bV9zeW1zLCBldi0+a2V5c3ltcykpIHsKLSAJCWV2LT5o YW5kbGVkID0gdHJ1ZTsKLS0JCWlmICghc2VhdC0+Y29uZi0+c2Vzc2lvbl9jb250cm9sKQotKwkJ aWYgKCFzZWF0LT5jb25mLT5zZXNzaW9uX2NvbnRyb2wgfHwgc2VhdC0+c2Vzc2lvbl9jb3VudCA8 IDIpCi0gCQkJcmV0dXJuOwotIAkJc2VhdF9wcmV2KHNlYXQpOwotIAkJcmV0dXJuOwotIAl9Ci0t CWlmIChjb25mX2dyYWJfbWF0Y2hlcyhzZWF0LT5jb25mLT5ncmFiX3Nlc3Npb25fZHVtbXksIGV2 LT5tb2RzLCBldi0+bnVtX3N5bXMsCi0tCQkJICAgICAgZXYtPmtleXN5bXMpKSB7Ci0tCQlldi0+ aGFuZGxlZCA9IHRydWU7Ci0tCQlpZiAoIXNlYXQtPmNvbmYtPnNlc3Npb25fY29udHJvbCkKLS0J CQlyZXR1cm47Ci0tCQlzZWF0LT5zY2hlZHVsZWRfc2VzcyA9IHNlYXQtPmR1bW15X3Nlc3M7Ci0t CQlzZWF0X3N3aXRjaChzZWF0KTsKLS0JCXJldHVybjsKLS0JfQotKwotIAlpZiAoY29uZl9ncmFi X21hdGNoZXMoc2VhdC0+Y29uZi0+Z3JhYl9zZXNzaW9uX2Nsb3NlLCBldi0+bW9kcywgZXYtPm51 bV9zeW1zLAotIAkJCSAgICAgIGV2LT5rZXlzeW1zKSkgewotIAkJZXYtPmhhbmRsZWQgPSB0cnVl OwotLQkJaWYgKCFzZWF0LT5jb25mLT5zZXNzaW9uX2NvbnRyb2wpCi0rCQlpZiAoIXNlYXQtPmNv bmYtPnNlc3Npb25fY29udHJvbCB8fCBzZWF0LT5zZXNzaW9uX2NvdW50IDwgMikKLSAJCQlyZXR1 cm47Ci0gCQlzID0gc2VhdC0+Y3VycmVudF9zZXNzOwotIAkJaWYgKCFzKQotIAkJCXJldHVybjsK LS0JCWlmIChzID09IHNlYXQtPmR1bW15X3Nlc3MpCi0tCQkJcmV0dXJuOwotLQotLQkJLyogRmly c3QgdGltZSB0aGlzIGlzIGludm9rZWQgb24gYSBzZXNzaW9uLCB3ZSBzaW1wbHkgdHJ5Ci0tCQkg KiB1bmxvYWRpbmcgaXQuIElmIGl0IGZhaWxzLCB3ZSBnaXZlIGl0IHNvbWUgdGltZS4gSWYgdGhp cyBpcwotLQkJICogaW52b2tlZCBhIHNlY29uZCB0aW1lLCB3ZSBub3RpY2UgdGhhdCB3ZSBhbHJl YWR5IHRyaWVkCi0tCQkgKiByZW1vdmluZyBpdCBhbmQgc28gd2UgZ28gc3RyYWlnaHQgdG8gdW5y ZWdpc3RlcmluZyB0aGUKLS0JCSAqIHNlc3Npb24gdW5jb25kaXRpb25hbGx5LiAqLwotLQkJaWYg KCFzLT5kZWFjdGl2YXRpbmcpIHsKLS0JCQlzZWF0LT5hc3luY19zY2hlZHVsZSA9IFNDSEVEVUxF X1VOUkVHSVNURVI7Ci0tCQkJcmV0ID0gc2VhdF9wYXVzZShzZWF0LCBmYWxzZSk7Ci0tCQkJaWYg KHJldCkKLS0JCQkJcmV0dXJuOwotLQkJfQotIAotIAkJa21zY29uX3Nlc3Npb25fdW5yZWdpc3Rl cihzKTsKLSAJCXJldHVybjsKLUBAIC03ODcsMTYgKzU2MCw5IEBAIHN0YXRpYyB2b2lkIHNlYXRf aW5wdXRfZXZlbnQoc3RydWN0IGlucHV0ICppbnB1dCwgc3RydWN0IGlucHV0X2tleV9ldmVudCAq ZXYsIHZvCi0gCQlldi0+aGFuZGxlZCA9IHRydWU7Ci0gCQlpZiAoIXNlYXQtPmNvbmYtPnNlc3Np b25fY29udHJvbCkKLSAJCQlyZXR1cm47Ci0tCQlyZXQgPSBrbXNjb25fdGVybWluYWxfcmVnaXN0 ZXIoJnMsIHNlYXQsIHV0ZXJtX3Z0X2dldF9udW0oc2VhdC0+dnQpKTsKLS0JCWlmIChyZXQgPT0g LUVPUE5PVFNVUFApIHsKLS0JCQlsb2dfbm90aWNlKCJ0ZXJtaW5hbCBzdXBwb3J0IG5vdCBjb21w aWxlZCBpbiIpOwotLQkJfSBlbHNlIGlmIChyZXQpIHsKLS0JCQlsb2dfZXJyb3IoImNhbm5vdCBy ZWdpc3RlciB0ZXJtaW5hbCBzZXNzaW9uOiAlZCIsIHJldCk7Ci0tCQl9IGVsc2UgewotLQkJCXMt PmVuYWJsZWQgPSB0cnVlOwotLQkJCXNlYXQtPnNjaGVkdWxlZF9zZXNzID0gczsKLS0JCQlzZWF0 X3N3aXRjaChzZWF0KTsKLS0JCX0KLSsJCXMgPSBrbXNjb25fc2VhdF9uZXdfc2Vzc2lvbihzZWF0 KTsKLSsJCWlmIChzKQotKwkJCXNlYXRfc3dpdGNoKHNlYXQsIHMpOwotIAkJcmV0dXJuOwotIAl9 Ci0gCWlmIChzZWF0LT5jb25mLT5ncmFiX3JlYm9vdCAmJgotQEAgLTgyOSwxMiArNTk1LDkgQEAg c3RhdGljIGNvbnN0IGNoYXIgKmZpbmRfbG9jYWxlKHZvaWQpCi0gCi0gc3RhdGljIGludCBrbXNj b25fc2VhdF9zZXRfa2V5bWFwKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSB7Ci0tCWNvbnN0 IGNoYXIgKmxvY2FsZTsKLS0JY2hhciAqa2V5bWFwLCAqY29tcG9zZV9maWxlOwotLQlzaXplX3Qg Y29tcG9zZV9maWxlX2xlbjsKLS0JaW50IHJldDsKLSAKLS0JbG9jYWxlID0gZmluZF9sb2NhbGUo KTsKLSsJY2hhciAqa2V5bWFwOwotKwlpbnQgcmV0OwotIAotIAkvKiBUT0RPOiBUaGUgWEtCLUFQ SSBjdXJyZW50bHkgcmVxdWlyZXMgemVyby10ZXJtaW5hdGVkIHN0cmluZ3MgYXMKLSAJICoga2V5 bWFwIGlucHV0LiBIZW5jZSwgd2UgaGF2ZSB0byByZWFkIGl0IGluIGluc3RlYWQgb2YgdXNpbmcg bW1hcCgpLgotQEAgLTg0NiwyMSArNjA5LDQ5IEBAIHN0YXRpYyBpbnQga21zY29uX3NlYXRfc2V0 X2tleW1hcChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCi0gCQkJbG9nX2Vycm9yKCJjYW5ub3Qg cmVhZCBrZXltYXAgZmlsZSAlczogJWQiLCBzZWF0LT5jb25mLT54a2Jfa2V5bWFwLCByZXQpOwot IAl9Ci0gCi0rCXJldCA9IGlucHV0X3NldF9rZXltYXAoc2VhdC0+aW5wdXQsIHNlYXQtPmNvbmYt PnhrYl9tb2RlbCwgc2VhdC0+Y29uZi0+eGtiX2xheW91dCwKLSsJCQkgICAgICAgc2VhdC0+Y29u Zi0+eGtiX3ZhcmlhbnQsIHNlYXQtPmNvbmYtPnhrYl9vcHRpb25zLCBrZXltYXApOwotKwlpZiAo cmV0KQotKwkJbG9nX2Vycm9yKCJjYW5ub3Qgc2V0IGtleW1hcDogJWQiLCByZXQpOwotKwotKwlm cmVlKGtleW1hcCk7Ci0rCXJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyB2b2lkIGttc2Nvbl9z ZWF0X3NldF9jb21wb3NlKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSt7Ci0rCWNvbnN0IGNo YXIgKmxvY2FsZTsKLSsJY2hhciAqY29tcG9zZV9maWxlOwotKwlzaXplX3QgY29tcG9zZV9maWxl X2xlbjsKLSsJaW50IHJldDsKLSsKLSsJbG9jYWxlID0gZmluZF9sb2NhbGUoKTsKLSsKLSAJY29t cG9zZV9maWxlID0gTlVMTDsKLSAJY29tcG9zZV9maWxlX2xlbiA9IDA7Ci0gCWlmIChzZWF0LT5j b25mLT54a2JfY29tcG9zZV9maWxlICYmICpzZWF0LT5jb25mLT54a2JfY29tcG9zZV9maWxlKSB7 Ci0gCQlyZXQgPSBzaGxfcmVhZF9maWxlKHNlYXQtPmNvbmYtPnhrYl9jb21wb3NlX2ZpbGUsICZj b21wb3NlX2ZpbGUsICZjb21wb3NlX2ZpbGVfbGVuKTsKLS0JCWlmIChyZXQpCi0rCQlpZiAocmV0 KSB7Ci0gCQkJbG9nX2Vycm9yKCJjYW5ub3QgcmVhZCBjb21wb3NlIGZpbGUgJXM6ICVkIiwgc2Vh dC0+Y29uZi0+eGtiX2NvbXBvc2VfZmlsZSwKLSAJCQkJICByZXQpOwotKwkJCXJldHVybjsKLSsJ CX0KLSAJfQotLQlyZXQgPSBpbnB1dF9zZXRfa2V5bWFwKHNlYXQtPmlucHV0LCBzZWF0LT5jb25m LT54a2JfbW9kZWwsIHNlYXQtPmNvbmYtPnhrYl9sYXlvdXQsCi0tCQkJICAgICAgIHNlYXQtPmNv bmYtPnhrYl92YXJpYW50LCBzZWF0LT5jb25mLT54a2Jfb3B0aW9ucywgbG9jYWxlLCBrZXltYXAs Ci0tCQkJICAgICAgIGNvbXBvc2VfZmlsZSwgY29tcG9zZV9maWxlX2xlbik7Ci0tCWlmIChyZXQp Ci0tCQlsb2dfZXJyb3IoImNhbm5vdCBzZXQga2V5bWFwOiAlZCIsIHJldCk7Ci0rCWlucHV0X3Nl dF9jb21wb3NlKHNlYXQtPmlucHV0LCBsb2NhbGUsIGNvbXBvc2VfZmlsZSwgY29tcG9zZV9maWxl X2xlbik7Ci0rfQotIAotLQlmcmVlKGtleW1hcCk7Ci0raW50IGttc2Nvbl9zZWF0X3VwZGF0ZV94 a2JfbGF5b3V0KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgY29uc3QgY2hhciAqbW9kZWwsIGNv bnN0IGNoYXIgKmxheW91dCwKLSsJCQkJICBjb25zdCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFy ICpvcHRpb25zKQotK3sKLSsJaW50IHJldDsKLSsKLSsJcmV0ID0gaW5wdXRfdXBkYXRlX2tleW1h cChzZWF0LT5pbnB1dCwgbW9kZWwsIGxheW91dCwgdmFyaWFudCwgb3B0aW9ucyk7Ci0rCWlmIChy ZXQpIHsKLSsJCWxvZ19lcnJvcigiY2Fubm90IHVwZGF0ZSBrZXltYXA6ICVkIiwgcmV0KTsKLSsJ CXJldHVybiByZXQ7Ci0rCX0KLSsJLyogQ29tcG9zZSB0YWJsZSBpcyBsb3N0IHdoZW4gdXBkYXRp bmcgdGhlIGtleW1hcCwgc28gd2UgbmVlZCB0byBzZXQgaXQgYWdhaW4gKi8KLSsJa21zY29uX3Nl YXRfc2V0X2NvbXBvc2Uoc2VhdCk7Ci0gCXJldHVybiByZXQ7Ci0gfQotIAotQEAgLTk5Myw2ICs3 ODQsOCBAQCBpbnQga21zY29uX3NlYXRfbmV3KHN0cnVjdCBrbXNjb25fc2VhdCAqKm91dCwgc3Ry dWN0IGNvbmZfY3R4ICptYWluX2NvbmYsCi0gCWlmIChyZXQpCi0gCQlnb3RvIGVycl9jb25mOwot IAotKwlrbXNjb25fc2VhdF9zZXRfY29tcG9zZShzZWF0KTsKLSsKLSAJcmV0ID0gdXRlcm1fbW9u aXRvcl9uZXcoJnNlYXQtPm1vbiwgc2VhdC0+ZWxvb3AsICZzZWF0X21vbml0b3JfY2IsIHNlYXQp OwotIAlpZiAocmV0KSB7Ci0gCQlsb2dfZXJyb3IoImNhbm5vdCBjcmVhdGUgZGV2aWNlIG1vbml0 b3I6ICVkIiwgcmV0KTsKLUBAIC0xMDYzLDEyICs4NTYsOSBAQCB2b2lkIGttc2Nvbl9zZWF0X2Zy ZWUoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQotIAlpZiAoIXNlYXQpCi0gCQlyZXR1cm47Ci0g Ci0tCXJldCA9IHNlYXRfcGF1c2Uoc2VhdCwgdHJ1ZSk7Ci0tCWlmIChyZXQpCi0tCQlsb2dfd2Fy bmluZygiZGVzdHJveWluZyBzZWF0ICVzIHdoaWxlIHNlc3Npb24gJXAgaXMgYWN0aXZlIiwgc2Vh dC0+bmFtZSwKLS0JCQkgICAgc2VhdC0+Y3VycmVudF9zZXNzKTsKLSsJc2VhdF9zd2l0Y2goc2Vh dCwgTlVMTCk7Ci0gCi0tCXJldCA9IHNlYXRfZ29fYXNsZWVwKHNlYXQsIHRydWUpOwotKwlyZXQg PSBzZWF0X2dvX2FzbGVlcChzZWF0KTsKLSAJaWYgKHJldCkKLSAJCWxvZ193YXJuaW5nKCJkZXN0 cm95aW5nIHNlYXQgJXMgd2hpbGUgc3RpbGwgYXdha2U6ICVkIiwgc2VhdC0+bmFtZSwgcmV0KTsK LSAKLUBAIC0xMzA2LDMxICsxMDk2LDE4IEBAIHN0YXRpYyB2b2lkIGttc2Nvbl9zZWF0X3BvbGxf dmlkZW8odm9pZCAqZGF0YSkKLSAKLSB2b2lkIGttc2Nvbl9zZWF0X3N0YXJ0dXAoc3RydWN0IGtt c2Nvbl9zZWF0ICpzZWF0KQotIHsKLS0JaW50IHJldDsKLSAJc3RydWN0IGttc2Nvbl9zZXNzaW9u ICpzOwotIAotIAlpZiAoIXNlYXQpCi0gCQlyZXR1cm47Ci0gCi0tCXJldCA9IGttc2Nvbl9kdW1t eV9yZWdpc3Rlcigmcywgc2VhdCk7Ci0tCWlmIChyZXQgPT0gLUVPUE5PVFNVUFApIHsKLS0JCWxv Z19ub3RpY2UoImR1bW15IHNlc3Npb25zIG5vdCBjb21waWxlZCBpbiIpOwotLQl9IGVsc2UgaWYg KHJldCkgewotLQkJbG9nX2Vycm9yKCJjYW5ub3QgcmVnaXN0ZXIgZHVtbXkgc2Vzc2lvbjogJWQi LCByZXQpOwotLQl9IGVsc2UgewotLQkJc2VhdC0+ZHVtbXlfc2VzcyA9IHM7Ci0tCQlrbXNjb25f c2Vzc2lvbl9lbmFibGUocyk7Ci0tCX0KLSsJc2VhdF9nb19hd2FrZShzZWF0KTsKLSAKLS0JaWYg KHNlYXQtPmNvbmYtPnRlcm1pbmFsX3Nlc3Npb24pIHsKLS0JCXJldCA9IGttc2Nvbl90ZXJtaW5h bF9yZWdpc3Rlcigmcywgc2VhdCwgdXRlcm1fdnRfZ2V0X251bShzZWF0LT52dCkpOwotLQkJaWYg KHJldCA9PSAtRU9QTk9UU1VQUCkKLS0JCQlsb2dfbm90aWNlKCJ0ZXJtaW5hbCBzdXBwb3J0IG5v dCBjb21waWxlZCBpbiIpOwotLQkJZWxzZSBpZiAocmV0KQotLQkJCWxvZ19lcnJvcigiY2Fubm90 IHJlZ2lzdGVyIHRlcm1pbmFsIHNlc3Npb24iKTsKLS0JCWVsc2UKLS0JCQlrbXNjb25fc2Vzc2lv bl9lbmFibGUocyk7Ci0tCX0KLSsJcyA9IGttc2Nvbl9zZWF0X25ld19zZXNzaW9uKHNlYXQpOwot KwlpZiAocykKLSsJCXNlYXRfc3dpdGNoKHNlYXQsIHMpOwotKwllbHNlCi0rCQlsb2dfZXJyb3Io ImNhbm5vdCBjcmVhdGUgbmV3IHNlc3Npb24gb24gc2VhdCAlcyIsIHNlYXQtPm5hbWUpOwotIAot IAlpZiAoc2VhdC0+Y29uZi0+c3dpdGNodnQgfHwgdXRlcm1fdnRfZ2V0X251bShzZWF0LT52dCkg PT0gMCkKLSAJCXV0ZXJtX3Z0X2FjdGl2YXRlKHNlYXQtPnZ0KTsKLUBAIC0xMzM5LDMwICsxMTE2 LDYgQEAgdm9pZCBrbXNjb25fc2VhdF9zdGFydHVwKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkK LSAJdXRlcm1fbW9uaXRvcl9zY2FuKHNlYXQtPm1vbiwgc2VhdC0+bmFtZSk7Ci0gfQotIAotLWNv bnN0IGNoYXIgKmttc2Nvbl9zZWF0X2dldF9uYW1lKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkK LS17Ci0tCWlmICghc2VhdCkKLS0JCXJldHVybiBOVUxMOwotLQotLQlyZXR1cm4gc2VhdC0+bmFt ZTsKLS19Ci0tCi0tc3RydWN0IGlucHV0ICprbXNjb25fc2VhdF9nZXRfaW5wdXQoc3RydWN0IGtt c2Nvbl9zZWF0ICpzZWF0KQotLXsKLS0JaWYgKCFzZWF0KQotLQkJcmV0dXJuIE5VTEw7Ci0tCi0t CXJldHVybiBzZWF0LT5pbnB1dDsKLS19Ci0tCi0tc3RydWN0IGV2X2Vsb29wICprbXNjb25fc2Vh dF9nZXRfZWxvb3Aoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQotLXsKLS0JaWYgKCFzZWF0KQot LQkJcmV0dXJuIE5VTEw7Ci0tCi0tCXJldHVybiBzZWF0LT5lbG9vcDsKLS19Ci0tCi0gc3RydWN0 IGNvbmZfY3R4ICprbXNjb25fc2VhdF9nZXRfY29uZihzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQp Ci0gewotIAlpZiAoIXNlYXQpCi1AQCAtMTM3MSwzNiArMTEyNCwzOSBAQCBzdHJ1Y3QgY29uZl9j dHggKmttc2Nvbl9zZWF0X2dldF9jb25mKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKLSAJcmV0 dXJuIHNlYXQtPmNvbmZfY3R4OwotIH0KLSAKLS1pbnQga21zY29uX3NlYXRfcmVnaXN0ZXJfc2Vz c2lvbihzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91 dCwKLS0JCQkJIGttc2Nvbl9zZXNzaW9uX2NiX3QgY2IsIHZvaWQgKmRhdGEpCi0rc3RhdGljIHN0 cnVjdCBrbXNjb25fc2Vzc2lvbiAqa21zY29uX3NlYXRfbmV3X3Nlc3Npb24oc3RydWN0IGttc2Nv bl9zZWF0ICpzZWF0KQotIHsKLSAJc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzOwotIAlzdHJ1 Y3Qgc2hsX2RsaXN0ICppdGVyOwotIAlzdHJ1Y3Qga21zY29uX2Rpc3BsYXkgKmQ7Ci0gCi0tCWlm ICghc2VhdCB8fCAhb3V0KQotLQkJcmV0dXJuIC1FSU5WQUw7Ci0rCWlmICghc2VhdCkKLSsJCXJl dHVybiBOVUxMOwotIAotIAlpZiAoc2VhdC0+Y29uZi0+c2Vzc2lvbl9tYXggJiYgc2VhdC0+c2Vz c2lvbl9jb3VudCA+PSBzZWF0LT5jb25mLT5zZXNzaW9uX21heCkgewotIAkJbG9nX3dhcm5pbmco Im1heGltdW0gbnVtYmVyIG9mIHNlc3Npb25zIHJlYWNoZWQgKCVkKSwgZHJvcHBpbmcgbmV3IHNl c3Npb24iLAotIAkJCSAgICBzZWF0LT5jb25mLT5zZXNzaW9uX21heCk7Ci0tCQlyZXR1cm4gLUVP VkVSRkxPVzsKLSsJCXJldHVybiBOVUxMOwotIAl9Ci0gCi0gCXNlc3MgPSBtYWxsb2Moc2l6ZW9m KCpzZXNzKSk7Ci0gCWlmICghc2VzcykgewotIAkJbG9nX2Vycm9yKCJjYW5ub3QgYWxsb2NhdGUg bWVtb3J5IGZvciBuZXcgc2Vzc2lvbiBvbiBzZWF0ICVzIiwgc2VhdC0+bmFtZSk7Ci0tCQlyZXR1 cm4gLUVOT01FTTsKLSsJCXJldHVybiBOVUxMOwotIAl9Ci0gCi0gCWxvZ19kZWJ1ZygicmVnaXN0 ZXIgc2Vzc2lvbiAlcCIsIHNlc3MpOwotIAotIAltZW1zZXQoc2VzcywgMCwgc2l6ZW9mKCpzZXNz KSk7Ci0tCXNlc3MtPnJlZiA9IDE7Ci0gCXNlc3MtPnNlYXQgPSBzZWF0OwotLQlzZXNzLT5jYiA9 IGNiOwotLQlzZXNzLT5kYXRhID0gZGF0YTsKLSAJc2Vzcy0+Zm9yZWdyb3VuZCA9IHRydWU7Ci0r CXNlc3MtPnRlcm0gPSB0ZXJtaW5hbF9uZXcoc2VzcywgdXRlcm1fdnRfZ2V0X251bShzZWF0LT52 dCksIHNlYXQtPmNvbmZfY3R4LCBzZWF0LT5lbG9vcCwKLSsJCQkJICBzZWF0LT5pbnB1dCwgc2Vh dC0+bmFtZSk7Ci0rCWlmICghc2Vzcy0+dGVybSkgewotKwkJbG9nX2Vycm9yKCJjYW5ub3QgY3Jl YXRlIHRlcm1pbmFsIGZvciBuZXcgc2Vzc2lvbiBvbiBzZWF0ICVzIiwgc2VhdC0+bmFtZSk7Ci0r CQlmcmVlKHNlc3MpOwotKwkJcmV0dXJuIE5VTEw7Ci0rCX0KLSAKLSAJLyogcmVnaXN0ZXIgbmV3 IHNlc3Npb25zIG5leHQgdG8gdGhlIGN1cnJlbnQgb25lICovCi0gCWlmIChzZWF0LT5jdXJyZW50 X3Nlc3MpCi1AQCAtMTQwOSwzOSArMTE2NSwxOCBAQCBpbnQga21zY29uX3NlYXRfcmVnaXN0ZXJf c2Vzc2lvbihzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbgot IAkJc2hsX2RsaXN0X2xpbmtfdGFpbCgmc2VhdC0+c2Vzc2lvbnMsICZzZXNzLT5saXN0KTsKLSAK LSAJKytzZWF0LT5zZXNzaW9uX2NvdW50OwotLQkqb3V0ID0gc2VzczsKLSAKLSAJc2hsX2RsaXN0 X2Zvcl9lYWNoKGl0ZXIsICZzZWF0LT5kaXNwbGF5cykKLSAJewotIAkJZCA9IHNobF9kbGlzdF9l bnRyeShpdGVyLCBzdHJ1Y3Qga21zY29uX2Rpc3BsYXksIGxpc3QpOwotLQkJc2Vzc2lvbl9jYWxs X2Rpc3BsYXlfbmV3KHNlc3MsIGQtPmRpc3ApOwotKwkJdGVybWluYWxfYWRkX2Rpc3BsYXkoc2Vz cy0+dGVybSwgZC0+ZGlzcCk7Ci0gCX0KLS0KLS0JcmV0dXJuIDA7Ci0tfQotLQotLXZvaWQga21z Y29uX3Nlc3Npb25fcmVmKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcykKLS17Ci0tCWlmICgh c2VzcyB8fCAhc2Vzcy0+cmVmKQotLQkJcmV0dXJuOwotLQotLQkrK3Nlc3MtPnJlZjsKLSsJcmV0 dXJuIHNlc3M7Ci0gfQotIAotLXZvaWQga21zY29uX3Nlc3Npb25fdW5yZWYoc3RydWN0IGttc2Nv bl9zZXNzaW9uICpzZXNzKQotLXsKLS0JaWYgKCFzZXNzIHx8ICFzZXNzLT5yZWYgfHwgLS1zZXNz LT5yZWYpCi0tCQlyZXR1cm47Ci0tCi0tCWttc2Nvbl9zZXNzaW9uX3VucmVnaXN0ZXIoc2Vzcyk7 Ci0tCWZyZWUoc2Vzcyk7Ci0tfQotLQotLXZvaWQga21zY29uX3Nlc3Npb25fdW5yZWdpc3Rlcihz dHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCi0rc3RhdGljIHZvaWQga21zY29uX3Nlc3Npb25f dW5yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCi0gewotIAlzdHJ1Y3Qga21z Y29uX3NlYXQgKnNlYXQ7Ci0tCWludCByZXQ7Ci0tCWJvb2wgZm9yY2VkID0gZmFsc2U7Ci0gCi0g CWlmICghc2VzcyB8fCAhc2Vzcy0+c2VhdCkKLSAJCXJldHVybjsKLUBAIC0xNDQ5LDQ3ICsxMTg0 LDE4IEBAIHZvaWQga21zY29uX3Nlc3Npb25fdW5yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Np b24gKnNlc3MpCi0gCWxvZ19kZWJ1ZygidW5yZWdpc3RlciBzZXNzaW9uICVwIiwgc2Vzcyk7Ci0g Ci0gCXNlYXQgPSBzZXNzLT5zZWF0OwotLQlzZXNzLT5lbmFibGVkID0gZmFsc2U7Ci0tCWlmIChz ZWF0LT5kdW1teV9zZXNzID09IHNlc3MpCi0tCQlzZWF0LT5kdW1teV9zZXNzID0gTlVMTDsKLS0J c2VhdF9yZXNjaGVkdWxlKHNlYXQpOwotIAotIAlpZiAoc2VhdC0+Y3VycmVudF9zZXNzID09IHNl c3MpIHsKLS0JCXJldCA9IHNlYXRfcGF1c2Uoc2VhdCwgdHJ1ZSk7Ci0tCQlpZiAocmV0KSB7Ci0t CQkJZm9yY2VkID0gdHJ1ZTsKLS0JCQlsb2dfd2FybmluZygidW5yZWdpc3RlcmluZyBhY3RpdmUg c2Vzc2lvbiAlcDsgc2tpcHBpbmcgYXV0b21hdGljICIKLS0JCQkJICAgICJzZXNzaW9uLXN3aXRj aCIsCi0tCQkJCSAgICBzZXNzKTsKLS0JCX0KLSsJCXRlcm1pbmFsX2RlYWN0aXZhdGUoc2VhdC0+ Y3VycmVudF9zZXNzLT50ZXJtKTsKLSsJCXNlYXRfbmV4dChzZWF0KTsKLSAJfQotIAotIAlzaGxf ZGxpc3RfdW5saW5rKCZzZXNzLT5saXN0KTsKLSAJLS1zZWF0LT5zZXNzaW9uX2NvdW50OwotIAlz ZXNzLT5zZWF0ID0gTlVMTDsKLSAKLS0Jc2Vzc2lvbl9jYWxsKHNlc3MsIEtNU0NPTl9TRVNTSU9O X1VOUkVHSVNURVIsIE5VTEwpOwotLQlrbXNjb25fc2Vzc2lvbl91bnJlZihzZXNzKTsKLS0KLS0J LyogSWYgdGhpcyBzZXNzaW9uIHdhcyBhY3RpdmUgYW5kIHdlIGNvdWxkbid0IGRlYWN0aXZhdGUg aXQsIHRoZW4gaXQKLS0JICogbWlnaHQgc3RpbGwgaGF2ZSByZXNvdXJjZXMgYWxsb2NhdGVkIHRo YXQgY291bGRuJ3QgZ2V0IGZyZWVkLiBJbiB0aGlzCi0tCSAqIGNhc2Ugd2Ugc2hvdWxkIG5vdCBh dXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV4dCBzZXNzaW9uIGFzIGl0IGlzCi0tCSAqIHZl cnkgbGlrZWx5IHRoYXQgaXQgd2lsbCBub3QgYmUgYWJsZSB0byBzdGFydC4KLS0JICogSW5zdGVh ZCwgd2Ugc3RheSBpbmFjdGl2ZSBhbmQgd2FpdCBmb3IgdXNlci9leHRlcm5hbCBpbnB1dCB0byBz d2l0Y2gKLS0JICogdG8gYW5vdGhlciBzZXNzaW9uLiBUaGlzIGRlbGF5IHdpbGwgdGhlbiBob3Bl ZnVsbHkgYmUgbG9uZyBlbm91Z2ggc28KLS0JICogYWxsIHJlc291cmNlcyBnb3QgZnJlZWQuICov Ci0tCWlmICghZm9yY2VkKQotLQkJc2VhdF9ydW4oc2VhdCk7Ci0tfQotLQotLWJvb2wga21zY29u X3Nlc3Npb25faXNfcmVnaXN0ZXJlZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCi0tewot LQlyZXR1cm4gc2VzcyAmJiBzZXNzLT5zZWF0OwotLX0KLS0KLS1ib29sIGttc2Nvbl9zZXNzaW9u X2lzX2FjdGl2ZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCi0tewotLQlyZXR1cm4gc2Vz cyAmJiBzZXNzLT5zZWF0ICYmIHNlc3MtPnNlYXQtPmN1cnJlbnRfc2VzcyA9PSBzZXNzOwotKwl0 ZXJtaW5hbF9kZXN0cm95KHNlc3MtPnRlcm0pOwotKwlmcmVlKHNlc3MpOwotIH0KLSAKLSBpbnQg a21zY29uX3Nlc3Npb25fc2V0X2ZvcmVncm91bmQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNz KQotQEAgLTE1MDgsNyArMTIxNCw3IEBAIGludCBrbXNjb25fc2Vzc2lvbl9zZXRfZm9yZWdyb3Vu ZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCi0gCQlpZiAocmV0KQotIAkJCXJldHVybiBy ZXQ7Ci0gCi0tCQlyZXQgPSBzZWF0X2dvX2ZvcmVncm91bmQoc2VhdCwgdHJ1ZSk7Ci0rCQlyZXQg PSBzZWF0X2dvX2ZvcmVncm91bmQoc2VhdCk7Ci0gCQlpZiAocmV0KQotIAkJCXJldHVybiByZXQ7 Ci0gCX0KLUBAIC0xNTI5LDcgKzEyMzUsNyBAQCBpbnQga21zY29uX3Nlc3Npb25fc2V0X2JhY2tn cm91bmQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQotIAotIAlzZWF0ID0gc2Vzcy0+c2Vh dDsKLSAJaWYgKHNlYXQgJiYgc2VhdC0+Y3VycmVudF9zZXNzID09IHNlc3MgJiYgc2VhdC0+Zm9y ZWdyb3VuZCkgewotLQkJcmV0ID0gc2VhdF9nb19iYWNrZ3JvdW5kKHNlYXQsIHRydWUpOwotKwkJ cmV0ID0gc2VhdF9nb19iYWNrZ3JvdW5kKHNlYXQpOwotIAkJaWYgKHJldCkKLSAJCQlyZXR1cm4g cmV0OwotIAl9Ci1AQCAtMTU0MywzNSArMTI0OSw2IEBAIGJvb2wga21zY29uX3Nlc3Npb25fZ2V0 X2ZvcmVncm91bmQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQotIAlyZXR1cm4gc2Vzcy0+ Zm9yZWdyb3VuZDsKLSB9Ci0gCi0tdm9pZCBrbXNjb25fc2Vzc2lvbl9lbmFibGUoc3RydWN0IGtt c2Nvbl9zZXNzaW9uICpzZXNzKQotLXsKLS0JaWYgKCFzZXNzIHx8IHNlc3MtPmVuYWJsZWQpCi0t CQlyZXR1cm47Ci0tCi0tCWxvZ19kZWJ1ZygiZW5hYmxlIHNlc3Npb24gJXAiLCBzZXNzKTsKLS0J c2Vzcy0+ZW5hYmxlZCA9IHRydWU7Ci0tCWlmIChzZXNzLT5zZWF0ICYmCi0tCSAgICAoIXNlc3Mt PnNlYXQtPmN1cnJlbnRfc2VzcyB8fCBzZXNzLT5zZWF0LT5jdXJyZW50X3Nlc3MgPT0gc2Vzcy0+ c2VhdC0+ZHVtbXlfc2VzcykpIHsKLS0JCXNlc3MtPnNlYXQtPnNjaGVkdWxlZF9zZXNzID0gc2Vz czsKLS0JCWlmIChzZWF0X2hhc19zY2hlZHVsZShzZXNzLT5zZWF0KSkKLS0JCQlzZWF0X3N3aXRj aChzZXNzLT5zZWF0KTsKLS0JfQotLX0KLS0KLS12b2lkIGttc2Nvbl9zZXNzaW9uX2Rpc2FibGUo c3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQotLXsKLS0JaWYgKCFzZXNzIHx8ICFzZXNzLT5l bmFibGVkKQotLQkJcmV0dXJuOwotLQotLQlsb2dfZGVidWcoImRpc2FibGUgc2Vzc2lvbiAlcCIs IHNlc3MpOwotLQlzZXNzLT5lbmFibGVkID0gZmFsc2U7Ci0tfQotLQotLWJvb2wga21zY29uX3Nl c3Npb25faXNfZW5hYmxlZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCi0tewotLQlyZXR1 cm4gc2VzcyAmJiBzZXNzLT5lbmFibGVkOwotLX0KLS0KLSB2b2lkIGttc2Nvbl9zZXNzaW9uX2Jl bGwoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQotIHsKLSAJaWYgKCFzZXNzIHx8ICFzZXNz LT5zZWF0KQotQEAgLTE1ODgsMzYgKzEyNjUsMyBAQCB2b2lkIGttc2Nvbl9zZXNzaW9uX3NldF9s ZWRzKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcywgdW5zaWduZWQgaW50IHNjcm9sbF9sbwot IAotIAlpbnB1dF9zZXRfbGVkcyhzZXNzLT5zZWF0LT5pbnB1dCwgc2Nyb2xsX2xvY2ssIG51bV9s b2NrLCBjYXBzX2xvY2spOwotIH0KLS0KLS12b2lkIGttc2Nvbl9zZXNzaW9uX25vdGlmeV9kZWFj dGl2YXRlZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCi0tewotLQlzdHJ1Y3Qga21zY29u X3NlYXQgKnNlYXQ7Ci0tCWludCByZXQ7Ci0tCXVuc2lnbmVkIGludCBzY2hlZDsKLS0KLS0JaWYg KCFzZXNzIHx8ICFzZXNzLT5zZWF0KQotLQkJcmV0dXJuOwotLQotLQlzZWF0ID0gc2Vzcy0+c2Vh dDsKLS0JaWYgKHNlYXQtPmN1cnJlbnRfc2VzcyAhPSBzZXNzKQotLQkJcmV0dXJuOwotLQotLQlz Y2hlZCA9IHNlYXQtPmFzeW5jX3NjaGVkdWxlOwotLQlsb2dfZGVidWcoInNlc3Npb24gJXAgbm90 aWZpZWQgY29yZSBhYm91dCBkZWFjdGl2YXRpb24gKHNjaGVkdWxlOiAldSkiLCBzZXNzLCBzY2hl ZCk7Ci0tCXNlc3Npb25fZGVhY3RpdmF0ZShzZXNzKTsKLS0Jc2VhdF9yZXNjaGVkdWxlKHNlYXQp OwotLQotLQlpZiAoc2NoZWQgPT0gU0NIRURVTEVfVlQpIHsKLS0JCXJldCA9IHNlYXRfZ29fYmFj a2dyb3VuZChzZWF0LCBmYWxzZSk7Ci0tCQlpZiAocmV0KQotLQkJCXJldHVybjsKLS0JCXJldCA9 IHNlYXRfZ29fYXNsZWVwKHNlYXQsIGZhbHNlKTsKLS0JCWlmIChyZXQpCi0tCQkJcmV0dXJuOwot LQkJdXRlcm1fdnRfcmV0cnkoc2VhdC0+dnQpOwotLQl9IGVsc2UgaWYgKHNjaGVkID09IFNDSEVE VUxFX1VOUkVHSVNURVIpIHsKLS0JCWttc2Nvbl9zZXNzaW9uX3VucmVnaXN0ZXIoc2Vzcyk7Ci0t CX0gZWxzZSB7Ci0tCQlzZWF0X3N3aXRjaChzZWF0KTsKLS0JfQotLX0KLWRpZmYgLS1naXQgYS9z cmMva21zY29uX3NlYXQuaCBiL3NyYy9rbXNjb25fc2VhdC5oCi1pbmRleCBjM2ZhNzA3Li4zMWU4 ODA4IDEwMDY0NAotLS0tIGEvc3JjL2ttc2Nvbl9zZWF0LmgKLSsrKyBiL3NyYy9rbXNjb25fc2Vh dC5oCi1AQCAtMzMsMTQgKzMzLDkgQEAKLSAjZGVmaW5lIEtNU0NPTl9TRUFUX0gKLSAKLSAjaW5j bHVkZSA8c3RkYm9vbC5oPgotLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSAiY29uZi5o IgotLSNpbmNsdWRlICJpbnB1dC9pbnB1dC5oIgotICNpbmNsdWRlICJrbXNjb25fY29uZi5oIgot ICNpbmNsdWRlICJzaGwvZWxvb3AuaCIKLS0jaW5jbHVkZSAidXRlcm1fbW9uaXRvci5oIgotLSNp bmNsdWRlICJ1dGVybV92dC5oIgotLSNpbmNsdWRlICJ2aWRlby92aWRlby5oIgotIAotIHN0cnVj dCBrbXNjb25fc2VhdDsKLSBzdHJ1Y3Qga21zY29uX3Nlc3Npb247Ci1AQCAtNTMsNTQgKzQ4LDIy IEBAIGVudW0ga21zY29uX3NlYXRfZXZlbnQgewotIAotIHR5cGVkZWYgaW50ICgqa21zY29uX3Nl YXRfY2JfdCkoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCB1bnNpZ25lZCBpbnQgZXZlbnQsIHZv aWQgKmRhdGEpOwotIAotLWVudW0ga21zY29uX3Nlc3Npb25fZXZlbnRfdHlwZSB7Ci0tCUtNU0NP Tl9TRVNTSU9OX0RJU1BMQVlfTkVXLAotLQlLTVNDT05fU0VTU0lPTl9ESVNQTEFZX0dPTkUsCi0t CUtNU0NPTl9TRVNTSU9OX0RJU1BMQVlfUkVGUkVTSCwKLS0JS01TQ09OX1NFU1NJT05fQUNUSVZB VEUsCi0tCUtNU0NPTl9TRVNTSU9OX0RFQUNUSVZBVEUsCi0tCUtNU0NPTl9TRVNTSU9OX1VOUkVH SVNURVIsCi0tfTsKLS0KLS1zdHJ1Y3Qga21zY29uX3Nlc3Npb25fZXZlbnQgewotLQl1bnNpZ25l ZCBpbnQgdHlwZTsKLS0Jc3RydWN0IGRpc3BsYXkgKmRpc3A7Ci0tfTsKLS0KLS10eXBlZGVmIGlu dCAoKmttc2Nvbl9zZXNzaW9uX2NiX3QpKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzc2lvbiwK LS0JCQkJICAgc3RydWN0IGttc2Nvbl9zZXNzaW9uX2V2ZW50ICpldmVudCwgdm9pZCAqZGF0YSk7 Ci0tCi0gaW50IGttc2Nvbl9zZWF0X25ldyhzdHJ1Y3Qga21zY29uX3NlYXQgKipvdXQsIHN0cnVj dCBjb25mX2N0eCAqbWFpbl9jb25mLAotIAkJICAgIHN0cnVjdCBrbXNjb25fY29uZl90ICpjb25m LCBzdHJ1Y3QgZXZfZWxvb3AgKmVsb29wLCBrbXNjb25fc2VhdF9jYl90IGNiLAotIAkJICAgIHZv aWQgKmRhdGEpOwotIHZvaWQga21zY29uX3NlYXRfZnJlZShzdHJ1Y3Qga21zY29uX3NlYXQgKnNl YXQpOwotIHZvaWQga21zY29uX3NlYXRfc3RhcnR1cChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQp OwotK2ludCBrbXNjb25fc2VhdF91cGRhdGVfeGtiX2xheW91dChzdHJ1Y3Qga21zY29uX3NlYXQg KnNlYXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCi0rCQkJCSAgY29u c3QgY2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucyk7Ci0gCi0tY29uc3QgY2hhciAq a21zY29uX3NlYXRfZ2V0X25hbWUoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KTsKLS1zdHJ1Y3Qg aW5wdXQgKmttc2Nvbl9zZWF0X2dldF9pbnB1dChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpOwot LXN0cnVjdCBldl9lbG9vcCAqa21zY29uX3NlYXRfZ2V0X2Vsb29wKHN0cnVjdCBrbXNjb25fc2Vh dCAqc2VhdCk7Ci0gc3RydWN0IGNvbmZfY3R4ICprbXNjb25fc2VhdF9nZXRfY29uZihzdHJ1Y3Qg a21zY29uX3NlYXQgKnNlYXQpOwotIAotLWludCBrbXNjb25fc2VhdF9yZWdpc3Rlcl9zZXNzaW9u KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgc3RydWN0IGttc2Nvbl9zZXNzaW9uICoqb3V0LAot LQkJCQkga21zY29uX3Nlc3Npb25fY2JfdCBjYiwgdm9pZCAqZGF0YSk7Ci0tCi0tdm9pZCBrbXNj b25fc2Vzc2lvbl9yZWYoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKLS12b2lkIGttc2Nv bl9zZXNzaW9uX3VucmVmKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcyk7Ci0tdm9pZCBrbXNj b25fc2Vzc2lvbl91bnJlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcyk7Ci0tYm9v bCBrbXNjb25fc2Vzc2lvbl9pc19yZWdpc3RlcmVkKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vz cyk7Ci0tCi0tYm9vbCBrbXNjb25fc2Vzc2lvbl9pc19hY3RpdmUoc3RydWN0IGttc2Nvbl9zZXNz aW9uICpzZXNzKTsKLSBpbnQga21zY29uX3Nlc3Npb25fc2V0X2ZvcmVncm91bmQoc3RydWN0IGtt c2Nvbl9zZXNzaW9uICpzZXNzKTsKLSBpbnQga21zY29uX3Nlc3Npb25fc2V0X2JhY2tncm91bmQo c3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKLSBib29sIGttc2Nvbl9zZXNzaW9uX2dldF9m b3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcyk7Ci0gCi0tdm9pZCBrbXNjb25f c2Vzc2lvbl9lbmFibGUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKLS12b2lkIGttc2Nv bl9zZXNzaW9uX2Rpc2FibGUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKLS1ib29sIGtt c2Nvbl9zZXNzaW9uX2lzX2VuYWJsZWQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKLSB2 b2lkIGttc2Nvbl9zZXNzaW9uX2JlbGwoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKLSB2 b2lkIGttc2Nvbl9zZXNzaW9uX3NldF9sZWRzKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcywg dW5zaWduZWQgaW50IHNjcm9sbF9sb2NrLAotIAkJCSAgICAgdW5zaWduZWQgaW50IG51bV9sb2Nr LCB1bnNpZ25lZCBpbnQgY2Fwc19sb2NrKTsKLSAKLS12b2lkIGttc2Nvbl9zZXNzaW9uX25vdGlm eV9kZWFjdGl2YXRlZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpOwotLQotICNlbmRpZiAv KiBLTVNDT05fU0VBVF9IICovCi1kaWZmIC0tZ2l0IGEvc3JjL2ttc2Nvbl90ZXJtaW5hbC5jIGIv c3JjL2ttc2Nvbl90ZXJtaW5hbC5jCi1pbmRleCAzOTFjZDUzLi5jNTU2MmY2IDEwMDY0NAotLS0t IGEvc3JjL2ttc2Nvbl90ZXJtaW5hbC5jCi0rKysgYi9zcmMva21zY29uX3Rlcm1pbmFsLmMKLUBA IC02NDUsNyArNjQ1LDcgQEAgc3RhdGljIHZvaWQgcm90YXRlX2Njd19hbGwoc3RydWN0IGttc2Nv bl90ZXJtaW5hbCAqdGVybSkKLSAJdXBkYXRlX3BvaW50ZXJfbWF4X2FsbCh0ZXJtKTsKLSB9Ci0g Ci0tc3RhdGljIGludCBhZGRfZGlzcGxheShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtLCBz dHJ1Y3QgZGlzcGxheSAqZGlzcCkKLStpbnQgdGVybWluYWxfYWRkX2Rpc3BsYXkoc3RydWN0IGtt c2Nvbl90ZXJtaW5hbCAqdGVybSwgc3RydWN0IGRpc3BsYXkgKmRpc3ApCi0gewotIAlzdHJ1Y3Qg c2hsX2RsaXN0ICppdGVyOwotIAlzdHJ1Y3Qgc2NyZWVuICpzY3I7Ci1AQCAtNzQxLDcgKzc0MSw3 IEBAIHN0YXRpYyB2b2lkIGZyZWVfc2NyZWVuKHN0cnVjdCBzY3JlZW4gKnNjciwgYm9vbCB1cGRh dGUpCi0gCXRlcm1pbmFsX3VwZGF0ZV9zaXplX25vdGlmeSh0ZXJtKTsKLSB9Ci0gCi0tc3RhdGlj IHZvaWQgcm1fZGlzcGxheShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtLCBzdHJ1Y3QgZGlz cGxheSAqZGlzcCkKLSt2b2lkIHRlcm1pbmFsX3JtX2Rpc3BsYXkoc3RydWN0IGttc2Nvbl90ZXJt aW5hbCAqdGVybSwgc3RydWN0IGRpc3BsYXkgKmRpc3ApCi0gewotIAlzdHJ1Y3Qgc2hsX2RsaXN0 ICppdGVyOwotIAlzdHJ1Y3Qgc2NyZWVuICpzY3I7Ci1AQCAtMTA4MCw3ICsxMDgwLDMwIEBAIHN0 YXRpYyB2b2lkIHRlcm1pbmFsX2Nsb3NlKHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0pCi0g CXRlcm0tPm9wZW5lZCA9IGZhbHNlOwotIH0KLSAKLS1zdGF0aWMgdm9pZCB0ZXJtaW5hbF9kZXN0 cm95KHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0pCi0rdm9pZCB0ZXJtaW5hbF9yZWZyZXNo X2Rpc3BsYXlzKHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0pCi0rewotKwlpZiAodGVybS0+ cG9pbnRlci52aXNpYmxlKQotKwkJaHdfY3Vyc29yX3Nob3codGVybSwgdGVybS0+cG9pbnRlci54 LCB0ZXJtLT5wb2ludGVyLnkpOwotKwlyZWRyYXdfYWxsX3RleHQodGVybSk7Ci0rfQotKwotK3Zv aWQgdGVybWluYWxfYWN0aXZhdGUoc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSkKLSt7Ci0r CXRlcm0tPmF3YWtlID0gdHJ1ZTsKLSsJaWYgKCF0ZXJtLT5vcGVuZWQpCi0rCQl0ZXJtaW5hbF9v cGVuKHRlcm0pOwotKwlpZiAodGVybS0+cG9pbnRlci52aXNpYmxlKQotKwkJaHdfY3Vyc29yX3No b3codGVybSwgdGVybS0+cG9pbnRlci54LCB0ZXJtLT5wb2ludGVyLnkpOwotKwlyZWRyYXdfYWxs X3RleHQodGVybSk7Ci0rfQotKwotK3ZvaWQgdGVybWluYWxfZGVhY3RpdmF0ZShzdHJ1Y3Qga21z Y29uX3Rlcm1pbmFsICp0ZXJtKQotK3sKLSsJdGVybS0+YXdha2UgPSBmYWxzZTsKLSsJaHdfY3Vy c29yX2hpZGUodGVybSk7Ci0rfQotKwotK3ZvaWQgdGVybWluYWxfZGVzdHJveShzdHJ1Y3Qga21z Y29uX3Rlcm1pbmFsICp0ZXJtKQotIHsKLSAJbG9nX2RlYnVnKCJmcmVlIHRlcm1pbmFsIG9iamVj dCAlcCIsIHRlcm0pOwotIAotQEAgLTEwOTksNDMgKzExMjIsNiBAQCBzdGF0aWMgdm9pZCB0ZXJt aW5hbF9kZXN0cm95KHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0pCi0gCWZyZWUodGVybSk7 Ci0gfQotIAotLXN0YXRpYyBpbnQgc2Vzc2lvbl9ldmVudChzdHJ1Y3Qga21zY29uX3Nlc3Npb24g KnNlc3Npb24sIHN0cnVjdCBrbXNjb25fc2Vzc2lvbl9ldmVudCAqZXYsCi0tCQkJIHZvaWQgKmRh dGEpCi0tewotLQlzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtID0gZGF0YTsKLS0KLS0Jc3dp dGNoIChldi0+dHlwZSkgewotLQljYXNlIEtNU0NPTl9TRVNTSU9OX0RJU1BMQVlfTkVXOgotLQkJ YWRkX2Rpc3BsYXkodGVybSwgZXYtPmRpc3ApOwotLQkJYnJlYWs7Ci0tCWNhc2UgS01TQ09OX1NF U1NJT05fRElTUExBWV9HT05FOgotLQkJcm1fZGlzcGxheSh0ZXJtLCBldi0+ZGlzcCk7Ci0tCQli cmVhazsKLS0JY2FzZSBLTVNDT05fU0VTU0lPTl9ESVNQTEFZX1JFRlJFU0g6Ci0tCQlpZiAodGVy bS0+cG9pbnRlci52aXNpYmxlKQotLQkJCWh3X2N1cnNvcl9zaG93KHRlcm0sIHRlcm0tPnBvaW50 ZXIueCwgdGVybS0+cG9pbnRlci55KTsKLS0JCXJlZHJhd19hbGxfdGV4dCh0ZXJtKTsKLS0JCWJy ZWFrOwotLQljYXNlIEtNU0NPTl9TRVNTSU9OX0FDVElWQVRFOgotLQkJdGVybS0+YXdha2UgPSB0 cnVlOwotLQkJaWYgKCF0ZXJtLT5vcGVuZWQpCi0tCQkJdGVybWluYWxfb3Blbih0ZXJtKTsKLS0J CWlmICh0ZXJtLT5wb2ludGVyLnZpc2libGUpCi0tCQkJaHdfY3Vyc29yX3Nob3codGVybSwgdGVy bS0+cG9pbnRlci54LCB0ZXJtLT5wb2ludGVyLnkpOwotLQkJcmVkcmF3X2FsbF90ZXh0KHRlcm0p OwotLQkJYnJlYWs7Ci0tCWNhc2UgS01TQ09OX1NFU1NJT05fREVBQ1RJVkFURToKLS0JCXRlcm0t PmF3YWtlID0gZmFsc2U7Ci0tCQlod19jdXJzb3JfaGlkZSh0ZXJtKTsKLS0JCWJyZWFrOwotLQlj YXNlIEtNU0NPTl9TRVNTSU9OX1VOUkVHSVNURVI6Ci0tCQl0ZXJtaW5hbF9kZXN0cm95KHRlcm0p OwotLQkJYnJlYWs7Ci0tCX0KLS0KLS0JcmV0dXJuIDA7Ci0tfQotLQotIHN0YXRpYyB2b2lkIHB0 eV9pbnB1dChzdHJ1Y3Qga21zY29uX3B0eSAqcHR5LCBjb25zdCBjaGFyICp1OCwgc2l6ZV90IGxl biwgdm9pZCAqZGF0YSkKLSB7Ci0gCXN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0gPSBkYXRh OwotQEAgLTExNjMsMjYgKzExNDksMjUgQEAgc3RhdGljIHZvaWQgd3JpdGVfZXZlbnQoc3RydWN0 IHRzbV92dGUgKnZ0ZSwgY29uc3QgY2hhciAqdTgsIHNpemVfdCBsZW4sIHZvaWQgKmQKLSAJa21z Y29uX3B0eV93cml0ZSh0ZXJtLT5wdHksIHU4LCBsZW4pOwotIH0KLSAKLS1pbnQga21zY29uX3Rl cm1pbmFsX3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91dCwgc3RydWN0IGttc2Nv bl9zZWF0ICpzZWF0LAotLQkJCSAgICAgdW5zaWduZWQgaW50IHZ0bnIpCi0rc3RydWN0IGttc2Nv bl90ZXJtaW5hbCAqdGVybWluYWxfbmV3KHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzc2lvbiwg dW5zaWduZWQgaW50IHZ0bnIsCi0rCQkJCSAgICAgc3RydWN0IGNvbmZfY3R4ICpjb25mX2N0eCwg c3RydWN0IGV2X2Vsb29wICplbG9vcCwKLSsJCQkJICAgICBzdHJ1Y3QgaW5wdXQgKmlucHV0LCBj b25zdCBjaGFyICpzZWF0X25hbWUpCi0gewotIAlzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJt OwotIAlpbnQgcmV0OwotIAotLQlpZiAoIW91dCB8fCAhc2VhdCkKLS0JCXJldHVybiAtRUlOVkFM OwotLQotIAl0ZXJtID0gbWFsbG9jKHNpemVvZigqdGVybSkpOwotIAlpZiAoIXRlcm0pCi0tCQly ZXR1cm4gLUVOT01FTTsKLSsJCXJldHVybiBOVUxMOwotIAotIAltZW1zZXQodGVybSwgMCwgc2l6 ZW9mKCp0ZXJtKSk7Ci0gCXRlcm0tPnJlZiA9IDE7Ci0tCXRlcm0tPmVsb29wID0ga21zY29uX3Nl YXRfZ2V0X2Vsb29wKHNlYXQpOwotLQl0ZXJtLT5pbnB1dCA9IGttc2Nvbl9zZWF0X2dldF9pbnB1 dChzZWF0KTsKLSsJdGVybS0+c2Vzc2lvbiA9IHNlc3Npb247Ci0rCXRlcm0tPmVsb29wID0gZWxv b3A7Ci0rCXRlcm0tPmlucHV0ID0gaW5wdXQ7Ci0gCXNobF9kbGlzdF9pbml0KCZ0ZXJtLT5zY3Jl ZW5zKTsKLSAKLS0JdGVybS0+Y29uZl9jdHggPSBrbXNjb25fc2VhdF9nZXRfY29uZihzZWF0KTsK LSsJdGVybS0+Y29uZl9jdHggPSBjb25mX2N0eDsKLSAJdGVybS0+Y29uZiA9IGNvbmZfY3R4X2dl dF9tZW0odGVybS0+Y29uZl9jdHgpOwotIAotIAlzdHJuY3B5KHRlcm0tPmZvbnRfYXR0ci5uYW1l LCB0ZXJtLT5jb25mLT5mb250X25hbWUsIEtNU0NPTl9GT05UX01BWF9OQU1FIC0gMSk7Ci1AQCAt MTIyMSw3ICsxMjA2LDcgQEAgaW50IGttc2Nvbl90ZXJtaW5hbF9yZWdpc3RlcihzdHJ1Y3Qga21z Y29uX3Nlc3Npb24gKipvdXQsIHN0cnVjdCBrbXNjb25fc2VhdCAqc2UKLSAJCWdvdG8gZXJyX2Zv bnQ7Ci0gCi0gCXJldCA9IGttc2Nvbl9wdHlfc2V0X2NvbmYodGVybS0+cHR5LCB0ZXJtLT5jb25m LT50ZXJtLCAidHJ1ZWNvbG9yIiwgdGVybS0+Y29uZi0+YXJndiwKLS0JCQkJICBrbXNjb25fc2Vh dF9nZXRfbmFtZShzZWF0KSwgdnRuciwgdGVybS0+Y29uZi0+cmVzZXRfZW52LAotKwkJCQkgIHNl YXRfbmFtZSwgdnRuciwgdGVybS0+Y29uZi0+cmVzZXRfZW52LAotIAkJCQkgIHRlcm0tPmNvbmYt PmJhY2tzcGFjZV9kZWxldGUpOwotIAlpZiAocmV0KQotIAkJZ290byBlcnJfcHR5OwotQEAgLTEy NDEsMjAgKzEyMjYsMTEgQEAgaW50IGttc2Nvbl90ZXJtaW5hbF9yZWdpc3RlcihzdHJ1Y3Qga21z Y29uX3Nlc3Npb24gKipvdXQsIHN0cnVjdCBrbXNjb25fc2VhdCAqc2UKLSAJCQlnb3RvIGVycl9p bnB1dDsKLSAJfQotIAotLQlyZXQgPSBrbXNjb25fc2VhdF9yZWdpc3Rlcl9zZXNzaW9uKHNlYXQs ICZ0ZXJtLT5zZXNzaW9uLCBzZXNzaW9uX2V2ZW50LCB0ZXJtKTsKLS0JaWYgKHJldCkgewotLQkJ bG9nX2Vycm9yKCJjYW5ub3QgcmVnaXN0ZXIgc2Vzc2lvbiBmb3IgdGVybWluYWw6ICVkIiwgcmV0 KTsKLS0JCWdvdG8gZXJyX3BvaW50ZXI7Ci0tCX0KLS0KLSAJZXZfZWxvb3BfcmVmKHRlcm0tPmVs b29wKTsKLSAJaW5wdXRfcmVmKHRlcm0tPmlucHV0KTsKLS0JKm91dCA9IHRlcm0tPnNlc3Npb247 Ci0gCWxvZ19kZWJ1ZygibmV3IHRlcm1pbmFsIG9iamVjdCAlcCIsIHRlcm0pOwotLQlyZXR1cm4g MDsKLSsJcmV0dXJuIHRlcm07Ci0gCi0tZXJyX3BvaW50ZXI6Ci0tCWlucHV0X3VucmVnaXN0ZXJf cG9pbnRlcl9jYih0ZXJtLT5pbnB1dCwgcG9pbnRlcl9ldmVudCwgdGVybSk7Ci0gZXJyX2lucHV0 OgotIAlpbnB1dF91bnJlZ2lzdGVyX2tleV9jYih0ZXJtLT5pbnB1dCwgaW5wdXRfZXZlbnQsIHRl cm0pOwotIGVycl9wdHlmZDoKLUBAIC0xMjY5LDUgKzEyNDUsNSBAQCBlcnJfY29uOgotIAl0c21f c2NyZWVuX3VucmVmKHRlcm0tPmNvbnNvbGUpOwotIGVycl9mcmVlOgotIAlmcmVlKHRlcm0pOwot LQlyZXR1cm4gcmV0OwotKwlyZXR1cm4gTlVMTDsKLSB9Ci1kaWZmIC0tZ2l0IGEvc3JjL2ttc2Nv bl90ZXJtaW5hbC5oIGIvc3JjL2ttc2Nvbl90ZXJtaW5hbC5oCi1pbmRleCBjZDc0YmFiLi41NTIy NDJjIDEwMDY0NAotLS0tIGEvc3JjL2ttc2Nvbl90ZXJtaW5hbC5oCi0rKysgYi9zcmMva21zY29u X3Rlcm1pbmFsLmgKLUBAIC0zMywyMyArMzMsMjEgQEAKLSAjaWZuZGVmIEtNU0NPTl9URVJNSU5B TF9ICi0gI2RlZmluZSBLTVNDT05fVEVSTUlOQUxfSAotIAotLSNpbmNsdWRlIDxlcnJuby5oPgot LSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSAia21zY29uX3NlYXQuaCIKLS0KLS0jaWZk ZWYgQlVJTERfRU5BQkxFX1NFU1NJT05fVEVSTUlOQUwKLS0KLS1pbnQga21zY29uX3Rlcm1pbmFs X3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91dCwgc3RydWN0IGttc2Nvbl9zZWF0 ICpzZWF0LAotLQkJCSAgICAgdW5zaWduZWQgaW50IHZ0bnIpOwotLQotLSNlbHNlIC8qICFCVUlM RF9FTkFCTEVfU0VTU0lPTl9URVJNSU5BTCAqLwotLQotLXN0YXRpYyBpbmxpbmUgaW50IGttc2Nv bl90ZXJtaW5hbF9yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKipvdXQsIHN0cnVjdCBr bXNjb25fc2VhdCAqc2VhdCwKLS0JCQkJCSAgIHVuc2lnbmVkIGludCB2dG5yKQotLXsKLS0JcmV0 dXJuIC1FT1BOT1RTVVBQOwotLX0KLS0KLS0jZW5kaWYgLyogQlVJTERfRU5BQkxFX1NFU1NJT05f VEVSTUlOQUwgKi8KLStzdHJ1Y3QgY29uZl9jdHg7Ci0rc3RydWN0IGRpc3BsYXk7Ci0rc3RydWN0 IGV2X2Vsb29wOwotK3N0cnVjdCBrbXNjb25fdGVybWluYWw7Ci0rc3RydWN0IGttc2Nvbl9zZXNz aW9uOwotK3N0cnVjdCBpbnB1dDsKLSsKLStzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtaW5h bF9uZXcoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzaW9uLCB1bnNpZ25lZCBpbnQgdnRuciwK LSsJCQkJICAgICBzdHJ1Y3QgY29uZl9jdHggKmNvbmZfY3R4LCBzdHJ1Y3QgZXZfZWxvb3AgKmVs b29wLAotKwkJCQkgICAgIHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNoYXIgKnNlYXRfbmFt ZSk7Ci0rdm9pZCB0ZXJtaW5hbF9kZXN0cm95KHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0p OwotK2ludCB0ZXJtaW5hbF9hZGRfZGlzcGxheShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJt LCBzdHJ1Y3QgZGlzcGxheSAqZGlzcCk7Ci0rdm9pZCB0ZXJtaW5hbF9ybV9kaXNwbGF5KHN0cnVj dCBrbXNjb25fdGVybWluYWwgKnRlcm0sIHN0cnVjdCBkaXNwbGF5ICpkaXNwKTsKLSt2b2lkIHRl cm1pbmFsX3JlZnJlc2hfZGlzcGxheXMoc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSk7Ci0r dm9pZCB0ZXJtaW5hbF9hY3RpdmF0ZShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtKTsKLSt2 b2lkIHRlcm1pbmFsX2RlYWN0aXZhdGUoc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSk7Ci0g Ci0gI2VuZGlmIC8qIEtNU0NPTl9URVJNSU5BTF9IICovCi1kaWZmIC0tZ2l0IGEvc3JjL21lc29u LmJ1aWxkIGIvc3JjL21lc29uLmJ1aWxkCi1pbmRleCA5NTQ3ZmUxLi4xYzRiYTEyIDEwMDY0NAot LS0tIGEvc3JjL21lc29uLmJ1aWxkCi0rKysgYi9zcmMvbWVzb24uYnVpbGQKLUBAIC04OCwxNiAr ODgsMjcgQEAga21zY29uX3NyY3MgPSBbCi0gICAna21zY29uX2NvbmYuYycsCi0gICAna21zY29u X2lzc3VlLmMnLAotICAgJ2ttc2Nvbl9tYWluLmMnLAotKyAgJ2ttc2Nvbl90ZXJtaW5hbC5jJywK LSBdCi0taWYgZW5hYmxlX3Nlc3Npb25fZHVtbXkKLS0gIGttc2Nvbl9zcmNzICs9ICdrbXNjb25f ZHVtbXkuYycKLS1lbmRpZgotLWlmIGVuYWJsZV9zZXNzaW9uX3Rlcm1pbmFsCi0tICBrbXNjb25f c3JjcyArPSAna21zY29uX3Rlcm1pbmFsLmMnCi0ra21zY29uX2RlcCA9IFt4a2Jjb21tb25fZGVw cywKLSsgIGxpYnRzbV9kZXBzLAotKyAgdGhyZWFkc19kZXBzLAotKyAgZGxfZGVwcywKLSsgIGNv bmZfZGVwcywKLSsgIHNobF9kZXBzLAotKyAgZWxvb3BfZGVwcywKLSsgIHV0ZXJtX2RlcHMsCi0r ICByZW5kZXJfZGVwcywKLSsgIGZvbnRfZGVwcywKLStdCi0rCi0raWYgZW5hYmxlX2RidXMKLSsg IGttc2Nvbl9zcmNzICs9ICdkYnVzLmMnCi0rICBrbXNjb25fZGVwICs9IGRidXNfZGVwcwotIGVu ZGlmCi0ga21zY29uID0gZXhlY3V0YWJsZSgna21zY29uJywga21zY29uX3NyY3MsCi0tICBkZXBl bmRlbmNpZXM6IFt4a2Jjb21tb25fZGVwcywgbGlidHNtX2RlcHMsIHRocmVhZHNfZGVwcywgZGxf ZGVwcywgY29uZl9kZXBzLCBzaGxfZGVwcywgZWxvb3BfZGVwcywgdXRlcm1fZGVwcywgcmVuZGVy X2RlcHMsIGZvbnRfZGVwc10sCi0rICBkZXBlbmRlbmNpZXM6IGttc2Nvbl9kZXAsCi0gICBleHBv cnRfZHluYW1pYzogdHJ1ZSwKLSAgIGluc3RhbGw6IHRydWUsCi0tICBpbnN0YWxsX2RpcjogbGli ZXhlY2RpciwKLSsgIGluc3RhbGxfZGlyOiBiaW5kaXIsCi0gKQotZGlmZiAtLWdpdCBhL3NyYy9z aGwvZGxpc3QuaCBiL3NyYy9zaGwvZGxpc3QuaAotaW5kZXggODNjZDIzMy4uMGFmNTA5NCAxMDA2 NDQKLS0tLSBhL3NyYy9zaGwvZGxpc3QuaAotKysrIGIvc3JjL3NobC9kbGlzdC5oCi1AQCAtMTAy LDYgKzEwMiwxNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hsX2RsaXN0X2VtcHR5KHN0cnVjdCBz aGxfZGxpc3QgKmhlYWQpCi0gCi0gI2RlZmluZSBzaGxfZGxpc3RfbGFzdChoZWFkLCB0eXBlLCBt ZW1iZXIpIHNobF9kbGlzdF9lbnRyeSgoaGVhZCktPnByZXYsIHR5cGUsIG1lbWJlcikKLSAKLSsj ZGVmaW5lIHNobF9kbGlzdF9uZXh0KGl0ZXIsIGhlYWQsIG1lbWJlcikgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCSgoaXRlciktPm1l bWJlci5uZXh0ID09IChoZWFkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkgPyBOVUxMICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsJCSA6IHNobF9kbGlzdF9lbnRyeSgoaXRlciktPm1lbWJlci5uZXh0LCB0eXBlb2YoKml0ZXIp LCBsaXN0KSkKLSsKLSsjZGVmaW5lIHNobF9kbGlzdF9wcmV2KGl0ZXIsIGhlYWQsIG1lbWJlcikg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rCSgoaXRlciktPm1lbWJlci5wcmV2ID09IChoZWFkKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkgPyBOVUxMICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsJCSA6IHNobF9kbGlzdF9lbnRyeSgoaXRlciktPm1lbWJlci5wcmV2 LCB0eXBlb2YoKml0ZXIpLCBsaXN0KSkKLSsKLSAjZGVmaW5lIHNobF9kbGlzdF9mb3JfZWFjaChp dGVyLCBoZWFkKSBmb3IgKGl0ZXIgPSAoaGVhZCktPm5leHQ7IGl0ZXIgIT0gKGhlYWQpOyBpdGVy ID0gaXRlci0+bmV4dCkKLSAKLSAjZGVmaW5lIHNobF9kbGlzdF9mb3JfZWFjaF9idXRfb25lKGl0 ZXIsIHN0YXJ0LCBoZWFkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdF9pbnB1dC5jIGIvdGVzdHMvdGVzdF9pbnB1 dC5jCi1pbmRleCAwZWNlZmMwLi5iMjE4ZWRjIDEwMDY0NAotLS0tIGEvdGVzdHMvdGVzdF9pbnB1 dC5jCi0rKysgYi90ZXN0cy90ZXN0X2lucHV0LmMKLUBAIC0xMjgsMTEgKzEyOCwxMiBAQCBzdGF0 aWMgdm9pZCBzZXR1cF9pbnB1dChzdHJ1Y3QgdXRlcm1fbW9uaXRvciAqbW9uKQotIAlpZiAocmV0 KQotIAkJcmV0dXJuOwotIAlyZXQgPSBpbnB1dF9zZXRfa2V5bWFwKGlucHV0LCBpbnB1dF9jb25m LnhrYl9tb2RlbCwgaW5wdXRfY29uZi54a2JfbGF5b3V0LAotLQkJCSAgICAgICBpbnB1dF9jb25m LnhrYl92YXJpYW50LCBpbnB1dF9jb25mLnhrYl9vcHRpb25zLCBpbnB1dF9jb25mLmxvY2FsZSwK LS0JCQkgICAgICAgaW5wdXRfY29uZi54a2Jfa2V5bWFwLCBpbnB1dF9jb25mLnhrYl9jb21wb3Nl X2ZpbGUsCi0tCQkJICAgICAgIGNvbXBvc2VfZmlsZV9sZW4pOwotKwkJCSAgICAgICBpbnB1dF9j b25mLnhrYl92YXJpYW50LCBpbnB1dF9jb25mLnhrYl9vcHRpb25zLAotKwkJCSAgICAgICBpbnB1 dF9jb25mLnhrYl9rZXltYXApOwotIAlpZiAocmV0KQotIAkJcmV0dXJuOwotKwotKwlpbnB1dF9z ZXRfY29tcG9zZShpbnB1dCwgaW5wdXRfY29uZi5sb2NhbGUsIGNvbXBvc2VfZmlsZSwgY29tcG9z ZV9maWxlX2xlbik7Ci0gCWlucHV0X3NldF9jb25mKGlucHV0LCAyNTAsIDUwLCB0cnVlKTsKLSAJ cmV0ID0gaW5wdXRfcmVnaXN0ZXJfa2V5X2NiKGlucHV0LCBpbnB1dF9hcnJpdmVkLCBOVUxMKTsK LSAJaWYgKHJldCkKLS0tIAotMi41NC4wCi0KCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNl cwppbmRleCBkMjU5OWIxLi43NDRmMjUwIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJj ZXMKQEAgLTEsMiArMSBAQAotU0hBNTEyIChrbXNjb24tMTAuMC4wLnRhci5neikgPSBkYTNiN2Yy ZDhhYWE2MjQ1NjEzNjk5Mzk5MjhkYmM0NzlkYTRhYmQ5NjAwZjYyM2QzZWI0OWE0Njc0Njc0Yjg0 ZjIwMGM3MjYxOGZhNTc5OTZiYjczOWI1YjA2MDBlYWJkOWZmMjdiNDZjMzgwOGUwYzUyYmM4MDQx NmUwOTZiNQotU0hBNTEyIChrbXNjb24tOS4zLjUudGFyLmd6KSA9IDM1OTVmZWY5YWY1YWVhOTNk YWU1YzhmYWQyYjk3NDNmMTY3ZDAyMjRiZWM2MmE1ZjM4ZjIwYTM4NTgzMmFhNGFmYjhmMjY4Yjc3 N2I1MjNjOWVjNTVkYjBlOWY4OGU4NWNlY2JkZGI3M2M0MDQ0MTU5OGQxNTFjYzZjZjY1MWU0CitT SEE1MTIgKGttc2Nvbi0xMC4wLjEudGFyLmd6KSA9IDlkYjA3NjUxZTQyNjc2M2JmZWIwNWE3YWYw MTM5NDVmMTM3MjdiMzczNjliMGE1YzFmYWVmMjgxOThlOTZjZjBkMjdlZGQ1MGI2MWQzZDQzNDEx MWQzMTU4MDhmOGYzMDE0NjVjYmY4ZDEwNzM0ZDI5YmE5Njg5MGYxZDkzMGRmCg==