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: Jan Grulich To: git-commits@fedoraproject.org Subject: [rpms/firefox] rawhide: WebRTC backport: video_capture - implement buffer stride support for PipeWire Date: Tue, 18 Aug 2026 13:30:01 GMT Message-ID: <178705980103.1.2698411372547623407.rpms-firefox-7dcfa2b5fe27@fedoraproject.org> List-ID: X-Git-Repo: rpms/firefox X-Git-Branch: rawhide X-Git-Rev: 7dcfa2b5fe27a5262f4b64f70d069020aff20df4 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZmlyZWZveApCcmFu Y2ggOiByYXdoaWRlCkNvbW1pdCA6IDdkY2ZhMmI1ZmUyN2E1MjYyZjRiNjRmNzBkMDY5MDIwYWZm MjBkZjQKQXV0aG9yIDogSmFuIEdydWxpY2ggPGpncnVsaWNoQHJlZGhhdC5jb20+CkRhdGUgICA6 IDIwMjYtMDgtMThUMTU6Mjg6MDgrMDI6MDAKU3RhdHMgIDogKzcwNi8tMSBpbiAyIGZpbGUocykK VVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9maXJlZm94L2MvN2Rj ZmEyYjVmZTI3YTUyNjJmNGI2NGY3MGQwNjkwMjBhZmYyMGRmND9icmFuY2g9cmF3aGlkZQoKTG9n OgpXZWJSVEMgYmFja3BvcnQ6IHZpZGVvX2NhcHR1cmUgLSBpbXBsZW1lbnQgYnVmZmVyIHN0cmlk ZSBzdXBwb3J0IGZvciBQaXBlV2lyZQoKLS0tCmRpZmYgLS1naXQgYS9maXJlZm94LnNwZWMgYi9m aXJlZm94LnNwZWMKaW5kZXggYTAzY2IzMi4uZDk0MDMxZCAxMDA2NDQKLS0tIGEvZmlyZWZveC5z cGVjCisrKyBiL2ZpcmVmb3guc3BlYwpAQCAtMTg2LDcgKzE4Niw3IEBAIEV4Y2x1ZGVBcmNoOiBp Njg2CiBTdW1tYXJ5OiAgICAgICAgTW96aWxsYSBGaXJlZm94IFdlYiBicm93c2VyCiBOYW1lOiAg ICAgICAgICAgZmlyZWZveAogVmVyc2lvbjogICAgICAgIDE1NC4wCi1SZWxlYXNlOiAgICAgICAg MiV7P3ByZV90YWd9JXs/ZGlzdH0KK1JlbGVhc2U6ICAgICAgICAzJXs/cHJlX3RhZ30lez9kaXN0 fQogVVJMOiAgICAgICAgICAgIGh0dHBzOi8vd3d3Lm1vemlsbGEub3JnL2ZpcmVmb3gvCiAjIEF1 dG9tYXRpY2FsbHkgY29udmVydGVkIGZyb20gb2xkIGZvcm1hdDogTVBMdjEuMSBvciBHUEx2Misg b3IgTEdQTHYyKyAtIHJldmlldyBpcyBoaWdobHkgcmVjb21tZW5kZWQuCiBMaWNlbnNlOiAgICAg ICAgTGljZW5zZVJlZi1DYWxsYXdheS1NUEx2MS4xIE9SIEdQTC0yLjAtb3ItbGF0ZXIgT1IgTGlj ZW5zZVJlZi1DYWxsYXdheS1MR1BMdjIrCkBAIC0yNTYsNiArMjU2LDEwIEBAIFBhdGNoMjQyOiAg ICAgICAgMDAyNi1BZGQtS0RFLWludGVncmF0aW9uLXRvLUZpcmVmb3gucGF0Y2gKIFBhdGNoNDAw OiAgICAgICAgbW96aWxsYS0xMTk2Nzc3LnBhdGNoCiBQYXRjaDQwMTogICAgICAgIG1vemlsbGEt MTY2NzA5Ni5wYXRjaAogCisjIGh0dHBzOi8vcGhhYnJpY2F0b3Iuc2VydmljZXMubW96aWxsYS5j b20vRDMxMjg3MQorIyBEcm9wIHdpdGggRmlyZWZveCAxNTYKK1BhdGNoNDEwOiAgICAgICAgbGli d2VicnRjLXZpZGVvLWNhcHR1cmUtaW1wbGVtZW50LWJ1ZmZlci1zdHJpZGUtc3VwcG9ydC1mb3It cGlwZXdpcmUucGF0Y2gKKwogIyBQR08vTFRPIHBhdGNoZXMKIFBhdGNoNjAwOiAgICAgICAgcGdv LnBhdGNoCiBQYXRjaDYwMjogICAgICAgIG1vemlsbGEtMTUxNjgwMy5wYXRjaApAQCAtNTM5LDYg KzU0Myw4IEBAIGNhdCAle1NPVVJDRTQ5fSB8IHNlZCAtZSAic3xMSUJDTEFOR19SVF9QTEFDRUhP TERFUnxgcHdkYC93YXNpLXNkay0zMC9idWlsZC9zeXNyCiAlcGF0Y2ggLVA0MDAgLXAxIC1iIC4x MTk2Nzc3CiAlcGF0Y2ggLVA0MDEgLXAxIC1iIC4xNjY3MDk2CiAKKyVwYXRjaCAtUDQxMCAtcDEg LWIgLmxpYndlYnJ0Yy12aWRlby1jYXB0dXJlLWltcGxlbWVudC1idWZmZXItc3RyaWRlLXN1cHBv cnQtZm9yLXBpcGV3aXJlCisKICMgUEdPIHBhdGNoZXMKICVpZiAle2J1aWxkX3dpdGhfcGdvfQog JWlmICEle3dpdGggYnVpbGRfd2l0aF9jbGFuZ30KQEAgLTEyMDUsNiArMTIxMSw5IEBAIGZpCiAj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAKICVjaGFuZ2Vsb2cKKyogVHVlIEF1ZyAxOCAyMDI2IEphbiBHcnVsaWNo IDxqZ3J1bGljaEByZWRoYXQuY29tPiAtIDE1NC4wLTMKKy0gV2ViUlRDIGJhY2twb3J0OiB2aWRl b19jYXB0dXJlIC0gaW1wbGVtZW50IGJ1ZmZlciBzdHJpZGUgc3VwcG9ydCBmb3IgUGlwZVdpcmUK KwogKiBNb24gQXVnIDE3IDIwMjYgTWFydGluIFN0cmFuc2t5IDxzdHJhbnNreUByZWRoYXQuY29t PiAtIDE1NC4wLTIKIC0gRGlzYWJsZWQgc2Vzc2lvbiByZXN0b3JlIG9uIEZlZG9yYSA0NSsgZHVl cyB0byBjcmFzaGVzLgogCgpkaWZmIC0tZ2l0IGEvbGlid2VicnRjLXZpZGVvLWNhcHR1cmUtaW1w bGVtZW50LWJ1ZmZlci1zdHJpZGUtc3VwcG9ydC1mb3ItcGlwZXdpcmUucGF0Y2ggYi9saWJ3ZWJy dGMtdmlkZW8tY2FwdHVyZS1pbXBsZW1lbnQtYnVmZmVyLXN0cmlkZS1zdXBwb3J0LWZvci1waXBl d2lyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2Y4YTFiCi0t LSAvZGV2L251bGwKKysrIGIvbGlid2VicnRjLXZpZGVvLWNhcHR1cmUtaW1wbGVtZW50LWJ1ZmZl ci1zdHJpZGUtc3VwcG9ydC1mb3ItcGlwZXdpcmUucGF0Y2gKQEAgLTAsMCArMSw2OTYgQEAKK0Zy b20gOTU4Y2M5ZGE1ZjEwMWMxYjQxMThjZjYwMTNlNWE5Y2ExNTkyNTAxOSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBNYWRlciA8cm9iZXJ0Lm1hZGVyQGNvbGxhYm9yYS5j b20+CitEYXRlOiBNb24sIDE3IEF1ZyAyMDI2IDEzOjQzOjEwICswMDAwCitTdWJqZWN0OiBbUEFU Q0hdIEJ1ZyAyMDU2MDI5IC0gV2ViUlRDIGJhY2twb3J0OiB2aWRlb19jYXB0dXJlOiBJbXBsZW1l bnQKKyBidWZmZXIgc3RyaWRlIHN1cHBvcnQgZm9yIFBpcGV3aXJlIHI9cGVocnNvbnMsZ3J1bGph CisKK1NpbXBsZSBiYWNrcG9ydCBvZiBodHRwczovL3dlYnJ0Yy1yZXZpZXcuZ29vZ2xlc291cmNl LmNvbS9jL3NyYy8rLzQ5MTY4MAorCitVcHN0cmVhbSBjb21taXQ6IDVkYTVhNmU0ZTAwYzY5ZWY2 MGM3NjQzZTk5ZWYzNGY2NWY3YWY1MWEKKworRnJvbSB0aGUgY29tbWl0IG1lc3NhZ2U6CitBZGQg b3B0aW9uYWwgYnVmZmVyIHN0cmlkZSBzdXBwb3J0IHRvIFZpZGVvQ2FwdHVyZUltcGwgYW5kIHVz ZSBpdCBpbgorVmlkZW9DYXB0dXJlTW9kdWxlUGlwZVdpcmUsIGFsbG93aW5nIHVzIHRvIGRyb3Ag dGhlIHJlcXVpcmVtZW50IGZvcgordW5wYWRkZWQgYnVmZmVycy4gVGhpcyBub3RhYmx5IGltcHJv dmVzIGNvbXBhdGliaWxpdHkgd2l0aCBsaWJjYW1lcmEsCit3aGljaCBzdXBwb3J0cyBhIHdpZGVy IHJhbmdlIG9mIGRldmljZXMgdGhhbiB0aGUgVjRMMiBiYWNrZW5kIC0gc29tZQoraGF2aW5nIGhh cmR3YXJlIHJlcXVpcmVtZW50cyBmb3Igc3RyaWRlLWFsaWdubWVudC4KKworRXh0ZW5kaW5nIGBD b252ZXJ0VG9JNDIwKClgIGluIGxpYnl1diB3YXMgcmVqZWN0ZWQgb24gdGhlIGdyb3VuZHMgdGhh dAordGhlcmUgYXJlIHZhcmlvdXMgYXBwcm9hY2hlcyB0byBzdHJpZGUgaGFuZGxpbmcgLSB1c2lu ZyBhIHNpbmdsZSBzdHJpZGUKK3ZhbHVlIGZvciBtdWx0aXBsZSBwbGFuZXMsIGhhdmluZyBleHBs aWNpdCB2YWx1ZXMgZm9yIGVhY2ggb25lIGV0Yy4gLSBhcword2VsbCBhcyB0aGUgZmFjdCB0aGF0 IHdlIG1pZ2h0IHdlbGwgd2FudCB0byBleHRlbmQgdGhlIGhlbHBlciBmdXJ0aGVyIGluCit0aGUg ZnV0dXJlIC0gZS5nLiBpbiBvcmRlciB0byBiZXR0ZXIgaGFuZGxlIGNvbG9yIHNwYWNlcyBzdWNo IGFzIEJUNzA5CisoaW5zdGVhZCBvZiBhbHdheXMgYXNzdW1pbmcgQlQ2MDEpLgorCitUaHVzIHRo aXMgcGF0Y2ggbm93IGFkZHMgYSBsb2NhbCBjb3B5IG9mIGBDb252ZXJ0VG9JNDIwKClgLCBzdXBw b3J0aW5nCitpbXBsaWNpdCBhbmQgYSBzaW5nbGUgZXhwbGljaXQgc3RyaWRlIHZhbHVlIGZvciBu b3cuCisKK0RpZmZlcmVudGlhbCBSZXZpc2lvbjogaHR0cHM6Ly9waGFicmljYXRvci5zZXJ2aWNl cy5tb3ppbGxhLmNvbS9EMzEyODcxCistLS0KKyB0aGlyZF9wYXJ0eS9saWJ3ZWJydGMvY29tbW9u X3ZpZGVvL0JVSUxELmduICAgfCAgIDQgKworIC4uLi9jb21tb25fdmlkZW8vY29tbW9uX3ZpZGVv X2duL21vei5idWlsZCAgICB8ICAgMSArCisgLi4uL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5 dXYuaCAgICAgICAgICAgIHwgIDE2ICsKKyAuLi4vY29tbW9uX3ZpZGVvL2xpYnl1di9saWJ5dXZf dW5pdHRlc3QuY2MgICAgfCAgMzAgKy0KKyAuLi4vY29tbW9uX3ZpZGVvL2xpYnl1di93ZWJydGNf bGlieXV2LmNjICAgICAgfCAzMjAgKysrKysrKysrKysrKysrKysrCisgLi4uL2xpbnV4L3ZpZGVv X2NhcHR1cmVfcGlwZXdpcmUuY2MgICAgICAgICAgIHwgIDU0ICstLQorIC4uLi9tb2R1bGVzL3Zp ZGVvX2NhcHR1cmUvdmlkZW9fY2FwdHVyZS5oICAgICB8ICAgMyArCisgLi4uL3ZpZGVvX2NhcHR1 cmUvdmlkZW9fY2FwdHVyZV9pbXBsLmNjICAgICAgIHwgIDE4ICstCisgLi4uL3ZpZGVvX2NhcHR1 cmUvdmlkZW9fY2FwdHVyZV9pbXBsLmggICAgICAgIHwgICA2ICsKKyAuLi4vNWRhNWE2ZTRlMC5u by1vcC1jaGVycnktcGljay1tc2cgICAgICAgICAgfCAgIDEgKworIDEwIGZpbGVzIGNoYW5nZWQs IDM5MyBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQg dGhpcmRfcGFydHkvbGlid2VicnRjL21vei1wYXRjaC1zdGFjay81ZGE1YTZlNGUwLm5vLW9wLWNo ZXJyeS1waWNrLW1zZworCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvbGlid2VicnRjL2NvbW1v bl92aWRlby9CVUlMRC5nbiBiL3RoaXJkX3BhcnR5L2xpYndlYnJ0Yy9jb21tb25fdmlkZW8vQlVJ TEQuZ24KK2luZGV4IDg2OGQwOWEyZWIxZWEuLmViM2NjMDdmOTQ4YWQgMTAwNjQ0CistLS0gYS90 aGlyZF9wYXJ0eS9saWJ3ZWJydGMvY29tbW9uX3ZpZGVvL0JVSUxELmduCisrKysgYi90aGlyZF9w YXJ0eS9saWJ3ZWJydGMvY29tbW9uX3ZpZGVvL0JVSUxELmduCitAQCAtOTcsNiArOTcsMTAgQEAg cnRjX2xpYnJhcnkoImNvbW1vbl92aWRlbyIpIHsKKyAgICAgICAiLi4vcnRjX2Jhc2UvY29udGFp bmVyczpmbGF0X21hcCIsCisgICAgIF0KKyAgIH0KKysKKysgIGlmICghaXNfaW9zKSB7CisrICAg IGRlZmluZXMgPSBbICJIQVZFX0xJQllVVl9KUEVHIiBdCisrICB9CisgfQorIAorIHJ0Y19zb3Vy Y2Vfc2V0KCJmcmFtZV9jb3VudHMiKSB7CitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvbGlid2Vi cnRjL2NvbW1vbl92aWRlby9jb21tb25fdmlkZW9fZ24vbW96LmJ1aWxkIGIvdGhpcmRfcGFydHkv bGlid2VicnRjL2NvbW1vbl92aWRlby9jb21tb25fdmlkZW9fZ24vbW96LmJ1aWxkCitpbmRleCA3 MzFhNjhkMzMyM2MzLi4xNjY0NWNlMmQxOTJjIDEwMDY0NAorLS0tIGEvdGhpcmRfcGFydHkvbGli d2VicnRjL2NvbW1vbl92aWRlby9jb21tb25fdmlkZW9fZ24vbW96LmJ1aWxkCisrKysgYi90aGly ZF9wYXJ0eS9saWJ3ZWJydGMvY29tbW9uX3ZpZGVvL2NvbW1vbl92aWRlb19nbi9tb3ouYnVpbGQK K0BAIC0yMCw2ICsyMCw3IEBAIERFRklORVNbIldFQlJUQ19MSUJSQVJZX0lNUEwiXSA9IFRydWUK KyBERUZJTkVTWyJXRUJSVENfTU9aSUxMQV9CVUlMRCJdID0gVHJ1ZQorIERFRklORVNbIldFQlJU Q19OT05fU1RBVElDX1RSQUNFX0VWRU5UX0hBTkRMRVJTIl0gPSAiMCIKKyBERUZJTkVTWyJXRUJS VENfU1RSSUNUX0ZJRUxEX1RSSUFMUyJdID0gIjAiCisrREVGSU5FU1siSEFWRV9MSUJZVVZfSlBF RyJdID0gVHJ1ZQorIAorIEZJTkFMX0xJQlJBUlkgPSAieHVsIgorIAorZGlmZiAtLWdpdCBhL3Ro aXJkX3BhcnR5L2xpYndlYnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xp Ynl1di5oIGIvdGhpcmRfcGFydHkvbGlid2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVk ZS93ZWJydGNfbGlieXV2LmgKK2luZGV4IGIxODk1N2I2YmU2ODYuLmExODk5ZGJhODhiMWMgMTAw NjQ0CistLS0gYS90aGlyZF9wYXJ0eS9saWJ3ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNs dWRlL3dlYnJ0Y19saWJ5dXYuaAorKysrIGIvdGhpcmRfcGFydHkvbGlid2VicnRjL2NvbW1vbl92 aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgKK0BAIC04NCw2ICs4NCwyMiBAQCBp bnQgQ29udmVydEZyb21JNDIwKGNvbnN0IFZpZGVvRnJhbWUmIHNyY19mcmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgIGludCBkc3Rfc2FtcGxlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICB1 aW50OF90KiBkc3RfZnJhbWUpOworIAorK2ludCBDb252ZXJ0VG9JNDIwKGNvbnN0IHVpbnQ4X3Qq IHNhbXBsZSwKKysgICAgICAgICAgICAgICAgICBzaXplX3Qgc2FtcGxlX3NpemUsCisrICAgICAg ICAgICAgICAgICAgdWludDhfdCogZHN0X3ksCisrICAgICAgICAgICAgICAgICAgaW50IGRzdF9z dHJpZGVfeSwKKysgICAgICAgICAgICAgICAgICB1aW50OF90KiBkc3RfdSwKKysgICAgICAgICAg ICAgICAgICBpbnQgZHN0X3N0cmlkZV91LAorKyAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGRz dF92LAorKyAgICAgICAgICAgICAgICAgIGludCBkc3Rfc3RyaWRlX3YsCisrICAgICAgICAgICAg ICAgICAgaW50IHNyY193aWR0aCwKKysgICAgICAgICAgICAgICAgICBpbnQgc3JjX2hlaWdodCwK KysgICAgICAgICAgICAgICAgICBpbnQgc3JjX3N0cmlkZSwKKysgICAgICAgICAgICAgICAgICBp bnQgZHN0X3dpZHRoLAorKyAgICAgICAgICAgICAgICAgIGludCBkc3RfaGVpZ2h0LAorKyAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IHJvdGF0aW9uLAorKyAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IGZvdXJjYyk7CisrCisgc2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBTY2Fs ZVZpZGVvRnJhbWVCdWZmZXIoCisgICAgIGNvbnN0IEk0MjBCdWZmZXJJbnRlcmZhY2UmIHNvdXJj ZSwKKyAgICAgaW50IGRzdF93aWR0aCwKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9saWJ3ZWJy dGMvY29tbW9uX3ZpZGVvL2xpYnl1di9saWJ5dXZfdW5pdHRlc3QuY2MgYi90aGlyZF9wYXJ0eS9s aWJ3ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di9saWJ5dXZfdW5pdHRlc3QuY2MKK2luZGV4IDZi NDdlYzY1ZWEwMWUuLjQ0OGFjZThkZmNlYTEgMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0eS9saWJ3 ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di9saWJ5dXZfdW5pdHRlc3QuY2MKKysrKyBiL3RoaXJk X3BhcnR5L2xpYndlYnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2L2xpYnl1dl91bml0dGVzdC5jYwor QEAgLTE3MiwxMiArMTcyLDEyIEBAIFRFU1RfRihUZXN0TGliWXV2LCBDb252ZXJ0VGVzdCkgewor ICAgRVhQRUNUX0VRKDAsIENvbnZlcnRGcm9tSTQyMCgqb3JpZ19mcmFtZV8sIFZpZGVvVHlwZTo6 a1JHQjI0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNfcmdiX2J1ZmZl cjIuZ2V0KCkpKTsKKyAKKy0gIHJldCA9IGxpYnl1djo6Q29udmVydFRvSTQyMCgKKysgIHJldCA9 IENvbnZlcnRUb0k0MjAoCisgICAgICAgcmVzX3JnYl9idWZmZXIyLmdldCgpLCAwLCByZXNfaTQy MF9idWZmZXItPk11dGFibGVEYXRhWSgpLAorICAgICAgIHJlc19pNDIwX2J1ZmZlci0+U3RyaWRl WSgpLCByZXNfaTQyMF9idWZmZXItPk11dGFibGVEYXRhVSgpLAorICAgICAgIHJlc19pNDIwX2J1 ZmZlci0+U3RyaWRlVSgpLCByZXNfaTQyMF9idWZmZXItPk11dGFibGVEYXRhVigpLAorLSAgICAg IHJlc19pNDIwX2J1ZmZlci0+U3RyaWRlVigpLCAwLCAwLCB3aWR0aF8sIGhlaWdodF8sCistICAg ICAgcmVzX2k0MjBfYnVmZmVyLT53aWR0aCgpLCByZXNfaTQyMF9idWZmZXItPmhlaWdodCgpLCBs aWJ5dXY6OmtSb3RhdGUwLAorKyAgICAgIHJlc19pNDIwX2J1ZmZlci0+U3RyaWRlVigpLCB3aWR0 aF8sIGhlaWdodF8sIDAsIHJlc19pNDIwX2J1ZmZlci0+d2lkdGgoKSwKKysgICAgICByZXNfaTQy MF9idWZmZXItPmhlaWdodCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obGlieXV2OjprUm90YXRl MCksCisgICAgICAgQ29udmVydFZpZGVvVHlwZShWaWRlb1R5cGU6OmtSR0IyNCkpOworIAorICAg RVhQRUNUX0VRKDAsIHJldCk7CitAQCAtMTk2LDEyICsxOTYsMTIgQEAgVEVTVF9GKFRlc3RMaWJZ dXYsIENvbnZlcnRUZXN0KSB7CisgICBFWFBFQ1RfRVEoMCwgQ29udmVydEZyb21JNDIwKCpvcmln X2ZyYW1lXywgVmlkZW9UeXBlOjprVVlWWSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3V0X3V5dnlfYnVmZmVyLmdldCgpKSk7CisgCistICByZXQgPSBsaWJ5dXY6OkNvbnZl cnRUb0k0MjAoCisrICByZXQgPSBDb252ZXJ0VG9JNDIwKAorICAgICAgIG91dF91eXZ5X2J1ZmZl ci5nZXQoKSwgMCwgcmVzX2k0MjBfYnVmZmVyLT5NdXRhYmxlRGF0YVkoKSwKKyAgICAgICByZXNf aTQyMF9idWZmZXItPlN0cmlkZVkoKSwgcmVzX2k0MjBfYnVmZmVyLT5NdXRhYmxlRGF0YVUoKSwK KyAgICAgICByZXNfaTQyMF9idWZmZXItPlN0cmlkZVUoKSwgcmVzX2k0MjBfYnVmZmVyLT5NdXRh YmxlRGF0YVYoKSwKKy0gICAgICByZXNfaTQyMF9idWZmZXItPlN0cmlkZVYoKSwgMCwgMCwgd2lk dGhfLCBoZWlnaHRfLAorLSAgICAgIHJlc19pNDIwX2J1ZmZlci0+d2lkdGgoKSwgcmVzX2k0MjBf YnVmZmVyLT5oZWlnaHQoKSwgbGlieXV2OjprUm90YXRlMCwKKysgICAgICByZXNfaTQyMF9idWZm ZXItPlN0cmlkZVYoKSwgd2lkdGhfLCBoZWlnaHRfLCAwLCByZXNfaTQyMF9idWZmZXItPndpZHRo KCksCisrICAgICAgcmVzX2k0MjBfYnVmZmVyLT5oZWlnaHQoKSwgc3RhdGljX2Nhc3Q8dWludDMy X3Q+KGxpYnl1djo6a1JvdGF0ZTApLAorICAgICAgIENvbnZlcnRWaWRlb1R5cGUoVmlkZW9UeXBl OjprVVlWWSkpOworIAorICAgRVhQRUNUX0VRKDAsIHJldCk7CitAQCAtMjE4LDEyICsyMTgsMTIg QEAgVEVTVF9GKFRlc3RMaWJZdXYsIENvbnZlcnRUZXN0KSB7CisgICBFWFBFQ1RfRVEoMCwgQ29u dmVydEZyb21JNDIwKCpvcmlnX2ZyYW1lXywgVmlkZW9UeXBlOjprWVVZMiwgMCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3l1eTJfYnVmZmVyLmdldCgpKSk7CisgCistICBy ZXQgPSBsaWJ5dXY6OkNvbnZlcnRUb0k0MjAoCisrICByZXQgPSBDb252ZXJ0VG9JNDIwKAorICAg ICAgIG91dF95dXkyX2J1ZmZlci5nZXQoKSwgMCwgcmVzX2k0MjBfYnVmZmVyLT5NdXRhYmxlRGF0 YVkoKSwKKyAgICAgICByZXNfaTQyMF9idWZmZXItPlN0cmlkZVkoKSwgcmVzX2k0MjBfYnVmZmVy LT5NdXRhYmxlRGF0YVUoKSwKKyAgICAgICByZXNfaTQyMF9idWZmZXItPlN0cmlkZVUoKSwgcmVz X2k0MjBfYnVmZmVyLT5NdXRhYmxlRGF0YVYoKSwKKy0gICAgICByZXNfaTQyMF9idWZmZXItPlN0 cmlkZVYoKSwgMCwgMCwgd2lkdGhfLCBoZWlnaHRfLAorLSAgICAgIHJlc19pNDIwX2J1ZmZlci0+ d2lkdGgoKSwgcmVzX2k0MjBfYnVmZmVyLT5oZWlnaHQoKSwgbGlieXV2OjprUm90YXRlMCwKKysg ICAgICByZXNfaTQyMF9idWZmZXItPlN0cmlkZVYoKSwgd2lkdGhfLCBoZWlnaHRfLCAwLCByZXNf aTQyMF9idWZmZXItPndpZHRoKCksCisrICAgICAgcmVzX2k0MjBfYnVmZmVyLT5oZWlnaHQoKSwg c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxpYnl1djo6a1JvdGF0ZTApLAorICAgICAgIENvbnZlcnRW aWRlb1R5cGUoVmlkZW9UeXBlOjprWVVZMikpOworIAorICAgRVhQRUNUX0VRKDAsIHJldCk7CitA QCAtMjQyLDEyICsyNDIsMTIgQEAgVEVTVF9GKFRlc3RMaWJZdXYsIENvbnZlcnRUZXN0KSB7Cisg ICBFWFBFQ1RfRVEoMCwgQ29udmVydEZyb21JNDIwKCpvcmlnX2ZyYW1lXywgVmlkZW9UeXBlOjpr UkdCNTY1LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfcmdiNTY1X2J1 ZmZlci5nZXQoKSkpOworIAorLSAgcmV0ID0gbGlieXV2OjpDb252ZXJ0VG9JNDIwKAorKyAgcmV0 ID0gQ29udmVydFRvSTQyMCgKKyAgICAgICBvdXRfcmdiNTY1X2J1ZmZlci5nZXQoKSwgMCwgcmVz X2k0MjBfYnVmZmVyLT5NdXRhYmxlRGF0YVkoKSwKKyAgICAgICByZXNfaTQyMF9idWZmZXItPlN0 cmlkZVkoKSwgcmVzX2k0MjBfYnVmZmVyLT5NdXRhYmxlRGF0YVUoKSwKKyAgICAgICByZXNfaTQy MF9idWZmZXItPlN0cmlkZVUoKSwgcmVzX2k0MjBfYnVmZmVyLT5NdXRhYmxlRGF0YVYoKSwKKy0g ICAgICByZXNfaTQyMF9idWZmZXItPlN0cmlkZVYoKSwgMCwgMCwgd2lkdGhfLCBoZWlnaHRfLAor LSAgICAgIHJlc19pNDIwX2J1ZmZlci0+d2lkdGgoKSwgcmVzX2k0MjBfYnVmZmVyLT5oZWlnaHQo KSwgbGlieXV2OjprUm90YXRlMCwKKysgICAgICByZXNfaTQyMF9idWZmZXItPlN0cmlkZVYoKSwg d2lkdGhfLCBoZWlnaHRfLCAwLCByZXNfaTQyMF9idWZmZXItPndpZHRoKCksCisrICAgICAgcmVz X2k0MjBfYnVmZmVyLT5oZWlnaHQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxpYnl1djo6a1Jv dGF0ZTApLAorICAgICAgIENvbnZlcnRWaWRlb1R5cGUoVmlkZW9UeXBlOjprUkdCNTY1KSk7Cisg CisgICBFWFBFQ1RfRVEoMCwgcmV0KTsKK0BAIC0yNjksMTIgKzI2OSwxMiBAQCBURVNUX0YoVGVz dExpYll1diwgQ29udmVydFRlc3QpIHsKKyAgIEVYUEVDVF9FUSgwLCBDb252ZXJ0RnJvbUk0MjAo Km9yaWdfZnJhbWVfLCBWaWRlb1R5cGU6OmtBUkdCLCAwLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvdXRfYXJnYjg4ODhfYnVmZmVyLmdldCgpKSk7CisgCistICByZXQgPSBsaWJ5 dXY6OkNvbnZlcnRUb0k0MjAoCisrICByZXQgPSBDb252ZXJ0VG9JNDIwKAorICAgICAgIG91dF9h cmdiODg4OF9idWZmZXIuZ2V0KCksIDAsIHJlc19pNDIwX2J1ZmZlci0+TXV0YWJsZURhdGFZKCks CisgICAgICAgcmVzX2k0MjBfYnVmZmVyLT5TdHJpZGVZKCksIHJlc19pNDIwX2J1ZmZlci0+TXV0 YWJsZURhdGFVKCksCisgICAgICAgcmVzX2k0MjBfYnVmZmVyLT5TdHJpZGVVKCksIHJlc19pNDIw X2J1ZmZlci0+TXV0YWJsZURhdGFWKCksCistICAgICAgcmVzX2k0MjBfYnVmZmVyLT5TdHJpZGVW KCksIDAsIDAsIHdpZHRoXywgaGVpZ2h0XywKKy0gICAgICByZXNfaTQyMF9idWZmZXItPndpZHRo KCksIHJlc19pNDIwX2J1ZmZlci0+aGVpZ2h0KCksIGxpYnl1djo6a1JvdGF0ZTAsCisrICAgICAg cmVzX2k0MjBfYnVmZmVyLT5TdHJpZGVWKCksIHdpZHRoXywgaGVpZ2h0XywgMCwgcmVzX2k0MjBf YnVmZmVyLT53aWR0aCgpLAorKyAgICAgIHJlc19pNDIwX2J1ZmZlci0+aGVpZ2h0KCksIHN0YXRp Y19jYXN0PHVpbnQzMl90PihsaWJ5dXY6OmtSb3RhdGUwKSwKKyAgICAgICBDb252ZXJ0VmlkZW9U eXBlKFZpZGVvVHlwZTo6a0FSR0IpKTsKKyAKKyAgIEVYUEVDVF9FUSgwLCByZXQpOworZGlmZiAt LWdpdCBhL3RoaXJkX3BhcnR5L2xpYndlYnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2L3dlYnJ0Y19s aWJ5dXYuY2MgYi90aGlyZF9wYXJ0eS9saWJ3ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di93ZWJy dGNfbGlieXV2LmNjCitpbmRleCA5ZGQxMmI0MmYyMjNmLi44NTI3ZjM0MTYzYjRlIDEwMDY0NAor LS0tIGEvdGhpcmRfcGFydHkvbGlid2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvd2VicnRjX2xp Ynl1di5jYworKysrIGIvdGhpcmRfcGFydHkvbGlid2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYv d2VicnRjX2xpYnl1di5jYworQEAgLTEwLDggKzEwLDEwIEBACisgCisgI2luY2x1ZGUgImNvbW1v bl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCisgCisrI2luY2x1ZGUgPGNs aW1pdHM+CisgI2luY2x1ZGUgPGNzdGRkZWY+CisgI2luY2x1ZGUgPGNzdGRpbnQ+CisrI2luY2x1 ZGUgPGNzdGRsaWI+CisgCisgI2luY2x1ZGUgImFwaS9zY29wZWRfcmVmcHRyLmgiCisgI2luY2x1 ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZlci5oIgorQEAgLTIzLDYgKzI1LDcgQEAKKyAjaW5jbHVk ZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnQuaCIKKyAjaW5jbHVk ZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgorICNp bmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvcGxhbmFyX2Z1bmN0aW9u cy5oIgorKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvcm90YXRl LmgiCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9zY2FsZS5o IgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvdmlkZW9fY29t bW9uLmgiCisgCitAQCAtMTQ2LDYgKzE0OSwzMjMgQEAgaW50IENvbnZlcnRGcm9tSTQyMChjb25z dCBWaWRlb0ZyYW1lJiBzcmNfZnJhbWUsCisgICAgICAgQ29udmVydFZpZGVvVHlwZShkc3Rfdmlk ZW9fdHlwZSkpOworIH0KKyAKKytpbnQgQ29udmVydFRvSTQyMChjb25zdCB1aW50OF90KiBzYW1w bGUsCisrICAgICAgICAgICAgICAgICAgc2l6ZV90IHNhbXBsZV9zaXplLAorKyAgICAgICAgICAg ICAgICAgIHVpbnQ4X3QqIGRzdF95LAorKyAgICAgICAgICAgICAgICAgIGludCBkc3Rfc3RyaWRl X3ksCisrICAgICAgICAgICAgICAgICAgdWludDhfdCogZHN0X3UsCisrICAgICAgICAgICAgICAg ICAgaW50IGRzdF9zdHJpZGVfdSwKKysgICAgICAgICAgICAgICAgICB1aW50OF90KiBkc3RfdiwK KysgICAgICAgICAgICAgICAgICBpbnQgZHN0X3N0cmlkZV92LAorKyAgICAgICAgICAgICAgICAg IGludCBzcmNfd2lkdGgsCisrICAgICAgICAgICAgICAgICAgaW50IHNyY19oZWlnaHQsCisrICAg ICAgICAgICAgICAgICAgaW50IHNyY19zdHJpZGUsCisrICAgICAgICAgICAgICAgICAgaW50IGRz dF93aWR0aCwKKysgICAgICAgICAgICAgICAgICBpbnQgZHN0X2hlaWdodCwKKysgICAgICAgICAg ICAgICAgICB1aW50MzJfdCByb3RhdGlvbiwKKysgICAgICAgICAgICAgICAgICB1aW50MzJfdCBm b3VyY2MpIHsKKysgIGlmIChzcmNfaGVpZ2h0ID09IElOVF9NSU4gfHwgZHN0X2hlaWdodCA9PSBJ TlRfTUlOKSB7CisrICAgIHJldHVybiAtMTsKKysgIH0KKysKKysgIGNvbnN0IGludCBhYnNfc3Jj X2hlaWdodCA9IChzcmNfaGVpZ2h0IDwgMCkgPyAtc3JjX2hlaWdodCA6IHNyY19oZWlnaHQ7Cisr ICBjb25zdCBpbnQgYWJzX2RzdF9oZWlnaHQgPSAoZHN0X2hlaWdodCA8IDApID8gLWRzdF9oZWln aHQgOiBkc3RfaGVpZ2h0OworKworKyAgaWYgKCFkc3RfeSB8fCAhZHN0X3UgfHwgIWRzdF92IHx8 ICFzYW1wbGUgfHwgc3JjX3dpZHRoIDw9IDAgfHwKKysgICAgICBzcmNfd2lkdGggPiBJTlRfTUFY IC8gNCB8fCBkc3Rfd2lkdGggPD0gMCB8fCBzcmNfaGVpZ2h0ID09IDAgfHwKKysgICAgICBkc3Rf aGVpZ2h0ID09IDAgfHwgZHN0X3dpZHRoID4gc3JjX3dpZHRoIHx8CisrICAgICAgYWJzX2RzdF9o ZWlnaHQgPiBhYnNfc3JjX2hlaWdodCkgeworKyAgICByZXR1cm4gLTE7CisrICB9CisrCisrICB1 aW50MzJfdCBmb3JtYXQgPSBsaWJ5dXY6OkNhbm9uaWNhbEZvdXJDQyhmb3VyY2MpOworKworKyAg Ly8gQ2FsY3VsYXRlIHRoZSB1bnBhZGRlZCBzdHJpZGUgaWYgbm8gZXhwbGljaXQgdmFsdWUgaXMg c2V0LgorKyAgaWYgKHNyY19zdHJpZGUgPT0gMCkgeworKyAgICBzd2l0Y2ggKGZvcm1hdCkgewor KyAgICAgIGNhc2UgbGlieXV2OjpGT1VSQ0NfWVVZMjoKKysgICAgICBjYXNlIGxpYnl1djo6Rk9V UkNDX1VZVlk6CisrICAgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19SR0JQOgorKyAgICAgIGNhc2Ug bGlieXV2OjpGT1VSQ0NfUkdCTzoKKysgICAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX1I0NDQ6Cisr ICAgICAgICBzcmNfc3RyaWRlID0gc3JjX3dpZHRoICogMjsKKysgICAgICAgIGJyZWFrOworKyAg ICAgIGNhc2UgbGlieXV2OjpGT1VSQ0NfMjRCRzoKKysgICAgICBjYXNlIGxpYnl1djo6Rk9VUkND X1JBVzoKKysgICAgICAgIHNyY19zdHJpZGUgPSBzcmNfd2lkdGggKiAzOworKyAgICAgICAgYnJl YWs7CisrICAgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19BUkdCOgorKyAgICAgIGNhc2UgbGlieXV2 OjpGT1VSQ0NfQkdSQToKKysgICAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX0FCR1I6CisrICAgICAg Y2FzZSBsaWJ5dXY6OkZPVVJDQ19SR0JBOgorKyAgICAgICAgc3JjX3N0cmlkZSA9IHNyY193aWR0 aCAqIDQ7CisrICAgICAgICBicmVhazsKKysgICAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX0k0MDA6 CisrICAgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19OVjEyOgorKyAgICAgIGNhc2UgbGlieXV2OjpG T1VSQ0NfTlYyMToKKysgICAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX0k0MjA6CisrICAgICAgY2Fz ZSBsaWJ5dXY6OkZPVVJDQ19ZVjEyOgorKyAgICAgIGNhc2UgbGlieXV2OjpGT1VSQ0NfSTQyMjoK KysgICAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX1lWMTY6CisrICAgICAgICAvLyBGb2xsb3cgdGhl IFY0TDIgZGVmaW5pdGlvbiBmb3Igc3RyaWRlcyBvZiBzdWJzYW1wbGVkIGZvcm1hdHM6CisrICAg ICAgICAvLyA+IFRvIGF2b2lkIGFtYmlndWl0aWVzIGRyaXZlcnMgbXVzdCByZXR1cm4gYSBieXRl c3BlcmxpbmUgdmFsdWUKKysgICAgICAgIC8vID4gcm91bmRlZCB1cCB0byBhIG11bHRpcGxlIG9m IHRoZSBzY2FsZSBmYWN0b3IuCisrICAgICAgICAvLyBodHRwczovL3d3dy5rZXJuZWwub3JnL2Rv Yy9odG1sL3Y3LjEvdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvcGl4Zm10LXY0bDIuaHRtbAorKyAg ICAgICAgc3JjX3N0cmlkZSA9IChzcmNfd2lkdGggKyAxKSAmIH4xOworKyAgICAgICAgYnJlYWs7 CisrICAgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19JNDQ0OgorKyAgICAgIGNhc2UgbGlieXV2OjpG T1VSQ0NfWVYyNDoKKysgICAgICAgIHNyY19zdHJpZGUgPSBzcmNfd2lkdGg7CisrICAgICAgICBi cmVhazsKKysgICAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX01KUEc6CisrICAgICAgICBicmVhazsK KysgICAgICBkZWZhdWx0OgorKyAgICAgICAgcmV0dXJuIC0xOworKyAgICB9CisrICB9IGVsc2Ug eworKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworKyAgICAgIGNhc2UgbGlieXV2OjpGT1VSQ0NfWVVZ MjoKKysgICAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX1VZVlk6CisrICAgICAgY2FzZSBsaWJ5dXY6 OkZPVVJDQ19JNDAwOgorKyAgICAgIGNhc2UgbGlieXV2OjpGT1VSQ0NfTlYxMjoKKysgICAgICBj YXNlIGxpYnl1djo6Rk9VUkNDX05WMjE6CisrICAgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19JNDIw OgorKyAgICAgIGNhc2UgbGlieXV2OjpGT1VSQ0NfWVYxMjoKKysgICAgICBjYXNlIGxpYnl1djo6 Rk9VUkNDX0k0MjI6CisrICAgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19ZVjE2OgorKyAgICAgICAg Ly8gRm9sbG93IHRoZSBWNEwyIGRlZmluaXRpb24gZm9yIHN0cmlkZXMgb2Ygc3Vic2FtcGxlZCBm b3JtYXRzOgorKyAgICAgICAgLy8gPiBUbyBhdm9pZCBhbWJpZ3VpdGllcyBkcml2ZXJzIG11c3Qg cmV0dXJuIGEgYnl0ZXNwZXJsaW5lIHZhbHVlCisrICAgICAgICAvLyA+IHJvdW5kZWQgdXAgdG8g YSBtdWx0aXBsZSBvZiB0aGUgc2NhbGUgZmFjdG9yLgorKyAgICAgICAgLy8gaHR0cHM6Ly93d3cu a2VybmVsLm9yZy9kb2MvaHRtbC92Ny4xL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL3BpeGZtdC12 NGwyLmh0bWwKKysgICAgICAgIGlmICgoc3JjX3N0cmlkZSAlIDIpICE9IDApCisrICAgICAgICAg IHJldHVybiAtMTsKKysgICAgICAgIGJyZWFrOworKyAgICAgIGRlZmF1bHQ6CisrICAgICAgICBi cmVhazsKKysgICAgfQorKyAgfQorKworKyAgaW50IHIgPSAwOworKyAgY29uc3QgYm9vbCBuZWVk X2J1ZiA9CisrICAgICAgKHJvdGF0aW9uICYmIGZvcm1hdCAhPSBsaWJ5dXY6OkZPVVJDQ19JNDIw ICYmCisrICAgICAgIGZvcm1hdCAhPSBsaWJ5dXY6OkZPVVJDQ19OVjEyICYmIGZvcm1hdCAhPSBs aWJ5dXY6OkZPVVJDQ19OVjIxICYmCisrICAgICAgIGZvcm1hdCAhPSBsaWJ5dXY6OkZPVVJDQ19Z VjEyKSB8fAorKyAgICAgIGRzdF95ID09IHNhbXBsZTsKKysgIGNvbnN0IGludCBpbnZfZHN0X2hl aWdodCA9CisrICAgICAgKHNyY19oZWlnaHQgPCAwKSA/IC1hYnNfZHN0X2hlaWdodCA6IGFic19k c3RfaGVpZ2h0OworKyAgdWludDhfdCogcm90YXRlX2J1ZmZlciA9IE5VTEw7CisrICB1aW50OF90 KiB0bXBfeTsKKysgIHVpbnQ4X3QqIHRtcF91OworKyAgdWludDhfdCogdG1wX3Y7CisrICBpbnQg dG1wX3lfc3RyaWRlOworKyAgaW50IHRtcF91X3N0cmlkZTsKKysgIGludCB0bXBfdl9zdHJpZGU7 CisrCisrICAvLyBPbmUgcGFzcyByb3RhdGlvbiBpcyBhdmFpbGFibGUgZm9yIHNvbWUgZm9ybWF0 cy4gRm9yIHRoZSByZXN0LCBjb252ZXJ0CisrICAvLyB0byBJNDIwICh3aXRoIG9wdGlvbmFsIHZl cnRpY2FsIGZsaXBwaW5nKSBpbnRvIGEgdGVtcG9yYXJ5IEk0MjAgYnVmZmVyLAorKyAgLy8gYW5k IHRoZW4gcm90YXRlIHRoZSBJNDIwIHRvIHRoZSBmaW5hbCBkZXN0aW5hdGlvbiBidWZmZXIuCisr ICAvLyBGb3IgaW4tcGxhY2UgY29udmVyc2lvbiwgaWYgZGVzdGluYXRpb24gZHN0X3kgaXMgc2Ft ZSBhcyBzb3VyY2Ugc2FtcGxlLAorKyAgLy8gYWxzbyBlbmFibGUgdGVtcG9yYXJ5IGJ1ZmZlci4K KysgIGlmIChuZWVkX2J1ZikgeworKyAgICBzaXplX3QgeV9zaXplID0gKHNpemVfdClkc3Rfd2lk dGggKiBhYnNfZHN0X2hlaWdodDsKKysgICAgc2l6ZV90IHV2X3NpemUgPSAoc2l6ZV90KSgoZHN0 X3dpZHRoICsgMSkgLyAyKSAqICgoYWJzX2RzdF9oZWlnaHQgKyAxKSAvIDIpOworKyAgICBpZiAo dXZfc2l6ZSA+IFNJWkVfTUFYIC8gMiB8fCB5X3NpemUgPiBTSVpFX01BWCAtIHV2X3NpemUgKiAy KSB7CisrICAgICAgcmV0dXJuIC0xOyAgLy8gSW52YWxpZCBzaXplLgorKyAgICB9CisrICAgIGNv bnN0IHNpemVfdCByb3RhdGVfYnVmZmVyX3NpemUgPSB5X3NpemUgKyB1dl9zaXplICogMjsKKysg ICAgcm90YXRlX2J1ZmZlciA9IG5ldyB1aW50OF90W3JvdGF0ZV9idWZmZXJfc2l6ZV07CisrICAg IGlmICghcm90YXRlX2J1ZmZlcikgeworKyAgICAgIHJldHVybiAxOyAgLy8gT3V0IG9mIG1lbW9y eSBydW50aW1lIGVycm9yLgorKyAgICB9CisrICAgIHRtcF95ID0gZHN0X3k7CisrICAgIHRtcF91 ID0gZHN0X3U7CisrICAgIHRtcF92ID0gZHN0X3Y7CisrICAgIHRtcF95X3N0cmlkZSA9IGRzdF9z dHJpZGVfeTsKKysgICAgdG1wX3Vfc3RyaWRlID0gZHN0X3N0cmlkZV91OworKyAgICB0bXBfdl9z dHJpZGUgPSBkc3Rfc3RyaWRlX3Y7CisrICAgIGRzdF95ID0gcm90YXRlX2J1ZmZlcjsKKysgICAg ZHN0X3UgPSBkc3RfeSArIHlfc2l6ZTsKKysgICAgZHN0X3YgPSBkc3RfdSArIHV2X3NpemU7Cisr ICAgIGRzdF9zdHJpZGVfeSA9IGRzdF93aWR0aDsKKysgICAgZHN0X3N0cmlkZV91ID0gZHN0X3N0 cmlkZV92ID0gKChkc3Rfd2lkdGggKyAxKSAvIDIpOworKyAgfQorKworKyAgc3dpdGNoIChmb3Jt YXQpIHsKKysgICAgLy8gU2luZ2xlIHBsYW5lIGZvcm1hdHMKKysgICAgY2FzZSBsaWJ5dXY6OkZP VVJDQ19ZVVkyOiB7CisrICAgICAgciA9IGxpYnl1djo6WVVZMlRvSTQyMChzYW1wbGUsIHNyY19z dHJpZGUsIGRzdF95LCBkc3Rfc3RyaWRlX3ksIGRzdF91LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZHN0X3N0cmlkZV91LCBkc3RfdiwgZHN0X3N0cmlkZV92LCBkc3Rfd2lkdGgsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZfZHN0X2hlaWdodCk7CisrICAgICAgYnJl YWs7CisrICAgIH0KKysgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19VWVZZOiB7CisrICAgICAgciA9 IGxpYnl1djo6VVlWWVRvSTQyMChzYW1wbGUsIHNyY19zdHJpZGUsIGRzdF95LCBkc3Rfc3RyaWRl X3ksIGRzdF91LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X3N0cmlkZV91LCBk c3RfdiwgZHN0X3N0cmlkZV92LCBkc3Rfd2lkdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnZfZHN0X2hlaWdodCk7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysgICAgY2FzZSBs aWJ5dXY6OkZPVVJDQ19SR0JQOgorKyAgICAgIHIgPSBsaWJ5dXY6OlJHQjU2NVRvSTQyMChzYW1w bGUsIHNyY19zdHJpZGUsIGRzdF95LCBkc3Rfc3RyaWRlX3ksIGRzdF91LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkc3Rfc3RyaWRlX3UsIGRzdF92LCBkc3Rfc3RyaWRlX3YsIGRz dF93aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52X2RzdF9oZWlnaHQp OworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX1JHQk86CisrICAgICAg ciA9IGxpYnl1djo6QVJHQjE1NTVUb0k0MjAoc2FtcGxlLCBzcmNfc3RyaWRlLCBkc3RfeSwgZHN0 X3N0cmlkZV95LCBkc3RfdSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3Rf c3RyaWRlX3UsIGRzdF92LCBkc3Rfc3RyaWRlX3YsIGRzdF93aWR0aCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnZfZHN0X2hlaWdodCk7CisrICAgICAgYnJlYWs7CisrICAg IGNhc2UgbGlieXV2OjpGT1VSQ0NfUjQ0NDoKKysgICAgICByID0gbGlieXV2OjpBUkdCNDQ0NFRv STQyMChzYW1wbGUsIHNyY19zdHJpZGUsIGRzdF95LCBkc3Rfc3RyaWRlX3ksIGRzdF91LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9zdHJpZGVfdSwgZHN0X3YsIGRzdF9z dHJpZGVfdiwgZHN0X3dpZHRoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dl9kc3RfaGVpZ2h0KTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ18y NEJHOgorKyAgICAgIHIgPSBsaWJ5dXY6OlJHQjI0VG9JNDIwKHNhbXBsZSwgc3JjX3N0cmlkZSwg ZHN0X3ksIGRzdF9zdHJpZGVfeSwgZHN0X3UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZHN0X3N0cmlkZV91LCBkc3RfdiwgZHN0X3N0cmlkZV92LCBkc3Rfd2lkdGgsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW52X2RzdF9oZWlnaHQpOworKyAgICAgIGJyZWFrOwor KyAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX1JBVzoKKysgICAgICByID0gbGlieXV2OjpSQVdUb0k0 MjAoc2FtcGxlLCBzcmNfc3RyaWRlLCBkc3RfeSwgZHN0X3N0cmlkZV95LCBkc3RfdSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZHN0X3N0cmlkZV91LCBkc3RfdiwgZHN0X3N0cmlkZV92 LCBkc3Rfd2lkdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludl9kc3RfaGVpZ2h0 KTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19BUkdCOgorKyAgICAg IHIgPSBsaWJ5dXY6OkFSR0JUb0k0MjAoc2FtcGxlLCBzcmNfc3RyaWRlLCBkc3RfeSwgZHN0X3N0 cmlkZV95LCBkc3RfdSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9zdHJpZGVf dSwgZHN0X3YsIGRzdF9zdHJpZGVfdiwgZHN0X3dpZHRoLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW52X2RzdF9oZWlnaHQpOworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxpYnl1 djo6Rk9VUkNDX0JHUkE6CisrICAgICAgciA9IGxpYnl1djo6QkdSQVRvSTQyMChzYW1wbGUsIHNy Y19zdHJpZGUsIGRzdF95LCBkc3Rfc3RyaWRlX3ksIGRzdF91LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZHN0X3N0cmlkZV91LCBkc3RfdiwgZHN0X3N0cmlkZV92LCBkc3Rfd2lkdGgs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZfZHN0X2hlaWdodCk7CisrICAgICAg YnJlYWs7CisrICAgIGNhc2UgbGlieXV2OjpGT1VSQ0NfQUJHUjoKKysgICAgICByID0gbGlieXV2 OjpBQkdSVG9JNDIwKHNhbXBsZSwgc3JjX3N0cmlkZSwgZHN0X3ksIGRzdF9zdHJpZGVfeSwgZHN0 X3UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3Rfc3RyaWRlX3UsIGRzdF92LCBk c3Rfc3RyaWRlX3YsIGRzdF93aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dl9kc3RfaGVpZ2h0KTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19S R0JBOgorKyAgICAgIHIgPSBsaWJ5dXY6OlJHQkFUb0k0MjAoc2FtcGxlLCBzcmNfc3RyaWRlLCBk c3RfeSwgZHN0X3N0cmlkZV95LCBkc3RfdSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRzdF9zdHJpZGVfdSwgZHN0X3YsIGRzdF9zdHJpZGVfdiwgZHN0X3dpZHRoLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW52X2RzdF9oZWlnaHQpOworKyAgICAgIGJyZWFrOworKyAg ICBjYXNlIGxpYnl1djo6Rk9VUkNDX0k0MDA6CisrICAgICAgciA9IGxpYnl1djo6STQwMFRvSTQy MChzYW1wbGUsIHNyY19zdHJpZGUsIGRzdF95LCBkc3Rfc3RyaWRlX3ksIGRzdF91LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZHN0X3N0cmlkZV91LCBkc3RfdiwgZHN0X3N0cmlkZV92 LCBkc3Rfd2lkdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZfZHN0X2hlaWdo dCk7CisrICAgICAgYnJlYWs7CisrICAgIC8vIEJpcGxhbmFyIGZvcm1hdHMKKysgICAgY2FzZSBs aWJ5dXY6OkZPVVJDQ19OVjEyOiB7CisrICAgICAgY29uc3QgdWludDhfdCogc3JjX3kgPSBzYW1w bGU7CisrICAgICAgY29uc3QgdWludDhfdCogc3JjX3V2ID0gc3JjX3kgKyAoKHB0cmRpZmZfdClz cmNfc3RyaWRlICogYWJzX3NyY19oZWlnaHQpOworKyAgICAgIHIgPSBsaWJ5dXY6Ok5WMTJUb0k0 MjBSb3RhdGUoc3JjX3ksIHNyY19zdHJpZGUsIHNyY191diwgc3JjX3N0cmlkZSwgZHN0X3ksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3Rfc3RyaWRlX3ksIGRzdF91LCBk c3Rfc3RyaWRlX3UsIGRzdF92LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZHN0X3N0cmlkZV92LCBkc3Rfd2lkdGgsIGludl9kc3RfaGVpZ2h0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxpYnl1djo6Um90YXRpb25Nb2RlKXJvdGF0aW9uKTsKKysg ICAgICBicmVhazsKKysgICAgfQorKyAgICBjYXNlIGxpYnl1djo6Rk9VUkNDX05WMjE6IHsKKysg ICAgICBjb25zdCB1aW50OF90KiBzcmNfeSA9IHNhbXBsZTsKKysgICAgICBjb25zdCB1aW50OF90 KiBzcmNfdXYgPSBzcmNfeSArICgocHRyZGlmZl90KXNyY19zdHJpZGUgKiBhYnNfc3JjX2hlaWdo dCk7CisrICAgICAgLy8gQ2FsbCBOVjEyIGJ1dCB3aXRoIGRzdF91IGFuZCBkc3RfdiBwYXJhbWV0 ZXJzIHN3YXBwZWQuCisrICAgICAgciA9IGxpYnl1djo6TlYxMlRvSTQyMFJvdGF0ZShzcmNfeSwg c3JjX3N0cmlkZSwgc3JjX3V2LCBzcmNfc3RyaWRlLCBkc3RfeSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRzdF9zdHJpZGVfeSwgZHN0X3YsIGRzdF9zdHJpZGVfdiwgZHN0 X3UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3Rfc3RyaWRlX3UsIGRz dF93aWR0aCwgaW52X2RzdF9oZWlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGlieXV2OjpSb3RhdGlvbk1vZGUpcm90YXRpb24pOworKyAgICAgIGJyZWFrOworKyAg ICB9CisrICAgIC8vIFRyaXBsYW5hciBmb3JtYXRzCisrICAgIGNhc2UgbGlieXV2OjpGT1VSQ0Nf STQyMDoKKysgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19ZVjEyOiB7CisrICAgICAgY29uc3QgdWlu dDhfdCogc3JjX3kgPSBzYW1wbGU7CisrICAgICAgY29uc3QgdWludDhfdCogc3JjX3U7CisrICAg ICAgY29uc3QgdWludDhfdCogc3JjX3Y7CisrICAgICAgLy8gRm9sbG93IHRoZSBWNEwyIGRlZmlu aXRpb246CisrICAgICAgLy8gPiBXaGVuIHRoZSBpbWFnZSBmb3JtYXQgaXMgcGxhbmFyIHRoZSBi eXRlc3BlcmxpbmUgdmFsdWUgYXBwbGllcyB0byB0aGUKKysgICAgICAvLyA+IGZpcnN0IHBsYW5l IGFuZCBpcyBkaXZpZGVkIGJ5IHRoZSBzYW1lIGZhY3RvciBhcyB0aGUgd2lkdGggZmllbGQgZm9y CisrICAgICAgLy8gPiB0aGUgb3RoZXIgcGxhbmVzLgorKyAgICAgIC8vIGh0dHBzOi8vd3d3Lmtl cm5lbC5vcmcvZG9jL2h0bWwvdjcuMS91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9waXhmbXQtdjRs Mi5odG1sCisrICAgICAgaW50IGhhbGZzdHJpZGUgPSBzcmNfc3RyaWRlIC8gMjsKKysgICAgICBp bnQgaGFsZmhlaWdodCA9IChhYnNfc3JjX2hlaWdodCArIDEpIC8gMjsKKysgICAgICBpZiAoZm9y bWF0ID09IGxpYnl1djo6Rk9VUkNDX1lWMTIpIHsKKysgICAgICAgIHNyY192ID0gc3JjX3kgKyAo cHRyZGlmZl90KXNyY19zdHJpZGUgKiBhYnNfc3JjX2hlaWdodDsKKysgICAgICAgIHNyY191ID0g c3JjX3YgKyBoYWxmc3RyaWRlICogKHB0cmRpZmZfdCloYWxmaGVpZ2h0OworKyAgICAgIH0gZWxz ZSB7CisrICAgICAgICBzcmNfdSA9IHNyY195ICsgKHB0cmRpZmZfdClzcmNfc3RyaWRlICogYWJz X3NyY19oZWlnaHQ7CisrICAgICAgICBzcmNfdiA9IHNyY191ICsgaGFsZnN0cmlkZSAqIChwdHJk aWZmX3QpaGFsZmhlaWdodDsKKysgICAgICB9CisrICAgICAgciA9IGxpYnl1djo6STQyMFJvdGF0 ZShzcmNfeSwgc3JjX3N0cmlkZSwgc3JjX3UsIGhhbGZzdHJpZGUsIHNyY192LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaGFsZnN0cmlkZSwgZHN0X3ksIGRzdF9zdHJpZGVfeSwgZHN0 X3UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3Rfc3RyaWRlX3UsIGRzdF92LCBk c3Rfc3RyaWRlX3YsIGRzdF93aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dl9kc3RfaGVpZ2h0LCAobGlieXV2OjpSb3RhdGlvbk1vZGUpcm90YXRpb24pOworKyAgICAgIGJy ZWFrOworKyAgICB9CisrICAgIGNhc2UgbGlieXV2OjpGT1VSQ0NfSTQyMjoKKysgICAgY2FzZSBs aWJ5dXY6OkZPVVJDQ19ZVjE2OiB7CisrICAgICAgY29uc3QgdWludDhfdCogc3JjX3kgPSBzYW1w bGU7CisrICAgICAgY29uc3QgdWludDhfdCogc3JjX3U7CisrICAgICAgY29uc3QgdWludDhfdCog c3JjX3Y7CisrICAgICAgLy8gRm9sbG93IHRoZSBWNEwyIGRlZmluaXRpb246CisrICAgICAgLy8g PiBXaGVuIHRoZSBpbWFnZSBmb3JtYXQgaXMgcGxhbmFyIHRoZSBieXRlc3BlcmxpbmUgdmFsdWUg YXBwbGllcyB0byB0aGUKKysgICAgICAvLyA+IGZpcnN0IHBsYW5lIGFuZCBpcyBkaXZpZGVkIGJ5 IHRoZSBzYW1lIGZhY3RvciBhcyB0aGUgd2lkdGggZmllbGQgZm9yCisrICAgICAgLy8gPiB0aGUg b3RoZXIgcGxhbmVzLgorKyAgICAgIC8vIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwv djcuMS91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9waXhmbXQtdjRsMi5odG1sCisrICAgICAgaW50 IGhhbGZzdHJpZGUgPSBzcmNfc3RyaWRlIC8gMjsKKysgICAgICBpZiAoZm9ybWF0ID09IGxpYnl1 djo6Rk9VUkNDX1lWMTYpIHsKKysgICAgICAgIHNyY192ID0gc3JjX3kgKyAocHRyZGlmZl90KXNy Y19zdHJpZGUgKiBhYnNfc3JjX2hlaWdodDsKKysgICAgICAgIHNyY191ID0gc3JjX3YgKyBoYWxm c3RyaWRlICogKHB0cmRpZmZfdClhYnNfc3JjX2hlaWdodDsKKysgICAgICB9IGVsc2UgeworKyAg ICAgICAgc3JjX3UgPSBzcmNfeSArIChwdHJkaWZmX3Qpc3JjX3N0cmlkZSAqIGFic19zcmNfaGVp Z2h0OworKyAgICAgICAgc3JjX3YgPSBzcmNfdSArIGhhbGZzdHJpZGUgKiAocHRyZGlmZl90KWFi c19zcmNfaGVpZ2h0OworKyAgICAgIH0KKysgICAgICByID0gbGlieXV2OjpJNDIyVG9JNDIwKHNy Y195LCBzcmNfc3RyaWRlLCBzcmNfdSwgaGFsZnN0cmlkZSwgc3JjX3YsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBoYWxmc3RyaWRlLCBkc3RfeSwgZHN0X3N0cmlkZV95LCBkc3RfdSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9zdHJpZGVfdSwgZHN0X3YsIGRzdF9z dHJpZGVfdiwgZHN0X3dpZHRoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52X2Rz dF9oZWlnaHQpOworKyAgICAgIGJyZWFrOworKyAgICB9CisrICAgIGNhc2UgbGlieXV2OjpGT1VS Q0NfSTQ0NDoKKysgICAgY2FzZSBsaWJ5dXY6OkZPVVJDQ19ZVjI0OiB7CisrICAgICAgY29uc3Qg dWludDhfdCogc3JjX3kgPSBzYW1wbGU7CisrICAgICAgY29uc3QgdWludDhfdCogc3JjX3U7Cisr ICAgICAgY29uc3QgdWludDhfdCogc3JjX3Y7CisrICAgICAgaWYgKGZvcm1hdCA9PSBsaWJ5dXY6 OkZPVVJDQ19ZVjI0KSB7CisrICAgICAgICBzcmNfdiA9IHNyY195ICsgc3JjX3N0cmlkZSAqIChw dHJkaWZmX3QpYWJzX3NyY19oZWlnaHQ7CisrICAgICAgICBzcmNfdSA9IHNyY192ICsgc3JjX3N0 cmlkZSAqIChwdHJkaWZmX3QpYWJzX3NyY19oZWlnaHQ7CisrICAgICAgfSBlbHNlIHsKKysgICAg ICAgIHNyY191ID0gc3JjX3kgKyBzcmNfc3RyaWRlICogKHB0cmRpZmZfdClhYnNfc3JjX2hlaWdo dDsKKysgICAgICAgIHNyY192ID0gc3JjX3UgKyBzcmNfc3RyaWRlICogKHB0cmRpZmZfdClhYnNf c3JjX2hlaWdodDsKKysgICAgICB9CisrICAgICAgciA9IGxpYnl1djo6STQ0NFRvSTQyMChzcmNf eSwgc3JjX3N0cmlkZSwgc3JjX3UsIHNyY19zdHJpZGUsIHNyY192LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3JjX3N0cmlkZSwgZHN0X3ksIGRzdF9zdHJpZGVfeSwgZHN0X3UsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3Rfc3RyaWRlX3UsIGRzdF92LCBkc3Rfc3Ry aWRlX3YsIGRzdF93aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludl9kc3Rf aGVpZ2h0KTsKKysgICAgICBicmVhazsKKysgICAgfQorKyNpZmRlZiBIQVZFX0xJQllVVl9KUEVH CisrICAgIGNhc2UgbGlieXV2OjpGT1VSQ0NfTUpQRzoKKysgICAgICByID0gbGlieXV2OjpNSlBH VG9JNDIwKHNhbXBsZSwgc2FtcGxlX3NpemUsIGRzdF95LCBkc3Rfc3RyaWRlX3ksIGRzdF91LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X3N0cmlkZV91LCBkc3RfdiwgZHN0X3N0 cmlkZV92LCBzcmNfd2lkdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfc3Jj X2hlaWdodCwgZHN0X3dpZHRoLCBpbnZfZHN0X2hlaWdodCk7CisrICAgICAgYnJlYWs7CisrI2Vu ZGlmCisrICAgIGRlZmF1bHQ6CisrICAgICAgciA9IC0xOyAgLy8gdW5rbm93biBmb3VyY2MgLSBy ZXR1cm4gZmFpbHVyZSBjb2RlLgorKyAgfQorKworKyAgaWYgKG5lZWRfYnVmKSB7CisrICAgIGlm ICghcikgeworKyAgICAgIHIgPSBsaWJ5dXY6Okk0MjBSb3RhdGUoZHN0X3ksIGRzdF9zdHJpZGVf eSwgZHN0X3UsIGRzdF9zdHJpZGVfdSwgZHN0X3YsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkc3Rfc3RyaWRlX3YsIHRtcF95LCB0bXBfeV9zdHJpZGUsIHRtcF91LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdG1wX3Vfc3RyaWRlLCB0bXBfdiwgdG1wX3Zfc3RyaWRlLCBk c3Rfd2lkdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfZHN0X2hlaWdodCwg KGxpYnl1djo6Um90YXRpb25Nb2RlKXJvdGF0aW9uKTsKKysgICAgfQorKyAgICBmcmVlKHJvdGF0 ZV9idWZmZXIpOworKyAgfQorKworKyAgcmV0dXJuIHI7CisrfQorKworIHNjb3BlZF9yZWZwdHI8 STQyMEFCdWZmZXJJbnRlcmZhY2U+IFNjYWxlSTQyMEFCdWZmZXIoCisgICAgIGNvbnN0IEk0MjBB QnVmZmVySW50ZXJmYWNlJiBidWZmZXIsCisgICAgIGludCB0YXJnZXRfd2lkdGgsCitkaWZmIC0t Z2l0IGEvdGhpcmRfcGFydHkvbGlid2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS9saW51eC92 aWRlb19jYXB0dXJlX3BpcGV3aXJlLmNjIGIvdGhpcmRfcGFydHkvbGlid2VicnRjL21vZHVsZXMv dmlkZW9fY2FwdHVyZS9saW51eC92aWRlb19jYXB0dXJlX3BpcGV3aXJlLmNjCitpbmRleCA4MTE4 ZjVlMmIyYTY3Li41Y2E5NjEwOGU5ZGQ3IDEwMDY0NAorLS0tIGEvdGhpcmRfcGFydHkvbGlid2Vi cnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS9saW51eC92aWRlb19jYXB0dXJlX3BpcGV3aXJlLmNj CisrKysgYi90aGlyZF9wYXJ0eS9saWJ3ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL2xpbnV4 L3ZpZGVvX2NhcHR1cmVfcGlwZXdpcmUuY2MKK0BAIC0zNjMsMzYgKzM2Myw2IEBAIHZvaWQgVmlk ZW9DYXB0dXJlTW9kdWxlUGlwZVdpcmU6Ok9uRm9ybWF0Q2hhbmdlZChjb25zdCBzdHJ1Y3Qgc3Bh X3BvZCogZm9ybWF0KSB7CisgICBzcGFfcG9kX2J1aWxkZXJfcHVzaF9vYmplY3QoJmJ1aWxkZXIs ICZmcmFtZSwgU1BBX1RZUEVfT0JKRUNUX1BhcmFtQnVmZmVycywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTUEFfUEFSQU1fQnVmZmVycyk7CisgCistICBpZiAobWVkaWFfc3VidHlw ZSA9PSBTUEFfTUVESUFfU1VCVFlQRV9yYXcpIHsKKy0gICAgLy8gRW5mb3JjZSBzdHJpZGUgd2l0 aG91dCBwYWRkaW5nLgorLSAgICBzaXplX3Qgc3RyaWRlOworLSAgICBzd2l0Y2ggKGNvbmZpZ3Vy ZWRfY2FwYWJpbGl0eV8udmlkZW9UeXBlKSB7CistICAgICAgY2FzZSBWaWRlb1R5cGU6OmtJNDIw OgorLSAgICAgIGNhc2UgVmlkZW9UeXBlOjprTlYxMjoKKy0gICAgICAgIHN0cmlkZSA9IGNvbmZp Z3VyZWRfY2FwYWJpbGl0eV8ud2lkdGg7CistICAgICAgICBicmVhazsKKy0gICAgICBjYXNlIFZp ZGVvVHlwZTo6a1lVWTI6CistICAgICAgY2FzZSBWaWRlb1R5cGU6OmtVWVZZOgorLSAgICAgIGNh c2UgVmlkZW9UeXBlOjprUkdCNTY1OgorLSAgICAgICAgc3RyaWRlID0gY29uZmlndXJlZF9jYXBh YmlsaXR5Xy53aWR0aCAqIDI7CistICAgICAgICBicmVhazsKKy0gICAgICBjYXNlIFZpZGVvVHlw ZTo6a1JHQjI0OgorLSAgICAgIGNhc2UgVmlkZW9UeXBlOjprQkdSMjQ6CistICAgICAgICBzdHJp ZGUgPSBjb25maWd1cmVkX2NhcGFiaWxpdHlfLndpZHRoICogMzsKKy0gICAgICAgIGJyZWFrOwor LSAgICAgIGNhc2UgVmlkZW9UeXBlOjprQVJHQjoKKy0gICAgICBjYXNlIFZpZGVvVHlwZTo6a0FC R1I6CistICAgICAgY2FzZSBWaWRlb1R5cGU6OmtCR1JBOgorLSAgICAgICAgc3RyaWRlID0gY29u ZmlndXJlZF9jYXBhYmlsaXR5Xy53aWR0aCAqIDQ7CistICAgICAgICBicmVhazsKKy0gICAgICBk ZWZhdWx0OgorLSAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuc3VwcG9ydGVkIHZpZGVv IGZvcm1hdC4iOworLSAgICAgICAgcmV0dXJuOworLSAgICB9CistICAgIHNwYV9wb2RfYnVpbGRl cl9hZGQoJmJ1aWxkZXIsIFNQQV9QQVJBTV9CVUZGRVJTX3N0cmlkZSwgU1BBX1BPRF9JbnQoc3Ry aWRlKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAwKTsKKy0gIH0KKy0KKyAgIGNvbnN0IGlu dCBidWZmZXJfdHlwZXMgPQorICAgICAgICgxIDw8IFNQQV9EQVRBX0RtYUJ1ZikgfCAoMSA8PCBT UEFfREFUQV9NZW1GZCkgfCAoMSA8PCBTUEFfREFUQV9NZW1QdHIpOworICAgc3BhX3BvZF9idWls ZGVyX2FkZCgKK0BAIC00NzEsMTcgKzQ0MSw2IEBAIHZvaWQgVmlkZW9DYXB0dXJlTW9kdWxlUGlw ZVdpcmU6OlByb2Nlc3NCdWZmZXJzKCkgeworICAgICBoID0gc3RhdGljX2Nhc3Q8c3RydWN0IHNw YV9tZXRhX2hlYWRlcio+KAorICAgICAgICAgc3BhX2J1ZmZlcl9maW5kX21ldGFfZGF0YShzcGFC dWZmZXIsIFNQQV9NRVRBX0hlYWRlciwgc2l6ZW9mKCpoKSkpOworIAorLSAgICBzdHJ1Y3Qgc3Bh X21ldGFfdmlkZW90cmFuc2Zvcm0qIHZpZGVvdHJhbnNmb3JtOworLSAgICB2aWRlb3RyYW5zZm9y bSA9CistICAgICAgICBzdGF0aWNfY2FzdDxzdHJ1Y3Qgc3BhX21ldGFfdmlkZW90cmFuc2Zvcm0q PihzcGFfYnVmZmVyX2ZpbmRfbWV0YV9kYXRhKAorLSAgICAgICAgICAgIHNwYUJ1ZmZlciwgU1BB X01FVEFfVmlkZW9UcmFuc2Zvcm0sIHNpemVvZigqdmlkZW90cmFuc2Zvcm0pKSk7CistICAgIGlm ICh2aWRlb3RyYW5zZm9ybSkgeworLSAgICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24gPQorLSAg ICAgICAgICBWaWRlb3JvdGF0aW9uRnJvbVBpcGVXaXJlVHJhbnNmb3JtKHZpZGVvdHJhbnNmb3Jt LT50cmFuc2Zvcm0pOworLSAgICAgIFNldENhcHR1cmVSb3RhdGlvbihyb3RhdGlvbik7CistICAg ICAgU2V0QXBwbHlSb3RhdGlvbihyb3RhdGlvbiAhPSBrVmlkZW9Sb3RhdGlvbl8wKTsKKy0gICAg fQorLQorICAgICBpZiAoaC0+ZmxhZ3MgJiBTUEFfTUVUQV9IRUFERVJfRkxBR19DT1JSVVBURUQp IHsKKyAgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJEcm9wcGluZyBjb3JydXBlZCBmcmFtZS4i OworICAgICAgIHB3X3N0cmVhbV9xdWV1ZV9idWZmZXIoc3RyZWFtXywgYnVmZmVyKTsKK0BAIC00 OTYsNiArNDU1LDE5IEBAIHZvaWQgVmlkZW9DYXB0dXJlTW9kdWxlUGlwZVdpcmU6OlByb2Nlc3NC dWZmZXJzKCkgeworICAgICAgIGNvbnRpbnVlOworICAgICB9CisgCisrICAgIFNldFN0cmlkZShz cGFCdWZmZXItPmRhdGFzWzBdLmNodW5rLT5zdHJpZGUpOworKworKyAgICBzdHJ1Y3Qgc3BhX21l dGFfdmlkZW90cmFuc2Zvcm0qIHZpZGVvdHJhbnNmb3JtOworKyAgICB2aWRlb3RyYW5zZm9ybSA9 CisrICAgICAgICBzdGF0aWNfY2FzdDxzdHJ1Y3Qgc3BhX21ldGFfdmlkZW90cmFuc2Zvcm0qPihz cGFfYnVmZmVyX2ZpbmRfbWV0YV9kYXRhKAorKyAgICAgICAgICAgIHNwYUJ1ZmZlciwgU1BBX01F VEFfVmlkZW9UcmFuc2Zvcm0sIHNpemVvZigqdmlkZW90cmFuc2Zvcm0pKSk7CisrICAgIGlmICh2 aWRlb3RyYW5zZm9ybSkgeworKyAgICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24gPQorKyAgICAg ICAgICBWaWRlb3JvdGF0aW9uRnJvbVBpcGVXaXJlVHJhbnNmb3JtKHZpZGVvdHJhbnNmb3JtLT50 cmFuc2Zvcm0pOworKyAgICAgIFNldENhcHR1cmVSb3RhdGlvbihyb3RhdGlvbik7CisrICAgICAg U2V0QXBwbHlSb3RhdGlvbihyb3RhdGlvbiAhPSBrVmlkZW9Sb3RhdGlvbl8wKTsKKysgICAgfQor KworICAgICBpZiAoc3BhQnVmZmVyLT5kYXRhc1swXS50eXBlID09IFNQQV9EQVRBX0RtYUJ1ZiB8 fAorICAgICAgICAgc3BhQnVmZmVyLT5kYXRhc1swXS50eXBlID09IFNQQV9EQVRBX01lbUZkKSB7 CisgICAgICAgU2NvcGVkQnVmIGZyYW1lOworZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2xpYndl YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvdmlkZW9fY2FwdHVyZS5oIGIvdGhpcmRfcGFydHkv bGlid2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS92aWRlb19jYXB0dXJlLmgKK2luZGV4IGQ4 OGI2MzQ2NmViMjguLjU2M2YwMGMzZGE0NjIgMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0eS9saWJ3 ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL3ZpZGVvX2NhcHR1cmUuaAorKysrIGIvdGhpcmRf cGFydHkvbGlid2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS92aWRlb19jYXB0dXJlLmgKK0BA IC0xNTUsNiArMTU1LDkgQEAgY2xhc3MgVmlkZW9DYXB0dXJlTW9kdWxlIDogcHVibGljIFJlZkNv dW50SW50ZXJmYWNlIHsKKyAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSByb3RhdGlvbiBpcyBhcHBs aWVkIG9yIGxlZnQgcGVuZGluZy4KKyAgIHZpcnR1YWwgYm9vbCBHZXRBcHBseVJvdGF0aW9uKCkg PSAwOworIAorKyAgdmlydHVhbCB2b2lkIFNldFN0cmlkZShpbnQzMl90IHN0cmlkZSkge307Cisr ICB2aXJ0dWFsIGludDMyX3QgR2V0U3RyaWRlKCkgeyByZXR1cm4gMDsgfTsKKysKKyAgIC8vIE1v emlsbGE6IFRyYWNraW5nSWQgc2V0dGVyIGZvciB1c2UgaW4gcHJvZmlsZXIgbWFya2Vycy4KKyAg IHZpcnR1YWwgdm9pZCBTZXRUcmFja2luZ0lkKHVpbnQzMl90IGFUcmFja2luZ0lkUHJvY0lkKSB7 fQorIAorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2xpYndlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nh cHR1cmUvdmlkZW9fY2FwdHVyZV9pbXBsLmNjIGIvdGhpcmRfcGFydHkvbGlid2VicnRjL21vZHVs ZXMvdmlkZW9fY2FwdHVyZS92aWRlb19jYXB0dXJlX2ltcGwuY2MKK2luZGV4IGY0Zjk4MjdlZjU1 YWQuLmVkODNhYjZlNTdjNDggMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0eS9saWJ3ZWJydGMvbW9k dWxlcy92aWRlb19jYXB0dXJlL3ZpZGVvX2NhcHR1cmVfaW1wbC5jYworKysrIGIvdGhpcmRfcGFy dHkvbGlid2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS92aWRlb19jYXB0dXJlX2ltcGwuY2MK K0BAIC0zMSw3ICszMSw2IEBACisgI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWVfdXRpbHMuaCIKKyAj aW5jbHVkZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKKyAjaW5jbHVkZSAic3lzdGVtX3dyYXBw ZXJzL2luY2x1ZGUvY2xvY2suaCIKKy0jaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1 ZGUvbGlieXV2L2NvbnZlcnQuaCIKKyAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1 ZGUvbGlieXV2L3JvdGF0ZS5oIgorIAorIG5hbWVzcGFjZSB3ZWJydGMgeworQEAgLTk0LDYgKzkz LDcgQEAgVmlkZW9DYXB0dXJlSW1wbDo6VmlkZW9DYXB0dXJlSW1wbChDbG9jayogY2xvY2spCisg ICAgICAgX2xhc3RQcm9jZXNzRnJhbWVUaW1lTmFub3MoY2xvY2stPlRpbWVJbk1pY3Jvc2Vjb25k cygpICogMTAwMCksCisgICAgICAgX3JvdGF0ZUZyYW1lKGtWaWRlb1JvdGF0aW9uXzApLAorICAg ICAgIGFwcGx5X3JvdGF0aW9uXyhmYWxzZSksCisrICAgICAgc3RyaWRlXygwKSwKKyAgICAgICBj bG9ja18oY2xvY2spIHsKKyAgIF9yZXF1ZXN0ZWRDYXBhYmlsaXR5LndpZHRoID0ga0RlZmF1bHRX aWR0aDsKKyAgIF9yZXF1ZXN0ZWRDYXBhYmlsaXR5LmhlaWdodCA9IGtEZWZhdWx0SGVpZ2h0Owor QEAgLTIzMCwxMSArMjMwLDExIEBAIGludDMyX3QgVmlkZW9DYXB0dXJlSW1wbDo6SW5jb21pbmdG cmFtZSh1aW50OF90KiB2aWRlb0ZyYW1lLAorICAgICBzdGQ6OnN3YXAoZHN0X3dpZHRoLCBkc3Rf aGVpZ2h0KTsKKyAgIH0KKyAKKy0gIGNvbnN0IGludCBjb252ZXJzaW9uUmVzdWx0ID0gbGlieXV2 OjpDb252ZXJ0VG9JNDIwKAorKyAgY29uc3QgaW50IGNvbnZlcnNpb25SZXN1bHQgPSBDb252ZXJ0 VG9JNDIwKAorICAgICAgIHZpZGVvRnJhbWUsIHZpZGVvRnJhbWVMZW5ndGgsIGJ1ZmZlci0+TXV0 YWJsZURhdGFZKCksIGJ1ZmZlci0+U3RyaWRlWSgpLAorICAgICAgIGJ1ZmZlci0+TXV0YWJsZURh dGFVKCksIGJ1ZmZlci0+U3RyaWRlVSgpLCBidWZmZXItPk11dGFibGVEYXRhVigpLAorLSAgICAg IGJ1ZmZlci0+U3RyaWRlVigpLCAwLCAwLCAgLy8gTm8gQ3JvcHBpbmcKKy0gICAgICB3aWR0aCwg aGVpZ2h0LCBkc3Rfd2lkdGgsIGRzdF9oZWlnaHQsIHJvdGF0aW9uX21vZGUsCisrICAgICAgYnVm ZmVyLT5TdHJpZGVWKCksIHdpZHRoLCBoZWlnaHQsIHN0cmlkZV8sIGRzdF93aWR0aCwgZHN0X2hl aWdodCwKKysgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocm90YXRpb25fbW9kZSksCisgICAg ICAgQ29udmVydFZpZGVvVHlwZShmcmFtZUluZm8udmlkZW9UeXBlKSk7CisgICBpZiAoY29udmVy c2lvblJlc3VsdCAhPSAwKSB7CisgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8g Y29udmVydCBjYXB0dXJlIGZyYW1lIGZyb20gdHlwZSAiCitAQCAtMzAwLDYgKzMwMCwxNiBAQCBi b29sIFZpZGVvQ2FwdHVyZUltcGw6OkdldEFwcGx5Um90YXRpb24oKSB7CisgICByZXR1cm4gYXBw bHlfcm90YXRpb25fOworIH0KKyAKKyt2b2lkIFZpZGVvQ2FwdHVyZUltcGw6OlNldFN0cmlkZShp bnQzMl90IHN0cmlkZSkgeworKyAgTXV0ZXhMb2NrIGxvY2soJmFwaV9sb2NrXyk7CisrICBzdHJp ZGVfID0gc3RyaWRlOworK30KKysKKytpbnQzMl90IFZpZGVvQ2FwdHVyZUltcGw6OkdldFN0cmlk ZSgpIHsKKysgIE11dGV4TG9jayBsb2NrKCZhcGlfbG9ja18pOworKyAgcmV0dXJuIHN0cmlkZV87 CisrfQorKworIHZvaWQgVmlkZW9DYXB0dXJlSW1wbDo6VXBkYXRlRnJhbWVDb3VudCgpIHsKKyAg IFJUQ19DSEVDS19SVU5TX1NFUklBTElaRUQoJmNhcHR1cmVfY2hlY2tlcl8pOworIAorZGlmZiAt LWdpdCBhL3RoaXJkX3BhcnR5L2xpYndlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvdmlkZW9f Y2FwdHVyZV9pbXBsLmggYi90aGlyZF9wYXJ0eS9saWJ3ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0 dXJlL3ZpZGVvX2NhcHR1cmVfaW1wbC5oCitpbmRleCBlYzQwNGYwOThkNGEzLi4zYWQxMTQ5OGI5 NzY3IDEwMDY0NAorLS0tIGEvdGhpcmRfcGFydHkvbGlid2VicnRjL21vZHVsZXMvdmlkZW9fY2Fw dHVyZS92aWRlb19jYXB0dXJlX2ltcGwuaAorKysrIGIvdGhpcmRfcGFydHkvbGlid2VicnRjL21v ZHVsZXMvdmlkZW9fY2FwdHVyZS92aWRlb19jYXB0dXJlX2ltcGwuaAorQEAgLTcwLDYgKzcwLDgg QEAgY2xhc3MgUlRDX0VYUE9SVCBWaWRlb0NhcHR1cmVJbXBsIDogcHVibGljIFZpZGVvQ2FwdHVy ZU1vZHVsZSB7CisgICBpbnQzMl90IFNldENhcHR1cmVSb3RhdGlvbihWaWRlb1JvdGF0aW9uIHJv dGF0aW9uKSBvdmVycmlkZTsKKyAgIGJvb2wgU2V0QXBwbHlSb3RhdGlvbihib29sIGVuYWJsZSkg b3ZlcnJpZGU7CisgICBib29sIEdldEFwcGx5Um90YXRpb24oKSBvdmVycmlkZTsKKysgIHZvaWQg U2V0U3RyaWRlKGludDMyX3Qgc3RyaWRlKSBvdmVycmlkZTsKKysgIGludDMyX3QgR2V0U3RyaWRl KCkgb3ZlcnJpZGU7CisgCisgICBjb25zdCBjaGFyKiBDdXJyZW50RGV2aWNlTmFtZSgpIGNvbnN0 IG92ZXJyaWRlOworIAorQEAgLTEzMSw2ICsxMzMsMTAgQEAgY2xhc3MgUlRDX0VYUE9SVCBWaWRl b0NhcHR1cmVJbXBsIDogcHVibGljIFZpZGVvQ2FwdHVyZU1vZHVsZSB7CisgICAvLyBJbmRpY2F0 ZSB3aGV0aGVyIHJvdGF0aW9uIHNob3VsZCBiZSBhcHBsaWVkIGJlZm9yZSBkZWxpdmVyZWQgZXh0 ZXJuYWxseS4KKyAgIGJvb2wgYXBwbHlfcm90YXRpb25fIFJUQ19HVUFSREVEX0JZKGFwaV9sb2Nr Xyk7CisgCisrICAvLyBFeHBsaWNpdCBpbnB1dCBidWZmZXIgc3RyaWRlLiBMZWZ0IHRvIDAgaW1w bGllcyBpbXBsaWNpdCBzdHJpZGUgYmFzZWQgb24KKysgIC8vIGZvcm1hdCBhbmQgd2lkdGguCisr ICBpbnQzMl90IHN0cmlkZV8gUlRDX0dVQVJERURfQlkoYXBpX2xvY2tfKTsKKysKKyAgIENsb2Nr KiBjb25zdCBjbG9ja187CisgfTsKKyB9ICAvLyBuYW1lc3BhY2UgdmlkZW9jYXB0dXJlbW9kdWxl Cg==