From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 26430 invoked from network); 14 Nov 2023 13:43:02 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 14 Nov 2023 13:43:02 -0000 Content-Type: multipart/mixed; boundary="===============6858005599439631886==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 14 Nov 2023 14:43:01 +0100 List-Id: Message-ID: <20231114134301.o8FT46iyZuHlZrT_-M3Ifsk7J_zv98ZO4R86Z4NCJLE@z> GitHub notification mails are now in MIME to allow UTF8. --===============6858005599439631886== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDYpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQp+fkNvbW1pdHMgYXJlICdkaXJ0eScgcmln aHQgbm93LCBydW5uaW5nIHdpdGggW2dzdHJlYW1lciAxLjIyLjEgdXBkYXRlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSBhbmQgW0ludGVs IE9wZW5DTF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQzMDg0KS4gVGhpcyB3aWxsIGFsc28gbWFrZSBbaW50ZWwgcGFja2FnZXMgcHJdKGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgb2Jzb2xldGUu fn4gKHNlZSBSZXF1aXJlbWVudHMgYmVsb3cpDQoNCk1haW50YWluZXIgZm9yIHByZXZpb3VzIGZm bXBlZyg0KSB3YXMgb3JwaGFuZWQsIEkgY2FuIHB1dCBteSBuYW1lIGluIHRoZXJlIGlmIHRoYXQg bWF0dGVycywgdGhvdWdoIEkgZG9uJ3QgZXhhY3RseSBzZWUgbXlzZWxmIGtlZXBpbmcgdXAgb24g ZmZtcGVnLg0KDQpUaGlzIHVwZGF0ZXMgUVQ1IHdoaWNoIGxvb2tzIGxpa2UgaXQgaXMgdXN1YWxs eSBob3N0ZWQgYnkgSm9obm55LiBOb3Qgc3VyZSBpZiB0aGVyZSdzIGFueSByZWFzb24gdG8gc3Rh eSB0aGVyZSBvciB0aGVzZSBzb3VyY2VzIGFyZSBmaW5lLg0KDQojIyMjIyBTVElMTCBGRk1QRUc0 DQoNClRoZXNlIGFyZSBhIG1peCBvZiBlbXVsYXRvcnMsIGdhbWVzIGFuZC9vciBvbGRlciBwYWNr YWdlcy4NCg0KLSBhdHRyYWN0IChtdWx0aXBsZSBwYXRjaGVzIGluIG1hc3RlcikNCi0gYXVkYWNp dHkgKGh0dHBzOi8vZ2l0aHViLmNvbS9hdWRhY2l0eS9hdWRhY2l0eS9pc3N1ZXMvMjMwNSBhbmQg aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wb3J0bWVkaWEvd2lraS9wb3J0c21mLyBpcyAnYmV0 YScpDQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0K LSBrb2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnICht bHQpfn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQot IHNzcg0KLSB+fnNwZWstYWx0ZXJuYXRpdmV+fiAocmVwbGFjZSB3aXRoIHNwZWsteCkNCi0gcHBz c3BwDQotIG9saXZlDQotIG1vYw0KLSBtZWRpYXN0cmVhbWVyDQotIGxpYmV4dHJhY3Rvcg0KLSBp ZGpjDQotIGhlZGdld2Fycw0KLSB+fmZmbXBlZ3RodW1ibmFpbGVyfn4gKHBhdGNoZXMgZm9yIG1v dmllZGVjb2Rlci54eHggZmlsZXMpDQotIH5+ZmZtcGVndGh1bWJzfn4gKGxhdGVzdCBjb21waWxl cykNCi0gZGVhZGJlZWYNCi0gb214cGxheWVyDQotIHF0YXYgKGZvcmsgaGFzIGZmbXBlZyA1IHBh dGNoIC0gaHR0cHM6Ly9naXRodWIuY29tL2NtZ3VvL1F0QVYpDQotIGB2bGNgICh2bGM0IHdpbGwg c3VwcG9ydCBmZm1wZWc1LCB0aGVyZSdzIGEgcGF0Y2ggdG8gYnVpbGQgMy54IHdpdGggZmZtcGVn NSBidXQgaXQgd2lsbCBsYWNrIHZhYXBpKQ0KLSBgb3NnYCAoT3BlblNjZW5lR3JhcGggcGx1cyBg eGluZS1saWJgKQ0KDQoNCiMjIyMjIEhBVkUgTk9UIEJVSUxUIFlFVA0KDQotIG9teHBsYXllciAo cnBpIG9ubHk/IGZmbXBlZzQpDQotIGtvZGkgKGJpZywgYnV0IGZmbXBlZzQpDQoNCg0KIyMjIyMg VVBEQVRFRCAoZm9yIGZmbXBlZzYpDQoNCi0gfn5ibGVuZGVyOiB1cGRhdGUgdG8gMy41LjF+fiB+ fndpbGwgYmUgcmV2YnVtcCB3aXRofn4gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQzOTkyDQotIHVucGFwZXI6IHVwZGF0ZSB0byA3LjAuMC4NCi0gZ3V2 Y3ZpZXc6IHVwZGF0ZSB0byAyLjAuOC4NCi0gcXQ1OiB1cGRhdGUgdG8gNS4xNS44DQotIHF0NS13 ZWJlbmdpbmU6IHVwZGF0ZSB0byA1LjE4LjEzDQotIHNoaWJva2VuMjogcmV2YnVtcCBmb3IgcXQ1 LjE1LjggKHBhdGNoKQ0KLSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0byA1LjE1LjggKHBhdGNo KQ0KLSBOZXcgcGFja2FnZTogc3BleC14IHJlcGxhY2VzIHNwZWstYWx0ZXJuYXRpdmUgZm9yIGZm bXBlZy02LjANCg0KDQojIyMjIyBSZXF1aXJlbWVudHMNCg0KLSB+fltnc3RyZWFtZXIgMS4yMi4y XShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEp fn4gLSBhIGZldyBwYWNrYWdlcyB1c2UgZmZtcGVnLWRldmVsIGFuZCByZXF1aXJlIGEgcmV2YnVt cA0KDQotIFtJbnRlbCBQYWNrYWdlc10oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQxMTMyKSAtIGZmbXBlZzQgdXNlcyBkaWZmZXJlbnQgbGlicmFyaWVz IHRoYW4gNiAobGlibWZ4IC8gSW50ZWwtTWVkaWFTREsgdnMgb25seSBvbmVWUEwgdGhhdCBJbnRl bCBpcyBtb3ZpbmcgdG8pLCBib3RoIGFyZSBpbmNsdWRlZCBoZXJlDQoNCi0gfn5bc2hvdGN1dCAy My4wNS4xNF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQ0MjYwKX5+DQoNCi0gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdl cy9wdWxsLzQ0NzgxIHdpbGwgcmVtb3ZlIGZyb20gdGhpcyBQUgoKQSBwYXRjaCBmaWxlIGZyb20g aHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQzNzYxLnBh dGNoIGlzIGF0dGFjaGVk --===============6858005599439631886== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSA2ZDcwMzAzY2NmMTg4MmFhMzA3Y2RkYWE4YmJiYjkyNDliZDEwY2RiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4s IDE1IE9jdCAyMDIzIDIxOjE2OjU2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuMS4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjYgKysrKystLS0KIHNyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2 ZWMucGF0Y2ggICAgICAgICAgICB8IDYwIC0tLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9wYXRjaGVz L2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoICAgICB8IDE4IC0tLS0tLQogLi4uaC1saWJh dmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmIHwgNDAgLS0tLS0tLS0tLS0tLQog Li4uL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCAgIHwgMjggLS0tLS0t LS0tCiBzcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgfCAzOCAr KysrKystLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMTczIGRlbGV0 aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMu cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1dGVs LWZsb2F0aW5nLXBvaW50LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcv cGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2Et cmVhZGVvbi12YWFwaS1idWcucGF0Y2gKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29t bW9uL3NobGlicwppbmRleCBlZGUyMGVlMTRhNjgzLi5hNzI4YzBlYWFiNTdmIDEwMDY0NAotLS0g YS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTM4NSwxNSArMzg1LDIzIEBA IGxpYmlkM3RhZy5zby4wIGxpYmlkM3RhZy0wLjE1LjFiXzEKIGxpYmdpZi5zby43IGdpZmxpYi01 LjEuMF8xCiBsaWJJbWxpYjIuc28uMSBpbWxpYjItMS40LjJfMQogbGlibXAzbGFtZS5zby4wIGxh bWUtMy45OC4yXzEKLWxpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlLTQuMF8xCi1saWJhdmZv cm1hdC5zby41OCBsaWJhdmZvcm1hdC00LjBfMQotbGlic3dzY2FsZS5zby41IGxpYnN3c2NhbGUt NC4wXzEKLWxpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlLTQuMF8xCi1saWJhdnJlc2Ft cGxlLnNvLjQgbGliYXZyZXNhbXBsZS00LjBfMQotbGlicG9zdHByb2Muc28uNTUgbGlicG9zdHBy b2MtNC4wXzEKLWxpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYy00LjBfMQotbGliYXZ1dGlsLnNv LjU2IGxpYmF2dXRpbC00LjBfMQotbGliYXZmaWx0ZXIuc28uNyBsaWJhdmZpbHRlci00LjBfMQor bGliYXZkZXZpY2Uuc28uNjAgbGliYXZkZXZpY2UtNi4wXzEKK2xpYmF2Zm9ybWF0LnNvLjYwIGxp YmF2Zm9ybWF0LTYuMF8xCitsaWJzd3NjYWxlLnNvLjcgbGlic3dzY2FsZS02LjBfMQorbGlic3dy ZXNhbXBsZS5zby40IGxpYnN3cmVzYW1wbGUtNi4wXzEKK2xpYnBvc3Rwcm9jLnNvLjU3IGxpYnBv c3Rwcm9jLTYuMF8xCitsaWJhdmNvZGVjLnNvLjYwIGxpYmF2Y29kZWMtNi4wXzEKK2xpYmF2dXRp bC5zby41OCBsaWJhdnV0aWwtNi4wXzEKK2xpYmF2ZmlsdGVyLnNvLjkgbGliYXZmaWx0ZXItNi4w XzEKK2xpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlNC00LjBfMQorbGliYXZmb3JtYXQuc28u NTggbGliYXZmb3JtYXQ0LTQuMF8xCitsaWJzd3NjYWxlLnNvLjUgbGlic3dzY2FsZTQtNC4wXzEK K2xpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlNC00LjBfMQorbGliYXZyZXNhbXBsZS5z by40IGxpYmF2cmVzYW1wbGU0LTQuMF8xCitsaWJwb3N0cHJvYy5zby41NSBsaWJwb3N0cHJvYzQt NC4wXzEKK2xpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYzQtNC4wXzEKK2xpYmF2dXRpbC5zby41 NiBsaWJhdnV0aWw0LTQuMF8xCitsaWJhdmZpbHRlci5zby43IGxpYmF2ZmlsdGVyNC00LjBfMQog bGliU0RMLTEuMi5zby4wIFNETC0xLjIuMTRfMQogbGliU0RMX2ltYWdlLTEuMi5zby4wIFNETF9p bWFnZS0xLjIuMTBfMQogbGlieDI2NC5zby4xNTcgeDI2NC0yMDE5MDUwNy4yMjQ1XzEKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNwa2dzL2ZmbXBl Zy9maWxlcy9hbHRpdmVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzU3 MjAwNDYzMzIwLi4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2 ZWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1yZXZlcnQgc29tZSBhbHRp dmVjIHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRsZSoKLQotcTY2OiAi V2Ugc2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZGbXBlZ0AzYTU1N2M1 IGJ1dCBvbmx5Ci1jb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBwYzY0bGUqICh0aGUg bmV3IGNvZGUgaXMgdmFsaWQgZm9yCi1QT1dFUjggVlNYIHdoaWNoIExFIHRhcmdldHMgYXMgYSBi YXNlbGluZSBidXQgbm90IEJFKSIKLQotCi1UaGlzIHJldmVydHMgY29tbWl0IDNhNTU3YzVkODhi N2IxNWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCi0tLS0KLSBsaWJzd3NjYWxlL3BwYy95dXYy cmdiX2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFu Z2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGli c3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3BwYy95dXYycmdiX2Fs dGl2ZWMuYwotaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQKLS0tLSBhL2xpYnN3 c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCi0rKysgYi9saWJzd3NjYWxlL3BwYy95dXYycmdi X2FsdGl2ZWMuYwotQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5h bWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCi0g ICAgIHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBSLCBHLCBC OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICp5MWl2UCwg KnkyaXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAotKyAgICB2ZWN0b3IgdW5z aWduZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hv cnQgbENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9ZOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsQ1JW ICAgICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAt MzM1LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3c0NvbnRleHQg KmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAgICAgICAgdmVjX2Rz dHN0KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikgPDwgMTYpKSwgMSk7 ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBmb3IgKGogPSAwOyBq IDwgdyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotLSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MWl2UCA9IChjb25zdCB2 ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAg ICAgICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgeTJpOyAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHVpdlAgID0gKGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAg ICB2aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWdu X3Blcm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgdmVj X3Blcm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgXAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB5MSA9IHZlY194bCgwLCB5Mmkp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAg ICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1bnNpZ25lZCBjaGFy KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAg ICAgICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAg ICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgIHUgPSAodmVj dG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2ln bmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwgYWxpZ25fcGVybSk7 ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAg ICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB2aSk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB2ID0g KHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBdLCB2aXZQWzFdLCBh bGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICB2ZWNfc3ViKHUs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLS0gCi0y LjI3LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1mbG9h dGluZy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRp bmctcG9pbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTUxNzhjNzRm MGYuLjAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1m bG9hdGluZy1wb2ludC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS0tLSBh L2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0xMC0yNiAyMTowMzowMy4wMDAwMDAwMDAg KzAyMDAKLSsrKyBiL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0xMS0yMSAxMTowNjo0 OS42MDIyODQ0MjIgKzAxMDAKLUBAIC0zOSw2ICszOSwxNSBAQAotICNlbmRpZgotICNpbmNsdWRl IDxmZW52Lmg+Ci0gCi0rI2lmIChGRV9BTExfRVhDRVBUID09IDApCi0rLyogRS5nLiBBUk0gc29m dCBmbG9hdCBkb2VzIG5vdCBkZWZpbmUgdGhlc2UgKi8KLSsjZGVmaW5lIEZFX0lOVkFMSUQgICAg MAotKyNkZWZpbmUgRkVfRElWQllaRVJPICAwCi0rI2RlZmluZSBGRV9PVkVSRkxPVyAgIDAKLSsj ZGVmaW5lIEZFX1VOREVSRkxPVyAgMAotKyNkZWZpbmUgRkVfSU5FWEFDVCAgICAwCi0rI2VuZGlm Ci0rCi0gI2lmIENPTkZJR19MSUJGT05UQ09ORklHCi0gI2luY2x1ZGUgPGZvbnRjb25maWcvZm9u dGNvbmZpZy5oPgotICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9w YXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmIGIvc3JjcGtncy9m Zm1wZWcvcGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5k aWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTk0OGY3YThhMmRmLi4wMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJz dnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAK LSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBGcm9tIDAzMWYx NTYxY2QyODY1OTZjZGIzNzRkYTMyZjhhYTgxNmNlM2IxMzUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi0jIEZyb206IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIuZGVnYXdhQGludGVs LmNvbT4KLSMgRGF0ZTogVGh1LCAyMCBPY3QgMjAyMiAyMjo1NToyNyAtMDUwMAotIyBTdWJqZWN0 OiBbUEFUQ0hdIGF2Y29kZWMvbGlic3Z0YXYxOiByZW1vdmUgY29tcHJlc3NlZF90ZW5fYml0X2Zv cm1hdCBhbmQgc2ltcGxpZnkgYWxsb2NfYnVmZmVyCi0jCi0jIGNvbXByZXNzZWRfdGVuX2JpdF9m b3JtYXQgaGFzIGJlZW4gZGVwcmVjYXRlZCB1cHN0cmVhbSBhbmQgaGFzIG5vIGVmZmVjdAotIyBh bmQgY2FuIGJlIHJlbW92ZWQuIFBsdXMsIHRlY2huaWNhbGx5IGl0IHdhcyBuZXZlciB1c2VkIGlu IHRoZSBmaXJzdCBwbGFjZQotIyBzaW5jZSBpdCB3b3VsZCByZXF1aXJlIHRoZSBhcHAgKGZmbXBl ZykgdG8gc2V0IGl0IGFuZCBkbyBhZGRpdGlvbmFsCi0jIHByb2Nlc3Npbmcgb2YgdGhlIGlucHV0 IGZyYW1lcy4KLSMKLSMgQWxzbyBzaW1wbGlmeSBhbGxvY19idWZmZXIgYnkgcmVtb3ZpbmcgY2Fs Y3VsYXRpb25zIHJlbGF0aW5nIHRvIHRoZSBub24tZXhpc3RhbnQgcHJvY2Vzc2luZy4KLSMKLSMg U2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgRGVnYXdhIDxjaHJpc3RvcGhlci5kZWdhd2FAaW50 ZWwuY29tPgotIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g YS9saWJhdmNvZGVjL2xpYnN2dGF2MS5jCi0rKysgYi9saWJhdmNvZGVjL2xpYnN2dGF2MS5jCi1A QCAtMTI0LDE2ICsxMjQsMTIgQEAgc3RhdGljIGludCBzdnRfcHJpbnRfZXJyb3Iodm9pZCAqbG9n X2N0eCwgRWJFcnJvclR5cGUgZXJyLAotIAotIHN0YXRpYyBpbnQgYWxsb2NfYnVmZmVyKEViU3Z0 QXYxRW5jQ29uZmlndXJhdGlvbiAqY29uZmlnLCBTdnRDb250ZXh0ICpzdnRfZW5jKQotIHsKLS0g ICAgY29uc3QgaW50ICAgIHBhY2tfbW9kZV8xMGJpdCA9Ci0tICAgICAgICAoY29uZmlnLT5lbmNv ZGVyX2JpdF9kZXB0aCA+IDgpICYmIChjb25maWctPmNvbXByZXNzZWRfdGVuX2JpdF9mb3JtYXQg PT0gMCkgPyAxIDogMDsKLS0gICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6ZV84Yml0ICA9Ci0tICAg ICAgICBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdodCAqICgxIDw8 IHBhY2tfbW9kZV8xMGJpdCk7Ci0tICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfMTBiaXQgPQot LSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rlcl9iaXRfZGVwdGggPiA4ICYmIHBhY2tfbW9kZV8xMGJp dCA9PSAwKSA/IGx1bWFfc2l6ZV84Yml0IDogMDsKLSsgICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6 ZSA9IGNvbmZpZy0+c291cmNlX3dpZHRoICogY29uZmlnLT5zb3VyY2VfaGVpZ2h0ICoKLSsgICAg ICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCA/IDIgOiAxKTsKLSAKLSAgICAgRWJT dnRJT0Zvcm1hdCAqaW5fZGF0YTsKLSAKLS0gICAgc3Z0X2VuYy0+cmF3X3NpemUgPSAobHVtYV9z aXplXzhiaXQgKyBsdW1hX3NpemVfMTBiaXQpICogMyAvIDI7Ci0rICAgIHN2dF9lbmMtPnJhd19z aXplID0gbHVtYV9zaXplICogMyAvIDI7Ci0gCi0gICAgIC8vIGFsbG9jYXRlIGJ1ZmZlciBmb3Ig aW4gYW5kIG91dAotICAgICBzdnRfZW5jLT5pbl9idWYgICAgICAgICAgID0gYXZfbWFsbG9jeihz aXplb2YoKnN2dF9lbmMtPmluX2J1ZikpOwotLS0gCi1HaXRMYWIKLQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0 Y2ggYi9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBp LWJ1Zy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBlM2Y2OGE0MTViOC4u MDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVz YS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAK LUZyb20gODExZDI5MDg0NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGlu ZS5kZT4KLURhdGU6IFNhdCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKLVN1YmplY3Q6IFtQ QVRDSF0gYXZjb2RlYy92YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNl cwotCi1UaGlzIGZpeGVzIC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MzY4LgotSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0 Y2hpbmcgaDI2NCBjaGFubmVscyByZWNlaXZlZCB2aWEgRFZCLVguCi1Db3JyZXNwb25kaW5nIGtv ZGkgYnVnOiBodHRwczovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAotLS0tCi0g bGliYXZjb2RlYy92YWFwaV9oMjY0LmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5z ZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJh dmNvZGVjL3ZhYXBpX2gyNjQuYwotaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0 NAotLS0tIGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKLSsrKyBiL2xpYmF2Y29kZWMvdmFhcGlf aDI2NC5jCi1AQCAtMzE3LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2Zy YW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAm aC0+c2xpY2VfY3R4WzBdOwotICAgICBpbnQgcmV0OwotIAotKyAgICBpZiAocGljLT5uYl9zbGlj ZXMgPT0gMCkgewotKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAg IGdvdG8gZmluaXNoOwotKyAgICB9Ci0rCi0gICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1 ZShhdmN0eCwgcGljKTsKLSAgICAgaWYgKHJldCA8IDApCi0gICAgICAgICBnb3RvIGZpbmlzaDsK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWcvdGVt cGxhdGUKaW5kZXggNTk2OGEwOWIxZjEyZC4uNzUxYzI0MTI2YzIyZCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9mZm1wZWcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUKQEAgLTEs MTUgKzEsMTUgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZycKICMgYXVkYWNpdHkgYWxz byBuZWVkcyB0byBiZSBidW1wZWQgd2hlbiBhIG5ldyBmZm1wZWcgdmVyc2lvbiBidW1wcyBsaWJh dmZvcm1hdCdzIHNvbmFtZSEKIHBrZ25hbWU9ZmZtcGVnCi12ZXJzaW9uPTQuNC40Ci1yZXZpc2lv bj01Cit2ZXJzaW9uPTYuMC4xCityZXZpc2lvbj0xCiBzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5j b2RpbmcgYW5kIHN0cmVhbWluZyBzb2Z0d2FyZSIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBo YW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9 Imh0dHBzOi8vd3d3LmZmbXBlZy5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vcmF3LmdpdGh1YnVz ZXJjb250ZW50LmNvbS9GRm1wZWcvRkZtcGVnL21hc3Rlci9DaGFuZ2Vsb2ciCiBkaXN0ZmlsZXM9 Imh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvZmZtcGVnLSR7dmVyc2lvbn0udGFyLnh6 IgotY2hlY2tzdW09ZTgwYjM4MGQ1OTVjODA5MDYwZjY2Zjk2YTVkODQ5NTExZWY0YTc2YTI2Yjc2 ZWFjZjU3NzhiOTRjMzU3MDMwOQorY2hlY2tzdW09OWIxNmI4NzMxZDc4ZTU5NmI0YmUwZDcyMDQy OGNhNDJkZjY0MmJiMmQ3ODM0Mjg4MWZmN2Y1YmMyOWZjOTYyMwogCiBob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWcgcGVybCIKIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZy ZWV0eXBlLWRldmVsIGFsc2EtbGliLWRldmVsIGxpYlhmaXhlcy1kZXZlbApAQCAtMjYsMTIgKzI2 LDEzIEBAIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZyZWV0eXBlLWRldmVs IGFsc2EtbGliLWRldmVsIGxpYlhmaXhlcy1kZXZlCiAgJCh2b3B0X2lmIHdlYnAgbGlid2VicC1k ZXZlbCkgJCh2b3B0X2lmIHNvZmEgbGlibXlzb2ZhLWRldmVsKQogICQodm9wdF9pZiBkcm0gbGli ZHJtLWRldmVsKSAkKHZvcHRfaWYgc3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwpCiAgJCh2b3B0X2lm IHNydCBzcnQtZGV2ZWwpICQodm9wdF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwpCi0gJCh2b3B0X2lm IHZ1bGthbiAndnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycycpCisgJCh2b3B0X2lmIHZ1bGth biAndnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycyBWdWxrYW4tVG9vbHMgVnVsa2FuLVZhbGlk YXRpb25MYXllcnMnKQorICQodm9wdF9pZiBvbmV2cGwgJ29uZXZwbCBvbmV2cGwtZGV2ZWwnKQog ICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAkKHZvcHRfaWYgbnZkZWMgbnYtY29k ZWMtaGVhZGVycykiCiBkZXBlbmRzPSJmZnBsYXk+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAK IGJ1aWxkX29wdGlvbnM9IngyNjUgdjRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBhb20gbnZl bmMgc25kaW8gcHVsc2VhdWRpbwotIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0 YXYxIHNydCByaXN0IG52ZGVjIgorIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0 YXYxIHNydCByaXN0IG52ZGVjIG9uZXZwbCIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2NSB2 NGwyIHZweCBhb20gc25kaW8gcHVsc2VhdWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0IHJp c3QiCiBkZXNjX29wdGlvbl9zcnQ9IkVuYWJsZSBzdXBwb3J0IGZvciBTUlQgKFNlY3VyZSwgUmVs aWFibGUsIFRyYW5zcG9ydCkiCiBkZXNjX29wdGlvbl9yaXN0PSJFbmFibGUgc3VwcG9ydCBmb3Ig UklTVCAoUmVsaWFibGUgSW50ZXJuZXQgU3RyZWFtIFRyYW5zcG9ydCkiCkBAIC0zOSw5ICs0MCwx MyBAQCBkZXNjX29wdGlvbl9zb2ZhPSJFbmFibGUgc3VwcG9ydCBmb3IgQUVTIFNPRkEiCiBkZXNj X29wdGlvbl93ZWJwPSJFbmFibGUgc3VwcG9ydCBmb3IgV2ViUCIKIAogY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCi0JaTY4Nip8eDg2XzY0KikKLQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5h c20iCisJaTY4NiopCiAJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBudmVu YyBudmRlYyIKKwkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJCTs7CisJeDg2XzY0KikKKwkJ aG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFw aSB2ZHBhdSBudmVuYyBudmRlYyBvbmV2cGwiCiAJCTs7CiAJcHBjNjQqKSBidWlsZF9vcHRpb25z X2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUiOzsKIAltaXBzKikgQ0ZMQUdTPSItbW5hbj1sZWdhY3ki OzsKQEAgLTExNSwxOCArMTIwLDE5IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJJCh2b3B0X2VuYWJs ZSB4MjY1IGxpYngyNjUpIFwKIAkJJCh2b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKIAkJJCh2 b3B0X2VuYWJsZSBhb20gbGliYW9tKSAkKHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxl IHZkcGF1KSBcCi0JCS0tZW5hYmxlLWxpYmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJs ZS1saWJ2aWRzdGFiIFwKKwkJLS1lbmFibGUtbGliYnMyYiAtLWVuYWJsZS1saWJ2aWRzdGFiIFwK IAkJJCh2b3B0X2VuYWJsZSBkYXYxZCBsaWJkYXYxZCkgXAogCQkkKHZvcHRfZW5hYmxlIHppbWcg bGliemltZykgXAogCQkkKHZvcHRfZW5hYmxlIHdlYnAgbGlid2VicCkgXAogCQkkKHZvcHRfZW5h YmxlIHNvZmEgbGlibXlzb2ZhKSBcCiAJCSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9w dF9lbmFibGUgb25ldnBsIGxpYnZwbCkgXAogCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwK IAkJJCh2b3B0X2VuYWJsZSBzdnRhdjEgbGlic3Z0YXYxKSBcCiAJCSQodm9wdF9lbmFibGUgc3J0 IGxpYnNydCkgXAogCQkkKHZvcHRfZW5hYmxlIHJpc3QgbGlicmlzdCkgXAotCQkkKHZvcHRfaWYg bnZlbmMgJy0tZW5hYmxlLW52ZW5jJykgXAotCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52 ZGVjJykKKwkJJCh2b3B0X2VuYWJsZSBudmVuYyBudmVuYykgXAorCQkkKHZvcHRfZW5hYmxlIG52 ZGVjIG52ZGVjKQogfQogCiBkb19idWlsZCgpIHsKQEAgLTE1MywxMCArMTU5LDggQEAgbGliYXZk ZXZpY2VfcGFja2FnZSgpIHsKIH0KIAogbGliYXZyZXNhbXBsZV9wYWNrYWdlKCkgewotCXNob3J0 X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNhbXBsaW5nIGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7 Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmF2cmVzYW1wbGUuc28uKiIKLQl9CisJc2hvcnRfZGVzYz0i UGFja2FnZSBkZXByZWNhdGVkLCByZW1vdmFsIG5lZWRlZCIKKwlidWlsZF9zdHlsZT1tZXRhCiB9 CiAKIGxpYmF2Zm9ybWF0X3BhY2thZ2UoKSB7CkBAIC0yMTAsMTUgKzIxNCwxMyBAQCBmZm1wZWct ZGV2ZWxfcGFja2FnZSgpIHsKIAkJbGliYXZmaWx0ZXI+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0K IAkJbGlicG9zdHByb2M+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJbGlic3dzY2FsZT49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufQotCQlsaWJzd3Jlc2FtcGxlPj0ke3ZlcnNpb259XyR7cmV2aXNp b259Ci0JCWxpYmF2cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJCWxpYnN3cmVz YW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAJc2hvcnRfZGVzYys9IiAtIGRldmVsb3Bt ZW50IGZpbGVzIgotCisJY29uZmxpY3RzPSJmZm1wZWc0LWRldmVsIgogCWlmIFsgIiRYQlBTX1RB UkdFVF9NQUNISU5FIiA9ICJpNjg2IiBdOyB0aGVuCiAJCSMgL3Vzci9iaW4vc3RyaXA6IGVycm9y OiB0aGUgaW5wdXQgZmlsZSAnL2Rlc3RkaXIvL2ZmbXBlZy1kZXZlbC00LjQuNC91c3IvbGliL2xp YmF2ZmlsdGVyLmEodmZfYXRhZGVub2lzZS5vKScgaGFzIG5vIHNlY3Rpb25zCiAJCW5vc3RyaXBf ZmlsZXM9Ii91c3IvbGliL2xpYmF2ZmlsdGVyLmEiCiAJZmkKLQogCXBrZ19pbnN0YWxsKCkgewog CQl2bW92ZSB1c3IvaW5jbHVkZQogCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZwoKRnJvbSBmZWE4 NzVlOGE5ZjViYTNkZjU0ZmZiZGNmYmFhODg2Mzc2MWIyZGRiIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE1IE9jdCAy MDIzIDIxOjE4OjE0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDIvMTE1XSBvcGVuc2hvdDogcmV2 YnVtcCBmb3IgZmZtcGVnNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0 ZQppbmRleCA4ZjQ3ODUxZWVmMzU0Li5hZmZiNjUyYTlkNTAwIDEwMDY0NAotLS0gYS9zcmNwa2dz L29wZW5zaG90L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuc2hvdCcKIHBrZ25hbWU9b3BlbnNo b3QKIHZlcnNpb249My4wLjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPXB5 dGhvbjMtbW9kdWxlCiBob3N0bWFrZWRlcGVuZHM9InB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xz IgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBweXRob24zLVB5UXQ1IgoKRnJvbSA1YmUyNmM2 ZDUyYzI3NzllMTYxYWIxZTZkMWM3YzE0ODE4ZTk2MGI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE1IE9jdCAyMDIz IDIxOjE4OjM2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDMvMTE1XSBzdW1vOiByZXZidW1wIGZv ciBmZm1wZWc2LjAKCi0tLQogc3JjcGtncy9zdW1vL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9zdW1vL3RlbXBsYXRlIGIvc3JjcGtncy9zdW1vL3RlbXBsYXRlCmluZGV4IGEzZmUxMzRhYTVh Y2MuLmE3MzBhZmE5ZmFmYTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdzdW1vJwogcGtnbmFtZT1zdW1vCiB2ZXJzaW9uPTEuMTIuMAotcmV2aXNpb249NgorcmV2 aXNpb249NwogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0ibGliZ2RhbC10b29s cyBwa2ctY29uZmlnIHN3aWcgcHl0aG9uMy1zZXR1cHRvb2xzIgogbWFrZWRlcGVuZHM9InB5dGhv bjMtZGV2ZWwgZmZtcGVnLWRldmVsIGZveC1kZXZlbCBnbDJwcy1kZXZlbCBsaWJnZGFsLWRldmVs CgpGcm9tIDk4MzY4NjUyYzBkNmM0Njk1ODI1Y2ZmMTYwODIzYWI1YTU4OGVhZTMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMTk6NTY6MjIgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNC8xMTVdIE5l dyBwYWNrYWdlOiBmZm1wZWc0LTQuNC40LgoKLS0tCiBzcmNwa2dzL2ZmbXBlZzQtZGV2ZWwgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2 ZWMucGF0Y2ggICAgICAgICAgIHwgIDYwICsrKysrCiAuLi4vcGF0Y2hlcy9hcm12NXRlbC1mbG9h dGluZy1wb2ludC5wYXRjaCAgICAgfCAgMTggKysKIC4uLmgtbGliYXZjb2RlYy1saWJzdnRhdjEt dGVuX2JpdF9mb3JtYXQuZGlmZiB8ICA0MCArKysKIC4uLi93b3JrYXJvdW5kLW1lc2EtcmVhZGVv bi12YWFwaS1idWcucGF0Y2ggICB8ICAyOCArKwogc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgICAgIHwgMjQwICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9saWJh dmNvZGVjNCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZk ZXZpY2U0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2Zmls dGVyNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmZvcm1h dDQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZyZXNhbXBs ZTQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2dXRpbDQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJwb3N0cHJvYzQgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlic3dyZXNhbXBsZTQgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYnN3c2NhbGU0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogMTUgZmlsZXMgY2hhbmdlZCwgMzk2IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2ZmbXBlZzQtZGV2ZWwKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50 LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gt bGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBp LWJ1Zy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQog Y3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZjb2RlYzQKIGNyZWF0ZSBtb2RlIDEyMDAw MCBzcmNwa2dzL2xpYmF2ZGV2aWNlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZm aWx0ZXI0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmZvcm1hdDQKIGNyZWF0ZSBt b2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3Jj cGtncy9saWJhdnV0aWw0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJwb3N0cHJvYzQK IGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAx MjAwMDAgc3JjcGtncy9saWJzd3NjYWxlNAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC1k ZXZlbCBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9m Zm1wZWc0LWRldmVsCkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaCBi L3NyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAuLjljNTcyMDA0NjMzMjAKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaApAQCAtMCwwICsxLDYwIEBACityZXZl cnQgc29tZSBhbHRpdmVjIHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRs ZSoKKworcTY2OiAiV2Ugc2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZG bXBlZ0AzYTU1N2M1IGJ1dCBvbmx5Citjb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBw YzY0bGUqICh0aGUgbmV3IGNvZGUgaXMgdmFsaWQgZm9yCitQT1dFUjggVlNYIHdoaWNoIExFIHRh cmdldHMgYXMgYSBiYXNlbGluZSBidXQgbm90IEJFKSIKKworCitUaGlzIHJldmVydHMgY29tbWl0 IDNhNTU3YzVkODhiN2IxNWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCistLS0KKyBsaWJzd3Nj YWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQor IDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3Bw Yy95dXYycmdiX2FsdGl2ZWMuYworaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQK Ky0tLSBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCisrKysgYi9saWJzd3NjYWxl L3BwYy95dXYycmdiX2FsdGl2ZWMuYworQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFs dGl2ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAg ICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3IgdW5zaWduZWQg Y2hhciBSLCBHLCBCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyICp5MWl2UCwgKnkyaXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAorKyAg ICB2ZWN0b3IgdW5zaWduZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3Rv ciBzaWduZWQgc2hvcnQgbENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9Z OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25l ZCBzaG9ydCBsQ1JWICAgICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCitAQCAtMzM1LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1l KFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAorICAg ICAgICAgdmVjX2RzdHN0KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikg PDwgMTYpKSwgMSk7ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBm b3IgKGogPSAwOyBqIDwgdyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MWl2 UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAg ICAgICBcCisrICAgICAgICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg KikgeTJpOyAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHVpdlAgID0gKGNv bnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgICAgICB2aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAg ICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hh cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAg ICAgICAgICAgdmVjX3Blcm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB5MSA9IHZl Y194bCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1 bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysg ICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Bl cm0pOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAg ICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdSA9 ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwg YWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CistICAgICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNf bHZzbCgwLCB2aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg ICAgICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBd LCB2aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg ICB2ZWNfc3ViKHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorLS0gCisyLjI3LjAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMv YXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwLi45YTU1MTc4Yzc0ZjBmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9m Zm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKQEAgLTAsMCArMSwx OCBAQAorLS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAz LjAwMDAwMDAwMCArMDIwMAorKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEx LTIxIDExOjA2OjQ5LjYwMjI4NDQyMiArMDEwMAorQEAgLTM5LDYgKzM5LDE1IEBACisgI2VuZGlm CisgI2luY2x1ZGUgPGZlbnYuaD4KKyAKKysjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKKysvKiBF LmcuIEFSTSBzb2Z0IGZsb2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLworKyNkZWZpbmUgRkVf SU5WQUxJRCAgICAwCisrI2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKKysjZGVmaW5lIEZFX09WRVJG TE9XICAgMAorKyNkZWZpbmUgRkVfVU5ERVJGTE9XICAwCisrI2RlZmluZSBGRV9JTkVYQUNUICAg IDAKKysjZW5kaWYKKysKKyAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKKyAjaW5jbHVkZSA8Zm9u dGNvbmZpZy9mb250Y29uZmlnLmg+CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBl ZzQvcGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZm IGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVu X2JpdF9mb3JtYXQuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li5hYTk0OGY3YThhMmRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNo ZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgpAQCAtMCww ICsxLDQwIEBACisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMg RnJvbSAwMzFmMTU2MWNkMjg2NTk2Y2RiMzc0ZGEzMmY4YWE4MTZjZTNiMTM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorIyBGcm9tOiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRl Z2F3YUBpbnRlbC5jb20+CisjIERhdGU6IFRodSwgMjAgT2N0IDIwMjIgMjI6NTU6MjcgLTA1MDAK KyMgU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL2xpYnN2dGF2MTogcmVtb3ZlIGNvbXByZXNzZWRf dGVuX2JpdF9mb3JtYXQgYW5kIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlcgorIworIyBjb21wcmVzc2Vk X3Rlbl9iaXRfZm9ybWF0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgdXBzdHJlYW0gYW5kIGhhcyBubyBl ZmZlY3QKKyMgYW5kIGNhbiBiZSByZW1vdmVkLiBQbHVzLCB0ZWNobmljYWxseSBpdCB3YXMgbmV2 ZXIgdXNlZCBpbiB0aGUgZmlyc3QgcGxhY2UKKyMgc2luY2UgaXQgd291bGQgcmVxdWlyZSB0aGUg YXBwIChmZm1wZWcpIHRvIHNldCBpdCBhbmQgZG8gYWRkaXRpb25hbAorIyBwcm9jZXNzaW5nIG9m IHRoZSBpbnB1dCBmcmFtZXMuCisjCisjIEFsc28gc2ltcGxpZnkgYWxsb2NfYnVmZmVyIGJ5IHJl bW92aW5nIGNhbGN1bGF0aW9ucyByZWxhdGluZyB0byB0aGUgbm9uLWV4aXN0YW50IHByb2Nlc3Np bmcuCisjCisjIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIu ZGVnYXdhQGludGVsLmNvbT4KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGEvbGliYXZjb2RlYy9saWJzdnRhdjEuYworKysrIGIvbGliYXZjb2RlYy9saWJz dnRhdjEuYworQEAgLTEyNCwxNiArMTI0LDEyIEBAIHN0YXRpYyBpbnQgc3Z0X3ByaW50X2Vycm9y KHZvaWQgKmxvZ19jdHgsIEViRXJyb3JUeXBlIGVyciwKKyAKKyBzdGF0aWMgaW50IGFsbG9jX2J1 ZmZlcihFYlN2dEF2MUVuY0NvbmZpZ3VyYXRpb24gKmNvbmZpZywgU3Z0Q29udGV4dCAqc3Z0X2Vu YykKKyB7CistICAgIGNvbnN0IGludCAgICBwYWNrX21vZGVfMTBiaXQgPQorLSAgICAgICAgKGNv bmZpZy0+ZW5jb2Rlcl9iaXRfZGVwdGggPiA4KSAmJiAoY29uZmlnLT5jb21wcmVzc2VkX3Rlbl9i aXRfZm9ybWF0ID09IDApID8gMSA6IDA7CistICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfOGJp dCAgPQorLSAgICAgICAgY29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWln aHQgKiAoMSA8PCBwYWNrX21vZGVfMTBiaXQpOworLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXpl XzEwYml0ID0KKy0gICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCAmJiBwYWNr X21vZGVfMTBiaXQgPT0gMCkgPyBsdW1hX3NpemVfOGJpdCA6IDA7CisrICAgIGNvbnN0IHNpemVf dCBsdW1hX3NpemUgPSBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdo dCAqCisrICAgICAgICAoY29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggPyAyIDogMSk7Cisg CisgICAgIEViU3Z0SU9Gb3JtYXQgKmluX2RhdGE7CisgCistICAgIHN2dF9lbmMtPnJhd19zaXpl ID0gKGx1bWFfc2l6ZV84Yml0ICsgbHVtYV9zaXplXzEwYml0KSAqIDMgLyAyOworKyAgICBzdnRf ZW5jLT5yYXdfc2l6ZSA9IGx1bWFfc2l6ZSAqIDMgLyAyOworIAorICAgICAvLyBhbGxvY2F0ZSBi dWZmZXIgZm9yIGluIGFuZCBvdXQKKyAgICAgc3Z0X2VuYy0+aW5fYnVmICAgICAgICAgICA9IGF2 X21hbGxvY3ooc2l6ZW9mKCpzdnRfZW5jLT5pbl9idWYpKTsKKy0tIAorR2l0TGFiCisKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZh YXBpLWJ1Zy5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1y ZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwLi4wMGUzZjY4YTQxNWI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0 L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCkBAIC0wLDAg KzEsMjggQEAKK0Zyb20gODExZDI5MDg0NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1l bnRhQG9ubGluZS5kZT4KK0RhdGU6IFNhdCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKK1N1 YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy92YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFz IG5vIHNsaWNlcworCitUaGlzIGZpeGVzIC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVk ZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MzY4LgorSXQgd2FzIGhpdCBmcmVxdWVudGx5 IHdoZW4gd2F0Y2hpbmcgaDI2NCBjaGFubmVscyByZWNlaXZlZCB2aWEgRFZCLVguCitDb3JyZXNw b25kaW5nIGtvZGkgYnVnOiBodHRwczovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcw NAorLS0tCisgbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5n ZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0 LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYworaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1 N2E0IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKKysrKyBiL2xpYmF2Y29k ZWMvdmFhcGlfaDI2NC5jCitAQCAtMzE3LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gy NjRfZW5kX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKKyAgICAgSDI2NFNsaWNlQ29udGV4 dCAqc2wgPSAmaC0+c2xpY2VfY3R4WzBdOworICAgICBpbnQgcmV0OworIAorKyAgICBpZiAocGlj LT5uYl9zbGljZXMgPT0gMCkgeworKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsK KysgICAgICAgIGdvdG8gZmluaXNoOworKyAgICB9CisrCisgICAgIHJldCA9IGZmX3ZhYXBpX2Rl Y29kZV9pc3N1ZShhdmN0eCwgcGljKTsKKyAgICAgaWYgKHJldCA8IDApCisgICAgICAgICBnb3Rv IGZpbmlzaDsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZSBiL3NyY3BrZ3Mv ZmZtcGVnNC90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li5mMmM4NTE2OTNkMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3RlbXBs YXRlCkBAIC0wLDAgKzEsMjQwIEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWc0JworIyBh dWRhY2l0eSBhbHNvIG5lZWRzIHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3IGZmbXBlZyB2ZXJzaW9u IGJ1bXBzIGxpYmF2Zm9ybWF0J3Mgc29uYW1lIQorcGtnbmFtZT1mZm1wZWc0Cit2ZXJzaW9uPTQu NC40CityZXZpc2lvbj0xCitzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5jb2RpbmcgYW5kIHN0cmVh bWluZyBzb2Z0d2FyZSAtIGZmbXBlZzQgbGlicmFyaWVzIG9ubHkiCittYWludGFpbmVyPSJPcnBo YW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIK K2hvbWVwYWdlPSJodHRwczovL3d3dy5mZm1wZWcub3JnIgorY2hhbmdlbG9nPSJodHRwczovL3Jh dy5naXRodWJ1c2VyY29udGVudC5jb20vRkZtcGVnL0ZGbXBlZy9tYXN0ZXIvQ2hhbmdlbG9nIgor ZGlzdGZpbGVzPSJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzL2ZmbXBlZy0ke3ZlcnNp b259LnRhci54eiIKK2NoZWNrc3VtPWU4MGIzODBkNTk1YzgwOTA2MGY2NmY5NmE1ZDg0OTUxMWVm NGE3NmEyNmI3NmVhY2Y1Nzc4Yjk0YzM1NzAzMDkKKworaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29u ZmlnIHBlcmwiCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1k ZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJYZXh0LWRldmVsIGxpYlh2 TUMtZGV2ZWwgbGlieGNiLWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3JhLWRldmVsCisgbGlidm9y YmlzLWRldmVsIHgyNjQtZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1kZXZlbCBTREwyLWRldmVs CisgbGliY2Rpby1wYXJhbm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwg Z251dGxzLWRldmVsCisgc3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJmYnV6ei1kZXZlbCBsaWJh c3MtZGV2ZWwgb3B1cy1kZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMyYi1kZXZlbCBsaWJ2aWRz dGFiLWRldmVsIHZtYWYtZGV2ZWwgJCh2b3B0X2lmIHB1bHNlYXVkaW8gcHVsc2VhdWRpby1kZXZl bCkKKyAkKHZvcHRfaWYgdmFhcGkgbGlidmEtZGV2ZWwpICQodm9wdF9pZiB2ZHBhdSBsaWJ2ZHBh dS1kZXZlbCkKKyAkKHZvcHRfaWYgeDI2NSB4MjY1LWRldmVsKSAkKHZvcHRfaWYgdjRsMiB2NGwt dXRpbHMtZGV2ZWwpCisgJCh2b3B0X2lmIGZka19hYWMgZmRrLWFhYy1kZXZlbCkgJCh2b3B0X2lm IHZweCBsaWJ2cHgtZGV2ZWwpCisgJCh2b3B0X2lmIGFvbSBsaWJhb20tZGV2ZWwpICQodm9wdF9p ZiBzbmRpbyBzbmRpby1kZXZlbCkKKyAkKHZvcHRfaWYgZGF2MWQgbGliZGF2MWQtZGV2ZWwpICQo dm9wdF9pZiB6aW1nIHppbWctZGV2ZWwpCisgJCh2b3B0X2lmIHdlYnAgbGlid2VicC1kZXZlbCkg JCh2b3B0X2lmIHNvZmEgbGlibXlzb2ZhLWRldmVsKQorICQodm9wdF9pZiBkcm0gbGliZHJtLWRl dmVsKSAkKHZvcHRfaWYgc3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwpCisgJCh2b3B0X2lmIHNydCBz cnQtZGV2ZWwpICQodm9wdF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwpCisgJCh2b3B0X2lmIHZ1bGth biAndnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycycpCisgJCh2b3B0X2lmIG1meCAnbGlibWZ4 IGxpYm1meC1kZXZlbCcpCisgJCh2b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRlcnMpICQodm9w dF9pZiBudmRlYyBudi1jb2RlYy1oZWFkZXJzKSIKKworYnVpbGRfb3B0aW9ucz0ieDI2NSB2NGwy IHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1ZGlvCisgZGF2 MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMgbWZ4Igor YnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBwdWxzZWF1ZGlv IGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKKworZGVzY19vcHRpb25fc3J0PSJFbmFi bGUgc3VwcG9ydCBmb3IgU1JUIChTZWN1cmUsIFJlbGlhYmxlLCBUcmFuc3BvcnQpIgorZGVzY19v cHRpb25fcmlzdD0iRW5hYmxlIHN1cHBvcnQgZm9yIFJJU1QgKFJlbGlhYmxlIEludGVybmV0IFN0 cmVhbSBUcmFuc3BvcnQpIgorZGVzY19vcHRpb25fc29mYT0iRW5hYmxlIHN1cHBvcnQgZm9yIEFF UyBTT0ZBIgorZGVzY19vcHRpb25fd2VicD0iRW5hYmxlIHN1cHBvcnQgZm9yIFdlYlAiCisKK2Nh c2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCWk2ODYqKQorCQkJaG9zdG1ha2VkZXBlbmRz Kz0iIG5hc20iCisJCQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMg bnZkZWMiCisJCQk7OworCXg4Nl82NCopCisJCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJ CWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBtZnggbnZlbmMgbnZkZWMiCisJ CQk7OworCXBwYzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1Ijs7CisJ bWlwcyopIENGTEFHUz0iLW1uYW49bGVnYWN5Ijs7Citlc2FjCisKK2lmIFsgIiRYQlBTX1RBUkdF VF9XT1JEU0laRSIgIT0gIjMyIiBdOyB0aGVuCisJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHN2 dGF2MSIKK2ZpCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9OT19BVE9NSUM4IiBdOyB0aGVuCisJbWFr ZWRlcGVuZHMrPSIgbGliYXRvbWljLWRldmVsIgorZmkKKworX2FwcGx5X3BhdGNoKCkgeworCWxv Y2FsIGFyZ3M9IiQxIiBwbmFtZT0iJChiYXNlbmFtZSAkMikiCisKKwlpZiBbICEgLWYgIi4ke3Bu YW1lfV9kb25lIiBdOyB0aGVuCisJCXBhdGNoIC1OICRhcmdzIC1pICQyCisJCXRvdWNoIC4ke3Bu YW1lfV9kb25lCisJZmkKK30KKworcG9zdF9wYXRjaCgpIHsKKwljYXNlICIkWEJQU19UQVJHRVRf TUFDSElORSIgaW4KKwkJcHBjNjRsZSopIDs7CisJCXBwYyopIF9hcHBseV9wYXRjaCAtcDEgJHtG SUxFU0RJUn0vYWx0aXZlYy5wYXRjaCA7OworCWVzYWMKKworCXZzZWQgLWkgbGliYXZmaWx0ZXIv dmZfbGlidm1hZi5jIC1lICdzIS91c3IvbG9jYWwvc2hhcmUvbW9kZWwvXCh2bWFmX3YwLjYuMVwp LnBrbCEvdXNyL3NoYXJlL3ZtYWYvXDEuanNvbiEnCit9CisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkj IEZpeCBnY2Mgb24geDg2XzY0LW11c2wgb25seQorCWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiA9ICJ4ODZfNjQtbXVzbCIgXTsgdGhlbgorCQl2c2VkIC1pIGNvbmZpZ3VyZSAtZSAicztfY2Zs YWdzX3NwZWVkPSctTzMnO19jZmxhZ3Nfc3BlZWQ9Jy1PMic7IgorCWZpCisKKwlpZiBbICIkQ1JP U1NfQlVJTEQiIF07IHRoZW4KKwkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCQlh cm0qKSBfYXJjaD0iYXJtIjs7CisJCQlhYXJjaDY0KikgX2FyY2g9ImFhcmNoNjQiOzsKKwkJCW1p cHMqKSBfYXJjaD0ibWlwcyI7OworCQkJcHBjNjQqKSBfYXJjaD0icHBjNjQiOzsKKwkJCXBwYyop IF9hcmNoPSJwcGMiOzsKKwkJCSopIF9hcmNoPSIke1hCUFNfVEFSR0VUX01BQ0hJTkUlJS1tdXNs fSI7OworCQllc2FjCisKKwkJX2FyZ3MrPSIgLS1lbmFibGUtY3Jvc3MtY29tcGlsZQorCQkJLS1z eXNyb290PSRYQlBTX0NST1NTX0JBU0UKKwkJCS0tY3Jvc3MtcHJlZml4PSR7WEJQU19DUk9TU19U UklQTEVUfS0KKwkJCS0tdGFyZ2V0LW9zPWxpbnV4IC0tYXJjaD0ke19hcmNofSIKKwlmaQorCisJ Y2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwY3xwcGMtbXVzbCkgX2FyZ3MrPSIg LS1kaXNhYmxlLWFsdGl2ZWMiOzsKKwllc2FjCisKKwlpZiBbICIkWEJQU19UQVJHRVRfTk9fQVRP TUlDOCIgXTsgdGhlbgorCQlfYXJncys9IiAtLWV4dHJhLWxpYnM9LWxhdG9taWMiCisJZmkKKwor CS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1kaXNhYmxlLWRlYnVnIC0tZW5hYmxlLWdwbCAt LWVuYWJsZS1nbnV0bHMgXAorCQktLWRpc2FibGUtc3RyaXBwaW5nIFwKKwkJLS1lbmFibGUtbGli Y2RpbyAtLWVuYWJsZS12ZXJzaW9uMyAtLWVuYWJsZS1ydW50aW1lLWNwdWRldGVjdCBcCisJCS0t ZW5hYmxlLWxpYm1wM2xhbWUgLS1lbmFibGUtbGlidm9yYmlzIC0tZW5hYmxlLWxpYnh2aWQgXAor CQktLWVuYWJsZS1saWJ4MjY0ICQodm9wdF9lbmFibGUgdnB4IGxpYnZweCkgLS1lbmFibGUtbGli dGhlb3JhIFwKKwkJLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVuYWJsZS1saWJ4 Y2IgXAorCQkkKHZvcHRfZW5hYmxlIHB1bHNlYXVkaW8gbGlicHVsc2UpIC0tZW5hYmxlLWxpYmZy ZWV0eXBlIC0tZW5hYmxlLWxpYm1vZHBsdWcgXAorCQktLWVuYWJsZS1saWJzcGVleCAtLWVuYWJs ZS1saWJjZWx0IC0tZW5hYmxlLWxpYmFzcyBcCisJCS0tZW5hYmxlLWxpYm9wdXMgLS1lbmFibGUt bGlicnRtcCAtLWVuYWJsZS1saWJqYWNrIFwKKwkJJCh2b3B0X2lmIGZka19hYWMgJy0tZW5hYmxl LW5vbmZyZWUgLS1lbmFibGUtbGliZmRrLWFhYycpIFwKKwkJLS1kaXNhYmxlLWxpYm9wZW5jb3Jl X2Ftcm5iIC0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJ3YiBcCisJCS0tZGlzYWJsZS1saWJvcGVu anBlZyBcCisJCS0tZW5hYmxlLXBvc3Rwcm9jIC0tZW5hYmxlLW9wZW5jbCAke19hcmdzfSAtLWVu YWJsZS1saWJ2bWFmICR7X2FyZ3N9IFwKKwkJJCh2b3B0X2VuYWJsZSB4MjY1IGxpYngyNjUpIFwK KwkJJCh2b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKKwkJJCh2b3B0X2VuYWJsZSBhb20gbGli YW9tKSAkKHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxlIHZkcGF1KSBcCisJCS0tZW5h YmxlLWxpYmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKKwkJ JCh2b3B0X2VuYWJsZSBkYXYxZCBsaWJkYXYxZCkgXAorCQkkKHZvcHRfZW5hYmxlIHppbWcgbGli emltZykgXAorCQkkKHZvcHRfZW5hYmxlIHdlYnAgbGlid2VicCkgXAorCQkkKHZvcHRfZW5hYmxl IHNvZmEgbGlibXlzb2ZhKSBcCisJCSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9wdF9l bmFibGUgZHJtIGxpYmRybSkgXAorCQkkKHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJzdnRhdjEpIFwK KwkJJCh2b3B0X2VuYWJsZSBzcnQgbGlic3J0KSBcCisJCSQodm9wdF9lbmFibGUgcmlzdCBsaWJy aXN0KSBcCisJCSQodm9wdF9lbmFibGUgbWZ4IGxpYm1meCkgXAorCQkkKHZvcHRfaWYgbnZlbmMg Jy0tZW5hYmxlLW52ZW5jJykgXAorCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52ZGVjJykK K30KKworZG9fYnVpbGQoKSB7CisJbWFrZSAke21ha2Vqb2JzfQorCW1ha2UgZG9jL2Zme21wZWcs cGxheX0uMQorfQorCitkb19pbnN0YWxsKCkgeworCW1ha2UgREVTVERJUj0ke0RFU1RESVJ9IGlu c3RhbGwgaW5zdGFsbC1tYW4KKwlybSAtcmYgJHtERVNURElSfS91c3IvYmluCit9CisKK2xpYmF2 Y29kZWM0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGNvZGVjIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Y29kZWMuc28uKiIKKwl9Cit9 CisKK2xpYmF2ZGV2aWNlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBkZXZpY2Ug aGFuZGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGli YXZkZXZpY2Uuc28uKiIKKwl9Cit9CisKK2xpYmF2cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hv cnRfZGVzYz0iRkZtcGVnIGF1ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgp IHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZyZXNhbXBsZS5zby4qIgorCX0KK30KKworbGliYXZm b3JtYXQ0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGZpbGUgZm9ybWF0IGxpYnJh cnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Zm9ybWF0LnNvLioi CisJfQorfQorCitsaWJhdnV0aWw0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIHV0 aWxpdHkgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZ1 dGlsLnNvLioiCisJfQorfQorCitsaWJhdmZpbHRlcjRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNj PSJGRm1wZWcgYXVkaW8vdmlkZW8gZmlsdGVyIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJ CXZtb3ZlICJ1c3IvbGliL2xpYmF2ZmlsdGVyLnNvLioiCisJfQorfQorCitsaWJwb3N0cHJvYzRf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcG9zdHByb2Nlc3NpbmcgbGli cmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlicG9zdHByb2Muc28u KiIKKwl9Cit9CisKK2xpYnN3c2NhbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IHZpZGVvIHNjYWxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9s aWIvbGlic3dzY2FsZS5zby4qIgorCX0KK30KKworbGlic3dyZXNhbXBsZTRfcGFja2FnZSgpIHsK KwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcmVzYW1wbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0 YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJzd3Jlc2FtcGxlLnNvLioiCisJfQorfQorCitm Zm1wZWc0LWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iCisJCWxpYmF2Y29kZWM0Pj0ke3Zl cnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2ZGV2aWNlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9u fQorCQlsaWJhdmZvcm1hdDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZ1dGlsND49 JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmZpbHRlcjQ+PSR7dmVyc2lvbn1fJHtyZXZp c2lvbn0KKwkJbGlicG9zdHByb2M0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnN3c2Nh bGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnN3cmVzYW1wbGU0Pj0ke3ZlcnNpb259 XyR7cmV2aXNpb259CisJCWxpYmF2cmVzYW1wbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259Igor CXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwljb25mbGljdHM9ImZmbXBlZy1k ZXZlbCIKKwlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgPSAiaTY4NiIgXTsgdGhlbgorCQkj IC91c3IvYmluL3N0cmlwOiBlcnJvcjogdGhlIGlucHV0IGZpbGUgJy9kZXN0ZGlyLy9mZm1wZWct ZGV2ZWwtNC40LjQvdXNyL2xpYi9saWJhdmZpbHRlci5hKHZmX2F0YWRlbm9pc2UubyknIGhhcyBu byBzZWN0aW9ucworCQlub3N0cmlwX2ZpbGVzPSIvdXNyL2xpYi9saWJhdmZpbHRlci5hIgorCWZp CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIv cGtnY29uZmlnCisJCXZtb3ZlICJ1c3IvbGliLyouYSIKKwkJdm1vdmUgInVzci9saWIvKi5zbyIK KwkJdm1vdmUgdXNyL3NoYXJlL2ZmbXBlZy9leGFtcGxlcworCQl2bW92ZSB1c3Ivc2hhcmUvbWFu L21hbjMKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2Y29kZWM0IGIvc3JjcGtncy9s aWJhdmNvZGVjNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdm MzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmNvZGVjNApAQCAtMCww ICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9saWJhdmRldmljZTQgYi9zcmNwa2dzL2xpYmF2ZGV2aWNlNApuZXcgZmlsZSBtb2Rl IDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9saWJhdmRldmljZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmaWx0ZXI0IGIv c3JjcGtncy9saWJhdmZpbHRlcjQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZmaWx0 ZXI0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2Zm9ybWF0NCBiL3NyY3BrZ3MvbGliYXZmb3JtYXQ0Cm5l dyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApAQCAtMCwwICsxIEBACitmZm1w ZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJh dnJlc2FtcGxlNCBiL3NyY3BrZ3MvbGliYXZyZXNhbXBsZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAK aW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvbGliYXZyZXNhbXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZ1dGlsNCBiL3NyY3BrZ3Mv bGliYXZ1dGlsNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdm MzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdnV0aWw0CkBAIC0wLDAg KzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYnBvc3Rwcm9jNCBiL3NyY3BrZ3MvbGlicG9zdHByb2M0Cm5ldyBmaWxlIG1vZGUg MTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2xpYnBvc3Rwcm9jNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJzd3Jlc2FtcGxlNCBi L3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAw MDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlic3dy ZXNhbXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3dzY2FsZTQgYi9zcmNwa2dzL2xpYnN3c2NhbGU0 Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYnN3c2NhbGU0CkBAIC0wLDAgKzEgQEAKK2Zm bXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpGcm9tIDFhMTZkNjE3ODU0OTI4NGFh MWRjNTg5MmE0ZWM2ODhkMTU0NTcxMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6MDQg LTA0MDAKU3ViamVjdDogW1BBVENIIDAwNS8xMTVdIG9wZW5jdjogdXBkYXRlIHRvIDQuNy4wLgoK LS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICB8IDEwNCArKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL29wZW5jdi90ZW1wbGF0ZSB8ICAgOCArKy0tCiAy IGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IGE3MjhjMGVhYWI1N2Yu LjU3NDVmZjBjYTdiODQgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3No bGlicwpAQCAtMjA4NSw1OCArMjA4NSw1OCBAQCBsaWJjYXBzdG9uZS5zby41IGNhcHN0b25lLTUu MC4xXzEKIGxpYmhhdmVnZS5zby4yIGxpYmhhdmVnZWQtMS45LjExXzEKIGxpYm5paC5zby4xIGxp Ym5paC0xLjAuM18xCiBsaWJuaWgtZGJ1cy5zby4xIGxpYm5paC0xLjAuM18xCi1saWJvcGVuY3Zf cXVhbGl0eS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9yZWcuc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VyZmFjZV9tYXRjaGluZy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94cGhvdG8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfZnJlZXR5cGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZnV6 enkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaGZzLnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ19oYXNoLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2xpbmVfZGVzY3JpcHRvci5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9w ZW5jdl9zYWxpZW5jeS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdHJ1Y3R1 cmVkX2xpZ2h0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2FydWNvLnNvLjQw NiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Jnc2VnbS5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl9iaW9pbnNwaXJlZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9jY2FsaWIuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZmFjZS5z by40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl90cmFja2luZy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94ZmVhdHVyZXMyZC5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9vcHRmbG93LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2 X3hpbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3Bsb3Quc28uNDA2 IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdGV4dC5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9tbC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9vYmpk ZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZG5uLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3NoYXBlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X3N0aXRjaGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9w aG90by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlby5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jYWxpYjNkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X2ZlYXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVu Y3ZfZmxhbm4uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaGlnaGd1aS5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlb2lvLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X2ltZ2NvZGVjcy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9pbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2NvcmUu c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VwZXJyZXMuc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW9zdGFiLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X2dhcGkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeG9i amRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kYXRhc2V0cy5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm5fb2JqZGV0ZWN0LnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubl9zdXBlcnJlcy5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl9kcG0uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf cGhhc2VfdW53cmFwcGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdGVy ZW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmFwaWQuc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW50ZW5zaXR5X3RyYW5zZm9ybS5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9hbHBoYW1hdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9iYXJjb2RlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X21j Yy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKK2xpYm9wZW5jdl9xdWFsaXR5LnNvLjQwNyBsaWJv cGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3JlZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9zdXJmYWNlX21hdGNoaW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X3hwaG90by5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mcmVldHlwZS5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mdXp6eS5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9oZnMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3ZfaW1nX2hhc2guc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbGluZV9kZXNj cmlwdG9yLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3NhbGllbmN5LnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0cnVjdHVyZWRfbGlnaHQuc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYXJ1Y28uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8x CitsaWJvcGVuY3ZfYmdzZWdtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Jp b2luc3BpcmVkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2NjYWxpYi5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mYWNlLnNvLjQwNyBsaWJvcGVuY3YtNC43 LjBfMQorbGlib3BlbmN2X3RyYWNraW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X3hmZWF0dXJlczJkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X29wdGZs b3cuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeGltZ3Byb2Muc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGxvdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEK K2xpYm9wZW5jdl90ZXh0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X21sLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X29iamRldGVjdC5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm4uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3Zfc2hhcGUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc3RpdGNoaW5n LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3Bob3RvLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2NhbGliM2Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZmVhdHVy ZXMyZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mbGFubi5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X3ZpZGVvaW8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf aW1nY29kZWNzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ltZ3Byb2Muc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY29yZS5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl9zdXBlcnJlcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl92aWRlb3N0YWIuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZ2FwaS5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94b2JqZGV0ZWN0LnNvLjQwNyBsaWJv cGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2Rubl9vYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfZG5uX3N1cGVycmVzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rw bS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9waGFzZV91bndyYXBwaW5nLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0ZXJlby5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9yYXBpZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9pbnRlbnNpdHlfdHJhbnNmb3JtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2FscGhhbWF0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2JhcmNvZGUu c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWNjLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQogbGlidW5pY29uZi5zby40LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCiBsaWJ3dmJhc2Uu c28uNC42IHd2c3RyZWFtcy00LjYuMV8yMAogbGlid3Z1dGlscy5zby40LjYgd3ZzdHJlYW1zLTQu Ni4xXzIwCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Bl bmN2L3RlbXBsYXRlCmluZGV4IGFlYTRiZmMzYTI2NWMuLmNlOTRkZTk0MjRkMTggMTAwNjQ0Ci0t LSBhL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmN2JwogcGtnbmFtZT1v cGVuY3YKLXZlcnNpb249NC42LjAKLXJldmlzaW9uPTYKK3ZlcnNpb249NC43LjAKK3JldmlzaW9u PTEKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF93cmtzcmM9JHtwa2duYW1lfS0ke3ZlcnNpb259 CiBidWlsZF9zdHlsZT1jbWFrZQpAQCAtMjQsOCArMjQsOCBAQCBob21lcGFnZT0iaHR0cHM6Ly9v cGVuY3Yub3JnIgogY2hhbmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi93 aWtpL0NoYW5nZUxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVu Y3YvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yv b3BlbmN2X2NvbnRyaWIvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5nej5jb250cmliLnRhci5neiIK LWNoZWNrc3VtPSIxZWMxY2JhNjVmOWYyMGZlNWE0MWZkYTE1ODZlMDFjNzBlYTBjOWE2ZDdiNjdj OWUxM2VkZjBjZmUyMjM5Mjc3Ci0gMTc3N2Q1ZmQyYjU5MDI5Y2Y1MzdlNWZkNmY4YWE2OGQ3MDcw NzU4MjJmOTBiZGU2ODNmY2RlMDg2Zjg1ZjdhNyIKK2NoZWNrc3VtPSI4ZGYwMDc5Y2RiZTE3OTc0 OGExOGQ0NDczMWFmNjJhMjQ1YTQ1ZWJmNTA4NTIyM2RjMDMxMzM5NTRjNjYyOTczCisgNDJkZjg0 MGNmOTA1NWU1OWQwZTIyYzI0OWNmYjE5ZjA0NzQzZTFiZGFkMTEzZDMxYjE1NzNkMzkzNGQ2MjU4 NCIKIHBhdGNoX2FyZ3M9Ii1OcDEgLWQgJHtidWlsZF93cmtzcmN9IgogIyB0ZXN0cyBoYW5nIGlu ZGVuZmluaXRlbHksIGV2ZW4gd2l0aCB0ZXN0IGRhdGEgaW5jbHVkZWQKIG1ha2VfY2hlY2s9bm8K CkZyb20gMTMxNDU5MmZiZjk0OWQyZDMyODg5ZTllYmEyY2E2OTVhODFmYmQ2YSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAxOTo1OTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA2LzExNV0gYWN0 aW9uYTogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3MvYWN0aW9uYS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYWN0aW9u YS90ZW1wbGF0ZQppbmRleCBjZjVmMGI3YTJhZTYxLi4wZDg5OTMxMWU2ZGY3IDEwMDY0NAotLS0g YS9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYWN0aW9uYScKIHBrZ25hbWU9 YWN0aW9uYQogdmVyc2lvbj0zLjEwLjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0 eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iUEtHQ09ORklHX09QRU5DVj1vcGVuY3Y0IgogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1wbHVnaW4tbXlzcWwgcXQ1LXFtYWtlIHF0NS1o b3N0LXRvb2xzIgoKRnJvbSA0ZTJjODFmYmNjZGVmMzYwZDg3ZjgzMDVlYzQwNWY3ZWFkNTYyNzNi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MDcvMTE1XSBxaW1ndjogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3MvcWlt Z3YvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3FpbWd2L3RlbXBsYXRlIGIvc3JjcGtncy9x aW1ndi90ZW1wbGF0ZQppbmRleCA3ZWIzMGRiMzM5OTJjLi5kZDM0MWRmZTFiZmNlIDEwMDY0NAot LS0gYS9zcmNwa2dzL3FpbWd2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxaW1ndicKIHBrZ25hbWU9cWlt Z3YKIHZlcnNpb249MS4wLjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iJCh2b3B0X2lmIHZpZGVvIC1EVklERU9fU1VQUE9SVD1PTiAt RFZJREVPX1NVUFBPUlQ9T0ZGKQogICQodm9wdF9pZiBzY2FsZSAtRE9QRU5DVl9TVVBQT1JUPU9O IC1ET1BFTkNWX1NVUFBPUlQ9T0ZGKQoKRnJvbSBjYjliM2M2OWRjY2RhNDEzNjJhZTU4M2MzYzYy MTAzZDVhMWRkNDMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ2IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMDgvMTE1XSByZXRyb3NoYXJlOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAK Ci0tLQogc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZXRy b3NoYXJlL3RlbXBsYXRlIGIvc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlCmluZGV4IGJiMTc1 NjkyNzdhN2YuLjQ5ZTJjMWNiZThhNTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9zaGFyZS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdyZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3NoYXJlCiB2 ZXJzaW9uPTAuNi42Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1xbWFrZQog I1hYWCBicm9hZGNhc3QgZmVhdHVyZSByZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNjb3Zlcnkt Y3BwIHdoaWNoIGVpdGhlciBuZWVkcwogIyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZUQkZTKSBo ZXJlIG9yIHBhY2thZ2VkIDovCgpGcm9tIGM4MGJmZDI3OGIzYzhhMDU3MjY1NDhiYmE2Y2RhMGQ4 MTU2MmM3NmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDog W1BBVENIIDAwOS8xMTVdIHdhaWZ1MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Igb3BlbmN2 LTQuNy4wCgotLS0KIHNyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3dh aWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZQppbmRleCAzNjFiOGEyM2I5NDk3Li5jNWFjMTdl YjU0ZWE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3dhaWZ1MngtY29udmVydGVyLWNwcCcKIHBrZ25h bWU9d2FpZnUyeC1jb252ZXJ0ZXItY3BwCiB2ZXJzaW9uPTUuMi40Ci1yZXZpc2lvbj0yCityZXZp c2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ESU5TVEFMTF9NT0RF TFM9T04iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGFlYWU4NTIwNGU1MDU3 MjBkM2VkZmVlN2M0MDJlZTE0NzkyM2E1YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6 MzggLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMC8xMTVdIHZsYzogcmV2YnVtcCBmb3IgZmZtcGVn NC00LjQuMwoKLS0tCiBzcmNwa2dzL3ZsYy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvdmxj L3RlbXBsYXRlIGIvc3JjcGtncy92bGMvdGVtcGxhdGUKaW5kZXggYzZlNzI3NWI1MTRjNC4uNjgx ZjJjM2JjMDgyNyAxMDA2NDQKLS0tIGEvc3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy92bGMvdGVtcGxhdGUKQEAgLTI1LDcgKzI1LDcgQEAgbGliMzJkaXNhYmxlZD15ZXMKIGhvc3Rt YWtlZGVwZW5kcz0iYXV0b21ha2UgbGlidG9vbCBwa2ctY29uZmlnIGZsZXggZ2V0dGV4dCBsaWJn Y3J5cHQtZGV2ZWwKICBsaXZlNTU1LWRldmVsIGdldHRleHQtZGV2ZWwgJCh2b3B0X2lmIGx1YSBs dWE1MikgJCh2b3B0X2lmIGNocm9tZWNhc3QgcHJvdG9idWYpIgogbWFrZWRlcGVuZHM9IgotIGF2 YWhpLWxpYnMtZGV2ZWwgZGJ1cy1nbGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZy1kZXZlbCBm cmVlZm9udC10dGYKKyBhdmFoaS1saWJzLWRldmVsIGRidXMtZ2xpYi1kZXZlbCBmYWFkMi1kZXZl bCBmZm1wZWc0LWRldmVsIGZyZWVmb250LXR0ZgogIGdudXRscy1kZXZlbCBqYWNrLWRldmVsIGxp YmE1Mi1kZXZlbCBsaWJhc3MtZGV2ZWwgbGliYmx1cmF5LWRldmVsCiAgbGliY2Rpby1kZXZlbCBs aWJkY2EtZGV2ZWwgbGliZHZicHNpLWRldmVsIGxpYmR2ZG5hdi1kZXZlbCBsaWJtYWQtZGV2ZWwK ICBsaWJtYXRyb3NrYS1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxpYm1wY2RlYy1kZXZlbCBsaWJt cGVnMi1kZXZlbAoKRnJvbSBkOTgwZTM5Y2E4YzgzOWRkMmEyMTgxOTdjODY1NzQ1MDg4YjljYWRi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAwOjU1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MTEvMTE1XSBvc2c6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vc2cv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29zZy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3NnL3Rl bXBsYXRlCmluZGV4IGE5ZWJiZDI4NzkzM2IuLjc1NTc5M2Y3ZTExYmYgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3Mvb3NnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCkBAIC04LDcgKzgs NyBAQCBidWlsZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJncz0iLURMSUJfUE9TVEZJWD0i CiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeHJhbmRyIgogbWFrZWRlcGVuZHM9Ik1lc2FM aWItZGV2ZWwgZ3RrZ2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBnaWZsaWItZGV2ZWwgbGlicnN2 Zy1kZXZlbAotIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRl dmVsIGZmbXBlZy1kZXZlbCB4aW5lLWxpYi1kZXZlbAorIGphc3Blci1kZXZlbCB0aWZmLWRldmVs IGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZzQtZGV2ZWwgeGluZS1saWItZGV2ZWwK ICBTREwyLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAgJCh2b3B0X2lmIG9wZW5leHIg bGlib3BlbmV4ci1kZXZlbCkKICAkKHZvcHRfaWYgcG9wcGxlciBwb3BwbGVyLWdsaWItZGV2ZWwp CgpGcm9tIGYzOTVmMGVmZjgzNzY0YTlmZDg3YWNhYTZkMGY5YTc3NDkxMzg3MGIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6MTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMi8xMTVdIHhp bmUtbGliOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MveGluZS1saWIv dGVtcGxhdGUgfCA4ICsrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgYi9z cmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlCmluZGV4IDNiZTRkMDhlYWM3N2EuLmVkNjE5NGMxN2Qx MWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94 aW5lLWxpYi90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn eGluZS1saWInCiBwa2duYW1lPXhpbmUtbGliCi12ZXJzaW9uPTEuMi4xMgotcmV2aXNpb249Mwor dmVyc2lvbj0xLjIuMTMKK3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNv bmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdmNkIC0tZGlzYWJsZS1nbm9tZXZmcyAtLXdpdGhvdXQt ZXNvdW5kIC0tZGlzYWJsZS1keHIzCiAgLS1kaXNhYmxlLW9zcyIKIGhvc3RtYWtlZGVwZW5kcz0i YXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIHBrZy1jb25maWcgcGVybCIKIG1ha2VkZXBl bmRzPSIKICB6bGliLWRldmVsIGFsc2EtbGliLWRldmVsIGxpYnhjYi1kZXZlbCBsaWJTTS1kZXZl bCBsaWJYZXh0LWRldmVsIGxpYlh2LWRldmVsCi0gbGliWHZNQy1kZXZlbCBsaWJhNTItZGV2ZWwg bGlibWFkLWRldmVsIGZmbXBlZy1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCisgbGliWHZNQy1kZXZl bCBsaWJhNTItZGV2ZWwgbGlibWFkLWRldmVsIGZmbXBlZzQtZGV2ZWwgcHVsc2VhdWRpby1kZXZl bAogIGphY2stZGV2ZWwgc2FtYmEtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJtb2RwbHVnLWRldmVs IGxpYm1wY2RlYy1kZXZlbAogIHNwZWV4LWRldmVsIGxpYnRoZW9yYS1kZXZlbCBsaWJ2b3JiaXMt ZGV2ZWwgbGliZGNhLWRldmVsIGZhYWQyLWRldmVsCiAgbGliY2Rpby1kZXZlbCBsaWJibHVyYXkt ZGV2ZWwgYWFsaWItZGV2ZWwgbGliY2FjYS1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbApAQCAtMTks NyArMTksNyBAQCBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwOi8vd3d3LnhpbmUtcHJvamVjdC5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBz Oi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3hpbmUvZmlsZXMveGluZS1saWIvJHt2ZXJzaW9u fS9SRUFETUUudHh0L3ZpZXciCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lURX0veGluZS8k e3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZDYwNjI3MDQ2OGUxNTQwYzJh ODljMGQ3ZjVmZGYxMWUxN2VjYzBjMjY5OGNjMGJjYjEwNjVmZjI2YWJlZTA5OAorY2hlY2tzdW09 NWYxMGQ2ZDcxOGE0YTUxYzE3ZWQxYjMyYjAzMWQ0ZjliODBiMDYxZTgyNzY1MzViMmJlMzFlNWFj NGI3NWU2ZgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAlpNjg2LW11c2wpCgpG cm9tIDc1MjE4MjgzOWJiMzAxZTA3MmVkYWVkODFkMWFiODVjYWIzZmE5MDQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMy8xMTVdIGFyY2Fu OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXJjYW4vdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlIGIvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQpp bmRleCBlZmQwYWZlMTA1NzZkLi5iOTFlNjkwMGQ0MmExIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Fy Y2FuL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBA CiAjICEhIGtlZXAgc3luY2VkIHdpdGg6IGFjZmdmcyBhY2xpcCBhbG9hZGltYWdlCiBwa2duYW1l PWFyY2FuCiB2ZXJzaW9uPTAuNi4yLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGNyZWF0ZV93 cmtzcmM9eWVzCiBidWlsZF93cmtzcmM9YXJjYW4vc3JjCiBidWlsZF9zdHlsZT1jbWFrZQoKRnJv bSA3YmIwNDM1ZTg0NTIwNjVjNTQ2MjQzMjFiMjU0ZmRkZmFhNWYyZDIzIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTQvMTE1XSBhdHRyYWN0 OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUgYi9zcmNwa2dzL2F0dHJh Y3QvdGVtcGxhdGUKaW5kZXggMjYxNDRlOTMxYTNjNy4uZTc2MGJmMGQxOGFlYyAxMDA2NDQKLS0t IGEvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0 ZQpAQCAtMSwxMiArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYXR0cmFjdCcKIHBrZ25h bWU9YXR0cmFjdAogdmVyc2lvbj0yLjYuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlZFUkJPU0U9MSIKIG1ha2VfdXNl X2Vudj15ZXMKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJTRk1M LWRldmVsIGZmbXBlZy1kZXZlbCBmb250Y29uZmlnLWRldmVsIGdsdS1kZXZlbCBsaWJhcmNoaXZl LWRldmVsCittYWtlZGVwZW5kcz0iU0ZNTC1kZXZlbCBmZm1wZWc0LWRldmVsIGZvbnRjb25maWct ZGV2ZWwgZ2x1LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwKICBsaWJjdXJsLWRldmVsIGxpYmpwZWct dHVyYm8tZGV2ZWwgeGluZS1saWIgcmFwaWRqc29uIGxpYlhyYW5kci1kZXZlbCIKIGRlcGVuZHM9 ImdpdCIKIHNob3J0X2Rlc2M9IkF0dHJhY3QtTW9kZSBpcyBhIGdyYXBoaWNhbCBmcm9udGVuZCBm b3IgZW11bGF0b3JzIgoKRnJvbSAxZDQ1M2NiN2EyZjc0NGNmNzg2MzIyY2YxMTRkZTcxYmVmZTE0 NjAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMTUvMTE1XSBhdWJpbzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F1 YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysK IHNyY3BrZ3MvYXViaW8vdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hh bmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZt cGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5hYWNl NDFhNmU2ZDlhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA4YTA1NDIwZTVkZDhjN2I4YjI0NDdmODJk YzkxOTc2NTg3NjUxMWIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBCcm9z c2llciA8cGllbUBwaWVtLm9yZz4KK0RhdGU6IFR1ZSwgMjUgSmFuIDIwMjIgMTg6MzA6MjcgKzAx MDAKK1N1YmplY3Q6IFtQQVRDSF0gW3NvdXJjZV9hdmNvZGVjXSBkZWZpbmUgRkZfQVBJX0xBVkZf QVZDVFggZm9yIGxpYmF2Y29kZWMgPgorIDU5LCB0aHggQGJlcm9saW51eCAoY2xvc2VzIGdoLTM1 MykKKworLS0tCisgc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hh bmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvaW8vc291cmNlX2F2Y29k ZWMuYyBiL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCitpbmRleCBlMGFlOTNiNS4uMTQyMWJkOWEg MTAwNjQ0CistLS0gYS9zcmMvaW8vc291cmNlX2F2Y29kZWMuYworKysrIGIvc3JjL2lvL3NvdXJj ZV9hdmNvZGVjLmMKK0BAIC02OCw2ICs2OCwxMCBAQAorICNkZWZpbmUgQVVCSU9fQVZDT0RFQ19N QVhfQlVGRkVSX1NJWkUgQVZfSU5QVVRfQlVGRkVSX01JTl9TSVpFCisgI2VuZGlmCisgCisrI2lm IExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA+PSA1OQorKyNkZWZpbmUgRkZfQVBJX0xBVkZfQVZD VFggMQorKyNlbmRpZgorKworIHN0cnVjdCBfYXViaW9fc291cmNlX2F2Y29kZWNfdCB7CisgICB1 aW50X3QgaG9wX3NpemU7CisgICB1aW50X3Qgc2FtcGxlcmF0ZTsKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvYXViaW8vdGVtcGxhdGUgYi9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCmluZGV4IGFkMWM0YjI1 Njk5MTcuLjdkODc1Y2MwMjU0MWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUK KysrIGIvc3JjcGtncy9hdWJpby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2F1YmlvJwogcGtnbmFtZT1hdWJpbwogdmVyc2lvbj0wLjQuOQotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9d2FmMwogIyBYWFggbGFzaCwgcHVyZSBhbmQgc3dp ZyBzdXBwb3J0LgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHR4dDJtYW4iCgpGcm9tIDE4 OTkwYzgzN2U3NjBjZWI0ODUxZjcxOGY3ZGMzMDE4MmUyNjUyMzQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNi8xMTVdIGF1ZGFjaW91cy1w bHVnaW5zOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIC4uLi9hdWRhY2lvdXMtcGx1Z2lu cy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggICB8IDQzICsrKysrKysrKysrKysrKysrKysKIHNyY3Br Z3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVz IGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNo IGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNGU1ZTM0MDk5ZDcxYwotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBh dGNoCkBAIC0wLDAgKzEsNDMgQEAKK2NvbW1pdCAyOThhYTM3MWM1NmMyZjUyYzI1YTMzZDliZGVj NDkxOGIxMWNlYmRjCitBdXRob3I6IHRpYmVxdWFkb3JpYW4gPHRpYmVxdWFkb3JpYW5AcG9zdGVv LmRlPgorRGF0ZTogICBTYXQgTWFyIDE5IDE4OjQwOjEyIDIwMjIgKzAxMDAKKworICAgIGF1ZGFj aW91cy1wbHVnaW5zOiByZWJ1aWxkIGFnYWluc3QgZmZtcGVnLTUuMAorCitkaWZmIC0tZ2l0IGEv c3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2ggYi9zcmNw a2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjYxN2MxMTIxNWIKKy0tLSAvZGV2L251bGwK KysrKyBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNo CitAQCAtMCwwICsxLDMxIEBACisrRnJvbSBmNjBiZWI0MDBlZWIxZTQ3NzhiYmZkNzM4YmM0YTRj Y2VmM2RlNTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorK0Zyb206IEpvaG4gTGluZGdyZW4g PGpvaG5AamxpbmRncmVuLm5ldD4KKytEYXRlOiBTYXQsIDUgTWFyIDIwMjIgMTI6MDU6MzQgLTA1 MDAKKytTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIEZGbXBlZyA1LjAKKysKKystLS0K Kysgc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjIHwgNCArKy0tCisrIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisrCisrZGlmZiAtLWdpdCBhL3NyYy9m ZmF1ZGlvL2ZmYXVkaW8tY29yZS5jYyBiL3NyYy9mZmF1ZGlvL2ZmYXVkaW8tY29yZS5jYworK2lu ZGV4IDE2ZGM2M2UzYS4uYTJiOTVmZDZjIDEwMDY0NAorKy0tLSBhL3NyYy9mZmF1ZGlvL2ZmYXVk aW8tY29yZS5jYworKysrKyBiL3NyYy9mZmF1ZGlvL2ZmYXVkaW8tY29yZS5jYworK0BAIC0yNzQs NyArMjc0LDcgQEAgc3RhdGljIEFWSW5wdXRGb3JtYXQgKiBnZXRfZm9ybWF0X2J5X2NvbnRlbnQg KGNvbnN0IGNoYXIgKiBuYW1lLCBWRlNGaWxlICYgZmlsZSkKKysgICAgICAgICBBVlByb2JlRGF0 YSBkID0ge25hbWUsIGJ1ZiwgZmlsbGVkfTsKKysgICAgICAgICBzY29yZSA9IHRhcmdldDsKKysg CisrLSAgICAgICAgZiA9IGF2X3Byb2JlX2lucHV0X2Zvcm1hdDIgKCYgZCwgdHJ1ZSwgJiBzY29y ZSk7CisrKyAgICAgICAgZiA9IChBVklucHV0Rm9ybWF0ICopIGF2X3Byb2JlX2lucHV0X2Zvcm1h dDIgKCYgZCwgdHJ1ZSwgJiBzY29yZSk7CisrICAgICAgICAgaWYgKGYpCisrICAgICAgICAgICAg IGJyZWFrOworKyAKKytAQCAtMzQ3LDcgKzM0Nyw3IEBAIHN0YXRpYyBib29sIGZpbmRfY29kZWMg KEFWRm9ybWF0Q29udGV4dCAqIGMsIENvZGVjSW5mbyAqIGNpbmZvKQorKyAjZW5kaWYKKysgICAg ICAgICBpZiAoc3RyZWFtICYmIHN0cmVhbS0+Y29kZWNwYXIgJiYgc3RyZWFtLT5jb2RlY3Bhci0+ Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pCisrICAgICAgICAgeworKy0gICAgICAg ICAgICBBVkNvZGVjICogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlciAoc3RyZWFtLT5jb2Rl Y3Bhci0+Y29kZWNfaWQpOworKysgICAgICAgICAgICBBVkNvZGVjICogY29kZWMgPSAoQVZDb2Rl YyAqKSBhdmNvZGVjX2ZpbmRfZGVjb2RlciAoc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQpOwor KyAKKysgICAgICAgICAgICAgaWYgKGNvZGVjKQorKyAgICAgICAgICAgICB7CmRpZmYgLS1naXQg YS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9hdWRhY2lvdXMt cGx1Z2lucy90ZW1wbGF0ZQppbmRleCAwNWU1M2E5YWRmNzhmLi40YjE5NjhlMDNkZTc4IDEwMDY0 NAotLS0gYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv YXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiAjS2VlcCBpbiBzeW5j IHdpdGggYXVkYWNpb3VzIQogcGtnbmFtZT1hdWRhY2lvdXMtcGx1Z2lucwogdmVyc2lvbj00LjMu MQotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9h cmdzPSIkKHZvcHRfYm9vbCBndGszIGd0aykgJCh2b3B0X2Jvb2wgZ3RrMykKICAkKHZvcHRfYm9v bCBxdCkgJCh2b3B0X2Jvb2wgcXQgcXQ2KSIKCkZyb20gZjg5NmM5YWQ1ZDBlNjg3MTQwMDNlNjI4 MGZjZGUwOTNmODZkMmFkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDE3LzExNV0gYXVkYWNpdHk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40 LjMKCi0tLQogc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5n ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2F1ZGFjaXR5L3RlbXBsYXRlIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQppbmRleCA3YThl NzllYTUzMGNkLi40NjRjODE0NGEzZDQ1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1ZGFjaXR5L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdhdWRhY2l0eScKIHBrZ25hbWU9YXVkYWNpdHkKIHZlcnNpb249 My4zLjMKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9o ZWxwZXI9ImNtYWtlLXd4V2lkZ2V0cy1ndGszIHFlbXUiCiBjb25maWd1cmVfYXJncz0iLURhdWRh Y2l0eV91c2VfZmZtcGVnPWxvYWRlZCAtRGF1ZGFjaXR5X2xpYl9wcmVmZXJlbmNlPXN5c3RlbQpA QCAtMTAsNyArMTAsNyBAQCBjb25maWd1cmVfYXJncz0iLURhdWRhY2l0eV91c2VfZmZtcGVnPWxv YWRlZCAtRGF1ZGFjaXR5X2xpYl9wcmVmZXJlbmNlPXN5c3RlbQogIC1EYXVkYWNpdHlfaGFzX3Zz dDM9bm8iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2V0dGV4dCBweXRob24zIgogbWFr ZWRlcGVuZHM9Ind4V2lkZ2V0cy1ndGszLWRldmVsIGd0ayszLWRldmVsIGV4cGF0LWRldmVsIGxh bWUtZGV2ZWwKLSBsaWJzb3hyLWRldmVsIHBvcnRhdWRpby1kZXZlbCBzcWxpdGUtZGV2ZWwgbGli Y3VybC1kZXZlbCBmZm1wZWctZGV2ZWwKKyBsaWJzb3hyLWRldmVsIHBvcnRhdWRpby1kZXZlbCBz cWxpdGUtZGV2ZWwgbGliY3VybC1kZXZlbCBmZm1wZWc0LWRldmVsCiAgbGliaWQzdGFnLWRldmVs IGxpYm1hZC1kZXZlbCB2YW1wLXBsdWdpbi1zZGstZGV2ZWwgbGlib2dnLWRldmVsCiAgbGlidm9y YmlzLWRldmVsIGxpYmZsYWMtZGV2ZWwgbGlsdi1kZXZlbCBsdjIgc2VyZC1kZXZlbCBzb3JkLWRl dmVsCiAgc3JhdG9tLWRldmVsIHN1aWwtZGV2ZWwgcG9ydG1pZGktZGV2ZWwgc291bmR0b3VjaC1k ZXZlbCB0d29sYW1lLWRldmVsCgpGcm9tIGJlYTRjMmUzNmY4MjI3YWNlZDlmZTk0MDY3NTllMWU2 ZmZlMmRmMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxOC8xMTVdIGF2aWRlbXV4OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F2aWRlbXV4L3RlbXBs YXRlIGIvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZQppbmRleCAyNTNhMDI0M2UyMjU5Li41NTcy ODU5ODJkMmI4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdhdmlkZW11eCcKIHBrZ25hbWU9YXZpZGVtdXgKIHZlcnNpb249Mi44LjAKLXJldmlzaW9u PTIKK3JldmlzaW9uPTMKICMgQ2FuJ3QgYmUgY29tcGlsZWQgZm9yIGFhcmNoNjQsIGFybSogb3Ig bWlwcyoKIGFyY2hzPSJ4ODZfNjQqIGk2ODYqIgogaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBwa2ct Y29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1kZXZlbCB0YXIgeWFzbSIKCkZyb20gMWI1NWJlN2Iw MTA4OTM3YmRkYzE5YTM1ZWY2MTVkNjFlYzk3Mzk4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE5LzExNV0gYmxlbmRlcjogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUgfCA0ICsrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlIGIvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlCmlu ZGV4IDA1ZmRiZjhmNzQ3ZTIuLjA5M2Q2ZDIwMDRlOTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmxl bmRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKQEAgLTksOCArOSw4 IEBAIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfSU5TVEFMTF9QT1JUQUJMRT1PRkYgLURXSVRIX1BZ VEhPTl9JTlNUQUxMPU9GRgogIC1EV0lUSF9KQUNLPU9OIC1EV0lUSF9DT0RFQ19GRk1QRUc9T04g LURXSVRIX0NPREVDX1NOREZJTEU9T04gLURXSVRIX09QRU5NUD1PTgogIC1EV0lUSF9GRlRXMz1P TiAtRFdJVEhfTU9EX09DRUFOU0lNPU9OIC1EV0lUSF9DWUNMRVNfRU1CUkVFPU9GRiAtRFdJVEhf T1BFTkNPTE9SSU89T04KICAtRFdJVEhfSU1BR0VfT1BFTkVYUj1PTiAtRFdJVEhfSU1BR0VfT1BF TkpQRUc9T04gLURXSVRIX09QRU5TVUJESVY9T04KLSAtRFdJVEhfT1BFTkNPTExBREE9T04gLURX SVRIX1NZU1RFTV9HTEVXPU9OIC1EV0lUSF9PUEVOVkRCPU9OIC1EV0lUSF9BTEVNQklDPU9OCi0g LURXSVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hPU1RfV0FZTEFORD1PTiAtRFdJVEhfR0hPU1Rf TElCREVDT1I9T04KKyAtRFdJVEhfT1BFTkNPTExBREE9T04gLURXSVRIX09QRU5WREI9T04gLURX SVRIX0FMRU1CSUM9T04KKyAtRFdJVEhfR0hPU1RfWDExPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5E PU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EX0xJQkRFQ09SPU9OCiAgLURXSVRIX0JVSUxESU5GTz1P RkYgLURQWVRIT05fVkVSU0lPTj0ke3B5M192ZXJ9IC1EUFlUSE9OX0xJQlBBVEg9L3Vzci9saWIK ICAtRFBZVEhPTl9MSUJSQVJZPXB5dGhvbiR7cHkzX3Zlcn0ke3B5M19hYml2ZXJ9IC1EUFlUSE9O X0lOQ0xVREVfRElSUz0vJHtweTNfaW5jfQogIC1EV0lUSF9TWVNURU1fTFpPPU9OIC1EV0lUSF9T WVNURU1fRUlHRU4zPU9OIC1EV0lUSF9TWVNURU1fRlJFRVRZUEU9T04iCgpGcm9tIDZkMWY1YTYz OTMzZGMyOGJjNjA5MDM2MzI4MTRlODlmNmIxZDA5MzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMC8xMTVdIGNhbnRhdGE6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCmluZGV4 IDRiNDE3ZDgwZDVjMmQuLjhhOTBhYWE0YzA3YTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2FudGF0 YS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjYW50YXRhJwogcGtnbmFtZT1jYW50YXRhCiB2ZXJzaW9u PTIuNS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyBxdDUtdG9vbHMi CiBtYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS10b29scy1kZXZlbCBxdDUtc3ZnLWRldmVsIHF0 NS14bWxwYXR0ZXJucy1kZXZlbAoKRnJvbSA4YzZjMGUwMjBhOGQ2MGNhNzc0MGJmODdhMDE5MWRh ZWQ0ZWIzZmU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMjEvMTE1XSBjY2V4dHJhY3RvcjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoK LS0tCiBzcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Y2NleHRyYWN0b3IvdGVtcGxhdGUgYi9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCmluZGV4 IDlhYmNkODI4NTJiMjcuLjZlY2NhZDU4ODVhZjkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2NleHRy YWN0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQpAQCAtMSwx MiArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2NleHRyYWN0b3InCiBwa2duYW1lPWNj ZXh0cmFjdG9yCiB2ZXJzaW9uPTAuOTMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3dy a3NyYz0ibGludXgiCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0i LS1lbmFibGUtb2NyIC0tZW5hYmxlLWhhcmRzdWJ4IgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFr ZSBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2Ny LWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2VkZXBlbmRzPSJsZXB0b25pY2EtZGV2ZWwgdGVzc2Vy YWN0LW9jci1kZXZlbCBmZm1wZWc0LWRldmVsIgogc2hvcnRfZGVzYz0iRXh0cmFjdCBzdWJ0aXRs ZXMgZnJvbSB2aWRlbyBzdHJlYW1zIgogbWFpbnRhaW5lcj0ibmV3Ymx1ZW1vb24gPGJsYXVtb2xj aEBtYWlsYm94Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgoKRnJvbSA1Mzc1ZWIw NTA4ZDEzMTg4N2QxZTQyYzliZWU1MWQ1MGU2M2Y4ZjU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjIvMTE1XSBjaHJvbWFwcmludDogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Nocm9tYXByaW50L3BhdGNoZXMvZmZt cGVnNS5wYXRjaCB8IDU2OSArKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2Nocm9tYXBy aW50L3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA1NzAg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv Y2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9j aHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2Nocm9tYXByaW50L3Bh dGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwLi5hOWZkMzA3YTIzYzhhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWFwcmlu dC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw1NjkgQEAKK0Zyb20gOGNjYWQ2OTM3 MTc3YjFiOTJlNDBhYjhmNDQ0N2VhMjdiYWMwMDlhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206ID0/VVRGLTg/cT9MdWs9QzM9QTE9QzU9QTE9MjBMYWxpbnNrPUMzPUJEPz0gPGxhbGlu c2t5QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNCBOb3YgMjAyMiAyMTo0NzozOCArMDEwMAorU3Vi amVjdDogW1BBVENIXSBVc2UgRkZtcGVnIDUueCAoIzEyMCkKKworKiBVc2UgRkZtcGVnIDUuMS4y IGZvciBDSSBidWlsZHMKKworKiBCdWlsZCBvbiBVYnVudHUgMjAuMDQKKworKiBVcGdyYWRlIGNv ZGUgdG8gRkZtcGVnIDUueCBBUElzCisKKyogT25seSBzZXQgRkZtcGVnIGluY2x1ZGUgZGlycyBp ZiBidWlsZGluZyB0b29scworCisqIE5vIGxvbmdlciBuZWVkZWQKKworKiBVc2UgdWJ1bnR1IDIw LjA0CistLS0KKyAuZ2l0aHViL3dvcmtmbG93cy9idWlsZC55bWwgICAgICAgICAgICAgICAgICAg fCAgIDYgKy0KKyBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTYgLS0KKyBwYWNrYWdlL2J1aWxkLnNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDQgKy0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oICAgICAgICAgICAg fCAgIDIgLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCB8 ICA3MiAtLS0tLS0tCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBs ZS5oIHwgIDE4ICstCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaCAgICAgICAgICAg ICAgIHwgMTk3ICsrKysrKysrKy0tLS0tLS0tLQorIHRlc3RzL0NNYWtlTGlzdHMudHh0ICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNiArCisgOCBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0 aW9ucygrKSwgMTk5IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKKworZGlmZiAtLWdpdCBhL0NNYWtl TGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGY4ZDZhMzIuLjRkYTI0MDUgMTAwNjQ0 CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC04NCw5ICs4 NCw2IEBAIGZpbmRfcGFja2FnZShGRm1wZWcpCisgaWYoRkZNUEVHX0xJQlJBUklFUykKKyAJY21h a2VfcHVzaF9jaGVja19zdGF0ZShSRVNFVCkKKyAJc2V0KENNQUtFX1JFUVVJUkVEX0xJQlJBUklF UyAke0ZGTVBFR19MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0gLWxtKQorLQlj aGVja19mdW5jdGlvbl9leGlzdHMoYXZfcGFja2V0X3VucmVmIEhBVkVfQVZfUEFDS0VUX1VOUkVG KQorLQljaGVja19mdW5jdGlvbl9leGlzdHMoYXZfZnJhbWVfYWxsb2MgSEFWRV9BVl9GUkFNRV9B TExPQykKKy0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X2ZyYW1lX2ZyZWUgSEFWRV9BVl9GUkFN RV9GUkVFKQorIAljbWFrZV9wb3BfY2hlY2tfc3RhdGUoKQorIGVuZGlmKCkKKworQEAgLTE2Mywx NCArMTYwLDExIEBAIG1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0ZGVF9MSUJ9IGZvciBGRlQgY2Fs Y3VsYXRpb25zIikKKyBpZihOT1QgQVVESU9fUFJPQ0VTU09SX0xJQikKKyAJaWYoRkZNUEVHX0xJ QlNXUkVTQU1QTEVfRk9VTkQpCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQiAic3dyZXNhbXBs ZSIpCistCWVsc2VpZihGRk1QRUdfTElCQVZSRVNBTVBMRV9GT1VORCkKKy0JCXNldChBVURJT19Q Uk9DRVNTT1JfTElCICJhdnJlc2FtcGxlIikKKyAJZW5kaWYoKQorIGVuZGlmKCkKKworIGlmKEFV RElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwgInN3cmVzYW1wbGUiKQorIAlpZihGRk1QRUdfTElC U1dSRVNBTVBMRV9GT1VORCkKKy0JCXNldChVU0VfQVZSRVNBTVBMRSBPRkYpCisgCQlzZXQoVVNF X1NXUkVTQU1QTEUgT04pCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQlJBUklFUyAke0ZGTVBF R19MSUJTV1JFU0FNUExFX0xJQlJBUklFU30pCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0lOQ0xV REVfRElSUyAke0ZGTVBFR19MSUJTV1JFU0FNUExFX0lOQ0xVREVfRElSU30pCitAQCAtMTc4LDE2 ICsxNzIsNiBAQCBpZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJzd3Jlc2FtcGxlIikK KyAJCW1lc3NhZ2UoRkFUQUxfRVJST1IgIlNlbGVjdGVkICR7QVVESU9fUFJPQ0VTU09SX0xJQn0g Zm9yIGF1ZGlvIHByb2Nlc3NpbmcsIGJ1dCB0aGUgbGlicmFyeSBpcyBub3QgZm91bmQiKQorIAll bmRpZigpCisgCW1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZv ciBhdWRpbyBjb252ZXJzaW9uIikKKy1lbHNlaWYoQVVESU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVB TCAiYXZyZXNhbXBsZSIpCistCWlmKEZGTVBFR19MSUJBVlJFU0FNUExFX0ZPVU5EKQorLQkJc2V0 KFVTRV9BVlJFU0FNUExFIE9OKQorLQkJc2V0KFVTRV9TV1JFU0FNUExFIE9GRikKKy0JCXNldChB VURJT19QUk9DRVNTT1JfTElCUkFSSUVTICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVfTElCUkFSSUVT fSkKKy0JCXNldChBVURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJTICR7RkZNUEVHX0xJQkFWUkVT QU1QTEVfSU5DTFVERV9ESVJTfSkKKy0JZWxzZSgpCistCQltZXNzYWdlKEZBVEFMX0VSUk9SICJT ZWxlY3RlZCAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBwcm9jZXNzaW5nLCBidXQg dGhlIGxpYnJhcnkgaXMgbm90IGZvdW5kIikKKy0JZW5kaWYoKQorLQltZXNzYWdlKFNUQVRVUyAi VXNpbmcgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gY29udmVyc2lvbiIpCisgZWxz ZSgpCisgCW1lc3NhZ2UoU1RBVFVTICJCdWlsZGluZyB3aXRob3V0IGF1ZGlvIGNvbnZlcnNpb24g c3VwcG9ydCwgcGxlYXNlIGluc3RhbGwgRkZtcGVnIHdpdGggbGlic3dyZXNhbXBsZSIpCisgZW5k aWYoKQorZGlmZiAtLWdpdCBhL3BhY2thZ2UvYnVpbGQuc2ggYi9wYWNrYWdlL2J1aWxkLnNoCitp bmRleCBkYTYzMWFlLi5iNDFkMzZlIDEwMDc1NQorLS0tIGEvcGFja2FnZS9idWlsZC5zaAorKysr IGIvcGFja2FnZS9idWlsZC5zaAorQEAgLTcsOCArNyw4IEBAIHNldCAtZXV4CisKKyBCQVNFX0RJ Uj0kKGNkICQoZGlybmFtZSAkMCkvLi4gJiYgcHdkKQorCistRkZNUEVHX1ZFUlNJT049NC40LjEK Ky1GRk1QRUdfQlVJTERfVEFHPXY0LjQuMS0xCisrRkZNUEVHX1ZFUlNJT049NS4xLjIKKytGRk1Q RUdfQlVJTERfVEFHPXYke0ZGTVBFR19WRVJTSU9OfS0xCisKKyBUTVBfQlVJTERfRElSPSRCQVNF X0RJUi8kKG1rdGVtcCAtZCBidWlsZC5YWFhYWFhYWCkKKyB0cmFwICdybSAtcmYgJFRNUF9CVUlM RF9ESVInIEVYSVQKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nv ci5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAoraW5kZXggNzYyOGZjNy4u MzlmNGY2ZCAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgK KysrKyBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKK0BAIC0xMCw4ICsxMCw2 IEBACisKKyAjaWYgZGVmaW5lZChVU0VfU1dSRVNBTVBMRSkKKyAjaW5jbHVkZSAiYXVkaW8vZmZt cGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgiCistI2VsaWYgZGVmaW5lZChVU0VfQVZS RVNBTVBMRSkKKy0jaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2Ft cGxlLmgiCisgI2Vsc2UKKyAjZXJyb3IgIm5vIGF1ZGlvIHByb2Nlc3NpbmcgbGlicmFyeSIKKyAj ZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJl c2FtcGxlLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgK K2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggYmQ4NWY5Mi4uMDAwMDAwMAorLS0tIGEv c3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCisrKysgL2Rldi9u dWxsCitAQCAtMSw3MiArMCwwIEBACistLy8gQ29weXJpZ2h0IChDKSAyMDE2ICBMdWthcyBMYWxp bnNreQorLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSwgc2VlIHRoZSBMSUNF TlNFIGZpbGUgZm9yIGRldGFpbHMuCistCistI2lmbmRlZiBDSFJPTUFQUklOVF9BVURJT19GRk1Q RUdfQVVESU9fUFJPQ0VTU09SX0FWUkVTQU1QTEVfSF8KKy0jZGVmaW5lIENIUk9NQVBSSU5UX0FV RElPX0ZGTVBFR19BVURJT19QUk9DRVNTT1JfQVZSRVNBTVBMRV9IXworLQorLWV4dGVybiAiQyIg eworLSNpbmNsdWRlIDxsaWJhdnJlc2FtcGxlL2F2cmVzYW1wbGUuaD4KKy19CistCistbmFtZXNw YWNlIGNocm9tYXByaW50IHsKKy0KKy1jbGFzcyBGRm1wZWdBdWRpb1Byb2Nlc3NvciB7CistcHVi bGljOgorLQlGRm1wZWdBdWRpb1Byb2Nlc3NvcigpIHsKKy0JCW1fcmVzYW1wbGVfY3R4ID0gYXZy ZXNhbXBsZV9hbGxvY19jb250ZXh0KCk7CistCX0KKy0KKy0JfkZGbXBlZ0F1ZGlvUHJvY2Vzc29y KCkgeworLQkJYXZyZXNhbXBsZV9mcmVlKCZtX3Jlc2FtcGxlX2N0eCk7CistCX0KKy0KKy0Jdm9p ZCBTZXRDb21wYXRpYmxlTW9kZSgpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4 LCAiZmlsdGVyX3NpemUiLCAxNiwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0 eCwgInBoYXNlX3NoaWZ0IiwgOCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0 eCwgImxpbmVhcl9pbnRlcnAiLCAxLCAwKTsKKy0JCWF2X29wdF9zZXRfZG91YmxlKG1fcmVzYW1w bGVfY3R4LCAiY3V0b2ZmIiwgMC44LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0Q2hhbm5l bExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jl c2FtcGxlX2N0eCwgImluX2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQl9 CistCistCXZvaWQgU2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zv cm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJpbl9zYW1wbGVfZm10 Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRJbnB1dFNhbXBsZVJhdGUo aW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImlu X3NhbXBsZV9yYXRlIiwgc2FtcGxlX3JhdGUsIDApOworLQl9CistCistCXZvaWQgU2V0T3V0cHV0 Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2lu dChtX3Jlc2FtcGxlX2N0eCwgIm91dF9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LCAw KTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBz YW1wbGVfZm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9z YW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRT YW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBs ZV9jdHgsICJvdXRfc2FtcGxlX2ZtdCIsIHNhbXBsZV9yYXRlLCAwKTsKKy0JfQorLQorLQlpbnQg SW5pdCgpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX29wZW4obV9yZXNhbXBsZV9jdHgpOworLQl9 CistCistCWludCBDb252ZXJ0KHVpbnQ4X3QgKipvdXQsIGludCBvdXRfY291bnQsIGNvbnN0IHVp bnQ4X3QgKippbiwgaW50IGluX2NvdW50KSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9jb252ZXJ0 KG1fcmVzYW1wbGVfY3R4LCBvdXQsIDAsIG91dF9jb3VudCwgKHVpbnQ4X3QgKiopIGluLCAwLCBp bl9jb3VudCk7CistCX0KKy0KKy0JaW50IEZsdXNoKHVpbnQ4X3QgKipvdXQsIGludCBvdXRfY291 bnQpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX3JlYWQobV9yZXNhbXBsZV9jdHgsIG91dCwgb3V0 X2NvdW50KTsKKy0JfQorLQorLXByaXZhdGU6CistCUFWQXVkaW9SZXNhbXBsZUNvbnRleHQgKm1f cmVzYW1wbGVfY3R4ID0gbnVsbHB0cjsKKy19OworLQorLX07IC8vIG5hbWVzcGFjZSBjaHJvbWFw cmludAorLQorLSNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJv Y2Vzc29yX3N3cmVzYW1wbGUuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3 cmVzYW1wbGUuaAoraW5kZXggYjg2MjY2Yi4uYjFkNGJlYSAxMDA2NDQKKy0tLSBhL3NyYy9hdWRp by9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAorKysrIGIvc3JjL2F1ZGlvL2Zm bXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCitAQCAtMjgsMzAgKzI4LDI4IEBAIHB1 YmxpYzoKKyAJCWF2X29wdF9zZXRfZG91YmxlKG1fc3dyX2N0eCwgImN1dG9mZiIsIDAuOCwgMCk7 CisgCX0KKworLQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5 b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpY2wiLCBjaGFubmVsX2xheW91 dCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpY2giLCBhdl9nZXRfY2hhbm5l bF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQpLCAwKTsKKysJdm9pZCBTZXRJbnB1 dENoYW5uZWxMYXlvdXQoQVZDaGFubmVsTGF5b3V0ICpjaGFubmVsX2xheW91dCkgeworKwkJYXZf b3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaW5fY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91 dC0+dS5tYXNrLCAwKTsKKyAJfQorCisgCXZvaWQgU2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZTYW1w bGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAi aXNmIiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9mbXQobV9zd3Jf Y3R4LCAiaW5fc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworIAl9CisKKyAJdm9pZCBT ZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludCht X3N3cl9jdHgsICJpc3IiLCBzYW1wbGVfcmF0ZSwgMCk7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3 cl9jdHgsICJpbl9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJfQorCistCXZvaWQg U2V0T3V0cHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9v cHRfc2V0X2ludChtX3N3cl9jdHgsICJvY2wiLCBjaGFubmVsX2xheW91dCwgMCk7CistCQlhdl9v cHRfc2V0X2ludChtX3N3cl9jdHgsICJvY2giLCBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJfY2hh bm5lbHMoY2hhbm5lbF9sYXlvdXQpLCAwKTsKKysJdm9pZCBTZXRPdXRwdXRDaGFubmVsTGF5b3V0 KEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpIHsKKysJCWF2X29wdF9zZXRfaW50KG1f c3dyX2N0eCwgIm91dF9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LT51Lm1hc2ssIDAp OworIAl9CisKKyAJdm9pZCBTZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2Ft cGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3NmIiwgc2FtcGxl X2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAib3V0X3Nh bXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJfQorCisgCXZvaWQgU2V0T3V0cHV0U2Ft cGxlUmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwg Im9zciIsIHNhbXBsZV9yYXRlLCAwKTsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm91 dF9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJfQorCisgCWludCBJbml0KCkgewor ZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmggYi9zcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3JlYWRlci5oCitpbmRleCA1NTUwMTY0Li4xYzZiMzQ2IDEwMDY0NAorLS0t IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBl Z19hdWRpb19yZWFkZXIuaAorQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgorIAlib29sIFJlYWQo Y29uc3QgaW50MTZfdCAqKmRhdGEsIHNpemVfdCAqc2l6ZSk7CisKKyAJYm9vbCBJc09wZW4oKSBj b25zdCB7IHJldHVybiBtX29wZW5lZDsgfQorLQlib29sIElzRmluaXNoZWQoKSBjb25zdCB7IHJl dHVybiBtX2ZpbmlzaGVkICYmICFtX2dvdF9mcmFtZTsgfQorKwlib29sIElzRmluaXNoZWQoKSBj b25zdCB7IHJldHVybiAhbV9oYXNfbW9yZV9wYWNrZXRzICYmICFtX2hhc19tb3JlX2ZyYW1lczsg fQorCisgCXN0ZDo6c3RyaW5nIEdldEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQor IAlpbnQgR2V0RXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcl9jb2RlOyB9CitAQCAt NzQsMjAgKzc0LDE5IEBAIHByaXZhdGU6CisgCXVpbnQ4X3QgKm1fY29udmVydF9idWZmZXJbMV0g PSB7IG51bGxwdHIgfTsKKyAJaW50IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IDA7CisK Ky0JQVZJbnB1dEZvcm1hdCAqbV9pbnB1dF9mbXQgPSBudWxscHRyOworKwljb25zdCBBVklucHV0 Rm9ybWF0ICptX2lucHV0X2ZtdCA9IG51bGxwdHI7CisgCUFWRGljdGlvbmFyeSAqbV9pbnB1dF9v cHRzID0gbnVsbHB0cjsKKworIAlBVkZvcm1hdENvbnRleHQgKm1fZm9ybWF0X2N0eCA9IG51bGxw dHI7CisgCUFWQ29kZWNDb250ZXh0ICptX2NvZGVjX2N0eCA9IG51bGxwdHI7CistCUFWRnJhbWUg Km1fZnJhbWUgPSBudWxscHRyOworIAlpbnQgbV9zdHJlYW1faW5kZXggPSAtMTsKKyAJc3RkOjpz dHJpbmcgbV9lcnJvcjsKKyAJaW50IG1fZXJyb3JfY29kZSA9IDA7CistCWJvb2wgbV9maW5pc2hl ZCA9IGZhbHNlOworIAlib29sIG1fb3BlbmVkID0gZmFsc2U7CistCWludCBtX2dvdF9mcmFtZSA9 IDA7CistCUFWUGFja2V0IG1fcGFja2V0OworLQlBVlBhY2tldCBtX3BhY2tldDA7CisrCWJvb2wg bV9oYXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJYm9vbCBtX2hhc19tb3JlX2ZyYW1lcyA9IHRy dWU7CisrCUFWUGFja2V0ICptX3BhY2tldCA9IG51bGxwdHI7CisrCUFWRnJhbWUgKm1fZnJhbWUg PSBudWxscHRyOworCisgCWludCBtX291dHB1dF9zYW1wbGVfcmF0ZSA9IDA7CisgCWludCBtX291 dHB1dF9jaGFubmVscyA9IDA7CitAQCAtOTgsMTkgKzk3LDEyIEBAIHByaXZhdGU6CisKKyBpbmxp bmUgRkZtcGVnQXVkaW9SZWFkZXI6OkZGbXBlZ0F1ZGlvUmVhZGVyKCkgeworIAlhdl9sb2dfc2V0 X2xldmVsKEFWX0xPR19RVUlFVCk7CistCistCWF2X2luaXRfcGFja2V0KCZtX3BhY2tldCk7Cist CW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQltX3BhY2tldC5zaXplID0gMDsKKy0KKy0JbV9w YWNrZXQwID0gbV9wYWNrZXQ7CisgfQorCisgaW5saW5lIEZGbXBlZ0F1ZGlvUmVhZGVyOjp+RkZt cGVnQXVkaW9SZWFkZXIoKSB7CisgCUNsb3NlKCk7CisgCWF2X2RpY3RfZnJlZSgmbV9pbnB1dF9v cHRzKTsKKyAJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJbMF0pOworLQlhdl9wYWNrZXRfdW5y ZWYoJm1fcGFja2V0MCk7CisgfQorCisgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6OlNl dElucHV0Rm9ybWF0KGNvbnN0IGNoYXIgKm5hbWUpIHsKK0BAIC0xMzUsMTEgKzEyNywxMCBAQCBp bmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmls ZV9uYW1lKSB7CisKKyAJQ2xvc2UoKTsKKworLSAgICBhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQp OworLQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JbV9wYWNrZXQuc2l6ZSA9IDA7CistCist CW1fcGFja2V0MCA9IG1fcGFja2V0OworKwltX3BhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOwor KwlpZiAoIW1fcGFja2V0KSB7CisrCQlyZXR1cm4gZmFsc2U7CisrCX0KKworIAlyZXQgPSBhdmZv cm1hdF9vcGVuX2lucHV0KCZtX2Zvcm1hdF9jdHgsIGZpbGVfbmFtZS5jX3N0cigpLCBtX2lucHV0 X2ZtdCwgJm1faW5wdXRfb3B0cyk7CisgCWlmIChyZXQgPCAwKSB7CitAQCAtMTUzLDI2ICsxNDQs MzEgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJp bmcgJmZpbGVfbmFtZSkgeworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKy0JQVZDb2RlYyAqY29k ZWM7CisrCWNvbnN0IEFWQ29kZWMgKmNvZGVjOworIAlyZXQgPSBhdl9maW5kX2Jlc3Rfc3RyZWFt KG1fZm9ybWF0X2N0eCwgQVZNRURJQV9UWVBFX0FVRElPLCAtMSwgLTEsICZjb2RlYywgMCk7Cisg CWlmIChyZXQgPCAwKSB7CisgCQlTZXRFcnJvcigiQ291bGQgbm90IGZpbmQgYW55IGF1ZGlvIHN0 cmVhbSBpbiB0aGUgZmlsZSIsIHJldCk7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKyAJbV9zdHJl YW1faW5kZXggPSByZXQ7CisrCWF1dG8gc3RyZWFtID0gbV9mb3JtYXRfY3R4LT5zdHJlYW1zW21f c3RyZWFtX2luZGV4XTsKKworLQltX2NvZGVjX2N0eCA9IG1fZm9ybWF0X2N0eC0+c3RyZWFtc1tt X3N0cmVhbV9pbmRleF0tPmNvZGVjOworKwltX2NvZGVjX2N0eCA9IGF2Y29kZWNfYWxsb2NfY29u dGV4dDMoY29kZWMpOworIAltX2NvZGVjX2N0eC0+cmVxdWVzdF9zYW1wbGVfZm10ID0gQVZfU0FN UExFX0ZNVF9TMTY7CisKKysJcmV0ID0gYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRleHQobV9j b2RlY19jdHgsIHN0cmVhbS0+Y29kZWNwYXIpOworKwlpZiAocmV0IDwgMCkgeworKwkJU2V0RXJy b3IoIkNvdWxkIG5vdCBjb3B5IHRoZSBzdHJlYW0gcGFyYW1ldGVycyIsIHJldCk7CisrCQlyZXR1 cm4gZmFsc2U7CisrCX0KKysKKyAJcmV0ID0gYXZjb2RlY19vcGVuMihtX2NvZGVjX2N0eCwgY29k ZWMsIG51bGxwdHIpOworIAlpZiAocmV0IDwgMCkgeworIAkJU2V0RXJyb3IoIkNvdWxkIG5vdCBv cGVuIHRoZSBjb2RlYyIsIHJldCk7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworLQlpZiAoIW1f Y29kZWNfY3R4LT5jaGFubmVsX2xheW91dCkgeworLQkJbV9jb2RlY19jdHgtPmNoYW5uZWxfbGF5 b3V0ID0gYXZfZ2V0X2RlZmF1bHRfY2hhbm5lbF9sYXlvdXQobV9jb2RlY19jdHgtPmNoYW5uZWxz KTsKKy0JfQorKwlhdl9kdW1wX2Zvcm1hdChtX2Zvcm1hdF9jdHgsIDAsICJmb28iLCAwKTsKKwor IAltX2ZyYW1lID0gYXZfZnJhbWVfYWxsb2MoKTsKKyAJaWYgKCFtX2ZyYW1lKSB7CitAQCAtMTgz LDE5ICsxNzksMjMgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qg c3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgeworIAkJbV9vdXRwdXRfc2FtcGxlX3JhdGUgPSBtX2Nv ZGVjX2N0eC0+c2FtcGxlX3JhdGU7CisgCX0KKworLQlpZiAoIW1fb3V0cHV0X2NoYW5uZWxzKSB7 CistCQltX291dHB1dF9jaGFubmVscyA9IG1fY29kZWNfY3R4LT5jaGFubmVsczsKKysJQVZDaGFu bmVsTGF5b3V0IG91dHB1dF9jaGFubmVsX2xheW91dDsKKysJaWYgKG1fb3V0cHV0X2NoYW5uZWxz KSB7CisrCQlhdl9jaGFubmVsX2xheW91dF9kZWZhdWx0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQs IG1fb3V0cHV0X2NoYW5uZWxzKTsKKysJfSBlbHNlIHsKKysJCW1fb3V0cHV0X2NoYW5uZWxzID0g bV9jb2RlY19jdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsKKysJCWF2X2NoYW5uZWxfbGF5b3V0 X2RlZmF1bHQoJm91dHB1dF9jaGFubmVsX2xheW91dCwgbV9vdXRwdXRfY2hhbm5lbHMpOworIAl9 CisKKy0JaWYgKG1fY29kZWNfY3R4LT5zYW1wbGVfZm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2IHx8 IG1fY29kZWNfY3R4LT5jaGFubmVscyAhPSBtX291dHB1dF9jaGFubmVscyB8fCBtX2NvZGVjX2N0 eC0+c2FtcGxlX3JhdGUgIT0gbV9vdXRwdXRfc2FtcGxlX3JhdGUpIHsKKysJaWYgKG1fY29kZWNf Y3R4LT5zYW1wbGVfZm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2IHx8IG1fY29kZWNfY3R4LT5jaF9s YXlvdXQubmJfY2hhbm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMgfHwgbV9jb2RlY19jdHgtPnNh bXBsZV9yYXRlICE9IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7CisgCQltX2NvbnZlcnRlci5yZXNl dChuZXcgRkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSk7CisgCQltX2NvbnZlcnRlci0+U2V0Q29tcGF0 aWJsZU1vZGUoKTsKKyAJCW1fY29udmVydGVyLT5TZXRJbnB1dFNhbXBsZUZvcm1hdChtX2NvZGVj X2N0eC0+c2FtcGxlX2ZtdCk7CisgCQltX2NvbnZlcnRlci0+U2V0SW5wdXRTYW1wbGVSYXRlKG1f Y29kZWNfY3R4LT5zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZlcnRlci0+U2V0SW5wdXRDaGFubmVs TGF5b3V0KG1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCk7CisrCQltX2NvbnZlcnRlci0+U2V0 SW5wdXRDaGFubmVsTGF5b3V0KCYobV9jb2RlY19jdHgtPmNoX2xheW91dCkpOworIAkJbV9jb252 ZXJ0ZXItPlNldE91dHB1dFNhbXBsZUZvcm1hdChBVl9TQU1QTEVfRk1UX1MxNik7CisgCQltX2Nv bnZlcnRlci0+U2V0T3V0cHV0U2FtcGxlUmF0ZShtX291dHB1dF9zYW1wbGVfcmF0ZSk7CistCQlt X2NvbnZlcnRlci0+U2V0T3V0cHV0Q2hhbm5lbExheW91dChhdl9nZXRfZGVmYXVsdF9jaGFubmVs X2xheW91dChtX291dHB1dF9jaGFubmVscykpOworKwkJbV9jb252ZXJ0ZXItPlNldE91dHB1dENo YW5uZWxMYXlvdXQoJm91dHB1dF9jaGFubmVsX2xheW91dCk7CisgCQlhdXRvIHJldCA9IG1fY29u dmVydGVyLT5Jbml0KCk7CisgCQlpZiAocmV0ICE9IDApIHsKKyAJCQlTZXRFcnJvcigiQ291bGQg bm90IGNyZWF0ZSBhbiBhdWRpbyBjb252ZXJ0ZXIgaW5zdGFuY2UiLCByZXQpOworQEAgLTIwMywx MCArMjAzLDExIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0 ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCX0KKyAJfQorCisrCWF2X2NoYW5uZWxfbGF5b3V0 X3VuaW5pdCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0KTsKKysKKyAJbV9vcGVuZWQgPSB0cnVlOwor LQltX2ZpbmlzaGVkID0gZmFsc2U7CistCW1fZ290X2ZyYW1lID0gMDsKKy0JbV9uYl9wYWNrZXRz ID0gMDsKKysJbV9oYXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJbV9oYXNfbW9yZV9mcmFtZXMg PSB0cnVlOworIAltX2RlY29kZV9lcnJvciA9IDA7CisKKyAJcmV0dXJuIHRydWU7CitAQCAtMjE0 LDYgKzIxNSw3IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0 ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKworIGlubGluZSB2b2lkIEZGbXBlZ0F1ZGlvUmVhZGVy OjpDbG9zZSgpIHsKKyAJYXZfZnJhbWVfZnJlZSgmbV9mcmFtZSk7CisrCWF2X3BhY2tldF9mcmVl KCZtX3BhY2tldCk7CisKKyAJbV9zdHJlYW1faW5kZXggPSAtMTsKKworQEAgLTI1Miw5MSArMjU0 LDk4IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpSZWFkKGNvbnN0IGludDE2X3Qg KipkYXRhLCBzaXplX3QgKnNpemUpIHsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCisrCSpkYXRh ID0gbnVsbHB0cjsKKysJKnNpemUgPSAwOworKworIAlpbnQgcmV0OworKwlib29sIG5lZWRzX3Bh Y2tldCA9IGZhbHNlOworIAl3aGlsZSAodHJ1ZSkgeworLQkJd2hpbGUgKG1fcGFja2V0LnNpemUg PD0gMCkgeworLQkJCWF2X3BhY2tldF91bnJlZigmbV9wYWNrZXQwKTsKKy0JCQlhdl9pbml0X3Bh Y2tldCgmbV9wYWNrZXQpOworLQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQkJCW1fcGFj a2V0LnNpemUgPSAwOworLQkJCXJldCA9IGF2X3JlYWRfZnJhbWUobV9mb3JtYXRfY3R4LCAmbV9w YWNrZXQpOworKwkJd2hpbGUgKG5lZWRzX3BhY2tldCAmJiBtX3BhY2tldC0+c2l6ZSA9PSAwKSB7 CisrCQkJcmV0ID0gYXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9jdHgsIG1fcGFja2V0KTsKKyAJCQlp ZiAocmV0IDwgMCkgeworIAkJCQlpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CistCQkJCQltX2Zp bmlzaGVkID0gdHJ1ZTsKKysJCQkJCW5lZWRzX3BhY2tldCA9IGZhbHNlOworKwkJCQkJbV9oYXNf bW9yZV9wYWNrZXRzID0gZmFsc2U7CisgCQkJCQlicmVhazsKKy0JCQkJfSBlbHNlIHsKKysJCQkJ fQorKwkJCQlTZXRFcnJvcigiRXJyb3IgcmVhZGluZyBmcm9tIHRoZSBhdWRpbyBzb3VyY2UiLCBy ZXQpOworKwkJCQlyZXR1cm4gZmFsc2U7CisrCQkJfQorKwkJCWlmIChtX3BhY2tldC0+c3RyZWFt X2luZGV4ID09IG1fc3RyZWFtX2luZGV4KSB7CisrCQkJCW5lZWRzX3BhY2tldCA9IGZhbHNlOwor KwkJCX0gZWxzZSB7CisrCQkJCWF2X3BhY2tldF91bnJlZihtX3BhY2tldCk7CisrCQkJfQorKwkJ fQorKworKwkJaWYgKG1fcGFja2V0LT5zaXplICE9IDApIHsKKysJCQlyZXQgPSBhdmNvZGVjX3Nl bmRfcGFja2V0KG1fY29kZWNfY3R4LCBtX3BhY2tldCk7CisrCQkJaWYgKHJldCA8IDApIHsKKysJ CQkJaWYgKHJldCAhPSBBVkVSUk9SKEVBR0FJTikpIHsKKyAJCQkJCVNldEVycm9yKCJFcnJvciBy ZWFkaW5nIGZyb20gdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7CisgCQkJCQlyZXR1cm4gZmFsc2U7 CisgCQkJCX0KKy0JCQl9CistCQkJbV9wYWNrZXQwID0gbV9wYWNrZXQ7CistCQkJaWYgKG1fcGFj a2V0LnN0cmVhbV9pbmRleCAhPSBtX3N0cmVhbV9pbmRleCkgeworLQkJCQltX3BhY2tldC5kYXRh ID0gbnVsbHB0cjsKKy0JCQkJbV9wYWNrZXQuc2l6ZSA9IDA7CisgCQkJfSBlbHNlIHsKKy0JCQkJ bV9uYl9wYWNrZXRzKys7CisrCQkJCWF2X3BhY2tldF91bnJlZihtX3BhY2tldCk7CisgCQkJfQor IAkJfQorCistCQlyZXQgPSBhdmNvZGVjX2RlY29kZV9hdWRpbzQobV9jb2RlY19jdHgsIG1fZnJh bWUsICZtX2dvdF9mcmFtZSwgJm1fcGFja2V0KTsKKysJCXJldCA9IGF2Y29kZWNfcmVjZWl2ZV9m cmFtZShtX2NvZGVjX2N0eCwgbV9mcmFtZSk7CisgCQlpZiAocmV0IDwgMCkgeworLQkJCWlmICht X2RlY29kZV9lcnJvcikgeworLQkJCQlTZXRFcnJvcigiRXJyb3IgZGVjb2RpbmcgYXVkaW8gZnJh bWUiLCBtX2RlY29kZV9lcnJvcik7CistCQkJCXJldHVybiBmYWxzZTsKKysJCQlpZiAocmV0ID09 IEFWRVJST1JfRU9GKSB7CisrCQkJCW1faGFzX21vcmVfZnJhbWVzID0gZmFsc2U7CisrCQkJfSBl bHNlIGlmIChyZXQgPT0gQVZFUlJPUihFQUdBSU4pKSB7CisrCQkJCWlmIChtX2hhc19tb3JlX3Bh Y2tldHMpIHsKKysJCQkJCW5lZWRzX3BhY2tldCA9IHRydWU7CisrCQkJCQljb250aW51ZTsKKysJ CQkJfSBlbHNlIHsKKysJCQkJCW1faGFzX21vcmVfZnJhbWVzID0gZmFsc2U7CisrCQkJCX0KKyAJ CQl9CistCQkJbV9kZWNvZGVfZXJyb3IgPSByZXQ7CistCQkJbV9wYWNrZXQuZGF0YSA9IG51bGxw dHI7CistCQkJbV9wYWNrZXQuc2l6ZSA9IDA7CistCQkJY29udGludWU7CisrCQkJU2V0RXJyb3Io IkVycm9yIGRlY29kaW5nIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworKwkJCXJldHVybiBmYWxz ZTsKKyAJCX0KKworLQkJYnJlYWs7CistCX0KKy0KKy0JbV9kZWNvZGVfZXJyb3IgPSAwOworLQor LQljb25zdCBpbnQgZGVjb2RlZCA9IHN0ZDo6bWluKHJldCwgbV9wYWNrZXQuc2l6ZSk7CistCW1f cGFja2V0LmRhdGEgKz0gZGVjb2RlZDsKKy0JbV9wYWNrZXQuc2l6ZSAtPSBkZWNvZGVkOworLQor LQlpZiAobV9nb3RfZnJhbWUpIHsKKy0JCWlmIChtX2NvbnZlcnRlcikgeworLQkJCWlmIChtX2Zy YW1lLT5uYl9zYW1wbGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKSB7CistCQkJCWlu dCBsaW5zaXplOworLQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CistCQkJCW1f Y29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4KDEwMjQgKiA4LCBtX2ZyYW1lLT5u Yl9zYW1wbGVzKTsKKy0JCQkJcmV0ID0gYXZfc2FtcGxlc19hbGxvYyhtX2NvbnZlcnRfYnVmZmVy LCAmbGluc2l6ZSwgbV9jb2RlY19jdHgtPmNoYW5uZWxzLCBtX2NvbnZlcnRfYnVmZmVyX25iX3Nh bXBsZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKy0JCQkJaWYgKHJldCA8IDApIHsKKy0JCQkJ CVNldEVycm9yKCJDb3VsZG4ndCBhbGxvY2F0ZSBhdWRpbyBjb252ZXJ0ZXIgYnVmZmVyIiwgcmV0 KTsKKysJCWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gMCkgeworKwkJCWlmIChtX2NvbnZlcnRl cikgeworKwkJCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IG1fY29udmVydF9idWZmZXJfbmJf c2FtcGxlcykgeworKwkJCQkJaW50IGxpbnNpemU7CisrCQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0 X2J1ZmZlclswXSk7CisrCQkJCQltX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSBzdGQ6Om1h eCgxMDI0ICogOCwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CisrCQkJCQlyZXQgPSBhdl9zYW1wbGVz X2FsbG9jKG1fY29udmVydF9idWZmZXIsICZsaW5zaXplLCBtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0 Lm5iX2NoYW5uZWxzLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIEFWX1NBTVBMRV9GTVRf UzE2LCAxKTsKKysJCQkJCWlmIChyZXQgPCAwKSB7CisrCQkJCQkJU2V0RXJyb3IoIkNvdWxkbid0 IGFsbG9jYXRlIGF1ZGlvIGNvbnZlcnRlciBidWZmZXIiLCByZXQpOworKwkJCQkJCXJldHVybiBm YWxzZTsKKysJCQkJCX0KKysJCQkJfQorKwkJCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRl ci0+Q29udmVydChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMs IChjb25zdCB1aW50OF90ICoqKSBtX2ZyYW1lLT5kYXRhLCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsK KysJCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29u dmVydCBhdWRpbyIsIHJldCk7CisgCQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJCX0KKy0JCQl9Cist CQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkNvbnZlcnQobV9jb252ZXJ0X2J1ZmZl ciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCAoY29uc3QgdWludDhfdCAqKikgbV9mcmFt ZS0+ZGF0YSwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CistCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7 CistCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKy0JCQkJcmV0 dXJuIGZhbHNlOworLQkJCX0KKy0JCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVy dF9idWZmZXJbMF07CistCQkJKnNpemUgPSBuYl9zYW1wbGVzOworLQkJfSBlbHNlIHsKKy0JCQkq ZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fZnJhbWUtPmRhdGFbMF07CistCQkJKnNpemUgPSBt X2ZyYW1lLT5uYl9zYW1wbGVzOworLQkJfQorLQl9IGVsc2UgeworLQkJaWYgKG1fZmluaXNoZWQg JiYgbV9jb252ZXJ0ZXIpIHsKKy0JCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Rmx1 c2gobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKTsKKy0JCQlp ZiAobmJfc2FtcGxlcyA8IDApIHsKKy0JCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVk aW8iLCByZXQpOworLQkJCQlyZXR1cm4gZmFsc2U7CistCQkJfSBlbHNlIGlmIChuYl9zYW1wbGVz ID4gMCkgeworLQkJCQltX2dvdF9mcmFtZSA9IDE7CisgCQkJCSpkYXRhID0gKGNvbnN0IGludDE2 X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsKKyAJCQkJKnNpemUgPSBuYl9zYW1wbGVzOworKwkJ CX0gZWxzZSB7CisrCQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9mcmFtZS0+ZGF0YVsw XTsKKysJCQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9zYW1wbGVzOworKwkJCX0KKysJCX0gZWxzZSB7 CisrCQkJaWYgKG1fY29udmVydGVyKSB7CisrCQkJCWlmIChJc0ZpbmlzaGVkKCkpIHsKKysJCQkJ CWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5GbHVzaChtX2NvbnZlcnRfYnVmZmVyLCBt X2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpOworKwkJCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7 CisrCQkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworKwkJCQkJ CXJldHVybiBmYWxzZTsKKysJCQkJCX0gZWxzZSBpZiAobmJfc2FtcGxlcyA+IDApIHsKKysJCQkJ CQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07CisrCQkJCQkJ KnNpemUgPSBuYl9zYW1wbGVzOworKwkJCQkJfQorKwkJCQl9CisgCQkJfQorIAkJfQorLQl9CisK Ky0JcmV0dXJuIHRydWU7CisrCQlyZXR1cm4gdHJ1ZTsKKysJfQorIH0KKworIGlubGluZSB2b2lk IEZGbXBlZ0F1ZGlvUmVhZGVyOjpTZXRFcnJvcihjb25zdCBjaGFyICptZXNzYWdlLCBpbnQgZXJy bnVtKSB7CitkaWZmIC0tZ2l0IGEvdGVzdHMvQ01ha2VMaXN0cy50eHQgYi90ZXN0cy9DTWFrZUxp c3RzLnR4dAoraW5kZXggYTJiNTE3Yi4uMTIzZTY0MyAxMDA2NDQKKy0tLSBhL3Rlc3RzL0NNYWtl TGlzdHMudHh0CisrKysgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAorQEAgLTM4LDYgKzM4LDEyIEBA IHNldChTUkNTCisKKyBpZihCVUlMRF9UT09MUykKKyAJc2V0KFNSQ1MgJHtTUkNTfSAuLi9zcmMv YXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlcl90ZXN0LmNwcCkKKysgICAgaW5jbHVkZV9kaXJlY3Rv cmllcygKKysgICAgICAgICR7RkZNUEVHX0xJQkFWRk9STUFUX0lOQ0xVREVfRElSU30KKysgICAg ICAgICR7RkZNUEVHX0xJQkFWQ09ERUNfSU5DTFVERV9ESVJTfQorKyAgICAgICAgJHtGRk1QRUdf TElCQVZVVElMX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7QVVESU9fUFJPQ0VTU09SX0lOQ0xV REVfRElSU30KKysgICAgKQorIAlsaW5rX2xpYnJhcmllcyhmcGNhbGNfbGlicykKKyBlbmRpZigp CisKKy0tIAorMi4zOC4xCisKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWFwcmludC90ZW1w bGF0ZSBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKaW5kZXggN2VmNzgzODk0OWYzYS4u MWY3YmJjNzBhMjJjOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnY2hyb21hcHJpbnQnCiBwa2duYW1lPWNocm9tYXByaW50CiB2ZXJzaW9u PTEuNS4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1EQlVJTERfVE9PTFM9T04iCiBtYWtlX2NoZWNrX3RhcmdldD0iY2hlY2siCgpG cm9tIGVkOWVjOTI1YTJmNzMyZGFlZTY2MTFlZTg4NDhlYzEwZThiZTQ0MWEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMy8xMTVdIGNocm9t aXVtOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIC4uLi9wYXRjaGVzL2Nocm9taXVtLTEx OS1mZm1wZWctNC40LnBhdGNoICAgICB8IDIwIC0tLS0tLS0tCiBzcmNwa2dzL2Nocm9taXVtL3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCAgICAgICAgfCA0NyArKysrKysrKysrKysrKysrKysrCiBzcmNw a2dzL2Nocm9taXVtL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogMyBmaWxl cyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hyb21pdW0tMTE5LWZmbXBlZy00LjQu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVn NS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS0x MTktZmZtcGVnLTQuNC5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS0x MTktZmZtcGVnLTQuNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRkMDRi MTY2YmEzNy4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hy b21pdW0tMTE5LWZmbXBlZy00LjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBA Ci0tLS0gYS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjLm9yaWcKLSsrKyBiL21lZGlh L2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKLUBAIC0zOTAsNyArMzkwLDcgQEAKLSAKLSAgIHNj b3BlZF9yZWZwdHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOwotIAotLSAgICBzaXplX3Qgc2lkZV9k YXRhX3NpemUgPSAwOwotKyAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOwotICAgICB1aW50OF90 KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgIHBhY2tldC5n ZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAmc2lkZV9kYXRhX3Np emUpOwotIAotQEAgLTQ1Myw3ICs0NTMsNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhY2tldC0+c2l6ZSAtIGRhdGFfb2Zmc2V0KTsKLSAgICAgfQotIAotLSAg ICBzaXplX3Qgc2tpcF9zYW1wbGVzX3NpemUgPSAwOwotKyAgICBpbnQgc2tpcF9zYW1wbGVzX3Np emUgPSAwOwotICAgICBjb25zdCB1aW50MzJfdCogc2tpcF9zYW1wbGVzX3B0ciA9Ci0gICAgICAg ICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXZfcGFja2V0X2dldF9zaWRlX2Rh dGEoCi0gICAgICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9TS0lQX1NBTVBMRVMs ICZza2lwX3NhbXBsZXNfc2l6ZSkpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS9wYXRj aGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4yNGUyZGEzOGUzNGNh Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKQEAgLTAsMCArMSw0NyBAQAorLS0tIGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5j YwkyMDIzLTAxLTIzIDE3OjMzOjU3LjM2NjIxMzgwNSArMDIwMAorKysrIGIvbWVkaWEvZmlsdGVy cy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjQzOjA5LjI4MzQzNjk4MyArMDIwMAor QEAgLTkyLDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFjdFN0 YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0aW1l IGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsKKysgIGJhc2U6OlRpbWVE ZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8gRmlyc3QgdHJ5IHRvIHVz ZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKy0gIGlmIChzdHJlYW0tPnN0YXJ0X3Rp bWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorKyAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBr Tm9GRm1wZWdUaW1lc3RhbXApIC8vIEFWX05PUFRTX1ZBTFVFCisgICAgIHN0YXJ0X3RpbWUgPSBD b252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUp OworIAorLSAgLy8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2Rl Y3Mgd2hlcmUgd2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29k ZWNzKS4gVGhlIHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAoYXZf c3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtKSAhPSBrTm9GRm1wZWdUaW1lc3RhbXAgJiYKKy0g ICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IRVZDICYmCist ICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSDI2NCAmJgor LSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUc0KSB7 CistICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9wdHMgPQorLSAgICAgICAgQ29udmVy dEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgYXZfc3RyZWFtX2dldF9maXJzdF9kdHMo c3RyZWFtKSk7CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0 X3RpbWUgPSBmaXJzdF9wdHM7CistICB9CistCisgICByZXR1cm4gc3RhcnRfdGltZTsKKyB9Cisg CitAQCAtMTU5Nyw3ICsxNTg1LDcgQEAKKyAgIGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDogc3Ry ZWFtc18pIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtLT5Jc0VuYWJsZWQoKSAhPSBlbmFi bGVkKQorICAgICAgIGNvbnRpbnVlOworLSAgICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMo c3RyZWFtLT5hdl9zdHJlYW0oKSkgPT0ga0ludmFsaWRQVFNNYXJrZXIpCisrICAgIGlmIChzdHJl YW0tPmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorICAgICAgIGNv bnRpbnVlOworICAgICBpZiAoIWxvd2VzdF9zdGFydF90aW1lX3N0cmVhbSB8fAorICAgICAgICAg c3RyZWFtLT5zdGFydF90aW1lKCkgPCBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0tPnN0YXJ0X3Rp bWUoKSkgeworQEAgLTE2MTgsNyArMTYwNiw3IEBACisgICAgIGlmIChzdHJlYW0tPnR5cGUoKSAh PSBEZW11eGVyU3RyZWFtOjpWSURFTykKKyAgICAgICBjb250aW51ZTsKKyAKKy0gICAgaWYgKGF2 X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3RyZWFtKCkpID09IGtJbnZhbGlkUFRT TWFya2VyKQorKyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9O T1BUU19WQUxVRSkKKyAgICAgICBjb250aW51ZTsKKyAKKyAgICAgaWYgKCFzdHJlYW0tPklzRW5h YmxlZCgpKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv Y2hyb21pdW0vdGVtcGxhdGUKaW5kZXggYjAyMzk0NmYzZWM3Yi4uZmUzNmE2ZGNlMjBkMyAxMDA2 NDQKLS0tIGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Nocm9taXVt L3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogcGtnbmFtZT1jaHJvbWl1bQogIyBTZWUgaHR0cHM6 Ly9jaHJvbWl1bWRhc2guYXBwc3BvdC5jb20vcmVsZWFzZXM/cGxhdGZvcm09TGludXggZm9yIHRo ZSBsYXRlc3QgdmVyc2lvbgogdmVyc2lvbj0xMTkuMC42MDQ1LjEwNQotcmV2aXNpb249MworcmV2 aXNpb249NAogYXJjaHM9Imk2ODYqIHg4Nl82NCogYWFyY2g2NCogYXJtdjdsKiIKIGhvc3RtYWtl ZGVwZW5kcz0iCiAgJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQgbGx2bTE1IikKCkZyb20gMTEx ZjE1YWM2NmM4OWIwNDg4NDNjNjU5Y2MxODNkMGNjMTFmZjI2ZSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI0LzExNV0gY211czogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5w YXRjaCB8IDQ3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2NtdXMvcGF0Y2hl cy9mZm1wZWc2LnBhdGNoICAgICB8IDEyICsrKysrKysKIHNyY3BrZ3MvY211cy90ZW1wbGF0ZSAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygr KSwgNDggZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWl1bS9w YXRjaGVzL2ZmbXBlZzUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2NtdXMvcGF0 Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVz L2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRlMmRhMzhlMzRjYS4uMDAwMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDQ3ICswLDAgQEAKLS0tLSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIu Y2MJMjAyMy0wMS0yMyAxNzozMzo1Ny4zNjYyMTM4MDUgKzAyMDAKLSsrKyBiL21lZGlhL2ZpbHRl cnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wMS0yMyAxNzo0MzowOS4yODM0MzY5ODMgKzAyMDAK LUBAIC05MiwyNCArOTIsMTIgQEAKLSAKLSBzdGF0aWMgYmFzZTo6VGltZURlbHRhIEV4dHJhY3RT dGFydFRpbWUoQVZTdHJlYW0qIHN0cmVhbSkgewotICAgLy8gVGhlIGRlZmF1bHQgc3RhcnQgdGlt ZSBpcyB6ZXJvLgotLSAgYmFzZTo6VGltZURlbHRhIHN0YXJ0X3RpbWU7Ci0rICBiYXNlOjpUaW1l RGVsdGEgc3RhcnRfdGltZSA9IGtOb1RpbWVzdGFtcDsKLSAKLSAgIC8vIEZpcnN0IHRyeSB0byB1 c2UgIHRoZSB8c3RhcnRfdGltZXwgdmFsdWUgYXMgaXMuCi0tICBpZiAoc3RyZWFtLT5zdGFydF90 aW1lICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCkKLSsgIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0g a05vRkZtcGVnVGltZXN0YW1wKSAvLyBBVl9OT1BUU19WQUxVRQotICAgICBzdGFydF90aW1lID0g Q29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFydF90aW1l KTsKLSAKLS0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBmb3IgY29k ZWNzIHdoZXJlIHdlIGtub3cgUFRTID09IERUUwotLSAgLy8gKGV4Y2x1ZGVzIGFsbCBIMjZ4IGNv ZGVjcykuIFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgotLSAgaWYgKGF2 X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbSkgIT0ga05vRkZtcGVnVGltZXN0YW1wICYmCi0t ICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSEVWQyAmJgot LSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjQgJiYK LS0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkg ewotLSAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZmlyc3RfcHRzID0KLS0gICAgICAgIENvbnZl cnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2UsIGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRz KHN0cmVhbSkpOwotLSAgICBpZiAoZmlyc3RfcHRzIDwgc3RhcnRfdGltZSkKLS0gICAgICBzdGFy dF90aW1lID0gZmlyc3RfcHRzOwotLSAgfQotLQotICAgcmV0dXJuIHN0YXJ0X3RpbWU7Ci0gfQot IAotQEAgLTE1OTcsNyArMTU4NSw3IEBACi0gICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0 cmVhbXNfKSB7Ci0gICAgIGlmICghc3RyZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5h YmxlZCkKLSAgICAgICBjb250aW51ZTsKLS0gICAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRz KHN0cmVhbS0+YXZfc3RyZWFtKCkpID09IGtJbnZhbGlkUFRTTWFya2VyKQotKyAgICBpZiAoc3Ry ZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKLSAgICAgICBj b250aW51ZTsKLSAgICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKLSAgICAgICAg IHN0cmVhbS0+c3RhcnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5zdGFydF90 aW1lKCkpIHsKLUBAIC0xNjE4LDcgKzE2MDYsNyBAQAotICAgICBpZiAoc3RyZWFtLT50eXBlKCkg IT0gRGVtdXhlclN0cmVhbTo6VklERU8pCi0gICAgICAgY29udGludWU7Ci0gCi0tICAgIGlmIChh dl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0tPmF2X3N0cmVhbSgpKSA9PSBrSW52YWxpZFBU U01hcmtlcikKLSsgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZf Tk9QVFNfVkFMVUUpCi0gICAgICAgY29udGludWU7Ci0gCi0gICAgIGlmICghc3RyZWFtLT5Jc0Vu YWJsZWQoKSkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gg Yi9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAuLmZmYTk1YWI4MTExMDEKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0tLSBh L2lwL2ZmbXBlZy5jCisrKysgYi9pcC9mZm1wZWcuYworQEAgLTIwMiw5ICsyMDIsNiBAQCBzdGF0 aWMgaW50IGZmbXBlZ19vcGVuKHN0cnVjdCBpbnB1dF9wbHVnaW5fZGF0YSAqaXBfZGF0YSkKKyAJ CQlicmVhazsKKyAJCX0KKyAKKy0JCWlmIChjb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNf Q0FQX1RSVU5DQVRFRCkKKy0JCQljYy0+ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19UUlVOQ0FURUQ7 CistCisgCQlpZiAoYXZjb2RlY19vcGVuMihjYywgY29kZWMsIE5VTEwpIDwgMCkgeworIAkJCWRf cHJpbnQoImNvdWxkIG5vdCBvcGVuIGNvZGVjOiAlZCwgJXNcbiIsIGNjLT5jb2RlY19pZCwgYXZj b2RlY19nZXRfbmFtZShjYy0+Y29kZWNfaWQpKTsKKyAJCQllcnIgPSAtSVBfRVJST1JfVU5TVVBQ T1JURURfRklMRV9UWVBFOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbXVzL3RlbXBsYXRlIGIvc3Jj cGtncy9jbXVzL3RlbXBsYXRlCmluZGV4IDBkMTQzNjc0NGYxYjIuLmE2ZTRiNGZhODZjYjggMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NtdXMvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbXVzJwogcGtnbmFtZT1j bXVzCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9 Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0icHJlZml4PS91c3IgTEQ9JENDIgogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBmMGY1MjVmMTU0YmI0OWQ1MjVlZGMzYjE5ZGM4ODZl NmQzYTNmODJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMjUvMTE1XSBjeWFucmlwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0 ZSBiL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZQppbmRleCA5Nzk2ZTM0NjE2MDFhLi41ZGIzMGUw MjBkMTdlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9jeWFucmlwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn Y3lhbnJpcCcKIHBrZ25hbWU9Y3lhbnJpcAogdmVyc2lvbj0wLjkuMAotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIK IG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJjZGlvLXBhcmFub2lh LWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlibXVzaWNicmFpbno1LWRldmVsIgoKRnJvbSAzMjIxMGY3 YjQyZjQ1YTIwY2I2MzBiNWNiYmZjY2M0YTlkM2MzMzkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjYvMTE1XSBkZWFkYmVlZjogcmV2YnVt cCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUgYi9zcmNwa2dzL2RlYWRiZWVmL3Rl bXBsYXRlCmluZGV4IGY1ZjRiZjI0YjhjYjYuLjdiNDdlNjE1Y2Q0OGUgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZQpA QCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZGVhZGJlZWYnCiBwa2duYW1l PWRlYWRiZWVmCiB2ZXJzaW9uPTEuOC44Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBjcmVhdGVf d3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0t ZGlzYWJsZS1vc3MgLS1kaXNhYmxlLWxmbSAtLWRpc2FibGUtbm90aWZ5IC0tZGlzYWJsZS1ndGsy IgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIGdldHRleHQgZ2V0dGV4dC1kZXZl bCBpbnRsdG9vbCBwa2ctY29uZmlnCiAgeWFzbSBjbGFuZyBnbGliLWRldmVsIgogbWFrZWRlcGVu ZHM9IgotIGFsc2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVs IGd0ayszLWRldmVsIGltbGliMi1kZXZlbAorIGFsc2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFh ZDItZGV2ZWwgZmZtcGVnNC1kZXZlbCBndGsrMy1kZXZlbCBpbWxpYjItZGV2ZWwKICBqYW5zc29u LWRldmVsIGxpYmNkZGItZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYmZsYWMt ZGV2ZWwKICBsaWJtYWQtZGV2ZWwgbGlicG5nLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGli c25kZmlsZS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwKICBsaWJ6aXAtZGV2ZWwgbXBnMTIzLWRldmVs IG9wdXNmaWxlLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgd2F2cGFjay1kZXZlbCIKCkZyb20gOWIz NTZiOTJiNWMwMjBjZTU5YzkyNmI1NjFkODg4NGI1YjUwNzU3NSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI3LzExNV0gZHJvaWRjYW0tb2Jz LXBsdWdpbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ryb2lkY2FtLW9i cy1wbHVnaW4vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4v dGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKaW5kZXggZmM5 YzliZjZiOWQ1NC4uZmIwNDgwNzU0ZGY0ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kcm9pZGNhbS1v YnMtcGx1Z2luL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ryb2lkY2FtLW9icy1w bHVnaW4nCiBwa2duYW1lPWRyb2lkY2FtLW9icy1wbHVnaW4KIHZlcnNpb249Mi4wLjEKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV91c2VfZW52 PXllcwogbWFrZV9idWlsZF9hcmdzPSJBTExPV19TVEFUSUM9bm8iCgpGcm9tIDFjNGIyZmRlMDM4 MzI5Yjk0NjUyYzdmZGIwZjMwMDQ2NjczMjA1ODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyOC8xMTVdIGRyb2lkY2FtOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZQppbmRl eCAxYzNmMWI4YjFmYzY3Li4zMmE5MjIwYjc5YTRkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lk Y2FtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkcm9pZGNhbScKIHBrZ25hbWU9ZHJvaWRjYW0KIHZl cnNpb249MS44LjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1tYWtl ZmlsZQogbWFrZV9idWlsZF9hcmdzPSJVU0JNVVhEPS1sdXNibXV4ZC0yLjAgSlBFRz0tbHR1cmJv anBlZyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gNDUyNDFkYmViYTczOTll MDE3MTgwY2NhMjc4YmE0YTYyMjRhYmZjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI5LzExNV0gZmZtcGVndGh1bWJuYWlsZXI6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZt cGVnNi5wYXRjaCAgIHwgMjAyICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9mZm1wZWd0aHVt Ym5haWxlci90ZW1wbGF0ZSAgICAgICAgICAgIHwgICA2ICstCiAyIGZpbGVzIGNoYW5nZWQsIDIw NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggYi9zcmNwa2dz L2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4zNjNmZjM1YTI4NDE5Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAs MCArMSwyMDIgQEAKKy0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5jcHAJ MjAxNy0xMS0yMSAxNDowNjo1Ny4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1i bmFpbGVyL21vdmllZGVjb2Rlci5jcHAJMjAyMy0wNS0wNSAxMzoxNDo0Ny45NDY1NjA2NjggLTA0 MDAKK0BAIC00MSwxMSArNDEsNiBAQAorIG5hbWVzcGFjZSBmZm1wZWd0aHVtYm5haWxlcgorIHsK KyAKKy1zdHJ1Y3QgU2lsZW5jZUxvZ0xldmVsCisteworLSAgICBTaWxlbmNlTG9nTGV2ZWwoKSB7 IGF2X2xvZ19zZXRfbGV2ZWwoQVZfTE9HX1FVSUVUKTsgfQorLX07CistCisgTW92aWVEZWNvZGVy OjpNb3ZpZURlY29kZXIoQVZGb3JtYXRDb250ZXh0KiBwYXZDb250ZXh0KQorIDogbV9WaWRlb1N0 cmVhbSgtMSkKKyAsIG1fcEZvcm1hdENvbnRleHQocGF2Q29udGV4dCkKK0BAIC03MCw4ICs2NSw2 IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemUoY29uc3Qgc3RyaW5nJiBmaWxl bmFtZSwgYm9vbCBwcmVmZXJFbWJlZGRlZE1ldGFkYXRhKQorIHsKKy0gICAgYXZfcmVnaXN0ZXJf YWxsKCk7CistICAgIGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisgICAgIGF2Zm9ybWF0X25ldHdv cmtfaW5pdCgpOworIAorICAgICBzdHJpbmcgaW5wdXRGaWxlID0gZmlsZW5hbWUgPT0gIi0iID8g InBpcGU6IiA6IGZpbGVuYW1lOworQEAgLTk3LDggKzkwLDcgQEAKKyB7CisgICAgIGlmIChtX3BW aWRlb0NvZGVjQ29udGV4dCkKKyAgICAgeworLSAgICAgICAgYXZjb2RlY19jbG9zZShtX3BWaWRl b0NvZGVjQ29udGV4dCk7CistICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IG51bGxwdHI7 CisrICAgICAgICBhdmNvZGVjX2ZyZWVfY29udGV4dCgmbV9wVmlkZW9Db2RlY0NvbnRleHQpOwor ICAgICB9CisgCisgICAgIGlmICgoIW1fRm9ybWF0Q29udGV4dFdhc0dpdmVuKSAmJiBtX3BGb3Jt YXRDb250ZXh0KQorQEAgLTE1MiwxMCArMTQ0LDEwIEBACisgICAgIGZvciAodW5zaWduZWQgaW50 IGkgPSAwOyBpIDwgbV9wRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtczsgKytpKQorICAgICB7Cisg ICAgICAgICBBVlN0cmVhbSAqc3RyZWFtID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXTsK Ky0gICAgICAgIGF1dG8gY3R4ID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWM7 CistICAgICAgICBpZiAoY3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKysg ICAgICAgIGF1dG8gcGFyID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXI7 CisrICAgICAgICBpZiAocGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKyAg ICAgICAgIHsKKy0gICAgICAgICAgICBpZiAoIXByZWZlckVtYmVkZGVkTWV0YWRhdGEgfHwgIWlz U3RpbGxJbWFnZUNvZGVjKGN0eC0+Y29kZWNfaWQpKQorKyAgICAgICAgICAgIGlmICghcHJlZmVy RW1iZWRkZWRNZXRhZGF0YSB8fCAhaXNTdGlsbEltYWdlQ29kZWMocGFyLT5jb2RlY19pZCkpCisg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICB2aWRlb1N0cmVhbXMucHVzaF9iYWNrKGkp OworICAgICAgICAgICAgICAgICBjb250aW51ZTsKK0BAIC0yMDMsOCArMTk1LDcgQEAKKyAgICAg fQorIAorICAgICBtX3BWaWRlb1N0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9W aWRlb1N0cmVhbV07CistICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gbV9wVmlkZW9TdHJlYW0t PmNvZGVjOworLSAgICBtX3BWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIobV9wVmlk ZW9Db2RlY0NvbnRleHQtPmNvZGVjX2lkKTsKKysgICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNf ZmluZF9kZWNvZGVyKG1fcFZpZGVvU3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworIAorICAg ICBpZiAobV9wVmlkZW9Db2RlYyA9PSBudWxscHRyKQorICAgICB7CitAQCAtMjE0LDYgKzIwNSwy MCBAQAorICAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIlZpZGVvIENvZGVjIG5vdCBmb3VuZCIp OworICAgICB9CisgCisrICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gYXZjb2RlY19hbGxvY19j b250ZXh0MyhtX3BWaWRlb0NvZGVjKTsKKysKKysgICAgaWYgKG1fcFZpZGVvQ29kZWNDb250ZXh0 ID09IG51bGxwdHIpCisrICAgIHsKKysgICAgICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93 IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3QgYWxsb2NhdGUgdmlkZW8gY29kZWMgY29udGV4dCIpOwor KyAgICB9CisrCisrICAgIGlmIChhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChtX3BWaWRl b0NvZGVjQ29udGV4dCwgbV9wVmlkZW9TdHJlYW0tPmNvZGVjcGFyKSA8IDApCisrICAgIHsKKysg ICAgICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3Qg Y29uZmlndXJlIHZpZGVvIGNvZGVjIGNvbnRleHQiKTsKKysgICAgfQorKworICAgICBtX3BWaWRl b0NvZGVjQ29udGV4dC0+d29ya2Fyb3VuZF9idWdzID0gMTsKKyAKKyAgICAgaWYgKGF2Y29kZWNf b3BlbjIobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcFZpZGVvQ29kZWMsIG51bGxwdHIpIDwgMCkK K0BAIC0zODYsMTMgKzM5MSw2IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemVG aWx0ZXJHcmFwaChjb25zdCBBVlJhdGlvbmFsJiB0aW1lQmFzZSwgY29uc3Qgc3RkOjpzdHJpbmcm IHNpemUsIGJvb2wgbWFpbnRhaW5Bc3BlY3RSYXRpbykKKyB7CistICAgIHN0YXRpYyBjb25zdCBB VlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0c1tdID0geyBBVl9QSVhfRk1UX1JHQjI0LCBBVl9QSVhf Rk1UX05PTkUgfTsKKy0KKy0gICAgYXV0byBkZWwgPSBbXSAoQVZCdWZmZXJTaW5rUGFyYW1zKiBw KSB7IGF2X2ZyZWVwKHApOyB9OworLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVZCdWZmZXJTaW5rUGFy YW1zLCBkZWNsdHlwZShkZWwpPiBidWZmZXJzaW5rUGFyYW1zKGF2X2J1ZmZlcnNpbmtfcGFyYW1z X2FsbG9jKCksIGRlbCk7CistCistICAgIGF2ZmlsdGVyX3JlZ2lzdGVyX2FsbCgpOworLQorICAg ICBtX3BGaWx0ZXJHcmFwaCA9IGF2ZmlsdGVyX2dyYXBoX2FsbG9jKCk7CisgICAgIGFzc2VydCht X3BGaWx0ZXJHcmFwaCk7CisgCitAQCAtNDA0LDEwICs0MDIsOCBAQAorIAorICAgICBjaGVja1Jj KGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNvdXJjZSwgYXZmaWx0ZXJf Z2V0X2J5X25hbWUoImJ1ZmZlciIpLCAidGh1bWJfYnVmZmVyIiwgc3Muc3RyKCkuY19zdHIoKSwg bnVsbHB0ciwgbV9wRmlsdGVyR3JhcGgpLAorICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRl IGZpbHRlciBzb3VyY2UiKTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy0+cGl4ZWxfZm10cyA9IHBp eGVsRm9ybWF0czsKKy0gICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZt X3BGaWx0ZXJTaW5rLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJf YnVmZmVyc2luayIsIG51bGxwdHIsIGJ1ZmZlcnNpbmtQYXJhbXMuZ2V0KCksIG1fcEZpbHRlckdy YXBoKSwKKysgICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0 ZXJTaW5rLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJfYnVmZmVy c2luayIsIG51bGxwdHIsIG51bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAgICAi RmFpbGVkIHRvIGNyZWF0ZSBmaWx0ZXIgc2luayIpOworLSAgICBidWZmZXJzaW5rUGFyYW1zLnJl bGVhc2UoKTsKKyAKKyAgICAgQVZGaWx0ZXJDb250ZXh0KiB5YWRpZkZpbHRlciA9IG51bGxwdHI7 CisgICAgIGlmIChtX3BGcmFtZS0+aW50ZXJsYWNlZF9mcmFtZSAhPSAwKQorQEAgLTUwMCwxNSAr NDk2LDE1IEBACisgICAgIH0KKyAKKyAgICAgY2hlY2tSYyhhdl9zZWVrX2ZyYW1lKG1fcEZvcm1h dENvbnRleHQsIC0xLCB0aW1lc3RhbXAsIDApLCAiU2Vla2luZyBpbiB2aWRlbyBmYWlsZWQiKTsK Ky0gICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9W aWRlb1N0cmVhbV0tPmNvZGVjKTsKKysgICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1fcFZpZGVv Q29kZWNDb250ZXh0KTsKKyAKKyAgICAgaW50IGtleUZyYW1lQXR0ZW1wdHMgPSAwOworLSAgICBi b29sIGdvdEZyYW1lID0gMDsKKysgICAgYm9vbCBnb3RGcmFtZTsKKyAKKyAgICAgZG8KKyAgICAg eworICAgICAgICAgaW50IGNvdW50ID0gMDsKKy0gICAgICAgIGdvdEZyYW1lID0gMDsKKysgICAg ICAgIGdvdEZyYW1lID0gZmFsc2U7CisgCisgICAgICAgICB3aGlsZSAoIWdvdEZyYW1lICYmIGNv dW50IDwgMjApCisgICAgICAgICB7CitAQCAtNTUyLDE3ICs1NDgsMzMgQEAKKyAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgfQorIAorLSAgICBhdl9mcmFtZV91bnJlZihtX3BGcmFtZSk7Cist CistICAgIGludCBmcmFtZUZpbmlzaGVkOworKyAgICBpbnQgcmMgPSBhdmNvZGVjX3NlbmRfcGFj a2V0KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BQYWNrZXQpOworKyAgICBpZihyYyA9PSBBVkVS Uk9SKEVBR0FJTikpCisrICAgIHsKKysgICAgICAgIHJjID0gMDsKKysgICAgfQorIAorLSAgICBp bnQgYnl0ZXNEZWNvZGVkID0gYXZjb2RlY19kZWNvZGVfdmlkZW8yKG1fcFZpZGVvQ29kZWNDb250 ZXh0LCBtX3BGcmFtZSwgJmZyYW1lRmluaXNoZWQsIG1fcFBhY2tldCk7CistICAgIGlmIChieXRl c0RlY29kZWQgPCAwKQorKyAgICBpZihyYyA9PSBBVkVSUk9SX0VPRikKKysgICAgeworKyAgICAg ICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrICAgIGVsc2UgaWYocmMgPCAwKQorICAgICB7Cist ICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTog Ynl0ZXNEZWNvZGVkIDwgMCIpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0 byBkZWNvZGUgdmlkZW8gZnJhbWU6IGF2Y29kZWNfc2VuZF9wYWNrZXQoKSA8IDAiKTsKKyAgICAg fQorIAorLSAgICByZXR1cm4gZnJhbWVGaW5pc2hlZCA+IDA7CisrICAgIHJjID0gYXZjb2RlY19y ZWNlaXZlX2ZyYW1lKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BGcmFtZSk7CisrICAgIHN3aXRj aChyYykKKysgICAgeworKyAgICAgICAgY2FzZSAwOgorKyAgICAgICAgICAgIHJldHVybiB0cnVl OworKworKyAgICAgICAgY2FzZSBBVkVSUk9SKEVBR0FJTik6CisrICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworKworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICB0aHJvdyBsb2dpY19l cnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYXZjb2RlY19yZWNlaXZlX2ZyYW1l KCkgPCAwIik7CisrICAgIH0KKyB9CisgCisgYm9vbCBNb3ZpZURlY29kZXI6OmdldFZpZGVvUGFj a2V0KCkKK0BAIC01NzAsOCArNTgyLDYgQEAKKyAgICAgYm9vbCBmcmFtZXNBdmFpbGFibGUgPSB0 cnVlOworICAgICBib29sIGZyYW1lRGVjb2RlZCA9IGZhbHNlOworIAorLSAgICBpbnQgYXR0ZW1w dHMgPSAwOworLQorICAgICBpZiAobV9wUGFja2V0KQorICAgICB7CisgICAgICAgICBhdl9wYWNr ZXRfdW5yZWYobV9wUGFja2V0KTsKK0BAIC01ODAsNiArNTkwLDcgQEAKKyAKKyAgICAgbV9wUGFj a2V0ID0gbmV3IEFWUGFja2V0KCk7CisgCisrCisgICAgIHdoaWxlIChmcmFtZXNBdmFpbGFibGUg JiYgIWZyYW1lRGVjb2RlZCkKKyAgICAgeworICAgICAgICAgZnJhbWVzQXZhaWxhYmxlID0gYXZf cmVhZF9mcmFtZShtX3BGb3JtYXRDb250ZXh0LCBtX3BQYWNrZXQpID49IDA7CitAQCAtNjQ0LDcg KzY1NSw3IEBACisgCisgaW50MzJfdCBNb3ZpZURlY29kZXI6OmdldFN0cmVhbVJvdGF0aW9uKCkK KyB7CistICAgIGludDMyX3QqIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGF2 X3N0cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFUQV9ESVNQTEFZ TUFUUklYLCBudWxscHRyKSk7CisrICAgIGF1dG8gbWF0cml4ID0gcmVpbnRlcnByZXRfY2FzdDxp bnQzMl90Kj4oYXZfc3RyZWFtX2dldF9zaWRlX2RhdGEobV9wVmlkZW9TdHJlYW0sIEFWX1BLVF9E QVRBX0RJU1BMQVlNQVRSSVgsIG51bGxwdHIpKTsKKyAgICAgaWYgKG1hdHJpeCkKKyAgICAgewor ICAgICAgICAgYXV0byBhbmdsZSA9IGxyb3VuZChhdl9kaXNwbGF5X3JvdGF0aW9uX2dldChtYXRy aXgpKTsKKworLS0tIGEvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmgJMjAxNy0x MS0xMiAwNDoyMzozOC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1ibmFpbGVy L21vdmllZGVjb2Rlci5oCTIwMjMtMDUtMDUgMTM6MjY6MDcuMDk1NTI5OTExIC0wNDAwCitAQCAt NzgsNyArNzgsNyBAQAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX1ZpZGVvU3RyZWFt Ow0KKyAgICAgQVZGb3JtYXRDb250ZXh0KiAgICAgICAgbV9wRm9ybWF0Q29udGV4dDsNCisgICAg IEFWQ29kZWNDb250ZXh0KiAgICAgICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0Ow0KKy0gICAgQVZD b2RlYyogICAgICAgICAgICAgICAgbV9wVmlkZW9Db2RlYzsNCisrICAgIGNvbnN0IEFWQ29kZWMq ICAgICAgICAgIG1fcFZpZGVvQ29kZWM7DQorICAgICBBVkZpbHRlckdyYXBoKiAgICAgICAgICBt X3BGaWx0ZXJHcmFwaDsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNv dXJjZTsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNpbms7DQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZt cGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKaW5kZXggMDM5ZWVhNzYyMmIzOS4uMzVkNTQ2MDE4ZDEy YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnZmZtcGVndGh1bWJuYWlsZXInCiBwa2duYW1lPWZmbXBlZ3RodW1ibmFp bGVyCiB2ZXJzaW9uPTIuMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImxpYnBuZy1k ZXZlbCBsaWJqcGVnLXR1cmJvLWRldmVsIGZmbXBlZy1kZXZlbCIKQEAgLTksOCArOSw4IEBAIGRl cGVuZHM9ImZmbXBlZyIKIHNob3J0X2Rlc2M9IkxpZ2h0d2VpZ2h0IHZpZGVvIHRodW1ibmFpbGVy IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9 IkdQTC0yLjAtb3ItbGF0ZXIiCi1ob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2Rpcmt2ZGIv JHtwa2duYW1lfSIKLWRpc3RmaWxlcz0iJHtob21lcGFnZX0vcmVsZWFzZXMvZG93bmxvYWQvJHt2 ZXJzaW9ufS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKK2hvbWVwYWdlPSJodHRwczov L2dpdGh1Yi5jb20vZGlya3ZkYiIKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vJHtwa2duYW1lfS9y ZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuYnoy IgogY2hlY2tzdW09MWNiMjQwNTljMzgyMjNmNjU3YjMwMGM4NGRkODA0OTFiNzA0MGQ0YjY5NDcx YzRmZWE2OWJlODYyYmM5OWI1YgogCiBwb3N0X2luc3RhbGwoKSB7CgpGcm9tIGJmOWU1MWQ2NzQ2 Mzg0YjFjN2UzNzc1N2U0YWZiNzUxZjFjY2ZhMWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMC8xMTVdIGZmbXBlZ3RodW1iczogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWd0aHVt YnMvdGVtcGxhdGUKaW5kZXggNWYwYjk0MTRkYWRhZi4uMTFiODgxOTM1MjhmNCAxMDA2NDQKLS0t IGEvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1wZWd0aHVt YnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0 aHVtYnMnCiBwa2duYW1lPWZmbXBlZ3RodW1icwogdmVyc2lvbj0yMi4xMi4xCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1j bWFrZS1tb2R1bGVzIGtjb3JlYWRkb25zIGtjb25maWctZGV2ZWwKICBwa2ctY29uZmlnIHF0NS1o b3N0LXRvb2xzIHF0NS1xbWFrZSBnZXR0ZXh0IgoKRnJvbSA3M2Y2MmY3ZTE2NTY5YmFhMmIyYzM1 ZjdmNWNlOGU5Y2I2MjAwNDljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMzEvMTE1XSBmZm1zMjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDQyNCArKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2ZmbXMyL3RlbXBsYXRlICAgICAgICAgICAgICB8 ICAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNo CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNw a2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAwLi4xNDc5ZmFiY2FmY2I0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0MjQgQEAKK0Zyb20gNDU2 NzMxNDllOWEyZjU1ODY4NTVhZDQ3MmUzMDU5MDg0ZWFhMzZiMSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29t PgorRGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjQxOjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hd IFVzZSBhdXRvIGZvciBBVkNvZGVjCisKK1RoZSBnZW5pdXNlcyBvdmVyIGF0IEZGbXBlZyBkZWNp ZGVkIHRvIGNvbnN0aWZ5IHRoaXMgQVBJLCBzbyBvbGQKK3ZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5 IHdpbGwgcmV0dXJuIEFWQ29kZWMgKiwgd2hpbGUgbmV3IHZlcnNpb25zCitvZiB0aGUgbGliYXJ5 IHdpbGwgcmV0dXJuIGNvbnN0IEFWQ29kZWMgKiwgd2hpY2gsIGluIEMrKywgYXJlIG5vdAorT0sg dG8gY29udmVydCBiZXR3ZWVuLgorCitSYXRoZXIgdGhhbiB1c2Ugc29tZSBtYWNybyBoZWxsIGlu IGZmbXNjb21wYXQuaCwgd2UgY2FuIHdvcmsgYXJvdW5kCit0aGlzIGJ5IHVzaW5nIGF1dG8uCisK K0dyb3NzLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5o dWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDIgKy0KKyBz cmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2ICsrKy0tLQorIHNyYy9jb3JlL3ZpZGVvc291cmNl LmNwcCB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlv bnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3NyYy9jb3Jl L2F1ZGlvc291cmNlLmNwcAoraW5kZXggZTRjZTk3Yy4uYWMwOTY2NiAxMDA2NDQKKy0tLSBhL3Ny Yy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitA QCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgRkZNU19BdWRpb1NvdXJjZTo6T3BlbkZpbGUoKSB7Cisg CisgICAgIExBVkZPcGVuRmlsZShTb3VyY2VGaWxlLmNfc3RyKCksIEZvcm1hdENvbnRleHQsIFRy YWNrTnVtYmVyKTsKKyAKKy0gICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rl cihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lk KTsKKysgICAgYXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0 LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgaWYgKENv ZGVjID09IG51bGxwdHIpCisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9S X0RFQ09ESU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAgICAgICAgICJBdWRpbyBjb2RlYyBu b3QgZm91bmQiKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29y ZS9pbmRleGluZy5jcHAKK2luZGV4IGU1NDdjNWEuLjU5ZmI0ZTggMTAwNjQ0CistLS0gYS9zcmMv Y29yZS9pbmRleGluZy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTM4NCw3 ICszODQsNyBAQCBGRk1TX1RyYWNrVHlwZSBGRk1TX0luZGV4ZXI6OkdldFRyYWNrVHlwZShpbnQg VHJhY2spIHsKKyB9CisgCisgY29uc3QgY2hhciAqRkZNU19JbmRleGVyOjpHZXRUcmFja0NvZGVj KGludCBUcmFjaykgeworLSAgICBBVkNvZGVjICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAg ICBhdXRvICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVh bXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICByZXR1cm4gY29kZWMgPyBjb2Rl Yy0+bmFtZSA6IG51bGxwdHI7CisgfQorIAorQEAgLTQwMiw3ICs0MDIsNyBAQCBGRk1TX0luZGV4 ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgVXNlRFRTKTsKKyAK KyAgICAgICAgIGlmIChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4dC0+c3RyZWFt c1tpXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7CistICAg ICAgICAgICAgQVZDb2RlYyAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1h dENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICAgICAg YXV0byAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0 cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYgKCFWaWRlb0Nv ZGVjKSB7CisgICAgICAgICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmRpc2Nh cmQgPSBBVkRJU0NBUkRfQUxMOworICAgICAgICAgICAgICAgICBJbmRleE1hc2suZXJhc2UoaSk7 CitAQCAtNDMzLDcgKzQzMyw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGlu ZygpIHsKKyAgICAgICAgICAgICAgICAgSW5kZXhNYXNrLmluc2VydChpKTsKKyAgICAgICAgICAg ICB9CisgICAgICAgICB9IGVsc2UgaWYgKEluZGV4TWFzay5jb3VudChpKSAmJiBGb3JtYXRDb250 ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVE SU8pIHsKKy0gICAgICAgICAgICBBVkNvZGVjICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2Rl Y29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysg ICAgICAgICAgICBhdXRvICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgICAgICAgICBp ZiAoQXVkaW9Db2RlYyA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4 Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX1VOU1VQUE9SVEVELAorICAgICAg ICAgICAgICAgICAgICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlmZiAtLWdpdCBhL3Ny Yy9jb3JlL3ZpZGVvc291cmNlLmNwcCBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAoraW5kZXgg Yjg4OTk3MC4uODk1NmMyMiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAor KysrIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCitAQCAtMTcxLDcgKzE3MSw3IEBAIEZGTVNf VmlkZW9Tb3VyY2U6OkZGTVNfVmlkZW9Tb3VyY2UoY29uc3QgY2hhciAqU291cmNlRmlsZSwgRkZN U19JbmRleCAmSW5kZXgsIGluCisgCisgICAgICAgICBMQVZGT3BlbkZpbGUoU291cmNlRmlsZSwg Rm9ybWF0Q29udGV4dCwgVmlkZW9UcmFjayk7CisgCistICAgICAgICBBVkNvZGVjICpDb2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10t PmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICBhdXRvICpDb2RlYyA9IGF2Y29kZWNfZmlu ZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVjcGFyLT5j b2RlY19pZCk7CisgICAgICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICB0 aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0NPREVD LAorICAgICAgICAgICAgICAgICAiVmlkZW8gY29kZWMgbm90IGZvdW5kIik7CistLSAKKzIuNDAu MAorCitGcm9tIDk2Y2JmMzhlYTkzODE4MjlhMTMxNGY0MzJhMmM2MDQ5NWRjZWZhYWQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5o dWlzQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDoxMjo0MSArMDEwMAorU3Vi amVjdDogW1BBVENIXSBhbGw6IFVwZGF0ZSBBVlBhY2tldCBBUEkgdXNhZ2UKKworQVZQYWNrZXRz IG11c3QgYWxsIGJlIG9uIHRoZSBoZWFwIG5vdywgc2luY2UgaXQgaXMgbm8gbG9uZ2VyCitwYXJ0 IG9mIHRoZSBsaWJhdiogQUJJLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxk ZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNw cCB8IDE2ICsrKysrKy0tLS0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2MyArKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuaCAg ICAgIHwgIDQgKy0tCisgc3JjL2NvcmUvdXRpbHMuY3BwICAgICAgIHwgIDYgLS0tLQorIHNyYy9j b3JlL3V0aWxzLmggICAgICAgICB8ICAxIC0KKyBzcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgfCAz MCArKysrKysrKysrLS0tLS0tLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCsp LCA1NiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNw cCBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAoraW5kZXggMzdjZjlhZS4uZTRjZTk3YyAxMDA2 NDQKKy0tLSBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9z b3VyY2UuY3BwCitAQCAtMjg1LDEwICsyODUsMTUgQEAgRkZNU19BdWRpb1NvdXJjZTo6QXVkaW9C bG9jayAqRkZNU19BdWRpb1NvdXJjZTo6Q2FjaGVCbG9jayhDYWNoZUl0ZXJhdG9yICZwb3MpIHsK KyBpbnQgRkZNU19BdWRpb1NvdXJjZTo6RGVjb2RlTmV4dEJsb2NrKENhY2hlSXRlcmF0b3IgKnBv cykgeworICAgICBDdXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CisgCistICAg IEFWUGFja2V0IFBhY2tldDsKKy0gICAgaWYgKCFSZWFkUGFja2V0KCZQYWNrZXQpKQorKyAgICBB VlBhY2tldCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQor KyAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIsIEZGTVNfRVJS T1JfQUxMT0NBVElPTl9GQUlMRUQsCisrICAgICAgICAgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBw YWNrZXQuIik7CisrICAgIGlmICghUmVhZFBhY2tldChQYWNrZXQpKSB7CisrICAgICAgICBhdl9w YWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNf RVJST1JfUEFSU0VSLCBGRk1TX0VSUk9SX1VOS05PV04sCisgICAgICAgICAgICAgIlJlYWRQYWNr ZXQgdW5leHBlY3RlZGx5IGZhaWxlZCB0byByZWFkIGEgcGFja2V0Iik7CisrICAgIH0KKyAKKyAg ICAgLy8gUmVhZFBhY2tldCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBwYWNrZXQgbnVtYmVyCisgICAg IEN1cnJlbnRGcmFtZSA9ICZGcmFtZXNbUGFja2V0TnVtYmVyXTsKK0BAIC0yOTcsOCArMzAyLDkg QEAgaW50IEZGTVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9yICpw b3MpIHsKKyAgICAgaW50IE51bWJlck9mU2FtcGxlcyA9IDA7CisgICAgIEF1ZGlvQmxvY2sgKkNh Y2hlZEJsb2NrID0gbnVsbHB0cjsKKyAgICAgCistICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRf cGFja2V0KENvZGVjQ29udGV4dCwgJlBhY2tldCk7CistICAgIGF2X3BhY2tldF91bnJlZigmUGFj a2V0KTsKKysgICAgaW50IFJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWNDb250ZXh0LCBQ YWNrZXQpOworKyAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2Zy ZWUoJlBhY2tldCk7CisgCisgICAgIGF2X2ZyYW1lX3VucmVmKERlY29kZUZyYW1lKTsKKyAgICAg UmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKENvZGVjQ29udGV4dCwgRGVjb2RlRnJhbWUpOwor QEAgLTUxMyw4ICs1MTksNiBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6OlNlZWsoKSB7CisgfQor IAorIGJvb2wgRkZNU19BdWRpb1NvdXJjZTo6UmVhZFBhY2tldChBVlBhY2tldCAqUGFja2V0KSB7 CistICAgIEluaXROdWxsUGFja2V0KCpQYWNrZXQpOworLQorICAgICB3aGlsZSAoYXZfcmVhZF9m cmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIGlmIChQYWNrZXQt PnN0cmVhbV9pbmRleCA9PSBUcmFja051bWJlcikgeworICAgICAgICAgICAgIC8vIFJlcXVpcmVk IGJlY2F1c2Ugbm90IGFsbCBhdWRpbyBwYWNrZXRzLCBlc3BlY2lhbGx5IGluIG9nZywgaGF2ZSBh IHB0cy4gVXNlIHRoZSBwcmV2aW91cyB2YWxpZCBwYWNrZXQncyBwdHMgaW5zdGVhZC4KK2RpZmYg LS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK2lu ZGV4IDIzZmI5NWIuLmU1NDdjNWEgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRleGluZy5jcHAK KysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIEZG TVNfSW5kZXhlcjo6Q2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNvZGVjQ29udGV4 dCAqQ29udGV4dCkgeworICAgICB9CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZp ZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBp bnQgKlJlcGVhdFBpY3QsCisrdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hh cmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICpwa3QsIGludCAqUmVwZWF0UGlj dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKkZyYW1lVHlwZSwg Ym9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCkg eworICAgICBpZiAoVmlkZW9Db250ZXh0LlBhcnNlcikgeworICAgICAgICAgdWludDhfdCAqT0I7 CitAQCAtMzMwLDggKzMzMCw4IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0 KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0CisgICAgICAgICBh dl9wYXJzZXJfcGFyc2UyKFZpZGVvQ29udGV4dC5QYXJzZXIsCisgICAgICAgICAgICAgVmlkZW9D b250ZXh0LkNvZGVjQ29udGV4dCwKKyAgICAgICAgICAgICAmT0IsICZPQlNpemUsCistICAgICAg ICAgICAgcGt0LmRhdGEsIHBrdC5zaXplLAorLSAgICAgICAgICAgIHBrdC5wdHMsIHBrdC5kdHMs IHBrdC5wb3MpOworKyAgICAgICAgICAgIHBrdC0+ZGF0YSwgcGt0LT5zaXplLAorKyAgICAgICAg ICAgIHBrdC0+cHRzLCBwa3QtPmR0cywgcGt0LT5wb3MpOworIAorICAgICAgICAgLy8gSC4yNjQg KFBBRkYpIGFuZCBIRVZDIG1heSBoYXZlIG9uZSBmaWVsZCBwZXIgcGFja2V0LCBzbyB3ZSBuZWVk IHRvIHRyYWNrCisgICAgICAgICAvLyB3aGVuIHdlIGhhdmUgYSBmdWxsIG9yIGhhbGYgZnJhbWUg YXZhaWxhYmxlLCBhbmQgbWFyayBvbmUgb2YgdGhlbSBhcworQEAgLTM1MSwxNSArMzUxLDE1IEBA IHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlk ZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0CisgCisgICAgICAgICAqUmVwZWF0UGljdCA9IFZpZGVv Q29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0OworICAgICAgICAgKkZyYW1lVHlwZSA9IFZpZGVv Q29udGV4dC5QYXJzZXItPnBpY3RfdHlwZTsKKy0gICAgICAgICpJbnZpc2libGUgPSAoSW5jb21w bGV0ZUZyYW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwgMCB8fCAocGt0 LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworKyAgICAgICAgKkludmlzaWJsZSA9IChJ bmNvbXBsZXRlRnJhbWUgfHwgVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3BpY3QgPCAwIHx8 IChwa3QtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworICAgICB9IGVsc2UgeworLSAg ICAgICAgKkludmlzaWJsZSA9ICEhKHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOwor KyAgICAgICAgKkludmlzaWJsZSA9ICEhKHBrdC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJE KTsKKyAgICAgfQorIAorICAgICBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dC0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfVlA4KQorLSAgICAgICAgUGFyc2VWUDgocGt0LmRhdGFbMF0sIElu dmlzaWJsZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA4KHBrdC0+ZGF0YVswXSwgSW52 aXNpYmxlLCBGcmFtZVR5cGUpOworICAgICBlbHNlIGlmIChWaWRlb0NvbnRleHQuQ29kZWNDb250 ZXh0LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpCistICAgICAgICBQYXJzZVZQOShwa3Qu ZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworKyAgICAgICAgUGFyc2VWUDkocGt0LT5k YXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisgfQorIAorIHZvaWQgRkZNU19JbmRleGVy OjpGcmVlKCkgeworQEAgLTQ1OCwzMiArNDU4LDM2IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhl cjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBBVlBhY2tldCBQ YWNrZXQ7CistICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7CisrICAgIEFWUGFja2V0ICpQYWNr ZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJv dyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX0FMTE9DQVRJT05f RkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIpOworICAg ICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiBMYXN0VmFsaWRUUyhGb3JtYXRDb250ZXh0LT5uYl9zdHJl YW1zLCBBVl9OT1BUU19WQUxVRSk7CisgCisgICAgIGludDY0X3QgZmlsZXNpemUgPSBhdmlvX3Np emUoRm9ybWF0Q29udGV4dC0+cGIpOworICAgICBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSBMYXN0 UGljU3RydWN0ID0gQVZfUElDVFVSRV9TVFJVQ1RVUkVfVU5LTk9XTjsKKy0gICAgd2hpbGUgKGF2 X3JlYWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgJlBhY2tldCkgPj0gMCkgeworKyAgICB3aGlsZSAo YXZfcmVhZF9mcmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIC8v IFVwZGF0ZSBwcm9ncmVzcworICAgICAgICAgLy8gRm9ybWF0Q29udGV4dC0+cGIgY2FuIGFwcGFy ZW50bHkgYmUgTlVMTCB3aGVuIG9wZW5pbmcgaW1hZ2VzLgorICAgICAgICAgaWYgKElDICYmIEZv cm1hdENvbnRleHQtPnBiKSB7CistICAgICAgICAgICAgaWYgKCgqSUMpKEZvcm1hdENvbnRleHQt PnBiLT5wb3MsIGZpbGVzaXplLCBJQ1ByaXZhdGUpKQorKyAgICAgICAgICAgIGlmICgoKklDKShG b3JtYXRDb250ZXh0LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkgeworKyAgICAgICAg ICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAgICAgdGhyb3cg RkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9DQU5DRUxMRUQsIEZGTVNfRVJST1JfVVNFUiwKKyAg ICAgICAgICAgICAgICAgICAgICJDYW5jZWxsZWQgYnkgdXNlciIpOworKyAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKy0gICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tldC5zdHJlYW1f aW5kZXgpKSB7CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICAg ICAgaWYgKCFJbmRleE1hc2suY291bnQoUGFja2V0LT5zdHJlYW1faW5kZXgpKSB7CisrICAgICAg ICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29udGludWU7Cisg ICAgICAgICB9CisgCistICAgICAgICBpbnQgVHJhY2sgPSBQYWNrZXQuc3RyZWFtX2luZGV4Owor KyAgICAgICAgaW50IFRyYWNrID0gUGFja2V0LT5zdHJlYW1faW5kZXg7CisgICAgICAgICBGRk1T X1RyYWNrICZUcmFja0luZm8gPSAoKlRyYWNrSW5kaWNlcylbVHJhY2tdOworLSAgICAgICAgYm9v bCBLZXlGcmFtZSA9ICEhKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7CisrICAgICAg ICBib29sIEtleUZyYW1lID0gISEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7Cisg ICAgICAgICBSZWFkVFMoUGFja2V0LCBMYXN0VmFsaWRUU1tUcmFja10sICgqVHJhY2tJbmRpY2Vz KVtUcmFja10uVXNlRFRTKTsKKyAKKyAgICAgICAgIGlmIChGb3JtYXRDb250ZXh0LT5zdHJlYW1z W1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7Cist ICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFja2V0LmR0cyA6 IFBhY2tldC5wdHM7CisrICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRT ID8gUGFja2V0LT5kdHMgOiBQYWNrZXQtPnB0czsKKyAgICAgICAgICAgICBpZiAoUFRTID09IEFW X05PUFRTX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgIC8vIFZQeCBhbHQtcmVmcyBhcmUgb3V0 cHV0IGFzIHBhY2tldHMgd2hpY2ggbGFjayB0aW1lc3RtcHMgb3IgZHVyYXRpb25zLCBzaW5jZQor ICAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBpbnZpc2libGUuIEN1cnJlbnRseSwgdGhlIHRp bWVzdGFtcCBtYW5nbGluZyBjb2RlIGluIGxpYmF2Zm9ybWF0CitAQCAtNDk1LDkgKzQ5OSwxMSBA QCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAg ICAgIC8vIEZGTVMyIGN1cnJlbnRseSBzb3J0cyBwYWNrZXRzIGJ5IFBUUywgd2hpY2ggd2lsbCBi cmVhayBkZWNvZGluZywgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgICBib29sIEhhc0FsdFJl ZnMgPSAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9WUDggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfVlA5KTsKKy0gICAgICAgICAgICAgICAgaWYgKFBhY2tldC5kdXJhdGlvbiA9PSAw ICYmICFIYXNBbHRSZWZzKQorKyAgICAgICAgICAgICAgICBpZiAoUGFja2V0LT5kdXJhdGlvbiA9 PSAwICYmICFIYXNBbHRSZWZzKSB7CisrICAgICAgICAgICAgICAgICAgICBhdl9wYWNrZXRfZnJl ZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZG TVNfRVJST1JfSU5ERVhJTkcsIEZGTVNfRVJST1JfUEFSU0VSLAorICAgICAgICAgICAgICAgICAg ICAgICAgICJJbnZhbGlkIHBhY2tldCBwdHMsIGR0cywgYW5kIGR1cmF0aW9uIik7CisrICAgICAg ICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgaWYgKFRyYWNrSW5mby5lbXB0eSgpKQor ICAgICAgICAgICAgICAgICAgICAgUFRTID0gMDsKK0BAIC01MTMsNyArNTE5LDcgQEAgRkZNU19J bmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgIFBhcnNlVmlk ZW9QYWNrZXQoQVZDb250ZXh0c1tUcmFja10sIFBhY2tldCwgJlJlcGVhdFBpY3QsICZGcmFtZVR5 cGUsICZJbnZpc2libGUsICZMYXN0UGljU3RydWN0KTsKKyAKKyAgICAgICAgICAgICBUcmFja0lu Zm8uQWRkVmlkZW9GcmFtZShQVFMsIFJlcGVhdFBpY3QsIEtleUZyYW1lLAorLSAgICAgICAgICAg ICAgICBGcmFtZVR5cGUsIFBhY2tldC5wb3MsIEludmlzaWJsZSk7CisrICAgICAgICAgICAgICAg IEZyYW1lVHlwZSwgUGFja2V0LT5wb3MsIEludmlzaWJsZSk7CisgICAgICAgICB9IGVsc2UgaWYg KEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBB Vk1FRElBX1RZUEVfQVVESU8pIHsKKyAgICAgICAgICAgICAvLyBGb3IgdmlkZW8gc2Vla2luZyB0 aW1lc3RhbXBzIGFyZSB1c2VkIG9ubHkgaWYgYWxsIHBhY2tldHMgaGF2ZQorICAgICAgICAgICAg IC8vIHRpbWVzdGFtcHMsIHdoaWxlIGZvciBhdWRpbyB0aGV5J3JlIHVzZWQgaWYgYW55IGhhdmUg dGltZXN0YW1wcywKK0BAIC01MjIsMjggKzUyOCwyOSBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4 ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIFRyYWNrSW5mby5IYXNUUyA9IHRy dWU7CisgCisgICAgICAgICAgICAgaW50NjRfdCBTdGFydFNhbXBsZSA9IEFWQ29udGV4dHNbVHJh Y2tdLkN1cnJlbnRTYW1wbGU7CistICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJ bmRleEF1ZGlvUGFja2V0KFRyYWNrLCAmUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRyYWNr SW5kaWNlcyk7CisrICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1ZGlv UGFja2V0KFRyYWNrLCBQYWNrZXQsIEFWQ29udGV4dHNbVHJhY2tdLCAqVHJhY2tJbmRpY2VzKTsK KyAgICAgICAgICAgICBUcmFja0luZm8uU2FtcGxlUmF0ZSA9IEFWQ29udGV4dHNbVHJhY2tdLkNv ZGVjQ29udGV4dC0+c2FtcGxlX3JhdGU7CisgCisgICAgICAgICAgICAgVHJhY2tJbmZvLkFkZEF1 ZGlvRnJhbWUoTGFzdFZhbGlkVFNbVHJhY2tdLAorLSAgICAgICAgICAgICAgICBTdGFydFNhbXBs ZSwgU2FtcGxlQ291bnQsIEtleUZyYW1lLCBQYWNrZXQucG9zLCBQYWNrZXQuZmxhZ3MgJiBBVl9Q S1RfRkxBR19ESVNDQVJEKTsKKysgICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUsIFNhbXBsZUNv dW50LCBLZXlGcmFtZSwgUGFja2V0LT5wb3MsIFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19E SVNDQVJEKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmICghKFBhY2tldC5mbGFncyAmIEFW X1BLVF9GTEFHX0RJU0NBUkQpKQorLSAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0RHVyYXRpb24g PSBQYWNrZXQuZHVyYXRpb247CisrICAgICAgICBpZiAoIShQYWNrZXQtPmZsYWdzICYgQVZfUEtU X0ZMQUdfRElTQ0FSRCkpCisrICAgICAgICAgICAgVHJhY2tJbmZvLkxhc3REdXJhdGlvbiA9IFBh Y2tldC0+ZHVyYXRpb247CisgCistICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7Cisr ICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgfQorKyAgICBhdl9wYWNrZXRf ZnJlZSgmUGFja2V0KTsKKyAKKyAgICAgVHJhY2tJbmRpY2VzLT5GaW5hbGl6ZShBVkNvbnRleHRz LCBGb3JtYXRDb250ZXh0LT5pZm9ybWF0LT5uYW1lKTsKKyAgICAgcmV0dXJuIFRyYWNrSW5kaWNl cy5yZWxlYXNlKCk7CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQ YWNrZXQgJlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworLSAgICBpZiAoIVVz ZURUUyAmJiBQYWNrZXQucHRzICE9IEFWX05PUFRTX1ZBTFVFKQorLSAgICAgICAgVFMgPSBQYWNr ZXQucHRzOworK3ZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tl dCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworKyAgICBpZiAoIVVzZURUUyAmJiBQYWNr ZXQtPnB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5wdHM7Cisg ICAgIGlmIChUUyA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgIFVzZURUUyA9IHRydWU7Cist ICAgIGlmIChVc2VEVFMgJiYgUGFja2V0LmR0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAgICAg IFRTID0gUGFja2V0LmR0czsKKysgICAgaWYgKFVzZURUUyAmJiBQYWNrZXQtPmR0cyAhPSBBVl9O T1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5kdHM7CisgfQorZGlmZiAtLWdpdCBh L3NyYy9jb3JlL2luZGV4aW5nLmggYi9zcmMvY29yZS9pbmRleGluZy5oCitpbmRleCAzY2ZjM2Mz Li41YzA2ODY4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuaAorKysrIGIvc3JjL2Nv cmUvaW5kZXhpbmcuaAorQEAgLTgwLDEwICs4MCwxMCBAQCBwcml2YXRlOgorICAgICBpbnQ2NF90 IEZpbGVzaXplOworICAgICB1aW50OF90IERpZ2VzdFsyMF07CisgCistICAgIHZvaWQgUmVhZFRT KGNvbnN0IEFWUGFja2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpOworKyAg ICB2b2lkIFJlYWRUUyhjb25zdCBBVlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAm VXNlRFRTKTsKKyAgICAgdm9pZCBDaGVja0F1ZGlvUHJvcGVydGllcyhpbnQgVHJhY2ssIEFWQ29k ZWNDb250ZXh0ICpDb250ZXh0KTsKKyAgICAgdWludDMyX3QgSW5kZXhBdWRpb1BhY2tldChpbnQg VHJhY2ssIEFWUGFja2V0ICpQYWNrZXQsIFNoYXJlZEFWQ29udGV4dCAmQ29udGV4dCwgRkZNU19J bmRleCAmVHJhY2tJbmRpY2VzKTsKKy0gICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFW Q29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGlu dCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpM YXN0UGljU3RydWN0KTsKKysgICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4 dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJh bWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGlj U3RydWN0KTsKKyAgICAgdm9pZCBGcmVlKCk7CisgcHVibGljOgorICAgICBGRk1TX0luZGV4ZXIo Y29uc3QgY2hhciAqRmlsZW5hbWUpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0aWxzLmNwcCBi L3NyYy9jb3JlL3V0aWxzLmNwcAoraW5kZXggY2U2NzUzMy4uOGEyZTk5NyAxMDA2NDQKKy0tLSBh L3NyYy9jb3JlL3V0aWxzLmNwcAorKysrIGIvc3JjL2NvcmUvdXRpbHMuY3BwCitAQCAtNjIsMTIg KzYyLDYgQEAgdm9pZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vycm9ySW5mbyAqRXJyb3JJbmZvKSB7 CisgICAgIH0KKyB9CisgCistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KSB7Cist ICAgIGF2X2luaXRfcGFja2V0KCZwa3QpOworLSAgICBwa3QuZGF0YSA9IG51bGxwdHI7CistICAg IHBrdC5zaXplID0gMDsKKy19CistCisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1Byb3BlcnRpZXMg JkFQLCBBVkNvZGVjQ29udGV4dCAqQ1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpIHsKKyAgICAgQVAu U2FtcGxlRm9ybWF0ID0gc3RhdGljX2Nhc3Q8RkZNU19TYW1wbGVGb3JtYXQ+KGF2X2dldF9wYWNr ZWRfc2FtcGxlX2ZtdChDVFgtPnNhbXBsZV9mbXQpKTsKKyAgICAgQVAuQml0c1BlclNhbXBsZSA9 IGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKENUWC0+c2FtcGxlX2ZtdCkgKiA4OworZGlmZiAtLWdp dCBhL3NyYy9jb3JlL3V0aWxzLmggYi9zcmMvY29yZS91dGlscy5oCitpbmRleCA5ODE5ZGM3Li4w MDNhYjc5IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMuaAorKysrIGIvc3JjL2NvcmUvdXRp bHMuaAorQEAgLTU4LDcgKzU4LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFy Z3MmJi4uLiBhcmdzKSB7CisgfQorIAorIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvcklu Zm8gKkVycm9ySW5mbyk7Cistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KTsKKyB2 b2lkIEZpbGxBUChGRk1TX0F1ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250ZXh0ICpDVFgs IEZGTVNfVHJhY2sgJkZyYW1lcyk7CisgCisgdm9pZCBMQVZGT3BlbkZpbGUoY29uc3QgY2hhciAq U291cmNlRmlsZSwgQVZGb3JtYXRDb250ZXh0IComRm9ybWF0Q29udGV4dCwgaW50IFRyYWNrKTsK K2RpZmYgLS1naXQgYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3Nv dXJjZS5jcHAKK2luZGV4IDA2YmQxNjEuLmI4ODk5NzAgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92 aWRlb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTY3Mywz MCArNjczLDM0IEBAIHZvaWQgRkZNU19WaWRlb1NvdXJjZTo6RGVjb2RlTmV4dEZyYW1lKGludDY0 X3QgJkFTdGFydFRpbWUsIGludDY0X3QgJlBvcykgeworICAgICBpZiAoSGFzUGVuZGluZ0RlbGF5 ZWRGcmFtZXMoKSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0Owor LSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworLQorLSAgICB3aGlsZSAoUmVhZEZyYW1lKCZQ YWNrZXQpID49IDApIHsKKy0gICAgICAgIGlmIChQYWNrZXQuc3RyZWFtX2luZGV4ICE9IFZpZGVv VHJhY2spIHsKKy0gICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgIEFW UGFja2V0ICpQYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisr ICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VS Uk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUg cGFja2V0LiIpOworKworKyAgICB3aGlsZSAoUmVhZEZyYW1lKFBhY2tldCkgPj0gMCkgeworKyAg ICAgICAgaWYgKFBhY2tldC0+c3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsKKysgICAgICAg ICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAg ICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChBU3RhcnRUaW1lIDwgMCkKKy0gICAgICAgICAgICBB U3RhcnRUaW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQucHRzOworKyAg ICAgICAgICAgIEFTdGFydFRpbWUgPSBGcmFtZXMuVXNlRFRTID8gUGFja2V0LT5kdHMgOiBQYWNr ZXQtPnB0czsKKyAKKyAgICAgICAgIGlmIChQb3MgPCAwKQorLSAgICAgICAgICAgIFBvcyA9IFBh Y2tldC5wb3M7CisrICAgICAgICAgICAgUG9zID0gUGFja2V0LT5wb3M7CisgCistICAgICAgICBi b29sIEZyYW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoJlBhY2tldCk7CistICAgICAgICBhdl9w YWNrZXRfdW5yZWYoJlBhY2tldCk7CistICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkKKysgICAg ICAgIGJvb2wgRnJhbWVGaW5pc2hlZCA9IERlY29kZVBhY2tldChQYWNrZXQpOworKyAgICAgICAg YXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisrICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkgewor KyAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAgICAgIHJldHVy bjsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICAvLyBGbHVzaCBmaW5hbCBmcmFtZXMKKy0g ICAgSW5pdE51bGxQYWNrZXQoUGFja2V0KTsKKy0gICAgRGVjb2RlUGFja2V0KCZQYWNrZXQpOwor KyAgICBEZWNvZGVQYWNrZXQoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7 CisgfQorIAorIGJvb2wgRkZNU19WaWRlb1NvdXJjZTo6U2Vla1RvKGludCBuLCBpbnQgU2Vla09m ZnNldCkgeworLS0gCisyLjQwLjAKKworRnJvbSBiZjllMDNlOWUwODUzNGMwMjRlNWE3NDRhNjQz N2M0YWFjMTYwMjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVu aHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEg MTQ6MjA6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGNvbmZpZ3VyZTogUmVtb3ZlIGRl cHJlY2F0ZWQgQVBJIHVzZQorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJl ay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1n aXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzNWVmODBiYy4uZDE5NzE0 ZDBmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0x MDIsMTAgKzEwMiwxMCBAQCBDRkxBR1M9IiRfQ0ZMQUdTICRGRk1QRUdfQ0ZMQUdTIgorCisgQUNf REVGVU4oW1RFU1RfRkZNUEVHXSwKKyAgICAgICAgICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdf UFJPR1JBTShbWworLSAgICAgICAgICAgICNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4K KysgICAgICAgICAgICAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAgICAgICAg ICAgICAjaW5jbHVkZSA8bGlic3dzY2FsZS9zd3NjYWxlLmg+CisgICAgICAgICAgICAgXV0sW1sK Ky0gICAgICAgICAgICAgICAgYXZjb2RlY19yZWdpc3Rlcl9hbGwoKTsKKysgICAgICAgICAgICAg ICAgYXZmb3JtYXRfbmV0d29ya19pbml0KCk7CisgICAgICAgICAgICAgICAgIHN3c2NhbGVfdmVy c2lvbigpOworICAgICAgICAgICAgIF1dKV0sIFtldmFsICQxPXllc10sIFtldmFsICQxPW5vXSkK KyAgICAgICAgIF0pCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUgYi9zcmNw a2dzL2ZmbXMyL3RlbXBsYXRlCmluZGV4IDM2NWY2NGQxMGNiYWIuLjE2NDFlY2Y0M2JlNWIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1zMi90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXMyJwogcGtnbmFt ZT1mZm1zMgogdmVyc2lvbj0yLjQwCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJs ZS1zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgYXV0b2NvbmYgYXV0b21ha2Ug bGlidG9vbCIKCkZyb20gNzEyZmQ1NzI1OThhYzg4OTliYzY5Y2UzODllYzgyYzlhMGFjNWM4MiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMy LzExNV0gZnJlZXJkcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vZnJlZXJkcC9w YXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2ggICAgfCA0MiArKysrKysrKysrKysrKysrKysr CiAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoIGIvc3JjcGtn cy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5hNDMyNGRhM2E4ODIyCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaApAQCAtMCww ICsxLDQyIEBACitGcm9tIGFhMmNiOWFhNWZmNTU2MjQzMzU5OGJhMTY4YTQ2NmUwNzUyYmNhMGUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBha2FsbGFiZXRoIDxha2FsbGFiZXRoQHBv c3Rlby5uZXQ+CitEYXRlOiBUdWUsIDE0IEZlYiAyMDIzIDA3OjQ4OjU0ICswMTAwCitTdWJqZWN0 OiBbUEFUQ0hdIEZpeGVkICM4Njg2OiBVcGRhdGUgaDI2NCB0byB1c2UgbmV3IEZGTVBFRyBBUEkK KworLS0tCisgY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMgfCAyICsr CisgbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jICAgICAgICAgICAgfCAyICsrCisgMiBm aWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NoYW5uZWxzL3Rz bWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jIGIvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZt cGVnL3RzbWZfZmZtcGVnLmMKK2luZGV4IDMzOTQ2MmQ4NjVmLi5iZWVhODBiN2ExZSAxMDA2NDQK Ky0tLSBhL2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCisrKysgYi9j aGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYworQEAgLTIzOSw4ICsyMzks MTAgQEAgc3RhdGljIEJPT0wgdHNtZl9mZm1wZWdfaW5pdF9zdHJlYW0oSVRTTUZEZWNvZGVyKiBk ZWNvZGVyLCBjb25zdCBUU19BTV9NRURJQV9UWVAKKyAJCX0KKyAJfQorIAorKyNpZiBMSUJBVkNP REVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDE4LCAxMDApCisgCWlmIChtZGVj b2Rlci0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9UUlVOQ0FURUQpCisgCQlt ZGVjb2Rlci0+Y29kZWNfY29udGV4dC0+ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19UUlVOQ0FURUQ7 CisrI2VuZGlmCisgCisgCXJldHVybiBUUlVFOworIH0KK2RpZmYgLS1naXQgYS9saWJmcmVlcmRw L2NvZGVjL2gyNjRfZmZtcGVnLmMgYi9saWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMKK2lu ZGV4IDhhMjNkYjI0NzNjLi44OTZhMzMzMDE5YiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29k ZWMvaDI2NF9mZm1wZWcuYworKysrIGIvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCitA QCAtNjE1LDEwICs2MTUsMTIgQEAgc3RhdGljIEJPT0wgbGliYXZjb2RlY19pbml0KEgyNjRfQ09O VEVYVCogaDI2NCkKKyAJCQlnb3RvIEVYQ0VQVElPTjsKKyAJCX0KKyAKKysjaWYgTElCQVZDT0RF Q19WRVJTSU9OX0lOVCA8IEFWX1ZFUlNJT05fSU5UKDU5LCAxOCwgMTAwKQorIAkJaWYgKHN5cy0+ Y29kZWNEZWNvZGVyLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfVFJVTkNBVEVEKQorIAkJ eworIAkJCXN5cy0+Y29kZWNEZWNvZGVyQ29udGV4dC0+ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19U UlVOQ0FURUQ7CisgCQl9CisrI2VuZGlmCisgCisgI2lmZGVmIFdJVEhfVkFBUEkKKyAKCkZyb20g OGQwZTgzYTRhNmYxOGFiMzc0MzUyNmQxMTM4M2Q0Njc0MjczM2VlYSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMzLzExNV0gZ2VyYmVyYTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dlcmJlcmEvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2dlcmJlcmEvdGVtcGxhdGUgYi9zcmNwa2dzL2dlcmJlcmEvdGVtcGxh dGUKaW5kZXggYWUxNGYzNWM3NjdjMC4uMmRjMGFjMGNlMDNiNSAxMDA2NDQKLS0tIGEvc3JjcGtn cy9nZXJiZXJhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dlcmJlcmEnCiBwa2duYW1lPWdlcmJlcmEK IHZlcnNpb249MS4xMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFr ZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9TWVNURU1EPTAgLURXSVRIX0FWQ09ERUM9MSIKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gNjg3OWZhMGM3ODcyMjkwY2JjYTY5ZmZm YWI4M2I2N2ViZDJhZGJmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDM0LzExNV0gZ29sZGVuZGljdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9nb2xkZW5kaWN0L3RlbXBsYXRlIGIvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCmluZGV4 IGY0YTA1NzU5ZjY5M2QuLjk3ZjQ0MzQ3YjAzYTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ29sZGVu ZGljdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnb2xkZW5kaWN0JwogcGtnbmFtZT1nb2xkZW5k aWN0CiB2ZXJzaW9uPTEuNS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1x bWFrZQogY29uZmlndXJlX2FyZ3M9IkNPTkZJRys9emltX3N1cHBvcnQgZ29sZGVuZGljdC5wcm8i CiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIgpA QCAtMTAsNyArMTAsNyBAQCBtYWtlZGVwZW5kcz0idGlmZi1kZXZlbCBxdDUtZGV2ZWwgbGlidm9y YmlzLWRldmVsIHpsaWItZGV2ZWwKICBxdDUtd2Via2l0LWRldmVsIGx6by1kZXZlbCBiemlwMi1k ZXZlbCBsaWJhby1kZXZlbCBxdDUtc3ZnLWRldmVsCiAgbGliZWItZGV2ZWwgcXQ1LXgxMWV4dHJh cy1kZXZlbCBmZm1wZWctZGV2ZWwgbGlibHptYS1kZXZlbAogIHF0NS1tdWx0aW1lZGlhLWRldmVs Igotc2hvcnRfZGVzYz0iQSBmZWF0dXJlLXJpY2ggZGljdGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIK K3Nob3J0X2Rlc2M9IkZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBwcm9ncmFtIgogbWFp bnRhaW5lcj0iSm9obiA8bWVAam9obm55bmF0b3IuZGV2PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3It bGF0ZXIiCiBob21lcGFnZT0iaHR0cDovL2dvbGRlbmRpY3Qub3JnLyIKCkZyb20gODkxMmYxYTk4 MmM1ODg4MDgyOWNjZTA4MTEwMjM2YWYxNTZkN2NjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM1LzExNV0gZ3N0LWxpYmF2OiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0 ZQppbmRleCAzNzQ4NWY2ZjZhOWU4Li5mNjEwZTk2NmYyM2NkIDEwMDY0NAotLS0gYS9zcmNwa2dz L2dzdC1saWJhdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1saWJhdicKIHBrZ25hbWU9Z3N0 LWxpYmF2CiB2ZXJzaW9uPTEuMjIuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB5YXNtIgogbWFrZWRlcGVuZHM9 Im9yYy1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCBmZm1wZWctZGV2ZWwiCgpGcm9tIDc1 MTUyYzRhYzE3NDhiMDFjZGY0MDJlNTc2ZWE5ZTMzZWI1OTcyMGQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNi8xMTVdIGdzdC1ydHNwLXNl cnZlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1ydHNwLXNlcnZl ci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIGIv c3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKaW5kZXggZjI2NmY0Nzc3YjNlYS4uMDEx NDQ0ZWIyNjczOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcnRzcC1zZXJ2ZXInCiBwa2duYW1lPWdzdC1ydHNwLXNl cnZlcgogdmVyc2lvbj0xLjIyLjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcHl0aG9uMyIKIG1ha2VkZXBlbmRz PSJnbGliLWRldmVsIGdzdC1wbHVnaW5zLWJhZDEtZGV2ZWwgZ29iamVjdC1pbnRyb3NwZWN0aW9u CgpGcm9tIGZiZGU0NGIyZjc3M2MyNTFmYjZmZWM2YjExYjdkNTBjNGU0MjM2MWIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNy8xMTVdIGd1 dmN2aWV3OiB1cGRhdGUgdG8gMi4wLjguCgotLS0KIHNyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9m aXgtaW5jbHVkZS5wYXRjaCB8IDEwICsrKysrKysrKysKIHNyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxh dGUgICAgICAgICAgICAgICAgICB8ICA3ICsrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2d1 dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2d1 dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2d1dmN2aWV3L3BhdGNo ZXMvZml4LWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMC4uNTAzYzJhZjNiNzhjMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcv cGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gYS9ndXZjdmll dy9ndXZjdmlldy5jCisrKysgYi9ndXZjdmlldy9ndXZjdmlldy5jCitAQCAtMjgsNiArMjgsNyBA QAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAj aW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgI2luY2x1ZGUgImd2 aWV3LmgiCisgI2luY2x1ZGUgImd2aWV3djRsMmNvcmUuaCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Z3V2Y3ZpZXcvdGVtcGxhdGUgYi9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCmluZGV4IGQ0MmZk MzhmYTRhZDEuLjg2YTdmZDYxOTYxMmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQpAQCAtMSw4ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2d1dmN2aWV3JwogcGtnbmFtZT1ndXZjdmlldwotdmVyc2lvbj0y LjAuNwotcmV2aXNpb249MgotY3JlYXRlX3dya3NyYz15ZXMKK3ZlcnNpb249Mi4wLjgKK3Jldmlz aW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2Fi bGUtc3RhdGljIC0tZGlzYWJsZS1kZWJpYW4tbWVudSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBpbnRsdG9vbCBhdXRvY29uZiBhdXRvbWFrZSBsaWJ0b29sIGdsaWItZGV2ZWwiCkBAIC0x NCw3ICsxMyw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4i CiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly9ndXZjdmlldy5z b3VyY2Vmb3JnZS5uZXQvIgogZGlzdGZpbGVzPSIke1NPVVJDRUZPUkdFX1NJVEV9LyR7cGtnbmFt ZX0vJHtwa2duYW1lfS1zcmMtJHt2ZXJzaW9ufS50YXIuYnoyIgotY2hlY2tzdW09ZjQ3ZDUxZmJk MDZlNDRlZWFhMWE4MmY0YTE1M2M5Mjc1MjdjOTBkOTQ1MTQxOTdhNzBiMjk1NjAyOGNjOGFkNAor Y2hlY2tzdW09YTIxZjRlNDQ4Mjg2NjY2Y2YyN2JhZmVmNTI5MGNjOTUzYTBhMTc5NmI3NTJlNWJi ZTUyMTI2NmRjMTIzMGM4MQogCiBwb3N0X3BhdGNoKCkgewogCXNlZCAnMzFhI2luY2x1ZGUgPGxv Y2FsZS5oPicgLWkgIGd1dmN2aWV3L2d1dmN2aWV3LmMKCkZyb20gZTkwM2E1ZjhiNjE4OWUwZmY1 M2ZlY2VjZGYyZTZmMmUwOTRlN2U0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM4LzExNV0gaGFuZGJyYWtlOiB1cGRhdGUgdG8gMS42LjEK Ci0tLQogLi4uL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2ggICAgfCAx MSArKysrKystLS0tLQogLi4uL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBh dGNoICAgfCAxNSArKysrKysrKysrKysrKysKIHNyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKysrKy0tLS0tLS0KIDMgZmlsZXMgY2hhbmdl ZCwgMzEgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaAoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZs YWcucGF0Y2ggYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGlu ay1mbGFnLnBhdGNoCmluZGV4IDI2ZGIwMzg2N2EwYzguLmQ2YmIyZWRhNjI3YTMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcu cGF0Y2gKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxp bmstZmxhZy5wYXRjaApAQCAtMSwxNCArMSwxNSBAQAogLS0tIGEvZ3RrL2NvbmZpZ3VyZS5hYwog KysrIGIvZ3RrL2NvbmZpZ3VyZS5hYwogQEAgLTIwMyw3ICsyMDMsNyBAQAotIAorCiAgQU1fQ09O RElUSU9OQUwoW01JTkdXXSwgW3Rlc3QgIngkbWluZ3dfZmxhZyIgPSAieHllcyJdKQotIAotLUhC X0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29k ZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2 ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRo ZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250 Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJv anBlZyAtbGx6bWEgLWx6aW1nIgotK0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZm b3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUg LWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlz ZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxi ejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3Nv biAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sZGwiCisKKy1IQl9M SUJTPSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVj IC1sYXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRy ZWFkIC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVv cmFlbmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNv bmZpZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pw ZWcgLWxsem1hIC1semltZyAtbFN2dEF2MUVuYyIKKytIQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRi cmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxz d3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJp cyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2 cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1s MiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyAtbFN2 dEF2MUVuYyAtbGRsIgogIEhCX0NQUEZMQUdTPSIkSEJfQ1BQRkxBR1MgJEhCSU5DIgotIAorCiAg UEtHX0NIRUNLX01PRFVMRVMoW3gyNjRdLCBbeDI2NF0sIHN5c194MjY0PXllcywgc3lzX3gyNjQ9 bm8pCisKIC0tLSBhL3Rlc3QvbW9kdWxlLmRlZnMKICsrKyBiL3Rlc3QvbW9kdWxlLmRlZnMKIEBA IC02OSw2ICs2OSw5IEBACmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xp YmhiLXZwbC1pbmNsdWRlLnBhdGNoIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12 cGwtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li4yOThmOWY0YWIyOGYyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0 Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0gYS9saWJo Yi9tb2R1bGUuZGVmcwkyMDIzLTAxLTIyIDExOjM2OjQ5LjAwMDAwMDAwMCAtMDUwMAorKysrIGIv bGliaGIvbW9kdWxlLmRlZnMJMjAyMy0wNC0wMyAyMjozNzo1Mi4zOTU0NjcwMTAgLTA0MDAKK0BA IC00NiwxMSArNDYsNyBAQAorIExJQkhCLkdDQy5JICs9ICQoTElCSEIuYnVpbGQvKSAkKENPTlRS SUIuYnVpbGQvKWluY2x1ZGUKKyAKKyBpZmVxICgxLCQoRkVBVFVSRS5xc3YpKQorLSAgICBpZmVx ICgkKEhPU1Quc3lzdGVtKSxmcmVlYnNkKSkKKy0gICAgICAgIExJQkhCLkdDQy5JICs9ICQoTE9D QUxCQVNFKS9pbmNsdWRlL3ZwbAorLSAgICBlbHNlCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAk KENPTlRSSUIuYnVpbGQvKWluY2x1ZGUvdnBsCistICAgIGVuZGlmCisrICAgIExJQkhCLkdDQy5J ICs9IC91c3IvaW5jbHVkZS92cGwKKyBlbmRpZgorIAorIGlmbmVxICgsJChmaWx0ZXIgJChIT1NU LnN5c3RlbSksZnJlZWJzZCBuZXRic2Qgb3BlbmJzZCkpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hh bmRicmFrZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCmluZGV4IGNhNWU0 NTcxZTQ5YzMuLmMzMmNiMWJmYTMxZjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGFuZGJyYWtlL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdoYW5kYnJha2UnCiBwa2duYW1lPWhhbmRicmFrZQotdmVy c2lvbj0xLjUuMQordmVyc2lvbj0xLjYuMQogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZm9yY2UgLS1kaXNhYmxlLWd0ay11cGRhdGUtY2hl Y2tzIC0tZGlzYWJsZS1kZi1mZXRjaCAtLWhhcmRlbgotICQodm9wdF9lbmFibGUgZmRrX2FhYyBm ZGstYWFjKSAkKHZvcHRfZW5hYmxlIG52ZW5jKSIKKyAkKHZvcHRfZW5hYmxlIGZka19hYWMgZmRr LWFhYykgJCh2b3B0X2VuYWJsZSBudmVuYykgJCh2b3B0X2VuYWJsZSBxc3YpIgogbWFrZV9idWls ZF9hcmdzPSItQyAke1hCUFNfVFJJUExFVH0iCiBtYWtlX2luc3RhbGxfYXJncz0iLUMgJHtYQlBT X1RSSVBMRVR9IgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBjbWFrZSBnZXR0ZXh0LWRldmVs IGdsaWItZGV2ZWwgaW50bHRvb2wgbGlidG9vbCBtNCBtZXNvbiBuYXNtIHBrZy1jb25maWcgcHl0 aG9uMyIKQEAgLTEyLDggKzEyLDExIEBAIG1ha2VkZXBlbmRzPSJiemlwMi1kZXZlbCBmZm1wZWct ZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZ3RrKzMtZGV2ZWwKICBqYW5zc29uLWRldmVs IGxhbWUtZGV2ZWwgbGliYXNzLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJkYXYxZC1kZXZlbAog IGxpYmR2ZG5hdi1kZXZlbCBsaWJkdmRyZWFkLWRldmVsIGxpYmd1ZGV2LWRldmVsIGxpYm51bWEt ZGV2ZWwKICBsaWJzYW1wbGVyYXRlLWRldmVsIGxpYnRoZW9yYS1kZXZlbCBsaWJ2b3JiaXMtZGV2 ZWwgbGlidnB4LWRldmVsIGxpYnhtbDItZGV2ZWwKLSBvcHVzLWRldmVsIHNwZWV4LWRldmVsIHgy NjQtZGV2ZWwgeDI2NS1kZXZlbCB6aW1nLWRldmVsCisgb3B1cy1kZXZlbCBzcGVleC1kZXZlbCB4 MjY0LWRldmVsIHgyNjUtZGV2ZWwgemltZy1kZXZlbCBsaWJzdnQtYXYxLWRldmVsCiAgJCh2b3B0 X2lmIGZka19hYWMgZmRrLWFhYy1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IGxpYnZhLWRldmVsKQor ICQodm9wdF9pZiBxc3YgbGliZHJtLWRldmVsKQorICQodm9wdF9pZiBxc3Ygb25ldnBsLWRldmVs KQogICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSIKIGRlcGVuZHM9ImRlc2t0b3At ZmlsZS11dGlscyBnc3QtcGx1Z2lucy1nb29kMSBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9k ZXNjPSJNdWx0aXRocmVhZGVkIHZpZGVvIHRyYW5zY29kZXIiCkBAIC0yMSwxNSArMjQsMTUgQEAg bWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQgPGdvdHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9 IkdQTC0yLjAtb25seSIKIGhvbWVwYWdlPSJodHRwczovL2hhbmRicmFrZS5mci8iCiBkaXN0Zmls ZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9IYW5kQnJha2UvSGFuZEJyYWtlL3JlbGVhc2VzL2Rvd25s b2FkLyR7dmVyc2lvbn0vSGFuZEJyYWtlLSR7dmVyc2lvbn0tc291cmNlLnRhci5iejIiCi1jaGVj a3N1bT0zOTk5ZmUwNmQ1MzA5YzgxOTc5OWE3M2E5NjhhOGVjMzg0MGU3ODQwYzJiNjRhZjhmNWNk YjdmZDhjOTQzMGYwCitjaGVja3N1bT05NGNjZmUwM2RiOTE3YTkxNjUwMDAwYzUxMGY3ZmQ1M2Y4 NDRkYTE5ZjE5YWQ0YjRiZTFiOGY2YmMzMWE4ZDRjCiBub2Nyb3NzPXllcwogCi1idWlsZF9vcHRp b25zPSJmZGtfYWFjIG52ZW5jIgorYnVpbGRfb3B0aW9ucz0iZmRrX2FhYyBudmVuYyBxc3YiCiAK IGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCXg4Nl82NCp8aTY4NiopCiAJCUNGTEFH Uz0iLW1zc2UiCi0JCWJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ibnZlbmMiCisJCWJ1aWxkX29wdGlv bnNfZGVmYXVsdD0ibnZlbmMgcXN2IgogCQk7OwogZXNhYwogCkBAIC0zNyw3ICs0MCw3IEBAIHBy ZV9jb25maWd1cmUoKSB7CiAJIyB1c2Ugc3lzdGVtIGxpYnJhcmllcywgZG9uJ3QgZG93bmxvYWQg dGhlbQogCXJtIC1yZiBjb250cmliLwogCWZvciBtb2R1bGUgaW4gZmRrLWFhYyBmZm1wZWcgbGli Ymx1cmF5IGxpYmRhdjFkIGxpYmR2ZG5hdiBsaWJkdmRyZWFkIG52ZW5jIFwKLQkJeDI2NSB6aW1n OyBkbworCQl4MjY1IHppbWcgc3Z0LWF2MSBsaWJ2cGw7IGRvCiAJICAgIHZzZWQgLWkgIi9NT0RV TEVTICs9IGNvbnRyaWJcLyR7bW9kdWxlfS9kIiBtYWtlL2luY2x1ZGUvbWFpbi5kZWZzCiAJZG9u ZQogfQoKRnJvbSBmYzM2MjUzNzk3MzlkOGUwODAxMGM2MmFjMDI1YzU1NDBjMWU5MzM2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzkvMTE1 XSBoZWRnZXdhcnM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9oZWRn ZXdhcnMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUg Yi9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZQppbmRleCAxNWExZGY2ZDg4NjFkLi5kMWI3Mjkw YmZkYzE5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2hlZGdld2Fycy90ZW1wbGF0ZQpAQCAtMSwxMyArMSwxMyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnaGVkZ2V3YXJzJwogcGtnbmFtZT1oZWRnZXdhcnMKIHZlcnNpb249MS4wLjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURO T1NFUlZFUj0xIC1EREFUQV9JTlNUQUxMX0RJUj0vdXNyL3NoYXJlLyR7cGtnbmFtZX0KICAtRFBI WVNGU19TWVNURU09MSAtRE1JTklNQUxfRkxBR1M9MSIKIG1ha2VfY21kPW1ha2UKIGhvc3RtYWtl ZGVwZW5kcz0ibHVhNTEgcGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCi1tYWtl ZGVwZW5kcz0iZmZtcGVnLWRldmVsIGx1YTUxLWRldmVsIHBoeXNmcy1kZXZlbCBxdDUtdG9vbHMt ZGV2ZWwgU0RMMl9pbWFnZS1kZXZlbAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbHVhNTEt ZGV2ZWwgcGh5c2ZzLWRldmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCiAgU0RM Ml9taXhlci1kZXZlbCBTREwyX25ldC1kZXZlbCBTREwyX3R0Zi1kZXZlbCIKIGRlcGVuZHM9Imxp YmZyZWVnbHV0Igogc2hvcnRfZGVzYz0iRnVubnkgdHVybi1iYXNlZCBhcnRpbGxlcnkgZ2FtZSwg ZmVhdHVyaW5nIGZpZ2h0aW5nIEhlZGdlaG9ncyEiCgpGcm9tIDBhYWU3YmM1OGQ4NGI5NWJmNTE4 OWU0MzdkMWQyZjYwY2YzOTdlZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0 MDAKU3ViamVjdDogW1BBVENIIDA0MC8xMTVdIGlkamM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40 LjMKCi0tLQogc3JjcGtncy9pZGpjL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pZGpjL3Rl bXBsYXRlIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCmluZGV4IGE5Y2RlMDY2NWQ1NWIuLjZmMWQy MWM1NzgxZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2lkamMvdGVtcGxhdGUKQEAgLTUsNyArNSw3IEBAIHJldmlzaW9uPTUKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnaXQgcHl0aG9uMyBhdXRv bWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRvb2wiCiBtYWtlZGVwZW5kcz0ibGlidm9yYmlzLWRldmVs IGxpYm9nZy1kZXZlbCBqYWNrLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwKLSBsaWJmbGFjLWRl dmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBnMTIzLWRldmVsIGZmbXBlZy1kZXZlbCBzcGVleC1kZXZl bAorIGxpYmZsYWMtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBtcGcxMjMtZGV2ZWwgZmZtcGVnNC1k ZXZlbCBzcGVleC1kZXZlbAogIGdsaWItZGV2ZWwgcGl4bWFuLWRldmVsIGxhbWUtZGV2ZWwgcHl0 aG9uMy1nb2JqZWN0LWRldmVsIGxpYnNob3V0LWlkamMtZGV2ZWwKICBvcHVzLWRldmVsIHR3b2xh bWUtZGV2ZWwgcHl0aG9uMy1tdXRhZ2VuIHB5dGhvbjMtZGV2ZWwiCiBkZXBlbmRzPSJweXRob24z LWdvYmplY3QgcHl0aG9uMy1tdXRhZ2VuIGRlc2t0b3AtZmlsZS11dGlscyBzaGFyZWQtbWltZS1p bmZvIHB5dGhvbjMtZGJ1cyBqYWNrIgoKRnJvbSBmMzNmZDJkNjBiMGU3ZDA3YmU0ZDc4ZmJlYTJm ODg5Y2UyNGUxMWU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNDEvMTE1XSBrZmlsZW1ldGFkYXRhNTogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxh dGUKaW5kZXggMDBmN2E5OGNmNjM5OS4uZTI5NGFlNWFmOTQ3YyAxMDA2NDQKLS0tIGEvc3JjcGtn cy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna2ZpbGVtZXRhZGF0 YTUnCiBwa2duYW1lPWtmaWxlbWV0YWRhdGE1CiB2ZXJzaW9uPTUuMTExLjAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9Imtjb3JlYWRk b25zIGV4dHJhLWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1h a2UKICBnZXR0ZXh0IGtjb3JlYWRkb25zIHB5dGhvbjMiCgpGcm9tIDFjN2NmNzY3MWRhYjE2ZTgw ZmFlNjZmNzI3MzI2ODU3Mjk2YTQxYmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDgg LTA0MDAKU3ViamVjdDogW1BBVENIIDA0Mi8xMTVdIGtpZDM6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDE3ICsrKysrKysr KysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9raWQzL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4x MzVmYzUwZTA3YzliCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9raWQzL3BhdGNoZXMvZmZt cGVnNS5wYXRjaApAQCAtMCwwICsxLDE3IEBACisjIGh0dHBzOi8vYXVyLmFyY2hsaW51eC5vcmcv Y2dpdC9hdXIuZ2l0L2RpZmYvZmZtcGVnNS5wYXRjaD9oPWtpZDMtY2xpJmlkPTEyNDEwYTc0OTA2 NjEyZTdlZmMwZWM4ZmJjZTczOWI0YTBmZWY3ZTcKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9h Y291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3BwIGIvc3JjL3BsdWdpbnMv YWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAoraW5kZXggZTE1NmQ0 MjQuLmUxMmI5YWJkIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZt cGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorKysrIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBv cnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorQEAgLTIzMiw3ICsyMzIsMTEgQEAgcHJp dmF0ZToKKyAgIGZyaWVuZCBjbGFzcyBGb3JtYXQ7CisgICBmcmllbmQgY2xhc3MgQ29udmVydGVy OworICAgQVZDb2RlY0NvbnRleHQqIG1fcHRyOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5U IDwgQVZfVkVSU0lPTl9JTlQoNTksIDAsIDApCisgICBBVkNvZGVjKiBtX2ltcGw7CisrI2Vsc2UK KysgIGNvbnN0IEFWQ29kZWMqIG1faW1wbDsKKysjZW5kaWYKKyAgIEFWRnJhbWUqIG1fZnJhbWU7 CisgICBib29sIG1fb3BlbmVkOworIH07CgpGcm9tIDgzYjhkNjhlZmFjN2NhYzA4NDRhNTIwMWEx NzFiYzEyM2FlZTc0ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3Vi amVjdDogW1BBVENIIDA0My8xMTVdIGtvZGk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0t LQogc3JjcGtncy9rb2RpL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rb2RpL3RlbXBsYXRl IGIvc3JjcGtncy9rb2RpL3RlbXBsYXRlCmluZGV4IGFhNTkzMjQyNThhMGQuLjZjZjY0ZGZiMjcy OTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvZGkv dGVtcGxhdGUKQEAgLTU0LDcgKzU0LDcgQEAgbWFrZWRlcGVuZHM9IgogIGxpYm1hZC1kZXZlbCBm b250Y29uZmlnLWRldmVsIGxpYlhpbmVyYW1hLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGli bW1zLWRldmVsCiAgZW5jYS1kZXZlbCBib29zdC1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYnZhLWRl dmVsIGxpYnZkcGF1LWRldmVsIGxpYmFzcy1kZXZlbAogIGxpYmJsdWV0b290aC1kZXZlbCB5YWps LWRldmVsIGxpYnBsaXN0LWRldmVsIGxpYnJ0bXAtZGV2ZWwgdGlueXhtbC1kZXZlbAotIHRhZ2xp Yi1kZXZlbCBsaWJjYXAtZGV2ZWwgbGFtZS1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGlibmZzLWRl dmVsIGZmbXBlZy1kZXZlbAorIHRhZ2xpYi1kZXZlbCBsaWJjYXAtZGV2ZWwgbGFtZS1kZXZlbCBs aWJibHVyYXktZGV2ZWwgbGlibmZzLWRldmVsIGZmbXBlZzQtZGV2ZWwKICBnaWZsaWItZGV2ZWwg bGlieHNsdC1kZXZlbCBnbnV0bHMtZGV2ZWwgbGlic3NoLWRldmVsIGxpYm1pY3JvaHR0cGQtZGV2 ZWwKICBsaWJjZWMtZGV2ZWwgZGNhZGVjLWRldmVsIGZsYXRidWZmZXJzLWRldmVsIGZtdC1kZXZl bCBsY21zMi1kZXZlbAogIGxpYmZzdHJjbXAtZGV2ZWwgcmFwaWRqc29uIGxpYmNkaW8tcGFyYW5v aWEgc3BkbG9nIGxpYndheWxhbmRwcC1kZXZlbAoKRnJvbSA5MTk5NjJlYmRkNzdkMDdjM2YzNTlh ZTY5NzE1MTEwMzUyNjUzZDlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNDQvMTE1XSBrcGlwZXdpcmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tw aXBld2lyZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCmluZGV4IGIyZDNk ODBjMWRkMWEuLjk4MWM3Yjg4OTBkZWQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva3BpcGV3aXJlL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAna3BpcGV3aXJlJwogcGtnbmFtZT1rcGlwZXdpcmUKIHZlcnNp b249NS4yNy45Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9z dG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHBsYXNtYS13YXlsYW5kLXByb3RvY29s cyBnZXR0ZXh0CiAgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWcgd2F5bGFuZC1k ZXZlbCBrY29yZWFkZG9ucwoKRnJvbSBlNzBkNzYwYmUzYTU1NGVkNjRmYjEyOWEwZDUwODdhMDQ2 ZGI1YWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNDUvMTE1XSBsaWJleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0t LQogc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmV4 dHJhY3Rvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCmluZGV4IGJm Y2VhOTc5YTMwOGMuLmZhZmQ4ZGVkYmMzNGIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGliZXh0cmFj dG9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC03LDcg KzcsNyBAQCBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXN0YXRpYyIKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGV4aXYy LWRldmVsIHRpZmYtZGV2ZWwgbGlicG5nLWRldmVsCiAgbGlianBlZy10dXJiby1kZXZlbCBsaWJ2 b3JiaXMtZGV2ZWwgbGliZmxhYy1kZXZlbCBnaWZsaWItZGV2ZWwgbGlibXBlZzItZGV2ZWwKLSBm Zm1wZWctZGV2ZWwgZ3RrKzMtZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJhcmNoaXZlLWRldmVsIGZp bGUtZGV2ZWwgbGliZ3NmLWRldmVsIgorIGZmbXBlZzQtZGV2ZWwgZ3RrKzMtZGV2ZWwgbGlibHRk bC1kZXZlbCBsaWJhcmNoaXZlLWRldmVsIGZpbGUtZGV2ZWwgbGliZ3NmLWRldmVsIgogc2hvcnRf ZGVzYz0iTGlicmFyeSB1c2VkIHRvIGV4dHJhY3QgbWV0YSBkYXRhIGZyb20gZmlsZXMiCiBtYWlu dGFpbmVyPSJNYXJ0aW4gUmllc2UgPGdyYXVlaGFhcmVAZ214LmRlPiIKIGxpY2Vuc2U9IkdQTC0z LjAtb3ItbGF0ZXIiCgpGcm9tIDkwNTBlMjhlZDI5NmE0MDA3NjAwYmEyNDM3N2MwN2Y0MjUxMDA3 M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENI IDA0Ni8xMTVdIGxpYm9wZW5hbDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2xpYm9wZW5hbC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRl IGIvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUKaW5kZXggNzcyMThmOWU1MzlkZi4uM2Y0OWVk NzVhMWZkYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9saWJvcGVuYWwvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdsaWJvcGVuYWwnCiBwa2duYW1lPWxpYm9wZW5hbAogdmVyc2lvbj0xLjIyLjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURB TFNPRlRfRVhBTVBMRVM9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBj NmQxMzE1NjZiYmI4MjUwNzEwYTg3YjBhMThmZmFmNTMyNTU3YjA5IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDcvMTE1XSBsb3VkZ2Fpbjog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZt cGVnNS5wYXRjaCB8IDExICsrKysrKysrKysrCiBzcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlICAg ICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoIGIvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMTZkNDUxMGVlOThmYQotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0w LDAgKzEsMTEgQEAKKy0tLSBhL3NyYy9zY2FuLmMJMjAxOS0wOS0wNiAxMTozMToxOS4wMDAwMDAw MDAgLTA0MDAKKysrKyBiL3NyYy9zY2FuLmMJMjAyMy0wMy0yMyAxMToxNTo0MC44Njc5Njg1MjEg LTA0MDAKK0BAIC02OSw4ICs2OSw2IEBACisgCSAqIEl0IGlzIG5vdyB1c2VsZXNzCisgCSAqIGh0 dHBzOi8vZ2l0aHViLmNvbS9GRm1wZWcvRkZtcGVnL2Jsb2IvNzBkMjUyNjhjMjFjYmVlNWYwODMw NGRhOTViZTFmNjQ3YzYzMGMxNS9kb2MvQVBJY2hhbmdlcyNMODYKKyAJICovCistICBpZiAoYXZm b3JtYXRfdmVyc2lvbigpIDwgQVZfVkVSU0lPTl9JTlQoNTgsOSwxMDApKQorLSAgICBhdl9yZWdp c3Rlcl9hbGwoKTsKKyAKKyAJYXZfbG9nX3NldF9jYWxsYmFjayhzY2FuX2F2X2xvZyk7CisgCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlIGIvc3JjcGtncy9sb3VkZ2Fpbi90 ZW1wbGF0ZQppbmRleCBkYTRmMmQ1NmU5NGMzLi40ZDZiZjI5ZWZiNGZkIDEwMDY0NAotLS0gYS9z cmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsb3VkZ2FpbicKIHBrZ25hbWU9 bG91ZGdhaW4KIHZlcnNpb249MC42LjgKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGli ZWJ1cjEyOC1kZXZlbCB0YWdsaWItZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA4NGU4ZDVhNWFj ODcyOTFmNTc0NjQwMzc4YzA3NjMzODY1YzcwMWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDgvMTE1XSBtZWRpYXN0cmVhbWVyOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWVk aWFzdHJlYW1lci90ZW1wbGF0ZQppbmRleCAwZmNmZmE3NjUzZDE4Li45MmFkYTg4NzQzYTliIDEw MDY0NAotLS0gYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9t ZWRpYXN0cmVhbWVyL3RlbXBsYXRlCkBAIC01LDcgKzUsNyBAQCByZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX1NUUklDVD0wIC1ERU5BQkxFX1VO SVRfVEVTVFM9MCIKIGhvc3RtYWtlZGVwZW5kcz0icHl0aG9uMyIKLW1ha2VkZXBlbmRzPSJienJ0 cC1kZXZlbCBmZm1wZWctZGV2ZWwgZ2xldy1kZXZlbCBsaWJYdi1kZXZlbCBsaWJzcnRwLWRldmVs CittYWtlZGVwZW5kcz0iYnpydHAtZGV2ZWwgZmZtcGVnNC1kZXZlbCBnbGV3LWRldmVsIGxpYlh2 LWRldmVsIGxpYnNydHAtZGV2ZWwKICBsaWJ1cG5wLWRldmVsIGxpYnZweC1kZXZlbCBtYmVkdGxz LWRldmVsIG9wdXMtZGV2ZWwgb3J0cC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgbGlidGhlb3Jh LWRldmVsIHNwZWV4LWRldmVsIHY0bC11dGlscy1kZXZlbCBiY2c3MjktZGV2ZWwgYmNtYXRyb3Nr YTItZGV2ZWwgbGliZ3NtLWRldmVsCiAgenhpbmctY3BwLWRldmVsIgoKRnJvbSA5NjU1MWFlZWRk ZWZjNmFlNmQ0YWU0NDc0ZmViNTIzOTA2YTE1NDAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDkvMTE1XSBtZ2JhOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbWdiYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bWdiYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQppbmRleCA1NTEzZTNmZDE2ZjNm Li5mNWM4N2E0ODkzMDAyIDEwMDY0NAotLS0gYS9zcmNwa2dzL21nYmEvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9tZ2JhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnbWdiYScKIHBrZ25hbWU9bWdiYQogdmVyc2lvbj0wLjEwLjIKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1 LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGRlc2t0b3AtZmlsZS11dGlscyIKIG1ha2VkZXBlbmRzPSJT REwyLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJlZGl0LWRldmVsIGxpYmVwb3h5LWRldmVsIGxpYm1h Z2ljay1kZXZlbAoKRnJvbSAyZTBhNTAzYjg4ZTBmYzNlNmQ3ZmYzMmM1ZjY5MTJmYzEzM2VjOWFi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NTAvMTE1XSBtbHQ6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tbHQv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWx0L3Rl bXBsYXRlCmluZGV4IDczZTM5MTVhYWFiOWEuLmVjNTA1NGJlM2I3NWUgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbWx0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCkBAIC04LDcgKzgs NyBAQCBjb25maWd1cmVfYXJncz0iLS1wcmVmaXg9L3VzciAtLWxpYmRpcj0vdXNyL2xpYiRYQlBT X1RBUkdFVF9XT1JEU0laRQogIC0tc3dpZy1sYW5ndWFnZXM9cHl0aG9uIgogaG9zdG1ha2VkZXBl bmRzPSJkb3h5Z2VuIHBrZy1jb25maWcgbGFkc3BhLXNkayBzd2lnIHB5dGhvbjMgd2hpY2giCiAj IFhYWDogbW92aXQgdmlkLnN0YWIKLW1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWct ZGV2ZWwgZ3RrKy1kZXZlbCBqYWNrLWRldmVsIGxhZHNwYS1zZGsKK21ha2VkZXBlbmRzPSJhbHNh LWxpYi1kZXZlbCBmZm1wZWc0LWRldmVsIGd0aystZGV2ZWwgamFjay1kZXZlbCBsYWRzcGEtc2Rr CiAgbGliZXhpZi1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsIGxpYnhtbDItZGV2ZWwgc294LWRl dmVsIFNETF9pbWFnZS1kZXZlbAogIGZmdHctZGV2ZWwgZnJlaTByLXBsdWdpbnMgcHl0aG9uMy1k ZXZlbCBwdWxzZWF1ZGlvLWRldmVsIG1vdml0LWRldmVsCiAgbGlidmlkc3RhYi1kZXZlbCIKCkZy b20gYTJiYWI2MmRkYWExNmFmMzMwNDFhOTU0NzcwMWI0MjZmZTkzMGQ2OSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUxLzExNV0gbW9jOiBy ZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbW9jL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9tb2MvdGVtcGxhdGUgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQppbmRleCAz YTA0OTMyYzhmMWU2Li5kOGRlODE2MDI2YjY0IDEwMDY0NAotLS0gYS9zcmNwa2dzL21vYy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQpAQCAtNCw3ICs0LDcgQEAgdmVyc2lvbj0y LjUuMgogcmV2aXNpb249NwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImRiLWRldmVsIG5jdXJzZXMtZGV2ZWwgbGli Y3VybC1kZXZlbCBwb3B0LWRldmVsIGZmbXBlZy1kZXZlbAorbWFrZWRlcGVuZHM9ImRiLWRldmVs IG5jdXJzZXMtZGV2ZWwgbGliY3VybC1kZXZlbCBwb3B0LWRldmVsIGZmbXBlZzQtZGV2ZWwKICBq YWNrLWRldmVsIGFsc2EtbGliLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJ2 b3JiaXMtZGV2ZWwKICBsaWJtYWQtZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1vZHBsdWctZGV2 ZWwgbGliaWQzdGFnLWRldmVsIGZhYWQyLWRldmVsCiAgdGFnbGliLWRldmVsIGxpYnNuZGZpbGUt ZGV2ZWwgd2F2cGFjay1kZXZlbCBzcGVleC1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCgpGcm9t IGE4MTE4YmJjZmQxY2JjMzlhOTRlZjk4NjliNDViNTAzZjc3ZGZkZmUgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Mi8xMTVdIG1vdGlvbjog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21vdGlvbi90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlIGIvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUK aW5kZXggNjA3ZWJlYjNjN2IyNC4uYmY2M2E5MWQ5NzY0ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9t b3Rpb24vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtb3Rpb24nCiBwa2duYW1lPW1vdGlvbgogdmVyc2lv bj00LjYuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3Vy ZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBwa2ctY29uZmlnIGdldHRleHQtZGV2ZWwgdGFy IgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBsaWJtaWNyb2h0dHBkLWRldmVsIHY0bC11dGls cy1kZXZlbCBnZXR0ZXh0LWRldmVsIgoKRnJvbSBlODFkMjllYmUxZTc1YzYyNzM0YmVjM2Y5YTM0 ZWQ5M2JiY2Y4NmYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNTMvMTE1XSBub3RjdXJzZXM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL25vdGN1cnNl cy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlCmluZGV4IDZkZDhhMDkxMzE5 ZjcuLjMxMTBjMzBjOWFmZjIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnbm90Y3Vyc2VzJwogcGtnbmFtZT1ub3RjdXJzZXMKIHZlcnNpb249My4w LjkKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iLURVU0VfU1RBVElDPU9OICQodm9wdF9ib29sIG1hbiBVU0VfUEFORE9DKSIKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyAkKHZvcHRfaWYgbWFuIHBhbmRvYykiCgpGcm9tIDdjN2Jm M2FiZDBhOGQ4N2Q3MThkYzM4ZTA1ZTExMmNjMjJhYjcyYjggTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1NC8xMTVdIG9saXZlOiByZXZidW1w IGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKaW5k ZXggMTJhNDY5MzZjOTkwMC4uNWMyOTE3YjljNTEyNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9vbGl2 ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29saXZlL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvbGl2ZScKIHBrZ25hbWU9b2xpdmUKIHZlcnNpb249MC4x LjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRl cGVuZHM9InF0NS1xbWFrZSBxdDUtaG9zdC10b29scyBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9 InF0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBlZy1kZXZl bCBmcmVpMHItcGx1Z2lucyIKK21ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEt ZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBmZm1wZWc0LWRldmVsIGZyZWkwci1wbHVnaW5zIgogc2hvcnRf ZGVzYz0iTm9uLWxpbmVhciB2aWRlbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3Jw aGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gZDEw YWNmYzIzZmZlNmY3NDQ1ODZkYWY0ZmVmNmFlNDMwZTgwZjQzYiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU1LzExNV0gb214cGxheWVyOiBy ZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRl IHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlIGIvc3JjcGtncy9vbXhw bGF5ZXIvdGVtcGxhdGUKaW5kZXggOWE2NjY5MGM4M2ViYi4uYTIxYjg3ODg3ODAzNyAxMDA2NDQK LS0tIGEvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vbXhwbGF5ZXIv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvbXhwbGF5ZXIn CiBwa2duYW1lPW9teHBsYXllcgogdmVyc2lvbj0yMDE5MDEwMgotcmV2aXNpb249MgorcmV2aXNp b249Mwogc2hvcnRfZGVzYz0iQ29tbWFuZGxpbmUgT01YIHBsYXllciBmb3IgdGhlIFJhc3BiZXJy eSBQaSIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJHUEwtMi4wLW9yLWxhdGVyIgpAQCAtMTUsNyArMTUsNyBAQCBjaGVja3N1bT1hZjJkOTQ1 MGY4OTQ3ODQyZWE4YzQwMWZlOWY3MWVlYzQ0NDAxM2ViYmRlZTI5ZjJhYzgyOGM5YzQ5M2MxMzI5 CiBhcmNocz0iYXJtdjZsKiBhcm12N2wqIgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0 bWFrZWRlcGVuZHM9InJ1Ynktcm9ubiBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImFsc2EtbGli LWRldmVsIHJwaS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRldmVsIGZyZWV0eXBl LWRldmVsIGZmbXBlZy1kZXZlbCBkYnVzLWRldmVsIgorbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRl dmVsIHJwaS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRldmVsIGZyZWV0eXBlLWRl dmVsIGZmbXBlZzQtZGV2ZWwgZGJ1cy1kZXZlbCIKIGRlcGVuZHM9ImZyZWVmb250LXR0ZiIKIAog ZG9fYnVpbGQoKSB7CgpGcm9tIDZmMDhmMjU4M2ZmMzAwNGQyNWJkYWFiZTYwOGNmYjVjMmJiYjMy NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENI IDA1Ni8xMTVdIG9wZW50b29uejogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L29wZW50b29uei90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRl IGIvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUKaW5kZXggZWU5Zjc2MDNmNTVmZC4uM2U4MTgz NGNhMGVkZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9vcGVudG9vbnovdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdvcGVudG9vbnonCiBwa2duYW1lPW9wZW50b29uegogdmVyc2lvbj0xLjYuMAotcmV2aXNp b249MgorcmV2aXNpb249MwogYnVpbGRfd3Jrc3JjPSJ0b29uei9zb3VyY2VzIgogYnVpbGRfc3R5 bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKCkZyb20gOTM4NjllMzNlMGExNDMzZjk3NjIwY2EzMTk0 Mzk2YThhMDA3YWYxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDU3LzExNV0gcGlhbm9iYXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcGlhbm9iYXIv dGVtcGxhdGUgYi9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlCmluZGV4IGUzZmViYjgyMWE0NTEu LjFlM2RjMWJmOTMwOGUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3BpYW5vYmFyJwogcGtnbmFtZT1waWFub2JhcgogdmVyc2lvbj0yMDIyLjA0LjAx Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2Vf YnVpbGRfYXJncz0iVj0xIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAzNTYz NDY4NzZjM2EzYzQzZWFkZGUzYmM2NTMwZWM3MWMwY2U2MjMxIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTgvMTE1XSBwcHNzcHA6IHJldmJ1 bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUgfCA3ICsr Ky0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3Bwc3NwcC90ZW1w bGF0ZQppbmRleCAyYzBkZWQ0OTZlYjk4Li4xMjk0ZWYzYWU2NjljIDEwMDY0NAotLS0gYS9zcmNw a2dzL3Bwc3NwcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Bwc3NwcCcKIHBrZ25hbWU9cHBzc3BwCiB2 ZXJzaW9uPTEuMTYuNgotcmV2aXNpb249MQorcmV2aXNpb249MgogX2dsc2xhbmdfY29tbWl0PWIz NGY2MTllMWM4NTgxMGRjYjNjNTc4MTA3ZDJlNDhiYTRlZTJiMzcKIF9TUElSVl9Dcm9zc19jb21t aXQ9NDIxMmVlZjY3ZWQwY2EwNDhjYjcyNmE2NzY3MTg1NTA0ZTc2OTVlNQogX2FybWlwc19jb21t aXQ9N2JkMWVjOTNkNDU4Njk4NWJhMWVmNDIwYjQzYjVlNjIwZjY4Njk1ZQpAQCAtMTUsNyArMTUs NyBAQCBjb25maWd1cmVfYXJncz0iLURIRUFETEVTUz0xIC1EVVNFX1NZU1RFTV9GRk1QRUc9MSAt RFVOSVRURVNUPU9OCiAgLURVU0lOR19RVF9VST0kKHZvcHRfaWYgcXQgT04gT0ZGKSAtRFVTRV9T WVNURU1fWlNURD1PTgogIC1EQVJNSVBTX1VTRV9TVERfRklMRVNZU1RFTT1PTiIKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyBweXRob24zICQodm9wdF9pZiBxdCBxdDUtaG9zdC10b29scyki Ci1tYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBnbGV3LWRldmVsIGZmbXBlZy1kZXZlbCBsaWJ6aXAt ZGV2ZWwKK21ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVnNC1kZXZlbCBs aWJ6aXAtZGV2ZWwKICBzbmFwcHktZGV2ZWwgcmFwaWRqc29uIGxpYnBuZy1kZXZlbCBsaWJ6c3Rk LWRldmVsCiAgJCh2b3B0X2lmIHNkbDIgJ1NETDJfdHRmLWRldmVsIFNETDItZGV2ZWwnKSAkKHZv cHRfaWYgd2F5bGFuZCB3YXlsYW5kLWRldmVsKQogICQodm9wdF9pZiBxdCAncXQ1LWRldmVsIHF0 NS1tdWx0aW1lZGlhLWRldmVsJykiCkBAIC03Miw3ICs3Miw3IEBAIHBvc3RfZXh0cmFjdCgpIHsK ICAgICAgICAgbXYgJHt3cmtzcmN9L3JjaGVldm9zLSR7X3JjaGVldm9zX2NvbW1pdH0gJHt3cmtz cmN9L2V4dC9yY2hlZXZvcwogfQogCi1wb3N0X3BhdGNoKCl7Citwb3N0X3BhdGNoKCkgewogCSMg ZGlzYWJsZSBnaXQgdmVyc2lvbmluZwogCXZzZWQgLWUgJ3N8ZmluZF9wYWNrYWdlKEdpdCl8IyAm fCcgLWkgZ2l0LXZlcnNpb24uY21ha2UKIH0KQEAgLTg1LDcgKzg1LDYgQEAgcG9zdF9jb25maWd1 cmUoKSB7CiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JdmxpY2Vuc2UgTElDRU5TRS5UWFQKIAl2aW5z dGFsbCBpY29ucy9pY29uLnN2ZyA2NDQgdXNyL3NoYXJlL3BpeG1hcHMgcHBzc3BwLnN2ZwogCXZp bnN0YWxsIFF0L1BQU1NQUC5kZXNrdG9wIDY0NCB1c3Ivc2hhcmUvYXBwbGljYXRpb25zCiAJdmJp biBidWlsZC9QUFNTUFBIZWFkbGVzcyBwcHNzcHAtaGVhZGxlc3MKCkZyb20gNzRhNmNmZGQ2ZjA0 ZDhlZTUzNmJhMWZhZTAwZGM3ODFhZDE3NTY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU5LzExNV0gcHFpdjogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL3BxaXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Bx aXYvdGVtcGxhdGUgYi9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKaW5kZXggNTQyZmMyN2EyZDMyYS4u OTMwOGQ5NDliNmExYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcWl2L3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvcHFpdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3BxaXYnCiBwa2duYW1lPXBxaXYKIHZlcnNpb249Mi4xMgotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWci CiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBndGsrMy1kZXZlbCAkKHZvcHRfaWYgZmZtcGVnIGZm bXBlZy1kZXZlbCkKCkZyb20gNjAwMjBlZWJhZjdkNDg2MmM5MTI0MTc5ZmMxZWY5MTU5MjNlMDMw MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDYwLzExNV0gcW1tcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3FtbXAv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUgYi9zcmNwa2dzL3FtbXAv dGVtcGxhdGUKaW5kZXggNTM3ODFlYTNiYzI4YS4uMmRhMDdmMWU4N2VhYyAxMDA2NDQKLS0tIGEv c3JjcGtncy9xbW1wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FtbXAnCiBwa2duYW1lPXFtbXAKIHZlcnNp b249MS42LjEKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25m aWd1cmVfYXJncz0iLURVU0VfSEFMOkJPT0w9RkFMU0UgLURRTU1QX0RFRkFVTFRfVUk6U1RSSU5H PXNpbXBsZSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUt cW1ha2UiCgpGcm9tIDIwNzEzOTc3N2VkNzVmNjI5MmRkZjA4OGY1OWY2Yjk5NmM3ZTNlMjYgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2MS8x MTVdIHF0NS13ZWJlbmdpbmU6IHVwZGF0ZSB0byA1LjE1LjEzCgotLS0KIC4uLi9jaHJvbWl1bS1t ZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoICAgICAgICB8ICAxMSArKwogc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKwog c3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlICAgICAgICAgICAgICAgIHwgIDEwICstCiAz IGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlh LWZpbHRlcnMtY3BwMTQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCBiL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMDRhZGM1NDBmMmNi YwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9t aXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24JMjAyMy0wMi0yNyAxMzoz Mjo1OS4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9m aWx0ZXJzL0JVSUxELmduCTIwMjMtMDQtMDIgMTc6MjE6MzkuMjA0MDY2Mzg0IC0wNDAwCitAQCAt OTYsNiArOTYsOCBAQAorICAgICAiLy91aS9nZngvZ2VvbWV0cnk6Z2VvbWV0cnkiLAorICAgXQor IAorKyAgY2ZsYWdzX2NjID0gWyAiLXN0ZD1jKysxNCIgXQorKworICAgbGlicyA9IFtdCisgCisg ICBpZiAocHJvcHJpZXRhcnlfY29kZWNzKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNo ZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li5hYzU1ZTE2MzQ0MjNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3OSBAQAorLS0tIGEvc3JjLzNyZHBh cnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wNC0wMiAx Njo1MDo1Ny43MzI1NDc0NDYgLTA0MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRp YS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6MDkuNDg2NDc4OTk1 IC0wNDAwCitAQCAtNTcsNiArNTcsOCBAQAorIAorIG5hbWVzcGFjZSB7CisgCisrY29uc3RleHBy IGludDY0X3Qga1JlbGF0aXZlVHNCYXNlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oMHg3ZmZlZmZm ZmZmZmZmZmZmKTsKKysKKyB2b2lkIFNldEFWU3RyZWFtRGlzY2FyZChBVlN0cmVhbSogc3RyZWFt LCBBVkRpc2NhcmQgZGlzY2FyZCkgeworICAgRENIRUNLKHN0cmVhbSk7CisgICBzdHJlYW0tPmRp c2NhcmQgPSBkaXNjYXJkOworQEAgLTkwLDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpU aW1lRGVsdGEgRXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUg ZGVmYXVsdCBzdGFydCB0aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGlt ZTsKKysgIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAg Ly8gRmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKyAgIGlm IChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorICAgICBzdGFydF90 aW1lID0gQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFy dF90aW1lKTsKKyAKKy0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBm b3IgY29kZWNzIHdoZXJlIHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1ZGVzIGFsbCBI MjZ4IGNvZGVjcykuIFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgorLSAg aWYgKHN0cmVhbS0+Zmlyc3RfZHRzICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAmJgorLSAgICAgIHN0 cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMgJiYKKy0gICAgICBz dHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0ICYmCistICAgICAg c3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKKy0gICAg Y29uc3QgYmFzZTo6VGltZURlbHRhIGZpcnN0X3B0cyA9CistICAgICAgICBDb252ZXJ0RnJvbVRp bWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPmZpcnN0X2R0cyk7CistICAgIGlmIChm aXJzdF9wdHMgPCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJzdF9wdHM7Cist ICB9CistCisgICByZXR1cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtNDA4LDExICszOTgsMTEg QEAKKyAgIHNjb3BlZF9yZWZwdHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOworIAorICAgaWYgKHR5 cGUoKSA9PSBEZW11eGVyU3RyZWFtOjpURVhUKSB7CistICAgIGludCBpZF9zaXplID0gMDsKKysg ICAgc2l6ZV90IGlkX3NpemUgPSAwOworICAgICB1aW50OF90KiBpZF9kYXRhID0gYXZfcGFja2V0 X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZU VF9JREVOVElGSUVSLCAmaWRfc2l6ZSk7CisgCistICAgIGludCBzZXR0aW5nc19zaXplID0gMDsK KysgICAgc2l6ZV90IHNldHRpbmdzX3NpemUgPSAwOworICAgICB1aW50OF90KiBzZXR0aW5nc19k YXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFW X1BLVF9EQVRBX1dFQlZUVF9TRVRUSU5HUywgJnNldHRpbmdzX3NpemUpOworIAorQEAgLTQyNCw3 ICs0MTQsNyBAQAorICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQt PmRhdGEsIHBhY2tldC0+c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7CisgICB9IGVsc2UgeworLSAg ICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2lkZV9kYXRhX3NpemUgPSAw OworICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAg ICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFM LCAmc2lkZV9kYXRhX3NpemUpOworIAorQEAgLTQ4NSw3ICs0NzUsNyBAQAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldC0+c2l6ZSAtIGRhdGFfb2Zmc2V0KTsK KyAgICAgfQorIAorLSAgICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworKyAgICBzaXplX3Qg c2tpcF9zYW1wbGVzX3NpemUgPSAwOworICAgICBjb25zdCB1aW50MzJfdCogc2tpcF9zYW1wbGVz X3B0ciA9CisgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXZfcGFj a2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFU QV9TS0lQX1NBTVBMRVMsICZza2lwX3NhbXBsZXNfc2l6ZSkpOworQEAgLTE1ODcsNiArMTU3Nyw4 IEBACisgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7CisgICAgIGlmICgh c3RyZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAgICAgICBjb250aW51 ZTsKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNf VkFMVUUpCisrICAgICAgY29udGludWU7CisgICAgIGlmICghbG93ZXN0X3N0YXJ0X3RpbWVfc3Ry ZWFtIHx8CisgICAgICAgICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9zdGFydF90aW1l X3N0cmVhbS0+c3RhcnRfdGltZSgpKSB7CisgICAgICAgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFt ID0gc3RyZWFtLmdldCgpOworQEAgLTE2MDQsNiArMTU5Niw4IEBACisgICAgIGlmIChzdHJlYW0g JiYgc3RyZWFtLT50eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VklERU8gJiYKKyAgICAgICAgIHN0 cmVhbS0+SXNFbmFibGVkKCkpIHsKKyAgICAgICB2aWRlb19zdHJlYW0gPSBzdHJlYW0uZ2V0KCk7 CisrICAgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNf VkFMVUUpCisrICAgICAgICBjb250aW51ZTsKKyAgICAgICBpZiAodmlkZW9fc3RyZWFtLT5zdGFy dF90aW1lKCkgPD0gc2Vla190aW1lKSB7CisgICAgICAgICByZXR1cm4gdmlkZW9fc3RyZWFtOwor ICAgICAgIH0KK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaCBxdHdlYmVuZ2luZS01LjE1 LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCist LS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaAky MDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNy0xMSAyMjoxMjo0Ny45 MTcxOTI3ODggLTA1MDAKK0BAIC0yOSw2ICsyOSw3IEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRl IDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmlvLmg+ CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9hdnV0aWwuaD4KKysjaW5jbHVkZSA8bGliYXZ1dGlsL2No YW5uZWxfbGF5b3V0Lmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9pbWd1dGlscy5oPgorICNpbmNs dWRlIDxsaWJhdnV0aWwvbG9nLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9tYXN0ZXJpbmdfZGlz cGxheV9tZXRhZGF0YS5oPgorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjIHF0 d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVk aW9fZmlsZV9yZWFkZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0 ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0w NTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxl X3JlYWRlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTg1LDcg Kzg1LDcgQEAgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZW11eGVyKCkgeworIH0KKyAKKyBi b29sIEF1ZGlvRmlsZVJlYWRlcjo6T3BlbkRlY29kZXIoKSB7CistICBBVkNvZGVjKiBjb2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25z dCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5j b2RlY19pZCk7CisgICBpZiAoY29kZWMpIHsKKyAgICAgLy8gTVAzIGRlY29kZXMgdG8gUzE2UCB3 aGljaCB3ZSBkb24ndCBzdXBwb3J0LCB0ZWxsIGl0IHRvIHVzZSBTMTYgaW5zdGVhZC4KKyAgICAg aWYgKGNvZGVjX2NvbnRleHRfLT5zYW1wbGVfZm10ID09IEFWX1NBTVBMRV9GTVRfUzE2UCkKK2Rp ZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0v bWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEw L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVy LmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVk aW9fZGVjb2Rlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIu Y2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0zMjksNyArMzI5LDcg QEAgYm9vbCBGRm1wZWdBdWRpb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAgICB9CisgICB9 CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRl eHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVjIHx8CisgICAg ICAgYXZjb2RlY19vcGVuMihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsICZjb2RlY19vcHRp b25zKSA8IDApIHsKKyAgICAgRExPRyhFUlJPUikgPDwgIkNvdWxkIG5vdCBpbml0aWFsaXplIGF1 ZGlvIGRlY29kZXI6ICIKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYyBxdHdlYmVuZ2lu ZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVl LmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1 ZS5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBh cnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAyMi0wNy0xMSAyMjox Mjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC01OSw3ICs1OSw2IEBAIHN0YXRpYyBpbnQ2NF90IEFW SU9TZWVrT3BlcmF0aW9uKHZvaWQqIG8KKyB9CisgCisgdm9pZCBGRm1wZWdHbHVlOjpJbml0aWFs aXplRkZtcGVnKCkgeworLSAgYXZfcmVnaXN0ZXJfYWxsKCk7CisgfQorIAorIHN0YXRpYyB2b2lk IExvZ0NvbnRhaW5lcihib29sIGlzX2xvY2FsX2ZpbGUsCitAQCAtOTUsOSArOTQsNiBAQCBGRm1w ZWdHbHVlOjpGRm1wZWdHbHVlKEZGbXBlZ1VSTFByb3RvY29sCisgICAvLyBFbmFibGUgZmFzdCwg YnV0IGluYWNjdXJhdGUgc2Vla3MgZm9yIE1QMy4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3Mg fD0gQVZGTVRfRkxBR19GQVNUX1NFRUs7CisgCistICAvLyBFbnN1cmVzIHdlIGNhbiByZWFkIG91 dCB2YXJpb3VzIG1ldGFkYXRhIGJpdHMgbGlrZSB2cDggYWxwaGEuCistICBmb3JtYXRfY29udGV4 dF8tPmZsYWdzIHw9IEFWRk1UX0ZMQUdfS0VFUF9TSURFX0RBVEE7CistCisgICAvLyBFbnN1cmVz IGZvcm1hdCBwYXJzaW5nIGVycm9ycyB3aWxsIGJhaWwgb3V0LiBGcm9tIGFuIGF1ZGl0IG9uIDEx LzIwMTcsIGFsbAorICAgLy8gaW5zdGFuY2VzIHdlcmUgcmVhbCBmYWlsdXJlcy4gU29sdmVzIGJ1 Z3MgbGlrZSBodHRwOi8vY3JidWcuY29tLzcxMDc5MS4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZXJy b3JfcmVjb2duaXRpb24gfD0gQVZfRUZfRVhQTE9ERTsKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5l LTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdf dmlkZW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCistLS0gYS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYwkyMDIyLTA1 LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVt L21lZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0 Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBGRm1wZWdWaWRlb0Rl Y29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAgaWYgKGRlY29kZV9uYWx1c18pCisgICAgIGNvZGVj X2NvbnRleHRfLT5mbGFnczIgfD0gQVZfQ09ERUNfRkxBRzJfQ0hVTktTOworIAorLSAgQVZDb2Rl YyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQp OworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19j b250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYyB8fCBhdmNvZGVjX29wZW4yKGNvZGVj X2NvbnRleHRfLmdldCgpLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgICAgIFJlbGVhc2VGRm1wZWdS ZXNvdXJjZXMoKTsKKyAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUt NS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2Zp bGVfY2hlY2tlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9t ZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjItMDUtMjMgMDY6 Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEv ZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3 NzkgLTA1MDAKK0BAIC02OCw3ICs2OCw3IEBAIGJvb2wgTWVkaWFGaWxlQ2hlY2tlcjo6U3RhcnQo YmFzZTo6VGltZUQKKyAgICAgICBhdXRvIGNvbnRleHQgPSBBVlN0cmVhbVRvQVZDb2RlY0NvbnRl eHQoZm9ybWF0X2NvbnRleHQtPnN0cmVhbXNbaV0pOworICAgICAgIGlmICghY29udGV4dCkKKyAg ICAgICAgIGNvbnRpbnVlOworLSAgICAgIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2Rl Y29kZXIoY3AtPmNvZGVjX2lkKTsKKysgICAgICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKGNwLT5jb2RlY19pZCk7CisgICAgICAgaWYgKGNvZGVjICYmIGF2Y29k ZWNfb3BlbjIoY29udGV4dC5nZXQoKSwgY29kZWMsIG51bGxwdHIpID49IDApIHsKKyAgICAgICAg IGF1dG8gbG9vcCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZtcGVnRGVjb2RpbmdMb29wPihjb250ZXh0 LmdldCgpKTsKKyAgICAgICAgIHN0cmVhbV9jb250ZXh0c1tpXSA9IHtzdGQ6Om1vdmUoY29udGV4 dCksIHN0ZDo6bW92ZShsb29wKX07CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9y aWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv X2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYyBxdHdlYmVuZ2luZS01LjE1 LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRl b19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MKKy0tLSBhL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k ZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAw MDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMv bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAy Mi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0yMDMsNyArMjAzLDcgQEAgaW50 MzJfdCBIMjY0RGVjb2RlckltcGw6OkluaXREZWNvZGUoY29ucworICAgLy8gYSBwb2ludGVyIHx0 aGlzfC4KKyAgIGF2X2NvbnRleHRfLT5vcGFxdWUgPSB0aGlzOworIAorLSAgQVZDb2RlYyogY29k ZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29u c3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29k ZWNfaWQpOworICAgaWYgKCFjb2RlYykgeworICAgICAvLyBUaGlzIGlzIGFuIGluZGljYXRpb24g dGhhdCBGRm1wZWcgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIG9yIGl0IGhhcyBub3QKKyAgICAg Ly8gYmVlbiBjb21waWxlZC9pbml0aWFsaXplZCB3aXRoIHRoZSBjb3JyZWN0IHNldCBvZiBjb2Rl Y3MuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNwa2dz L3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggODRkZTViMTJlY2RkYS4uYjg5ZmU0YzFhZDUw YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAtMSw5ICsxLDkgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3F0NS13ZWJlbmdpbmUnCiBwa2duYW1lPXF0NS13ZWJlbmdpbmUKLXZlcnNpb249NS4x NS4xMQotcmV2aXNpb249NQordmVyc2lvbj01LjE1LjEzCityZXZpc2lvbj0xCiBfdmVyc2lvbj0i JHt2ZXJzaW9ufS1sdHMiCi1fY2hyb21pdW1fY29tbWl0PWJlMzQ5ZWFmNjJlNzc5NTU3OTFkN2Jm MjlmODkzZjFlOGEzN2RhZjQKK19jaHJvbWl1bV9jb21taXQ9ZTQ4ZGY3ODAzYzdjOThiMGIyNDcx Yzk0MDU3ZDMyZTQ0YTMwMWFkNQogYXJjaHM9Ing4Nl82NCogaTY4NiogYXJtdls2N10qIHBwYzY0 KiBhYXJjaDY0KiIKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1xbWFrZQpAQCAtMzIs OCArMzIsOCBAQCBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwczovL3F0LmlvLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29t L3F0L3F0d2ViZW5naW5lL2FyY2hpdmUvdiR7X3ZlcnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0 aHViLmNvbS9xdC9xdHdlYmVuZ2luZS1jaHJvbWl1bS9hcmNoaXZlLyR7X2Nocm9taXVtX2NvbW1p dH0udGFyLmd6IgotY2hlY2tzdW09ImFhNzQ2NjM1NmM0NTBjNWY1ODcwZjk3OWI5M2NkN2U3ZTYy ZGExMTY1YzMyOGZmY2FiMWE5OTI4ZGIxOGFkNjcKLSA2ZjQ3ZWQ4YWI4Y2MwNjI0MTFmNmYyMDZk YTYzNTNiYzgyNjNkNmVkNmQ2MjkwYzY4OWEwNWMwMWQ5MWY2NDZiIgorY2hlY2tzdW09IjRiNTk4 MzhlZDc1ZWY3ODhiNTllMWU0MTI1MzVhMGU0MmRkOWQzMTE2NjFmZGVhZGIxOTFiNTgxYmE4MTVj NjMKKyBhOTE2ODY1NjJiMWQ0ZThiMjIwZTBiYmNiYWI1ZmViNjQ2MzBlMmRlOTc0YjM1YWMwMzRi ZjM4OGFmNzcxYTZjIgogCiBub19nZW5lcmljX3BrZ2NvbmZpZ19saW5rPXllcwogYnVpbGRfb3B0 aW9ucz0ic25kaW8gcGlwZXdpcmUiCgpGcm9tIDhkNTg5ZjMwNjhjZWQ1NjM2ZGJkNmNiNTgyY2Nm ZjlhMGM2M2RjNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVj dDogW1BBVENIIDA2Mi8xMTVdIHF0NTogdXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAuLi5lcnl3aGVy ZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2ggfCAxMjkxMyArKysrKysrKysrKysr KysrCiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAx MyArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjkxOSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1v cGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNo IGIvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUu OC1rZjUtMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45 NjZjOThiY2QzYmIxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1l dmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaApAQCAtMCwwICsxLDEy OTEzIEBACitTdWJtaXR0ZWQgQnk6ICAgICAgICAgICAgUGllcnJlIExhYmFzdGllIDxwaWVycmVf ZG90X2xhYmFzdGllX2F0X25ldWZfZG90X2ZyPgorRGF0ZTogICAgICAgICAgICAgICAgICAgIDIw MjMtMDEtMDUKK0luaXRpYWwgUGFja2FnZSBWZXJzaW9uOiA1LjE1LjgKK1Vwc3RyZWFtIFN0YXR1 czogICAgICAgICBBcHBsaWVkIChhY2NvcmRpbmcgdG8gS0RFKQorT3JpZ2luOiAgICAgICAgICAg ICAgICAgIEtERSBwYXRjaCBzZXQKK0Rlc2NyaXB0aW9uOiAgICAgICAgICAgICBQYXRjaCBzZXQg bWFpbnRhaW5lZCBieSB0aGUgS0RFIGZvbGtzCitzZWUgaHR0cHM6Ly9kb3Qua2RlLm9yZy8yMDIx LzA0LzA2L2Fubm91bmNpbmcta2Rlcy1xdC01LXBhdGNoLWNvbGxlY3Rpb24KK1BhdGNoIGdlbmVy YXRlZCB1c2luZyB0aGUgcHJvY2VkdXJlIGluCitodHRwczovL3dpa2kubGludXhmcm9tc2NyYXRj aC5vcmcvYmxmcy90aWNrZXQvMTc0NzYjY29tbWVudDozCisKK1N1Ym1vZHVsZSBxdGJhc2UgNGVl NGZjMTguLjljZjU4NmQ2OgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRy b2lkL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0 Zm9ybWRlZnMuaAoraW5kZXggZjc1YmM0MDkzYi4uMmJkNTk0MTBkNCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNl L21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCitAQCAtMTQ0LDExICsxNDQs NyBAQAorICNkZWZpbmUgUVRfU0lHTkFMX0FSR1MgICAgICAgICAgaW50CisgI2RlZmluZSBRVF9T SUdOQUxfSUdOT1JFICAgICAgICBTSUdfSUdOCisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAm JiAoX19HTElCQ19fID49IDIpCisgI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2Nr bGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2Vu ZGlmCisgCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0g NTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorZGlmZiAt LWdpdCBhL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsgYi9xdGJhc2UvbWtzcGVj cy9mZWF0dXJlcy9tYWMvc2RrLm1rCitpbmRleCBmMzBiNTgzMGI0Li5hMzJjZWFjYjZjIDEwMDY0 NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworKysrIGIvcXRiYXNl L21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworQEAgLTEsNiArMSw2IEBACisgCisgaWZlcSAo JChRVF9NQUNfU0RLX05PX1ZFUlNJT05fQ0hFQ0spLCkKKy0gICAgQ0hFQ0tfU0RLX0NPTU1BTkQg PSAvdXNyL2Jpbi94Y3J1biAtLXNkayAkKEVYUE9SVF9RTUFLRV9NQUNfU0RLKSAtc2hvdy1zZGst dmVyc2lvbiAyPiYxCisrICAgIENIRUNLX1NES19DT01NQU5EID0gL3Vzci9iaW4veGNydW4gLS1z ZGsgJChFWFBPUlRfUU1BS0VfTUFDX1NESykgLXNob3ctc2RrLXZlcnNpb24gMj4vZGV2L251bGwK KyAgICAgQ1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04gOj0gJChzaGVsbCBERVZFTE9QRVJfRElSPSQo RVhQT1JUX1FNQUtFX1hDT0RFX0RFVkVMT1BFUl9QQVRIKSAkKENIRUNLX1NES19DT01NQU5EKSkK KyAgICAgaWZuZXEgKCQoQ1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04pLCQoRVhQT1JUX1FNQUtFX01B Q19TREtfVkVSU0lPTikpCisgICAgICAgICAjIFdlIGRvbid0IHdhbnQgdG8gY29tcGxhaW4gYWJv dXQgb3V0IG9mIGRhdGUgU0RLIHVubGVzcyB0aGUgdGFyZ2V0IG5lZWRzIHRvIGJlIHJlbWFkZS4K K2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgg Yi9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGE4MThk OTczZjAuLmMxYWI3MmZiYzYgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFu Zy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0 Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisgI2RlZmluZSBRVF9VU0VfWE9QRU5fTEZT X0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIK KyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAo X19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVu X3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlm CistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAw KQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUg UVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2Uv bWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgt ZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggMTM1MjNmMDcwMi4uNGQyNzUwZDllYyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0 YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03OSwxNCArNzksNiBA QAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2Nv bW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQor LSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA8IDIpCistI2RlZmluZSBRVF9T T0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAg ICAgICAgICAgc29ja2xlbl90CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJD RSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAg ICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25w cmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRl ZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCitpbmRleCBk Yzc1MGFiMWVmLi5kM2NjMzliNDdmIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGludXgt bGx2bS9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBs YXRmb3JtZGVmcy5oCitAQCAtODAsMTQgKzgwLDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9M RlNfRVhURU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5o IgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYm IChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2ts ZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5k aWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1 MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmlu ZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFz ZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3Mv bGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDRjNGU1M2RhMmEuLjgzYmFmZmIz ZTMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRl ZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgK K0BAIC04NSwxNiArODUsOSBAQAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3Jt ZGVmcy5oIgorIAorICN1bmRlZiBRVF9PUEVOX0xBUkdFRklMRQorLSN1bmRlZiBRVF9TT0NLTEVO X1QKKyAKKyAjZGVmaW5lIFFUX09QRU5fTEFSR0VGSUxFICAgICAgIDAKKyAKKy0jaWYgZGVmaW5l ZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAg ICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAg ICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWZuZGVmIFNJT0NHSUZCUkRBRERSCisgIyAgZGVmaW5l IFNJT0NHSUZCUkRBRERSIDB4ODkxOQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3Nw ZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcr Ky9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDQzMzllYTJiMjMuLjYwMDdhZjAwNTUgMTAwNjQ0Cist LS0gYS9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRi YXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03MiwxNCArNzIsNiBA QAorIAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1 bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJD X18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNl bHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAj aWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2Rl ZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05Q UklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvM3Jk cGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAgYi9xdGJhc2Uvc3Jj LzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitpbmRleCBj M2MxODQyNThmLi4zMmFmM2Y4ZjI5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9h bmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy8z cmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAorQEAgLTEwLDYg KzEwLDcgQEAKKyAjaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmgiCisgCisgI2lu Y2x1ZGUgPGFsZ29yaXRobT4KKysjaW5jbHVkZSA8bGltaXRzPgorIAorICNpbmNsdWRlICJjb21t b24vZGVidWcuaCIKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9m b3JrZmRfbGludXguYyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5j CitpbmRleCBmZmUwZTlhNWUyLi5iMWY1NDA4ZDExIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy8z cmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKKysrKyBiL3F0YmFzZS9zcmMvM3JkcGFydHkv Zm9ya2ZkL2ZvcmtmZF9saW51eC5jCitAQCAtODIsNyArODIsOCBAQCBzdGF0aWMgaW50IHN5c19j bG9uZSh1bnNpZ25lZCBsb25nIGNsb25lZmxhZ3MsIGludCAqcHRpZCkKKyAgICAgcmV0dXJuIHN5 c2NhbGwoX19OUl9jbG9uZSwgY2xvbmVmbGFncywgY2hpbGRfc3RhY2ssIHN0YWNrX3NpemUsIHB0 aWQsIG5ld3RscywgY3RpZCk7CisgI2VsaWYgZGVmaW5lZChfX2FyY19fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwK KyAgICAgZGVmaW5lZChfX25kczMyX18pIHx8IGRlZmluZWQoX19ocHBhX18pIHx8IGRlZmluZWQo X19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNhX18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBk ZWZpbmVkKF9fcmlzY3YpCisrICAgIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3h0 ZW5zYV9fKSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfX3Jpc2N2KSB8fCBcCisr ICAgIGRlZmluZWQoX19sb29uZ2FyY2hfXykKKyAgICAgLyogY3RpZCBhbmQgbmV3dGxzIGFyZSBp bnZlcnRlZCBvbiBDT05GSUdfQ0xPTkVfQkFDS1dBUkRTIGFyY2hpdGVjdHVyZXMsCisgICAgICAq IGJ1dCBzaW5jZSBib3RoIHZhbHVlcyBhcmUgMCwgdGhlcmUncyBubyBoYXJtLiAqLworICAgICBy ZXR1cm4gc3lzY2FsbChfX05SX2Nsb25lLCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFjaywgcHRpZCwg Y3RpZCwgbmV3dGxzKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9v cmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEgYi9xdGJhc2Uvc3JjL2FuZHJv aWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKK2luZGV4 IDU3OTJiNWIyZjUuLjJmNzQ3NTBmY2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2FuZHJvaWQv amFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKKysrKyBiL3F0 YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRp dmUuamF2YQorQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAg cHVibGljIHN0YXRpYyBRdFRocmVhZCBtX3F0VGhyZWFkID0gbmV3IFF0VGhyZWFkKCk7CisgICAg IHByaXZhdGUgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBVcmk+IG1fY2FjaGVkVXJpcyA9IG5ldyBI YXNoTWFwPFN0cmluZywgVXJpPigpOworICAgICBwcml2YXRlIHN0YXRpYyBBcnJheUxpc3Q8U3Ry aW5nPiBtX2tub3duRGlycyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworKyAgICBwcml2YXRl IHN0YXRpYyBmaW5hbCBTdHJpbmcgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlID0gIk5vIHBlcm1p c3Npb25zIHRvIG9wZW4gVXJpIjsKKyAKKyAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgUnVubmFi bGUgcnVuUGVuZGluZ0NwcFJ1bm5hYmxlc1J1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAg ICAgICAgQE92ZXJyaWRlCitAQCAtMTkzLDExICsxOTQsMTAgQEAgcHVibGljIGNsYXNzIFF0TmF0 aXZlCisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlclVyaTsKKyAgICAgICAgICAgICB9 CisgCistICAgICAgICAgICAgLy8gQW5kcm9pZCA2IGFuZCBlYXJsaWVyIGNvdWxkIHN0aWxsIG1h bmFnZSB0byBvcGVuIHRoZSBmaWxlIHNvIHdlIGNhbiByZXR1cm4gdGhlCistICAgICAgICAgICAg Ly8gcGFyc2VkIHVyaSBoZXJlCistICAgICAgICAgICAgaWYgKEJ1aWxkLlZFUlNJT04uU0RLX0lO VCA8IDI0KQorLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkVXJpOworLSAgICAgICAgICAg IHJldHVybiBudWxsOworKyAgICAgICAgICAgIC8vIGlmIHdlIG9ubHkgaGF2ZSB0cmFuc2llbnQg cGVybWlzc2lvbnMgb24gdXJpIGFsbCB0aGUgYWJvdmUgd2lsbCBmYWlsLAorKyAgICAgICAgICAg IC8vIGJ1dCB3ZSB3aWxsIGJlIGFibGUgdG8gcmVhZCB0aGUgZmlsZSBhbnl3YXksIHNvIGNvbnRp bnVlIHdpdGggdXJpIGhlcmUgYW55d2F5CisrICAgICAgICAgICAgLy8gYW5kIGNoZWNrIGZvciBT ZWN1cml0eUV4Y2VwdGlvbnMgbGF0ZXIKKysgICAgICAgICAgICByZXR1cm4gcGFyc2VkVXJpOwor ICAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIGUu cHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgcmV0dXJuIG51bGw7CitAQCAtMjQ0LDcg KzI0NCw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgaW50IGVycm9yID0gLTE7 CisgCisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRB RywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsK KysgICAgICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogIiArIE5v UGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAg ICAgICAgfQorIAorQEAgLTI1NCwxMiArMjU0LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQor ICAgICAgICAgICAgIHJldHVybiBmZERlc2MuZGV0YWNoRmQoKTsKKyAgICAgICAgIH0gY2F0Y2gg KEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJh Y2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICB9IGNhdGNoIChJbGxl Z2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAib3Bl bkZkRm9yQ29udGVudFVybCgpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRT dGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGVycm9yOworKyAgICAgICAgfSBjYXRj aCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Bl cm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGVycm9y OworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgbG9uZyBnZXRTaXplKENvbnRleHQgY29u dGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMjcwLDcgKzI3MSw3IEBAIHB1YmxpYyBjbGFz cyBRdE5hdGl2ZQorICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24o Y29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkg eworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBObyBwZXJtaXNzaW9ucyB0 byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJv ck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBzaXplOworICAgICAgICAgfSBlbHNlIGlm ICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKSB7CisgICAgICAgICAgICAg bV9jYWNoZWRVcmlzLnB1dChjb250ZW50VXJsLCB1cmkpOworQEAgLTI4OCwxMiArMjg5LDEzIEBA IHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50 RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUoKTogSW52 YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAg ICAgIHJldHVybiBzaXplOworICAgICAgICAgfSAgY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9u RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUoKTogVW5z dXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50 U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBzaXplOworKyAgICAgICAgfSBjYXRj aCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Bl cm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIHNpemU7 CisgICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrRmlsZUV4aXN0cyhD b250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTMwMyw3ICszMDUsNyBAQCBw dWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkKKyAgICAgICAg ICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmws ICJyIik7CisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShR dFRBRywgImNoZWNrRmlsZUV4aXN0cygpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOwor KyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAg ICAgICAgICAgIHJldHVybiBleGlzdHM7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg IGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQorQEAgLTMyMSwxMiAr MzIzLDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdh bEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNr RmlsZUV4aXN0cygpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1Ry YWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgICAgIH0gY2F0Y2ggKFVu c3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRB RywgImNoZWNrRmlsZUV4aXN0cygpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVy aSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAg ICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAg ICAgfQorKyAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgfQorIAorICAgICBwdWJsaWMgc3Rh dGljIGJvb2xlYW4gY2hlY2tJZldyaXRhYmxlKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRl bnRVcmwpCitAQCAtMzQ0LDcgKzM0Nyw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAg ICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVudFVy bCwgInIiKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAg ICAgICAgIExvZy5lKFF0VEFHLCAiaXNEaXIoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmki KTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsK KyAgICAgICAgICAgICByZXR1cm4gaXNEaXI7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQorQEAgLTM3NCwx MiArMzc3LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxs ZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNo ZWNrSWZEaXIoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFj ZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0gY2F0Y2ggKFVuc3Vw cG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywg ImNoZWNrSWZEaXIoKTogVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAg ICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAg ICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorICAgICBwdWJsaWMgc3RhdGljIFN0cmluZ1td IGxpc3RDb250ZW50c0Zyb21UcmVlVXJpKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRV cmwpCisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJy ZW50cmVkdWNla2VybmVsLmggYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVk dWNla2VybmVsLmgKK2luZGV4IDhmOWE5Mzg5NTIuLmE5OGRlZGVmMmUgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmgKKysrKyBiL3F0 YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorQEAgLTIxMiwx MSArMjEyLDEzIEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxkVGhyb3R0bGUo KQorICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2NrZXIobXV0ZXgp OworICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA+IChSZWR1Y2VRdWV1ZVRocm90dGxl TGltaXQgKiB0aHJlYWRDb3VudCkpOworICAgICB9CisgCisgICAgIGlubGluZSBib29sIHNob3Vs ZFN0YXJ0VGhyZWFkKCkKKyAgICAgeworKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFFNdXRleD4g bG9ja2VyKG11dGV4KTsKKyAgICAgICAgIHJldHVybiAocmVzdWx0c01hcFNpemUgPD0gKFJlZHVj ZVF1ZXVlU3RhcnRMaW1pdCAqIHRocmVhZENvdW50KSk7CisgICAgIH0KKyB9OworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwIGIv cXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK2luZGV4 IGVhNmNlM2FjNDIuLjdmOTFhMmJhNjggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJl bnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb25jdXJy ZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK0BAIC0xNzYsNiArMTc2LDM5IEBAIHZv aWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRTaW5nbGVUaHJlYWRlZCgpCisgICAgIGZpbmlzaCgp OworIH0KKyAKKyt2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0QmxvY2tpbmcoKQorK3sKKysg ICAgc3RhcnQoKTsKKysgICAgYmFycmllci5hY3F1aXJlKCk7CisrICAgIHN0YXJ0VGhyZWFkcygp OworKworKyAgICBib29sIHRocm90dGxlZCA9IGZhbHNlOworKyNpZm5kZWYgUVRfTk9fRVhDRVBU SU9OUworKyAgICB0cnkgeworKyNlbmRpZgorKyAgICAgICAgd2hpbGUgKHRocmVhZEZ1bmN0aW9u KCkgPT0gVGhyb3R0bGVUaHJlYWQpIHsKKysgICAgICAgICAgICBpZiAodGhyZWFkVGhyb3R0bGVF eGl0KCkpIHsKKysgICAgICAgICAgICAgICAgdGhyb3R0bGVkID0gdHJ1ZTsKKysgICAgICAgICAg ICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyNpZm5kZWYgUVRfTk9f RVhDRVBUSU9OUworKyAgICB9IGNhdGNoIChRRXhjZXB0aW9uICZlKSB7CisrICAgICAgICBoYW5k bGVFeGNlcHRpb24oZSk7CisrICAgIH0gY2F0Y2ggKC4uLikgeworKyAgICAgICAgaGFuZGxlRXhj ZXB0aW9uKFFVbmhhbmRsZWRFeGNlcHRpb24oKSk7CisrICAgIH0KKysjZW5kaWYKKysKKysgICAg aWYgKHRocm90dGxlZCA9PSBmYWxzZSkgeworKyAgICAgICAgYmFycmllci5yZWxlYXNlKCk7Cisr ICAgIH0KKysKKysgICAgYmFycmllci53YWl0KCk7CisrICAgIGZpbmlzaCgpOworKyAgICBleGNl cHRpb25TdG9yZS50aHJvd1Bvc3NpYmxlRXhjZXB0aW9uKCk7CisrfQorKworIHZvaWQgVGhyZWFk RW5naW5lQmFzZTo6c3RhcnRUaHJlYWQoKQorIHsKKyAgICAgc3RhcnRUaHJlYWRJbnRlcm5hbCgp OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRl bmdpbmUuaCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUu aAoraW5kZXggN2MzMGNlYmRiYy4uYTRjODU0OGNjNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaAorKysrIGIvcXRiYXNlL3NyYy9j b25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCitAQCAtOTEsNiArOTEsNyBAQCBw dWJsaWM6CisgICAgIFRocmVhZEVuZ2luZUJhc2UoKTsKKyAgICAgdmlydHVhbCB+VGhyZWFkRW5n aW5lQmFzZSgpOworICAgICB2b2lkIHN0YXJ0U2luZ2xlVGhyZWFkZWQoKTsKKysgICAgdm9pZCBz dGFydEJsb2NraW5nKCk7CisgICAgIHZvaWQgc3RhcnRUaHJlYWQoKTsKKyAgICAgYm9vbCBpc0Nh bmNlbGVkKCk7CisgICAgIHZvaWQgd2FpdEZvclJlc3VtZSgpOworQEAgLTE0Myw2ICsxNDQsMTUg QEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIHJlc3VsdCgpOworICAgICB9CisgCisrICAgIC8v IFJ1bnMgdGhlIHVzZXIgYWxnb3JpdGhtIHVzaW5nIG11bHRpcGxlIHRocmVhZHMuCisrICAgIC8v IFRoaXMgZnVuY3Rpb24gYmxvY2tzIHVudGlsIHRoZSBhbGdvcml0aG0gaXMgZmluaXNoZWQsCisr ICAgIC8vIGFuZCB0aGVuIHJldHVybnMgdGhlIHJlc3VsdC4KKysgICAgVCAqc3RhcnRCbG9ja2lu ZygpCisrICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0QmxvY2tpbmcoKTsK KysgICAgICAgIHJldHVybiByZXN1bHQoKTsKKysgICAgfQorKworICAgICAvLyBSdW5zIHRoZSB1 c2VyIGFsZ29yaXRobSB1c2luZyBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAvLyBEb2VzIG5vdCBi bG9jaywgcmV0dXJucyBhIGZ1dHVyZS4KKyAgICAgUUZ1dHVyZTxUPiBzdGFydEFzeW5jaHJvbm91 c2x5KCkKK0BAIC0yMjMsNiArMjMzLDEzIEBAIGNsYXNzIFRocmVhZEVuZ2luZVN0YXJ0ZXIgOiBw dWJsaWMgVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8VD4KKyBwdWJsaWM6CisgICAgIFRocmVhZEVu Z2luZVN0YXJ0ZXIoVHlwZWRUaHJlYWRFbmdpbmUgKmVuZykKKyAgICAgICAgIDogQmFzZShlbmcp IHsgfQorKworKyAgICBUIHN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICBUIHQgPSAq dGhpcy0+dGhyZWFkRW5naW5lLT5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBkZWxldGUgdGhp cy0+dGhyZWFkRW5naW5lOworKyAgICAgICAgcmV0dXJuIHQ7CisrICAgIH0KKyB9OworIAorIC8v IEZ1bGwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2hlcmUgVCBpcyB2b2lkLgorQEAgLTIzMiw2 ICsyNDksMTIgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRlcjx2b2lkPiA6IHB1YmxpYyBUaHJl YWRFbmdpbmVTdGFydGVyQmFzZTx2b2lkPgorIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5lU3Rh cnRlcihUaHJlYWRFbmdpbmU8dm9pZD4gKl90aHJlYWRFbmdpbmUpCisgICAgICAgICA6IFRocmVh ZEVuZ2luZVN0YXJ0ZXJCYXNlPHZvaWQ+KF90aHJlYWRFbmdpbmUpIHt9CisrCisrICAgIHZvaWQg c3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIHRoaXMtPnRocmVhZEVuZ2luZS0+c3Rh cnRCbG9ja2luZygpOworKyAgICAgICAgZGVsZXRlIHRoaXMtPnRocmVhZEVuZ2luZTsKKysgICAg fQorIH07CisgCisgLy8hIFtxdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUtMV0KK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCitpbmRleCA5 OGIwMmYwMjAyLi5lYWMxNTI0MTA3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2Fu aW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9h bmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCitAQCAtMjc2LDcgKzI3Niw5IEBAIHZvaWQg UVZhcmlhbnRBbmltYXRpb25Qcml2YXRlOjpzZXRDdXJyZW50VmFsdWVGb3JQcm9ncmVzcyhjb25z dCBxcmVhbCBwcm9ncmVzcykKKyAKKyAgICAgY29uc3QgcXJlYWwgc3RhcnRQcm9ncmVzcyA9IGN1 cnJlbnRJbnRlcnZhbC5zdGFydC5maXJzdDsKKyAgICAgY29uc3QgcXJlYWwgZW5kUHJvZ3Jlc3Mg PSBjdXJyZW50SW50ZXJ2YWwuZW5kLmZpcnN0OworLSAgICBjb25zdCBxcmVhbCBsb2NhbFByb2dy ZXNzID0gKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgLyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFBy b2dyZXNzKTsKKysgICAgY29uc3QgcXJlYWwgbG9jYWxQcm9ncmVzcyA9CisrICAgICAgICAgICAg cUlzTnVsbChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpID8gMC4wIC8vIGF2b2lkIDAvMCBiZWxv dworKyAgICAgICAgICAgIC8qIGVsc2UgKi8gICAgICAgICAgICAgICAgICAgICAgICA6IChwcm9n cmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpIC8gKGVuZFByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcyk7Cisg CisgICAgIFFWYXJpYW50IHJldCA9IHEtPmludGVycG9sYXRlZChjdXJyZW50SW50ZXJ2YWwuc3Rh cnQuc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudElu dGVydmFsLmVuZC5zZWNvbmQsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2Jh bC9xbmFtZXNwYWNlLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAor aW5kZXggYWQ0MTUwYjMxNy4uYmYxOWIxNjI3YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFs L3FuYW1lc3BhY2UuaAorQEAgLTE4NjQsNyArMTg2NCw3IEBAIHB1YmxpYzoKKyAgICAgUVRfUV9F TlVNKFRpbWVyVHlwZSkKKyAgICAgUVRfUV9FTlVNKFNjcm9sbFBoYXNlKQorICAgICBRVF9RX0VO VU0oTW91c2VFdmVudFNvdXJjZSkKKy0gICAgUVRfUV9GTEFHKE1vdXNlRXZlbnRGbGFnKQorKyAg ICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWdzKQorICAgICBRVF9RX0VOVU0oQ2hlY2tzdW1UeXBl KQorICAgICBRVF9RX0VOVU0oSGlnaERwaVNjYWxlRmFjdG9yUm91bmRpbmdQb2xpY3kpCisgICAg IFFUX1FfRU5VTShUYWJGb2N1c0JlaGF2aW9yKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5k b20uY3BwCitpbmRleCAxMDY3MmMxZjkyLi4yNWY4N2M3ZTZhIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L2dsb2JhbC9xcmFuZG9tLmNwcAorQEAgLTM4Myw3ICszODMsNiBAQCBzdHJ1Y3QgUVJhbmRvbUdl bmVyYXRvcjo6U3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9ycworIAorICAgICAgICAgY29uc3RleHBy IFN5c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnMgZyA9IHt9OworICAgICAgICAgUV9VTlVTRUQoZyk7 CistICAgICAgICBRX1NUQVRJQ19BU1NFUlQoc3RkOjppc19saXRlcmFsX3R5cGU8U3lzdGVtQW5k R2xvYmFsR2VuZXJhdG9ycz46OnZhbHVlKTsKKyAjZW5kaWYKKyAgICAgfQorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi9pby9xYnVmZmVyLmNwcAoraW5kZXggNTk1ZmNkMjcyNC4uMDMyYzBkZGQ0YiAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL2lvL3FidWZmZXIuY3BwCitAQCAtNDEsNiArNDEsOCBAQAorICNpbmNsdWRlIDxRdENv cmUvcW1ldGFvYmplY3QuaD4KKyAjaW5jbHVkZSAicHJpdmF0ZS9xaW9kZXZpY2VfcC5oIgorIAor KyNpbmNsdWRlIDxsaW1pdHM+CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgLyoqIFFCdWZm ZXJQcml2YXRlICoqLworQEAgLTM2Niw3ICszNjgsOSBAQCBxaW50NjQgUUJ1ZmZlcjo6c2l6ZSgp IGNvbnN0CisgYm9vbCBRQnVmZmVyOjpzZWVrKHFpbnQ2NCBwb3MpCisgeworICAgICBRX0QoUUJ1 ZmZlcik7CistICAgIGlmIChwb3MgPiBkLT5idWYtPnNpemUoKSAmJiBpc1dyaXRhYmxlKCkpIHsK KysgICAgY29uc3QgYXV0byBvbGRCdWZTaXplID0gZC0+YnVmLT5zaXplKCk7CisrICAgIGNvbnN0 ZXhwciBxaW50NjQgTWF4U2Vla1BvcyA9IChzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBlKG9s ZEJ1ZlNpemUpPjo6bWF4KSgpOworKyAgICBpZiAocG9zIDw9IE1heFNlZWtQb3MgJiYgcG9zID4g b2xkQnVmU2l6ZSAmJiBpc1dyaXRhYmxlKCkpIHsKKyAgICAgICAgIGlmIChzZWVrKGQtPmJ1Zi0+ c2l6ZSgpKSkgeworICAgICAgICAgICAgIGNvbnN0IHFpbnQ2NCBnYXBTaXplID0gcG9zIC0gZC0+ YnVmLT5zaXplKCk7CisgICAgICAgICAgICAgaWYgKHdyaXRlKFFCeXRlQXJyYXkoZ2FwU2l6ZSwg MCkpICE9IGdhcFNpemUpIHsKK0BAIC0zNzcsNyArMzgxLDcgQEAgYm9vbCBRQnVmZmVyOjpzZWVr KHFpbnQ2NCBwb3MpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfQorICAg ICB9IGVsc2UgaWYgKHBvcyA+IGQtPmJ1Zi0+c2l6ZSgpIHx8IHBvcyA8IDApIHsKKy0gICAgICAg IHFXYXJuaW5nKCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWQiLCBpbnQocG9zKSk7Cisr ICAgICAgICBxV2FybmluZygiUUJ1ZmZlcjo6c2VlazogSW52YWxpZCBwb3M6ICVsbGQiLCBwb3Mp OworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgIHJldHVybiBRSU9EZXZpY2U6 OnNlZWsocG9zKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0 ZW1lbmdpbmVfd2luLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2lu ZV93aW4uY3BwCitpbmRleCA4MWQzYTcxOTg2Li5jODZlZDFmOWIwIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwCitAQCAtNjY0LDE0ICs2 NjQsMTQgQEAgUUZpbGVTeXN0ZW1FbnRyeSBRRmlsZVN5c3RlbUVuZ2luZTo6YWJzb2x1dGVOYW1l KGNvbnN0IFFGaWxlU3lzdGVtRW50cnkgJmVudHJ5KQorICAgICByZXR1cm4gUUZpbGVTeXN0ZW1F bnRyeShyZXQsIFFGaWxlU3lzdGVtRW50cnk6OkZyb21JbnRlcm5hbFBhdGgoKSk7CisgfQorIAor LSNpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAvLyAgV2luZG93cyA4 IG9ud2FyZHMKKysjaWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIgJiYg X1dJTjMyX1dJTk5UIDwgX1dJTjMyX1dJTk5UX1dJTjggLy8gIFdpbmRvd3MgOCBvbndhcmRzCisg CisgdHlwZWRlZiBzdHJ1Y3QgX0ZJTEVfSURfSU5GTyB7CisgICAgIFVMT05HTE9ORyBWb2x1bWVT ZXJpYWxOdW1iZXI7CisgICAgIEZJTEVfSURfMTI4IEZpbGVJZDsKKyB9IEZJTEVfSURfSU5GTywg KlBGSUxFX0lEX0lORk87CisgCistI2VuZGlmIC8vIGlmIGRlZmluZWQgKFFfQ0NfTUlOR1cpICYm IFdJTlZFUiA8IDB4MDYwMgorKyNlbmRpZiAvLyBpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJ TlZFUiA8IDB4MDYwMiAmJiBfV0lOMzJfV0lOTlQgPCBfV0lOMzJfV0lOTlRfV0lOOAorIAorIC8v IEZpbGUgSUQgZm9yIFdpbmRvd3MgdXAgdG8gdmVyc2lvbiA3IGFuZCBGQVQzMiBkcml2ZXMKKyBz dGF0aWMgaW5saW5lIFFCeXRlQXJyYXkgZmlsZUlkKEhBTkRMRSBoYW5kbGUpCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcCBi L3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKK2lu ZGV4IDk0ZDlkMDZiY2IuLjI3ZTBiMTNiMGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCitAQCAtMzY2LDcgKzM2Niw5 IEBAIHZvaWQgUUlub3RpZnlGaWxlU3lzdGVtV2F0Y2hlckVuZ2luZTo6cmVhZEZyb21Jbm90aWZ5 KCkKKyAgICAgLy8gcURlYnVnKCJRSW5vdGlmeUZpbGVTeXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFk RnJvbUlub3RpZnkiKTsKKyAKKyAgICAgaW50IGJ1ZmZTaXplID0gMDsKKy0gICAgaW9jdGwoaW5v dGlmeUZkLCBGSU9OUkVBRCwgKGNoYXIgKikgJmJ1ZmZTaXplKTsKKysgICAgaWYgKGlvY3RsKGlu b3RpZnlGZCwgRklPTlJFQUQsIChjaGFyICopICZidWZmU2l6ZSkgPT0gLTEgfHwgYnVmZlNpemUg PT0gMCkKKysgICAgICAgIHJldHVybjsKKysKKyAgICAgUVZhckxlbmd0aEFycmF5PGNoYXIsIDQw OTY+IGJ1ZmZlcihidWZmU2l6ZSk7CisgICAgIGJ1ZmZTaXplID0gcmVhZChpbm90aWZ5RmQsIGJ1 ZmZlci5kYXRhKCksIGJ1ZmZTaXplKTsKKyAgICAgY2hhciAqYXQgPSBidWZmZXIuZGF0YSgpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcAoraW5kZXggMjc3ZjhkNDIzMC4u MzhlY2VmNTU1MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVf d2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCitA QCAtNDgsNiArNDgsOCBAQAorICNpbmNsdWRlICJRdENvcmUvcWRlYnVnLmgiCisgI2luY2x1ZGUg IlF0Q29yZS9xdGhyZWFkLmgiCisgCisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3RlbWxpYnJhcnlf cC5oIgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIHN0YXRpYyBpbmxpbmUgYm9vbCBmaWxl RXhpc3RzKGNvbnN0IHdjaGFyX3QgKmZpbGVOYW1lKQorQEAgLTE1MCw3ICsxNTIsNyBAQCBRU3Ry aW5nIFFMb2NrRmlsZVByaXZhdGU6OnByb2Nlc3NOYW1lQnlQaWQocWludDY0IHBpZCkKKyAjaWYg IWRlZmluZWQoUV9PU19XSU5SVCkKKyAgICAgdHlwZWRlZiBEV09SRCAoV0lOQVBJICpHZXRNb2R1 bGVGaWxlTmFtZUV4RnVuYykoSEFORExFLCBITU9EVUxFLCBMUFRTVFIsIERXT1JEKTsKKyAKKy0g ICAgSE1PRFVMRSBoUHNhcGkgPSBMb2FkTGlicmFyeUEoInBzYXBpIik7CisrICAgIEhNT0RVTEUg aFBzYXBpID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJwc2FwaSIpOworICAgICBpZiAoIWhQc2Fw aSkKKyAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgIEdldE1vZHVsZUZpbGVOYW1lRXhG dW5jIHFHZXRNb2R1bGVGaWxlTmFtZUV4ID0gcmVpbnRlcnByZXRfY2FzdDxHZXRNb2R1bGVGaWxl TmFtZUV4RnVuYz4oCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNz X3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCitpbmRl eCA1MDM5MGU1N2Y1Li4xNWM4ZjMwNzQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L2lvL3Fwcm9jZXNzX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nl c3NfdW5peC5jcHAKK0BAIC0xLDcgKzEsNyBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioK KyAqKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvcHlyaWdo dCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgSW50 ZWwgQ29ycG9yYXRpb24uCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5n LworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhl IFF0IFRvb2xraXQuCitAQCAtNDIyLDE0ICs0MjIsMTUgQEAgdm9pZCBRUHJvY2Vzc1ByaXZhdGU6 OnN0YXJ0UHJvY2VzcygpCisgICAgIC8vIEFkZCB0aGUgcHJvZ3JhbSBuYW1lIHRvIHRoZSBhcmd1 bWVudCBsaXN0LgorICAgICBhcmd2WzBdID0gbnVsbHB0cjsKKyAgICAgaWYgKCFwcm9ncmFtLmNv bnRhaW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAgICAgICAvLyBmaW5kRXhlY3V0YWJsZSgp IHJldHVybnMgaXRzIGFyZ3VtZW50IGlmIGl0J3MgYW4gYWJzb2x1dGUgcGF0aCwKKysgICAgICAg IC8vIG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0eSBpZiBub3QgZm91 bmQgKHdlIGhhbmRsZQorKyAgICAgICAgLy8gdGhhdCBjYXNlIG11Y2ggbGF0ZXIpCisgICAgICAg ICBjb25zdCBRU3RyaW5nICZleGVGaWxlUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjpmaW5kRXhlY3V0 YWJsZShwcm9ncmFtKTsKKy0gICAgICAgIGlmICghZXhlRmlsZVBhdGguaXNFbXB0eSgpKSB7Cist ICAgICAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhl RmlsZVBhdGgpOworLSAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRh KCkpOworLSAgICAgICAgfQorLSAgICB9CistICAgIGlmICghYXJndlswXSkKKysgICAgICAgIGNv bnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysg ICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAgICB9IGVsc2Ug eworICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKGVuY29kZWRQcm9ncmFtTmFtZS5jb25zdERh dGEoKSk7CisrICAgIH0KKyAKKyAgICAgLy8gQWRkIGV2ZXJ5IGFyZ3VtZW50IHRvIHRoZSBsaXN0 CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRzLmNvdW50KCk7ICsraSkKK0BAIC05 ODMsMTUgKzk4NCwxNiBAQCBib29sIFFQcm9jZXNzUHJpdmF0ZTo6c3RhcnREZXRhY2hlZChxaW50 NjQgKnBpZCkKKyAgICAgICAgICAgICAgICAgZW52cCA9IF9xX2R1cEVudmlyb25tZW50KGVudmly b25tZW50LmQuY29uc3REYXRhKCktPnZhcnMsICZlbnZjKTsKKyAgICAgICAgICAgICB9CisgCist ICAgICAgICAgICAgUUJ5dGVBcnJheSB0bXA7CisgICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmNv bnRhaW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAgICAgICAgICAgICAgIC8vIGZpbmRFeGVj dXRhYmxlKCkgcmV0dXJucyBpdHMgYXJndW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0ZSBwYXRoLAor KyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgc2VhcmNoZXMgJFBBVEg7IHJldHVybnMg ZW1wdHkgaWYgbm90IGZvdW5kICh3ZSBoYW5kbGUKKysgICAgICAgICAgICAgICAgLy8gdGhhdCBj YXNlIG11Y2ggbGF0ZXIpCisgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmV4ZUZpbGVQ YXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRhYmxlKHByb2dyYW0pOworLSAgICAgICAg ICAgICAgICBpZiAoIWV4ZUZpbGVQYXRoLmlzRW1wdHkoKSkKKy0gICAgICAgICAgICAgICAgICAg IHRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgICAgICAgICAg Y29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOwor KyAgICAgICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0YSgpKTsKKysg ICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAo UUZpbGU6OmVuY29kZU5hbWUocHJvZ3JhbSkpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAg ICBpZiAodG1wLmlzRW1wdHkoKSkKKy0gICAgICAgICAgICAgICAgdG1wID0gUUZpbGU6OmVuY29k ZU5hbWUocHJvZ3JhbSk7CistICAgICAgICAgICAgYXJndlswXSA9IHRtcC5kYXRhKCk7CisgCisg ICAgICAgICAgICAgaWYgKGVudnApCisgICAgICAgICAgICAgICAgIHF0X3NhZmVfZXhlY3ZlKGFy Z3ZbMF0sIGFyZ3YsIGVudnApOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVt bW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1v ZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCitpbmRleCAzYTc5YzUwMmFmLi45OTdhNjM0ZTc2 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRl bW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0 aXRlbW1vZGVsLmNwcAorQEAgLTMxOTYsOSArMzE5Niw4IEBAIGJvb2wgUUFic3RyYWN0SXRlbU1v ZGVsOjpiZWdpbk1vdmVDb2x1bW5zKGNvbnN0IFFNb2RlbEluZGV4ICZzb3VyY2VQYXJlbnQsIGlu dCBzCisgICAgIGRlc3RpbmF0aW9uQ2hhbmdlLm5lZWRzQWRqdXN0ID0gZGVzdGluYXRpb25QYXJl bnQuaXNWYWxpZCgpICYmIGRlc3RpbmF0aW9uUGFyZW50LnJvdygpID49IHNvdXJjZUxhc3QgJiYg ZGVzdGluYXRpb25QYXJlbnQucGFyZW50KCkgPT0gc291cmNlUGFyZW50OworICAgICBkLT5jaGFu Z2VzLnB1c2goZGVzdGluYXRpb25DaGFuZ2UpOworIAorLSAgICBkLT5pdGVtc0Fib3V0VG9CZU1v dmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFy ZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpvbnRhbCk7CistCisgICAgIGVtaXQgY29s dW1uc0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3Qs IGRlc3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRUHJpdmF0ZVNpZ25hbCgpKTsK KysgICAgZC0+aXRlbXNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZpcnN0LCBz b3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwgUXQ6Okhvcml6 b250YWwpOworICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCitAQCAtMzIzMSw3ICszMjMwLDYgQEAg dm9pZCBRQWJzdHJhY3RJdGVtTW9kZWw6OmVuZE1vdmVDb2x1bW5zKCkKKyAgICAgICBhZGp1c3Rl ZFNvdXJjZSA9IGNyZWF0ZUluZGV4KGFkanVzdGVkU291cmNlLnJvdygpLCBhZGp1c3RlZFNvdXJj ZS5jb2x1bW4oKSArIG51bU1vdmVkLCBhZGp1c3RlZFNvdXJjZS5pbnRlcm5hbFBvaW50ZXIoKSk7 CisgCisgICAgIGQtPml0ZW1zTW92ZWQoYWRqdXN0ZWRTb3VyY2UsIHJlbW92ZUNoYW5nZS5maXJz dCwgcmVtb3ZlQ2hhbmdlLmxhc3QsIGFkanVzdGVkRGVzdGluYXRpb24sIGluc2VydENoYW5nZS5m aXJzdCwgUXQ6Okhvcml6b250YWwpOworLQorICAgICBlbWl0IGNvbHVtbnNNb3ZlZChhZGp1c3Rl ZFNvdXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCByZW1vdmVDaGFuZ2UubGFzdCwgYWRqdXN0ZWRE ZXN0aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0LCBRUHJpdmF0ZVNpZ25hbCgpKTsKKyB9Cisg CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJw cm94eW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVy cHJveHltb2RlbC5jcHAKK2luZGV4IGRjNjM3OWQ5ZmIuLmM1ZTI4N2VlODQgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9k ZWwuY3BwCitAQCAtOTM5LDggKzkzOSw5IEBAIHZvaWQgUVNvcnRGaWx0ZXJQcm94eU1vZGVsUHJp dmF0ZTo6aW5zZXJ0X3NvdXJjZV9pdGVtcygKKyAgICAgICAgICAgICAgICAgcS0+YmVnaW5JbnNl cnRDb2x1bW5zKHByb3h5X3BhcmVudCwgcHJveHlfc3RhcnQsIHByb3h5X2VuZCk7CisgICAgICAg ICB9CisgCistICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZV9pdGVtcy5zaXplKCk7 ICsraSkKKy0gICAgICAgICAgICBwcm94eV90b19zb3VyY2UuaW5zZXJ0KHByb3h5X3N0YXJ0ICsg aSwgc291cmNlX2l0ZW1zLmF0KGkpKTsKKysgICAgICAgIC8vIFRPRE86IHVzZSB0aGUgcmFuZ2Ug UUxpc3Q6Omluc2VydCgpIG92ZXJsb2FkIG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQgKFFUQlVHLTU4 NjMzKS4KKysgICAgICAgIHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3RhcnQsIHNvdXJj ZV9pdGVtcy5zaXplKCksIDApOworKyAgICAgICAgc3RkOjpjb3B5KHNvdXJjZV9pdGVtcy5jYmVn aW4oKSwgc291cmNlX2l0ZW1zLmNlbmQoKSwgcHJveHlfdG9fc291cmNlLmJlZ2luKCkgKyBwcm94 eV9zdGFydCk7CisgCisgICAgICAgICBidWlsZF9zb3VyY2VfdG9fcHJveHlfbWFwcGluZyhwcm94 eV90b19zb3VyY2UsIHNvdXJjZV90b19wcm94eSk7CisgCitAQCAtMzEyMyw4ICszMTI0LDkgQEAg Ym9vbCBRU29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50IHNvdXJjZV9y b3csIGNvbnN0IFFNb2RlbEluZGV4ICYKKyAKKyAgICAgaWYgKGQtPmZpbHRlcl9kYXRhLmlzRW1w dHkoKSkKKyAgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICBpbnQgY29sdW1uX2NvdW50ID0g ZC0+bW9kZWwtPmNvbHVtbkNvdW50KHNvdXJjZV9wYXJlbnQpOworICAgICBpZiAoZC0+ZmlsdGVy X2NvbHVtbiA9PSAtMSkgeworLSAgICAgICAgaW50IGNvbHVtbl9jb3VudCA9IGQtPm1vZGVsLT5j b2x1bW5Db3VudChzb3VyY2VfcGFyZW50KTsKKyAgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7 IGNvbHVtbiA8IGNvbHVtbl9jb3VudDsgKytjb2x1bW4pIHsKKyAgICAgICAgICAgICBRTW9kZWxJ bmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3JvdywgY29sdW1uLCBz b3VyY2VfcGFyZW50KTsKKyAgICAgICAgICAgICBRU3RyaW5nIGtleSA9IGQtPm1vZGVsLT5kYXRh KHNvdXJjZV9pbmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CitAQCAtMzEzMyw5ICsz MTM1LDEwIEBAIGJvb2wgUVNvcnRGaWx0ZXJQcm94eU1vZGVsOjpmaWx0ZXJBY2NlcHRzUm93KGlu dCBzb3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAmCisgICAgICAgICB9CisgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgIH0KKy0gICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0gZC0+ bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRlcl9jb2x1bW4sIHNvdXJjZV9wYXJlbnQp OworLSAgICBpZiAoIXNvdXJjZV9pbmRleC5pc1ZhbGlkKCkpIC8vIHRoZSBjb2x1bW4gbWF5IG5v dCBleGlzdAorKworKyAgICBpZiAoZC0+ZmlsdGVyX2NvbHVtbiA+PSBjb2x1bW5fY291bnQpIC8v IHRoZSBjb2x1bW4gbWF5IG5vdCBleGlzdAorICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgIFFN b2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBkLT5m aWx0ZXJfY29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKyAgICAgUVN0cmluZyBrZXkgPSBkLT5tb2Rl bC0+ZGF0YShzb3VyY2VfaW5kZXgsIGQtPmZpbHRlcl9yb2xlKS50b1N0cmluZygpOworICAgICBy ZXR1cm4gZC0+ZmlsdGVyX2RhdGEuaGFzTWF0Y2goa2V5KTsKKyB9CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcCBiL3F0YmFzZS9zcmMv Y29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGNhMjg2NGRmODMuLjEz MmIyZWFlNTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBw bGljYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGlj YXRpb24uY3BwCitAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgc3RhdGljIGJvb2wgZG9Ob3RpZnkoUU9i amVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZlbnQpCisgYm9vbCBRQ29yZUFwcGxpY2F0aW9uUHJp dmF0ZTo6c2VuZFRocm91Z2hBcHBsaWNhdGlvbkV2ZW50RmlsdGVycyhRT2JqZWN0ICpyZWNlaXZl ciwgUUV2ZW50ICpldmVudCkKKyB7CisgICAgIC8vIFdlIGNhbid0IGFjY2VzcyB0aGUgYXBwbGlj YXRpb24gZXZlbnQgZmlsdGVycyBvdXRzaWRlIG9mIHRoZSBtYWluIHRocmVhZCAocmFjZSBjb25k aXRpb25zKQorLSAgICBRX0FTU0VSVChyZWNlaXZlci0+ZF9mdW5jKCktPnRocmVhZERhdGEubG9h ZFJlbGF4ZWQoKS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkgPT0gbWFpblRocmVhZCgpKTsKKysgICAg UV9BU1NFUlQocmVjZWl2ZXItPmRfZnVuYygpLT50aHJlYWREYXRhLmxvYWRBY3F1aXJlKCktPnRo cmVhZC5sb2FkUmVsYXhlZCgpID09IG1haW5UaHJlYWQoKSk7CisgCisgICAgIGlmIChleHRyYURh dGEpIHsKKyAgICAgICAgIC8vIGFwcGxpY2F0aW9uIGV2ZW50IGZpbHRlcnMgYXJlIG9ubHkgY2Fs bGVkIGZvciBvYmplY3RzIGluIHRoZSBHVUkgdGhyZWFkCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwv cW9iamVjdC5jcHAKK2luZGV4IDFlYjc5MTM4ZDkuLjM2Y2Q3ODBlZTEgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIva2VybmVsL3FvYmplY3QuY3BwCitAQCAtMTAxMCw3ICsxMDEwLDcgQEAgUU9iamVjdDo6 flFPYmplY3QoKQorICAgICAgICAgZW1pdCBkZXN0cm95ZWQodGhpcyk7CisgICAgIH0KKyAKKy0g ICAgaWYgKGQtPmRlY2xhcmF0aXZlRGF0YSkgeworKyAgICBpZiAoIWQtPmlzRGVsZXRpbmdDaGls ZHJlbiAmJiBkLT5kZWNsYXJhdGl2ZURhdGEpIHsKKyAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxR QWJzdHJhY3REZWNsYXJhdGl2ZURhdGFJbXBsKj4oZC0+ZGVjbGFyYXRpdmVEYXRhKS0+b3duZWRC eVFtbDEpIHsKKyAgICAgICAgICAgICBpZiAoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0 cm95ZWRfcW1sMSkKKyAgICAgICAgICAgICAgICAgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpk ZXN0cm95ZWRfcW1sMShkLT5kZWNsYXJhdGl2ZURhdGEsIHRoaXMpOworQEAgLTE1ODAsNyArMTU4 MCw3IEBAIHZvaWQgUU9iamVjdDo6bW92ZVRvVGhyZWFkKFFUaHJlYWQgKnRhcmdldFRocmVhZCkK KyAKKyAgICAgUVRocmVhZERhdGEgKmN1cnJlbnREYXRhID0gUVRocmVhZERhdGE6OmN1cnJlbnQo KTsKKyAgICAgUVRocmVhZERhdGEgKnRhcmdldERhdGEgPSB0YXJnZXRUaHJlYWQgPyBRVGhyZWFk RGF0YTo6Z2V0Mih0YXJnZXRUaHJlYWQpIDogbnVsbHB0cjsKKy0gICAgUVRocmVhZERhdGEgKnRo aXNUaHJlYWREYXRhID0gZC0+dGhyZWFkRGF0YS5sb2FkUmVsYXhlZCgpOworKyAgICBRVGhyZWFk RGF0YSAqdGhpc1RocmVhZERhdGEgPSBkLT50aHJlYWREYXRhLmxvYWRBY3F1aXJlKCk7CisgICAg IGlmICghdGhpc1RocmVhZERhdGEtPnRocmVhZC5sb2FkQWNxdWlyZSgpICYmIGN1cnJlbnREYXRh ID09IHRhcmdldERhdGEpIHsKKyAgICAgICAgIC8vIG9uZSBleGNlcHRpb24gdG8gdGhlIHJ1bGU6 IHdlIGFsbG93IG1vdmluZyBvYmplY3RzIHdpdGggbm8gdGhyZWFkIGFmZmluaXR5IHRvIHRoZSBj dXJyZW50IHRocmVhZAorICAgICAgICAgY3VycmVudERhdGEgPSBkLT50aHJlYWREYXRhOworQEAg LTI2MjAsNyArMjYyMCw3IEBAIGludCBRT2JqZWN0OjpyZWNlaXZlcnMoY29uc3QgY2hhciAqc2ln bmFsKSBjb25zdAorICAgICAgICAgaWYgKCFkLT5pc1NpZ25hbENvbm5lY3RlZChzaWduYWxfaW5k ZXgpKQorICAgICAgICAgICAgIHJldHVybiByZWNlaXZlcnM7CisgCistICAgICAgICBpZiAoZC0+ ZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJzKSB7 CisrICAgICAgICBpZiAoIWQtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkLT5kZWNsYXJhdGl2ZURh dGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKyAgICAgICAgICAg ICByZWNlaXZlcnMgKz0gUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMoZC0+ZGVj bGFyYXRpdmVEYXRhLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfaW5kZXgpOworICAgICAgICAgfQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmggYi9xdGJhc2Uv c3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitpbmRleCAwYjgyN2E1MmNhLi4xM2ZmYjg4 OTk5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAorQEAgLTQ0NCw3ICs0 NDQsNyBAQCBpbmxpbmUgdm9pZCBRT2JqZWN0UHJpdmF0ZTo6Y2hlY2tGb3JJbmNvbXBhdGlibGVM aWJyYXJ5VmVyc2lvbihpbnQgdmVyc2lvbikgY29ucworIAorIGlubGluZSBib29sIFFPYmplY3RQ cml2YXRlOjppc0RlY2xhcmF0aXZlU2lnbmFsQ29ubmVjdGVkKHVpbnQgc2lnbmFsX2luZGV4KSBj b25zdAorIHsKKy0gICAgcmV0dXJuIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJh dGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkCisrICAgIHJldHVybiAhaXNEZWxldGluZ0NoaWxk cmVuICYmIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2ln bmFsQ29ubmVjdGVkCisgICAgICAgICAgICAgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpp c1NpZ25hbENvbm5lY3RlZChkZWNsYXJhdGl2ZURhdGEsIHFfZnVuYygpLCBzaWduYWxfaW5kZXgp OworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xh dG9yLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwCitpbmRl eCAyODEyZmZiN2VhLi5iYzAxNzdjNWVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwv cXRyYW5zbGF0b3IuY3BwCitAQCAtOTAyLDcgKzkwMiw3IEBAIHN0YXRpYyBRU3RyaW5nIGdldE1l c3NhZ2UoY29uc3QgdWNoYXIgKm0sIGNvbnN0IHVjaGFyICplbmQsIGNvbnN0IGNoYXIgKmNvbnRl eHQsCisgICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICBjYXNlIFRhZ19UcmFuc2xhdGlv bjogeworICAgICAgICAgICAgIGludCBsZW4gPSByZWFkMzIobSk7CistICAgICAgICAgICAgaWYg KGxlbiAlIDEpCisrICAgICAgICAgICAgaWYgKGxlbiAmIDEpCisgICAgICAgICAgICAgICAgIHJl dHVybiBRU3RyaW5nKCk7CisgICAgICAgICAgICAgbSArPSA0OworICAgICAgICAgICAgIGlmICgh bnVtZXJ1cy0tKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9x bWltZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRh YmFzZS5jcHAKK2luZGV4IDlkZTIyY2VmMzMuLmZmODY4YTMyNjggMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCitAQCAtMzg5LDIwICszODks MjMgQEAgUU1pbWVUeXBlIFFNaW1lRGF0YWJhc2VQcml2YXRlOjptaW1lVHlwZUZvckZpbGVOYW1l QW5kRGF0YShjb25zdCBRU3RyaW5nICZmaWxlTmEKKyAgICAgICAgIC8vIERpc2FtYmlndWF0ZSBj b25mbGljdGluZyBleHRlbnNpb25zIChpZiBtYWdpYyBtYXRjaGluZyBmb3VuZCBzb21ldGhpbmcp CisgICAgICAgICBpZiAoY2FuZGlkYXRlQnlEYXRhLmlzVmFsaWQoKSAmJiBtYWdpY0FjY3VyYWN5 ID4gMCkgeworICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgc25pZmZlZE1pbWUgPSBjYW5kaWRh dGVCeURhdGEubmFtZSgpOworLSAgICAgICAgICAgIC8vIElmIHRoZSBzbmlmZmVkTWltZSBtYXRj aGVzIGEgZ2xvYiBtYXRjaCwgdXNlIGl0CisrICAgICAgICAgICAgLy8gSWYgdGhlIHNuaWZmZWRN aW1lIG1hdGNoZXMgYSBoaWdoZXN0LXdlaWdodCBnbG9iIG1hdGNoLCB1c2UgaXQKKyAgICAgICAg ICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX21hdGNoaW5nTWltZVR5cGVzLmNvbnRhaW5zKHNu aWZmZWRNaW1lKSkgeworICAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSAxMDA7CisgICAg ICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAmbSA6IHFBc0NvbnN0KGNhbmRpZGF0ZXNCeU5h bWUubV9tYXRjaGluZ01pbWVUeXBlcykpIHsKKysgICAgICAgICAgICBmb3IgKGNvbnN0IFFTdHJp bmcgJm0gOiBxQXNDb25zdChjYW5kaWRhdGVzQnlOYW1lLm1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMp KSB7CisgICAgICAgICAgICAgICAgIGlmIChpbmhlcml0cyhtLCBzbmlmZmVkTWltZSkpIHsKKyAg ICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbWFnaWMgKyBwYXR0ZXJuIHBvaW50aW5nIHRv IHRoaXMsIHNvIGl0J3MgYSBwcmV0dHkgZ29vZCBtYXRjaAorICAgICAgICAgICAgICAgICAgICAg KmFjY3VyYWN5UHRyID0gMTAwOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBl Rm9yTmFtZShtKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKy0gICAgICAg ICAgICAqYWNjdXJhY3lQdHIgPSBtYWdpY0FjY3VyYWN5OworLSAgICAgICAgICAgIHJldHVybiBj YW5kaWRhdGVCeURhdGE7CisrICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNCeU5hbWUubV9hbGxN YXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpIHsKKysgICAgICAgICAgICAgICAgLy8gTm8gZ2xv YiwgdXNlIG1hZ2ljCisrICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IG1hZ2ljQWNjdXJh Y3k7CisrICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisrICAgICAgICAg ICAgfQorICAgICAgICAgfQorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9t aW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKK2luZGV4IGE4MTExMmQyMjcuLmZhOGY0YzU0 NWQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBh dHRlcm4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBh dHRlcm4uY3BwCitAQCAtODMsNyArODMsMTAgQEAgdm9pZCBRTWltZUdsb2JNYXRjaFJlc3VsdDo6 YWRkTWF0Y2goY29uc3QgUVN0cmluZyAmbWltZVR5cGUsIGludCB3ZWlnaHQsIGNvbnN0IFEKKyAg ICAgfQorICAgICBpZiAoIW1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMobWltZVR5cGUpKSB7 CisgICAgICAgICBtX21hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CistICAgICAg ICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CisrICAgICAgICBpZiAo cmVwbGFjZSkKKysgICAgICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLnByZXBlbmQobWlt ZVR5cGUpOyAvLyBoaWdoZXN0LXdlaWdodCBmaXJzdAorKyAgICAgICAgZWxzZQorKyAgICAgICAg ICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKyAgICAgICAgIG1f a25vd25TdWZmaXhMZW5ndGggPSBrbm93blN1ZmZpeExlbmd0aDsKKyAgICAgfQorIH0KK0BAIC05 NCw3ICs5Nyw3IEBAIFFNaW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBlIFFNaW1lR2xvYlBhdHRl cm46OmRldGVjdFBhdHRlcm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAgaWYgKCFwYXR0ZXJuTGVu Z3RoKQorICAgICAgICAgcmV0dXJuIE90aGVyUGF0dGVybjsKKyAKKy0gICAgY29uc3QgYm9vbCBz dGFyQ291bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcqJykpID09IDE7CisrICAgIGNv bnN0IGludCBzdGFyQ291bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcqJykpOworICAg ICBjb25zdCBib29sIGhhc1NxdWFyZUJyYWNrZXQgPSBwYXR0ZXJuLmluZGV4T2YoUUxhdGluMUNo YXIoJ1snKSkgIT0gLTE7CisgICAgIGNvbnN0IGJvb2wgaGFzUXVlc3Rpb25NYXJrID0gcGF0dGVy bi5pbmRleE9mKFFMYXRpbjFDaGFyKCc/JykpICE9IC0xOworIAorQEAgLTEwNiwxMCArMTA5LDEw IEBAIFFNaW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBlIFFNaW1lR2xvYlBhdHRlcm46OmRldGVj dFBhdHRlcm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAgICAgICAgICAvLyBQYXR0ZXJucyBsaWtl ICJSRUFETUUqIiAod2VsbCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBvbmUgbGlrZSB0aGF0 Li4uKQorICAgICAgICAgICAgIGlmIChwYXR0ZXJuLmF0KHBhdHRlcm5MZW5ndGggLSAxKSA9PSBR TGF0aW4xQ2hhcignKicpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUHJlZml4UGF0dGVybjsK Ky0gICAgICAgIH0KKy0gICAgICAgIC8vIE5hbWVzIHdpdGhvdXQgYW55IHdpbGRjYXJkcyBsaWtl ICJSRUFETUUiCistICAgICAgICBpZiAoc3RhckNvdW50ID09IDApCisrICAgICAgICB9IGVsc2Ug aWYgKHN0YXJDb3VudCA9PSAwKSB7CisrICAgICAgICAgICAgLy8gTmFtZXMgd2l0aG91dCBhbnkg d2lsZGNhcmRzIGxpa2UgIlJFQURNRSIKKyAgICAgICAgICAgICByZXR1cm4gTGl0ZXJhbFBhdHRl cm47CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYgKHBhdHRlcm4gPT0gUUxhdGluMVN0 cmluZygiWzAtOV1bMC05XVswLTldLnZkciIpKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWlt ZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitpbmRleCAyNThkZGRmOGNiLi40NjQyZDBmMmQwIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNw cAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAor QEAgLTI0NCwxNSArMjQ0LDE4IEBAIHZvaWQgUU1pbWVCaW5hcnlQcm92aWRlcjo6YWRkRmlsZU5h bWVNYXRjaGVzKGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1lLCBRTWltZUdsb2JNCisgICAgIGNvbnN0 IFFTdHJpbmcgbG93ZXJGaWxlTmFtZSA9IGZpbGVOYW1lLnRvTG93ZXIoKTsKKyAgICAgLy8gQ2hl Y2sgbGl0ZXJhbHMgKGUuZy4gIk1ha2VmaWxlIikKKyAgICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQs IG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0xpdGVyYWxMaXN0T2Zmc2V0 KSwgZmlsZU5hbWUpOworLSAgICAvLyBDaGVjayBjb21wbGV4IGdsb2JzIChlLmcuICJjYWxsZ3Jp bmQub3V0WzAtOV0qIikKKy0gICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVGaWxlLCBt X2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0T2Zmc2V0KSwgZmlsZU5hbWUpOworICAg ICAvLyBDaGVjayB0aGUgdmVyeSBjb21tb24gKi50eHQgY2FzZXMgd2l0aCB0aGUgc3VmZml4IHRy ZWUKKy0gICAgY29uc3QgaW50IHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ID0gbV9jYWNoZUZpbGUt PmdldFVpbnQzMihQb3NSZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CistICAgIGNvbnN0IGludCBu dW1Sb290cyA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQp OworLSAgICBjb25zdCBpbnQgZmlyc3RSb290T2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQz MihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCArIDQpOworLSAgICBtYXRjaFN1ZmZpeFRyZWUocmVz dWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgbG93ZXJGaWxlTmFt ZSwgbG93ZXJGaWxlTmFtZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAgaWYgKHJlc3VsdC5t X21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3QgaW50IHJldmVy c2VTdWZmaXhUcmVlT2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NSZXZlcnNlU3Vm Zml4VHJlZU9mZnNldCk7CisrICAgICAgICBjb25zdCBpbnQgbnVtUm9vdHMgPSBtX2NhY2hlRmls ZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKysgICAgICAgIGNvbnN0IGlu dCBmaXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhU cmVlT2Zmc2V0ICsgNCk7CisrICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hl RmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgbG93ZXJGaWxlTmFtZSwgbG93ZXJGaWxl TmFtZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAgICAgIGlmIChyZXN1bHQubV9tYXRjaGlu Z01pbWVUeXBlcy5pc0VtcHR5KCkpCisrICAgICAgICAgICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3Vs dCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVOYW1lLCBmaWxl TmFtZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICB9CisrICAgIC8vIENoZWNrIGNvbXBsZXgg Z2xvYnMgKGUuZy4gImNhbGxncmluZC5vdXRbMC05XSoiIG9yICJSRUFETUUqIikKKyAgICAgaWYg KHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkKKy0gICAgICAgIG1hdGNoU3Vm Zml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBm aWxlTmFtZSwgZmlsZU5hbWUubGVuZ3RoKCkgLSAxLCB0cnVlKTsKKysgICAgICAgIG1hdGNoR2xv Ykxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NHbG9i TGlzdE9mZnNldCksIGZpbGVOYW1lKTsKKyB9CisgCisgdm9pZCBRTWltZUJpbmFyeVByb3ZpZGVy OjptYXRjaEdsb2JMaXN0KFFNaW1lR2xvYk1hdGNoUmVzdWx0ICZyZXN1bHQsIENhY2hlRmlsZSAq Y2FjaGVGaWxlLCBpbnQgb2ZmLCBjb25zdCBRU3RyaW5nICZmaWxlTmFtZSkKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKK2luZGV4IDE3ZTZm MTExYWIuLjJlNDBiNmM4ZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFs aXphdGlvbi9xanNvbnBhcnNlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxp emF0aW9uL3Fqc29ucGFyc2VyLmNwcAorQEAgLTM3OSwxMCArMzc5LDMwIEBAIGVycm9yOgorICAg ICByZXR1cm4gUUNib3JWYWx1ZSgpOworIH0KKyAKKysvLyBXZSBuZWVkIHRvIHJldGFpbiB0aGUg X2xhc3RfIHZhbHVlIGZvciBhbnkgZHVwbGljYXRlIGtleXMgYW5kIHdlIG5lZWQgdG8gZGVyZWYg Y29udGFpbmVycy4KKysvLyBUaGVyZWZvcmUgdGhlIG1hbnVhbCBpbXBsZW1lbnRhdGlvbiBvZiBz dGQ6OnVuaXF1ZSgpLgorK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBDb21w YXJlLCB0eXBlbmFtZSBBc3NpZ24+Cisrc3RhdGljIEl0ZXJhdG9yIGN1c3RvbUFzc2lnbmluZ1Vu aXF1ZUxhc3QoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSBjb21wYXJlLCBBc3NpZ24gYXNzaWdu KQorK3sKKysgICAgZmlyc3QgPSBzdGQ6OmFkamFjZW50X2ZpbmQoZmlyc3QsIGxhc3QsIGNvbXBh cmUpOworKyAgICBpZiAoZmlyc3QgPT0gbGFzdCkKKysgICAgICAgIHJldHVybiBsYXN0OworKwor KyAgICBJdGVyYXRvciByZXN1bHQgPSBmaXJzdDsKKysgICAgd2hpbGUgKCsrZmlyc3QgIT0gbGFz dCkgeworKyAgICAgICAgaWYgKCFjb21wYXJlKCpyZXN1bHQsICpmaXJzdCkpCisrICAgICAgICAg ICAgKytyZXN1bHQ7CisrICAgICAgICBpZiAocmVzdWx0ICE9IGZpcnN0KQorKyAgICAgICAgICAg IGFzc2lnbigqcmVzdWx0LCAqZmlyc3QpOworKyAgICB9CisrCisrICAgIHJldHVybiArK3Jlc3Vs dDsKKyt9CisrCisgc3RhdGljIHZvaWQgc29ydENvbnRhaW5lcihRQ2JvckNvbnRhaW5lclByaXZh dGUgKmNvbnRhaW5lcikKKyB7CisgICAgIHVzaW5nIEZvcndhcmQgPSBRSnNvblByaXZhdGU6Oktl eUl0ZXJhdG9yOworLSAgICB1c2luZyBSZXZlcnNlID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEZv cndhcmQ+OworICAgICB1c2luZyBWYWx1ZSA9IEZvcndhcmQ6OnZhbHVlX3R5cGU7CisgCisgICAg IGF1dG8gY29tcGFyZSA9IFtjb250YWluZXJdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAm YikKK0BAIC00MjAsMTcgKzQ0MCwzMSBAQCBzdGF0aWMgdm9pZCBzb3J0Q29udGFpbmVyKFFDYm9y Q29udGFpbmVyUHJpdmF0ZSAqY29udGFpbmVyKQorICAgICAgICAgfQorICAgICB9OworIAorLSAg ICBzdGQ6OnNvcnQoRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLCBGb3J3YXJk KGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorLSAgICAgICAgICAgICAgWyZjb21wYXJlXShj b25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPCAw OyB9KTsKKysgICAgLy8gVGhlIGVsZW1lbnRzJyBjb250YWluZXJzIGFyZSBvd25lZCBieSB0aGUg b3V0ZXIgY29udGFpbmVyLCBub3QgYnkgdGhlIGVsZW1lbnRzIHRoZW1zZWx2ZXMuCisrICAgIGF1 dG8gbW92ZSA9IFtdKEZvcndhcmQ6OnJlZmVyZW5jZSB0YXJnZXQsIEZvcndhcmQ6OnJlZmVyZW5j ZSBzb3VyY2UpCisrICAgIHsKKysgICAgICAgIFF0Q2Jvcjo6RWxlbWVudCAmdGFyZ2V0VmFsdWUg PSB0YXJnZXQudmFsdWUoKTsKKysKKysgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGEgY29u dGFpbmVyLCBkZXJlZiBpdCBiZWZvcmUgb3ZlcndyaXRpbmcsIHNvIHRoYXQgd2UgZG9uJ3QgbGVh ay4KKysgICAgICAgIGlmICh0YXJnZXRWYWx1ZS5mbGFncyAmIFF0Q2Jvcjo6RWxlbWVudDo6SXND b250YWluZXIpCisrICAgICAgICAgICAgdGFyZ2V0VmFsdWUuY29udGFpbmVyLT5kZXJlZigpOwor KworKyAgICAgICAgLy8gRG8gbm90IG1vdmUsIHNvIHRoYXQgd2UgY2FuIGNsZWFyIHRoZSB2YWx1 ZSBhZnRlcndhcmRzLgorKyAgICAgICAgdGFyZ2V0ID0gc291cmNlOworKworKyAgICAgICAgLy8g Q2xlYXIgdGhlIHNvdXJjZSB2YWx1ZSwgc28gdGhhdCB3ZSBkb24ndCBzdG9yZSB0aGUgc2FtZSBj b250YWluZXIgdHdpY2UuCisrICAgICAgICBzb3VyY2UudmFsdWUoKSA9IFF0Q2Jvcjo6RWxlbWVu dCgpOworKyAgICB9OworKworKyAgICBzdGQ6OnN0YWJsZV9zb3J0KAorKyAgICAgICAgICAgICAg ICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQoY29udGFpbmVy LT5lbGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFs dWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpIDwgMDsgfSk7Cisg CistICAgIC8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBfbGFzdF8gdmFsdWUgZm9yIGFueSBkdXBs aWNhdGUga2V5cy4gVGhlcmVmb3JlIHRoZSByZXZlcnNlIGRhbmNlIGhlcmUuCistICAgIGF1dG8g aXQgPSBzdGQ6OnVuaXF1ZShSZXZlcnNlKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLCBSZXZl cnNlKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksCistICAgICAgICAgICAgICAgICAgICAg ICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeworLSAgICAg ICAgcmV0dXJuIGNvbXBhcmUoYSwgYikgPT0gMDsKKy0gICAgfSkuYmFzZSgpLmVsZW1lbnRzSXRl cmF0b3IoKTsKKysgICAgRm9yd2FyZCByZXN1bHQgPSBjdXN0b21Bc3NpZ25pbmdVbmlxdWVMYXN0 KAorKyAgICAgICAgICAgICAgICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSks ICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorKyAgICAgICAgICAgICAgICBb JmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFy ZShhLCBiKSA9PSAwOyB9LCBtb3ZlKTsKKyAKKy0gICAgLy8gVGhlIGVyYXNlIGZyb20gYmVnaW5u aW5nIGlzIGV4cGVuc2l2ZSBidXQgaG9wZWZ1bGx5IHJhcmUuCistICAgIGNvbnRhaW5lci0+ZWxl bWVudHMuZXJhc2UoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpLCBpdCk7CisrICAgIGNvbnRh aW5lci0+ZWxlbWVudHMuZXJhc2UocmVzdWx0LmVsZW1lbnRzSXRlcmF0b3IoKSwgY29udGFpbmVy LT5lbGVtZW50cy5lbmQoKSk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Nl cmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKK2luZGV4IGIyZjg0NjU0NGQuLjdjZDQ1N2JhM2Eg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFt LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5j cHAKK0BAIC05ODAsNyArOTgwLDcgQEAgaW5saW5lIHVpbnQgUVhtbFN0cmVhbVJlYWRlclByaXZh dGU6OnBlZWtDaGFyKCkKKyBib29sIFFYbWxTdHJlYW1SZWFkZXJQcml2YXRlOjpzY2FuVW50aWwo Y29uc3QgY2hhciAqc3RyLCBzaG9ydCB0b2tlblRvSW5qZWN0KQorIHsKKyAgICAgaW50IHBvcyA9 IHRleHRCdWZmZXIuc2l6ZSgpOworLSAgICBpbnQgb2xkTGluZU51bWJlciA9IGxpbmVOdW1iZXI7 CisrICAgIGNvbnN0IGF1dG8gb2xkTGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisgCisgICAgIHVp bnQgYzsKKyAgICAgd2hpbGUgKChjID0gZ2V0Q2hhcigpKSAhPSBTdHJlYW1FT0YpIHsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcCBiL3F0YmFzZS9zcmMv Y29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCitpbmRleCAzZTg4YWI0ODU5Li44ZGVlYWU0N2JiIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCitAQCAtMTIzMTIsNyArMTIzMTIsNyBA QCBzdGF0aWMgcXNpemV0eXBlIHFMYXN0SW5kZXhPZihIYXlzdGFjayBoYXlzdGFjazAsIHFzaXpl dHlwZSBmcm9tLAorICAgICBjb25zdCBhdXRvIG5lZWRsZSA9IG5lZWRsZTAuZGF0YSgpOworICAg ICBjb25zdCBhdXRvICplbmQgPSBoYXlzdGFjazsKKyAgICAgaGF5c3RhY2sgKz0gZnJvbTsKKy0g ICAgY29uc3Qgc3RkOjpzaXplX3Qgc2xfbWludXNfMSA9IHNsIC0gMTsKKysgICAgY29uc3Qgc3Rk OjpzaXplX3Qgc2xfbWludXNfMSA9IHNsID8gc2wgLSAxIDogMDsKKyAgICAgY29uc3QgYXV0byAq biA9IG5lZWRsZSArIHNsX21pbnVzXzE7CisgICAgIGNvbnN0IGF1dG8gKmggPSBoYXlzdGFjayAr IHNsX21pbnVzXzE7CisgICAgIHN0ZDo6c2l6ZV90IGhhc2hOZWVkbGUgPSAwLCBoYXNoSGF5c3Rh Y2sgPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVy YXRvcl9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oCitp bmRleCAyMTk1ODliNmU0Li4xZDBjNjZjYzc4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rl eHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAorQEAgLTYxLDYgKzYxLDggQEAgY2xhc3MgUVN0cmluZ0l0 ZXJhdG9yCisgeworICAgICBRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBpLCBwb3MsIGU7CisgICAg IFFfU1RBVElDX0FTU0VSVCgoc3RkOjppc19zYW1lPFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yLCBj b25zdCBRQ2hhciAqPjo6dmFsdWUpKTsKKysgICAgc3RhdGljIGJvb2wgbGVzcyhjb25zdCBRQ2hh ciAqbGhzLCBjb25zdCBRQ2hhciAqcmhzKSBub2V4Y2VwdAorKyAgICB7IHJldHVybiBzdGQ6Omxl c3M8UVN0cmluZzo6Y29uc3RfaXRlcmF0b3I+e30obGhzLCByaHMpOyB9CisgcHVibGljOgorICAg ICBleHBsaWNpdCBRU3RyaW5nSXRlcmF0b3IoUVN0cmluZ1ZpZXcgc3RyaW5nLCBxc2l6ZXR5cGUg aWR4ID0gMCkKKyAgICAgICAgIDogaShzdHJpbmcuYmVnaW4oKSksCitAQCAtOTUsNyArOTcsOCBA QCBwdWJsaWM6CisgCisgICAgIGlubGluZSB2b2lkIHNldFBvc2l0aW9uKFFTdHJpbmc6OmNvbnN0 X2l0ZXJhdG9yIHBvc2l0aW9uKQorICAgICB7CistICAgICAgICBRX0FTU0VSVF9YKGkgPD0gcG9z aXRpb24gJiYgcG9zaXRpb24gPD0gZSwgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBvdXQgb2YgYm91 bmRzIik7CisrICAgICAgICBRX0FTU0VSVF9YKCFsZXNzKHBvc2l0aW9uLCBpKSAmJiAhbGVzcyhl LCBwb3NpdGlvbiksCisrICAgICAgICAgICAgICAgICAgIFFfRlVOQ19JTkZPLCAicG9zaXRpb24g b3V0IG9mIGJvdW5kcyIpOworICAgICAgICAgcG9zID0gcG9zaXRpb247CisgICAgIH0KKyAKK0BA IC0xMDMsNyArMTA2LDcgQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBoYXNOZXh0KCkg Y29uc3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBvcyA8IGU7CisrICAgICAgICByZXR1cm4g bGVzcyhwb3MsIGUpOworICAgICB9CisgCisgICAgIGlubGluZSB2b2lkIGFkdmFuY2UoKQorQEAg LTEyMCwxNiArMTIzLDIwIEBAIHB1YmxpYzoKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWCho YXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7Cisg CistICAgICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dhdGUoKSkpCisr ICAgICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysg ICAgICAgICAgICBRX0FTU0VSVChoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKTsK KyAgICAgICAgICAgICArK3BvczsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpbmxpbmUg dWludCBwZWVrTmV4dFVuY2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJU X1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIG5leHQgaXRlbSIp OworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zLT5pc0hpZ2hTdXJyb2dhdGUoKSkpCisr ICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAg ICAgICAgIFFfQVNTRVJUKGxlc3MocG9zICsgMSwgZSkgJiYgcG9zWzFdLmlzTG93U3Vycm9nYXRl KCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KHBvc1swXSwg cG9zWzFdKTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIHJldHVybiBwb3MtPnVuaWNvZGUoKTsK KyAgICAgfQorQEAgLTE1NSw4ICsxNjIsMTAgQEAgcHVibGljOgorICAgICAgICAgUV9BU1NFUlRf WChoYXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7 CisgCisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAqcG9zKys7CistICAgICAgICBpZiAoUV9V TkxJS0VMWShjdXIuaXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFko Y3VyLmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc05leHQo KSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6 c3Vycm9nYXRlVG9VY3M0KGN1ciwgKnBvcysrKTsKKysgICAgICAgIH0KKyAgICAgICAgIHJldHVy biBjdXIudW5pY29kZSgpOworICAgICB9CisgCitAQCAtMTY2LDcgKzE3NSw3IEBAIHB1YmxpYzoK KyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIHVjID0gKnBvcysrOworICAgICAgICAgaWYgKFFfVU5M SUtFTFkodWMuaXNTdXJyb2dhdGUoKSkpIHsKKy0gICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMu aXNIaWdoU3Vycm9nYXRlKCkgJiYgcG9zIDwgZSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpKQor KyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hpZ2hTdXJyb2dhdGUoKSAmJiBoYXNOZXh0 KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFFD aGFyOjpzdXJyb2dhdGVUb1VjczQodWMsICpwb3MrKyk7CisgICAgICAgICAgICAgcmV0dXJuIGlu dmFsaWRBczsKKyAgICAgICAgIH0KK0BAIC0xNzgsNyArMTg3LDcgQEAgcHVibGljOgorIAorICAg ICBpbmxpbmUgYm9vbCBoYXNQcmV2aW91cygpIGNvbnN0CisgICAgIHsKKy0gICAgICAgIHJldHVy biBwb3MgPiBpOworKyAgICAgICAgcmV0dXJuIGxlc3MoaSwgcG9zKTsKKyAgICAgfQorIAorICAg ICBpbmxpbmUgdm9pZCByZWNlZGUoKQorQEAgLTE5NiwxNiArMjA1LDIwIEBAIHB1YmxpYzoKKyAg ICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0 ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElL RUxZKCgtLXBvcyktPmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFko KC0tcG9zKS0+aXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChoYXNQ cmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIC0t cG9zOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50IHBlZWtQcmV2aW91 c1VuY2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzUHJldmlv dXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVtIik7Cisg CistICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRlKCkpKQorKyAg ICAgICAgaWYgKFFfVU5MSUtFTFkocG9zWy0xXS5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAg ICAgICAgIFFfQVNTRVJUKGxlc3MoaSArIDEsIHBvcykgJiYgcG9zWy0yXS5pc0hpZ2hTdXJyb2dh dGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQocG9zWy0y XSwgcG9zWy0xXSk7CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gcG9zWy0xXS51bmljb2Rl KCk7CisgICAgIH0KKyAKK0BAIC0yMzAsOCArMjQzLDEwIEBAIHB1YmxpYzoKKyAgICAgICAgIFFf QVNTRVJUX1goaGFzUHJldmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBw cmV2aW91cyBpdGVtIik7CisgCisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAqLS1wb3M7Cist ICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBp ZiAoUV9VTkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FT U0VSVChoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAg ICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KCotLXBvcywgY3VyKTsKKysgICAg ICAgIH0KKyAgICAgICAgIHJldHVybiBjdXIudW5pY29kZSgpOworICAgICB9CisgCitAQCAtMjQx LDcgKzI1Niw3IEBAIHB1YmxpYzoKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIHVjID0gKi0tcG9z OworICAgICAgICAgaWYgKFFfVU5MSUtFTFkodWMuaXNTdXJyb2dhdGUoKSkpIHsKKy0gICAgICAg ICAgICBpZiAoUV9MSUtFTFkodWMuaXNMb3dTdXJyb2dhdGUoKSAmJiBwb3MgPiBpICYmIHBvc1st MV0uaXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0xv d1N1cnJvZ2F0ZSgpICYmIGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUo KSkpCisgICAgICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KCotLXBv cywgdWMpOworICAgICAgICAgICAgIHJldHVybiBpbnZhbGlkQXM7CisgICAgICAgICB9CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCitpbmRleCBmMjg3Yjc1MmQ3Li5lMjk0NTM3Nzg3 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKK0BAIC01Miw2ICs1Miw3IEBA CisgLy8KKyAKKyAjaW5jbHVkZSA8cWdsb2JhbC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcXRzYW5f aW1wbC5oPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTEwNiwxNiArMTA3LDEzIEBA IG5hbWVzcGFjZSBRdExpbnV4RnV0ZXggeworICAgICBpbmxpbmUgaW50IF9xX2Z1dGV4KGludCAq YWRkciwgaW50IG9wLCBpbnQgdmFsLCBxdWludHB0ciB2YWwyID0gMCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgKmFkZHIyID0gbnVsbHB0ciwgaW50IHZhbDMgPSAwKSBub2V4Y2VwdAor ICAgICB7CistICAgICAgICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRlcmluZyBv biB0aGUgZnV0ZXggd29yZHMKKy0gICAgICAgIC8vIChpbiBlaXRoZXIgc3VjY2VzcyBvciBmYWls dXJlIG9mIHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKy0gICAgICAgIC8v IGFzIFRTQU4gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgZnV0ZXgoMikgc3lzY2FsbC4KKy0gICAg ICAgIF9xX3RzYW5fcmVsZWFzZShhZGRyLCBhZGRyMik7CisrICAgICAgICBRdFRzYW46OmZ1dGV4 UmVsZWFzZShhZGRyLCBhZGRyMik7CisgCisgICAgICAgICAvLyB3ZSB1c2UgX19OUl9mdXRleCBi ZWNhdXNlIHNvbWUgbGliY3MgKGxpa2UgQW5kcm9pZCdzIGJpb25pYykgZG9uJ3QKKyAgICAgICAg IC8vIHByb3ZpZGUgU1lTX2Z1dGV4IGV0Yy4KKyAgICAgICAgIGludCByZXN1bHQgPSBzeXNjYWxs KF9fTlJfZnV0ZXgsIGFkZHIsIG9wIHwgRlVURVhfUFJJVkFURV9GTEFHLCB2YWwsIHZhbDIsIGFk ZHIyLCB2YWwzKTsKKyAKKy0gICAgICAgIF9xX3RzYW5fYWNxdWlyZShhZGRyLCBhZGRyMik7Cisr ICAgICAgICBRdFRzYW46OmZ1dGV4QWNxdWlyZShhZGRyLCBhZGRyMik7CisgCisgICAgICAgICBy ZXR1cm4gcmVzdWx0OworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xbXV0ZXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCitp bmRleCAzMTBkMWNiMTRmLi43MDk3MTIyZDhlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xbXV0ZXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3Ft dXRleC5jcHAKK0BAIC0xNTIsNiArMTUyLDcgQEAgcHVibGljOgorIAorIC8qIQorICAgICBcZW51 bSBRTXV0ZXg6OlJlY3Vyc2lvbk1vZGUKKysgICAgXG9ic29sZXRlIFVzZSBRUmVjdXJzaXZlTXV0 ZXggdG8gY3JlYXRlIGEgcmVjdXJzaXZlIG11dGV4LgorIAorICAgICBcdmFsdWUgUmVjdXJzaXZl ICBJbiB0aGlzIG1vZGUsIGEgdGhyZWFkIGNhbiBsb2NrIHRoZSBzYW1lIG11dGV4CisgICAgICAg ICAgICAgICAgICAgICAgIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0ZXggd29uJ3QgYmUgdW5s b2NrZWQKK0BAIC0xNzMsNiArMTc0LDcgQEAgcHVibGljOgorIAorIC8qIQorICAgICBDb25zdHJ1 Y3RzIGEgbmV3IG11dGV4LiBUaGUgbXV0ZXggaXMgY3JlYXRlZCBpbiBhbiB1bmxvY2tlZCBzdGF0 ZS4KKysgICAgXG9ic29sZXRlIFVzZSBRUmVjdXJzaXZlTXV0ZXggdG8gY3JlYXRlIGEgcmVjdXJz aXZlIG11dGV4LgorIAorICAgICBJZiBcYSBtb2RlIGlzIFFNdXRleDo6UmVjdXJzaXZlLCBhIHRo cmVhZCBjYW4gbG9jayB0aGUgc2FtZSBtdXRleAorICAgICBtdWx0aXBsZSB0aW1lcyBhbmQgdGhl IG11dGV4IHdvbid0IGJlIHVubG9ja2VkIHVudGlsIGEKK0BAIC0xOTcsNyArMTk5LDcgQEAgUU11 dGV4OjpRTXV0ZXgoUmVjdXJzaW9uTW9kZSBtb2RlKQorIFFNdXRleDo6flFNdXRleCgpCisgewor ICAgICBRTXV0ZXhEYXRhICpkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsKKy0gICAgaWYgKGlzUmVj dXJzaXZlKCkpIHsKKysgICAgaWYgKFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpKSB7CisgICAg ICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8UVJlY3Vyc2l2ZU11dGV4UHJpdmF0ZSAqPihkKTsKKyAg ICAgfSBlbHNlIGlmIChkKSB7CisgI2lmbmRlZiBRVF9MSU5VWF9GVVRFWAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3FtdXRleC5oCitpbmRleCA3M2M5ZTAwNjYzLi4xYmFlNTczYTAzIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xbXV0ZXguaAorQEAgLTQyLDYgKzQyLDcgQEAKKyAKKyAjaW5jbHVkZSA8 UXRDb3JlL3FnbG9iYWwuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FhdG9taWMuaD4KKysjaW5jbHVk ZSA8UXRDb3JlL3F0c2FuX2ltcGwuaD4KKyAjaW5jbHVkZSA8bmV3PgorIAorICNpZiBfX2hhc19p bmNsdWRlKDxjaHJvbm8+KQorQEAgLTc3LDE5ICs3OCwzNyBAQCBwdWJsaWM6CisgCisgICAgIC8v IEJhc2ljTG9ja2FibGUgY29uY2VwdAorICAgICBpbmxpbmUgdm9pZCBsb2NrKCkgUVRfTVVURVhf TE9DS19OT0VYQ0VQVCB7CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0aGlzLCAwdSk7 CisrCisgICAgICAgICBpZiAoIWZhc3RUcnlMb2NrKCkpCisgICAgICAgICAgICAgbG9ja0ludGVy bmFsKCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdExvY2sodGhpcywgMHUsIDApOwor ICAgICB9CisgCisgICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorICAgICBpbmxpbmUgdm9p ZCB1bmxvY2soKSBub2V4Y2VwdCB7CisgICAgICAgICBRX0FTU0VSVChkX3B0ci5sb2FkUmVsYXhl ZCgpKTsgLy9tdXRleCBtdXN0IGJlIGxvY2tlZAorKworKyAgICAgICAgUXRUc2FuOjptdXRleFBy ZVVubG9jayh0aGlzLCAwdSk7CisrCisgICAgICAgICBpZiAoIWZhc3RUcnlVbmxvY2soKSkKKyAg ICAgICAgICAgICB1bmxvY2tJbnRlcm5hbCgpOworKworKyAgICAgICAgUXRUc2FuOjptdXRleFBv c3RVbmxvY2sodGhpcywgMHUpOworICAgICB9CisgCisgICAgIGJvb2wgdHJ5TG9jaygpIG5vZXhj ZXB0IHsKKy0gICAgICAgIHJldHVybiBmYXN0VHJ5TG9jaygpOworKyAgICAgICAgdW5zaWduZWQg dHNhbkZsYWdzID0gUXRUc2FuOjpUcnlMb2NrOworKyAgICAgICAgUXRUc2FuOjptdXRleFByZUxv Y2sodGhpcywgdHNhbkZsYWdzKTsKKysKKysgICAgICAgIGNvbnN0IGJvb2wgc3VjY2VzcyA9IGZh c3RUcnlMb2NrKCk7CisrCisrICAgICAgICBpZiAoIXN1Y2Nlc3MpCisrICAgICAgICAgICAgdHNh bkZsYWdzIHw9IFF0VHNhbjo6VHJ5TG9ja0ZhaWxlZDsKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQ b3N0TG9jayh0aGlzLCB0c2FuRmxhZ3MsIDApOworKworKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7 CisgICAgIH0KKyAKKyAgICAgLy8gTG9ja2FibGUgY29uY2VwdAorQEAgLTEzNCw4ICsxNTMsMTYg QEAgcHVibGljOgorICNlbHNlCisgICAgIFFNdXRleCgpIHsgZF9wdHIuc3RvcmVSZWxheGVkKG51 bGxwdHIpOyB9CisgI2VuZGlmCisrI2lmIFFUX0RFUFJFQ0FURURfU0lOQ0UoNSwxNSkKKyAgICAg ZW51bSBSZWN1cnNpb25Nb2RlIHsgTm9uUmVjdXJzaXZlLCBSZWN1cnNpdmUgfTsKKysgICAgUVRf REVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2UgUVJlY3Vyc2l2ZU11dGV4IGluc3RlYWQg b2YgYSByZWN1cnNpdmUgUU11dGV4IikKKyAgICAgZXhwbGljaXQgUU11dGV4KFJlY3Vyc2lvbk1v ZGUgbW9kZSk7CisrCisrICAgIFFUX0RFUFJFQ0FURURfVkVSU0lPTl9YKDUsIDE1LCAiVXNlIFFS ZWN1cnNpdmVNdXRleCBpbnN0ZWFkIG9mIGEgcmVjdXJzaXZlIFFNdXRleCIpCisrICAgIGJvb2wg aXNSZWN1cnNpdmUoKSBjb25zdCBub2V4Y2VwdAorKyAgICB7IHJldHVybiBRQmFzaWNNdXRleDo6 aXNSZWN1cnNpdmUoKTsgfQorKyNlbmRpZgorKworICAgICB+UU11dGV4KCk7CisgCisgICAgIC8v IEJhc2ljTG9ja2FibGUgY29uY2VwdAorQEAgLTE2Niw5ICsxOTMsNiBAQCBwdWJsaWM6CisgICAg IH0KKyAjZW5kaWYKKyAKKy0gICAgYm9vbCBpc1JlY3Vyc2l2ZSgpIGNvbnN0IG5vZXhjZXB0Cist ICAgIHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9CistCisgcHJpdmF0ZToK KyAgICAgUV9ESVNBQkxFX0NPUFkoUU11dGV4KQorICAgICBmcmllbmQgY2xhc3MgUU11dGV4TG9j a2VyOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxv Y2suY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKK2lu ZGV4IDhjMjg1MDdkNWEuLjlkZDg1MDMxMTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKK0BAIC0xNTUsNyArMTU1LDcgQEAgUVJlYWRXcml0ZUxv Y2s6OlFSZWFkV3JpdGVMb2NrKFJlY3Vyc2lvbk1vZGUgcmVjdXJzaW9uTW9kZSkKKyAqLworIFFS ZWFkV3JpdGVMb2NrOjp+UVJlYWRXcml0ZUxvY2soKQorIHsKKy0gICAgYXV0byBkID0gZF9wdHIu bG9hZFJlbGF4ZWQoKTsKKysgICAgYXV0byBkID0gZF9wdHIubG9hZEFjcXVpcmUoKTsKKyAgICAg aWYgKGlzVW5jb250ZW5kZWRMb2NrZWQoZCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRUmVhZFdy aXRlTG9jazogZGVzdHJveWluZyBsb2NrZWQgUVJlYWRXcml0ZUxvY2siKTsKKyAgICAgICAgIHJl dHVybjsKK0BAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBRUmVhZFdyaXRlTG9jazo6dW5sb2NrKCkK KyAvKiEgXGludGVybmFsICBIZWxwZXIgZm9yIFFXYWl0Q29uZGl0aW9uOjp3YWl0ICovCisgUVJl YWRXcml0ZUxvY2s6OlN0YXRlRm9yV2FpdENvbmRpdGlvbiBRUmVhZFdyaXRlTG9jazo6c3RhdGVG b3JXYWl0Q29uZGl0aW9uKCkgY29uc3QKKyB7CistICAgIFFSZWFkV3JpdGVMb2NrUHJpdmF0ZSAq ZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7CisrICAgIFFSZWFkV3JpdGVMb2NrUHJpdmF0ZSAqZCA9 IGRfcHRyLmxvYWRBY3F1aXJlKCk7CisgICAgIHN3aXRjaCAocXVpbnRwdHIoZCkgJiBTdGF0ZU1h c2spIHsKKyAgICAgY2FzZSBTdGF0ZUxvY2tlZEZvclJlYWQ6IHJldHVybiBMb2NrZWRGb3JSZWFk OworICAgICBjYXNlIFN0YXRlTG9ja2VkRm9yV3JpdGU6IHJldHVybiBMb2NrZWRGb3JXcml0ZTsK K0BAIC00NTMsNiArNDUzLDcgQEAgUVJlYWRXcml0ZUxvY2s6OlN0YXRlRm9yV2FpdENvbmRpdGlv biBRUmVhZFdyaXRlTG9jazo6c3RhdGVGb3JXYWl0Q29uZGl0aW9uKCkgY28KKyAKKyAgICAgaWYg KCFkKQorICAgICAgICAgcmV0dXJuIFVubG9ja2VkOworKyAgICBjb25zdCBhdXRvIGxvY2sgPSBx dF9zY29wZWRfbG9jayhkLT5tdXRleCk7CisgICAgIGlmIChkLT53cml0ZXJDb3VudCA+IDEpCisg ICAgICAgICByZXR1cm4gUmVjdXJzaXZlbHlMb2NrZWQ7CisgICAgIGVsc2UgaWYgKGQtPndyaXRl ckNvdW50ID09IDEpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2Vt YXBob3JlLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAKK2lu ZGV4IDFkMDFmYzFiMjguLjNlY2RlZTM3NDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3FzZW1hcGhvcmUuY3BwCitAQCAtMzU0LDcgKzM1NCwxMiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJl bGVhc2UoaW50IG4pCisgICAgICAgICBxdWludHB0ciBubiA9IHVuc2lnbmVkKG4pOworICAgICAg ICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpCisgICAgICAgICAgICAgbm4gfD0gcXVpbnQ2NChu bikgPDwgMzI7ICAgIC8vIHRva2VuIGNvdW50IHJlcGxpY2F0ZWQgaW4gaGlnaCB3b3JkCistICAg ICAgICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmZldGNoQW5kQWRkUmVsZWFzZShubik7CisrICAg ICAgICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmxvYWRSZWxheGVkKCk7CisrICAgICAgICBxdWlu dHB0ciBuZXdWYWx1ZTsKKysgICAgICAgIGRvIHsgLy8gbG9vcCBqdXN0IHRvIGVuc3VyZSB0aGUg b3BlcmF0aW9ucyBhcmUgZG9uZSBhdG9taWNhbGx5CisrICAgICAgICAgICAgbmV3VmFsdWUgPSBw cmV2VmFsdWUgKyBubjsKKysgICAgICAgICAgICBuZXdWYWx1ZSAmPSAoZnV0ZXhOZWVkc1dha2VB bGxCaXQgLSAxKTsKKysgICAgICAgIH0gd2hpbGUgKCF1LnRlc3RBbmRTZXRSZWxlYXNlKHByZXZW YWx1ZSwgbmV3VmFsdWUsIHByZXZWYWx1ZSkpOworICAgICAgICAgaWYgKGZ1dGV4TmVlZHNXYWtl KHByZXZWYWx1ZSkpIHsKKyAjaWZkZWYgRlVURVhfT1AKKyAgICAgICAgICAgICBpZiAoZnV0ZXhI YXNXYWl0ZXJDb3VudCkgeworQEAgLTM3Niw3ICszODEsNiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJl bGVhc2UoaW50IG4pCisgICAgICAgICAgICAgICAgIHF1aW50MzIgb3BhcmcgPSAwOworICAgICAg ICAgICAgICAgICBxdWludDMyIGNtcCA9IEZVVEVYX09QX0NNUF9ORTsKKyAgICAgICAgICAgICAg ICAgcXVpbnQzMiBjbXBhcmcgPSAwOworLSAgICAgICAgICAgICAgICB1LmZldGNoQW5kQW5kUmVs ZWFzZShmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworICAgICAgICAgICAgICAgICBmdXRleFdh a2VPcCgqZnV0ZXhMb3czMigmdSksIG4sIElOVF9NQVgsICpmdXRleEhpZ2gzMigmdSksIEZVVEVY X09QKG9wLCBvcGFyZywgY21wLCBjbXBhcmcpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICAgICAgIH0KK0BAIC0zODgsNyArMzkyLDYgQEAgdm9pZCBRU2VtYXBob3JlOjpyZWxl YXNlKGludCBuKQorICAgICAgICAgICAgIC8vICAgIGl0cyBhY3F1aXNpdGlvbiBhbnl3YXksIHNv IGl0IGhhcyB0byB3YWl0OworICAgICAgICAgICAgIC8vIDIpIGl0IGRpZCBub3Qgc2VlIHRoZSBu ZXcgY291bnRlciB2YWx1ZSwgaW4gd2hpY2ggY2FzZSBpdHMKKyAgICAgICAgICAgICAvLyAgICBm dXRleFdhaXQgd2lsbCBmYWlsLgorLSAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRSZWxlYXNlKGZ1 dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisgICAgICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVy Q291bnQpIHsKKyAgICAgICAgICAgICAgICAgZnV0ZXhXYWtlQWxsKCpmdXRleExvdzMyKCZ1KSk7 CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZUFsbCgqZnV0ZXhIaWdoMzIoJnUpKTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAoraW5kZXggYjJkMTYyOGU2ZS4uZjMyZjZmMDQ2 MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKK0BAIC0xNzQsNyArMTc0 LDcgQEAgcHVibGljOgorICAgICBpbnQgcmV0dXJuQ29kZTsKKyAKKyAgICAgdWludCBzdGFja1Np emU7CistICAgIFFUaHJlYWQ6OlByaW9yaXR5IHByaW9yaXR5OworKyAgICBzdGQ6OnVuZGVybHlp bmdfdHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGUgcHJpb3JpdHk7CisgCisgICAgIHN0YXRp YyBRVGhyZWFkICp0aHJlYWRGb3JJZChpbnQgaWQpOworIAorQEAgLTIxMyw2ICsyMTMsMTMgQEAg cHVibGljOgorICAgICAgICAgICAgIFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCktPnBvc3RF dmVudChxX3B0ciwgbmV3IFFFdmVudChRRXZlbnQ6OlF1aXQpKTsKKyAgICAgICAgIH0KKyAgICAg fQorKworKyNpZm5kZWYgUV9PU19JTlRFR1JJVFkKKytwcml2YXRlOgorKyAgICAvLyBVc2VkIGlu IFFUaHJlYWQoUHJpdmF0ZSk6OnN0YXJ0IHRvIGF2b2lkIHJhY3kgYWNjZXNzIHRvIFFPYmplY3Q6 Om9iamVjdE5hbWUsCisrICAgIC8vIHVuc2V0IGFmdGVyd2FyZHMuIE9uIElOVEVHUklUWSB3ZSBz ZXQgdGhlIHRocmVhZCBuYW1lIGJlZm9yZSBzdGFydGluZyBpdC4KKysgICAgUVN0cmluZyBvYmpl Y3ROYW1lOworKyNlbmRpZgorIH07CisgCisgI2Vsc2UgLy8gUVRfQ09ORklHKHRocmVhZCkKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKK2luZGV4IDU2YThlMGEw MzguLjYxMDExN2E2NDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0 aHJlYWRfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91 bml4LmNwcAorQEAgLTE2OSw4ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBzZXRfdGhyZWFkX2RhdGEo UVRocmVhZERhdGEgKmRhdGEpCisgCisgc3RhdGljIHZvaWQgY2xlYXJfdGhyZWFkX2RhdGEoKQor IHsKKy0gICAgY3VycmVudFRocmVhZERhdGEgPSBudWxscHRyOworLSAgICBwdGhyZWFkX3NldHNw ZWNpZmljKGN1cnJlbnRfdGhyZWFkX2RhdGFfa2V5LCBudWxscHRyKTsKKysgICAgc2V0X3RocmVh ZF9kYXRhKG51bGxwdHIpOworIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0BAIC0yOTYs NyArMjk1LDcgQEAgdm9pZCAqUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaWQgKmFyZykKKyAgICAg ICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZ0aHItPmRfZnVuYygpLT5tdXRleCk7CisgCisg ICAgICAgICAgICAgLy8gZG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGhyZWFkIHByaW9yaXR5Pwor LSAgICAgICAgICAgIGlmIChpbnQodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkpICYgVGhyZWFkUHJp b3JpdHlSZXNldEZsYWcpIHsKKysgICAgICAgICAgICBpZiAodGhyLT5kX2Z1bmMoKS0+cHJpb3Jp dHkgJiBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZykgeworICAgICAgICAgICAgICAgICB0aHItPmRf ZnVuYygpLT5zZXRQcmlvcml0eShRVGhyZWFkOjpQcmlvcml0eSh0aHItPmRfZnVuYygpLT5wcmlv cml0eSAmIH5UaHJlYWRQcmlvcml0eVJlc2V0RmxhZykpOworICAgICAgICAgICAgIH0KKyAKK0BA IC0zMTYsMTAgKzMxNSwxMCBAQCB2b2lkICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJn KQorICAgICAgICAgICAgIC8vIFNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLiBX ZSBjYW4gb25seSBkbyB0aGlzCisgICAgICAgICAgICAgLy8gd2hlbiB0aGUgdGhyZWFkIGlzIHN0 YXJ0aW5nLCBhcyB3ZSBkb24ndCBoYXZlIGEgY3Jvc3MKKyAgICAgICAgICAgICAvLyBwbGF0Zm9y bSB3YXkgb2Ygc2V0dGluZyB0aGUgbmFtZSBvZiBhbiBhcmJpdHJhcnkgdGhyZWFkLgorLSAgICAg ICAgICAgIGlmIChRX0xJS0VMWSh0aHItPm9iamVjdE5hbWUoKS5pc0VtcHR5KCkpKQorKyAgICAg ICAgICAgIGlmIChRX0xJS0VMWSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlzRW1wdHkoKSkp CisgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHRoci0+bWV0YU9iamVjdCgp LT5jbGFzc05hbWUoKSk7CisgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBzZXRD dXJyZW50VGhyZWFkTmFtZSh0aHItPm9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpKTsKKysgICAg ICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUoc3RkOjpleGNoYW5nZSh0aHItPmRfZnVu YygpLT5vYmplY3ROYW1lLCB7fSkudG9Mb2NhbDhCaXQoKSk7CisgICAgICAgICB9CisgI2VuZGlm CisgCitAQCAtNjcxLDcgKzY3MCw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJp b3JpdHkpCisgICAgICAgICAgICAgICAgIC8vIGNvdWxkIG5vdCBzZXQgc2NoZWR1bGluZyBoaW50 cywgZmFsbGJhY2sgdG8gaW5oZXJpdGluZyB0aGVtCisgICAgICAgICAgICAgICAgIC8vIHdlJ2xs IHRyeSBhZ2FpbiBmcm9tIGluc2lkZSB0aGUgdGhyZWFkCisgICAgICAgICAgICAgICAgIHB0aHJl YWRfYXR0cl9zZXRpbmhlcml0c2NoZWQoJmF0dHIsIFBUSFJFQURfSU5IRVJJVF9TQ0hFRCk7Cist ICAgICAgICAgICAgICAgIGQtPnByaW9yaXR5ID0gUHJpb3JpdHkocHJpb3JpdHkgfCBUaHJlYWRQ cmlvcml0eVJlc2V0RmxhZyk7CisrICAgICAgICAgICAgICAgIGQtPnByaW9yaXR5ID0gc3RhdGlj X2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UVRocmVhZDo6UHJpb3JpdHk+Ojp0eXBlPihwcmlv cml0eSkgfCBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZzsKKyAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICB9CitAQCAtNzAyLDcgKzcwMSwxMCBAQCB2b2lkIFFUaHJl YWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICAgICAgcHRocmVhZF9hdHRyX3NldHRo cmVhZG5hbWUoJmF0dHIsIG1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpOworICAgICBlbHNlCisg ICAgICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFkbmFtZSgmYXR0ciwgb2JqZWN0TmFtZSgpLnRv TG9jYWw4Qml0KCkpOworKyNlbHNlCisrICAgIGQtPm9iamVjdE5hbWUgPSBvYmplY3ROYW1lKCk7 CisgI2VuZGlmCisrCisgICAgIHB0aHJlYWRfdCB0aHJlYWRJZDsKKyAgICAgaW50IGNvZGUgPSBw dGhyZWFkX2NyZWF0ZSgmdGhyZWFkSWQsICZhdHRyLCBRVGhyZWFkUHJpdmF0ZTo6c3RhcnQsIHRo aXMpOworICAgICBpZiAoY29kZSA9PSBFUEVSTSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xdGhyZWFkX3dpbi5jcHAKK2luZGV4IGJjNzBlMzE3OGEuLjRlNzY5NzI0OTggMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKK0BAIC0zOTQsMTAgKzM5NCw5 IEBAIHVuc2lnbmVkIGludCBfX3N0ZGNhbGwgUVRfRU5TVVJFX1NUQUNLX0FMSUdORURfRk9SX1NT RSBRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pCisgCisgI2lmICFkZWZpbmVkKFFUX05PX0RFQlVH KSAmJiBkZWZpbmVkKFFfQ0NfTVNWQykgJiYgIWRlZmluZWQoUV9PU19XSU5SVCkKKyAgICAgLy8g c2V0cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCistICAgIFFCeXRlQXJyYXkgb2Jq ZWN0TmFtZSA9IHRoci0+b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCk7CistICAgIHF0X3NldF90 aHJlYWRfbmFtZShIQU5ETEUoLTEpLAorLSAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0TmFt ZS5pc0VtcHR5KCkgPworLSAgICAgICAgICAgICAgICAgICAgICAgdGhyLT5tZXRhT2JqZWN0KCkt PmNsYXNzTmFtZSgpIDogb2JqZWN0TmFtZS5jb25zdERhdGEoKSk7CisrICAgIHF0X3NldF90aHJl YWRfbmFtZShIQU5ETEUoLTEpLCB0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlzRW1wdHkoKQor KyAgICAgICAgICAgICAgICAgICAgICAgID8gdGhyLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgp CisrICAgICAgICAgICAgICAgICAgICAgICAgOiBzdGQ6OmV4Y2hhbmdlKHRoci0+ZF9mdW5jKCkt Pm9iamVjdE5hbWUsIHt9KS50b0xvY2FsOEJpdCgpLmNvbnN0RGF0YSgpKTsKKyAjZW5kaWYKKyAK KyAgICAgZW1pdCB0aHItPnN0YXJ0ZWQoUVRocmVhZDo6UVByaXZhdGVTaWduYWwoKSk7CitAQCAt NTAzLDYgKzUwMiw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisg ICAgIGlmIChkLT5ydW5uaW5nKQorICAgICAgICAgcmV0dXJuOworIAorKyAgICBkLT5vYmplY3RO YW1lID0gb2JqZWN0TmFtZSgpOworICAgICBkLT5ydW5uaW5nID0gdHJ1ZTsKKyAgICAgZC0+Zmlu aXNoZWQgPSBmYWxzZTsKKyAgICAgZC0+ZXhpdGVkID0gZmFsc2U7CitAQCAtNTQ4LDcgKzU0OCw3 IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgCisgICAgIGludCBw cmlvOworICAgICBkLT5wcmlvcml0eSA9IHByaW9yaXR5OworLSAgICBzd2l0Y2ggKGQtPnByaW9y aXR5KSB7CisrICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKKyAgICAgY2FzZSBJZGxlUHJpb3JpdHk6 CisgICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAgICAgICBicmVhazsK K0BAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBRVGhyZWFkUHJpdmF0ZTo6c2V0UHJpb3JpdHkoUVRo cmVhZDo6UHJpb3JpdHkgdGhyZWFkUHJpb3JpdHkpCisgCisgICAgIGludCBwcmlvOworICAgICBw cmlvcml0eSA9IHRocmVhZFByaW9yaXR5OworLSAgICBzd2l0Y2ggKHByaW9yaXR5KSB7CisrICAg IHN3aXRjaCAodGhyZWFkUHJpb3JpdHkpIHsKKyAgICAgY2FzZSBRVGhyZWFkOjpJZGxlUHJpb3Jp dHk6CisgICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAgICAgICBicmVh azsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwuaCBi L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNTgwYTczOGI5MQorLS0tIC9kZXYvbnVsbAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK0BAIC0wLDAgKzEsMTE1IEBA CisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAxNyBJbnRl bCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgS2xhcsOkbHZkYWxlbnMgRGF0 YWtvbnN1bHQgQUIsIGEgS0RBQiBHcm91cCBjb21wYW55LCBpbmZvQGtkYWIuY29tLCBhdXRob3Ig R2l1c2VwcGUgRCdBbmdlbG8gPGdpdXNlcHBlLmRhbmdlbG9Aa2RhYi5jb20+CisrKiogQ29udGFj dDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRf QkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExp Y2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlz IGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3Jl ZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwg aW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4g YWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0 ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25k aXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3Jt IGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUg bWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQ TDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJl dmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdp bGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisr KioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZl bHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoq IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0 aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVy IHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhl IGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3Vu ZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNF LkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNl IHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VO U0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUVRTQU5fSU1QTF9I CisrI2RlZmluZSBRVFNBTl9JTVBMX0gKKysKKysjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4K KysKKysjaWYgKF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikgfHwgZGVmaW5lZChfX1NB TklUSVpFX1RIUkVBRF9fKSkgJiYgX19oYXNfaW5jbHVkZSg8c2FuaXRpemVyL3RzYW5faW50ZXJm YWNlLmg+KQorKyMgIGRlZmluZSBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrIyAgaW5jbHVkZSA8 c2FuaXRpemVyL3RzYW5faW50ZXJmYWNlLmg+CisrI2VuZGlmCisrCisrUVRfQkVHSU5fTkFNRVNQ QUNFCisrCisrbmFtZXNwYWNlIFF0VHNhbiB7CisrI2lmZGVmIFFUX0JVSUxESU5HX1VOREVSX1RT QU4KKytpbmxpbmUgdm9pZCBmdXRleEFjcXVpcmUodm9pZCAqYWRkciwgdm9pZCAqYWRkcjIgPSBu dWxscHRyKQorK3sKKysgICAgLy8gQSBmdXRleCBjYWxsIGVuc3VyZXMgdG90YWwgb3JkZXJpbmcg b24gdGhlIGZ1dGV4IHdvcmRzCisrICAgIC8vIChpbiBlaXRoZXIgc3VjY2VzcyBvciBmYWlsdXJl IG9mIHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKysgICAgLy8gYXMgVFNB TiBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsIChvciBlcXVpdmFsZW50 KS4KKysgICAgOjpfX3RzYW5fYWNxdWlyZShhZGRyKTsKKysgICAgaWYgKGFkZHIyKQorKyAgICAg ICAgOjpfX3RzYW5fYWNxdWlyZShhZGRyMik7CisrfQorKworK2lubGluZSB2b2lkIGZ1dGV4UmVs ZWFzZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51bGxwdHIpCisreworKyAgICBpZiAoYWRk cjIpCisrICAgICAgICA6Ol9fdHNhbl9yZWxlYXNlKGFkZHIyKTsKKysgICAgOjpfX3RzYW5fcmVs ZWFzZShhZGRyKTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQcmVMb2NrKHZvaWQgKmFkZHIs IHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcHJlX2xvY2soYWRkciwg ZmxhZ3MpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFBvc3RMb2NrKHZvaWQgKmFkZHIsIHVu c2lnbmVkIGZsYWdzLCBpbnQgcmVjdXJzaW9uKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcG9z dF9sb2NrKGFkZHIsIGZsYWdzLCByZWN1cnNpb24pOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRl eFByZVVubG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2Fu X211dGV4X3ByZV91bmxvY2soYWRkciwgZmxhZ3MpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRl eFBvc3RVbmxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAgICA6Ol9fdHNh bl9tdXRleF9wb3N0X3VubG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2VudW0gOiB1bnNpZ25l ZCB7CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQgPSA6Ol9fdHNhbl9tdXRleF93cml0ZV9yZWVu dHJhbnQsCisrICAgIFRyeUxvY2sgPSA6Ol9fdHNhbl9tdXRleF90cnlfbG9jaywKKysgICAgVHJ5 TG9ja0ZhaWxlZCA9IDo6X190c2FuX211dGV4X3RyeV9sb2NrX2ZhaWxlZCwKKyt9OworKyNlbHNl CisraW5saW5lIHZvaWQgZnV0ZXhBY3F1aXJlKHZvaWQgKiwgdm9pZCAqID0gbnVsbHB0cikge30K KytpbmxpbmUgdm9pZCBmdXRleFJlbGVhc2Uodm9pZCAqLCB2b2lkICogPSBudWxscHRyKSB7fQor KworK2VudW0gOiB1bnNpZ25lZCB7CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQsCisrICAgIFRy eUxvY2ssCisrICAgIFRyeUxvY2tGYWlsZWQsCisrfTsKKytpbmxpbmUgdm9pZCBtdXRleFByZUxv Y2sodm9pZCAqLCB1bnNpZ25lZCkge30KKytpbmxpbmUgdm9pZCBtdXRleFBvc3RMb2NrKHZvaWQg KiwgdW5zaWduZWQsIGludCkge30KKytpbmxpbmUgdm9pZCBtdXRleFByZVVubG9jayh2b2lkICos IHVuc2lnbmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4UG9zdFVubG9jayh2b2lkICosIHVuc2ln bmVkKSB7fQorKyNlbmRpZiAvLyBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrfSAvLyBuYW1lc3Bh Y2UgUXRUc2FuCisrCisrUVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRpZiAvLyBRVFNBTl9JTVBM X0gKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9u X3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4 LmNwcAoraW5kZXggODhiMDU4ZjQxMC4uMGYxZGE0ZGM5YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKK0BAIC0yMTMsNyArMjEz LDcgQEAgYm9vbCBRV2FpdENvbmRpdGlvbjo6d2FpdChRTXV0ZXggKm11dGV4LCBRRGVhZGxpbmVU aW1lciBkZWFkbGluZSkKKyB7CisgICAgIGlmICghIG11dGV4KQorICAgICAgICAgcmV0dXJuIGZh bHNlOworLSAgICBpZiAobXV0ZXgtPmlzUmVjdXJzaXZlKCkpIHsKKysgICAgaWYgKHN0YXRpY19j YXN0PFFCYXNpY011dGV4ICo+KG11dGV4KS0+aXNSZWN1cnNpdmUoKSkgeworICAgICAgICAgcVdh cm5pbmcoIlFXYWl0Q29uZGl0aW9uOiBjYW5ub3Qgd2FpdCBvbiByZWN1cnNpdmUgbXV0ZXhlcyIp OworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3Fk YXRldGltZS5jcHAKK2luZGV4IGVjMTI1NjllM2YuLjJjMGIwOTgwNzkgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNpZiBRVF9DT05G SUcoZGF0ZXRpbWVwYXJzZXIpCisgI2luY2x1ZGUgInByaXZhdGUvcWRhdGV0aW1lcGFyc2VyX3Au aCIKKyAjZW5kaWYKKysjaW5jbHVkZSA8cHJpdmF0ZS9xbnVtZXJpY19wLmg+CisgCisgI2luY2x1 ZGUgInFkYXRhc3RyZWFtLmgiCisgI2luY2x1ZGUgInFzZXQuaCIKK0BAIC0xNDI5LDkgKzE0MzAs MTEgQEAgUURhdGUgUURhdGU6OmFkZERheXMocWludDY0IG5kYXlzKSBjb25zdAorICAgICBpZiAo aXNOdWxsKCkpCisgICAgICAgICByZXR1cm4gUURhdGUoKTsKKyAKKy0gICAgLy8gRHVlIHRvIGxp bWl0cyBvbiBtaW5KZCgpIGFuZCBtYXhKZCgpIHdlIGtub3cgdGhhdCBhbnkgb3ZlcmZsb3cKKy0g ICAgLy8gd2lsbCBiZSBpbnZhbGlkIGFuZCBjYXVnaHQgYnkgZnJvbUp1bGlhbkRheSgpLgorLSAg ICByZXR1cm4gZnJvbUp1bGlhbkRheShqZCArIG5kYXlzKTsKKysgICAgcWludDY0IHI7CisrICAg IGlmIChRX1VOTElLRUxZKGFkZF9vdmVyZmxvdyhqZCwgbmRheXMsICZyKSkpCisrICAgICAgICBy ZXR1cm4gUURhdGUoKTsKKysgICAgZWxzZQorKyAgICAgICAgcmV0dXJuIGZyb21KdWxpYW5EYXko cik7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0 aW1lem9uZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCitpbmRl eCAwMzA5ZTQzZTUyLi4zZDQ1MTY5NmExIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L3RpbWUvcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6 b25lLmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoq IENvcHlyaWdodCAoQykgMjAxMyBKb2huIExheXQgPGpsYXl0QGtkZS5vcmc+CisrKiogQ29weXJp Z2h0IChDKSAyMDIwIEpvaG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKyAqKiBDb250YWN0OiBodHRw czovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC05NzUsOSArOTc1LDE1IEBA IFFMaXN0PFFCeXRlQXJyYXk+IFFUaW1lWm9uZTo6d2luZG93c0lkVG9JYW5hSWRzKGNvbnN0IFFC eXRlQXJyYXkgJndpbmRvd3NJZCwKKyB9CisgCisgI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCisr Ly8gSW52YWxpZCwgYXMgYW4gSUFOQSBJRDogdG9vIGxvbmcsIHN0YXJ0cyB3aXRoIC0gYW5kIGhh cyBvdGhlciBpbnZhbGlkIGNoYXJhY3RlcnMgaW4gaXQKKytzdGF0aWMgaW5saW5lIFFTdHJpbmcg aW52YWxpZElkKCkgeyByZXR1cm4gUVN0cmluZ0xpdGVyYWwoIi1ObyBUaW1lIFpvbmUgU3BlY2lm aWVkISIpOyB9CisrCisgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJmRzLCBj b25zdCBRVGltZVpvbmUgJnR6KQorIHsKKy0gICAgdHouZC0+c2VyaWFsaXplKGRzKTsKKysgICAg aWYgKHR6LmlzVmFsaWQoKSkKKysgICAgICAgIHR6LmQtPnNlcmlhbGl6ZShkcyk7CisrICAgIGVs c2UKKysgICAgICAgIGRzIDw8IGludmFsaWRJZCgpOworICAgICByZXR1cm4gZHM7CisgfQorIAor QEAgLTk4NSw3ICs5OTEsOSBAQCBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0cmVhbSAm ZHMsIFFUaW1lWm9uZSAmdHopCisgeworICAgICBRU3RyaW5nIGlhbmFJZDsKKyAgICAgZHMgPj4g aWFuYUlkOworLSAgICBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNldEZyb21VdGMi KSkgeworKyAgICBpZiAoaWFuYUlkID09IGludmFsaWRJZCgpKSB7CisrICAgICAgICB0eiA9IFFU aW1lWm9uZSgpOworKyAgICB9IGVsc2UgaWYgKGlhbmFJZCA9PSBRTGF0aW4xU3RyaW5nKCJPZmZz ZXRGcm9tVXRjIikpIHsKKyAgICAgICAgIGludCB1dGNPZmZzZXQ7CisgICAgICAgICBRU3RyaW5n IG5hbWU7CisgICAgICAgICBRU3RyaW5nIGFiYnJldmlhdGlvbjsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcCBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwCitpbmRleCBiMTYxMWQ3ZGRiLi5h N2E2YTcyY2NmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25l cHJpdmF0ZV90ei5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXBy aXZhdGVfdHouY3BwCitAQCAtNDIsNiArNDIsNyBAQAorICNpbmNsdWRlICJxdGltZXpvbmUuaCIK KyAjaW5jbHVkZSAicXRpbWV6b25lcHJpdmF0ZV9wLmgiCisgI2luY2x1ZGUgInByaXZhdGUvcWxv Y2FsZV90b29sc19wLmgiCisrI2luY2x1ZGUgInByaXZhdGUvcWxvY2tpbmdfcC5oIgorIAorICNp bmNsdWRlIDxRdENvcmUvUURhdGFTdHJlYW0+CisgI2luY2x1ZGUgPFF0Q29yZS9RRGF0ZVRpbWU+ CitAQCAtNjIsNiArNjMsMTAgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKysjaWYgUVRf Q09ORklHKGljdSkKKytzdGF0aWMgUUJhc2ljTXV0ZXggc19pY3VfbXV0ZXg7CisrI2VuZGlmCisr CisgLyoKKyAgICAgUHJpdmF0ZQorIAorQEAgLTY3MCw2ICs2NzUsOSBAQCBRVHpUaW1lWm9uZVBy aXZhdGU6On5RVHpUaW1lWm9uZVByaXZhdGUoKQorIAorIFFUelRpbWVab25lUHJpdmF0ZSAqUVR6 VGltZVpvbmVQcml2YXRlOjpjbG9uZSgpIGNvbnN0CisgeworKyNpZiBRVF9DT05GSUcoaWN1KQor KyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29wZWRfbG9jayhzX2ljdV9tdXRleCk7CisrI2Vu ZGlmCisgICAgIHJldHVybiBuZXcgUVR6VGltZVpvbmVQcml2YXRlKCp0aGlzKTsKKyB9CisgCitA QCAtOTEzLDEyICs5MjEsMTQgQEAgUVN0cmluZyBRVHpUaW1lWm9uZVByaXZhdGU6OmRpc3BsYXlO YW1lKHFpbnQ2NCBhdE1TZWNzU2luY2VFcG9jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25zdAorIHsKKyAjaWYgUVRf Q09ORklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xvY2soc19pY3VfbXV0ZXgp OworICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcgUUljdVRpbWVab25lUHJp dmF0ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBub3QgbWF0Y2ggaWYgdHJh biB0aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAgIC8vIFRPRE8gU29tZSB2 YWxpZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNlIHRyYW5zbGF0aW9uIHRh YmxlPworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybiBtX2ljdS0+ ZGlzcGxheU5hbWUoYXRNU2Vjc1NpbmNlRXBvY2gsIG5hbWVUeXBlLCBsb2NhbGUpOworKyAgICBs b2NrLnVubG9jaygpOworICNlbHNlCisgICAgIFFfVU5VU0VEKG5hbWVUeXBlKQorICAgICBRX1VO VVNFRChsb2NhbGUpCitAQCAtOTMyLDEyICs5NDIsMTQgQEAgUVN0cmluZyBRVHpUaW1lWm9uZVBy aXZhdGU6OmRpc3BsYXlOYW1lKFFUaW1lWm9uZTo6VGltZVR5cGUgdGltZVR5cGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFMb2NhbGUgJmxvY2FsZSkg Y29uc3QKKyB7CisgI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGF1dG8gbG9jayA9IHF0X3VuaXF1 ZV9sb2NrKHNfaWN1X211dGV4KTsKKyAgICAgaWYgKCFtX2ljdSkKKyAgICAgICAgIG1faWN1ID0g bmV3IFFJY3VUaW1lWm9uZVByaXZhdGUobV9pZCk7CisgICAgIC8vIFRPRE8gc21hbGwgcmlzayBt YXkgbm90IG1hdGNoIGlmIHRyYW4gdGltZXMgZGlmZmVyIGR1ZSB0byBvdXRkYXRlZCBmaWxlcwor ICAgICAvLyBUT0RPIFNvbWUgdmFsaWQgVFogbmFtZXMgYXJlIG5vdCB2YWxpZCBJQ1UgbmFtZXMs IHVzZSB0cmFuc2xhdGlvbiB0YWJsZT8KKyAgICAgaWYgKG1faWN1LT5pc1ZhbGlkKCkpCisgICAg ICAgICByZXR1cm4gbV9pY3UtPmRpc3BsYXlOYW1lKHRpbWVUeXBlLCBuYW1lVHlwZSwgbG9jYWxl KTsKKysgICAgbG9jay51bmxvY2soKTsKKyAjZWxzZQorICAgICBRX1VOVVNFRCh0aW1lVHlwZSkK KyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L3Rvb2xzL3FhcnJheWRhdGEuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRh LmgKK2luZGV4IGRjZDk1OTI0YzEuLmQwMTczOWU3ZTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9v bHMvcWFycmF5ZGF0YS5oCitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRlIDxRdENvcmUv cXJlZmNvdW50Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxjc3RkaW50Pgor IAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTU4LDE0ICs1OSwxNCBAQCBzdHJ1Y3QgUV9D T1JFX0VYUE9SVCBRQXJyYXlEYXRhCisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUKHNpemUgPT0g MAorICAgICAgICAgICAgICAgICB8fCBvZmZzZXQgPCAwIHx8IHNpemVfdChvZmZzZXQpID49IHNp emVvZihRQXJyYXlEYXRhKSk7CistICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy ICo+KHRoaXMpICsgb2Zmc2V0OworKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p ZCAqPiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgb2Zmc2V0KTsKKyAgICAg fQorIAorICAgICBjb25zdCB2b2lkICpkYXRhKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9B U1NFUlQoc2l6ZSA9PSAwCisgICAgICAgICAgICAgICAgIHx8IG9mZnNldCA8IDAgfHwgc2l6ZV90 KG9mZnNldCkgPj0gc2l6ZW9mKFFBcnJheURhdGEpKTsKKy0gICAgICAgIHJldHVybiByZWludGVy cHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGhpcykgKyBvZmZzZXQ7CisrICAgICAgICByZXR1cm4g cmVpbnRlcnByZXRfY2FzdDx2b2lkICo+IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhp cykgKyBvZmZzZXQpOworICAgICB9CisgCisgICAgIC8vIFRoaXMgcmVmZXJzIHRvIGFycmF5IGRh dGEgbXV0YWJpbGl0eSwgbm90ICJoZWFkZXIgZGF0YSIgcmVwcmVzZW50ZWQgYnkKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaCBiL3F0YmFzZS9zcmMv Y29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitpbmRleCA1YmEyM2IzNDRiLi45OTc0MTAyMTM2 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitAQCAtMTYxLDcgKzE2 MSw3IEBAIGNsYXNzIFFGcmVlTGlzdAorICAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAg ICAgICAgICB4IC09IHNpemU7CisgICAgICAgICB9CistICAgICAgICBRX0FTU0VSVChmYWxzZSk7 CisrICAgICAgICBRX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0K KyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIu aCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCitpbmRleCBkNDNi ODZiYTUxLi4yODQzZjJiMDQzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xz L3F2ZXJzaW9ubnVtYmVyLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lv bm51bWJlci5oCitAQCAtMjczLDEwICsyNzMsMTAgQEAgcHVibGljOgorIAorICAgICBRX1JFUVVJ UkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIFFTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAjaWYg UVRfU1RSSU5HVklFV19MRVZFTCA8IDIKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VY UE9SVCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmlu Zyhjb25zdCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKysg ICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1iZXIg ZnJvbVN0cmluZyhjb25zdCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxs cHRyKTsKKyAjZW5kaWYKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0 aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRTGF0aW4x U3RyaW5nIHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworLSAgICBRX1JFUVVJ UkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVy c2lvbk51bWJlciBmcm9tU3RyaW5nKFFTdHJpbmdWaWV3IHN0cmluZywgaW50ICpzdWZmaXhJbmRl eCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRp YyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJpbmcgc3RyaW5nLCBpbnQgKnN1 ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBP UlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUVN0cmluZ1ZpZXcgc3RyaW5nLCBp bnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisgCisgcHJpdmF0ZToKKyAjaWZuZGVmIFFUX05P X0RBVEFTVFJFQU0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9y LmNwcCBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCitpbmRleCA1YjY2Y2U5 NzFiLi4yOGEzYjBmZmVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdy YXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCitAQCAt MTEzNSw3ICsxMTM1LDEzIEBAIHZvaWQgUURCdXNDb25uZWN0aW9uUHJpdmF0ZTo6Y2xvc2VDb25u ZWN0aW9uKCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBxRGVsZXRlQWxsKHBlbmRpbmdD YWxscyk7CisrICAgIGZvciAoYXV0byBpdCA9IHBlbmRpbmdDYWxscy5iZWdpbigpOyBpdCAhPSBw ZW5kaW5nQ2FsbHMuZW5kKCk7ICsraXQpIHsKKysgICAgICAgIGF1dG8gY2FsbCA9ICppdDsKKysg ICAgICAgIGlmICghY2FsbC0+cmVmLmRlcmVmKCkpIHsKKysgICAgICAgICAgICBkZWxldGUgY2Fs bDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBwZW5kaW5nQ2FsbHMuY2xlYXIoKTsKKyAKKyAg ICAgLy8gRGlzY29ubmVjdCBhbGwgc2lnbmFscyBmcm9tIHNpZ25hbCBob29rcyBhbmQgZnJvbSB0 aGUgb2JqZWN0IHRyZWUgdG8KKyAgICAgLy8gYXZvaWQgUU9iamVjdDo6ZGVzdHJveWVkIGJlaW5n IHNlbnQgdG8gZGJ1cyBkYWVtb24gdGhyZWFkIHdoaWNoIGhhcworQEAgLTI1ODQsNiArMjU5MCwx MSBAQCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpmaW5kTWV0YU9iamVjdChjb25zdCBRU3RyaW5n ICZzZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZwYQorICAgICAgICAgaWYgKG1vKQorICAgICAgICAg ICAgIHJldHVybiBtbzsKKyAgICAgfQorKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpIHsKKysgICAg ICAgIGVycm9yID0gUURCdXNFcnJvcihRREJ1c0Vycm9yOjpJbnZhbGlkT2JqZWN0UGF0aCwgUUxh dGluMVN0cmluZygiT2JqZWN0IHBhdGggY2Fubm90IGJlIGVtcHR5IikpOworKyAgICAgICAgbGFz dEVycm9yID0gZXJyb3I7CisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKysgICAgfQorIAorICAg ICAvLyBpbnRyb3NwZWN0IHRoZSB0YXJnZXQgb2JqZWN0CisgICAgIFFEQnVzTWVzc2FnZSBtc2cg PSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoc2VydmljZSwgcGF0aCwKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcCBiL3F0YmFzZS9zcmMvZGJ1 cy9xZGJ1c21ldGFvYmplY3QuY3BwCitpbmRleCA1MjY1NTY4ZjQyLi43ZTlmMGYxYWNjIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCitAQCAtMjEwLDYgKzIxMCw5IEBAIFFEQnVz TWV0YU9iamVjdEdlbmVyYXRvcjo6ZmluZFR5cGUoY29uc3QgUUJ5dGVBcnJheSAmc2lnbmF0dXJl LAorICAgICAgICAgfSBlbHNlIGlmIChzaWduYXR1cmUgPT0gImF7c3N9IikgeworICAgICAgICAg ICAgIHJlc3VsdC5uYW1lID0gIlFNYXA8UVN0cmluZyxRU3RyaW5nPiI7CisgICAgICAgICAgICAg dHlwZSA9IHFNZXRhVHlwZUlkPFFNYXA8UVN0cmluZywgUVN0cmluZz4gPigpOworKyAgICAgICAg fSBlbHNlIGlmIChzaWduYXR1cmUgPT0gImFheSIpIHsKKysgICAgICAgICAgICByZXN1bHQubmFt ZSA9ICJRQnl0ZUFycmF5TGlzdCI7CisrICAgICAgICAgICAgdHlwZSA9IHFNZXRhVHlwZUlkPFFC eXRlQXJyYXlMaXN0PigpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICByZXN1bHQu bmFtZSA9ICJ7RC1CdXMgdHlwZSBcIiIgKyBzaWduYXR1cmUgKyAiXCJ9IjsKKyAgICAgICAgICAg ICB0eXBlID0gcmVnaXN0ZXJDb21wbGV4REJ1c1R5cGUocmVzdWx0Lm5hbWUpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwIGIvcXRiYXNlL3Ny Yy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKK2luZGV4IGQ3MDViZmNjYjUuLjBjYWYz YzgwOGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxl LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKK0BA IC01NCw2ICs1NCw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xZGVidWcuaD4KKyAjaW5jbHVkZSA8 UXRDb3JlL3Fsb2dnaW5nY2F0ZWdvcnkuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FtZXRhb2JqZWN0 Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FtZXRhb2JqZWN0X3AuaD4KKyAjaW5jbHVk ZSA8UXRDb3JlL3FoYXNoLmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcWZhY3Rvcnlsb2FkZXJfcC5o PgorIAorQEAgLTY4MSw2ICs2ODIsMjUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3Np YmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9iamVjdCAqb2JqZWN0KQorICAgICAvLyBD cmVhdGUgYSBRQWNjZXNzaWJsZUludGVyZmFjZSBmb3IgdGhlIG9iamVjdCBjbGFzcy4gU3RhcnQg YnkgdGhlIG1vc3QKKyAgICAgLy8gZGVyaXZlZCBjbGFzcyBhbmQgd2FsayB1cCB0aGUgY2xhc3Mg aGllcmFyY2h5LgorICAgICBjb25zdCBRTWV0YU9iamVjdCAqbW8gPSBvYmplY3QtPm1ldGFPYmpl Y3QoKTsKKysgICAgY29uc3QgYXV0byAqb2JqZWN0UHJpdiA9IFFPYmplY3RQcml2YXRlOjpnZXQo b2JqZWN0KTsKKysgICAgLyoKKysgICAgIFdlIGRvIG5vdCB3YW50IHRvIGNhY2hlIGVhY2ggYW5k IGV2ZXJ5IFFNTCBtZXRhb2JqZWN0IChCdXR0b25fUU1MVFlQRV8xMjQsCisrICAgICBCdXR0b25f UU1MVFlQRV8xMjUsIGV0Yy4pLiBUaG9zZSBkeW5hbWljIG1ldGFvYmplY3RzIHNob3VsZG4ndCBo YXZlIGFuCisrICAgICBhY2Nlc3NpYmxlIGludGVyZmFjZSBpbiBhbnkgY2FzZS4gSW5zdGVhZCwg d2Ugc3RhcnQgdGhlIHdob2xlIGNoZWNraW5nCisrICAgICB3aXRoIHRoZSBmaXJzdCBub24tZHlu YW1pYyBtZXRhLW9iamVjdC4gVG8gYXZvaWQgcG90ZW50aWFsIHJlZ3Jlc3Npb25zCisrICAgICBp biBvdGhlciBhcmVhcyBvZiBRdCB0aGF0IGFsc28gdXNlIGR5bmFtaWMgbWV0YW9iamVjdHMsIHdl IG9ubHkgZG8gdGhpcworKyAgICAgZm9yIG9iamVjdHMgdGhhdCBhcmUgUU1MLXJlbGF0ZWQgKGFw cHJveGltYXRlZCBieSBjaGVja2luZyB3aGV0aGVyIHRoZXkKKysgICAgIGhhdmUgZGRhdGEgc2V0 KS4KKysgICAgKi8KKysgICAgY29uc3QgYm9vbCBxbWxSZWxhdGVkID0gIW9iamVjdFByaXYtPmlz RGVsZXRpbmdDaGlsZHJlbiAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RQ cml2LT5kZWNsYXJhdGl2ZURhdGE7CisrICAgIHdoaWxlIChxbWxSZWxhdGVkICYmIG1vKSB7Cisr ICAgICAgICBhdXRvIG1vcCA9IFFNZXRhT2JqZWN0UHJpdmF0ZTo6Z2V0KG1vKTsKKysgICAgICAg IGlmICghbW9wIHx8ICEobW9wLT5mbGFncyAmIER5bmFtaWNNZXRhT2JqZWN0KSkKKysgICAgICAg ICAgICBicmVhazsKKysKKysgICAgICAgIG1vID0gbW8tPnN1cGVyQ2xhc3MoKTsKKysgICAgfTsK KyAgICAgd2hpbGUgKG1vKSB7CisgICAgICAgICBjb25zdCBRU3RyaW5nIGNuID0gUUxhdGluMVN0 cmluZyhtby0+Y2xhc3NOYW1lKCkpOworIAorQEAgLTY5NiwxNCArNzE2LDE1IEBAIFFBY2Nlc3Np YmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKFFPYmpl Y3QgKm9iamVjdCkKKyAgICAgICAgIC8vIEZpbmQgYSBRQWNjZXNzaWJsZVBsdWdpbiAoZmFjdG9y eSkgZm9yIHRoZSBjbGFzcyBuYW1lLiBJZiB0aGVyZSdzCisgICAgICAgICAvLyBubyBlbnRyeSBp biB0aGUgY2FjaGUgdHJ5IHRvIGNyZWF0ZSBpdCB1c2luZyB0aGUgcGx1Z2luIGxvYWRlci4KKyAg ICAgICAgIGlmICghcUFjY2Vzc2libGVQbHVnaW5zKCktPmNvbnRhaW5zKGNuKSkgeworKyAgICAg ICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5ID0gbnVsbHB0cjsgLy8gMCBtZWFucyAi bm8gcGx1Z2luIGZvdW5kIi4gVGhpcyBpcyBjYWNoZWQgYXMgd2VsbC4KKyAgICAgICAgICAgICBj b25zdCBpbnQgaW5kZXggPSBsb2FkZXIoKS0+aW5kZXhPZihjbik7CistICAgICAgICAgICAgaWYg KGluZGV4ICE9IC0xKSB7CistICAgICAgICAgICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0 b3J5ID0gcW9iamVjdF9jYXN0PFFBY2Nlc3NpYmxlUGx1Z2luICo+KGxvYWRlcigpLT5pbnN0YW5j ZShpbmRleCkpOworLSAgICAgICAgICAgICAgICBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+aW5zZXJ0 KGNuLCBmYWN0b3J5KTsKKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYgKGluZGV4ICE9 IC0xKQorKyAgICAgICAgICAgICAgICBmYWN0b3J5ID0gcW9iamVjdF9jYXN0PFFBY2Nlc3NpYmxl UGx1Z2luICo+KGxvYWRlcigpLT5pbnN0YW5jZShpbmRleCkpOworKyAgICAgICAgICAgIHFBY2Nl c3NpYmxlUGx1Z2lucygpLT5pbnNlcnQoY24sIGZhY3RvcnkpOworICAgICAgICAgfQorIAorICAg ICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgY2FjaGUgc2hvdWxkIGNvbnRhaW4gYSB2YWxpZCBm YWN0b3J5IHBvaW50ZXIgb3IgMDoKKysgICAgICAgIFFfQVNTRVJUKHFBY2Nlc3NpYmxlUGx1Z2lu cygpLT5jb250YWlucyhjbikpOworICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3Rvcnkg PSBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+dmFsdWUoY24pOworICAgICAgICAgaWYgKGZhY3Rvcnkp IHsKKyAgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqcmVzdWx0ID0gZmFjdG9yeS0+ Y3JlYXRlKGNuLCBvYmplY3QpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3Vy ZS5qc29uIGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KK2luZGV4IDFmMDg3OTVjNTcu LjEyYzk1NzQyZDIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgor KysrIGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KK0BAIC04MzQsNyArODM0LDggQEAK KyAgICAgICAgICAgICAgICAgICAgICIvLyBlbWJlZGRlZCBkZXZpY2VzLCBhcmUgbm90IGludGVu ZGVkIHRvIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBYLiBFR0wgc3VwcG9ydCIsCisgICAgICAgICAg ICAgICAgICAgICAiLy8gaGFzIHRvIGJlIGRpc2FibGVkIGluIHBsdWdpbnMgbGlrZSB4Y2IgaW4g dGhpcyBjYXNlIHNpbmNlIHRoZSBuYXRpdmUgZGlzcGxheSwiLAorICAgICAgICAgICAgICAgICAg ICAgIi8vIHdpbmRvdyBhbmQgcGl4bWFwIHR5cGVzIHdpbGwgYmUgZGlmZmVyZW50IHRoYW4gd2hh dCBhbiBYLWJhc2VkIHBsYXRmb3JtIiwKKy0gICAgICAgICAgICAgICAgICAgICIvLyBwbHVnaW4g d291bGQgZXhwZWN0LiIKKysgICAgICAgICAgICAgICAgICAgICIvLyBwbHVnaW4gd291bGQgZXhw ZWN0LiIsCisrICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBVU0VfWDExIgorICAgICAgICAg ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAiaW5jbHVkZSI6IFsgIkVHTC9lZ2wuaCIsICJY MTEvWGxpYi5oIiBdLAorICAgICAgICAgICAgICAgICAibWFpbiI6IFsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9pbWFn ZS9xYm1waGFuZGxlci5jcHAKK2luZGV4IDk2ZjFlOGNiMWQuLjBlNzNiYmJkYjAgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKKysrKyBiL3F0YmFzZS9z cmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorQEAgLTE1MCwxNiArMTUwLDQyIEBAIHN0YXRp YyBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9I RFIgJmJpKQorICAgICByZXR1cm4gczsKKyB9CisgCistc3RhdGljIGludCBjYWxjX3NoaWZ0KHVp bnQgbWFzaykKKytzdGF0aWMgdWludCBjYWxjX3NoaWZ0KHVpbnQgbWFzaykKKyB7CistICAgIGlu dCByZXN1bHQgPSAwOworLSAgICB3aGlsZSAobWFzayAmJiAhKG1hc2sgJiAxKSkgeworKyAgICB1 aW50IHJlc3VsdCA9IDA7CisrICAgIHdoaWxlICgobWFzayA+PSAweDEwMCkgfHwgKCEobWFzayAm IDEpICYmIG1hc2spKSB7CisgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgIG1hc2sgPj49IDE7 CisgICAgIH0KKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCisrc3RhdGljIHVpbnQgY2FsY19z Y2FsZSh1aW50IGxvd19tYXNrKQorK3sKKysgICAgdWludCByZXN1bHQgPSA4OworKyAgICB3aGls ZSAobG93X21hc2sgJiYgcmVzdWx0KSB7CisrICAgICAgICByZXN1bHQtLTsKKysgICAgICAgIGxv d19tYXNrID4+PSAxOworKyAgICB9CisrICAgIHJldHVybiByZXN1bHQ7CisrfQorKworK3N0YXRp YyBpbmxpbmUgdWludCBhcHBseV9zY2FsZSh1aW50IHZhbHVlLCB1aW50IHNjYWxlKQorK3sKKysg ICAgaWYgKCEoc2NhbGUgJiAweDA3KSkgLy8gcmV0dXJuIGltbWVkaWF0ZWx5IGlmIHNjYWxlID09 IDggb3IgMAorKyAgICAgICAgcmV0dXJuIHZhbHVlOworKworKyAgICB1aW50IGZpbGxlZCA9IDgg LSBzY2FsZTsKKysgICAgdWludCByZXN1bHQgPSB2YWx1ZSA8PCBzY2FsZTsKKysKKysgICAgZG8g eworKyAgICAgICAgcmVzdWx0IHw9IHJlc3VsdCA+PiBmaWxsZWQ7CisrICAgICAgICBmaWxsZWQg PDw9IDE7CisrICAgIH0gd2hpbGUgKGZpbGxlZCA8IDgpOworKworKyAgICByZXR1cm4gcmVzdWx0 OworK30KKysKKyBzdGF0aWMgYm9vbCByZWFkX2RpYl9maWxlaGVhZGVyKFFEYXRhU3RyZWFtICZz LCBCTVBfRklMRUhEUiAmYmYpCisgeworICAgICAvLyByZWFkIEJNUCBmaWxlIGhlYWRlcgorQEAg LTIyMiwxNCArMjQ4LDE0IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0g JnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgdWludCBncmVl bl9tYXNrID0gMDsKKyAgICAgdWludCBibHVlX21hc2sgPSAwOworICAgICB1aW50IGFscGhhX21h c2sgPSAwOworLSAgICBpbnQgcmVkX3NoaWZ0ID0gMDsKKy0gICAgaW50IGdyZWVuX3NoaWZ0ID0g MDsKKy0gICAgaW50IGJsdWVfc2hpZnQgPSAwOworLSAgICBpbnQgYWxwaGFfc2hpZnQgPSAwOwor LSAgICBpbnQgcmVkX3NjYWxlID0gMDsKKy0gICAgaW50IGdyZWVuX3NjYWxlID0gMDsKKy0gICAg aW50IGJsdWVfc2NhbGUgPSAwOworLSAgICBpbnQgYWxwaGFfc2NhbGUgPSAwOworKyAgICB1aW50 IHJlZF9zaGlmdCA9IDA7CisrICAgIHVpbnQgZ3JlZW5fc2hpZnQgPSAwOworKyAgICB1aW50IGJs dWVfc2hpZnQgPSAwOworKyAgICB1aW50IGFscGhhX3NoaWZ0ID0gMDsKKysgICAgdWludCByZWRf c2NhbGUgPSAwOworKyAgICB1aW50IGdyZWVuX3NjYWxlID0gMDsKKysgICAgdWludCBibHVlX3Nj YWxlID0gMDsKKysgICAgdWludCBhbHBoYV9zY2FsZSA9IDA7CisgCisgICAgIGlmICghZC0+aXNT ZXF1ZW50aWFsKCkpCisgICAgICAgICBkLT5zZWVrKHN0YXJ0cG9zICsgQk1QX0ZJTEVIRFJfU0la RSArIGJpLmJpU2l6ZSk7IC8vIGdvdG8gc3RhcnQgb2YgY29sb3JtYXAgb3IgbWFza3MKK0BAIC0z MDgsMTkgKzMzNCwxOSBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZz LCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICByZWRfc2hp ZnQgPSBjYWxjX3NoaWZ0KHJlZF9tYXNrKTsKKyAgICAgICAgIGlmICgoKHJlZF9tYXNrID4+IHJl ZF9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAg IHJlZF9zY2FsZSA9IDI1NiAvICgocmVkX21hc2sgPj4gcmVkX3NoaWZ0KSArIDEpOworKyAgICAg ICAgcmVkX3NjYWxlID0gY2FsY19zY2FsZShyZWRfbWFzayA+PiByZWRfc2hpZnQpOworICAgICAg ICAgZ3JlZW5fc2hpZnQgPSBjYWxjX3NoaWZ0KGdyZWVuX21hc2spOworICAgICAgICAgaWYgKCgo Z3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKy0gICAgICAgIGdyZWVuX3NjYWxlID0gMjU2IC8gKChncmVlbl9tYXNrID4+IGdy ZWVuX3NoaWZ0KSArIDEpOworKyAgICAgICAgZ3JlZW5fc2NhbGUgPSBjYWxjX3NjYWxlKGdyZWVu X21hc2sgPj4gZ3JlZW5fc2hpZnQpOworICAgICAgICAgYmx1ZV9zaGlmdCA9IGNhbGNfc2hpZnQo Ymx1ZV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KSArIDEp ID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgYmx1ZV9zY2FsZSA9 IDI1NiAvICgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpICsgMSk7CisrICAgICAgICBibHVlX3Nj YWxlID0gY2FsY19zY2FsZShibHVlX21hc2sgPj4gYmx1ZV9zaGlmdCk7CisgICAgICAgICBhbHBo YV9zaGlmdCA9IGNhbGNfc2hpZnQoYWxwaGFfbWFzayk7CisgICAgICAgICBpZiAoKChhbHBoYV9t YXNrID4+IGFscGhhX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworLSAgICAgICAgYWxwaGFfc2NhbGUgPSAyNTYgLyAoKGFscGhhX21hc2sgPj4gYWxwaGFfc2hp ZnQpICsgMSk7CisrICAgICAgICBhbHBoYV9zY2FsZSA9IGNhbGNfc2NhbGUoYWxwaGFfbWFzayA+ PiBhbHBoYV9zaGlmdCk7CisgICAgIH0gZWxzZSBpZiAoY29tcCA9PSBCTVBfUkdCICYmIChuYml0 cyA9PSAyNCB8fCBuYml0cyA9PSAzMikpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9IDB4MDAwMDAw ZmY7CisgICAgICAgICBncmVlbl9tYXNrID0gMHgwMDAwZmYwMDsKK0BAIC0zMjgsMTcgKzM1NCwx NSBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBf SU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICBibHVlX3NoaWZ0ID0gMDsKKyAg ICAgICAgIGdyZWVuX3NoaWZ0ID0gODsKKyAgICAgICAgIHJlZF9zaGlmdCA9IDE2OworLSAgICAg ICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMTsKKysgICAgICAgIGJs dWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDA7CisgICAgIH0gZWxzZSBpZiAo Y29tcCA9PSBCTVBfUkdCICYmIG5iaXRzID09IDE2KSB7CisgICAgICAgICBibHVlX21hc2sgPSAw eDAwMWY7CisgICAgICAgICBncmVlbl9tYXNrID0gMHgwM2UwOworICAgICAgICAgcmVkX21hc2sg PSAweDdjMDA7CisgICAgICAgICBibHVlX3NoaWZ0ID0gMDsKKy0gICAgICAgIGdyZWVuX3NoaWZ0 ID0gMjsKKy0gICAgICAgIHJlZF9zaGlmdCA9IDc7CistICAgICAgICByZWRfc2NhbGUgPSAxOwor LSAgICAgICAgZ3JlZW5fc2NhbGUgPSAxOworLSAgICAgICAgYmx1ZV9zY2FsZSA9IDg7CisrICAg ICAgICBncmVlbl9zaGlmdCA9IDU7CisrICAgICAgICByZWRfc2hpZnQgPSAxMDsKKysgICAgICAg IGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDM7CisgICAgIH0KKyAKKyAj aWYgMAorQEAgLTU0NCwxMCArNTY4LDEwIEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURh dGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAg ICAgICAgICAgICAgICAgIGMgfD0gKih1Y2hhciopKGIrMik8PDE2OworICAgICAgICAgICAgICAg ICBpZiAobmJpdHMgPiAyNCkKKyAgICAgICAgICAgICAgICAgICAgIGMgfD0gKih1Y2hhciopKGIr Myk8PDI0OworLSAgICAgICAgICAgICAgICAqcCsrID0gcVJnYmEoKChjICYgcmVkX21hc2spID4+ IHJlZF9zaGlmdCkgKiByZWRfc2NhbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgoYyAmIGdyZWVuX21hc2spID4+IGdyZWVuX3NoaWZ0KSAqIGdyZWVuX3NjYWxl LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgJiBibHVlX21h c2spID4+IGJsdWVfc2hpZnQpICogYmx1ZV9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdHJhbnNwID8gKChjICYgYWxwaGFfbWFzaykgPj4gYWxwaGFfc2hp ZnQpICogYWxwaGFfc2NhbGUgOiAweGZmKTsKKysgICAgICAgICAgICAgICAgKnArKyA9IHFSZ2Jh KGFwcGx5X3NjYWxlKChjICYgcmVkX21hc2spID4+IHJlZF9zaGlmdCwgcmVkX3NjYWxlKSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5X3NjYWxlKChjICYgZ3JlZW5fbWFzaykg Pj4gZ3JlZW5fc2hpZnQsIGdyZWVuX3NjYWxlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFwcGx5X3NjYWxlKChjICYgYmx1ZV9tYXNrKSA+PiBibHVlX3NoaWZ0LCBibHVlX3NjYWxl KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcCA/IGFwcGx5X3NjYWxlKChj ICYgYWxwaGFfbWFzaykgPj4gYWxwaGFfc2hpZnQsIGFscGhhX3NjYWxlKSA6IDB4ZmYpOworICAg ICAgICAgICAgICAgICBiICs9IG5iaXRzLzg7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAgYi9xdGJhc2Uvc3Jj L2d1aS9pbWFnZS9xaW1hZ2UuY3BwCitpbmRleCA3MTUyYWMxNjA3Li4wZGY3NzI1NjRjIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9ndWkvaW1hZ2UvcWltYWdlLmNwcAorQEAgLTQ2OTQsNiArNDY5NCw4IEBAIFFJbWFnZSBRSW1h Z2U6OnNtb290aFNjYWxlZChpbnQgdywgaW50IGgpIGNvbnN0IHsKKyBzdGF0aWMgUUltYWdlIHJv dGF0ZWQ5MChjb25zdCBRSW1hZ2UgJmltYWdlKQorIHsKKyAgICAgUUltYWdlIG91dChpbWFnZS5o ZWlnaHQoKSwgaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuZm9ybWF0KCkpOworKyAgICBpZiAob3V0Lmlz TnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGlt YWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0 Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkpOworQEAgLTQ3MjIsNiArNDcyNCw4IEBAIHN0 YXRpYyBRSW1hZ2Ugcm90YXRlZDE4MChjb25zdCBRSW1hZ2UgJmltYWdlKQorICAgICAgICAgcmV0 dXJuIGltYWdlLm1pcnJvcmVkKHRydWUsIHRydWUpOworIAorICAgICBRSW1hZ2Ugb3V0KGltYWdl LndpZHRoKCksIGltYWdlLmhlaWdodCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQu aXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwg aW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5z ZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitAQCAtNDczNCw2ICs0NzM4LDggQEAg c3RhdGljIFFJbWFnZSByb3RhdGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgc3RhdGljIFFJ bWFnZSByb3RhdGVkMjcwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgeworICAgICBRSW1hZ2Ugb3V0 KGltYWdlLmhlaWdodCgpLCBpbWFnZS53aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlm IChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEo Jm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAg IG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fj dXJzb3IuY3BwCitpbmRleCBkNmNjYWZmOGVkLi40NTUwODgyNDFjIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcWN1cnNvci5jcHAKK0BAIC0yNTEsNyArMjUxLDggQEAgdm9pZCBRQ3Vyc29yOjpzZXRQb3Mo UVNjcmVlbiAqc2NyZWVuLCBpbnQgeCwgaW50IHkpCisgeworICAgICBpZiAoc2NyZWVuKSB7Cisg ICAgICAgICBpZiAoUVBsYXRmb3JtQ3Vyc29yICpjdXJzb3IgPSBzY3JlZW4tPmhhbmRsZSgpLT5j dXJzb3IoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFQb2ludCBkZXZpY2VQb3MgPSBRSGlnaERw aTo6dG9OYXRpdmVQaXhlbHMoUVBvaW50KHgsIHkpLCBzY3JlZW4pOworKyAgICAgICAgICAgIGNv bnN0IFFQb2ludCBwb3MoeCwgeSk7CisrICAgICAgICAgICAgY29uc3QgUVBvaW50IGRldmljZVBv cyA9IFFIaWdoRHBpOjp0b05hdGl2ZVBpeGVscyhwb3MsIHNjcmVlbi0+dmlydHVhbFNpYmxpbmdB dChwb3MpKTsKKyAgICAgICAgICAgICAvLyBOZWVkIHRvIGNoZWNrLCBzaW5jZSBzb21lIFggc2Vy dmVycyBnZW5lcmF0ZSBudWxsIG1vdXNlIG1vdmUKKyAgICAgICAgICAgICAvLyBldmVudHMsIGNh dXNpbmcgbG9vcGluZyBpbiBhcHBsaWNhdGlvbnMgd2hpY2ggY2FsbCBzZXRQb3MoKSBvbgorICAg ICAgICAgICAgIC8vIGV2ZXJ5IG1vdXNlIG1vdmUgZXZlbnQuCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAoraW5kZXggOWJiZjI3NzNhOS4uM2FjNGE0ZDhiNiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAorQEAgLTU4MCw5ICs1 ODAsOCBAQCB2b2lkIFFIaWdoRHBpU2NhbGluZzo6c2V0U2NyZWVuRmFjdG9yKFFTY3JlZW4gKnNj cmVlbiwgcXJlYWwgZmFjdG9yKQorICAgICBlbHNlCisgICAgICAgICBxTmFtZWRTY3JlZW5TY2Fs ZUZhY3RvcnMoKS0+aW5zZXJ0KG5hbWUsIGZhY3Rvcik7CisgCistICAgIC8vIGhhY2sgdG8gZm9y Y2UgcmUtZXZhbHVhdGlvbiBvZiBzY3JlZW4gZ2VvbWV0cnkKKyAgICAgaWYgKHNjcmVlbi0+aGFu ZGxlKCkpCistICAgICAgICBzY3JlZW4tPmRfZnVuYygpLT5zZXRQbGF0Zm9ybVNjcmVlbihzY3Jl ZW4tPmhhbmRsZSgpKTsgLy8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2VkIG9uIHNjYWxlIGZhY3Rv cgorKyAgICAgICAgc2NyZWVuLT5kX2Z1bmMoKS0+dXBkYXRlTG9naWNhbERwaSgpOworIH0KKyAK KyBRUG9pbnQgUUhpZ2hEcGlTY2FsaW5nOjptYXBQb3NpdGlvblRvTmF0aXZlKGNvbnN0IFFQb2lu dCAmcG9zLCBjb25zdCBRUGxhdGZvcm1TY3JlZW4gKnBsYXRmb3JtU2NyZWVuKQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwIGIvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK2luZGV4IGE3NWI4ZWY5MjAuLjRmMmQyOTQ3Mzkg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAorKysr IGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK0BAIC03MDEsNiArNzAx LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeworICAgICB7IFF0OjpLZXlfVG91Y2hwYWRUb2dn bGUsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIFRvZ2dsZSIpIH0s CisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9uLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1 dCIsICJUb3VjaHBhZCBPbiIpIH0sCisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9mZiwgIFFUX1RS QU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgT2ZmIikgfSwKKysgICAgeyBRdDo6 S2V5X1NoaWZ0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJTaGlmdCIpIH0sCisr ICAgIHsgUXQ6OktleV9Db250cm9sLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJD b250cm9sIikgfSwKKysgICAgeyBRdDo6S2V5X0FsdCwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hv cnRjdXQiLCAiQWx0IikgfSwKKysgICAgeyBRdDo6S2V5X01ldGEsICBRVF9UUkFOU0xBVEVfTk9P UCgiUVNob3J0Y3V0IiwgIk1ldGEiKSB9LAorIAorIH07Cisgc3RhdGljIFFfQ09OU1RFWFBSIGlu dCBudW1LZXlOYW1lcyA9IHNpemVvZiBrZXluYW1lIC8gc2l6ZW9mICprZXluYW1lOworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAgYi9xdGJh c2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCitpbmRleCBmZGM2YTZjNGFh Li5hYzQ3Zjk4YzVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9y bXNlcnZpY2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZp Y2VzLmNwcAorQEAgLTU1LDYgKzU1LDE5IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorICAgICBcYnJp ZWYgVGhlIFFQbGF0Zm9ybVNlcnZpY2VzIHByb3ZpZGVzIHRoZSBiYWNrZW5kIGZvciBkZXNrdG9w LXJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KKyAqLworIAorKy8qIQorKyAgICBcZW51bSBRUGxhdGZv cm1TZXJ2aWNlczo6Q2FwYWJpbGl0eQorKworKyAgICBDYXBhYmlsaXRpZXMgYXJlIHVzZWQgdG8g ZGV0ZXJtaW5lIGEgc3BlY2lmaWMgcGxhdGZvcm0gc2VydmljZSdzIGF2YWlsYWJpbGl0eS4KKysK KysgICAgXHZhbHVlIENvbG9yUGlja2luZ0Zyb21TY3JlZW4gVGhlIHBsYXRmb3JtIG5hdGl2ZWx5 IHN1cHBvcnRzIGNvbG9yIHBpY2tpbmcgZnJvbSBzY3JlZW4uCisrICAgIFRoaXMgY2FwYWJpbGl0 eSBpbmRpY2F0ZXMgdGhhdCB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgIm9wYXF1ZSIgY29sb3IgcGlj a2luZywgd2hlcmUgdGhlCisrICAgIHBsYXRmb3JtIGltcGxlbWVudHMgYSBjb21wbGV0ZSB1c2Vy IGV4cGVyaWVuY2UgZm9yIGNvbG9yIHBpY2tpbmcgYW5kIG91dHB1dHMgYSBjb2xvci4KKysgICAg VGhpcyBpcyBpbiBjb250cmFzdCB0byB0aGUgYXBwbGljYXRpb24gaW1wbGVtZW50aW5nIHRoZSBj b2xvciBwaWNraW5nIHVzZXIgZXhwZXJpZW5jZQorKyAgICAodGFraW5nIGNhcmUgb2Ygc2hvd2lu ZyBhIGNyb3NzIGhhaXIsIGluc3RydWN0aW5nIHRoZSBwbGF0Zm9ybSBpbnRlZ3JhdGlvbiB0byBv YnRhaW4KKysgICAgdGhlIGNvbG9yIGF0IGEgZ2l2ZW4gcGl4ZWwsIGV0Yy4pLiBUaGUgcmVsYXRl ZCBzZXJ2aWNlIGZ1bmN0aW9uIGlzIHBpY2tDb2xvcigpLgorKyAqLworKworIFFQbGF0Zm9ybVNl cnZpY2VzOjpRUGxhdGZvcm1TZXJ2aWNlcygpCisgeyB9CisgCitAQCAtODUsNSArOTgsMTYgQEAg UUJ5dGVBcnJheSBRUGxhdGZvcm1TZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QK KyAgICAgcmV0dXJuIFFCeXRlQXJyYXkoIlVOS05PV04iKTsKKyB9CisgCisrUVBsYXRmb3JtU2Vy dmljZUNvbG9yUGlja2VyICpRUGxhdGZvcm1TZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAq cGFyZW50KQorK3sKKysgICAgUV9VTlVTRUQocGFyZW50KTsKKysgICAgcmV0dXJuIG51bGxwdHI7 CisrfQorKworK2Jvb2wgUVBsYXRmb3JtU2VydmljZXM6Omhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0 eSBjYXBhYmlsaXR5KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQoY2FwYWJpbGl0eSkKKysgICAg cmV0dXJuIGZhbHNlOworK30KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmggYi9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAoraW5kZXggNWRlOTZjZmE3ZC4uYThiMmE0Y2U3MSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAorQEAgLTUwLDE2 ICs1MCwzMiBAQAorIC8vCisgCisgI2luY2x1ZGUgPFF0R3VpL3F0Z3VpZ2xvYmFsLmg+CisrI2lu Y2x1ZGUgPFF0Q29yZS9xb2JqZWN0Lmg+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xh c3MgUVVybDsKKytjbGFzcyBRV2luZG93OworKworK2NsYXNzIFFfR1VJX0VYUE9SVCBRUGxhdGZv cm1TZXJ2aWNlQ29sb3JQaWNrZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QK KytwdWJsaWM6CisrICAgIHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIHZpcnR1YWwgdm9p ZCBwaWNrQ29sb3IoKSA9IDA7CisrUV9TSUdOQUxTOgorKyAgICB2b2lkIGNvbG9yUGlja2VkKGNv bnN0IFFDb2xvciAmY29sb3IpOworK307CisgCisgY2xhc3MgUV9HVUlfRVhQT1JUIFFQbGF0Zm9y bVNlcnZpY2VzCisgeworIHB1YmxpYzoKKyAgICAgUV9ESVNBQkxFX0NPUFlfTU9WRShRUGxhdGZv cm1TZXJ2aWNlcykKKyAKKysgICAgZW51bSBDYXBhYmlsaXR5IHsKKysgICAgICAgIENvbG9yUGlj a2luZywKKysgICAgfTsKKysKKyAgICAgUVBsYXRmb3JtU2VydmljZXMoKTsKKyAgICAgdmlydHVh bCB+UVBsYXRmb3JtU2VydmljZXMoKSB7IH0KKyAKK0BAIC02Nyw2ICs4MywxMCBAQCBwdWJsaWM6 CisgICAgIHZpcnR1YWwgYm9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKTsKKyAKKyAg ICAgdmlydHVhbCBRQnl0ZUFycmF5IGRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0OworKworKyAg ICB2aXJ0dWFsIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0 OworKworKyAgICB2aXJ0dWFsIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqY29sb3JQaWNr ZXIoUVdpbmRvdyAqcGFyZW50ID0gbnVsbHB0cik7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNF CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcCBi L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKK2luZGV4IDcxNTIxYzAz MzkuLjIzMjU4NzMyNDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRm b3JtdGhlbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUu Y3BwCitAQCAtMTYzLDYgKzE2Myw4IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICAgICBcdmFs dWUgU2hvd1Nob3J0Y3V0c0luQ29udGV4dE1lbnVzIChib29sKSBXaGV0aGVyIHRvIGRpc3BsYXkg c2hvcnRjdXQga2V5IHNlcXVlbmNlcyBpbiBjb250ZXh0IG1lbnVzLgorIAorKyAgICBcdmFsdWUg QnV0dG9uUHJlc3NLZXlzIChRTGlzdDxRdDo6S2V5PikgQSBsaXN0IG9mIGtleXMgdGhhdCBjYW4g YmUgdXNlZCB0byBwcmVzcyBidXR0b25zIHZpYSBrZXlib2FyZCBpbnB1dC4KKysKKyAgICAgXHNh IHRoZW1lSGludCgpLCBRU3R5bGU6OnBpeGVsTWV0cmljKCkKKyAqLworIAorQEAgLTU2Myw2ICs1 NjUsOCBAQCBRVmFyaWFudCBRUGxhdGZvcm1UaGVtZTo6ZGVmYXVsdFRoZW1lSGludChUaGVtZUhp bnQgaGludCkKKyAgICAgICAgIH0KKyAgICAgY2FzZSBNb3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNo b2xkOgorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KDEwKTsKKysgICAgY2FzZSBCdXR0b25QcmVz c0tleXM6CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZShRTGlzdDxRdDo6S2V5 Pih7IFF0OjpLZXlfU3BhY2UsIFF0OjpLZXlfU2VsZWN0IH0pKTsKKyAgICAgfQorICAgICByZXR1 cm4gUVZhcmlhbnQoKTsKKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fw bGF0Zm9ybXRoZW1lLmggYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAor aW5kZXggMzE4NWZjNDU0MS4uN2U2YzlkNTc0MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBs YXRmb3JtdGhlbWUuaAorQEAgLTEyMCw3ICsxMjAsOCBAQCBwdWJsaWM6CisgICAgICAgICBUb3Vj aERvdWJsZVRhcERpc3RhbmNlLAorICAgICAgICAgU2hvd1Nob3J0Y3V0c0luQ29udGV4dE1lbnVz LAorICAgICAgICAgSWNvbkZhbGxiYWNrU2VhcmNoUGF0aHMsCistICAgICAgICBNb3VzZVF1aWNr U2VsZWN0aW9uVGhyZXNob2xkCisrICAgICAgICBNb3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xk LAorKyAgICAgICAgQnV0dG9uUHJlc3NLZXlzCisgICAgIH07CisgCisgICAgIGVudW0gRGlhbG9n VHlwZSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwIGIv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwCitpbmRleCA4ZTBlYjM1MTE2Li41ZDE3 MmE1OGRkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKK0BAIC03Nyw2ICs3NywxMiBA QCBRU2NyZWVuOjpRU2NyZWVuKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuKQorICAgICBkLT5zZXRQ bGF0Zm9ybVNjcmVlbihzY3JlZW4pOworIH0KKyAKKyt2b2lkIFFTY3JlZW5Qcml2YXRlOjp1cGRh dGVMb2dpY2FsRHBpKCkKKyt7CisrICAgIGxvZ2ljYWxEcGkgPSBRUGxhdGZvcm1TY3JlZW46Om92 ZXJyaWRlRHBpKHBsYXRmb3JtU2NyZWVuLT5sb2dpY2FsRHBpKCkpOworKyAgICB1cGRhdGVHZW9t ZXRyaWVzV2l0aFNpZ25hbHMoKTsgLy8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2VkIG9uIHNjYWxl IGZhY3RvcgorK30KKysKKyB2b2lkIFFTY3JlZW5Qcml2YXRlOjp1cGRhdGVHZW9tZXRyaWVzV2l0 aFNpZ25hbHMoKQorIHsKKyAgICAgY29uc3QgUVJlY3Qgb2xkR2VvbWV0cnkgPSBnZW9tZXRyeTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmggYi9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKK2luZGV4IDdkYTU0MmMyNWUuLmU1MGZjMzE5MGIg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorQEAgLTcwLDYgKzcwLDcgQEAgcHVibGlj OgorICAgICAgICAgZ2VvbWV0cnkgPSBwbGF0Zm9ybVNjcmVlbi0+ZGV2aWNlSW5kZXBlbmRlbnRH ZW9tZXRyeSgpOworICAgICAgICAgYXZhaWxhYmxlR2VvbWV0cnkgPSBRSGlnaERwaTo6ZnJvbU5h dGl2ZShwbGF0Zm9ybVNjcmVlbi0+YXZhaWxhYmxlR2VvbWV0cnkoKSwgUUhpZ2hEcGlTY2FsaW5n OjpmYWN0b3IocGxhdGZvcm1TY3JlZW4pLCBnZW9tZXRyeS50b3BMZWZ0KCkpOworICAgICB9Cisr ICAgIHZvaWQgdXBkYXRlTG9naWNhbERwaSgpOworIAorICAgICB2b2lkIHVwZGF0ZVByaW1hcnlP cmllbnRhdGlvbigpOworICAgICB2b2lkIHVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCitpbmRleCAwODBk YTk4ZWM0Li42OTk3ZDYyYjNjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cWJsZW5kZnVuY3Rpb25zX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5k ZnVuY3Rpb25zX3AuaAorQEAgLTI0NiwyNSArMjQ2LDMyIEBAIHZvaWQgcXRfdHJhbnNmb3JtX2lt YWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBkdWR4LCBpbnQgZHZkeCwgaW50IGR1ZHksIGludCBk dmR5LCBpbnQgdTAsIGludCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QmxlbmRlciBibGVuZGVyKQorIHsKKy0gICAgaW50IGZyb21ZID0gcU1heChxUm91bmQodG9wWSks IGNsaXAudG9wKCkpOworLSAgICBpbnQgdG9ZID0gcU1pbihxUm91bmQoYm90dG9tWSksIGNsaXAu dG9wKCkgKyBjbGlwLmhlaWdodCgpKTsKKysgICAgcWludDY0IGZyb21ZID0gcU1heChxUm91bmQo dG9wWSksIGNsaXAudG9wKCkpOworKyAgICBxaW50NjQgdG9ZID0gcU1pbihxUm91bmQoYm90dG9t WSksIGNsaXAudG9wKCkgKyBjbGlwLmhlaWdodCgpKTsKKyAgICAgaWYgKGZyb21ZID49IHRvWSkK KyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgcXJlYWwgbGVmdFNsb3BlID0gKGJvdHRvbUxlZnQu eCAtIHRvcExlZnQueCkgLyAoYm90dG9tTGVmdC55IC0gdG9wTGVmdC55KTsKKyAgICAgcXJlYWwg cmlnaHRTbG9wZSA9IChib3R0b21SaWdodC54IC0gdG9wUmlnaHQueCkgLyAoYm90dG9tUmlnaHQu eSAtIHRvcFJpZ2h0LnkpOworLSAgICBpbnQgZHhfbCA9IGludChsZWZ0U2xvcGUgKiAweDEwMDAw KTsKKy0gICAgaW50IGR4X3IgPSBpbnQocmlnaHRTbG9wZSAqIDB4MTAwMDApOworLSAgICBpbnQg eF9sID0gaW50KCh0b3BMZWZ0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wTGVmdC55KSAq IGxlZnRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CistICAgIGludCB4X3IgPSBpbnQo KHRvcFJpZ2h0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wUmlnaHQueSkgKiByaWdodFNs b3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKy0KKy0gICAgaW50IGZyb21YLCB0b1gsIHgx LCB4MiwgdSwgdiwgaSwgaWk7CisrICAgIHFpbnQ2NCBkeF9sID0gcWludDY0KGxlZnRTbG9wZSAq IDB4MTAwMDApOworKyAgICBxaW50NjQgZHhfciA9IHFpbnQ2NChyaWdodFNsb3BlICogMHgxMDAw MCk7CisrICAgIHFpbnQ2NCB4X2wgPSBxaW50NjQoKHRvcExlZnQueCArIChxcmVhbCgwLjUpICsg ZnJvbVkgLSB0b3BMZWZ0LnkpICogbGVmdFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsK KysgICAgcWludDY0IHhfciA9IHFpbnQ2NCgodG9wUmlnaHQueCArIChxcmVhbCgwLjUpICsgZnJv bVkgLSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOwor KworKyAgICBxaW50NjQgc291cmNlUmVjdFRvcCA9IHFpbnQ2NChzb3VyY2VSZWN0LnRvcCgpKTsK KysgICAgcWludDY0IHNvdXJjZVJlY3RMZWZ0ID0gcWludDY0KHNvdXJjZVJlY3QubGVmdCgpKTsK KysgICAgcWludDY0IHNvdXJjZVJlY3RXaWR0aCA9IHFpbnQ2NChzb3VyY2VSZWN0LndpZHRoKCkp OworKyAgICBxaW50NjQgc291cmNlUmVjdEhlaWdodCA9IHFpbnQ2NChzb3VyY2VSZWN0LmhlaWdo dCgpKTsKKysgICAgcWludDY0IGNsaXBMZWZ0ID0gcWludDY0KGNsaXAubGVmdCgpKTsKKysgICAg cWludDY0IGNsaXBXaWR0aCA9IHFpbnQ2NChjbGlwLndpZHRoKCkpOworKworKyAgICBxaW50NjQg ZnJvbVgsIHRvWCwgeDEsIHgyLCB1LCB2LCBpLCBpaTsKKyAgICAgRGVzdFQgKmxpbmU7CistICAg IGZvciAoaW50IHkgPSBmcm9tWTsgeSA8IHRvWTsgKyt5KSB7CisrICAgIGZvciAocWludDY0IHkg PSBmcm9tWTsgeSA8IHRvWTsgKyt5KSB7CisgICAgICAgICBsaW5lID0gcmVpbnRlcnByZXRfY2Fz dDxEZXN0VCAqPihyZWludGVycHJldF9jYXN0PHVjaGFyICo+KGRlc3RQaXhlbHMpICsgeSAqIGRi cGwpOworIAorLSAgICAgICAgZnJvbVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcC5sZWZ0KCkpOwor LSAgICAgICAgdG9YID0gcU1pbih4X3IgPj4gMTYsIGNsaXAubGVmdCgpICsgY2xpcC53aWR0aCgp KTsKKysgICAgICAgIGZyb21YID0gcU1heCh4X2wgPj4gMTYsIGNsaXBMZWZ0KTsKKysgICAgICAg IHRvWCA9IHFNaW4oeF9yID4+IDE2LCBjbGlwTGVmdCArIGNsaXBXaWR0aCk7CisgICAgICAgICBp ZiAoZnJvbVggPCB0b1gpIHsKKyAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHJvdW5kaW5nLCB3 ZSBjYW4gZ2V0IHNvdXJjZSBjb29yZGluYXRlcyBvdXRzaWRlIHRoZSBzb3VyY2UgaW1hZ2UuCisg ICAgICAgICAgICAgLy8gQ2xhbXAgdGhlc2UgY29vcmRpbmF0ZXMgdG8gdGhlIHNvdXJjZSByZWN0 IHRvIGF2b2lkIHNlZ21lbnRhdGlvbiBmYXVsdCBhbmQKK0BAIC0yNzUsMTAgKzI4MiwxMCBAQCB2 b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBk YnBsLAorICAgICAgICAgICAgIHUgPSB4MSAqIGR1ZHggKyB5ICogZHVkeSArIHUwOworICAgICAg ICAgICAgIHYgPSB4MSAqIGR2ZHggKyB5ICogZHZkeSArIHYwOworICAgICAgICAgICAgIGZvciAo OyB4MSA8IHRvWDsgKyt4MSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSB1ID4+IDE2Owor LSAgICAgICAgICAgICAgICBpbnQgdnYgPSB2ID4+IDE2OworLSAgICAgICAgICAgICAgICBpZiAo dXUgPj0gc291cmNlUmVjdC5sZWZ0KCkgJiYgdXUgPCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJj ZVJlY3Qud2lkdGgoKQorLSAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdC50 b3AoKSAmJiB2diA8IHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpKSB7Cisr ICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHUgPj4gMTY7CisrICAgICAgICAgICAgICAgIHFp bnQ2NCB2diA9IHYgPj4gMTY7CisrICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0 TGVmdCAmJiB1dSA8IHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoCisrICAgICAgICAg ICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0VG9wICYmIHZ2IDwgc291cmNlUmVjdFRvcCAr IHNvdXJjZVJlY3RIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKK0BAIC0yOTAsMTAgKzI5 NywxMCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhl bHMsIGludCBkYnBsLAorICAgICAgICAgICAgIHUgPSAoeDIgLSAxKSAqIGR1ZHggKyB5ICogZHVk eSArIHUwOworICAgICAgICAgICAgIHYgPSAoeDIgLSAxKSAqIGR2ZHggKyB5ICogZHZkeSArIHYw OworICAgICAgICAgICAgIGZvciAoOyB4MiA+IHgxOyAtLXgyKSB7CistICAgICAgICAgICAgICAg IGludCB1dSA9IHUgPj4gMTY7CistICAgICAgICAgICAgICAgIGludCB2diA9IHYgPj4gMTY7Cist ICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0LmxlZnQoKSAmJiB1dSA8IHNvdXJj ZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpCistICAgICAgICAgICAgICAgICAgICAm JiB2diA+PSBzb3VyY2VSZWN0LnRvcCgpICYmIHZ2IDwgc291cmNlUmVjdC50b3AoKSArIHNvdXJj ZVJlY3QuaGVpZ2h0KCkpIHsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gdSA+PiAxNjsK KysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gdiA+PiAxNjsKKysgICAgICAgICAgICAgICAg aWYgKHV1ID49IHNvdXJjZVJlY3RMZWZ0ICYmIHV1IDwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VS ZWN0V2lkdGgKKysgICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3RUb3AgJiYg dnYgPCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCkgeworICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgdSAtPSBk dWR4OworQEAgLTMwOCw4ICszMTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJp emUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8vIEJlZ2lubmlu ZyBvZiB0aGUgc2NhbiBsaW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAgICAgICAgICAg aSA9IHgxIC0gZnJvbVg7CisgICAgICAgICAgICAgd2hpbGUgKGkpIHsKKy0gICAgICAgICAgICAg ICAgaW50IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3QubGVmdCgpLCB1ID4+IDE2LCBzb3VyY2VSZWN0 LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKSAtIDEpOworLSAgICAgICAgICAgICAgICBpbnQg dnYgPSBxQm91bmQoc291cmNlUmVjdC50b3AoKSwgdiA+PiAxNiwgc291cmNlUmVjdC50b3AoKSAr IHNvdXJjZVJlY3QuaGVpZ2h0KCkgLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0g cUJvdW5kKHNvdXJjZVJlY3RMZWZ0LCB1ID4+IDE2LCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJl Y3RXaWR0aCAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSBxQm91bmQoc291cmNl UmVjdFRvcCwgdiA+PiAxNiwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQgLSAxKTsK KyAgICAgICAgICAgICAgICAgYmxlbmRlci53cml0ZShsaW5lLCByZWludGVycHJldF9jYXN0PGNv bnN0IFNyY1QgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhciAqPihzcmNQaXhlbHMpICsg dnYgKiBzYnBsKVt1dV0pOworICAgICAgICAgICAgICAgICB1ICs9IGR1ZHg7CisgICAgICAgICAg ICAgICAgIHYgKz0gZHZkeDsKK0BAIC0zNDgsOCArMzU1LDggQEAgdm9pZCBxdF90cmFuc2Zvcm1f aW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAg ICAvLyBFbmQgb2YgdGhlIHNjYW4gbGluZSwgd2l0aCBwZXItcGl4ZWwgY2hlY2tzLgorICAgICAg ICAgICAgIGkgPSB0b1ggLSB4MjsKKyAgICAgICAgICAgICB3aGlsZSAoaSkgeworLSAgICAgICAg ICAgICAgICBpbnQgdXUgPSBxQm91bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJj ZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpIC0gMSk7CistICAgICAgICAgICAgICAg IGludCB2diA9IHFCb3VuZChzb3VyY2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRv cCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQg dXUgPSBxQm91bmQoc291cmNlUmVjdExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291 cmNlUmVjdFdpZHRoIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHFCb3VuZChz b3VyY2VSZWN0VG9wLCB2ID4+IDE2LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCAt IDEpOworICAgICAgICAgICAgICAgICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nh c3Q8Y29uc3QgU3JjVCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVs cykgKyB2diAqIHNicGwpW3V1XSk7CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKKyAgICAg ICAgICAgICAgICAgdiArPSBkdmR4OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3Fjb2xvcnRyY2x1dF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNs dXRfcC5oCitpbmRleCA3NmE2YTYwODAzLi4yNGZkNTIyZTZjIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAorQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6Cisg ICAgICAgICByZXR1cm4gUVJnYmE2NDo6ZnJvbVJnYmE2NChyLCBnLCBiLCBxQWxwaGEocmdiMzIp ICogMjU3KTsKKyAjZW5kaWYKKyAgICAgfQorKyAgICBRUmdiYTY0IHRvTGluZWFyNjQoUVJnYmE2 NCkgY29uc3QgPSBkZWxldGU7CisgCisgICAgIFFSZ2IgdG9MaW5lYXIoUVJnYiByZ2IzMikgY29u c3QKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVs cGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAoraW5kZXgg YTYxNzkzNTA4YS4uNWJhMmQyNzdiNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FkcmF3aGVscGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdo ZWxwZXIuY3BwCitAQCAtNjA5MSw3ICs2MDkxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFscGhh cmdiYmxlbmRfYXJnYjMyKHF1aW50MzIgKmRzdCwgdWludCBjb3ZlcmFnZSwgY29uc3QgUVJnYmEK KyBzdGF0aWMgaW5saW5lIHZvaWQgcmdiQmxlbmRQaXhlbChRUmdiYTY0ICZkc3QsIGludCBjb3Zl cmFnZSwgUVJnYmE2NCBzbGluZWFyLCBjb25zdCBRQ29sb3JUcmNMdXQgKmNvbG9yUHJvZmlsZSkK KyB7CisgICAgIC8vIERvIGEgZ2FtbWFjb3JyZWN0ZWQgUkdCIGFscGhhYmxlbmQuLi4KKy0gICAg Y29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9maWxlID8gY29sb3JQcm9maWxlLT50b0xp bmVhcjY0KGRzdCkgOiBkc3Q7CisrICAgIGNvbnN0IFFSZ2JhNjQgZGxpbmVhciA9IGNvbG9yUHJv ZmlsZSA/IGNvbG9yUHJvZmlsZS0+dG9MaW5lYXIoZHN0KSA6IGRzdDsKKyAKKyAgICAgUVJnYmE2 NCBibGVuZCA9IHJnYkJsZW5kKGRsaW5lYXIsIHNsaW5lYXIsIGNvdmVyYWdlKTsKKyAKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcCBi L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCitpbmRleCAy ODM5MjNkZTUyLi5mMDhlYjljYmVlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCitAQCAtNTYwLDMxICs1NjAsNiBAQCB2b2lkIFFSYXN0 ZXJQYWludEVuZ2luZTo6dXBkYXRlTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0gJm1hdHJpeCkKKyAg ICAgUVJhc3RlclBhaW50RW5naW5lU3RhdGUgKnMgPSBzdGF0ZSgpOworICAgICAvLyBGQUxDT046 IGdldCByaWQgb2YgdGhpcyBsaW5lLCBzZWUgZHJhd0ltYWdlIGNhbGwgYmVsb3cuCisgICAgIHMt Pm1hdHJpeCA9IG1hdHJpeDsKKy0gICAgUVRyYW5zZm9ybTo6VHJhbnNmb3JtYXRpb25UeXBlIHR4 b3AgPSBzLT5tYXRyaXgudHlwZSgpOworLQorLSAgICBzd2l0Y2ggKHR4b3ApIHsKKy0KKy0gICAg Y2FzZSBRVHJhbnNmb3JtOjpUeE5vbmU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSB0 cnVlOworLSAgICAgICAgYnJlYWs7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhUcmFuc2xh dGU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBxcmVhbChpbnQocy0+bWF0cml4LmR4 KCkpKSA9PSBzLT5tYXRyaXguZHgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBx cmVhbChpbnQocy0+bWF0cml4LmR5KCkpKSA9PSBzLT5tYXRyaXguZHkoKTsKKy0gICAgICAgIGJy ZWFrOworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4U2NhbGU6CistICAgICAgICBzLT5mbGFn cy5pbnRfeGZvcm0gPSBxcmVhbChpbnQocy0+bWF0cml4LmR4KCkpKSA9PSBzLT5tYXRyaXguZHgo KQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0cml4LmR5 KCkpKSA9PSBzLT5tYXRyaXguZHkoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBx cmVhbChpbnQocy0+bWF0cml4Lm0xMSgpKSkgPT0gcy0+bWF0cml4Lm0xMSgpCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXgubTIyKCkpKSA9PSBzLT5t YXRyaXgubTIyKCk7CistICAgICAgICBicmVhazsKKy0KKy0gICAgZGVmYXVsdDogLy8gc2hlYXIg LyBwZXJzcGVjdGl2ZS4uLgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gZmFsc2U7Cist ICAgICAgICBicmVhazsKKy0gICAgfQorLQorICAgICBzLT5mbGFncy50eF9ub3NoZWFyID0gcXRf c2NhbGVGb3JUcmFuc2Zvcm0ocy0+bWF0cml4LCAmcy0+dHhzY2FsZSk7CisgCisgICAgIGVuc3Vy ZU91dGxpbmVNYXBwZXIoKTsKK0BAIC02MTcsNyArNTkyLDYgQEAgUVJhc3RlclBhaW50RW5naW5l U3RhdGU6OlFSYXN0ZXJQYWludEVuZ2luZVN0YXRlKCkKKyAgICAgZmxhZ3MuYmlsaW5lYXIgPSBm YWxzZTsKKyAgICAgZmxhZ3MubGVnYWN5X3JvdW5kaW5nID0gZmFsc2U7CisgICAgIGZsYWdzLmZh c3RfdGV4dCA9IHRydWU7CistICAgIGZsYWdzLmludF94Zm9ybSA9IHRydWU7CisgICAgIGZsYWdz LnR4X25vc2hlYXIgPSB0cnVlOworICAgICBmbGFncy5mYXN0X2ltYWdlcyA9IHRydWU7CisgCitA QCAtMTc5Myw3ICsxNzY3LDcgQEAgdm9pZCBRUmFzdGVyUGFpbnRFbmdpbmU6OmZpbGwoY29uc3Qg UVZlY3RvclBhdGggJnBhdGgsIGNvbnN0IFFCcnVzaCAmYnJ1c2gpCisgICAgIFFSZWN0RiBjcFJl Y3QgPSBwYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKKyAgICAgY29uc3QgUVJlY3RGIHBhdGhEZXZp Y2VSZWN0ID0gcy0+bWF0cml4Lm1hcFJlY3QoY3BSZWN0KTsKKyAgICAgLy8gU2tpcCBwYXRocyB0 aGF0IGJ5IGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZXMgYXJlIGNvbXBsZXRlbHkgb3V0c2lkZSB0aGUg cGFpbnQgZGV2aWNlLgorLSAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2VjdHMoUVJlY3RG KGQtPmRldmljZVJlY3QpKSkKKysgICAgaWYgKCFwYXRoRGV2aWNlUmVjdC5pbnRlcnNlY3RzKFFS ZWN0RihkLT5kZXZpY2VSZWN0KSkgfHwgIXBhdGhEZXZpY2VSZWN0LmlzVmFsaWQoKSkKKyAgICAg ICAgIHJldHVybjsKKyAKKyAgICAgUHJvY2Vzc1NwYW5zIGJsZW5kID0gZC0+Z2V0QnJ1c2hGdW5j KHBhdGhEZXZpY2VSZWN0LCAmcy0+YnJ1c2hEYXRhKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCitpbmRleCAwODlhYWRjM2Y3Li5iZjczNjNk NWFhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jh c3Rlcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0 ZXJfcC5oCitAQCAtMTExLDcgKzExMSw2IEBAIHB1YmxpYzoKKyAgICAgICAgIHVpbnQgYmlsaW5l YXIgOiAxOworICAgICAgICAgdWludCBsZWdhY3lfcm91bmRpbmcgOiAxOworICAgICAgICAgdWlu dCBmYXN0X3RleHQgOiAxOworLSAgICAgICAgdWludCBpbnRfeGZvcm0gOiAxOworICAgICAgICAg dWludCB0eF9ub3NoZWFyIDogMTsKKyAgICAgICAgIHVpbnQgZmFzdF9pbWFnZXMgOiAxOworICAg ICB9OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5j cHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCitpbmRleCBmOTU0 NGEzMjQxLi5kODBmYWZlYWYxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXBhaW50ZXJwYXRoLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJw YXRoLmNwcAorQEAgLTEyNTMsNyArMTI1Myw3IEBAIHZvaWQgUVBhaW50ZXJQYXRoOjphZGRUZXh0 KGNvbnN0IFFQb2ludEYgJnBvaW50LCBjb25zdCBRRm9udCAmZiwgY29uc3QgUVN0cmluZyAmCisg CisgICAgICAgICBpZiAoc2kuYW5hbHlzaXMuZmxhZ3MgPCBRU2NyaXB0QW5hbHlzaXM6OlRhYk9y T2JqZWN0KSB7CisgICAgICAgICAgICAgUUdseXBoTGF5b3V0IGdseXBocyA9IGVuZy0+c2hhcGVk R2x5cGhzKCZzaSk7CistICAgICAgICAgICAgUUZvbnRFbmdpbmUgKmZlID0gZi5kLT5lbmdpbmVG b3JTY3JpcHQoc2kuYW5hbHlzaXMuc2NyaXB0KTsKKysgICAgICAgICAgICBRRm9udEVuZ2luZSAq ZmUgPSBlbmctPmZvbnRFbmdpbmUoc2kpOworICAgICAgICAgICAgIFFfQVNTRVJUKGZlKTsKKyAg ICAgICAgICAgICBmZS0+YWRkT3V0bGluZVRvUGF0aCh4LCB5LCBnbHlwaHMsIHRoaXMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2kuYW5hbHlzaXMuYmlkaUxldmVsICUgMgor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmggYi9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitpbmRleCA5NDQ0YTg3Yjcx Li4xOGY2NGM1ZThjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhj bGlwcGVyX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3Au aAorQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CisgICAgIGludCB2ZXJ0ZXgoRGlyZWN0aW9u IGRpcmVjdGlvbikgY29uc3Q7CisgCisgcHJpdmF0ZToKKy0gICAgaW50IG1fbmV4dFsyXVsyXTsK KysgICAgaW50IG1fbmV4dFsyXVsyXSA9IHsgeyAtMSwgLTEgfSwgeyAtMSwgLTEgfSB9OworIH07 CisgCisgY2xhc3MgUVBhdGhTZWdtZW50cworQEAgLTI5NiwxMCArMjk2LDYgQEAgaW5saW5lIFFQ YXRoRWRnZTo6UVBhdGhFZGdlKGludCBhLCBpbnQgYikKKyAgICAgLCBhbmdsZSgwKQorICAgICAs IGludkFuZ2xlKDApCisgeworLSAgICBtX25leHRbMF1bMF0gPSAtMTsKKy0gICAgbV9uZXh0WzFd WzBdID0gLTE7CistICAgIG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRbMV1bMF0gPSAt MTsKKyB9CisgCisgaW5saW5lIGludCBRUGF0aEVkZ2U6Om5leHQoVHJhdmVyc2FsIHRyYXZlcnNh bCwgRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xcGRmLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCitp bmRleCAzMDY2NzQ0ZjFiLi4yYzhkM2MzYjUzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXBkZi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3Bw CitAQCAtMjc2MCw2ICsyNzYwLDggQEAgaW50IFFQZGZFbmdpbmVQcml2YXRlOjphZGRCcnVzaFBh dHRlcm4oY29uc3QgUVRyYW5zZm9ybSAmbSwgYm9vbCAqc3BlY2lmeUNvbG9yLAorICAgICAgICAg cmV0dXJuIGdyYWRpZW50QnJ1c2goYnJ1c2gsIG1hdHJpeCwgZ1N0YXRlT2JqZWN0KTsKKyAgICAg fQorIAorKyAgICBtYXRyaXggPSBicnVzaC50cmFuc2Zvcm0oKSAqIG1hdHJpeDsKKysKKyAgICAg aWYgKCghYnJ1c2guaXNPcGFxdWUoKSAmJiBicnVzaC5zdHlsZSgpIDwgUXQ6OkxpbmVhckdyYWRp ZW50UGF0dGVybikgfHwgb3BhY2l0eSAhPSAxLjApCisgICAgICAgICAqZ1N0YXRlT2JqZWN0ID0g YWRkQ29uc3RhbnRBbHBoYU9iamVjdChxUm91bmQoYnJ1c2guY29sb3IoKS5hbHBoYSgpICogb3Bh Y2l0eSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBx Um91bmQocGVuLmNvbG9yKCkuYWxwaGEoKSAqIG9wYWNpdHkpKTsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGlu Zy9xc3Ryb2tlci5jcHAKK2luZGV4IGNiNWQzOTVlODAuLjNiNjM1N2E4OTMgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAorQEAgLTExODIsNiArMTE4Miw3IEBAIHZvaWQgUURh c2hTdHJva2VyOjpwcm9jZXNzQ3VycmVudFN1YnBhdGgoKQorICAgICAgICAgLy8gQ2hlY2sgaWYg dGhlIGVudGlyZSBsaW5lIHNob3VsZCBiZSBjbGlwcGVkIGF3YXkgb3Igc2ltcGxpZmllZAorICAg ICAgICAgYm9vbCBjbGlwSXQgPSBjbGlwcGluZyAmJiAhbGluZUludGVyc2VjdHNSZWN0KHByZXYs IGUsIGNsaXBfdGwsIGNsaXBfYnIpOworICAgICAgICAgYm9vbCBza2lwRGFzaGluZyA9IGVsZW4g KiBpbnZTdW1MZW5ndGggPiByZXBldGl0aW9uTGltaXQoKTsKKysgICAgICAgIGludCBtYXhEYXNo ZXMgPSBkYXNoQ291bnQ7CisgICAgICAgICBpZiAoc2tpcERhc2hpbmcgfHwgY2xpcEl0KSB7Cisg ICAgICAgICAgICAgLy8gQ3V0IGF3YXkgZnVsbCBkYXNoIHNlcXVlbmNlcy4KKyAgICAgICAgICAg ICBlbGVuIC09IHN0ZDo6Zmxvb3IoZWxlbiAqIGludlN1bUxlbmd0aCkgKiBzdW1MZW5ndGg7CitA QCAtMTE5Niw3ICsxMTk3LDcgQEAgdm9pZCBRRGFzaFN0cm9rZXI6OnByb2Nlc3NDdXJyZW50U3Vi cGF0aCgpCisgICAgICAgICAgICAgICAgICAgICBwb3MgPSBlc3RvcDsgLy8gbW92ZSBwb3MgdG8g bmV4dCBwYXRoIGVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAg ICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBEYXNoIGlzIG9uIHRoaXMgbGluZQorLSAgICAgICAg ICAgICAgICAgICAgcG9zID0gZHBvcyArIGVzdGFydDsKKysgICAgICAgICAgICAgICAgICAgIHBv cyA9IC0tbWF4RGFzaGVzID4gMCA/IGRwb3MgKyBlc3RhcnQgOiBlc3RvcDsKKyAgICAgICAgICAg ICAgICAgICAgIGRvbmUgPSBwb3MgPj0gZXN0b3A7CisgICAgICAgICAgICAgICAgICAgICBpZiAo KytpZGFzaCA+PSBkYXNoQ291bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgaWRhc2ggPSAw OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpz b24gYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCitpbmRleCA3 YjE2ZThjMjExLi4wZTg3ZDMwYWEyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcXRfYXR0cmlidXRpb24uanNvbgorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRf YXR0cmlidXRpb24uanNvbgorQEAgLTEwLDcgKzEwLDcgQEAKKyAgICAgICAgICJIb21lcGFnZSI6 ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZyIsCisgICAgICAgICAiTGljZW5zZSI6ICJGcmVldHlw ZSBQcm9qZWN0IExpY2Vuc2Ugb3IgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjIuMCBvbmx5 IiwKKyAgICAgICAgICJMaWNlbnNlSWQiOiAiRlRMIG9yIEdQTC0yLjAiLAorLSAgICAgICAgIkxp Y2Vuc2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0eXBlL2RvY3MvTElDRU5TRS5UWFQiLAor KyAgICAgICAgIkxpY2Vuc2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0eXBlL0xJQ0VOU0Uu VFhUIiwKKyAgICAgICAgICJDb3B5cmlnaHQiOiAiQ29weXJpZ2h0IDIwMDAtMjAxNiBieSBEYXZp ZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuIgorICAgICB9LAor ICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmggYi9x dGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAoraW5kZXggZWM5ZDI1OTcxZi4uNGE1YTdh NmQ1MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAorQEAgLTY4LDEzICs2OCwxMyBAQCBz dHJ1Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJQcml2YXRlCisgICAgIHsKKyAgICAgfQorIAorLSAg ICBRU2hhZGVyUHJpdmF0ZShjb25zdCBRU2hhZGVyUHJpdmF0ZSAqb3RoZXIpCisrICAgIFFTaGFk ZXJQcml2YXRlKGNvbnN0IFFTaGFkZXJQcml2YXRlICZvdGhlcikKKyAgICAgICAgIDogcmVmKDEp LAorLSAgICAgICAgICBxc2JWZXJzaW9uKG90aGVyLT5xc2JWZXJzaW9uKSwKKy0gICAgICAgICAg c3RhZ2Uob3RoZXItPnN0YWdlKSwKKy0gICAgICAgICAgZGVzYyhvdGhlci0+ZGVzYyksCistICAg ICAgICAgIHNoYWRlcnMob3RoZXItPnNoYWRlcnMpLAorLSAgICAgICAgICBiaW5kaW5ncyhvdGhl ci0+YmluZGluZ3MpCisrICAgICAgICAgIHFzYlZlcnNpb24ob3RoZXIucXNiVmVyc2lvbiksCisr ICAgICAgICAgIHN0YWdlKG90aGVyLnN0YWdlKSwKKysgICAgICAgICAgZGVzYyhvdGhlci5kZXNj KSwKKysgICAgICAgICAgc2hhZGVycyhvdGhlci5zaGFkZXJzKSwKKysgICAgICAgICAgYmluZGlu Z3Mob3RoZXIuYmluZGluZ3MpCisgICAgIHsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9y aGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitpbmRleCBlYzJiMGI2YjRjLi4zZGEzM2E4YTJi IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3Au aAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAorQEAg LTYzLDE2ICs2MywxNiBAQCBzdHJ1Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJEZXNjcmlwdGlvblBy aXZhdGUKKyAgICAgICAgIGxvY2FsU2l6ZVswXSA9IGxvY2FsU2l6ZVsxXSA9IGxvY2FsU2l6ZVsy XSA9IDA7CisgICAgIH0KKyAKKy0gICAgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZShjb25zdCBR U2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlckRlc2NyaXB0aW9u UHJpdmF0ZShjb25zdCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlICZvdGhlcikKKyAgICAgICAg IDogcmVmKDEpLAorLSAgICAgICAgICBpblZhcnMob3RoZXItPmluVmFycyksCistICAgICAgICAg IG91dFZhcnMob3RoZXItPm91dFZhcnMpLAorLSAgICAgICAgICB1bmlmb3JtQmxvY2tzKG90aGVy LT51bmlmb3JtQmxvY2tzKSwKKy0gICAgICAgICAgcHVzaENvbnN0YW50QmxvY2tzKG90aGVyLT5w dXNoQ29uc3RhbnRCbG9ja3MpLAorLSAgICAgICAgICBzdG9yYWdlQmxvY2tzKG90aGVyLT5zdG9y YWdlQmxvY2tzKSwKKy0gICAgICAgICAgY29tYmluZWRJbWFnZVNhbXBsZXJzKG90aGVyLT5jb21i aW5lZEltYWdlU2FtcGxlcnMpLAorLSAgICAgICAgICBzdG9yYWdlSW1hZ2VzKG90aGVyLT5zdG9y YWdlSW1hZ2VzKSwKKy0gICAgICAgICAgbG9jYWxTaXplKG90aGVyLT5sb2NhbFNpemUpCisrICAg ICAgICAgIGluVmFycyhvdGhlci5pblZhcnMpLAorKyAgICAgICAgICBvdXRWYXJzKG90aGVyLm91 dFZhcnMpLAorKyAgICAgICAgICB1bmlmb3JtQmxvY2tzKG90aGVyLnVuaWZvcm1CbG9ja3MpLAor KyAgICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3RoZXIucHVzaENvbnN0YW50QmxvY2tzKSwK KysgICAgICAgICAgc3RvcmFnZUJsb2NrcyhvdGhlci5zdG9yYWdlQmxvY2tzKSwKKysgICAgICAg ICAgY29tYmluZWRJbWFnZVNhbXBsZXJzKG90aGVyLmNvbWJpbmVkSW1hZ2VTYW1wbGVycyksCisr ICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXIuc3RvcmFnZUltYWdlcyksCisrICAgICAgICAg IGxvY2FsU2l6ZShvdGhlci5sb2NhbFNpemUpCisgICAgIHsKKyAgICAgfQorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCBhNjU3YThjNTE2Li40ZmMwMTAwOTU4IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAorKysrIGIv cXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAorQEAgLTk4Myw3ICs5ODMsNyBA QCBRRm9udEVuZ2luZSAqbG9hZFNpbmdsZUVuZ2luZShpbnQgc2NyaXB0LAorICAgICAgICAgaWYg KHN0eWxlLT5rZXkuc3RyZXRjaCAhPSAwICYmIHJlcXVlc3Quc3RyZXRjaCAhPSAwCisgICAgICAg ICAgICAgJiYgKHJlcXVlc3Quc3R5bGVOYW1lLmlzRW1wdHkoKSB8fCByZXF1ZXN0LnN0eWxlTmFt ZSAhPSBzdHlsZS0+c3R5bGVOYW1lKSkgeworICAgICAgICAgICAgIGRlZi5zdHJldGNoID0gKHJl cXVlc3Quc3RyZXRjaCAqIDEwMCArIHN0eWxlLT5rZXkuc3RyZXRjaCAvIDIpIC8gc3R5bGUtPmtl eS5zdHJldGNoOworLSAgICAgICAgfSBlbHNlIHsKKysgICAgICAgIH0gZWxzZSBpZiAocmVxdWVz dC5zdHJldGNoID09IFFGb250OjpBbnlTdHJldGNoKSB7CisgICAgICAgICAgICAgZGVmLnN0cmV0 Y2ggPSAxMDA7CisgICAgICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4 dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1 bWVudGxheW91dC5jcHAKK2luZGV4IGYzZTZlYTIxMDAuLjcyMjY3ZTkzODAgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCitAQCAtMjEyMyw3ICsyMTIz LDcgQEAgdm9pZCBRVGV4dERvY3VtZW50TGF5b3V0UHJpdmF0ZTo6ZHJhd0xpc3RJdGVtKGNvbnN0 IFFQb2ludEYgJm9mZnNldCwgUVBhaW50ZXIgKnAKKyB7CisgICAgIFFfUShjb25zdCBRVGV4dERv Y3VtZW50TGF5b3V0KTsKKyAgICAgY29uc3QgUVRleHRCbG9ja0Zvcm1hdCBibG9ja0Zvcm1hdCA9 IGJsLmJsb2NrRm9ybWF0KCk7CistICAgIGNvbnN0IFFUZXh0Q2hhckZvcm1hdCBjaGFyRm9ybWF0 ID0gUVRleHRDdXJzb3IoYmwpLmNoYXJGb3JtYXQoKTsKKysgICAgY29uc3QgUVRleHRDaGFyRm9y bWF0IGNoYXJGb3JtYXQgPSBibC5jaGFyRm9ybWF0KCk7CisgICAgIFFGb250IGZvbnQoY2hhckZv cm1hdC5mb250KCkpOworICAgICBpZiAocS0+cGFpbnREZXZpY2UoKSkKKyAgICAgICAgIGZvbnQg PSBRRm9udChmb250LCBxLT5wYWludERldmljZSgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdp bmUuY3BwCitpbmRleCBjZTRhYmFjNDcyLi5hNmM2NmU1ZDJkIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQv cXRleHRlbmdpbmUuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5 cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8v d3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBR dEd1aSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMTU2NSw2ICsxNTY1LDEyIEBAIHZv aWQgUVRleHRFbmdpbmU6OnNoYXBlVGV4dChpbnQgaXRlbSkgY29uc3QKKyAgICAgICAgIC8vIE92 ZXJ3cml0ZSB3aXRoIDAgdG9rZW4gdG8gaW5kaWNhdGUgZmFpbHVyZQorICAgICAgICAgUUdseXBo TGF5b3V0IGcgPSBhdmFpbGFibGVHbHlwaHMoJnNpKTsKKyAgICAgICAgIGcuZ2x5cGhzWzBdID0g MDsKKysgICAgICAgIGcuYXR0cmlidXRlc1swXS5jbHVzdGVyU3RhcnQgPSB0cnVlOworKworKyAg ICAgICAgdXNob3J0ICpsb2dfY2x1c3RlcnMgPSBsb2dDbHVzdGVycygmc2kpOworKyAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtTGVuZ3RoOyArK2kpCisrICAgICAgICAgICAgbG9nX2Ns dXN0ZXJzW2ldID0gMDsKKysKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3Jj L2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitpbmRleCBmYmI2M2E5NDA4Li40ZDVmYWZh YWE3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNw cAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAorQEAgLTU0 LDYgKzU0LDggQEAKKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisgI2lu Y2x1ZGUgPHFkaXIuaD4KKyAKKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWxvY2tpbmdfcC5o PgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFPcGVuVXJsSGFuZGxlclJlZ2lz dHJ5IDogcHVibGljIFFPYmplY3QKK0BAIC04MSw2ICs4Myw3IEBAIFFfR0xPQkFMX1NUQVRJQyhR T3BlblVybEhhbmRsZXJSZWdpc3RyeSwgaGFuZGxlclJlZ2lzdHJ5KQorIAorIHZvaWQgUU9wZW5V cmxIYW5kbGVyUmVnaXN0cnk6OmhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCAqaGFuZGxlcikKKyB7 CisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKG11dGV4KTsKKyAgICAgSGFu ZGxlckhhc2g6Okl0ZXJhdG9yIGl0ID0gaGFuZGxlcnMuYmVnaW4oKTsKKyAgICAgd2hpbGUgKGl0 ICE9IGhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAgICBpZiAoaXQtPnJlY2VpdmVyID09IGhhbmRs ZXIpIHsKK0BAIC0yOTQsNyArMjk3LDggQEAgdm9pZCBRRGVza3RvcFNlcnZpY2VzOjpzZXRVcmxI YW5kbGVyKGNvbnN0IFFTdHJpbmcgJnNjaGVtZSwgUU9iamVjdCAqcmVjZWl2ZXIsIGMKKyAgICAg aC5uYW1lID0gbWV0aG9kOworICAgICByZWdpc3RyeS0+aGFuZGxlcnMuaW5zZXJ0KHNjaGVtZS50 b0xvd2VyKCksIGgpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlY2VpdmVyLCBTSUdOQUwoZGVz dHJveWVkKFFPYmplY3QqKSksCistICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIFNMT1Qo aGFuZGxlckRlc3Ryb3llZChRT2JqZWN0KikpKTsKKysgICAgICAgICAgICAgICAgICAgICByZWdp c3RyeSwgU0xPVChoYW5kbGVyRGVzdHJveWVkKFFPYmplY3QqKSksCisrICAgICAgICAgICAgICAg ICAgICAgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwv cXBrbWhhbmRsZXIuY3BwCitpbmRleCBlMGMzYjc1ZWZlLi4zNDE0ZjlkOGJhIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwCitAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgUGttVHlw ZQorICAgICBxdWludDMyIGJ5dGVzUGVyQmxvY2s7CisgfTsKKyAKKy1zdGF0aWMgUGttVHlwZSB0 eXBlTWFwWzVdID0geworK3N0YXRpYyBjb25zdGV4cHIgUGttVHlwZSB0eXBlTWFwWzVdID0gewor ICAgICB7IDB4OEQ2NCwgIDggfSwgICAvLyBHTF9FVEMxX1JHQjhfT0VTCisgICAgIHsgMHg5Mjc0 LCAgOCB9LCAgIC8vIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyCisgICAgIHsgMCwgMCB9LCAgICAg ICAgIC8vIHVudXNlZCAob2Jzb2xldGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3Jr L2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2Fj Y2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCitpbmRleCBiNmJlOTMxNDdhLi42ZTY5YjRj NGQzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5 ZmlsZWltcGwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVw bHlmaWxlaW1wbC5jcHAKK0BAIC04OSw5ICs4OSwxMCBAQCBRTmV0d29ya1JlcGx5RmlsZUltcGw6 OlFOZXR3b3JrUmVwbHlGaWxlSW1wbChRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm1hbmFnZXIsIGNv bgorICAgICAgICAgLy8gd2UgaGFuZGxlIG9ubHkgbG9jYWwgZmlsZXMKKyAgICAgICAgIFFTdHJp bmcgbXNnID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRTmV0d29ya0FjY2Vzc0ZpbGVC YWNrZW5kIiwgIlJlcXVlc3QgZm9yIG9wZW5pbmcgbm9uLWxvY2FsIGZpbGUgJTEiKS5hcmcodXJs LnRvU3RyaW5nKCkpOworICAgICAgICAgc2V0RXJyb3IoUU5ldHdvcmtSZXBseTo6UHJvdG9jb2xJ bnZhbGlkT3BlcmF0aW9uRXJyb3IsIG1zZyk7CisrICAgICAgICBzZXRGaW5pc2hlZCh0cnVlKTsg Ly8gV2UncmUgZmluaXNoZWQsIHdpbGwgZW1pdCBmaW5pc2hlZCgpIGFmdGVyIGN0b3IgaXMgZG9u ZS4KKyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImVycm9yT2NjdXJy ZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlvbiwKKyAgICAgICAgICAgICBRX0FSRyhRTmV0d29ya1Jl cGx5OjpOZXR3b3JrRXJyb3IsIFFOZXR3b3JrUmVwbHk6OlByb3RvY29sSW52YWxpZE9wZXJhdGlv bkVycm9yKSk7CistICAgICAgICBmaWxlT3BlbkZpbmlzaGVkKGZhbHNlKTsKKysgICAgICAgIFFN ZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdKCl7IGZpbGVPcGVuRmluaXNoZWQo ZmFsc2UpOyB9LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgICAgICByZXR1cm47CisgICAg IH0KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3 b3JrcmVwbHlpbXBsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBs eWltcGwuY3BwCitpbmRleCBiY2RmNmVlMmYxLi4zYjZkZWI4MmJkIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwCitAQCAtNjgwLDcgKzY4 MCw3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUltcGxQcml2YXRlOjphcHBlbmREb3duc3RyZWFtRGF0 YShRSU9EZXZpY2UgKmRhdGEpCisgICAgIC8vIHJlYWQgdW50aWwgRU9GIGZyb20gZGF0YQorICAg ICBpZiAoUV9VTkxJS0VMWShjb3B5RGV2aWNlKSkgeworICAgICAgICAgcUNyaXRpY2FsKCJRTmV0 d29ya1JlcGx5SW1wbDogY29weSBmcm9tIFFJT0RldmljZSBhbHJlYWR5IGluIHByb2dyZXNzIC0t ICIKKy0gICAgICAgICAgICAgICAgICAiYmFja2VuZCBwcm9ibHkgbmVlZHMgdG8gYmUgZml4ZWQi KTsKKysgICAgICAgICAgICAgICAgICAiYmFja2VuZCBwcm9iYWJseSBuZWVkcyB0byBiZSBmaXhl ZCIpOworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsv a2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAoraW5kZXggZDlmZTdiYzQ3Yi4uY2NkMDRiMjk0YSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAorQEAg LTUwLDYgKzUwLDcgQEAKKyAjaW5jbHVkZSA8cXN0cmluZy5oPgorICNpbmNsdWRlIDxxZGF0ZXRp bWUuaD4KKyAjaW5jbHVkZSA8cXJhbmRvbS5oPgorKyNpbmNsdWRlICJwcml2YXRlL3FzeXN0ZW1s aWJyYXJ5X3AuaCIKKyAKKyAjaWZkZWYgUV9PU19XSU4KKyAjaW5jbHVkZSA8cW11dGV4Lmg+CitA QCAtMTU2Myw3ICsxNTY0LDcgQEAgc3RhdGljIGJvb2wgcV9TU1BJX2xpYnJhcnlfbG9hZCgpCisg CisgICAgIC8vIEluaXRpYWxpemUgc2VjdXJpdHkgaW50ZXJmYWNlCisgICAgIGlmIChwU2VjdXJp dHlGdW5jdGlvblRhYmxlID09IG51bGxwdHIpIHsKKy0gICAgICAgIHNlY3VyaXR5RExMSGFuZGxl ID0gTG9hZExpYnJhcnkoTCJzZWN1cjMyLmRsbCIpOworKyAgICAgICAgc2VjdXJpdHlETExIYW5k bGUgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMInNlY3VyMzIiKTsKKyAgICAgICAgIGlmIChzZWN1 cml0eURMTEhhbmRsZSAhPSBudWxscHRyKSB7CisgICAgICAgICAgICAgSU5JVF9TRUNVUklUWV9J TlRFUkZBQ0UgcEluaXRTZWN1cml0eUludGVyZmFjZSA9CisgICAgICAgICAgICAgICAgIHJlaW50 ZXJwcmV0X2Nhc3Q8SU5JVF9TRUNVUklUWV9JTlRFUkZBQ0U+KAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9uZXR3 b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKK2luZGV4IDliMGEyZWU2NjkuLjczNjc5Yzll ZjEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4 LmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAK K0BAIC0xMjIsNyArMTIyLDYgQEAgc3RhdGljIFFGdW5jdGlvblBvaW50ZXIgcmVzb2x2ZVN5bWJv bChRTGlicmFyeSAmbGliLCBjb25zdCBjaGFyICpzeW0pCisgCisgTGliUmVzb2x2OjpMaWJSZXNv bHYoKQorIHsKKy0gICAgUUxpYnJhcnkgbGliOworICNpZmRlZiBMSUJSRVNPTFZfU08KKyAgICAg bGliLnNldEZpbGVOYW1lKFFTdHJpbmdMaXRlcmFsKExJQlJFU09MVl9TTykpOworICAgICBpZiAo IWxpYi5sb2FkKCkpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29j a3M1c29ja2V0ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNv Y2tldGVuZ2luZS5jcHAKK2luZGV4IDNhMDQ2ZmQxMTYuLjk3ZmFkY2EwYjMgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwCitAQCAt MTI5Niw3ICsxMjk2LDcgQEAgdm9pZCBRU29ja3M1U29ja2V0RW5naW5lUHJpdmF0ZTo6X3FfdWRw U29ja2V0UmVhZE5vdGlmaWNhdGlvbigpCisgICAgICAgICBpbnQgcG9zID0gMDsKKyAgICAgICAg IGNvbnN0IGNoYXIgKmJ1ZiA9IGluQnVmLmNvbnN0RGF0YSgpOworICAgICAgICAgaWYgKGluQnVm LnNpemUoKSA8IDQpIHsKKy0gICAgICAgICAgICBRU09DS1M1X0RfREVCVUcgPDwgImJ1Z3VzIHVk cCBkYXRhLCBkaXNjYXJkaW5nIjsKKysgICAgICAgICAgICBRU09DS1M1X0RfREVCVUcgPDwgImJv Z3VzIHVkcCBkYXRhLCBkaXNjYXJkaW5nIjsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAg ICB9CisgICAgICAgICBRU29ja3M1UmV2aXZlZERhdGFncmFtIGRhdGFncmFtOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAgYi9xdGJh c2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCitpbmRleCBjOWYyMDJm NTczLi5jOTkyZGE5ZDhlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Ns Y29udGV4dF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29u dGV4dF9vcGVuc3NsLmNwcAorQEAgLTQwOSw3ICs0MDksNyBAQCBpbml0X2NvbnRleHQ6CisgICAg ICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfME9yTGF0ZXI6CisgICAgICAgICBt aW5WZXJzaW9uID0gRFRMUzFfVkVSU0lPTjsKKy0gICAgICAgIG1heFZlcnNpb24gPSBEVExTX01B WF9WRVJTSU9OOworKyAgICAgICAgbWF4VmVyc2lvbiA9IDA7CisgICAgICAgICBicmVhazsKKyAg ICAgY2FzZSBRU3NsOjpEdGxzVjFfMjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBEVExTMV8yX1ZF UlNJT047CitAQCAtNDE3LDcgKzQxNyw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgICAgIGJyZWFr OworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8yT3JMYXRlcjoKKyAgICAgICAgIG1pblZlcnNpb24g PSBEVExTMV8yX1ZFUlNJT047CistICAgICAgICBtYXhWZXJzaW9uID0gRFRMU19NQVhfVkVSU0lP TjsKKysgICAgICAgIG1heFZlcnNpb24gPSAwOworICAgICAgICAgYnJlYWs7CisgICAgIGNhc2Ug UVNzbDo6VGxzVjFfM09yTGF0ZXI6CisgI2lmZGVmIFRMUzFfM19WRVJTSU9OCitAQCAtNDU1LDcg KzQ1NSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgfQorIAorICAgICAvLyBFbmFibGUgYnVnIHdv cmthcm91bmRzLgorLSAgICBsb25nIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6 OnNldHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgpLCBjb25maWd1cmF0 aW9uLmQtPnNzbE9wdGlvbnMpOworKyAgICBxc3Nsb3B0aW9ucyBvcHRpb25zID0gUVNzbFNvY2tl dEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKGNvbmZpZ3VyYXRpb24ucHJvdG9j b2woKSwgY29uZmlndXJhdGlvbi5kLT5zc2xPcHRpb25zKTsKKyAgICAgcV9TU0xfQ1RYX3NldF9v cHRpb25zKHNzbENvbnRleHQtPmN0eCwgb3B0aW9ucyk7CisgCisgICAgIC8vIFRlbGwgT3BlblNT TCB0byByZWxlYXNlIG1lbW9yeSBlYXJseQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwIGIvcXRiYXNlL3Ny Yy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAKK2lu ZGV4IGFhZjg3NDExMzAuLmI1ODkzNTM3MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdv cmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAorKysrIGIvcXRi YXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5j cHAKK0BAIC01OSw1NyArNTksNiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorLSNpZmRl ZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCistCistc3RhdGljIGludCBxX0RIX2NoZWNrKERI ICpkaCwgaW50ICpzdGF0dXMpCisteworLSAgICAvLyBESF9jaGVjayB3YXMgZmlyc3QgZGVwcmVj YXRlZCBpbiBPcGVuU1NMIDMuMC4wLCBhcyBsb3ctbGV2ZWwKKy0gICAgLy8gQVBJOyB0aGUgRVZQ X1BLRVkgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3YXMgYWR2aXNlZCBhcyBhbiBhbHRlcm5hdGl2ZS4K Ky0gICAgLy8gQXMgb2Ygbm93IEVWUF9QS0VZX3BhcmFtc19jaGVjayBlbmRzIHVwIGNhbGxpbmcg Li4uIERIX2NoZWNrLAorLSAgICAvLyB3aGljaCBpcyBnb29kIGVub3VnaC4KKy0KKy0gICAgUV9B U1NFUlQoZGgpOworLSAgICBRX0FTU0VSVChzdGF0dXMpOworLQorLSAgICBFVlBfUEtFWSAqa2V5 ID0gcV9FVlBfUEtFWV9uZXcoKTsKKy0gICAgaWYgKCFrZXkpIHsKKy0gICAgICAgIHFDV2Fybmlu ZyhsY1NzbCwgIkVWUF9QS0VZX25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNr ZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsK Ky0gICAgfQorLSAgICBjb25zdCBhdXRvIGtleURlbGV0ZXIgPSBxU2NvcGVHdWFyZChba2V5XSgp eworLSAgICAgICAgcV9FVlBfUEtFWV9mcmVlKGtleSk7CistICAgIH0pOworLSAgICBpZiAoIXFf RVZQX1BLRVlfc2V0MV9ESChrZXksIGRoKSkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAi RVZQX1BLRVlfc2V0MV9ESCBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJp dmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsKKy0gICAg fQorLQorLSAgICBFVlBfUEtFWV9DVFggKmtleUN0eCA9IHFfRVZQX1BLRVlfQ1RYX25ldyhrZXks IG51bGxwdHIpOworLSAgICBpZiAoIWtleUN0eCkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3Ns LCAiRVZQX1BLRVlfQ1RYX25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNrZW5k UHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsKKy0g ICAgfQorLSAgICBjb25zdCBhdXRvIGN0eERlbGV0ZXIgPSBxU2NvcGVHdWFyZChba2V5Q3R4XXsK Ky0gICAgICAgIHFfRVZQX1BLRVlfQ1RYX2ZyZWUoa2V5Q3R4KTsKKy0gICAgfSk7CistCistICAg IGNvbnN0IGludCByZXN1bHQgPSBxX0VWUF9QS0VZX3BhcmFtX2NoZWNrKGtleUN0eCk7CistICAg IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAg IC8vIE5vdGU6IHVubGlrZSBESF9jaGVjaywgd2UgY2Fubm90IG9idGFpbiB0aGUgJ3N0YXR1cycs CistICAgIC8vIGlmIHRoZSAncmVzdWx0JyBpcyAwIChhY3R1YWxseSB0aGUgcmVzdWx0IGlzIDEg b25seQorLSAgICAvLyBpZiB0aGlzICdzdGF0dXMnIHdhcyAwKS4gV2UgY291bGQgcHJvYmFibHkg Y2hlY2sgdGhlCistICAgIC8vIGVycm9ycyBmcm9tIHRoZSBlcnJvciBxdWV1ZSwgYnV0IGl0J3Mg bm90IG5lZWRlZCBhbnl3YXkKKy0gICAgLy8gLSBzZWUgdGhlICdpc1NhZmVESCcgYmVsb3csIGhv dyBpdCByZXR1cm5zIGltbWVkaWF0ZWx5CistICAgIC8vIG9uIDAuCistICAgIFFfVU5VU0VEKHN0 YXR1cykKKy0KKy0gICAgcmV0dXJuIHJlc3VsdDsKKy19CistI2VuZGlmIC8vIE9QRU5TU0xfTk9f REVQUkVDQVRFRF8zXzAKKy0KKyBzdGF0aWMgYm9vbCBpc1NhZmVESChESCAqZGgpCisgeworICAg ICBpbnQgc3RhdHVzID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fz c2xzb2NrZXRfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRf b3BlbnNzbC5jcHAKK2luZGV4IDM3ZmFkMmE2OGYuLjhmNjg1OGM4NjcgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorQEAgLTU1MCw5ICs1NTAs OSBAQCBzdGF0aWMgdm9pZCBxX2xvYWRDaXBoZXJzRm9yQ29ubmVjdGlvbihTU0wgKmNvbm5lY3Rp b24sIFFMaXN0PFFTc2xDaXBoZXI+ICZjaXBoZQorIC8vIERlZmluZWQgaW4gcXNzbHNvY2tldC5j cHAKKyB2b2lkIHFfc2V0RGVmYXVsdER0bHNDaXBoZXJzKGNvbnN0IFFMaXN0PFFTc2xDaXBoZXI+ ICZjaXBoZXJzKTsKKyAKKy1sb25nIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVu U3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBz c2xPcHRpb25zKQorK3Fzc2xvcHRpb25zIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBP cGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9u cyBzc2xPcHRpb25zKQorIHsKKy0gICAgbG9uZyBvcHRpb25zOworKyAgICBxc3Nsb3B0aW9ucyBv cHRpb25zOworICAgICBpZiAocHJvdG9jb2wgPT0gUVNzbDo6VGxzVjFTc2xWMykKKyAgICAgICAg IG9wdGlvbnMgPSBTU0xfT1BfQUxMfFNTTF9PUF9OT19TU0x2MnxTU0xfT1BfTk9fU1NMdjM7Cisg ICAgIGVsc2UgaWYgKHByb3RvY29sID09IFFTc2w6OlNlY3VyZVByb3RvY29scykKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmggYi9xdGJh c2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKK2luZGV4IDQxMDNkZTIz ZTguLjU1NDc1ODkyNTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xz b2NrZXRfb3BlbnNzbF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tl dF9vcGVuc3NsX3AuaAorQEAgLTEwNyw2ICsxMDcsMTIgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BB Q0UKKyAKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVS U0lPTl9NQUpPUiA+PSAzCisrdHlwZWRlZiB1aW50NjRfdCBxc3Nsb3B0aW9uczsKKysjZWxzZQor K3R5cGVkZWYgdW5zaWduZWQgbG9uZyBxc3Nsb3B0aW9uczsKKysjZW5kaWYKKysKKyBzdHJ1Y3Qg UVNzbEVycm9yRW50cnkgeworICAgICBpbnQgY29kZTsKKyAgICAgaW50IGRlcHRoOworQEAgLTE3 MSw3ICsxNzcsNyBAQCBwdWJsaWM6CisgICAgIFFWZWN0b3I8UVNzbEVycm9yPiBvY3NwRXJyb3Jz OworICAgICBRQnl0ZUFycmF5IG9jc3BSZXNwb25zZURlcjsKKyAKKy0gICAgUV9BVVRPVEVTVF9F WFBPUlQgc3RhdGljIGxvbmcgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBw cm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKysgICAgUV9BVVRPVEVTVF9F WFBPUlQgc3RhdGljIHFzc2xvcHRpb25zIHNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJv dG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucyk7CisgICAgIHN0YXRp YyBRU3NsQ2lwaGVyIFFTc2xDaXBoZXJfZnJvbV9TU0xfQ0lQSEVSKGNvbnN0IFNTTF9DSVBIRVIg KmNpcGhlcik7CisgICAgIHN0YXRpYyBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+IFNUQUNLT0ZYNTA5 X3RvX1FTc2xDZXJ0aWZpY2F0ZXMoU1RBQ0tfT0YoWDUwOSkgKng1MDkpOworICAgICBzdGF0aWMg UUxpc3Q8UVNzbEVycm9yPiB2ZXJpZnkoY29uc3QgUUxpc3Q8UVNzbENlcnRpZmljYXRlPiAmY2Vy dGlmaWNhdGVDaGFpbiwgY29uc3QgUVN0cmluZyAmaG9zdE5hbWUpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3BwIGIvcXRi YXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAKK2luZGV4 IGU1M2ZiMjc5ZjAuLjQ1OWNjZDBiMTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3 b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAKK0BAIC0xNDgsNyArMTQ4LDYg QEAgREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX3VwX3JlZiwgRVZQX1BLRVkgKmEsIGEsIHJldHVy biAwLCByZXR1cm4pCisgREVGSU5FRlVOQzIoRVZQX1BLRVlfQ1RYICosIEVWUF9QS0VZX0NUWF9u ZXcsIEVWUF9QS0VZICpwa2V5LCBwa2V5LCBFTkdJTkUgKmUsIGUsIHJldHVybiBudWxscHRyLCBy ZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX3BhcmFtX2NoZWNrLCBFVlBfUEtFWV9D VFggKmN0eCwgY3R4LCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkModm9pZCwgRVZQX1BL RVlfQ1RYX2ZyZWUsIEVWUF9QS0VZX0NUWCAqY3R4LCBjdHgsIHJldHVybiwgcmV0dXJuKQorLURF RklORUZVTkMoaW50LCBFVlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIE5J RF91bmRlZiwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBSU0FfYml0cywgUlNBICphLCBhLCBy ZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBEU0FfYml0cywgRFNBICphLCBhLCBy ZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBPUEVOU1NMX3NrX251bSwgT1BFTlNT TF9TVEFDSyAqYSwgYSwgcmV0dXJuIC0xLCByZXR1cm4pCitAQCAtMTU4LDcgKzE1Nyw3IEBAIERF RklORUZVTkMyKHZvaWQsIE9QRU5TU0xfc2tfcHVzaCwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgdm9p ZCAqYiwgYiwgcmV0dXJuLCBEVU1NCisgREVGSU5FRlVOQyh2b2lkLCBPUEVOU1NMX3NrX2ZyZWUs IE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHJldHVybiwgRFVNTVlBUkcpCisgREVGSU5FRlVOQzIodm9p ZCAqLCBPUEVOU1NMX3NrX3ZhbHVlLCBPUEVOU1NMX1NUQUNLICphLCBhLCBpbnQgYiwgYiwgcmV0 dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgU1NMX3Nlc3Npb25fcmV1c2Vk LCBTU0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCistREVGSU5FRlVOQzIodW5zaWduZWQgbG9u ZywgU1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX0NUWCAqY3R4LCBjdHgsIHVuc2lnbmVkIGxvbmcg b3AsIG9wLCByZXR1cm4gMCwgcmV0dXJuKQorK0RFRklORUZVTkMyKHFzc2xvcHRpb25zLCBTU0xf Q1RYX3NldF9vcHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0eCwgcXNzbG9wdGlvbnMgb3AsIG9wLCBy ZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBTU0xfQ1RYX2dldF9zZWN1cml0eV9s ZXZlbCwgY29uc3QgU1NMX0NUWCAqY3R4LCBjdHgsIHJldHVybiAtMSwgcmV0dXJuKQorIERFRklO RUZVTkMyKHZvaWQsIFNTTF9DVFhfc2V0X3NlY3VyaXR5X2xldmVsLCBTU0xfQ1RYICpjdHgsIGN0 eCwgaW50IGxldmVsLCBsZXZlbCwgcmV0dXJuLCByZXR1cm4pCisgI2lmZGVmIFRMUzFfM19WRVJT SU9OCitAQCAtMzcxLDcgKzM3MCwxNSBAQCBERUZJTkVGVU5DKGNvbnN0IFNTTF9DSVBIRVIgKiwg U1NMX2dldF9jdXJyZW50X2NpcGhlciwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0cgorIERFRklO RUZVTkMoaW50LCBTU0xfdmVyc2lvbiwgY29uc3QgU1NMICphLCBhLCByZXR1cm4gMCwgcmV0dXJu KQorIERFRklORUZVTkMyKGludCwgU1NMX2dldF9lcnJvciwgU1NMICphLCBhLCBpbnQgYiwgYiwg cmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQyhTVEFDS19PRihYNTA5KSAqLCBTU0xfZ2V0 X3BlZXJfY2VydF9jaGFpbiwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorKwor KyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01B Sk9SID49IDMKKytERUZJTkVGVU5DKFg1MDkgKiwgU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZSwg U1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklORUZVTkMoaW50LCBFVlBf UEtFWV9nZXRfYmFzZV9pZCwgY29uc3QgRVZQX1BLRVkgKnBrZXksIHBrZXksIHJldHVybiAtMSwg cmV0dXJuKQorKyNlbHNlCisgREVGSU5FRlVOQyhYNTA5ICosIFNTTF9nZXRfcGVlcl9jZXJ0aWZp Y2F0ZSwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklORUZVTkMoaW50 LCBFVlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIE5JRF91bmRlZiwgcmV0 dXJuKQorKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKworIERFRklORUZV TkMobG9uZywgU1NMX2dldF92ZXJpZnlfcmVzdWx0LCBjb25zdCBTU0wgKmEsIGEsIHJldHVybiAt MSwgcmV0dXJuKQorIERFRklORUZVTkMoU1NMICosIFNTTF9uZXcsIFNTTF9DVFggKmEsIGEsIHJl dHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyhTU0xfQ1RYICosIFNTTF9nZXRfU1NM X0NUWCwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorQEAgLTQ5Miw5ICs0OTks NyBAQCBERUZJTkVGVU5DKERIICosIERIX25ldywgRFVNTVlBUkcsIERVTU1ZQVJHLCByZXR1cm4g bnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkModm9pZCwgREhfZnJlZSwgREggKmRoLCBkaCwg cmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMyhESCAqLCBkMmlfREhwYXJhbXMsIERIKiph LCBhLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsIHBwLCBsb25nIGxlbmd0aCwgbGVuZ3RoLCBy ZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMyKGludCwgaTJkX0RIcGFyYW1zLCBE SCAqYSwgYSwgdW5zaWduZWQgY2hhciAqKnAsIHAsIHJldHVybiAtMSwgcmV0dXJuKQorLSNpZm5k ZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIERFRklORUZVTkMyKGludCwgREhfY2hlY2ss IERIICpkaCwgZGgsIGludCAqY29kZXMsIGNvZGVzLCByZXR1cm4gMCwgcmV0dXJuKQorLSNlbmRp ZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgREVGSU5FRlVOQzMoQklHTlVNICosIEJO X2JpbjJibiwgY29uc3QgdW5zaWduZWQgY2hhciAqcywgcywgaW50IGxlbiwgbGVuLCBCSUdOVU0g KnJldCwgcmV0LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIAorICNpZm5kZWYgT1BFTlNTTF9O T19FQworQEAgLTg2OCw3ICs4NzMsNiBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkK KyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX25ldykKKyAgICAgUkVTT0xWRUZVTkMoRVZQ X1BLRVlfcGFyYW1fY2hlY2spCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX0NUWF9mcmVlKQor LSAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lkKQorICAgICBSRVNPTFZFRlVOQyhSU0Ff Yml0cykKKyAgICAgUkVTT0xWRUZVTkMoT1BFTlNTTF9za19uZXdfbnVsbCkKKyAgICAgUkVTT0xW RUZVTkMoT1BFTlNTTF9za19wdXNoKQorQEAgLTExMDcsNyArMTExMSwxNSBAQCBib29sIHFfcmVz b2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoU1NMX3ZlcnNpb24pCisgICAg IFJFU09MVkVGVU5DKFNTTF9nZXRfZXJyb3IpCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfcGVl cl9jZXJ0X2NoYWluKQorKworKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYg T1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysgICAgUkVTT0xWRUZVTkMoU1NMX2dldDFfcGVl cl9jZXJ0aWZpY2F0ZSkKKysgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfZ2V0X2Jhc2VfaWQpCisr I2Vsc2UKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKQorKyAgICBS RVNPTFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lkKQorKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05f TUFKT1IgPj0gMworKworICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQpCisg ICAgIFJFU09MVkVGVU5DKFNTTF9uZXcpCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfU1NMX0NU WCkKK0BAIC0xMjA2LDkgKzEyMTgsNyBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkK KyAgICAgUkVTT0xWRUZVTkMoREhfZnJlZSkKKyAgICAgUkVTT0xWRUZVTkMoZDJpX0RIcGFyYW1z KQorICAgICBSRVNPTFZFRlVOQyhpMmRfREhwYXJhbXMpCistI2lmbmRlZiBPUEVOU1NMX05PX0RF UFJFQ0FURURfM18wCisgICAgIFJFU09MVkVGVU5DKERIX2NoZWNrKQorLSNlbmRpZiAvLyBPUEVO U1NMX05PX0RFUFJFQ0FURURfM18wCisgICAgIFJFU09MVkVGVU5DKEJOX2JpbjJibikKKyAKKyAj aWZuZGVmIE9QRU5TU0xfTk9fRUMKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3Ns L3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wv cXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCitpbmRleCA5NWU4ODk3YTNiLi4yN2FlZmZh MThhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5z c2xfc3ltYm9sc19wLmgKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9v cGVuc3NsX3N5bWJvbHNfcC5oCitAQCAtMjM3LDcgKzIzNyw2IEBAIFFfQVVUT1RFU1RfRVhQT1JU IGludCBxX0VWUF9QS0VZX3VwX3JlZihFVlBfUEtFWSAqYSk7CisgRVZQX1BLRVlfQ1RYICpxX0VW UF9QS0VZX0NUWF9uZXcoRVZQX1BLRVkgKnBrZXksIEVOR0lORSAqZSk7Cisgdm9pZCBxX0VWUF9Q S0VZX0NUWF9mcmVlKEVWUF9QS0VZX0NUWCAqY3R4KTsKKyBpbnQgcV9FVlBfUEtFWV9wYXJhbV9j aGVjayhFVlBfUEtFWV9DVFggKmN0eCk7CistaW50IHFfRVZQX1BLRVlfYmFzZV9pZChFVlBfUEtF WSAqYSk7CisgaW50IHFfUlNBX2JpdHMoUlNBICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCBpbnQg cV9PUEVOU1NMX3NrX251bShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2 b2lkIHFfT1BFTlNTTF9za19wb3BfZnJlZShPUEVOU1NMX1NUQUNLICphLCB2b2lkICgqYikodm9p ZCAqKSk7CitAQCAtMjQ2LDcgKzI0NSw3IEBAIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVO U1NMX3NrX3B1c2goT1BFTlNTTF9TVEFDSyAqc3QsIHZvaWQgKmRhdGEpOworIFFfQVVUT1RFU1Rf RVhQT1JUIHZvaWQgcV9PUEVOU1NMX3NrX2ZyZWUoT1BFTlNTTF9TVEFDSyAqYSk7CisgUV9BVVRP VEVTVF9FWFBPUlQgdm9pZCAqIHFfT1BFTlNTTF9za192YWx1ZShPUEVOU1NMX1NUQUNLICphLCBp bnQgYik7CisgaW50IHFfU1NMX3Nlc3Npb25fcmV1c2VkKFNTTCAqYSk7CistdW5zaWduZWQgbG9u ZyBxX1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAqY3R4LCB1bnNpZ25lZCBsb25nIG9wKTsK Kytxc3Nsb3B0aW9ucyBxX1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAqY3R4LCBxc3Nsb3B0 aW9ucyBvcCk7CisgaW50IHFfT1BFTlNTTF9pbml0X3NzbCh1aW50NjRfdCBvcHRzLCBjb25zdCBP UEVOU1NMX0lOSVRfU0VUVElOR1MgKnNldHRpbmdzKTsKKyBzaXplX3QgcV9TU0xfZ2V0X2NsaWVu dF9yYW5kb20oU1NMICphLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4pOworIHNp emVfdCBxX1NTTF9TRVNTSU9OX2dldF9tYXN0ZXJfa2V5KGNvbnN0IFNTTF9TRVNTSU9OICpzZXNz aW9uLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4pOworQEAgLTUxMCw3ICs1MDks NiBAQCBjb25zdCBTU0xfQ0lQSEVSICpxX1NTTF9nZXRfY3VycmVudF9jaXBoZXIoU1NMICphKTsK KyBpbnQgcV9TU0xfdmVyc2lvbihjb25zdCBTU0wgKmEpOworIGludCBxX1NTTF9nZXRfZXJyb3Io U1NMICphLCBpbnQgYik7CisgU1RBQ0tfT0YoWDUwOSkgKnFfU1NMX2dldF9wZWVyX2NlcnRfY2hh aW4oU1NMICphKTsKKy1YNTA5ICpxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOwor IGxvbmcgcV9TU0xfZ2V0X3ZlcmlmeV9yZXN1bHQoY29uc3QgU1NMICphKTsKKyBTU0wgKnFfU1NM X25ldyhTU0xfQ1RYICphKTsKKyBTU0xfQ1RYICpxX1NTTF9nZXRfU1NMX0NUWChTU0wgKmEpOwor QEAgLTU4MiwxMCArNTgwLDcgQEAgREggKnFfREhfbmV3KCk7Cisgdm9pZCBxX0RIX2ZyZWUoREgg KmRoKTsKKyBESCAqcV9kMmlfREhwYXJhbXMoREggKiphLCBjb25zdCB1bnNpZ25lZCBjaGFyICoq cHAsIGxvbmcgbGVuZ3RoKTsKKyBpbnQgcV9pMmRfREhwYXJhbXMoREggKmEsIHVuc2lnbmVkIGNo YXIgKipwKTsKKy0KKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBpbnQgcV9E SF9jaGVjayhESCAqZGgsIGludCAqY29kZXMpOworLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJF Q0FURURfM18wCisgCisgQklHTlVNICpxX0JOX2JpbjJibihjb25zdCB1bnNpZ25lZCBjaGFyICpz LCBpbnQgbGVuLCBCSUdOVU0gKnJldCk7CisgI2RlZmluZSBxX1NTTF9DVFhfc2V0X3RtcF9kaChj dHgsIGRoKSBxX1NTTF9DVFhfY3RybCgoY3R4KSwgU1NMX0NUUkxfU0VUX1RNUF9ESCwgMCwgKGNo YXIgKilkaCkKK0BAIC03NTQsNiArNzQ5LDE3IEBAIHZvaWQgcV9DUllQVE9fZnJlZSh2b2lkICpz dHIsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKTsKKyBpbnQgcV9TU0xfQ1RYX2dldF9zZWN1 cml0eV9sZXZlbChjb25zdCBTU0xfQ1RYICpjdHgpOworIHZvaWQgcV9TU0xfQ1RYX3NldF9zZWN1 cml0eV9sZXZlbChTU0xfQ1RYICpjdHgsIGludCBsZXZlbCk7CisgCisrLy8gSGVyZSB3ZSBoYXZl IHRoZSBvbmVzIHRoYXQgbWFrZSBkaWZmZXJlbmNlIGJldHdlZW4gT3BlblNTTCBwcmUvcG9zdCB2 MzoKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lP Tl9NQUpPUiA+PSAzCisrWDUwOSAqcV9TU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7 CisrI2RlZmluZSBxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSBxX1NTTF9nZXQxX3BlZXJfY2Vy dGlmaWNhdGUKKytpbnQgcV9FVlBfUEtFWV9nZXRfYmFzZV9pZChjb25zdCBFVlBfUEtFWSAqcGtl eSk7CisrI2RlZmluZSBxX0VWUF9QS0VZX2Jhc2VfaWQgcV9FVlBfUEtFWV9nZXRfYmFzZV9pZAor KyNlbHNlCisrWDUwOSAqcV9TU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKytpbnQg cV9FVlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICphKTsKKysjZW5kaWYgLy8gT1BFTlNTTF9WRVJT SU9OX01BSk9SID49IDMKKysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2VuZGlmCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3Au aCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgK K2luZGV4IGJmMzdkMDdmZDguLmRiZDQyZmI3OTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCisrKysgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCitAQCAtNjEsNyArNjEs MTEgQEAKKyAjIGlmICFkZWZpbmVkKFFfT1NfSU5URUdSSVRZKQorICMgIGRlZmluZSBXSU5fSU5U RVJGQUNFX0NVU1RPTSAgIC8vIE5WCisgIyBlbmRpZiAvLyBRX09TX0lOVEVHUklUWQorLSNlbmRp ZiAgLy8gUVRfRUdMX05PX1gxMQorKyNlbHNlIC8vIFFUX0VHTF9OT19YMTEKKysvLyBJZiBvbmUg aGFzIGFuIGVnbHBsYXRmb3JtLmggd2l0aCBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3Vw L0VHTC1SZWdpc3RyeS9wdWxsLzEzMAorKy8vIHRoYXQgbmVlZHMgVVNFX1gxMSB0byBiZSBkZWZp bmVkLgorKyMgZGVmaW5lIFVTRV9YMTEKKysjZW5kaWYKKyAKKyAjaWZkZWYgUVRfRUdMX1dBWUxB TkQKKyAjIGRlZmluZSBXQVlMQU5EIC8vIE5WCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2Uu Y3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmln L3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCitpbmRleCAxNTliNDkwY2UwLi4wMGFhODBjZDU4IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250 Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAK K0BAIC01NjcsNiArNTY3LDggQEAgdm9pZCBRRm9udGNvbmZpZ0RhdGFiYXNlOjpwb3B1bGF0ZUZv bnREYXRhYmFzZSgpCisgICAgICAgICBmb250cyA9IEZjRm9udExpc3QobnVsbHB0ciwgcGF0dGVy biwgb3MpOworICAgICAgICAgRmNPYmplY3RTZXREZXN0cm95KG9zKTsKKyAgICAgICAgIEZjUGF0 dGVybkRlc3Ryb3kocGF0dGVybik7CisrICAgICAgICBpZiAoIWZvbnRzKQorKyAgICAgICAgICAg IHJldHVybjsKKyAgICAgfQorIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvbnRzLT5uZm9u dDsgaSsrKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hr YmNvbW1vbi9xeGtiY29tbW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0 L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAoraW5kZXggYjcxM2MxOTQ0Ny4uN2NiOWE4Yzc5YSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9x eGtiY29tbW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGti Y29tbW9uL3F4a2Jjb21tb24uY3BwCitAQCAtOTUsNiArOTUsNyBAQCBzdGF0aWMgY29uc3RleHBy IGNvbnN0IGF1dG8gS2V5VGJsID0gcU1ha2VBcnJheSgKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZ X0NsZWFyLCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X0RlbGV0ZT4sCisgICAgICAgICBYa2Iy UXQ8WEtCX0tFWV9QYXVzZSwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9QYXVzZT4sCisgICAg ICAgICBYa2IyUXQ8WEtCX0tFWV9QcmludCwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9Qcmlu dD4sCisrICAgICAgICBYa2IyUXQ8WEtCX0tFWV9TeXNfUmVxLCAgICAgICAgICAgICAgICAgUXQ6 OktleV9TeXNSZXE+LAorICAgICAgICAgWGtiMlF0PDB4MTAwNUZGNjAsICAgICAgICAgICAgICAg ICAgICAgIFF0OjpLZXlfU3lzUmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgU3VuIFN5c1JlcQor ICAgICAgICAgWGtiMlF0PDB4MTAwN2ZmMDAsICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlf U3lzUmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgWDM4NiBTeXNSZXEKKyAKK0BAIC00NzEsNyAr NDcyLDcgQEAgUVZlY3Rvcjx4a2Jfa2V5c3ltX3Q+IFFYa2JDb21tb246OnRvS2V5c3ltKFFLZXlF dmVudCAqZXZlbnQpCisgICAgIH0gZWxzZSBpZiAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6Oktl eXBhZE1vZGlmaWVyKSB7CisgICAgICAgICBpZiAocXRLZXkgPj0gUXQ6OktleV8wICYmIHF0S2V5 IDw9IFF0OjpLZXlfOSkKKyAgICAgICAgICAgICBrZXlzeW1zLmFwcGVuZChYS0JfS0VZX0tQXzAg KyAocXRLZXkgLSBRdDo6S2V5XzApKTsKKy0gICAgfSBlbHNlIGlmIChpc0xhdGluKHF0S2V5KSAm JiBldmVudC0+dGV4dCgpLmlzVXBwZXIoKSkgeworKyAgICB9IGVsc2UgaWYgKGlzTGF0aW4xKHF0 S2V5KSAmJiBldmVudC0+dGV4dCgpLmlzVXBwZXIoKSkgeworICAgICAgICAga2V5c3ltcy5hcHBl bmQocXRLZXkpOworICAgICB9CisgCitAQCAtNTIzLDcgKzUyNCw3IEBAIGludCBRWGtiQ29tbW9u OjprZXlzeW1Ub1F0S2V5KHhrYl9rZXlzeW1fdCBrZXlzeW0sIFF0OjpLZXlib2FyZE1vZGlmaWVy cyBtb2RpZmllCisgICAgICAgICAvLyBXaXRoIHN0YW5kYXJkIHNob3J0Y3V0cyB3ZSBzaG91bGQg cHJlZmVyIGEgbGF0aW4gY2hhcmFjdGVyLCB0aGlzIGlzCisgICAgICAgICAvLyBmb3IgY2hlY2tz IGxpa2UgInNvbWUgcWtleWV2ZW50ID09IFFLZXlTZXF1ZW5jZTo6Q29weSIgdG8gd29yayBldmVu CisgICAgICAgICAvLyB3aGVuIHVzaW5nIGZvciBleGFtcGxlICdydXNzaWFuJyBrZXlib2FyZCBs YXlvdXQuCistICAgICAgICBpZiAoIVFYa2JDb21tb246OmlzTGF0aW4oa2V5c3ltKSkgeworKyAg ICAgICAgaWYgKCFRWGtiQ29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7CisgICAgICAgICAgICAg eGtiX2tleXN5bV90IGxhdGluS2V5c3ltID0gUVhrYkNvbW1vbjo6bG9va3VwTGF0aW5LZXlzeW0o c3RhdGUsIGNvZGUpOworICAgICAgICAgICAgIGlmIChsYXRpbktleXN5bSAhPSBYS0JfS0VZX05v U3ltYm9sKQorICAgICAgICAgICAgICAgICBrZXlzeW0gPSBsYXRpbktleXN5bTsKK0BAIC01NDYs NyArNTQ3LDcgQEAgc3RhdGljIGludCBrZXlzeW1Ub1F0S2V5X2ludGVybmFsKHhrYl9rZXlzeW1f dCBrZXlzeW0sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2QKKyAgICAgfSBlbHNlIGlmIChrZXlz eW0gPj0gWEtCX0tFWV9LUF8wICYmIGtleXN5bSA8PSBYS0JfS0VZX0tQXzkpIHsKKyAgICAgICAg IC8vIG51bWVyaWMga2V5cGFkIGtleXMKKyAgICAgICAgIHF0S2V5ID0gUXQ6OktleV8wICsgKGtl eXN5bSAtIFhLQl9LRVlfS1BfMCk7CistICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1vbjo6aXNMYXRp bihrZXlzeW0pKSB7CisrICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1vbjo6aXNMYXRpbjEoa2V5c3lt KSkgeworICAgICAgICAgcXRLZXkgPSBRWGtiQ29tbW9uOjpxeGtiY29tbW9uX3hrYl9rZXlzeW1f dG9fdXBwZXIoa2V5c3ltKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIGNoZWNrIGlmIHdl IGhhdmUgYSBkaXJlY3QgbWFwcGluZworQEAgLTY3OCw3ICs2NzksNyBAQCBRTGlzdDxpbnQ+IFFY a2JDb21tb246OnBvc3NpYmxlS2V5cyh4a2Jfc3RhdGUgKnN0YXRlLCBjb25zdCBRS2V5RXZlbnQg KmV2ZW50LAorICAgICAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG5lZWRlZE1vZHMgPSBNb2Rz VGJsW2ldOworICAgICAgICAgaWYgKChtb2RpZmllcnMgJiBuZWVkZWRNb2RzKSA9PSBuZWVkZWRN b2RzKSB7CisgICAgICAgICAgICAgaWYgKGkgPT0gOCkgeworLSAgICAgICAgICAgICAgICBpZiAo aXNMYXRpbihiYXNlUXRLZXkpKQorKyAgICAgICAgICAgICAgICBpZiAoaXNMYXRpbjEoYmFzZVF0 S2V5KSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAv LyBhZGQgYSBsYXRpbiBrZXkgYXMgYSBmYWxsIGJhY2sga2V5CisgICAgICAgICAgICAgICAgIHN5 bSA9IGxvb2t1cExhdGluS2V5c3ltKHN0YXRlLCBrZXljb2RlKTsKK0BAIC03MzMsNyArNzM0LDcg QEAgdm9pZCBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRpbkxheW91dCh4a2Jfa2V5bWFwICprZXlt YXApCisgICAgIGZvciAoeGtiX2xheW91dF9pbmRleF90IGxheW91dCA9IDA7IGxheW91dCA8IGxh eW91dENvdW50OyArK2xheW91dCkgeworICAgICAgICAgZm9yICh4a2Jfa2V5Y29kZV90IGNvZGUg PSBtaW5LZXljb2RlOyBjb2RlIDwgbWF4S2V5Y29kZTsgKytjb2RlKSB7CisgICAgICAgICAgICAg eGtiX2tleW1hcF9rZXlfZ2V0X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBjb2RlLCBsYXlvdXQsIDAs ICZrZXlzeW1zKTsKKy0gICAgICAgICAgICBpZiAoa2V5c3ltcyAmJiBpc0xhdGluKGtleXN5bXNb MF0pKQorKyAgICAgICAgICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4xKGtleXN5bXNbMF0pKQor ICAgICAgICAgICAgICAgICBuckxhdGluS2V5cysrOworICAgICAgICAgICAgIGlmIChuckxhdGlu S2V5cyA+IDEwKSAvLyBhcmJpdHJhcmlseSBjaG9zZW4gdGhyZXNob2xkCisgICAgICAgICAgICAg ICAgIHJldHVybjsKK0BAIC03NjYsNyArNzY3LDcgQEAgeGtiX2tleXN5bV90IFFYa2JDb21tb246 Omxvb2t1cExhdGluS2V5c3ltKHhrYl9zdGF0ZSAqc3RhdGUsIHhrYl9rZXljb2RlX3Qga2V5Y28K KyAgICAgICAgIHhrYl9sZXZlbF9pbmRleF90IGxldmVsID0geGtiX3N0YXRlX2tleV9nZXRfbGV2 ZWwoc3RhdGUsIGtleWNvZGUsIGxheW91dCk7CisgICAgICAgICBpZiAoeGtiX2tleW1hcF9rZXlf Z2V0X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBrZXljb2RlLCBsYXlvdXQsIGxldmVsLCAmc3ltcykg IT0gMSkKKyAgICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgIGlmIChpc0xhdGluKHN5bXNb MF0pKSB7CisrICAgICAgICBpZiAoaXNMYXRpbjEoc3ltc1swXSkpIHsKKyAgICAgICAgICAgICBz eW0gPSBzeW1zWzBdOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9u X3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29t bW9uX3AuaAoraW5kZXggNTYxZWFlMDNkYi4uODM4OWJkOGY1YSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaAorKysr IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25f cC5oCitAQCAtOTQsOCArOTQsOCBAQCBwdWJsaWM6CisgICAgIHN0YXRpYyB2b2lkIHZlcmlmeUhh c0xhdGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCk7CisgICAgIHN0YXRpYyB4a2Jfa2V5c3lt X3QgbG9va3VwTGF0aW5LZXlzeW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVfdCBrZXlj b2RlKTsKKyAKKy0gICAgc3RhdGljIGJvb2wgaXNMYXRpbih4a2Jfa2V5c3ltX3Qgc3ltKSB7Cist ICAgICAgICByZXR1cm4gKChzeW0gPj0gJ2EnICYmIHN5bSA8PSAneicpIHx8IChzeW0gPj0gJ0En ICYmIHN5bSA8PSAnWicpKTsKKysgICAgc3RhdGljIGJvb2wgaXNMYXRpbjEoeGtiX2tleXN5bV90 IHN5bSkgeworKyAgICAgICAgcmV0dXJuIHN5bSA8PSAweGZmOworICAgICB9CisgICAgIHN0YXRp YyBib29sIGlzS2V5cGFkKHhrYl9rZXlzeW1fdCBzeW0pIHsKKyAgICAgICAgIHJldHVybiBzeW0g Pj0gWEtCX0tFWV9LUF9TcGFjZSAmJiBzeW0gPD0gWEtCX0tFWV9LUF85OworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3Bw IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5j cHAKK2luZGV4IDhjZDdmOWIzNjguLjQwNmY4NDY2M2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAorKysrIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAKK0BA IC0zMTgsNyArMzE4LDcgQEAgUVBsYXRmb3JtU2NyZWVuICpRS21zRGV2aWNlOjpjcmVhdGVTY3Jl ZW5Gb3JDb25uZWN0b3IoZHJtTW9kZVJlc1B0ciByZXNvdXJjZXMsCisgCisgICAgIGlmIChjdXJy ZW50IDwgMCAmJiBjcnRjX21vZGUuY2xvY2sgIT0gMCkgeworICAgICAgICAgbW9kZXMgPDwgY3J0 Y19tb2RlOworLSAgICAgICAgY3VycmVudCA9IG1vZGUuc2l6ZSgpIC0gMTsKKysgICAgICAgIGN1 cnJlbnQgPSBtb2Rlcy5zaXplKCkgLSAxOworICAgICB9CisgCisgICAgIGlmIChjb25maWd1cmF0 aW9uID09IE91dHB1dENvbmZpZ0N1cnJlbnQpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAgYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcAor aW5kZXggOTE1M2ZkMjBiYi4uMjU1ZWE1ZTMzZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9y LmNwcAorQEAgLTE5NCw2ICsxOTQsOSBAQCBRU3RyaW5nIEF0U3BpQWRhcHRvcjo6aW50cm9zcGVj dChjb25zdCBRU3RyaW5nICZwYXRoKSBjb25zdAorICAgICAgICAgICAgICAgICAiICAgICAgPGFy ZyBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwiKHNvKVwiLz5cbiIKKyAgICAgICAgICAgICAgICAg IiAgICAgIDxhbm5vdGF0aW9uIHZhbHVlPVwiUVNwaU9iamVjdFJlZmVyZW5jZVwiIG5hbWU9XCJv cmcucXRwcm9qZWN0LlF0REJ1cy5RdFR5cGVOYW1lLk91dDBcIi8+XG4iCisgICAgICAgICAgICAg ICAgICIgICAgPC9tZXRob2Q+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPG1ldGhvZCBuYW1l PVwiR2V0QWNjZXNzaWJsZUlkXCI+XG4iCisrICAgICAgICAgICAgICAgICIgICAgICA8YXJnIGRp cmVjdGlvbj1cIm91dFwiIHR5cGU9XCJzXCIvPlxuIgorKyAgICAgICAgICAgICAgICAiICAgIDwv bWV0aG9kPlxuIgorICAgICAgICAgICAgICAgICAiICA8L2ludGVyZmFjZT5cbiIKKyAgICAgICAg ICAgICAgICAgKTsKKyAKK0BAIC05MTMsOCArOTE2LDE3IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpu b3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisgICAgIH0KKyAgICAgY2FzZSBRQWNjZXNz aWJsZTo6TmFtZUNoYW5nZWQ6IHsKKyAgICAgICAgIGlmIChzZW5kT2JqZWN0IHx8IHNlbmRPYmpl Y3RfcHJvcGVydHlfY2hhbmdlIHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlX2FjY2Vzc2li bGVfbmFtZSkgeworLSAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2Uo ZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKSk7CistICAgICAgICAgICAgUVZhcmlhbnRMaXN0 IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxl LW5hbWUiKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgIFFBY2Nl c3NpYmxlSW50ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCk7Cisr ICAgICAgICAgICAgaWYgKCFpZmFjZSkgeworKyAgICAgICAgICAgICAgICBxQ0RlYnVnKGxjQWNj ZXNzaWJpbGl0eUF0c3BpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJOYW1lQ2hhbmdlZCBl dmVudCBmcm9tIGludmFsaWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJu OworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9y SW50ZXJmYWNlKGlmYWNlKTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tE QnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nl c3NpYmxlLW5hbWUiKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1 ZShRREJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFjY2Vzc2libGU6Ok5hbWUpKSkpOworICAgICAg ICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19JTlRF UkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4x U3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsKKyAgICAgICAgIH0KK0BAIC05MjIsOCAr OTM0LDE3IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZl bnQpCisgICAgIH0KKyAgICAgY2FzZSBRQWNjZXNzaWJsZTo6RGVzY3JpcHRpb25DaGFuZ2VkOiB7 CisgICAgICAgICBpZiAoc2VuZE9iamVjdCB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZSB8 fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZV9hY2Nlc3NpYmxlX2Rlc2NyaXB0aW9uKSB7Cist ICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVudC0+YWNjZXNz aWJsZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tE QnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtZGVzY3JpcHRpb24i KSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgIFFBY2Nlc3NpYmxl SW50ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCk7CisrICAgICAg ICAgICAgaWYgKCFpZmFjZSkgeworKyAgICAgICAgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJp bGl0eUF0c3BpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlvbkNoYW5nZWQg ZXZlbnQgZnJvbSBpbnZhbGlkIGFjY2Vzc2libGUuIik7CisrICAgICAgICAgICAgICAgIHJldHVy bjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZv ckludGVyZmFjZShpZmFjZSk7CisrICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNr REJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiYWNj ZXNzaWJsZS1kZXNjcmlwdGlvbiIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICBRVmFyaWFudDo6 ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6RGVzY3JpcHRp b24pKSkpOworICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmco QVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsKKyAgICAgICAg IH0KK0BAIC0xMDM4LDcgKzEwNTksOSBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nl c3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICAgICAgICAgICAgICAvLyBDb21ibyBCb3ggd2l0aCBB VC1TUEkgbGlrZXMgdG8gYmUgc3BlY2lhbAorICAgICAgICAgICAgICAgICAvLyBJdCByZXF1aXJl cyBhIG5hbWUtY2hhbmdlIHRvIHVwZGF0ZSBjYWNoZXMgYW5kIHRoZW4gc2VsZWN0aW9uLWNoYW5n ZWQKKyAgICAgICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShpZmFj ZSk7CistICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMSA9IHBhY2tEQnVzU2lnbmFs QXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLCB2YXJpYW50 Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMSA9IHBh Y2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmlu ZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsCisrICAgICAgICAgICAgICAgICAgICBRVmFyaWFu dDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkp KSk7CisgICAgICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmco QVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJnczEpOworICAg ICAgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJnczIgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50 cyhRU3RyaW5nKCksIDAsIDAsIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KFFWYXJp YW50KDApKSkpOworQEAgLTEzNTgsNiArMTM4MSwyNiBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6cmVn aXN0ZXJBcHBsaWNhdGlvbigpCisgICAgIGRlbGV0ZSByZWdpc3RyeTsKKyB9CisgCisrbmFtZXNw YWNlIHsKKytRU3RyaW5nIGFjY2Vzc2libGVJZEZvckFjY2Vzc2libGUoUUFjY2Vzc2libGVJbnRl cmZhY2UgKmFjY2Vzc2libGUpCisreworKyAgICBRU3RyaW5nIHJlc3VsdDsKKysgICAgd2hpbGUg KGFjY2Vzc2libGUpIHsKKysgICAgICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKKysgICAgICAg ICAgICByZXN1bHQucHJlcGVuZChRTGF0aW4xQ2hhcignLicpKTsKKysgICAgICAgIGlmIChhdXRv IG9iaiA9IGFjY2Vzc2libGUtPm9iamVjdCgpKSB7CisrICAgICAgICAgICAgY29uc3QgUVN0cmlu ZyBuYW1lID0gb2JqLT5vYmplY3ROYW1lKCk7CisrICAgICAgICAgICAgaWYgKCFuYW1lLmlzRW1w dHkoKSkKKysgICAgICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQobmFtZSk7CisrICAgICAgICAg ICAgZWxzZQorKyAgICAgICAgICAgICAgICByZXN1bHQucHJlcGVuZChRU3RyaW5nOjpmcm9tVXRm OChvYmotPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpKTsKKysgICAgICAgIH0KKysgICAgICAg IGFjY2Vzc2libGUgPSBhY2Nlc3NpYmxlLT5wYXJlbnQoKTsKKysgICAgfQorKyAgICByZXR1cm4g cmVzdWx0OworK30KKyt9IC8vIG5hbWVzcGFjZQorKworIC8vIEFjY2Vzc2libGUKKyBib29sIEF0 U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZShRQWNjZXNzaWJsZUludGVyZmFjZSAqaW50 ZXJmYWNlLCBjb25zdCBRU3RyaW5nICZmdW5jdGlvbiwgY29uc3QgUURCdXNNZXNzYWdlICZtZXNz YWdlLCBjb25zdCBRREJ1c0Nvbm5lY3Rpb24gJmNvbm5lY3Rpb24pCisgeworQEAgLTE0NDEsNiAr MTQ4NCw5IEBAIGJvb2wgQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlKFFBY2Nlc3Np YmxlSW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFTCisgICAgICAgICAgICAgY2hpbGRyZW4g PDwgcmVmOworICAgICAgICAgfQorICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1lc3NhZ2UuY3Jl YXRlUmVwbHkoUVZhcmlhbnQ6OmZyb21WYWx1ZShjaGlsZHJlbikpKTsKKysgICAgfSBlbHNlIGlm IChmdW5jdGlvbiA9PSBRTGF0aW4xU3RyaW5nKCJHZXRBY2Nlc3NpYmxlSWQiKSkgeworKyAgICAg ICAgc2VuZFJlcGx5KGNvbm5lY3Rpb24sIG1lc3NhZ2UsCisrICAgICAgICAgICAgICAgICAgUVZh cmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoYWNjZXNzaWJsZUlkRm9yQWNjZXNzaWJsZShp bnRlcmZhY2UpKSkpOworICAgICB9IGVsc2UgeworICAgICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2li aWxpdHlBdHNwaSkgPDwgIldBUk5JTkc6IEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFj ZSBkb2VzIG5vdCBpbXBsZW1lbnQgIiA8PCBmdW5jdGlvbiA8PCBtZXNzYWdlLnBhdGgoKTsKKyAg ICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAoraW5k ZXggNDVkZGM4ZTQ5Ni4uY2M3MzRhYmM2MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlv bi5jcHAKK0BAIC02OSw2ICs2OSwyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBEQnVzQ29ubmVj dGlvbjo6REJ1c0Nvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50KQorICAgICA6IFFPYmplY3QocGFy ZW50KSwgbV9hMTF5Q29ubmVjdGlvbihRU3RyaW5nKCkpLCBtX2VuYWJsZWQoZmFsc2UpCisgewor KyAgICAvLyBJZiB0aGUgYnVzIGlzIGV4cGxpY2l0bHkgc2V0IHZpYSBlbnYgdmFyIGl0IG92ZXJy aWRlcyBldmVyeXRoaW5nIGVsc2UuCisrICAgIFFCeXRlQXJyYXkgYWRkcmVzc0VudiA9IHFnZXRl bnYoIkFUX1NQSV9CVVNfQUREUkVTUyIpOworKyAgICBpZiAoIWFkZHJlc3NFbnYuaXNFbXB0eSgp KSB7CisrICAgICAgICAvLyBPbmx5IGNvbm5lY3Qgb24gbmV4dCBsb29wIHJ1biwgY29ubmVjdGlv bnMgdG8gb3VyIGVuYWJsZWQgc2lnbmFsIGFyZQorKyAgICAgICAgLy8gb25seSBlc3RhYmxpc2hl ZCBhZnRlciB0aGUgY3RvciByZXR1cm5zLgorKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1l dGhvZCgKKysgICAgICAgICAgICAgICAgdGhpcywKKysgICAgICAgICAgICAgICAgW3RoaXMsIGFk ZHJlc3NFbnZdIHsKKysgICAgICAgICAgICAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CisrICAg ICAgICAgICAgICAgICAgICBjb25uZWN0QTExeUJ1cyhRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KGFk ZHJlc3NFbnYpKTsKKysgICAgICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAgICAgUXQ6OlF1 ZXVlZENvbm5lY3Rpb24pOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAgIC8vIFN0 YXJ0IG1vbml0b3JpbmcgaWYgIm9yZy5hMTF5LkJ1cyIgaXMgcmVnaXN0ZXJlZCBhcyBEQnVzIHNl cnZpY2UuCisgICAgIFFEQnVzQ29ubmVjdGlvbiBjID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9u QnVzKCk7CisgICAgIGlmICghYy5pc0Nvbm5lY3RlZCgpKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2Vy dmljZXMuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3Vu aXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCitpbmRleCAxYTNjYWIyNzVkLi4yYWJlMDM5MTI2 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJp Y3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAKK0BA IC01MSw2ICs1MSw5IEBACisgI2luY2x1ZGUgPFF0Q29yZS9RU3RhbmRhcmRQYXRocz4KKyAjaW5j bHVkZSA8UXRDb3JlL1FVcmw+CisgCisrI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNhdGlvbj4K KysjaW5jbHVkZSA8UXRHdWkvUVdpbmRvdz4KKysKKyAjaWYgUVRfQ09ORklHKGRidXMpCisgLy8g VGhlc2UgUXRDb3JlIGluY2x1ZGVzIGFyZSBuZWVkZWQgZm9yIHhkZy1kZXNrdG9wLXBvcnRhbCBz dXBwb3J0CisgI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3Fjb3JlX3VuaXhfcC5oPgorQEAgLTU4 LDYgKzYxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FGaWxlSW5mbz4KKyAjaW5jbHVkZSA8UXRD b3JlL1FVcmxRdWVyeT4KKyAKKysjaW5jbHVkZSA8UXRHdWkvUUNvbG9yPgorKworICNpbmNsdWRl IDxRdERCdXMvUURCdXNDb25uZWN0aW9uPgorICNpbmNsdWRlIDxRdERCdXMvUURCdXNNZXNzYWdl PgorICNpbmNsdWRlIDxRdERCdXMvUURCdXNQZW5kaW5nQ2FsbD4KK0BAIC0xNDIsNiArMTQ3LDgg QEAgc3RhdGljIGlubGluZSBib29sIGRldGVjdFdlYkJyb3dzZXIoY29uc3QgUUJ5dGVBcnJheSAm ZGVza3RvcCwKKyAgICAgfQorIAorICAgICBpZiAoZGVza3RvcCA9PSBRQnl0ZUFycmF5KCJLREUi KSkgeworKyAgICAgICAgaWYgKGNoZWNrRXhlY3V0YWJsZShRU3RyaW5nTGl0ZXJhbCgia2RlLW9w ZW41IiksIGJyb3dzZXIpKQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgLy8g S29ucXVlcm9yIGxhdW5jaGVyCisgICAgICAgICBpZiAoY2hlY2tFeGVjdXRhYmxlKFFTdHJpbmdM aXRlcmFsKCJrZm1jbGllbnQiKSwgYnJvd3NlcikpIHsKKyAgICAgICAgICAgICBicm93c2VyLT5h cHBlbmQoUUxhdGluMVN0cmluZygiIGV4ZWMiKSk7CitAQCAtMjk2LDggKzMwMywxMzUgQEAgc3Rh dGljIGlubGluZSBRREJ1c01lc3NhZ2UgeGRnRGVza3RvcFBvcnRhbFNlbmRFbWFpbChjb25zdCBR VXJsICZ1cmwpCisgCisgICAgIHJldHVybiBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5j YWxsKG1lc3NhZ2UpOworIH0KKysKKytuYW1lc3BhY2UgeworK3N0cnVjdCBYREdEZXNrdG9wQ29s b3IKKyt7CisrICAgIGRvdWJsZSByID0gMDsKKysgICAgZG91YmxlIGcgPSAwOworKyAgICBkb3Vi bGUgYiA9IDA7CisrCisrICAgIFFDb2xvciB0b1FDb2xvcigpIGNvbnN0CisrICAgIHsKKysgICAg ICAgIGNvbnN0ZXhwciBhdXRvIHJnYk1heCA9IDI1NTsKKysgICAgICAgIHJldHVybiB7IHN0YXRp Y19jYXN0PGludD4ociAqIHJnYk1heCksIHN0YXRpY19jYXN0PGludD4oZyAqIHJnYk1heCksCisr ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGIgKiByZ2JNYXgpIH07CisrICAgIH0K Kyt9OworKworK2NvbnN0IFFEQnVzQXJndW1lbnQgJm9wZXJhdG9yPj4oY29uc3QgUURCdXNBcmd1 bWVudCAmYXJndW1lbnQsIFhER0Rlc2t0b3BDb2xvciAmbXlTdHJ1Y3QpCisreworKyAgICBhcmd1 bWVudC5iZWdpblN0cnVjdHVyZSgpOworKyAgICBhcmd1bWVudCA+PiBteVN0cnVjdC5yID4+IG15 U3RydWN0LmcgPj4gbXlTdHJ1Y3QuYjsKKysgICAgYXJndW1lbnQuZW5kU3RydWN0dXJlKCk7Cisr ICAgIHJldHVybiBhcmd1bWVudDsKKyt9CisrCisrY2xhc3MgWGRnRGVza3RvcFBvcnRhbENvbG9y UGlja2VyIDogcHVibGljIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcgorK3sKKysgICAgUV9P QkpFQ1QKKytwdWJsaWM6CisrICAgIFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlcihjb25zdCBR U3RyaW5nICZwYXJlbnRXaW5kb3dJZCwgUVdpbmRvdyAqcGFyZW50KQorKyAgICAgICAgOiBRUGxh dGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIocGFyZW50KSwgbV9wYXJlbnRXaW5kb3dJZChwYXJlbnRX aW5kb3dJZCkKKysgICAgeworKyAgICB9CisrCisrICAgIHZvaWQgcGlja0NvbG9yKCkgb3ZlcnJp ZGUKKysgICAgeworKyAgICAgICAgLy8gREJ1cyBzaWduYXR1cmU6CisrICAgICAgICAvLyBQaWNr Q29sb3IgKElOICAgcyAgICAgIHBhcmVudF93aW5kb3csCisrICAgICAgICAvLyAgICAgICAgICAg IElOICAgYXtzdn0gIG9wdGlvbnMKKysgICAgICAgIC8vICAgICAgICAgICAgT1VUICBvICAgICAg aGFuZGxlKQorKyAgICAgICAgLy8gT3B0aW9uczoKKysgICAgICAgIC8vIGhhbmRsZV90b2tlbiAo cykgLSAgQSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGxhc3QgZWxlbWVudCBvZiB0 aGUgQGhhbmRsZS4KKysKKysgICAgICAgIFFEQnVzTWVzc2FnZSBtZXNzYWdlID0gUURCdXNNZXNz YWdlOjpjcmVhdGVNZXRob2RDYWxsKAorKyAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgi b3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiksIFFTdHJpbmdMaXRlcmFsKCIvb3JnL2Zy ZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisrICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRl cmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKSwgUVN0cmluZ0xpdGVyYWwo IlBpY2tDb2xvciIpKTsKKysgICAgICAgIG1lc3NhZ2UgPDwgbV9wYXJlbnRXaW5kb3dJZCA8PCBR VmFyaWFudE1hcCgpOworKworKyAgICAgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9 IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsKKysgICAg ICAgIGF1dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2Fs bCwgdGhpcyk7CisrICAgICAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0 Y2hlcjo6ZmluaXNoZWQsIHRoaXMsCisrICAgICAgICAgICAgICAgIFt0aGlzXShRREJ1c1BlbmRp bmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci0+ ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFE QnVzT2JqZWN0UGF0aD4gcmVwbHkgPSAqd2F0Y2hlcjsKKysgICAgICAgICAgICAgICAgICAgIGlm IChyZXBseS5pc0Vycm9yKCkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBxV2FybmluZygi REJ1cyBjYWxsIHRvIHBpY2sgY29sb3IgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcVByaW50YWJsZShyZXBseS5lcnJvcigpLm1lc3NhZ2UoKSkpOworKyAg ICAgICAgICAgICAgICAgICAgICAgIFFfRU1JVCBjb2xvclBpY2tlZCh7fSk7CisrICAgICAgICAg ICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgIFFEQnVzQ29ubmVj dGlvbjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3QoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiksIHJl cGx5LnZhbHVlKCkucGF0aCgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0 cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCIpLCBRU3RyaW5nTGl0 ZXJhbCgiUmVzcG9uc2UiKSwgdGhpcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIGNsYW5nLWZvcm1hdCBvZmYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNM T1QoZ290Q29sb3JSZXNwb25zZSh1aW50LFFWYXJpYW50TWFwKSkKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorKyAgICAgICAgICAgICAgICAgICAg ICAgICk7CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0pOworKyAg ICB9CisrCisrcHJpdmF0ZSBRX1NMT1RTOgorKyAgICB2b2lkIGdvdENvbG9yUmVzcG9uc2UodWlu dCByZXN1bHQsIGNvbnN0IFFWYXJpYW50TWFwICZtYXApCisrICAgIHsKKysgICAgICAgIGlmIChy ZXN1bHQgIT0gMCkKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICBYREdEZXNrdG9wQ29s b3IgY29sb3J7fTsKKysgICAgICAgIG1hcC52YWx1ZShRU3RyaW5nTGl0ZXJhbCgiY29sb3IiKSku dmFsdWU8UURCdXNBcmd1bWVudD4oKSA+PiBjb2xvcjsKKysgICAgICAgIFFfRU1JVCBjb2xvclBp Y2tlZChjb2xvci50b1FDb2xvcigpKTsKKysgICAgICAgIGRlbGV0ZUxhdGVyKCk7CisrICAgIH0K KysKKytwcml2YXRlOgorKyAgICBjb25zdCBRU3RyaW5nIG1fcGFyZW50V2luZG93SWQ7CisrfTsK Kyt9IC8vIG5hbWVzcGFjZQorKworICNlbmRpZiAvLyBRVF9DT05GSUcoZGJ1cykKKyAKKytRR2Vu ZXJpY1VuaXhTZXJ2aWNlczo6UUdlbmVyaWNVbml4U2VydmljZXMoKQorK3sKKysjaWYgUVRfQ09O RklHKGRidXMpCisrICAgIGlmIChxRW52aXJvbm1lbnRWYXJpYWJsZUludFZhbHVlKCJRVF9OT19Y REdfREVTS1RPUF9QT1JUQUwiKSA+IDApIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAg ICBRREJ1c01lc3NhZ2UgbWVzc2FnZSA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgK KysgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNr dG9wIiksIFFTdHJpbmdMaXRlcmFsKCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiks CisrICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5EQnVzLlByb3Bl cnRpZXMiKSwgUVN0cmluZ0xpdGVyYWwoIkdldCIpKTsKKysgICAgbWVzc2FnZSA8PCBRU3RyaW5n TGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5zaG90IikKKysgICAgICAgICAg ICA8PCBRU3RyaW5nTGl0ZXJhbCgidmVyc2lvbiIpOworKworKyAgICBRREJ1c1BlbmRpbmdDYWxs IHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1l c3NhZ2UpOworKyAgICBhdXRvIHdhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIo cGVuZGluZ0NhbGwpOworKyAgICBRT2JqZWN0Ojpjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRp bmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHdhdGNoZXIsCisrICAgICAgICAgICAgICAgICAgICAg W3RoaXNdKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgICAgICAgICAg ICAgICAgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAgICAgICAg ICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFWYXJpYW50PiByZXBseSA9ICp3YXRjaGVyOworKyAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcGx5LmlzRXJyb3IoKSAmJiByZXBseS52YWx1 ZSgpLnRvVUludCgpID49IDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hhc1Nj cmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAg ICAgICB9KTsKKysKKysjZW5kaWYKKyt9CisrCisrUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2Vy ICpRR2VuZXJpY1VuaXhTZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50KQorK3sK KysjaWYgUVRfQ09ORklHKGRidXMpCisrICAgIC8vIE1ha2UgZG91YmxlIHN1cmUgdGhhdCB3ZSBh cmUgaW4gYSB3YXlsYW5kIGVudmlyb25tZW50LiBJbiBwYXJ0aWN1bGFyIGNoZWNrCisrICAgIC8v IFdBWUxBTkRfRElTUExBWSBzbyBhbHNvIFhXYXlsYW5kIGFwcHMgYmVuZWZpdCBmcm9tIHBvcnRh bC1iYXNlZCBjb2xvciBwaWNraW5nLgorKyAgICAvLyBPdXRzaWRlIHdheWxhbmQgd2UnbGwgcmF0 aGVyIHJlbHkgb24gb3RoZXIgbWVhbnMgdGhhbiB0aGUgWERHIGRlc2t0b3AgcG9ydGFsLgorKyAg ICBpZiAoIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNFbXB0eSgiV0FZTEFORF9ESVNQTEFZIikKKysg ICAgICAgIHx8IFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkuc3RhcnRzV2l0aChRTGF0 aW4xU3RyaW5nKCJ3YXlsYW5kIikpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFhkZ0Rlc2t0b3BQ b3J0YWxDb2xvclBpY2tlcihwb3J0YWxXaW5kb3dJZGVudGlmaWVyKHBhcmVudCksIHBhcmVudCk7 CisrICAgIH0KKysgICAgcmV0dXJuIG51bGxwdHI7CisrI2Vsc2UKKysgICAgUV9VTlVTRUQocGFy ZW50KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrI2VuZGlmCisrfQorKworIFFCeXRlQXJyYXkg UUdlbmVyaWNVbml4U2VydmljZXM6OmRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0CisgeworICAg ICBzdGF0aWMgY29uc3QgUUJ5dGVBcnJheSByZXN1bHQgPSBkZXRlY3REZXNrdG9wRW52aXJvbm1l bnQoKTsKK0BAIC0zNTIsNiArNDg2LDggQEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6b3Bl bkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCkKKyB9CisgCisgI2Vsc2UKKytRR2VuZXJpY1VuaXhT ZXJ2aWNlczo6UUdlbmVyaWNVbml4U2VydmljZXMoKSA9IGRlZmF1bHQ7CisrCisgUUJ5dGVBcnJh eSBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyB7Cisg ICAgIHJldHVybiBRQnl0ZUFycmF5TGl0ZXJhbCgiVU5LTk9XTiIpOworQEAgLTM3MSw2ICs1MDcs MzAgQEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6b3BlbkRvY3VtZW50KGNvbnN0IFFVcmwg JnVybCkKKyAgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQ aWNrZXIgKlFHZW5lcmljVW5peFNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQp CisreworKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9Cisr CisgI2VuZGlmIC8vIFFUX05PX01VTFRJUFJPQ0VTUworIAorK1FTdHJpbmcgUUdlbmVyaWNVbml4 U2VydmljZXM6OnBvcnRhbFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93KQorK3sKKysg ICAgaWYgKFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkgPT0gUUxhdGluMVN0cmluZygi eGNiIikpCisrICAgICAgICByZXR1cm4gUVN0cmluZ0xpdGVyYWwoIngxMToiKSArIFFTdHJpbmc6 Om51bWJlcih3aW5kb3ctPndpbklkKCksIDE2KTsKKysgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyt9 CisrCisrYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5 IGNhcGFiaWxpdHkpIGNvbnN0CisreworKyAgICBzd2l0Y2ggKGNhcGFiaWxpdHkpIHsKKysgICAg Y2FzZSBDYXBhYmlsaXR5OjpDb2xvclBpY2tpbmc6CisrICAgICAgICByZXR1cm4gbV9oYXNTY3Jl ZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZzsKKysgICAgfQorKyAgICByZXR1cm4gZmFsc2U7 CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UKKysKKysjaW5jbHVkZSAicWdlbmVyaWN1bml4c2Vy dmljZXMubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZp Y2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaCBiL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3Au aAoraW5kZXggOGFjM2RlNmYwMy4uMzA5MjRlNjRiZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2Vz X3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3Vu aXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitAQCAtNTksMTYgKzU5LDIxIEBAIFFUX0JFR0lO X05BTUVTUEFDRQorIGNsYXNzIFFHZW5lcmljVW5peFNlcnZpY2VzIDogcHVibGljIFFQbGF0Zm9y bVNlcnZpY2VzCisgeworIHB1YmxpYzoKKy0gICAgUUdlbmVyaWNVbml4U2VydmljZXMoKSB7fQor KyAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpOworIAorICAgICBRQnl0ZUFycmF5IGRlc2t0b3BF bnZpcm9ubWVudCgpIGNvbnN0IG92ZXJyaWRlOworIAorKyAgICBib29sIGhhc0NhcGFiaWxpdHko Q2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdCBvdmVycmlkZTsKKyAgICAgYm9vbCBvcGVuVXJs KGNvbnN0IFFVcmwgJnVybCkgb3ZlcnJpZGU7CisgICAgIGJvb2wgb3BlbkRvY3VtZW50KGNvbnN0 IFFVcmwgJnVybCkgb3ZlcnJpZGU7CisrICAgIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAq Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50ID0gbnVsbHB0cikgb3ZlcnJpZGU7CisrCisrICAg IHZpcnR1YWwgUVN0cmluZyBwb3J0YWxXaW5kb3dJZGVudGlmaWVyKFFXaW5kb3cgKndpbmRvdyk7 CisgCisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyBtX3dlYkJyb3dzZXI7CisgICAgIFFTdHJpbmcg bV9kb2N1bWVudExhdW5jaGVyOworKyAgICBib29sIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhD b2xvclBpY2tpbmcgPSBmYWxzZTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21l bnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90 aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAKK2luZGV4 IDA5NDcwYmNjYzYuLmNjN2M3ZDRkOGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9k YnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAorQEAgLTY5LDYgKzY5LDcgQEAgY29uc3Qg UVN0cmluZyBNZW51QmFyUGF0aCA9IFFMYXRpbjFTdHJpbmcoIi9NZW51QmFyIik7CisgKi8KKyBR REJ1c01lbnVDb25uZWN0aW9uOjpRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCwg Y29uc3QgUVN0cmluZyAmc2VydmljZU5hbWUpCisgICAgIDogUU9iamVjdChwYXJlbnQpCisrICAg ICwgbV9zZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZSkKKyAgICAgLCBtX2Nvbm5lY3Rpb24oc2Vydmlj ZU5hbWUuaXNOdWxsKCkgPyBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFFEQnVzQ29ubmVjdGlvbjo6Y29ubmVj dFRvQnVzKFFEQnVzQ29ubmVjdGlvbjo6U2Vzc2lvbkJ1cywgc2VydmljZU5hbWUpKQorICAgICAs IG1fZGJ1c1dhdGNoZXIobmV3IFFEQnVzU2VydmljZVdhdGNoZXIoU3RhdHVzTm90aWZpZXJXYXRj aGVyU2VydmljZSwgbV9jb25uZWN0aW9uLCBRREJ1c1NlcnZpY2VXYXRjaGVyOjpXYXRjaEZvclJl Z2lzdHJhdGlvbiwgdGhpcykpCitAQCAtODMsNiArODQsMTIgQEAgUURCdXNNZW51Q29ubmVjdGlv bjo6UURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcgJnNl cnZpY2UKKyAjZW5kaWYKKyB9CisgCisrUURCdXNNZW51Q29ubmVjdGlvbjo6flFEQnVzTWVudUNv bm5lY3Rpb24oKQorK3sKKysgIGlmICghbV9zZXJ2aWNlTmFtZS5pc0VtcHR5KCkgJiYgbV9jb25u ZWN0aW9uLmlzQ29ubmVjdGVkKCkpCisrICAgICAgUURCdXNDb25uZWN0aW9uOjpkaXNjb25uZWN0 RnJvbUJ1cyhtX3NlcnZpY2VOYW1lKTsKKyt9CisrCisgdm9pZCBRREJ1c01lbnVDb25uZWN0aW9u OjpkYnVzRXJyb3IoY29uc3QgUURCdXNFcnJvciAmZXJyb3IpCisgeworICAgICBxV2FybmluZygp IDw8ICJRREJ1c1RyYXlJY29uIGVuY291bnRlcmVkIGEgRC1CdXMgZXJyb3I6IiA8PCBlcnJvcjsK K0BAIC0xMDUsMTMgKzExMiw3IEBAIHZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3Rl clRyYXlJY29uTWVudShRREJ1c1RyYXlJY29uICppdGVtKQorIAorIGJvb2wgUURCdXNNZW51Q29u bmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIHsKKy0gICAg Ym9vbCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyU2VydmljZShpdGVtLT5pbnN0YW5j ZUlkKCkpOworLSAgICBpZiAoIXN1Y2Nlc3MpIHsKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwgImZh aWxlZCB0byByZWdpc3RlciBzZXJ2aWNlIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCk7CistICAgICAg ICByZXR1cm4gZmFsc2U7CistICAgIH0KKy0KKy0gICAgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5y ZWdpc3Rlck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoLCBpdGVtKTsKKysgICAgYm9vbCBz dWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVySXRlbVBh dGgsIGl0ZW0pOworICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgIHVucmVnaXN0ZXJUcmF5 SWNvbihpdGVtKTsKKyAgICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byByZWdpc3RlciIg PDwgaXRlbS0+aW5zdGFuY2VJZCgpIDw8IFN0YXR1c05vdGlmaWVySXRlbVBhdGg7CitAQCAtMTI2 LDIxICsxMjcsMTggQEAgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3RlclRyYXlJY29u KFFEQnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdp c3RlclRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7CisrICAgIFFf VU5VU0VEKGl0ZW0pOworICAgICBRREJ1c01lc3NhZ2UgcmVnaXN0ZXJNZXRob2QgPSBRREJ1c01l c3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisgICAgICAgICAgICAgICAgIFN0YXR1c05vdGlmaWVy V2F0Y2hlclNlcnZpY2UsIFN0YXR1c05vdGlmaWVyV2F0Y2hlclBhdGgsIFN0YXR1c05vdGlmaWVy V2F0Y2hlclNlcnZpY2UsCisgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlJlZ2lzdGVy U3RhdHVzTm90aWZpZXJJdGVtIikpOworLSAgICByZWdpc3Rlck1ldGhvZC5zZXRBcmd1bWVudHMo UVZhcmlhbnRMaXN0KCkgPDwgaXRlbS0+aW5zdGFuY2VJZCgpKTsKKysgICAgcmVnaXN0ZXJNZXRo b2Quc2V0QXJndW1lbnRzKFFWYXJpYW50TGlzdCgpIDw8IG1fY29ubmVjdGlvbi5iYXNlU2Vydmlj ZSgpKTsKKyAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5jYWxsV2l0aENhbGxiYWNrKHJlZ2lzdGVy TWV0aG9kLCB0aGlzLCBTSUdOQUwodHJheUljb25SZWdpc3RlcmVkKCkpLCBTTE9UKGRidXNFcnJv cihRREJ1c0Vycm9yKSkpOworIH0KKyAKKy1ib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnVucmVn aXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorK3ZvaWQgUURCdXNNZW51Q29ubmVj dGlvbjo6dW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgeworICAgICB1 bnJlZ2lzdGVyVHJheUljb25NZW51KGl0ZW0pOworICAgICBjb25uZWN0aW9uKCkudW5yZWdpc3Rl ck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoKTsKKy0gICAgYm9vbCBzdWNjZXNzID0gY29u bmVjdGlvbigpLnVucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQoKSk7CistICAgIGlm ICghc3VjY2VzcykKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byB1bnJlZ2lzdGVy IHNlcnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgcmV0dXJuIHN1Y2Nlc3M7Cisg fQorICNlbmRpZiAvLyBRVF9OT19TWVNURU1UUkFZSUNPTgorIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21l bnVjb25uZWN0aW9uX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5l cmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAoraW5kZXggZjQ4NDc5NWZi Yi4uOTdiZGZhYmI4NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Ro ZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAorKysrIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3Fk YnVzbWVudWNvbm5lY3Rpb25fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBRREJ1c01lbnVD b25uZWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAKKyBwdWJsaWM6CisgICAgIFFEQnVzTWVudUNv bm5lY3Rpb24oUU9iamVjdCAqcGFyZW50ID0gbnVsbHB0ciwgY29uc3QgUVN0cmluZyAmc2Vydmlj ZU5hbWUgPSBRU3RyaW5nKCkpOworKyAgICB+UURCdXNNZW51Q29ubmVjdGlvbigpOworICAgICBR REJ1c0Nvbm5lY3Rpb24gY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsg fQorICAgICBRREJ1c1NlcnZpY2VXYXRjaGVyICpkYnVzV2F0Y2hlcigpIGNvbnN0IHsgcmV0dXJu IG1fZGJ1c1dhdGNoZXI7IH0KKyAgICAgYm9vbCBpc1N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVy ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQ7IH0KK0BA IC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKKyAgICAgdm9pZCB1bnJlZ2lzdGVyVHJheUljb25NZW51 KFFEQnVzVHJheUljb24gKml0ZW0pOworICAgICBib29sIHJlZ2lzdGVyVHJheUljb24oUURCdXNU cmF5SWNvbiAqaXRlbSk7CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbldpdGhXYXRjaGVyKFFE QnVzVHJheUljb24gKml0ZW0pOworLSAgICBib29sIHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1Ry YXlJY29uICppdGVtKTsKKysgICAgdm9pZCB1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNv biAqaXRlbSk7CisgI2VuZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgCisgUV9TSUdOQUxT OgorQEAgLTkwLDYgKzkxLDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGRidXNFcnJv cihjb25zdCBRREJ1c0Vycm9yICZlcnJvcik7CisgCisgcHJpdmF0ZToKKysgICAgUVN0cmluZyBt X3NlcnZpY2VOYW1lOworICAgICBRREJ1c0Nvbm5lY3Rpb24gbV9jb25uZWN0aW9uOworICAgICBR REJ1c1NlcnZpY2VXYXRjaGVyICptX2RidXNXYXRjaGVyOworICAgICBib29sIG1fc3RhdHVzTm90 aWZpZXJIb3N0UmVnaXN0ZXJlZDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0 cmF5aWNvbi5jcHAKK2luZGV4IGJlZGU3MDk3NWEuLjc2YmZlYzVlNWEgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRi dXN0cmF5aWNvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9n ZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAorQEAgLTcxLDggKzcxLDEyIEBA IFFfTE9HR0lOR19DQVRFR09SWShxTGNUcmF5LCAicXQucXBhLnRyYXkiKQorIHN0YXRpYyBRU3Ry aW5nIGljb25UZW1wUGF0aCgpCisgeworICAgICBRU3RyaW5nIHRlbXBQYXRoID0gUVN0YW5kYXJk UGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OlJ1bnRpbWVMb2NhdGlvbik7 CistICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgpKQorKyAgICBpZiAoIXRlbXBQYXRoLmlzRW1w dHkoKSkgeworKyAgICAgICAgUVN0cmluZyBmbGF0cGFrSWQgPSBxRW52aXJvbm1lbnRWYXJpYWJs ZSgiRkxBVFBBS19JRCIpOworKyAgICAgICAgaWYgKCFmbGF0cGFrSWQuaXNFbXB0eSgpICYmIFFG aWxlSW5mbzo6ZXhpc3RzKFFMYXRpbjFTdHJpbmcoIi8uZmxhdHBhay1pbmZvIikpKQorKyAgICAg ICAgICAgIHRlbXBQYXRoICs9IFFMYXRpbjFTdHJpbmcoIi9hcHAvIikgKyBmbGF0cGFrSWQ7Cisg ICAgICAgICByZXR1cm4gdGVtcFBhdGg7CisrICAgIH0KKyAKKyAgICAgdGVtcFBhdGggPSBRU3Rh bmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6R2VuZXJpY0NhY2hl TG9jYXRpb24pOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Ro ZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwIGIvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAKK2lu ZGV4IGNiMWIzOWRiNjQuLjZlMDFhZjA1MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAorKysr IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmlj dW5peHRoZW1lcy5jcHAKK0BAIC03NTUsNiArNzU1LDkgQEAgUVZhcmlhbnQgUUdub21lVGhlbWU6 OnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6VGhlbWVIaW50IGhpbnQpIGNvbnN0CisgICAgICAg ICByZXR1cm4gUVZhcmlhbnQoUUNoYXIoMHgyMDIyKSk7CisgICAgIGNhc2UgUVBsYXRmb3JtVGhl bWU6OlVpRWZmZWN0czoKKyAgICAgICAgIHJldHVybiBRVmFyaWFudChpbnQoSG92ZXJFZmZlY3Qp KTsKKysgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzOgorKyAgICAgICAg cmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWUoCisrICAgICAgICAgICAgICAgIFFMaXN0PFF0OjpL ZXk+KHsgUXQ6OktleV9TcGFjZSwgUXQ6OktleV9SZXR1cm4sIFF0OjpLZXlfRW50ZXIsIFF0OjpL ZXlfU2VsZWN0IH0pKTsKKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworICAgICB9Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZz Y3Vyc29yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xm c2N1cnNvci5jcHAKK2luZGV4IDk4ZTA1MTk1ZWUuLjFlOTJmNDNkZWMgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3Iu Y3BwCitAQCAtMzQzLDggKzM0Myw3IEBAIHZvaWQgUUVnbEZTQ3Vyc29yOjpwYWludE9uU2NyZWVu KCkKKyAgICAgLy8gc2NyZWVucyBhcmUgc2libGluZ3Mgb2YgZWFjaCBvdGhlci4gV2hlbiBub3Qg ZW5hYmxlZCwgdGhlIHNpYmxpbmcgbGlzdAorICAgICAvLyBvbmx5IGNvbnRhaW5zIG1fc2NyZWVu IGl0c2VsZi4KKyAgICAgZm9yIChRUGxhdGZvcm1TY3JlZW4gKnNjcmVlbiA6IG1fc2NyZWVuLT52 aXJ0dWFsU2libGluZ3MoKSkgeworLSAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250 YWlucyhjci50b3BMZWZ0KCkudG9Qb2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkKKy0gICAgICAg ICAgICAmJiBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+c2NyZWVuKCkgPT0gc2Ny ZWVuLT5zY3JlZW4oKSkKKysgICAgICAgIGlmIChzY3JlZW4tPmdlb21ldHJ5KCkuY29udGFpbnMo Y3IudG9wTGVmdCgpLnRvUG9pbnQoKSArIG1fY3Vyc29yLmhvdFNwb3QpKQorICAgICAgICAgewor ICAgICAgICAgICAgIGNyLnRyYW5zbGF0ZSgtc2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7 CisgICAgICAgICAgICAgY29uc3QgUVNpemUgc2NyZWVuU2l6ZSA9IHNjcmVlbi0+Z2VvbWV0cnko KS5zaXplKCk7CitAQCAtNDY4LDExICs0NjcsMTIgQEAgdm9pZCBRRWdsRlNDdXJzb3I6OmRyYXco Y29uc3QgUVJlY3RGICZyKQorIHsKKyAgICAgU3RhdGVTYXZlciBzdGF0ZVNhdmVyOworIAorLSAg ICBRRWdsRlNDdXJzb3JEYXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250ZXh0Kj4oUU9w ZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29yRGF0YTsKKy0g ICAgaWYgKCFnZngucHJvZ3JhbSkgeworLSAgICAgICAgLy8gb25lIHRpbWUgaW5pdGlhbGl6YXRp b24KKysgICAgLy8gb25lIHRpbWUgaW5pdGlhbGl6YXRpb24KKysgICAgaWYgKCFRT3BlbkdMRnVu Y3Rpb25zOjpkX3B0cikKKyAgICAgICAgIGluaXRpYWxpemVPcGVuR0xGdW5jdGlvbnMoKTsKKyAK KysgICAgUUVnbEZTQ3Vyc29yRGF0YSAmZ2Z4ID0gc3RhdGljX2Nhc3Q8UUVnbEZTQ29udGV4dCo+ KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5oYW5kbGUoKSktPmN1cnNvckRhdGE7 CisrICAgIGlmICghZ2Z4LnByb2dyYW0pIHsKKyAgICAgICAgIGNyZWF0ZVNoYWRlclByb2dyYW1z KCk7CisgCisgICAgICAgICBpZiAoIWdmeC5hdGxhc1RleHR1cmUpIHsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2VnbGZz X2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVn bGZza21zZXZlbnRyZWFkZXIuY3BwCitpbmRleCA2NDVhMGFlMmU5Li4zZTBlNDA2ZjFhIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3Jh dGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNf a21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwCitAQCAtMTc5LDcgKzE3OSw3IEBA IHZvaWQgUUVnbEZTS21zRXZlbnRSZWFkZXI6OmNyZWF0ZShRRWdsRlNLbXNEZXZpY2UgKmRldmlj ZSkKKyAKKyAgICAgbV9kZXZpY2UgPSBkZXZpY2U7CisgCistICAgIHFDRGVidWcocUxjRWdsZnNL bXNEZWJ1ZywgIkluaXRhbGl6aW5nIGV2ZW50IHJlYWRlciBmb3IgZGV2aWNlICVwIGZkICVkIiwK KysgICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0RlYnVnLCAiSW5pdGlhbGl6aW5nIGV2ZW50IHJlYWRl ciBmb3IgZGV2aWNlICVwIGZkICVkIiwKKyAgICAgICAgICAgICBtX2RldmljZSwgbV9kZXZpY2Ut PmZkKCkpOworIAorICAgICBtX3RocmVhZCA9IG5ldyBRRWdsRlNLbXNFdmVudFJlYWRlclRocmVh ZChtX2RldmljZS0+ZmQoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKK2luZGV4 IDE0MWZiNjhhMjMuLmQ0Mjk0ZDQyNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24u Y3BwCitAQCAtMTIyLDExICsxMjIsMTMgQEAgUU9mZnNjcmVlbkludGVncmF0aW9uOjpRT2Zmc2Ny ZWVuSW50ZWdyYXRpb24oKQorICNlbmRpZgorICAgICBtX3NlcnZpY2VzLnJlc2V0KG5ldyBRUGxh dGZvcm1TZXJ2aWNlcyk7CisgCistICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVNj cmVlbkFkZGVkKG5ldyBRT2Zmc2NyZWVuU2NyZWVuKTsKKysgICAgbV9zY3JlZW4gPSBuZXcgUU9m ZnNjcmVlblNjcmVlbjsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVu QWRkZWQobV9zY3JlZW4pOworIH0KKyAKKyBRT2Zmc2NyZWVuSW50ZWdyYXRpb246On5RT2Zmc2Ny ZWVuSW50ZWdyYXRpb24oKQorIHsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxl U2NyZWVuUmVtb3ZlZChtX3NjcmVlbik7CisgfQorIAorIHZvaWQgUU9mZnNjcmVlbkludGVncmF0 aW9uOjppbml0aWFsaXplKCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaCBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCitpbmRleCAwZWE5 MGY2YzJmLi5mZTAwZmRlMDdjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCitAQCAt ODQsNiArODQsNyBAQCBwcm90ZWN0ZWQ6CisgI2VuZGlmCisgICAgIFFTY29wZWRQb2ludGVyPFFQ bGF0Zm9ybUlucHV0Q29udGV4dD4gbV9pbnB1dENvbnRleHQ7CisgICAgIFFTY29wZWRQb2ludGVy PFFQbGF0Zm9ybVNlcnZpY2VzPiBtX3NlcnZpY2VzOworKyAgICBRUGxhdGZvcm1TY3JlZW4gKm1f c2NyZWVuOworICAgICBtdXRhYmxlIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybU5hdGl2ZUludGVy ZmFjZT4gbV9uYXRpdmVJbnRlcmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwIGIvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAoraW5k ZXggNmZhNWE4YTJiMy4uMWY0OWYwYWVmZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAKK0BAIC00 OCw2ICs0OCw3IEBACisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4K KyAjaW5jbHVkZSA8UXRQbGF0Zm9ybUhlYWRlcnMvcXdnbG5hdGl2ZWNvbnRleHQuaD4KKyAKKysj aW5jbHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgI2luY2x1ZGUgPGFsZ29yaXRo bT4KKyAKKyAjaW5jbHVkZSA8d2luZ2RpLmg+CitAQCAtMTYyLDE5ICsxNjMsMjUgQEAgUUZ1bmN0 aW9uUG9pbnRlciBRV2luZG93c09wZW5nbDMyRExMOjpyZXNvbHZlKGNvbnN0IGNoYXIgKm5hbWUp CisgCisgYm9vbCBRV2luZG93c09wZW5nbDMyRExMOjppbml0KGJvb2wgc29mdHdhcmVSZW5kZXJp bmcpCisgeworLSAgICBjb25zdCBRQnl0ZUFycmF5IG9wZW5nbDMyID0gUUJ5dGVBcnJheUxpdGVy YWwoIm9wZW5nbDMyLmRsbCIpOworLSAgICBjb25zdCBRQnl0ZUFycmF5IHN3b3BlbmdsID0gUUJ5 dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3cuZGxsIik7CisrICAgIGNvbnN0IFFCeXRlQXJyYXkg b3BlbmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzIiKTsKKysgICAgY29uc3QgUUJ5 dGVBcnJheSBzd29wZW5nbCA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMnN3Iik7CisrICAg IGJvb2wgdXNlU3lzdGVtTGliID0gZmFsc2U7CisgCisgICAgIFFCeXRlQXJyYXkgb3BlbmdsRGxs ID0gcWdldGVudigiUVRfT1BFTkdMX0RMTCIpOworLSAgICBpZiAob3BlbmdsRGxsLmlzRW1wdHko KSkKKysgICAgaWYgKG9wZW5nbERsbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgIG9wZW5nbERsbCA9 IHNvZnR3YXJlUmVuZGVyaW5nID8gc3dvcGVuZ2wgOiBvcGVuZ2wzMjsKKysgICAgICAgIHVzZVN5 c3RlbUxpYiA9ICFzb2Z0d2FyZVJlbmRlcmluZzsKKysgICAgfQorIAorICAgICBvcGVuZ2xEbGwg PSBvcGVuZ2xEbGwudG9Mb3dlcigpOworICAgICBtX25vbk9wZW5nbDMyID0gb3BlbmdsRGxsICE9 IG9wZW5nbDMyOworIAorICAgICBxQ0RlYnVnKGxjUXBhR2wpIDw8ICJRdDogVXNpbmcgV0dMIGFu ZCBPcGVuR0wgZnJvbSIgPDwgb3BlbmdsRGxsOworIAorLSAgICBtX2xpYiA9IDo6TG9hZExpYnJh cnlBKG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisrICAgIGlmICh1c2VTeXN0ZW1MaWIpCisrICAg ICAgICBtX2xpYiA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKCh3Y2hhcl90KikoUVN0cmluZzo6ZnJv bUxhdGluMShvcGVuZ2xEbGwpLnV0ZjE2KCkpKTsKKysgICAgZWxzZQorKyAgICAgICAgbV9saWIg PSBMb2FkTGlicmFyeUEob3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKyAgICAgaWYgKCFtX2xpYikg eworICAgICAgICAgcUVycm5vV2FybmluZyg6OkdldExhc3RFcnJvcigpLCAiRmFpbGVkIHRvIGxv YWQgJXMiLCBvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworICAgICAgICAgcmV0dXJuIGZhbHNlOwor QEAgLTE4NCw3ICsxOTEsNyBAQCBib29sIFFXaW5kb3dzT3BlbmdsMzJETEw6OmluaXQoYm9vbCBz b2Z0d2FyZVJlbmRlcmluZykKKyAgICAgICAgIC8vIExvYWQgb3BlbmdsMzIuZGxsIGFsd2F5cy4g R0RJIGZ1bmN0aW9ucyBsaWtlIENob29zZVBpeGVsRm9ybWF0IGRvCisgICAgICAgICAvLyBHZXRN b2R1bGVIYW5kbGUgZm9yIG9wZW5nbDMyLmRsbCBhbmQgYmVoYXZlIGRpZmZlcmVudGx5IChhbmQg Y2FsbCBiYWNrIGludG8KKyAgICAgICAgIC8vIG9wZW5nbDMyKSB3aGVuIHRoZSBtb2R1bGUgaXMg cHJlc2VudC4gVGhpcyBpcyBmaW5lIGZvciBkdW1teSBjb250ZXh0cyBhbmQgd2luZG93cy4KKy0g ICAgICAgIDo6TG9hZExpYnJhcnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgICAgIFFTeXN0ZW1M aWJyYXJ5Ojpsb2FkKEwib3BlbmdsMzIiKTsKKyAgICAgfQorIAorICAgICB3Z2xDcmVhdGVDb250 ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxIR0xSQyAoV0lOQVBJICopKEhEQyk+KHJlc29sdmUoIndn bENyZWF0ZUNvbnRleHQiKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK2luZGV4IGQ3ZDE4 NmU4MDQuLjllYjQwMTFiZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCitAQCAtNDks NiArNDksNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcXN0YW5kYXJkcGF0aHMuaD4KKyAjaW5jbHVk ZSA8UXRDb3JlL3FsaWJyYXJ5aW5mby5oPgorICNpbmNsdWRlIDxRdENvcmUvcWhhc2guaD4KKysj aW5jbHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgCisgI2lmbmRlZiBRVF9OT19P UEVOR0wKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xb3BlbmdsX3AuaD4KK0BAIC0zOTYsNyArMzk3LDcg QEAgYm9vbCBRV2luZG93c09wZW5HTFRlc3Rlcjo6dGVzdERlc2t0b3BHTCgpCisgCisgICAgIC8v IFRlc3QgIzE6IExvYWQgb3BlbmdsMzIuZGxsIGFuZCB0cnkgdG8gcmVzb2x2ZSBhbiBPcGVuR0wg MiBmdW5jdGlvbi4KKyAgICAgLy8gVGhpcyB3aWxsIHR5cGljYWxseSBmYWlsIG9uIHN5c3RlbXMg dGhhdCBkbyBub3QgaGF2ZSBhIHJlYWwgT3BlbkdMIGRyaXZlci4KKy0gICAgbGliID0gTG9hZExp YnJhcnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgbGliID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQo TCJvcGVuZ2wzMiIpOworICAgICBpZiAobGliKSB7CisgICAgICAgICBDcmVhdGVDb250ZXh0ID0g cmVpbnRlcnByZXRfY2FzdDxDcmVhdGVDb250ZXh0VHlwZT4oCisgICAgICAgICAgICAgcmVpbnRl cnByZXRfY2FzdDxRRnVuY3Rpb25Qb2ludGVyPig6OkdldFByb2NBZGRyZXNzKGxpYiwgIndnbENy ZWF0ZUNvbnRleHQiKSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCitpbmRleCAx YWZhMDBjZmM5Li4xMThhZjZjZTczIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAorKysrIGIvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNw cAorQEAgLTQxLDYgKzQxLDcgQEAKKyAKKyAjaW5jbHVkZSA8UVJlY3Q+CisgI2luY2x1ZGUgPFFM aXN0PgorKyNpbmNsdWRlIDxRTWFwPgorICNpbmNsdWRlIDxRRGVidWc+CisgCisgI2luY2x1ZGUg PHFtYXRoLmg+CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2Iv cXhjYmNvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhj YmNvbm5lY3Rpb24uY3BwCitpbmRleCA5ZTJhMzdhNmExLi5lNmUxNzVhMTE4IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAK K0BAIC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpwcmludFhjYkVycm9y KGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHhjYl9nZW5lcmljX2Vycm9yX3QgKmVycgorICAgICB1aW50 IGNsYW1wZWRfZXJyb3JfY29kZSA9IHFNaW48dWludD4oZXJyb3ItPmVycm9yX2NvZGUsIChzaXpl b2YoeGNiX2Vycm9ycykgLyBzaXplb2YoeGNiX2Vycm9yc1swXSkpIC0gMSk7CisgICAgIHVpbnQg Y2xhbXBlZF9tYWpvcl9jb2RlID0gcU1pbjx1aW50PihlcnJvci0+bWFqb3JfY29kZSwgKHNpemVv Zih4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2RlcykgLyBzaXplb2YoeGNiX3Byb3RvY29sX3JlcXVl c3RfY29kZXNbMF0pKSAtIDEpOworIAorLSAgICBxQ1dhcm5pbmcobGNRcGFYY2IsICIlczogJWQg KCVzKSwgc2VxdWVuY2U6ICVkLCByZXNvdXJjZSBpZDogJWQsIG1ham9yIGNvZGU6ICVkICglcyks IG1pbm9yIGNvZGU6ICVkIiwKKy0gICAgICAgICAgICAgbWVzc2FnZSwKKy0gICAgICAgICAgICAg aW50KGVycm9yLT5lcnJvcl9jb2RlKSwgeGNiX2Vycm9yc1tjbGFtcGVkX2Vycm9yX2NvZGVdLAor LSAgICAgICAgICAgICBpbnQoZXJyb3ItPnNlcXVlbmNlKSwgaW50KGVycm9yLT5yZXNvdXJjZV9p ZCksCistICAgICAgICAgICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhjYl9wcm90b2NvbF9y ZXF1ZXN0X2NvZGVzW2NsYW1wZWRfbWFqb3JfY29kZV0sCistICAgICAgICAgICAgIGludChlcnJv ci0+bWlub3JfY29kZSkpOworKyAgICBxQ0RlYnVnKGxjUXBhWGNiLCAiJXM6ICVkICglcyksIHNl cXVlbmNlOiAlZCwgcmVzb3VyY2UgaWQ6ICVkLCBtYWpvciBjb2RlOiAlZCAoJXMpLCBtaW5vciBj b2RlOiAlZCIsCisrICAgICAgICAgICAgbWVzc2FnZSwKKysgICAgICAgICAgICBpbnQoZXJyb3It PmVycm9yX2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCisrICAgICAgICAg ICAgaW50KGVycm9yLT5zZXF1ZW5jZSksIGludChlcnJvci0+cmVzb3VyY2VfaWQpLAorKyAgICAg ICAgICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVz W2NsYW1wZWRfbWFqb3JfY29kZV0sCisrICAgICAgICAgICAgaW50KGVycm9yLT5taW5vcl9jb2Rl KSk7CisgfQorIAorIHN0YXRpYyBRdDo6TW91c2VCdXR0b25zIHRyYW5zbGF0ZU1vdXNlQnV0dG9u cyhpbnQgcykKK0BAIC03MDIsNiArNzAyLDggQEAgdm9pZCBRWGNiQ29ubmVjdGlvbjo6aGFuZGxl WGNiRXZlbnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZlbnQpCisgICAgICAgICAgICAgUVhjYlZp cnR1YWxEZXNrdG9wICp2aXJ0dWFsRGVza3RvcCA9IHZpcnR1YWxEZXNrdG9wRm9yUm9vdFdpbmRv dyhwcm9wZXJ0eU5vdGlmeS0+d2luZG93KTsKKyAgICAgICAgICAgICBpZiAodmlydHVhbERlc2t0 b3ApCisgICAgICAgICAgICAgICAgIHZpcnR1YWxEZXNrdG9wLT51cGRhdGVXb3JrQXJlYSgpOwor KyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5vdGlmeS0+YXRvbSA9PSBhdG9tKFFYY2JBdG9t OjpfTkVUX1NVUFBPUlRFRCkpIHsKKysgICAgICAgICAgICBtX3dtU3VwcG9ydC0+dXBkYXRlTmV0 V01BdG9tcygpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBIQU5ETEVfUExBVEZP Uk1fV0lORE9XX0VWRU5UKHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCwgd2luZG93LCBoYW5k bGVQcm9wZXJ0eU5vdGlmeUV2ZW50KTsKKyAgICAgICAgIH0KK0BAIC03NTAsNyArNzUyLDcgQEAg dm9pZCBRWGNiQ29ubmVjdGlvbjo6aGFuZGxlWGNiRXZlbnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAq ZXZlbnQpCisgICAgICAgICAgICAgICAgIGNhc2UgWENCX1hLQl9ORVdfS0VZQk9BUkRfTk9USUZZ OiB7CisgICAgICAgICAgICAgICAgICAgICB4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZl bnRfdCAqZXYgPSAmeGtiX2V2ZW50LT5uZXdfa2V5Ym9hcmRfbm90aWZ5OworICAgICAgICAgICAg ICAgICAgICAgaWYgKGV2LT5jaGFuZ2VkICYgWENCX1hLQl9OS05fREVUQUlMX0tFWUNPREVTKQor LSAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5Ym9hcmQtPnVwZGF0ZUtleW1hcChldik7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKCk7CisgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICBkZWZhdWx0OgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hj Yi9xeGNiaW50ZWdyYXRpb24uY3BwCitpbmRleCA3Njg2OWNlZDYwLi4wMmQyZWViYjU2IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9u LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0 aW9uLmNwcAorQEAgLTI3NCw4ICsyNzQsNyBAQCBRUGxhdGZvcm1XaW5kb3cgKlFYY2JJbnRlZ3Jh dGlvbjo6Y3JlYXRlRm9yZWlnbldpbmRvdyhRV2luZG93ICp3aW5kb3csIFdJZCBuYXRpdgorICNp Zm5kZWYgUVRfTk9fT1BFTkdMCisgUVBsYXRmb3JtT3BlbkdMQ29udGV4dCAqUVhjYkludGVncmF0 aW9uOjpjcmVhdGVQbGF0Zm9ybU9wZW5HTENvbnRleHQoUU9wZW5HTENvbnRleHQgKmNvbnRleHQp IGNvbnN0CisgeworLSAgICBRWGNiU2NyZWVuICpzY3JlZW4gPSBzdGF0aWNfY2FzdDxRWGNiU2Ny ZWVuICo+KGNvbnRleHQtPnNjcmVlbigpLT5oYW5kbGUoKSk7CistICAgIFFYY2JHbEludGVncmF0 aW9uICpnbEludGVncmF0aW9uID0gc2NyZWVuLT5jb25uZWN0aW9uKCktPmdsSW50ZWdyYXRpb24o KTsKKysgICAgUVhjYkdsSW50ZWdyYXRpb24gKmdsSW50ZWdyYXRpb24gPSBkZWZhdWx0Q29ubmVj dGlvbigpLT5nbEludGVncmF0aW9uKCk7CisgICAgIGlmICghZ2xJbnRlZ3JhdGlvbikgeworICAg ICAgICAgcVdhcm5pbmcoIlFYY2JJbnRlZ3JhdGlvbjogQ2Fubm90IGNyZWF0ZSBwbGF0Zm9ybSBP cGVuR0wgY29udGV4dCwgbmVpdGhlciBHTFggbm9yIEVHTCBhcmUgZW5hYmxlZCIpOworICAgICAg ICAgcmV0dXJuIG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2JrZXlib2FyZC5jcHAKK2luZGV4IGVmZWNkN2UyZDEuLmU4Mjg2MzgxYTIgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3Bw CitAQCAtMzY1LDE3ICszNjUsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKHhj Yl9tYXBwaW5nX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgdXBkYXRlS2V5bWFwKCk7Cisg fQorIAorLXZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX3hrYl9uZXdfa2V5Ym9h cmRfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorLXsKKy0gICAgaWYgKCFldmVudCkKKy0gICAgICAg IHJldHVybjsKKy0KKy0gICAgaWYgKGV2ZW50LT5kZXZpY2VJRCAhPSBldmVudC0+b2xkRGV2aWNl SUQpCistICAgICAgICBtX2NvbmZpZyA9IGZhbHNlOworLQorLSAgICB1cGRhdGVLZXltYXAoKTsK Ky19CistCisgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgeworICAgICBLZXlz eW1Nb2RpZmllck1hcCBrZXlzeW1Nb2RzOworQEAgLTM4Myw2ICszNzIsOCBAQCB2b2lkIFFYY2JL ZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgICAgIGtleXN5bU1vZHMgPSBrZXlzeW1zVG9N b2RpZmllcnMoKTsKKyAgICAgdXBkYXRlTW9kaWZpZXJzKGtleXN5bU1vZHMpOworIAorKyAgICBt X2NvbmZpZyA9IHRydWU7CisrCisgICAgIGlmICghbV94a2JDb250ZXh0KSB7CisgICAgICAgICBt X3hrYkNvbnRleHQucmVzZXQoeGtiX2NvbnRleHRfbmV3KFhLQl9DT05URVhUX05PX0RFRkFVTFRf SU5DTFVERVMpKTsKKyAgICAgICAgIGlmICghbV94a2JDb250ZXh0KSB7CitAQCAtMzk4LDEzICsz ODksOCBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgaWYgKGNvbm5l Y3Rpb24oKS0+aGFzWEtCKCkpIHsKKyAgICAgICAgIG1feGtiS2V5bWFwLnJlc2V0KHhrYl94MTFf a2V5bWFwX25ld19mcm9tX2RldmljZShtX3hrYkNvbnRleHQuZ2V0KCksIHhjYl9jb25uZWN0aW9u KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29yZV9kZXZpY2VfaWQsIFhLQl9LRVlNQVBfQ09NUElMRV9OT19GTEFHUykpOworLSAg ICAgICAgaWYgKG1feGtiS2V5bWFwKSB7CistICAgICAgICAgICAgaWYgKG1fY29uZmlnKQorLSAg ICAgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl9zdGF0ZV9uZXcobV94a2JLZXltYXAu Z2V0KCkpKTsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIG1feGtiU3RhdGUu cmVzZXQoeGtiX3gxMV9zdGF0ZV9uZXdfZnJvbV9kZXZpY2UobV94a2JLZXltYXAuZ2V0KCksIHhj Yl9jb25uZWN0aW9uKCksIGNvcmVfZGV2aWNlX2lkKSk7CistCistICAgICAgICB9CisrICAgICAg ICBpZiAobV94a2JLZXltYXApCisrICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4a2JfeDEx X3N0YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24o KSwgY29yZV9kZXZpY2VfaWQpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIG1feGtiS2V5bWFw LnJlc2V0KGtleW1hcEZyb21Db3JlKGtleXN5bU1vZHMpKTsKKyAgICAgICAgIGlmIChtX3hrYktl eW1hcCkKK0BAIC00MjUsOCArNDExLDYgQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1h cCgpCisgICAgIHVwZGF0ZVhLQk1vZHMoKTsKKyAKKyAgICAgUVhrYkNvbW1vbjo6dmVyaWZ5SGFz TGF0aW5MYXlvdXQobV94a2JLZXltYXAuZ2V0KCkpOworLQorLSAgICBtX2NvbmZpZyA9IHRydWU7 CisgfQorIAorIFFMaXN0PGludD4gUVhjYktleWJvYXJkOjpwb3NzaWJsZUtleXMoY29uc3QgUUtl eUV2ZW50ICpldmVudCkgY29uc3QKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2JrZXlib2FyZC5oCitpbmRleCBiNjUyYzg1ZmUzLi4wZWUwOGFlZmYyIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKKysr KyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oCitAQCAt NjksNyArNjksNiBAQCBwdWJsaWM6CisgCisgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyB0cmFu c2xhdGVNb2RpZmllcnMoaW50IHMpIGNvbnN0OworICAgICB2b2lkIHVwZGF0ZUtleW1hcCh4Y2Jf bWFwcGluZ19ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOworLSAgICB2b2lkIHVwZGF0ZUtleW1hcCh4 Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOworICAgICB2b2lkIHVw ZGF0ZUtleW1hcCgpOworICAgICBRTGlzdDxpbnQ+IHBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZl bnQgKmV2ZW50KSBjb25zdDsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9xeGNid2luZG93LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2J3aW5kb3cuY3BwCitpbmRleCBmZmRhN2I2YTU3Li44NjNlOTYxZjRjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwCitAQCAt NTY0LDExICs1NjQsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0 ICZyZWN0KQorIHsKKyAgICAgUVBsYXRmb3JtV2luZG93OjpzZXRHZW9tZXRyeShyZWN0KTsKKyAK Ky0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRHZW9tZXRyeSkpIHsKKy0gICAgICAg IG1fZGVmZXJyZWRHZW9tZXRyeSA9IHJlY3Q7CistICAgICAgICByZXR1cm47CistICAgIH0KKy0K KyAgICAgcHJvcGFnYXRlU2l6ZUhpbnRzKCk7CisgCisgICAgIFFYY2JTY3JlZW4gKmN1cnJlbnRT Y3JlZW4gPSB4Y2JTY3JlZW4oKTsKK0BAIC02OTMsOSArNjg4LDYgQEAgdm9pZCBRWGNiV2luZG93 OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNob3coKQor IHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpNYXApKQorLSAgICAgICAgcmV0dXJu OworLQorICAgICBpZiAod2luZG93KCktPmlzVG9wTGV2ZWwoKSkgeworIAorICAgICAgICAgLy8g dXBkYXRlIFdNX05PUk1BTF9ISU5UUworQEAgLTcwNiw3ICs2OTgsNyBAQCB2b2lkIFFYY2JXaW5k b3c6OnNob3coKQorICAgICAgICAgaWYgKGlzVHJhbnNpZW50KHdpbmRvdygpKSkgeworICAgICAg ICAgICAgIGNvbnN0IFFXaW5kb3cgKnRwID0gd2luZG93KCktPnRyYW5zaWVudFBhcmVudCgpOwor ICAgICAgICAgICAgIGlmICh0cCAmJiB0cC0+aGFuZGxlKCkpCistICAgICAgICAgICAgICAgIHRy YW5zaWVudFhjYlBhcmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFFYY2JXaW5kb3cgKj4odHAtPmhh bmRsZSgpKS0+d2luSWQoKTsKKysgICAgICAgICAgICAgICAgdHJhbnNpZW50WGNiUGFyZW50ID0g dHAtPmhhbmRsZSgpLT53aW5JZCgpOworICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY2xpZW50 IGxlYWRlciBpZiB0aGVyZSBpcyBubyB0cmFuc2llbnQgcGFyZW50LCBlbHNlIG1vZGFsIGRpYWxv Z3MgY2FuCisgICAgICAgICAgICAgLy8gYmUgaGlkZGVuIGJ5IHRoZWlyIHBhcmVudHMuCisgICAg ICAgICAgICAgaWYgKCF0cmFuc2llbnRYY2JQYXJlbnQpCitAQCAtNzQ2LDEwICs3MzgsNiBAQCB2 b2lkIFFYY2JXaW5kb3c6OnNob3coKQorIAorIHZvaWQgUVhjYldpbmRvdzo6aGlkZSgpCisgewor LSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlVubWFwKSkKKy0gICAgICAgIHJldHVybjsK Ky0KKy0gICAgbV93bVN0YXRlVmFsaWQgPSBmYWxzZTsKKyAgICAgeGNiX3VubWFwX3dpbmRvdyh4 Y2JfY29ubmVjdGlvbigpLCBtX3dpbmRvdyk7CisgCisgICAgIC8vIHNlbmQgc3ludGhldGljIFVu bWFwTm90aWZ5IGV2ZW50IGFjY29yZGluZyB0byBpY2NjbSA0LjEuNAorQEAgLTkwOSw5ICs4OTcs NiBAQCBRWGNiV2luZG93OjpOZXRXbVN0YXRlcyBRWGNiV2luZG93OjpuZXRXbVN0YXRlcygpCisg Cisgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3MgZmxhZ3Mp CisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldFdpbmRvd0ZsYWdzKSkKKy0g ICAgICAgIHJldHVybjsKKy0KKyAgICAgUXQ6OldpbmRvd1R5cGUgdHlwZSA9IHN0YXRpY19jYXN0 PFF0OjpXaW5kb3dUeXBlPihpbnQoZmxhZ3MgJiBRdDo6V2luZG93VHlwZV9NYXNrKSk7CisgCisg ICAgIGlmICh0eXBlID09IFF0OjpUb29sVGlwKQorQEAgLTk0MSw4ICs5MjYsNiBAQCB2b2lkIFFY Y2JXaW5kb3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKKyAKKyAgICAg c2V0VHJhbnNwYXJlbnRGb3JNb3VzZUV2ZW50cyhmbGFncyAmIFF0OjpXaW5kb3dUcmFuc3BhcmVu dEZvcklucHV0KTsKKyAgICAgdXBkYXRlRG9lc05vdEFjY2VwdEZvY3VzKGZsYWdzICYgUXQ6Oldp bmRvd0RvZXNOb3RBY2NlcHRGb2N1cyk7CistCistICAgIG1faXNXbU1hbmFnZWRXaW5kb3cgPSAh KGZsYWdzICYgUXQ6OlgxMUJ5cGFzc1dpbmRvd01hbmFnZXJIaW50KTsKKyB9CisgCisgdm9pZCBR WGNiV2luZG93OjpzZXRNb3RpZldtSGludHMoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorQEAgLTEx NDIsOSArMTEyNSw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93U3RhdGUoUXQ6OldpbmRv d1N0YXRlcyBzdGF0ZSkKKyAgICAgaWYgKHN0YXRlID09IG1fd2luZG93U3RhdGUpCisgICAgICAg ICByZXR1cm47CisgCistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0V2luZG93U3Rh dGUpKQorLSAgICAgICAgcmV0dXJuOworLQorICAgICAvLyB1bnNldCBvbGQgc3RhdGUKKyAgICAg aWYgKG1fd2luZG93U3RhdGUgJiBRdDo6V2luZG93TWluaW1pemVkKQorICAgICAgICAgeGNiX21h cF93aW5kb3coeGNiX2Nvbm5lY3Rpb24oKSwgbV93aW5kb3cpOworQEAgLTEzNTAsNiArMTMzMCwx MiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ljb24oY29uc3QgUUljb24gJmljb24pCisg ICAgIH0KKyAKKyAgICAgaWYgKCFpY29uX2RhdGEuaXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBJ Z25vcmUgaWNvbiBleGNlZWRpbmcgbWF4aW11bSB4Y2IgcmVxdWVzdCBsZW5ndGgKKysgICAgICAg IGlmIChpY29uX2RhdGEuc2l6ZSgpID4geGNiX2dldF9tYXhpbXVtX3JlcXVlc3RfbGVuZ3RoKHhj Yl9jb25uZWN0aW9uKCkpKSB7CisrICAgICAgICAgICAgcVdhcm5pbmcoIklnbm9yaW5nIHdpbmRv dyBpY29uOiBTaXplICVsbHUgZXhjZWVkcyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0aCAldS4i LAorKyAgICAgICAgICAgICAgICAgICAgIGljb25fZGF0YS5zaXplKCksIHhjYl9nZXRfbWF4aW11 bV9yZXF1ZXN0X2xlbmd0aCh4Y2JfY29ubmVjdGlvbigpKSk7CisrICAgICAgICAgICAgcmV0dXJu OworKyAgICAgICAgfQorICAgICAgICAgeGNiX2NoYW5nZV9wcm9wZXJ0eSh4Y2JfY29ubmVjdGlv bigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0JfUFJPUF9NT0RFX1JFUExBQ0Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2luZG93LAorQEAgLTE2MzksNyArMTYy NSw3IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V21XaW5kb3dUeXBlKFFYY2JXaW5kb3dGdW5jdGlv bnM6OldtV2luZG93VHlwZXMgdHlwZXMsIFF0OjpXCisgICAgICAgICBicmVhazsKKyAgICAgfQor IAorLSAgICBpZiAoKGZsYWdzICYgUXQ6OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYmICEodHlwZSAm IFFYY2JXaW5kb3dGdW5jdGlvbnM6OktkZU92ZXJyaWRlKSkgeworKyAgICBpZiAoKGZsYWdzICYg UXQ6OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYmICEodHlwZXMgJiBRWGNiV2luZG93RnVuY3Rpb25z OjpLZGVPdmVycmlkZSkpIHsKKyAgICAgICAgIC8vIG92ZXJyaWRlIG5ldHdtIHR5cGUgLSBxdWlj ayBhbmQgZWFzeSBmb3IgS0RFIG5vYm9yZGVyCisgICAgICAgICBhdG9tcy5hcHBlbmQoYXRvbShR WGNiQXRvbTo6X0tERV9ORVRfV01fV0lORE9XX1RZUEVfT1ZFUlJJREUpKTsKKyAgICAgfQorQEAg LTE4OTQsMTAgKzE4ODAsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVVubWFwTm90aWZ5RXZl bnQoY29uc3QgeGNiX3VubWFwX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgaWYgKGV2ZW50 LT53aW5kb3cgPT0gbV93aW5kb3cpIHsKKyAgICAgICAgIG1fbWFwcGVkID0gZmFsc2U7CisgICAg ICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVFeHBvc2VFdmVudCh3aW5kb3coKSwg UVJlZ2lvbigpKTsKKy0gICAgICAgIGlmICghbV9pc1dtTWFuYWdlZFdpbmRvdyB8fCBwYXJlbnQo KSkgeworLSAgICAgICAgICAgIG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgICAgICAgICBo YW5kbGVEZWZlcnJlZFRhc2tzKCk7CistICAgICAgICB9CisgICAgIH0KKyB9CisgCitAQCAtMjIx Miw5OCArMjE5NCwzMCBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZUxlYXZlTm90aWZ5RXZlbnQo Y29uc3QgeGNiX2xlYXZlX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgaGFuZGxlTGVhdmVO b3RpZnlFdmVudChldmVudC0+cm9vdF94LCBldmVudC0+cm9vdF95LCBldmVudC0+bW9kZSwgZXZl bnQtPmRldGFpbCwgZXZlbnQtPnRpbWUpOworIH0KKyAKKy1ib29sIFFYY2JXaW5kb3c6OnNob3Vs ZERlZmVyVGFzayhUYXNrIHRhc2spCisteworLSAgICBpZiAobV93bVN0YXRlVmFsaWQpCistICAg ICAgICByZXR1cm4gZmFsc2U7CistCistICAgIG1fZGVmZXJyZWRUYXNrcy5hcHBlbmQodGFzayk7 CistICAgIHJldHVybiB0cnVlOworLX0KKy0KKy12b2lkIFFYY2JXaW5kb3c6OmhhbmRsZURlZmVy cmVkVGFza3MoKQorLXsKKy0gICAgUV9BU1NFUlQobV93bVN0YXRlVmFsaWQgPT0gdHJ1ZSk7Cist ICAgIGlmIChtX2RlZmVycmVkVGFza3MuaXNFbXB0eSgpKQorLSAgICAgICAgcmV0dXJuOworLQor LSAgICBib29sIG1hcCA9IGZhbHNlOworLSAgICBib29sIHVubWFwID0gZmFsc2U7CistCistICAg IFFWZWN0b3I8VGFzaz4gdGFza3M7CistICAgIGZvciAoYXV0byB0YXNrSXQgPSBtX2RlZmVycmVk VGFza3MucmJlZ2luKCk7IHRhc2tJdCAhPSBtX2RlZmVycmVkVGFza3MucmVuZCgpOyArK3Rhc2tJ dCkgeworLSAgICAgICAgaWYgKCF0YXNrcy5jb250YWlucygqdGFza0l0KSkKKy0gICAgICAgICAg ICB0YXNrcy5wcmVwZW5kKCp0YXNrSXQpOworLSAgICB9CistCistICAgIGZvciAoVGFzayB0YXNr IDogdGFza3MpIHsKKy0gICAgICAgIHN3aXRjaCAodGFzaykgeworLSAgICAgICAgY2FzZSBUYXNr OjpNYXA6CistICAgICAgICAgICAgbWFwID0gdHJ1ZTsKKy0gICAgICAgICAgICB1bm1hcCA9IGZh bHNlOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpVbm1hcDoKKy0g ICAgICAgICAgICB1bm1hcCA9IHRydWU7CistICAgICAgICAgICAgbWFwID0gZmFsc2U7CistICAg ICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldEdlb21ldHJ5OgorLSAgICAg ICAgICAgIHNldEdlb21ldHJ5KG1fZGVmZXJyZWRHZW9tZXRyeSk7CistICAgICAgICAgICAgYnJl YWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldFdpbmRvd0ZsYWdzOgorLSAgICAgICAgICAgIHNl dFdpbmRvd0ZsYWdzKHdpbmRvdygpLT5mbGFncygpKTsKKy0gICAgICAgICAgICBicmVhazsKKy0g ICAgICAgIGNhc2UgVGFzazo6U2V0V2luZG93U3RhdGU6CistICAgICAgICAgICAgc2V0V2luZG93 U3RhdGUod2luZG93KCktPndpbmRvd1N0YXRlKCkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAg ICAgICAgfQorLSAgICB9CistICAgIG1fZGVmZXJyZWRUYXNrcy5jbGVhcigpOworLQorLSAgICBp ZiAobWFwKSB7CistICAgICAgICBRX0FTU0VSVCh1bm1hcCA9PSBmYWxzZSk7CistICAgICAgICBz aG93KCk7CistICAgIH0KKy0gICAgaWYgKHVubWFwKSB7CistICAgICAgICBRX0FTU0VSVChtYXAg PT0gZmFsc2UpOworLSAgICAgICAgaGlkZSgpOworLSAgICB9CistfQorLQorIHZvaWQgUVhjYldp bmRvdzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChjb25zdCB4Y2JfcHJvcGVydHlfbm90aWZ5 X2V2ZW50X3QgKmV2ZW50KQorIHsKKyAgICAgY29ubmVjdGlvbigpLT5zZXRUaW1lKGV2ZW50LT50 aW1lKTsKKyAKKy0gICAgY29uc3QgYm9vbCB3bVN0YXRlQ2hhbmdlZCA9IGV2ZW50LT5hdG9tID09 IGF0b20oUVhjYkF0b206OldNX1NUQVRFKTsKKy0gICAgY29uc3QgYm9vbCBuZXRXbVN0YXRlQ2hh bmdlZCA9IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfV01fU1RBVEUpOworLSAg ICBpZiAobmV0V21TdGF0ZUNoYW5nZWQgfHwgd21TdGF0ZUNoYW5nZWQpIHsKKy0gICAgICAgIGlm ICh3bVN0YXRlQ2hhbmdlZCAmJiAhbV93bVN0YXRlVmFsaWQgJiYgbV9pc1dtTWFuYWdlZFdpbmRv dykgeworLSAgICAgICAgICAgIC8vIElDQ0NNIDQuMS40CistICAgICAgICAgICAgLy8gQ2xpZW50 cyB0aGF0IHdhbnQgdG8gcmUtdXNlIGEgY2xpZW50IHdpbmRvdyAoZS5nLiBieSBtYXBwaW5nIGl0 IGFnYWluKQorLSAgICAgICAgICAgIC8vIGFmdGVyIHdpdGhkcmF3aW5nIGl0IG11c3Qgd2FpdCBm b3IgdGhlIHdpdGhkcmF3YWwgdG8gYmUgY29tcGxldGUgYmVmb3JlCistICAgICAgICAgICAgLy8g cHJvY2VlZGluZy4gVGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIGRvaW5nIHRoaXMgaXMgZm9yIGNs aWVudHMgdG8gd2FpdCBmb3IKKy0gICAgICAgICAgICAvLyBhIHdpbmRvdyBtYW5hZ2VyIHRvIHVw ZGF0ZSBvciByZW1vdmUgdGhlIFdNX1NUQVRFIHByb3BlcnR5LgorLSAgICAgICAgICAgIG1fd21T dGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgICAgICAgICBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7Cist ICAgICAgICB9CistICAgICAgICBpZiAoZXZlbnQtPnN0YXRlID09IFhDQl9QUk9QRVJUWV9ERUxF VEUpCisrICAgIGNvbnN0IGJvb2wgcHJvcGVydHlEZWxldGVkID0gZXZlbnQtPnN0YXRlID09IFhD Ql9QUk9QRVJUWV9ERUxFVEU7CisrCisrICAgIGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JB dG9tOjpfTkVUX1dNX1NUQVRFKSB8fCBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9T VEFURSkpIHsKKysgICAgICAgIGlmIChwcm9wZXJ0eURlbGV0ZWQpCisgICAgICAgICAgICAgcmV0 dXJuOworIAorLSAgICAgICAgaWYgKHdtU3RhdGVDaGFuZ2VkKSB7CisrICAgICAgICBRdDo6V2lu ZG93U3RhdGVzIG5ld1N0YXRlID0gUXQ6OldpbmRvd05vU3RhdGU7CisrCisrICAgICAgICBpZiAo ZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7IC8vIFdNX1NUQVRFOiBR dWljayBjaGVjayBmb3IgJ01pbmltaXplJy4KKyAgICAgICAgICAgICBhdXRvIHJlcGx5ID0gUV9Y Q0JfUkVQTFkoeGNiX2dldF9wcm9wZXJ0eSwgeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbV93aW5kb3csIGF0b20oUVhjYkF0b206OldN X1NUQVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWENCX0FUT01f QU5ZLCAwLCAxMDI0KTsKKyAgICAgICAgICAgICBpZiAocmVwbHkgJiYgcmVwbHktPmZvcm1hdCA9 PSAzMiAmJiByZXBseS0+dHlwZSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsKKy0gICAg ICAgICAgICAgICAgYXV0byBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgcXVpbnQzMiAqPih4Y2Jf Z2V0X3Byb3BlcnR5X3ZhbHVlKHJlcGx5LmdldCgpKSk7CistICAgICAgICAgICAgICAgIGlmIChy ZXBseS0+bGVuZ3RoICE9IDApIHsKKy0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgY2hh bmdlZFRvV2l0aGRyYXduID0gZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfV0lUSERSQVdO OworLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2VkVG9JY29uaWMgPSBkYXRh WzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9JQ09OSUM7CistICAgICAgICAgICAgICAgICAgICBt X21pbmltaXplZCA9IGNoYW5nZWRUb0ljb25pYyB8fCAoY2hhbmdlZFRvV2l0aGRyYXduICYmIG1f bWluaW1pemVkKTsKKy0gICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBjb25zdCBx dWludDMyICpkYXRhID0gKGNvbnN0IHF1aW50MzIgKil4Y2JfZ2V0X3Byb3BlcnR5X3ZhbHVlKHJl cGx5LmdldCgpKTsKKysgICAgICAgICAgICAgICAgaWYgKHJlcGx5LT5sZW5ndGggIT0gMCkKKysg ICAgICAgICAgICAgICAgICAgIG1fbWluaW1pemVkID0gKGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dN X1NUQVRFX0lDT05JQworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGRh dGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX1dJVEhEUkFXTiAmJiBtX21pbmltaXplZCkpOwor ICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKy0gICAgICAgIC8vIF9ORVRfV01fU1RBVEUg aGFuZGxpbmcKKy0gICAgICAgIFF0OjpXaW5kb3dTdGF0ZXMgbmV3U3RhdGUgPSBRdDo6V2luZG93 Tm9TdGF0ZTsKKyAgICAgICAgIGNvbnN0IE5ldFdtU3RhdGVzIHN0YXRlcyA9IG5ldFdtU3RhdGVz KCk7CisgICAgICAgICAvLyBfTkVUX1dNX1NUQVRFX0hJRERFTiBzaG91bGQgYmUgc2V0IGJ5IHRo ZSBXaW5kb3cgTWFuYWdlciB0byBpbmRpY2F0ZSB0aGF0IGEgd2luZG93IHdvdWxkCisgICAgICAg ICAvLyBub3QgYmUgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIGlmIGl0cyBkZXNrdG9wL3ZpZXdwb3J0 IHdlcmUgYWN0aXZlIGFuZCBpdHMgY29vcmRpbmF0ZXMgd2VyZQorQEAgLTIzMjUsNiArMjIzOSw3 IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChjb25zdCB4Y2Jf cHJvcGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2CisgICAgICAgICAgICAgaWYgKChtX3dpbmRvd1N0 YXRlICYgUXQ6OldpbmRvd01pbmltaXplZCkgJiYgY29ubmVjdGlvbigpLT5tb3VzZUdyYWJiZXIo KSA9PSB0aGlzKQorICAgICAgICAgICAgICAgICBjb25uZWN0aW9uKCktPnNldE1vdXNlR3JhYmJl cihudWxscHRyKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybjsKKyAgICAgfSBlbHNlIGlm IChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX0ZSQU1FX0VYVEVOVFMpKSB7Cisg ICAgICAgICBtX2RpcnR5RnJhbWVNYXJnaW5zID0gdHJ1ZTsKKyAgICAgfQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAoraW5kZXggNTVhZjkyNzliMS4u NmY1YzFmNWVkOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNi L3F4Y2J3aW5kb3cuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhj YndpbmRvdy5oCitAQCAtNzQsMTQgKzc0LDYgQEAgcHVibGljOgorIAorICAgICBRX0RFQ0xBUkVf RkxBR1MoTmV0V21TdGF0ZXMsIE5ldFdtU3RhdGUpCisgCistICAgIGVudW0gVGFzayB7CistICAg ICAgICBNYXAsCistICAgICAgICBVbm1hcCwKKy0gICAgICAgIFNldEdlb21ldHJ5LAorLSAgICAg ICAgU2V0V2luZG93RmxhZ3MsCistICAgICAgICBTZXRXaW5kb3dTdGF0ZQorLSAgICB9OworLQor ICAgICBRWGNiV2luZG93KFFXaW5kb3cgKndpbmRvdyk7CisgICAgIH5RWGNiV2luZG93KCk7Cisg CitAQCAtMTUxLDkgKzE0Myw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUVhjYldpbmRvdyAqdG9XaW5k b3coKSBvdmVycmlkZTsKKyAKKy0gICAgYm9vbCBzaG91bGREZWZlclRhc2soVGFzayB0YXNrKTsK Ky0gICAgdm9pZCBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7CistCisgICAgIHZvaWQgaGFuZGxlTW91 c2VFdmVudCh4Y2JfdGltZXN0YW1wX3QgdGltZSwgY29uc3QgUVBvaW50ICZsb2NhbCwgY29uc3Qg UVBvaW50ICZnbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5Ym9hcmRN b2RpZmllcnMgbW9kaWZpZXJzLCBRRXZlbnQ6OlR5cGUgdHlwZSwgUXQ6Ok1vdXNlRXZlbnRTb3Vy Y2Ugc291cmNlKTsKKyAKK0BAIC0yOTIsMTEgKzI4MSw2IEBAIHByb3RlY3RlZDoKKyAgICAgaW50 IG1fc3dhcEludGVydmFsID0gLTE7CisgCisgICAgIHFyZWFsIG1fc2l6ZUhpbnRzU2NhbGVGYWN0 b3IgPSAxLjA7CistCistICAgIGJvb2wgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICBRVmVj dG9yPFRhc2s+IG1fZGVmZXJyZWRUYXNrczsKKy0gICAgYm9vbCBtX2lzV21NYW5hZ2VkV2luZG93 ID0gdHJ1ZTsKKy0gICAgUVJlY3QgbV9kZWZlcnJlZEdlb21ldHJ5OworIH07CisgCisgY2xhc3Mg UVhjYkZvcmVpZ25XaW5kb3cgOiBwdWJsaWMgUVhjYldpbmRvdworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAgYi9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCitpbmRleCBkOWQx MTdmYWViLi42NDBiNDlkYWEwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAorQEAgLTg1LDYgKzg1LDcgQEAgUUd0azNN ZW51SXRlbTo6UUd0azNNZW51SXRlbSgpCisgICAgICAgbV9jaGVja2FibGUoZmFsc2UpLAorICAg ICAgIG1fY2hlY2tlZChmYWxzZSksCisgICAgICAgbV9lbmFibGVkKHRydWUpLAorKyAgICAgIG1f ZXhjbHVzaXZlKGZhbHNlKSwKKyAgICAgICBtX3VuZGVybGluZShmYWxzZSksCisgICAgICAgbV9p bnZhbGlkKHRydWUpLAorICAgICAgIG1fbWVudShudWxscHRyKSwKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3Rv cHBvcnRhbGZpbGVkaWFsb2cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVz L3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAoraW5kZXgg MDA0OGJiYzFlNi4uMzk2ZTdmNmQxYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxv Zy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9w cG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAKK0BAIC0xMDIsMTUgKzEwMiwx MiBAQCBjb25zdCBRREJ1c0FyZ3VtZW50ICZvcGVyYXRvciA+Pihjb25zdCBRREJ1c0FyZ3VtZW50 ICZhcmcsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZQorIGNsYXNzIFFYZGdEZXNrdG9wUG9ydGFsRmls ZURpYWxvZ1ByaXZhdGUKKyB7CisgcHVibGljOgorLSAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVE aWFsb2dQcml2YXRlKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cp CisrICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUoUVBsYXRmb3JtRmlsZURp YWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNp b24pCisgICAgICAgICA6IG5hdGl2ZUZpbGVEaWFsb2cobmF0aXZlRmlsZURpYWxvZykKKysgICAg ICAgICwgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikK KyAgICAgeyB9CisgCistICAgIFdJZCB3aW5JZCA9IDA7CistICAgIGJvb2wgZGlyZWN0b3J5TW9k ZSA9IGZhbHNlOworLSAgICBib29sIG1vZGFsID0gZmFsc2U7CistICAgIGJvb2wgbXVsdGlwbGVG aWxlcyA9IGZhbHNlOworLSAgICBib29sIHNhdmVGaWxlID0gZmFsc2U7CisrICAgIFFFdmVudExv b3AgbG9vcDsKKyAgICAgUVN0cmluZyBhY2NlcHRMYWJlbDsKKyAgICAgUVN0cmluZyBkaXJlY3Rv cnk7CisgICAgIFFTdHJpbmcgdGl0bGU7CitAQCAtMTIxLDE5ICsxMTgsMjcgQEAgcHVibGljOgor ICAgICBRU3RyaW5nIHNlbGVjdGVkTWltZVR5cGVGaWx0ZXI7CisgICAgIFFTdHJpbmcgc2VsZWN0 ZWROYW1lRmlsdGVyOworICAgICBRU3RyaW5nTGlzdCBzZWxlY3RlZEZpbGVzOworLSAgICBRUGxh dGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0cjsKKysgICAg c3RkOjp1bmlxdWVfcHRyPFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXI+IG5hdGl2ZUZpbGVEaWFs b2c7CisrICAgIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0gMDsKKysgICAgYm9vbCBm YWlsZWRUb09wZW4gPSBmYWxzZTsKKysgICAgYm9vbCBkaXJlY3RvcnlNb2RlID0gZmFsc2U7Cisr ICAgIGJvb2wgbXVsdGlwbGVGaWxlcyA9IGZhbHNlOworKyAgICBib29sIHNhdmVGaWxlID0gZmFs c2U7CisgfTsKKyAKKy1RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OlFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9n KQorK1FYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2csIHVpbnQgZmls ZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICA6IFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIo KQorLSAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlKG5h dGl2ZUZpbGVEaWFsb2cpKQorKyAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVE aWFsb2dQcml2YXRlKG5hdGl2ZUZpbGVEaWFsb2csIGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikp CisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKyAgICAgaWYg KGQtPm5hdGl2ZUZpbGVEaWFsb2cpIHsKKy0gICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURp YWxvZywgU0lHTkFMKGFjY2VwdCgpKSwgdGhpcywgU0lHTkFMKGFjY2VwdCgpKSk7CistICAgICAg ICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2csIFNJR05BTChyZWplY3QoKSksIHRoaXMsIFNJ R05BTChyZWplY3QoKSkpOworKyAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLmdl dCgpLCBTSUdOQUwoYWNjZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKysgICAgICAg IGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZy5nZXQoKSwgU0lHTkFMKHJlamVjdCgpKSwgdGhp cywgU0lHTkFMKHJlamVjdCgpKSk7CisgICAgIH0KKysKKysgICAgZC0+bG9vcC5jb25uZWN0KHRo aXMsIFNJR05BTChhY2NlcHQoKSksIFNMT1QocXVpdCgpKSk7CisrICAgIGQtPmxvb3AuY29ubmVj dCh0aGlzLCBTSUdOQUwocmVqZWN0KCkpLCBTTE9UKHF1aXQoKSkpOworIH0KKyAKKyBRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2c6On5RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coKQorQEAg LTE3Nyw3ICsxODIsNyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6aW5pdGlh bGl6ZURpYWxvZygpCisgICAgIHNldERpcmVjdG9yeShvcHRpb25zKCktPmluaXRpYWxEaXJlY3Rv cnkoKSk7CisgfQorIAorLXZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9y dGFsKCkKKyt2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbChRdDo6 V2luZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5kb3dNb2RhbGl0 eSwgUVdpbmRvdyAqcGFyZW50KQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZyk7CisgCitAQCAtMTg1LDEzICsxOTAsMTMgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCIvb3JnL2ZyZWVkZXNrdG9w L3BvcnRhbC9kZXNrdG9wIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm9yZy5mcmVlZGVza3RvcC5wb3J0 YWwuRmlsZUNob29zZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZC0+c2F2ZUZpbGUgPyBRTGF0aW4xU3RyaW5nKCJTYXZlRmls ZSIpIDogUUxhdGluMVN0cmluZygiT3BlbkZpbGUiKSk7CistICAgIFFTdHJpbmcgcGFyZW50V2lu ZG93SWQgPSBRTGF0aW4xU3RyaW5nKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIoZC0+d2luSWQs IDE2KTsKKysgICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJZCA9IFFMYXRpbjFTdHJpbmcoIngxMToi KSArIFFTdHJpbmc6Om51bWJlcihwYXJlbnQgPyBwYXJlbnQtPndpbklkKCkgOiAwLCAxNik7Cisg CisgICAgIFFWYXJpYW50TWFwIG9wdGlvbnM7CisgICAgIGlmICghZC0+YWNjZXB0TGFiZWwuaXNF bXB0eSgpKQorICAgICAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygiYWNjZXB0X2xh YmVsIiksIGQtPmFjY2VwdExhYmVsKTsKKyAKKy0gICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0 cmluZygibW9kYWwiKSwgZC0+bW9kYWwpOworKyAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3Ry aW5nKCJtb2RhbCIpLCB3aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWwpOworICAgICBvcHRp b25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtdWx0aXBsZSIpLCBkLT5tdWx0aXBsZUZpbGVzKTsK KyAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygiZGlyZWN0b3J5IiksIGQtPmRpcmVj dG9yeU1vZGUpOworIAorQEAgLTI5MCwxMCArMjk1LDE4IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAKKyAgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5k aW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdl KTsKKyAgICAgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIgPSBuZXcgUURCdXNQZW5k aW5nQ2FsbFdhdGNoZXIocGVuZGluZ0NhbGwpOworLSAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1 c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsIFt0aGlzXSAoUURCdXNQZW5kaW5n Q2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgY29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5k aW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLCBbPV0gKFFEQnVzUGVuZGluZ0NhbGxXYXRj aGVyICp3YXRjaGVyKSB7CisgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRREJ1c09iamVjdFBh dGg+IHJlcGx5ID0gKndhdGNoZXI7CistICAgICAgICBpZiAocmVwbHkuaXNFcnJvcigpKSB7Cist ICAgICAgICAgICAgUV9FTUlUIHJlamVjdCgpOworKyAgICAgICAgLy8gQW55IGVycm9yIG1lYW5z IHRoZSBkaWFsb2cgaXMgbm90IHNob3duIGFuZCB3ZSBuZWVkIHRvIGZhbGxiYWNrCisrICAgICAg ICBkLT5mYWlsZWRUb09wZW4gPSByZXBseS5pc0Vycm9yKCk7CisrICAgICAgICBpZiAoZC0+ZmFp bGVkVG9PcGVuKSB7CisrICAgICAgICAgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cpIHsKKysg ICAgICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hvdyh3aW5kb3dGbGFncywgd2lu ZG93TW9kYWxpdHksIHBhcmVudCk7CisrICAgICAgICAgICAgICAgIGlmIChkLT5sb29wLmlzUnVu bmluZygpKQorKyAgICAgICAgICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+ZXhlYygp OworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIFFfRU1JVCByZWplY3Qo KTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIFFEQnVz Q29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3QobnVsbHB0ciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5LnZhbHVlKCkucGF0aCgp LAorQEAgLTMwMiw2ICszMTUsNyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6 b3BlblBvcnRhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU0xPVChnb3RSZXNwb25zZSh1aW50LFFWYXJpYW50TWFwKSkpOworICAgICAgICAg fQorKyAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgfSk7CisgfQorIAorQEAg LTMyNiw3ICszNDAsNyBAQCBRVXJsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6ZGlyZWN0 b3J5KCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxl TW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+Zmls ZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAgICBpZiAo ZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpCisgICAgICAgICBy ZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+ZGlyZWN0b3J5KCk7CisgCisgICAgIHJldHVybiBk LT5kaXJlY3Rvcnk7CitAQCAtMzQ4LDcgKzM2Miw3IEBAIFFMaXN0PFFVcmw+IFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6c2VsZWN0ZWRGaWxlcygpIGNvbnN0CisgeworICAgICBRX0QoY29u c3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZp bGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6 OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25z OjpEaXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0 aXZlRmlsZURpYWxvZygpKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNl bGVjdGVkRmlsZXMoKTsKKyAKKyAgICAgUUxpc3Q8UVVybD4gZmlsZXM7CitAQCAtNDAzLDE2ICs0 MTcsMTMgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmV4ZWMoKQorIHsKKyAg ICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlmIChkLT5uYXRp dmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRp b25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0 aW9uczo6RGlyZWN0b3J5T25seSkpIHsKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYg dXNlTmF0aXZlRmlsZURpYWxvZygpKSB7CisgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5l eGVjKCk7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgLy8gSEFDSyB3ZSBoYXZl IHRvIGF2b2lkIHJldHVybmluZyB1bnRpbCB3ZSBlbWl0IHRoYXQgdGhlIGRpYWxvZyB3YXMgYWNj ZXB0ZWQgb3IgcmVqZWN0ZWQKKy0gICAgUUV2ZW50TG9vcCBsb29wOworLSAgICBsb29wLmNvbm5l Y3QodGhpcywgU0lHTkFMKGFjY2VwdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9vcC5jb25u ZWN0KHRoaXMsIFNJR05BTChyZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CistICAgIGxvb3AuZXhl YygpOworKyAgICBkLT5sb29wLmV4ZWMoKTsKKyB9CisgCisgdm9pZCBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2c6OmhpZGUoKQorQEAgLTQyOSwxMyArNDQwLDEwIEBAIGJvb2wgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nOjpzaG93KFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywgUXQ6 OldpbmRvd01vCisgCisgICAgIGluaXRpYWxpemVEaWFsb2coKTsKKyAKKy0gICAgZC0+bW9kYWwg PSB3aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWw7CistICAgIGQtPndpbklkID0gcGFyZW50 ID8gcGFyZW50LT53aW5JZCgpIDogMDsKKy0KKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cg JiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9y eSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3Rv cnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZlRmlsZURp YWxvZyhPcGVuRmFsbGJhY2spKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ct PnNob3cod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworIAorLSAgICBvcGVu UG9ydGFsKCk7CisrICAgIG9wZW5Qb3J0YWwod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBw YXJlbnQpOworIAorICAgICByZXR1cm4gdHJ1ZTsKKyB9CitAQCAtNDY1LDQgKzQ3MywyMSBAQCB2 b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6Z290UmVzcG9uc2UodWludCByZXNwb25z ZSwgY29uc3QgUVZhcmlhbnRNYXAgJgorICAgICB9CisgfQorIAorK2Jvb2wgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nOjp1c2VOYXRpdmVGaWxlRGlhbG9nKFFYZGdEZXNrdG9wUG9ydGFsRmls ZURpYWxvZzo6RmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlwZSkgY29uc3QKKyt7CisrICAgIFFfRChj b25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworKworKyAgICBpZiAoZC0+ZmFpbGVk VG9PcGVuICYmIGZhbGxiYWNrVHlwZSAhPSBPcGVuRmFsbGJhY2spCisrICAgICAgICByZXR1cm4g dHJ1ZTsKKysKKysgICAgaWYgKGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA8IDMpIHsKKysg ICAgICAgIGlmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpE aXJlY3RvcnkpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICBlbHNlIGlmIChv cHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5 KQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICB9CisrCisrICAgIHJldHVybiBmYWxz ZTsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmls ZWRpYWxvZ19wLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3Rv cHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCitpbmRleCA0ZjRkZTk2ZWNm Li42NWUyMmE1Y2YyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhl bWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAorKysr IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhk Z2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAorQEAgLTUxLDYgKzUxLDExIEBAIGNsYXNzIFFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyA6IHB1YmxpYyBRUGxhdGZvcm1GaWxlRGlhbG9nSGVs cGVyCisgICAgIFFfT0JKRUNUCisgICAgIFFfREVDTEFSRV9QUklWQVRFKFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZykKKyBwdWJsaWM6CisrICAgIGVudW0gRmFsbGJhY2tUeXBlIHsKKysgICAg ICAgIEdlbmVyaWNGYWxsYmFjaywKKysgICAgICAgIE9wZW5GYWxsYmFjaworKyAgICB9OworKwor ICAgICBlbnVtIENvbmRpdGlvblR5cGUgOiB1aW50IHsKKyAgICAgICAgIEdsb2JhbFBhdHRlcm4g PSAwLAorICAgICAgICAgTWltZVR5cGUgPSAxCitAQCAtNjksNyArNzQsNyBAQCBwdWJsaWM6Cisg ICAgIH07CisgICAgIHR5cGVkZWYgUVZlY3RvcjxGaWx0ZXI+IEZpbHRlckxpc3Q7CisgCistICAg IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpu YXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0cik7CisrICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0 ciwgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSAwKTsKKyAgICAgflFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZygpOworIAorICAgICBib29sIGRlZmF1bHROYW1lRmlsdGVyRGlzYWJs ZXMoKSBjb25zdCBvdmVycmlkZTsKK0BAIC05Miw3ICs5Nyw4IEBAIHByaXZhdGUgUV9TTE9UUzoK KyAKKyBwcml2YXRlOgorICAgICB2b2lkIGluaXRpYWxpemVEaWFsb2coKTsKKy0gICAgdm9pZCBv cGVuUG9ydGFsKCk7CisrICAgIHZvaWQgb3BlblBvcnRhbChRdDo6V2luZG93RmxhZ3Mgd2luZG93 RmxhZ3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5kb3dNb2RhbGl0eSwgUVdpbmRvdyAqcGFyZW50 KTsKKysgICAgYm9vbCB1c2VOYXRpdmVGaWxlRGlhbG9nKEZhbGxiYWNrVHlwZSBmYWxsYmFja1R5 cGUgPSBHZW5lcmljRmFsbGJhY2spIGNvbnN0OworIAorICAgICBRU2NvcGVkUG9pbnRlcjxRWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlPiBkX3B0cjsKKyB9OworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdk ZXNrdG9wcG9ydGFsdGhlbWUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVz L3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKK2luZGV4IGZiMzI0 YWZiZDguLmI4MDk1MDMxMjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAorKysr IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhk Z2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKK0BAIC0xMTEsNiArMTExLDcgQEAgUVhkZ0Rlc2t0b3BQ b3J0YWxUaGVtZTo6UVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZSgpCisgICAgICAgICBpZiAocmVwbHku aXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0g cmVwbHkudmFsdWUoKS50b1VJbnQoKTsKKyAgICAgICAgIH0KKysgICAgICAgIHdhdGNoZXItPmRl bGV0ZUxhdGVyKCk7CisgICAgIH0pOworIH0KKyAKK0BAIC0xNTIsMTEgKzE1MywxMiBAQCBRUGxh dGZvcm1EaWFsb2dIZWxwZXIqIFFYZGdEZXNrdG9wUG9ydGFsVGhlbWU6OmNyZWF0ZVBsYXRmb3Jt RGlhbG9nSGVscGVyKERpYWxvZworIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFs VGhlbWUpOworIAorLSAgICBpZiAodHlwZSA9PSBGaWxlRGlhbG9nKSB7CisrICAgIGlmICh0eXBl ID09IEZpbGVEaWFsb2cgJiYgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSB7CisgICAgICAg ICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBGaWxlQ2hvb3NlciBwb3J0YWwgZG9uJ3Qgc3VwcG9ydCBv cGVuaW5nIGRpcmVjdG9yaWVzLCB0aGVyZWZvcmUgd2UgZmFsbGJhY2sKKyAgICAgICAgIC8vIHRv IG5hdGl2ZSBmaWxlIGRpYWxvZyBvcGVuZWQgaW5zaWRlIHRoZSBzYW5kYm94IHRvIG9wZW4gYSBk aXJlY3RvcnkuCistICAgICAgICBpZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uIDwgMyAm JiBkLT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0aXZlRGlhbG9nKHR5cGUpKQorLSAgICAgICAg ICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKHN0YXRpY19jYXN0PFFQ bGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5iYXNlVGhlbWUtPmNyZWF0ZVBsYXRmb3JtRGlh bG9nSGVscGVyKHR5cGUpKSk7CisrICAgICAgICBpZiAoZC0+YmFzZVRoZW1lLT51c2VQbGF0Zm9y bU5hdGl2ZURpYWxvZyh0eXBlKSkKKysgICAgICAgICAgICByZXR1cm4gbmV3IFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZyhzdGF0aWNfY2FzdDxRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKj4o ZC0+YmFzZVRoZW1lLT5jcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcih0eXBlKSksCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+ZmlsZUNob29z ZXJQb3J0YWxWZXJzaW9uKTsKKyAKKyAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3By aW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5z L3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCitpbmRleCA0M2Q1ZTExOWFk Li4xZjljYmM0NTY1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9y dC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJp bnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKK0BAIC04OSw4ICs4OSwxMCBAQCB2 b2lkIFFDdXBzUHJpbnRFbmdpbmU6OnNldFByb3BlcnR5KFByaW50RW5naW5lUHJvcGVydHlLZXkg a2V5LCBjb25zdCBRVmFyaWFudCAmdgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUFBLX0R1 cGxleDogeworICAgICAgICAgUVByaW50OjpEdXBsZXhNb2RlIG1vZGUgPSBRUHJpbnQ6OkR1cGxl eE1vZGUodmFsdWUudG9JbnQoKSk7CistICAgICAgICBpZiAobW9kZSAhPSBkLT5kdXBsZXggJiYg ZC0+bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKG1vZGUpKQor KyAgICAgICAgaWYgKGQtPm1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMoKS5jb250 YWlucyhtb2RlKSkgeworICAgICAgICAgICAgIGQtPmR1cGxleCA9IG1vZGU7CisrICAgICAgICAg ICAgZC0+ZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IHRydWU7CisrICAgICAgICB9CisgICAg ICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIFBQS19QcmludGVyTmFtZToKK0BAIC0yNzcs OSArMjc5LDEyIEBAIHZvaWQgUUN1cHNQcmludEVuZ2luZVByaXZhdGU6OmNoYW5nZVByaW50ZXIo Y29uc3QgUVN0cmluZyAmbmV3UHJpbnRlcikKKyAgICAgbV9wcmludERldmljZS5zd2FwKHByaW50 RGV2aWNlKTsKKyAgICAgcHJpbnRlck5hbWUgPSBtX3ByaW50RGV2aWNlLmlkKCk7CisgCistICAg IC8vIENoZWNrIGlmIG5ldyBwcmludGVyIHN1cHBvcnRzIGN1cnJlbnQgc2V0dGluZ3MsIG90aGVy d2lzZSB1cyBkZWZhdWx0cworLSAgICBpZiAoZHVwbGV4ICE9IFFQcmludDo6RHVwbGV4QXV0byAm JiAhbV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKGR1cGxleCkp CisrICAgIC8vIGluIGNhc2UgYSBkdXBsZXggdmFsdWUgd2FzIGV4cGxpY2l0bHkgc2V0LCBjaGVj ayBpZiBuZXcgcHJpbnRlciBzdXBwb3J0cyBjdXJyZW50IHZhbHVlLAorKyAgICAvLyBvdGhlcndp c2UgdXNlIGRldmljZSBkZWZhdWx0CisrICAgIGlmICghZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRs eSB8fCAhbV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKGR1cGxl eCkpIHsKKyAgICAgICAgIGR1cGxleCA9IG1fcHJpbnREZXZpY2UuZGVmYXVsdER1cGxleE1vZGUo KTsKKysgICAgICAgIGR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBmYWxzZTsKKysgICAgfQor ICAgICBRUHJpbnQ6OkNvbG9yTW9kZSBjb2xvck1vZGUgPSBncmF5c2NhbGUgPyBRUHJpbnQ6Okdy YXlTY2FsZSA6IFFQcmludDo6Q29sb3I7CisgICAgIGlmICghbV9wcmludERldmljZS5zdXBwb3J0 ZWRDb2xvck1vZGVzKCkuY29udGFpbnMoY29sb3JNb2RlKSkKKyAgICAgICAgIGdyYXlzY2FsZSA9 IG1fcHJpbnREZXZpY2UuZGVmYXVsdENvbG9yTW9kZSgpID09IFFQcmludDo6R3JheVNjYWxlOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3By aW50ZW5naW5lX3AuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vw c3ByaW50ZW5naW5lX3AuaAoraW5kZXggYzAyMWIwYzY0My4uOGY4MWZlNDc4ZCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5l X3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJp bnRlbmdpbmVfcC5oCitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CisgICAgIFFTdHJpbmdM aXN0IGN1cHNPcHRpb25zOworICAgICBRU3RyaW5nIGN1cHNUZW1wRmlsZTsKKyAgICAgUVByaW50 OjpEdXBsZXhNb2RlIGR1cGxleDsKKysgICAgYm9vbCBkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5 ID0gZmFsc2U7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAoraW5kZXggNjdlNzE1NGZh Ni4uNDA4NzYxNTJlNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJz L2liYXNlL3FzcWxfaWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVy cy9pYmFzZS9xc3FsX2liYXNlLmNwcAorQEAgLTgxNyw3ICs4MTcsNyBAQCBib29sIFFJQmFzZVJl c3VsdFByaXZhdGU6OndyaXRlQXJyYXkoaW50IGNvbHVtbiwgY29uc3QgUUxpc3Q8UVZhcmlhbnQ+ ICZsaXN0KQorICAgICBiYS5yZXNpemUoaW50KGJ1ZkxlbikpOworIAorICAgICBpZiAobGlzdC5z aXplKCkgPiBhcnJheVNpemUpIHsKKy0gICAgICAgIGVycm9yID0gUUxhdGluMVN0cmluZygiQXJy YXkgc2l6ZSBtaXNzbWF0Y2g6IHNpemUgb2YgJTEgaXMgJTIsIHNpemUgb2YgcHJvdmlkZWQgbGlz dCBpcyAlMyIpOworKyAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJheSBzaXplIG1p c21hdGNoOiBzaXplIG9mICUxIGlzICUyLCBzaXplIG9mIHByb3ZpZGVkIGxpc3QgaXMgJTMiKTsK KyAgICAgICAgIGVycm9yID0gZXJyb3IuYXJnKFFMYXRpbjFTdHJpbmcoc3FsbmFtZSkpLmFyZyhh cnJheVNpemUpLmFyZyhsaXN0LnNpemUoKSk7CisgICAgICAgICBxLT5zZXRMYXN0RXJyb3IoUVNx bEVycm9yKGVycm9yLCBRTGF0aW4xU3RyaW5nKCIiKSwgUVNxbEVycm9yOjpTdGF0ZW1lbnRFcnJv cikpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5z L3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAKK2luZGV4IDdjYTA1NWVlYTIuLjZiYzlk NDY3NTUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9x c3FsX215c3FsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwv cXNxbF9teXNxbC5jcHAKK0BAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgorICAgICBzdHJ1Y3Qg UU15RmllbGQKKyAgICAgeworICAgICAgICAgY2hhciAqb3V0RmllbGQgPSBudWxscHRyOworLSAg ICAgICAgTVlTUUxfRklFTEQgKm15RmllbGQgPSBudWxscHRyOworKyAgICAgICAgY29uc3QgTVlT UUxfRklFTEQgKm15RmllbGQgPSBudWxscHRyOworICAgICAgICAgUU1ldGFUeXBlOjpUeXBlIHR5 cGUgPSBRTWV0YVR5cGU6OlVua25vd25UeXBlOworICAgICAgICAgbXlfYm9vbCBudWxsSW5kaWNh dG9yID0gZmFsc2U7CisgICAgICAgICB1bG9uZyBidWZMZW5ndGggPSAwdWw7CitAQCAtMzYxLDcg KzM2MSw3IEBAIHN0YXRpYyBib29sIHFJc0ludGVnZXIoaW50IHQpCisgdm9pZCBRTVlTUUxSZXN1 bHRQcml2YXRlOjpiaW5kQmxvYnMoKQorIHsKKyAgICAgaW50IGk7CistICAgIE1ZU1FMX0ZJRUxE ICpmaWVsZEluZm87CisrICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisgICAgIE1Z U1FMX0JJTkQgKmJpbmQ7CisgCisgICAgIGZvcihpID0gMDsgaSA8IGZpZWxkcy5jb3VudCgpOyAr K2kpIHsKK0BAIC0zNzksNyArMzc5LDYgQEAgdm9pZCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5k QmxvYnMoKQorIGJvb2wgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEluVmFsdWVzKCkKKyB7Cisg ICAgIE1ZU1FMX0JJTkQgKmJpbmQ7CistICAgIGNoYXIgKmZpZWxkOworICAgICBpbnQgaSA9IDA7 CisgCisgICAgIGlmICghbWV0YSkKK0BAIC0zOTIsMzUgKzM5MSwzNCBAQCBib29sIFFNWVNRTFJl c3VsdFByaXZhdGU6OmJpbmRJblZhbHVlcygpCisgICAgIGluQmluZHMgPSBuZXcgTVlTUUxfQklO RFtmaWVsZHMuc2l6ZSgpXTsKKyAgICAgbWVtc2V0KGluQmluZHMsIDAsIGZpZWxkcy5zaXplKCkg KiBzaXplb2YoTVlTUUxfQklORCkpOworIAorLSAgICBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOwor KyAgICBjb25zdCBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworIAorICAgICB3aGlsZSgoZmllbGRJ bmZvID0gbXlzcWxfZmV0Y2hfZmllbGQobWV0YSkpKSB7CisrICAgICAgICBiaW5kID0gJmluQmlu ZHNbaV07CisrCisgICAgICAgICBRTXlGaWVsZCAmZiA9IGZpZWxkc1tpXTsKKyAgICAgICAgIGYu bXlGaWVsZCA9IGZpZWxkSW5mbzsKKy0KKysgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBm LmJ1Zkxlbmd0aCA9IGZpZWxkSW5mby0+bGVuZ3RoICsgMTsKKysgICAgICAgIGJpbmQtPmJ1ZmZl cl90eXBlID0gZmllbGRJbmZvLT50eXBlOworICAgICAgICAgZi50eXBlID0gcURlY29kZU1ZU1FM VHlwZShmaWVsZEluZm8tPnR5cGUsIGZpZWxkSW5mby0+ZmxhZ3MpOworICAgICAgICAgaWYgKHFJ c0Jsb2IoZmllbGRJbmZvLT50eXBlKSkgeworICAgICAgICAgICAgIC8vIHRoZSBzaXplIG9mIGEg YmxvYi1maWVsZCBpcyBhdmFpbGFibGUgYXMgc29vbiBhcyB3ZSBjYWxsCisgICAgICAgICAgICAg Ly8gbXlzcWxfc3RtdF9zdG9yZV9yZXN1bHQoKQorICAgICAgICAgICAgIC8vIGFmdGVyIG15c3Fs X3N0bXRfZXhlYygpIGluIFFNWVNRTFJlc3VsdDo6ZXhlYygpCistICAgICAgICAgICAgZmllbGRJ bmZvLT5sZW5ndGggPSAwOworKyAgICAgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1 Zkxlbmd0aCA9IDA7CisgICAgICAgICAgICAgaGFzQmxvYnMgPSB0cnVlOworICAgICAgICAgfSBl bHNlIGlmIChxSXNJbnRlZ2VyKGYudHlwZSkpIHsKKy0gICAgICAgICAgICBmaWVsZEluZm8tPmxl bmd0aCA9IDg7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3Ro ID0gODsKKyAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgZmllbGRJbmZvLT50eXBlID0g TVlTUUxfVFlQRV9TVFJJTkc7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBNWVNR TF9UWVBFX1NUUklORzsKKyAgICAgICAgIH0KKy0gICAgICAgIGJpbmQgPSAmaW5CaW5kc1tpXTsK Ky0gICAgICAgIGZpZWxkID0gbmV3IGNoYXJbZmllbGRJbmZvLT5sZW5ndGggKyAxXTsKKy0gICAg ICAgIG1lbXNldChmaWVsZCwgMCwgZmllbGRJbmZvLT5sZW5ndGggKyAxKTsKKyAKKy0gICAgICAg IGJpbmQtPmJ1ZmZlcl90eXBlID0gZmllbGRJbmZvLT50eXBlOworLSAgICAgICAgYmluZC0+YnVm ZmVyID0gZmllbGQ7CistICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGgg PSBmaWVsZEluZm8tPmxlbmd0aCArIDE7CisgICAgICAgICBiaW5kLT5pc19udWxsID0gJmYubnVs bEluZGljYXRvcjsKKyAgICAgICAgIGJpbmQtPmxlbmd0aCA9ICZmLmJ1Zkxlbmd0aDsKKyAgICAg ICAgIGJpbmQtPmlzX3Vuc2lnbmVkID0gZmllbGRJbmZvLT5mbGFncyAmIFVOU0lHTkVEX0ZMQUcg PyAxIDogMDsKKy0gICAgICAgIGYub3V0RmllbGQ9ZmllbGQ7CisrCisrICAgICAgICBjaGFyICpm aWVsZCA9IG5ldyBjaGFyW2JpbmQtPmJ1ZmZlcl9sZW5ndGggKyAxXXt9OworKyAgICAgICAgYmlu ZC0+YnVmZmVyID0gZi5vdXRGaWVsZCA9IGZpZWxkOworIAorICAgICAgICAgKytpOworICAgICB9 CitAQCAtMTM2OSwyMCArMTM2NywyMCBAQCBib29sIFFNWVNRTERyaXZlcjo6b3Blbihjb25zdCBR U3RyaW5nJiBkYiwKKyAgICAgfQorIAorICNpZiBNWVNRTF9WRVJTSU9OX0lEID49IDUwMDA3Cist ICAgIGlmIChteXNxbF9nZXRfY2xpZW50X3ZlcnNpb24oKSA+PSA1MDUwMyAmJiBteXNxbF9nZXRf c2VydmVyX3ZlcnNpb24oZC0+bXlzcWwpID49IDUwNTAzKSB7CistICAgICAgICAvLyBmb3JjZSB0 aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0IChvbmx5IHV0ZjhtYjQgc3VwcG9ydHMgNC1i eXRlIGNoYXJhY3RlcnMpCistICAgICAgICBteXNxbF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNx bCwgInV0ZjhtYjQiKTsKKysgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRm OG1iNCAob25seSB1dGY4bWI0IHN1cHBvcnRzIDQtYnl0ZSBjaGFyYWN0ZXJzKQorKyAgICBpZiAo bXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4bWI0IikpIHsKKysgICAgICAg IC8vIHRoaXMgZmFpbGVkLCB0cnkgZm9yY2luZyBpdCB0byB1dGYgKEJNUCBvbmx5KQorKyAgICAg ICAgaWYgKG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOCIpKQorKyAgICAg ICAgICAgIHFXYXJuaW5nKCkgPDwgIk15U1FMOiBVbmFibGUgdG8gc2V0IHRoZSBjbGllbnQgY2hh cmFjdGVyIHNldCB0byB1dGY4LiI7CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29kZWMpCistICAgICAg ICBkLT50YyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKTsKKysgICAgICAgIGVs c2UKKysgICAgICAgICAgICBkLT50YyA9IGNvZGVjKGQtPm15c3FsKTsKKyAjZW5kaWYKKy0gICAg fSBlbHNlCistICAgIHsKKy0gICAgICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0aW9uIHRvIGJl IHV0ZjgKKy0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOCIp OworKyAgICB9CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29kZWMpCistICAgICAgICBkLT50YyA9IGNv ZGVjKGQtPm15c3FsKTsKKysgICAgZWxzZQorKyAgICAgICAgZC0+dGMgPSBRVGV4dENvZGVjOjpj b2RlY0Zvck5hbWUoIlVURi04Iik7CisgI2VuZGlmCistICAgIH0KKyAjZW5kaWYgIC8vIE1ZU1FM X1ZFUlNJT05fSUQgPj0gNTAwMDcKKyAKKyAgICAgZC0+cHJlcGFyZWRRdWVyeXNFbmFibGVkID0g Y2hlY2tQcmVwYXJlZFF1ZXJpZXMoZC0+bXlzcWwpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMjQucG5nCitzaW1pbGFyaXR5IGluZGV4 IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQt MjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVy LTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ByaW50LTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ByaW50ZXItMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMzIucG5nCityZW5hbWUgdG8gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5w bmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZh Y2luZy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nCityZW5hbWUgdG8g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmcK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2Utc2lkZWQtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvdmlldy1wYWdlcy1mYWNpbmctMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFt ZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTMy LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl cy1mYWNpbmctMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nCitzaW1pbGFyaXR5 IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv dmlldy1wYWdlLW11bHRpLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nIGIv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmll dy0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nCityZW5hbWUgdG8gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXct cGFnZS1vbmUtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv dmlldy1wYWdlcy1zaW5nbGUtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBm cm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmcK K3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2lu Z2xlLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEw MCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl LW9uZS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3Zp ZXctcGFnZXMtc2luZ2xlLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4 IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBh Z2UtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29t LWZpdC1wYWdlLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUK K3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMzIu cG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1w YWdlLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVu YW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMjQucG5n CityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0 aC0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy9maXQtd2lkdGgtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFt ZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTMyLnBuZwor cmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgt MzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFn ZXNldHVwZGlhbG9nX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9x cGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCitpbmRleCA3OGU1YjhkMWVmLi4yYTI4NTE2NzE5IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlh bG9nX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdl c2V0dXBkaWFsb2dfdW5peC5jcHAKK0BAIC01MzIsNiArNTMyLDcgQEAgdm9pZCBRUGFnZVNldHVw V2lkZ2V0Ojp1cGRhdGVXaWRnZXQoKQorIHZvaWQgUVBhZ2VTZXR1cFdpZGdldDo6c2V0dXBQcmlu dGVyKCkgY29uc3QKKyB7CisgICAgIG1fcHJpbnRlci0+c2V0UGFnZUxheW91dChtX3BhZ2VMYXlv dXQpOworKyAgICBtX3ByaW50ZXItPnNldFBhZ2VPcmllbnRhdGlvbihtX3BhZ2VMYXlvdXQub3Jp ZW50YXRpb24oKSk7CisgI2lmIFFUX0NPTkZJRyhjdXBzKQorICAgICBRQ1VQU1N1cHBvcnQ6OlBh Z2VzUGVyU2hlZXQgcGFnZXNQZXJTaGVldCA9IHF2YXJpYW50X2Nhc3Q8UUNVUFNTdXBwb3J0OjpQ YWdlc1BlclNoZWV0PihtX3VpLnBhZ2VzUGVyU2hlZXRDb21iby0+Y3VycmVudERhdGEoKQorICk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFs b2cucXJjIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJj CitpbmRleCA1YTU3OWJhYTU1Li4xMGI4ZTFkMzQxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjCisrKysgYi9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKK0BAIC0xLDkgKzEsOSBAQAorIDwh RE9DVFlQRSBSQ0M+PFJDQyB2ZXJzaW9uPSIxLjAiPgorIDxxcmVzb3VyY2UgcHJlZml4PSIvcXQt cHJvamVjdC5vcmcvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nIj4KKy08ZmlsZT5pbWFnZXMv Zml0LXBhZ2UtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtcGFnZS0zMi5wbmc8L2Zp bGU+CistPGZpbGU+aW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2Vz L2ZpdC13aWR0aC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQu cG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBuZzwvZmlsZT4KKys8 ZmlsZT5pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96 b29tLWZpdC13aWR0aC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWZpcnN0LTI0LnBu ZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3QtMzIucG5nPC9maWxlPgorIDxmaWxlPmlt YWdlcy9nby1sYXN0LTI0LnBuZzwvZmlsZT4KK0BAIC0xOCwxNCArMTgsMTQgQEAKKyA8ZmlsZT5p bWFnZXMvbGF5b3V0LXBvcnRyYWl0LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvcGFnZS1z ZXR1cC0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3BhZ2Utc2V0dXAtMzIucG5nPC9maWxl PgorLTxmaWxlPmltYWdlcy9wcmludC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ByaW50 LTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZzwvZmls ZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRpLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5p bWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFn ZS1vbmUtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5n PC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nPC9maWxlPgorKzxm aWxlPmltYWdlcy9wcmludGVyLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvcHJpbnRlci0z Mi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nPC9m aWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZzwvZmlsZT4KKys8 ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdl cy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFn ZXMtZmFjaW5nLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmct MzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29tLWluLTI0LnBuZzwvZmlsZT4KKyA8Zmls ZT5pbWFnZXMvem9vbS1pbi0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20tb3V0LTI0 LnBuZzwvZmlsZT4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L3FwcmludGRpYWxvZ191bml4LmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv cXByaW50ZGlhbG9nX3VuaXguY3BwCitpbmRleCBjNWI4NDVmNGVjLi41YTViYTFkMGE4IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5p eC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9n X3VuaXguY3BwCitAQCAtNzAyLDEzICs3MDIsMTQgQEAgdm9pZCBRUHJpbnREaWFsb2dQcml2YXRl OjpzZWxlY3RQcmludGVyKGNvbnN0IFFQcmludGVyOjpPdXRwdXRGb3JtYXQgb3V0cHV0Rm9ybWEK KyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBvcHRpb25zLmdyYXlzY2FsZS0+c2V0Q2hlY2tl ZCh0cnVlKTsKKyAKKy0gICAgICAgIC8vIGtlZXAgZHVwbGV4IHZhbHVlIGV4cGxpY2l0bHkgc2V0 IGJ5IHVzZXIsIGlmIGFueSwgYW5kIHNlbGVjdGVkIHByaW50ZXIgc3VwcG9ydHMgaXQ7CistICAg ICAgICAvLyB1c2UgZGV2aWNlIGRlZmF1bHQgb3RoZXJ3aXNlCisrICAgICAgICAvLyBkdXBsZXgg cHJpb3JpdGllcyB0byBiZSBhcyBmb2xsb3dzOgorKyAgICAgICAgLy8gMSkgYSB1c2VyLXNlbGVj dGVkIGR1cGxleCB2YWx1ZSBpbiB0aGUgZGlhbG9nIGhhcyBoaWdoZXN0IHByb3JpdHkKKysgICAg ICAgIC8vIDIpIGR1cGxleCB2YWx1ZSBzZXQgaW4gdGhlIFFQcmludGVyCisgICAgICAgICBRUHJp bnQ6OkR1cGxleE1vZGUgZHVwbGV4OworICAgICAgICAgaWYgKGV4cGxpY2l0RHVwbGV4TW9kZSAh PSBRUHJpbnQ6OkR1cGxleEF1dG8gJiYgc3VwcG9ydGVkRHVwbGV4TW9kZS5jb250YWlucyhleHBs aWNpdER1cGxleE1vZGUpKQorICAgICAgICAgICAgIGR1cGxleCA9IGV4cGxpY2l0RHVwbGV4TW9k ZTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBkdXBsZXggPSB0b3AtPmQtPm1fY3VycmVu dFByaW50RGV2aWNlLmRlZmF1bHREdXBsZXhNb2RlKCk7CisrICAgICAgICAgICAgZHVwbGV4ID0g c3RhdGljX2Nhc3Q8UVByaW50OjpEdXBsZXhNb2RlPihwLT5kdXBsZXgoKSk7CisgICAgICAgICBz d2l0Y2ggKGR1cGxleCkgeworICAgICAgICAgY2FzZSBRUHJpbnQ6OkR1cGxleE5vbmU6CisgICAg ICAgICAgICAgb3B0aW9ucy5ub0R1cGxleC0+c2V0Q2hlY2tlZCh0cnVlKTsgYnJlYWs7CitAQCAt MTI0MiwxMCArMTI0MywxMCBAQCB2b2lkIFFVbml4UHJpbnRXaWRnZXRQcml2YXRlOjpfcV9wcmlu dGVyQ2hhbmdlZChpbnQgaW5kZXgpCisgICAgICAgICAgICAgUVN0cmluZyBmaWxlbmFtZSA9IHdp ZGdldC5maWxlbmFtZS0+dGV4dCgpOworICAgICAgICAgICAgIHdpZGdldC5maWxlbmFtZS0+c2V0 VGV4dChmaWxlbmFtZSk7CisgICAgICAgICAgICAgd2lkZ2V0LmxPdXRwdXQtPnNldEVuYWJsZWQo dHJ1ZSk7CistICAgICAgICAgICAgaWYgKG9wdGlvbnNQYW5lKQorLSAgICAgICAgICAgICAgICBv cHRpb25zUGFuZS0+c2VsZWN0UHJpbnRlcihRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAg ICAgICBwcmludGVyLT5zZXRPdXRwdXRGb3JtYXQoUVByaW50ZXI6OlBkZkZvcm1hdCk7CisgICAg ICAgICAgICAgbV9jdXJyZW50UHJpbnREZXZpY2UgPSBRUHJpbnREZXZpY2UoKTsKKysgICAgICAg ICAgICBpZiAob3B0aW9uc1BhbmUpCisrICAgICAgICAgICAgICAgIG9wdGlvbnNQYW5lLT5zZWxl Y3RQcmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIHJldHVybjsKKyAg ICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCitpbmRleCAzOTU3NWQ1ZjU3Li4yM2I3ZTg5 NTM4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRw cmV2aWV3ZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9x cHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAorQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFFQcmludFBy ZXZpZXdEaWFsb2dQcml2YXRlOjppbml0KFFQcmludGVyICpfcHJpbnRlcikKKyBzdGF0aWMgaW5s aW5lIHZvaWQgcXRfc2V0dXBBY3Rpb25JY29uKFFBY3Rpb24gKmFjdGlvbiwgUUxhdGluMVN0cmlu ZyBuYW1lKQorIHsKKyAgICAgUUxhdGluMVN0cmluZyBpbWFnZVByZWZpeCgiOi9xdC1wcm9qZWN0 Lm9yZy9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cvaW1hZ2VzLyIpOworLSAgICBRSWNvbiBp Y29uOworKyAgICBRSWNvbiBpY29uID0gUUljb246OmZyb21UaGVtZShuYW1lKTsKKyAgICAgaWNv bi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFMYXRpbjFTdHJpbmcoIi0yNC5wbmciKSwg UVNpemUoMjQsIDI0KSk7CisgICAgIGljb24uYWRkRmlsZShpbWFnZVByZWZpeCArIG5hbWUgKyBR TGF0aW4xU3RyaW5nKCItMzIucG5nIiksIFFTaXplKDMyLCAzMikpOworICAgICBhY3Rpb24tPnNl dEljb24oaWNvbik7CitAQCAtMzgzLDggKzM4Myw4IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxv Z1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIGZpdFBhZ2VBY3Rpb24tPnNldE9iamVjdE5h bWUoUUxhdGluMVN0cmluZygiZml0UGFnZUFjdGlvbiIpKTsKKyAgICAgZml0V2lkdGhBY3Rpb24t PnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0Q2hlY2thYmxlKHRy dWUpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0V2lkdGhBY3Rpb24sIFFMYXRpbjFTdHJp bmcoImZpdC13aWR0aCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFBhZ2VBY3Rpb24s IFFMYXRpbjFTdHJpbmcoImZpdC1wYWdlIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0 V2lkdGhBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInpvb20tZml0LXdpZHRoIikpOworKyAgICBxdF9z ZXR1cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxhdGluMVN0cmluZygiem9vbS1maXQtcGFn ZSIpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChmaXRHcm91cCwgU0lHTkFMKHRyaWdnZXJlZChR QWN0aW9uKikpLCBxLCBTTE9UKF9xX2ZpdChRQWN0aW9uKikpKTsKKyAKKyAgICAgLy8gWm9vbQor QEAgLTQxMCw5ICs0MTAsOSBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1 cEFjdGlvbnMoKQorICAgICBzaW5nbGVNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24o UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cg c2luZ2xlIHBhZ2UiKSk7CisgICAgIGZhY2luZ01vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFj dGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAi U2hvdyBmYWNpbmcgcGFnZXMiKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlvbiA9IG1vZGVHcm91 cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0Rp YWxvZyIsICJTaG93IG92ZXJ2aWV3IG9mIGFsbCBwYWdlcyIpKTsKKy0gICAgcXRfc2V0dXBBY3Rp b25JY29uKHNpbmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1vbmUiKSk7 CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5n KCJ2aWV3LXBhZ2Utc2lkZWQiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihvdmVydmlld01v ZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1tdWx0aSIpKTsKKysgICAgcXRfc2V0 dXBBY3Rpb25JY29uKHNpbmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMt c2luZ2xlIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oZmFjaW5nTW9kZUFjdGlvbiwgUUxh dGluMVN0cmluZygidmlldy1wYWdlcy1mYWNpbmciKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNv bihvdmVydmlld01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtb3ZlcnZpZXci KSk7CisgICAgIHNpbmdsZU1vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygi c2luZ2xlTW9kZUFjdGlvbiIpKTsKKyAgICAgZmFjaW5nTW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFt ZShRTGF0aW4xU3RyaW5nKCJmYWNpbmdNb2RlQWN0aW9uIikpOworICAgICBvdmVydmlld01vZGVB Y3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygib3ZlcnZpZXdNb2RlQWN0aW9uIikp OworQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpz ZXR1cEFjdGlvbnMoKQorICAgICBwcmludGVyR3JvdXAgPSBuZXcgUUFjdGlvbkdyb3VwKHEpOwor ICAgICBwcmludEFjdGlvbiA9IHByaW50ZXJHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRp b246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJQcmludCIpKTsKKyAgICAgcGFn ZVNldHVwQWN0aW9uID0gcHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6 dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlBhZ2Ugc2V0dXAiKSk7CistICAgIHF0 X3NldHVwQWN0aW9uSWNvbihwcmludEFjdGlvbiwgUUxhdGluMVN0cmluZygicHJpbnQiKSk7Cisr ICAgIHF0X3NldHVwQWN0aW9uSWNvbihwcmludEFjdGlvbiwgUUxhdGluMVN0cmluZygicHJpbnRl ciIpKTsKKyAgICAgcXRfc2V0dXBBY3Rpb25JY29uKHBhZ2VTZXR1cEFjdGlvbiwgUUxhdGluMVN0 cmluZygicGFnZS1zZXR1cCIpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwcmludEFjdGlvbiwg U0lHTkFMKHRyaWdnZXJlZChib29sKSksIHEsIFNMT1QoX3FfcHJpbnQoKSkpOworICAgICBRT2Jq ZWN0Ojpjb25uZWN0KHBhZ2VTZXR1cEFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZChib29sKSksIHEs IFNMT1QoX3FfcGFnZVNldHVwKCkpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3NxbC9rZXJu ZWwvcXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwCitp bmRleCAzMmM2MTY2Yzc5Li42MGFmZWYxMGMzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9zcWwv a2VybmVsL3FzcWxxdWVyeS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVl cnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiog Q29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMp IDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0Lmlv L2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFNxbCBtb2R1 bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMzc3LDYgKzM3NywxMCBAQCBib29sIFFTcWxRdWVy eTo6ZXhlYyhjb25zdCBRU3RyaW5nJiBxdWVyeSkKKyAgICAgUUVsYXBzZWRUaW1lciB0OworICAg ICB0LnN0YXJ0KCk7CisgI2VuZGlmCisrICAgIGlmICghZHJpdmVyKCkpIHsKKysgICAgICAgIHFX YXJuaW5nKCJRU3FsUXVlcnk6OmV4ZWM6IGNhbGxlZCBiZWZvcmUgZHJpdmVyIGhhcyBiZWVuIHNl dCB1cCIpOworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisgICAgIGlmIChkLT5yZWYu bG9hZFJlbGF4ZWQoKSAhPSAxKSB7CisgICAgICAgICBib29sIGZvID0gaXNGb3J3YXJkT25seSgp OworICAgICAgICAgKnRoaXMgPSBRU3FsUXVlcnkoZHJpdmVyKCktPmNyZWF0ZVJlc3VsdCgpKTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVy LmNwcCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitp bmRleCA4ZWZiOWM1M2Q0Li5jZTA2MmY2NmQ3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0 bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvdGVzdGxp Yi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQg UUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyUHJpdmF0ZTo6cGFyZW50KCkKKyAKKyAgICAgLy8gQ29t bW9uIGVycm9yIHRlc3QgIzIsIG1ha2Ugc3VyZSB0aGF0IGEgc2Vjb25kIGxldmVsIGluZGV4IGhh cyBhIHBhcmVudAorICAgICAvLyB0aGF0IGlzIHRoZSBmaXJzdCBsZXZlbCBpbmRleC4KKy0gICAg aWYgKG1vZGVsLT5yb3dDb3VudCh0b3BJbmRleCkgPiAwKSB7CisrICAgIGlmIChtb2RlbC0+cm93 Q291bnQodG9wSW5kZXgpID4gMCAmJiBtb2RlbC0+Y29sdW1uQ291bnQodG9wSW5kZXgpID4gMCkg eworICAgICAgICAgUU1vZGVsSW5kZXggY2hpbGRJbmRleCA9IG1vZGVsLT5pbmRleCgwLCAwLCB0 b3BJbmRleCk7CisgICAgICAgICBNT0RFTFRFU1RFUl9WRVJJRlkoY2hpbGRJbmRleC5pc1ZhbGlk KCkpOworICAgICAgICAgTU9ERUxURVNURVJfQ09NUEFSRShtb2RlbC0+cGFyZW50KGNoaWxkSW5k ZXgpLCB0b3BJbmRleCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtl eS5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAoraW5kZXggOWEzMDhkYTJi Yy4uOTM0OThiMjU2ZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXku Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAorQEAgLTQ5OCw2ICs0 OTgsMTEgQEAgY2hhciBRVGVzdDo6a2V5VG9Bc2NpaShRdDo6S2V5IGtleSkKKyAgICAgY2FzZSBR dDo6S2V5X0xhdW5jaEUgOiByZXR1cm4gMDsgLy8gPSAweDEwYjAsCisgICAgIGNhc2UgUXQ6Oktl eV9MYXVuY2hGIDogcmV0dXJuIDA7IC8vID0gMHgxMGIxLAorIAorKyAgICAvLyBLZXlwYWQgbmF2 aWdhdGlvbiBrZXlzCisrICAgIGNhc2UgUXQ6OktleV9TZWxlY3QgOiByZXR1cm4gMDsgLy8gPSAw eDAxMDEwMDAwCisrICAgIGNhc2UgUXQ6OktleV9ZZXMgOiByZXR1cm4gMDsgLy8gPSAweDAxMDEw MDAxCisrICAgIGNhc2UgUXQ6OktleV9ObyA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDIKKysK KyAgICAgZGVmYXVsdDogUVRFU1RfQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7CisgICAgIH0KKyB9 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcCBiL3F0YmFz ZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKK2luZGV4IDg4MDI4YWFjNmUuLjJlODk5MzA3 NzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCitAQCAtMjUxLDcgKzI1MSw4IEBA IGJvb2wgUVRlc3RSZXN1bHQ6OnZlcmlmeShib29sIHN0YXRlbWVudCwgY29uc3QgY2hhciAqc3Rh dGVtZW50U3RyLAorIHsKKyAgICAgUVRFU1RfQVNTRVJUKHN0YXRlbWVudFN0cik7CisgCistICAg IGNoYXIgbXNnWzEwMjRdID0geydcMCd9OworKyAgICBjaGFyIG1zZ1sxMDI0XTsKKysgICAgbXNn WzBdID0gJ1wwJzsKKyAKKyAgICAgaWYgKFFUZXN0TG9nOjp2ZXJib3NlTGV2ZWwoKSA+PSAyKSB7 CisgICAgICAgICBxc25wcmludGYobXNnLCAxMDI0LCAiUVZFUklGWSglcykiLCBzdGF0ZW1lbnRT dHIpOworQEAgLTMwOSw3ICszMTAsOCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlSGVscGVyKGJvb2wg c3VjY2VzcywgY29uc3QgY2hhciAqZmFpbHVyZU1zZywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJvb2wgaGFzVmFsdWVzID0gdHJ1ZSkKKyB7CisgICAgIGNvbnN0IHNpemVfdCBtYXhNc2dM ZW4gPSAxMDI0OworLSAgICBjaGFyIG1zZ1ttYXhNc2dMZW5dID0geydcMCd9OworKyAgICBjaGFy IG1zZ1ttYXhNc2dMZW5dOworKyAgICBtc2dbMF0gPSAnXDAnOworIAorICAgICBRVEVTVF9BU1NF UlQoZXhwZWN0ZWQpOworICAgICBRVEVTVF9BU1NFUlQoYWN0dWFsKTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwIGIvcXRiYXNlL3NyYy93 aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAoraW5kZXggNDI0NzczMTI3NS4uY2IzMjVi ZTg1YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxv Zy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAK K0BAIC03OCw3ICs3OCwxMCBAQAorICNpbmNsdWRlICJxd2luZG93LmgiCisgCisgI2luY2x1ZGUg InByaXZhdGUvcWRpYWxvZ19wLmgiCisrI2luY2x1ZGUgInByaXZhdGUvcWd1aWFwcGxpY2F0aW9u X3AuaCIKKyAKKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXNlcnZpY2VzLmg+CisrI2luY2x1ZGUg PHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisg UVRfQkVHSU5fTkFNRVNQQUNFCitAQCAtMTYxMSw2ICsxNjE0LDIwIEBAIHZvaWQgUUNvbG9yRGlh bG9nUHJpdmF0ZTo6X3FfbmV3U3RhbmRhcmQoaW50IHIsIGludCBjKQorIHZvaWQgUUNvbG9yRGlh bG9nUHJpdmF0ZTo6X3FfcGlja1NjcmVlbkNvbG9yKCkKKyB7CisgICAgIFFfUShRQ29sb3JEaWFs b2cpOworKworKyAgICBhdXRvICpwbGF0Zm9ybVNlcnZpY2VzID0gUUd1aUFwcGxpY2F0aW9uUHJp dmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5zZXJ2aWNlcygpOworKyAgICBpZiAocGxhdGZv cm1TZXJ2aWNlcy0+aGFzQ2FwYWJpbGl0eShRUGxhdGZvcm1TZXJ2aWNlczo6Q2FwYWJpbGl0eTo6 Q29sb3JQaWNraW5nKSkgeworKyAgICAgICAgaWYgKGF1dG8gKmNvbG9yUGlja2VyID0gcGxhdGZv cm1TZXJ2aWNlcy0+Y29sb3JQaWNrZXIocS0+d2luZG93SGFuZGxlKCkpKSB7CisrICAgICAgICAg ICAgcS0+Y29ubmVjdChjb2xvclBpY2tlciwgJlFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcjo6 Y29sb3JQaWNrZWQsIHEsCisrICAgICAgICAgICAgICAgICAgICAgICBbcSwgY29sb3JQaWNrZXJd KGNvbnN0IFFDb2xvciAmY29sb3IpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xv clBpY2tlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBxLT5z ZXRDdXJyZW50Q29sb3IoY29sb3IpOworKyAgICAgICAgICAgICAgICAgICAgICAgfSk7CisrICAg ICAgICAgICAgY29sb3JQaWNrZXItPnBpY2tDb2xvcigpOworKyAgICAgICAgICAgIHJldHVybjsK KysgICAgICAgIH0KKysgICAgfQorKworICAgICBpZiAoIWNvbG9yUGlja2luZ0V2ZW50RmlsdGVy KQorICAgICAgICAgY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIgPSBuZXcgUUNvbG9yUGlja2luZ0V2 ZW50RmlsdGVyKHRoaXMsIHEpOworICAgICBxLT5pbnN0YWxsRXZlbnRGaWx0ZXIoY29sb3JQaWNr aW5nRXZlbnRGaWx0ZXIpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmll d3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmll d3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAoraW5kZXggZTEyMDgxN2VkYy4uOGVhMzZiNTQy NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRl bWRlbGVnYXRlLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJh Y3RpdGVtZGVsZWdhdGUuY3BwCitAQCAtNDAwLDEyICs0MDAsNyBAQCBib29sIFFBYnN0cmFjdEl0 ZW1EZWxlZ2F0ZTo6aGVscEV2ZW50KFFIZWxwRXZlbnQgKmV2ZW50LAorICAgICAgICAgY29uc3Qg UVN0cmluZyB0b29sdGlwID0gaW5kZXguaXNWYWxpZCgpID8KKyAgICAgICAgICAgICAgIGQtPnRl eHRGb3JSb2xlKFF0OjpUb29sVGlwUm9sZSwgaW5kZXguZGF0YShRdDo6VG9vbFRpcFJvbGUpLCBv cHRpb24ubG9jYWxlLCBwcmVjaXNpb24pIDoKKyAgICAgICAgICAgICAgIFFTdHJpbmcoKTsKKy0g ICAgICAgIFFSZWN0IHJlY3Q7CistICAgICAgICBpZiAoaW5kZXguaXNWYWxpZCgpKSB7CistICAg ICAgICAgICAgY29uc3QgUVJlY3QgciA9IHZpZXctPnZpc3VhbFJlY3QoaW5kZXgpOworLSAgICAg ICAgICAgIHJlY3QgPSBRUmVjdCh2aWV3LT5tYXBUb0dsb2JhbChyLnRvcExlZnQoKSksIHIuc2l6 ZSgpKTsKKy0gICAgICAgIH0KKy0gICAgICAgIFFUb29sVGlwOjpzaG93VGV4dChoZS0+Z2xvYmFs UG9zKCksIHRvb2x0aXAsIHZpZXcsIHJlY3QpOworKyAgICAgICAgUVRvb2xUaXA6OnNob3dUZXh0 KGhlLT5nbG9iYWxQb3MoKSwgdG9vbHRpcCwgdmlldy0+dmlld3BvcnQoKSwgb3B0aW9uLnJlY3Qp OworICAgICAgICAgZXZlbnQtPnNldEFjY2VwdGVkKCF0b29sdGlwLmlzRW1wdHkoKSk7CisgICAg ICAgICBicmVhazsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMv aXRlbXZpZXdzL3FsaXN0dmlldy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3Fs aXN0dmlldy5jcHAKK2luZGV4IDJiMzQ0NzY2NDIuLmVlYmZhYTAzMGUgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAKKysrKyBiL3F0YmFzZS9z cmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAorQEAgLTMzODYsNiArMzM4Niw3IEBA IHZvaWQgUUljb25Nb2RlVmlld0Jhc2U6OnVwZGF0ZUNvbnRlbnRzU2l6ZSgpCisgKi8KKyB2b2lk IFFMaXN0Vmlldzo6Y3VycmVudENoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1cnJlbnQsIGNv bnN0IFFNb2RlbEluZGV4ICZwcmV2aW91cykKKyB7CisrICAgIFFBYnN0cmFjdEl0ZW1WaWV3Ojpj dXJyZW50Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7CisgI2lmbmRlZiBRVF9OT19BQ0NFU1NJ QklMSVRZCisgICAgIGlmIChRQWNjZXNzaWJsZTo6aXNBY3RpdmUoKSkgeworICAgICAgICAgaWYg KGN1cnJlbnQuaXNWYWxpZCgpKSB7CitAQCAtMzM5Niw3ICszMzk3LDYgQEAgdm9pZCBRTGlzdFZp ZXc6OmN1cnJlbnRDaGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZjdXJyZW50LCBjb25zdCBRTW9k ZWxJbmRleCAmcHIKKyAgICAgICAgIH0KKyAgICAgfQorICNlbmRpZgorLSAgICBRQWJzdHJhY3RJ dGVtVmlldzo6Y3VycmVudENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpOworIH0KKyAKKyAvKiEK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3Bw IGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAoraW5kZXggOTM0 YWM1ODFiMi4uZjc5YmIyNDI0OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVt dmlld3MvcXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3Mv cXRhYmxldmlldy5jcHAKK0BAIC0xMDEzLDYgKzEwMTMsNyBAQCB2b2lkIFFUYWJsZVZpZXdQcml2 YXRlOjpkcmF3Q2VsbChRUGFpbnRlciAqcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uVmlld0l0 ZW0gJgorIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6d2lkdGhIaW50Rm9ySW5kZXgoY29uc3QgUU1v ZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgY29uc3QgUVN0eWxlT3B0aW9uVmlld0l0ZW0gJm9w dGlvbikgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRVGFibGVWaWV3KTsKKysgICAgY29uc3Qg aW50IG9sZEhpbnQgPSBoaW50OworICAgICBRV2lkZ2V0ICplZGl0b3IgPSBlZGl0b3JGb3JJbmRl eChpbmRleCkud2lkZ2V0LmRhdGEoKTsKKyAgICAgaWYgKGVkaXRvciAmJiBwZXJzaXN0ZW50LmNv bnRhaW5zKGVkaXRvcikpIHsKKyAgICAgICAgIGhpbnQgPSBxTWF4KGhpbnQsIGVkaXRvci0+c2l6 ZUhpbnQoKS53aWR0aCgpKTsKK0BAIC0xMDIxLDYgKzEwMjIsMTcgQEAgaW50IFFUYWJsZVZpZXdQ cml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBo aW50LCBjb24KKyAgICAgICAgIGhpbnQgPSBxQm91bmQobWluLCBoaW50LCBtYXgpOworICAgICB9 CisgICAgIGhpbnQgPSBxTWF4KGhpbnQsIHEtPml0ZW1EZWxlZ2F0ZShpbmRleCktPnNpemVIaW50 KG9wdGlvbiwgaW5kZXgpLndpZHRoKCkpOworKworKyAgICBpZiAoaGFzU3BhbnMoKSkgeworKyAg ICAgICAgYXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBpbmRleC5yb3co KSk7CisrICAgICAgICBpZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29sdW1uKCkg JiYgc3Bhbi0+bV90b3AgPT0gaW5kZXgucm93KCkpIHsKKysgICAgICAgICAgICAvLyBzcGFucyBh cmUgc2NyZXdlZCB1cCB3aGVuIHNlY3Rpb25zIGFyZSBtb3ZlZAorKyAgICAgICAgICAgIGNvbnN0 IGF1dG8gbGVmdCA9IGxvZ2ljYWxDb2x1bW4oc3Bhbi0+bV9sZWZ0KTsKKysgICAgICAgICAgICBm b3IgKGludCBpID0gMTsgaSA8PSBzcGFuLT53aWR0aCgpOyArK2kpCisrICAgICAgICAgICAgICAg aGludCAtPSBxLT5jb2x1bW5XaWR0aCh2aXN1YWxDb2x1bW4obGVmdCArIGkpKTsKKysgICAgICAg IH0KKysgICAgICAgIGhpbnQgPSBzdGQ6Om1heChoaW50LCBvbGRIaW50KTsKKysgICAgfQorICAg ICByZXR1cm4gaGludDsKKyB9CisgCitAQCAtMTA1Myw2ICsxMDY1LDExIEBAIGludCBRVGFibGVW aWV3UHJpdmF0ZTo6aGVpZ2h0SGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwg aW50IGhpbnQsIFFTCisgICAgICAgICBvcHRpb24ucmVjdC5zZXRIZWlnaHQoaGVpZ2h0KTsKKyAg ICAgICAgIG9wdGlvbi5yZWN0LnNldFgocS0+Y29sdW1uVmlld3BvcnRQb3NpdGlvbihpbmRleC5j b2x1bW4oKSkpOworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgocS0+Y29sdW1uV2lkdGgo aW5kZXguY29sdW1uKCkpKTsKKysgICAgICAgIGlmIChoYXNTcGFucygpKSB7CisrICAgICAgICAg ICAgYXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBpbmRleC5yb3coKSk7 CisrICAgICAgICAgICAgaWYgKHNwYW4gJiYgc3Bhbi0+bV9sZWZ0ID09IGluZGV4LmNvbHVtbigp ICYmIHNwYW4tPm1fdG9wID09IGluZGV4LnJvdygpKQorKyAgICAgICAgICAgICAgICBvcHRpb24u cmVjdC5zZXRXaWR0aChzdGQ6Om1heChvcHRpb24ucmVjdC53aWR0aCgpLCB2aXN1YWxTcGFuUmVj dCgqc3Bhbikud2lkdGgoKSkpOworKyAgICAgICAgfQorICAgICAgICAgLy8gMXB4IGxlc3Mgc3Bh Y2Ugd2hlbiBncmlkIGlzIHNob3duIChzZWUgZHJhd0NlbGwpCisgICAgICAgICBpZiAoc2hvd0dy aWQpCisgICAgICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgob3B0aW9uLnJlY3Qud2lkdGgo KSAtIDEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5o IGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKK2luZGV4IDI1OGExZWEwYTAu LjczN2MxZTgyODUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rp b24uaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKK0BAIC04MSw3 ICs4MSw3IEBAIGNsYXNzIFFfV0lER0VUU19FWFBPUlQgUUFjdGlvbiA6IHB1YmxpYyBRT2JqZWN0 CisgICAgIFFfUFJPUEVSVFkoTWVudVJvbGUgbWVudVJvbGUgUkVBRCBtZW51Um9sZSBXUklURSBz ZXRNZW51Um9sZSBOT1RJRlkgY2hhbmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29sIGljb25WaXNp YmxlSW5NZW51IFJFQUQgaXNJY29uVmlzaWJsZUluTWVudSBXUklURSBzZXRJY29uVmlzaWJsZUlu TWVudSBOT1RJRlkgY2hhbmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29sIHNob3J0Y3V0VmlzaWJs ZUluQ29udGV4dE1lbnUgUkVBRCBpc1Nob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUgV1JJVEUg c2V0U2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBOT1RJRlkgY2hhbmdlZCkKKy0gICAgUV9Q Uk9QRVJUWShQcmlvcml0eSBwcmlvcml0eSBSRUFEIHByaW9yaXR5IFdSSVRFIHNldFByaW9yaXR5 KQorKyAgICBRX1BST1BFUlRZKFByaW9yaXR5IHByaW9yaXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUg c2V0UHJpb3JpdHkgTk9USUZZIGNoYW5nZWQpCisgCisgcHVibGljOgorICAgICAvLyBub3RlIHRo aXMgaXMgY29waWVkIGludG8gcXBsYXRmb3JtbWVudS5oLCB3aGljaCBtdXN0IHN0YXkgaW4gc3lu YworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAgYi9x dGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitpbmRleCA5ZWJhMWUwMDFlLi4y NmY2ZDI3ZTE4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0 LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcAorQEAgLTUy OTYsNyArNTI5Niw3IEBAIHZvaWQgUVdpZGdldFByaXZhdGU6OmRyYXdXaWRnZXQoUVBhaW50RGV2 aWNlICpwZGV2LCBjb25zdCBRUmVnaW9uICZyZ24sIGNvbnN0IFFQCisgICAgICAgICBRV2lkZ2V0 RWZmZWN0U291cmNlUHJpdmF0ZSAqc291cmNlZCA9IHN0YXRpY19jYXN0PFFXaWRnZXRFZmZlY3RT b3VyY2VQcml2YXRlICo+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNvdXJjZS0+ZF9mdW5jKCkpOworICAgICAgICAgaWYgKCFzb3Vy Y2VkLT5jb250ZXh0KSB7CistICAgICAgICAgICAgY29uc3QgUVJlZ2lvbiBlZmZlY3RSZ24ocmdu LmJvdW5kaW5nUmVjdCgpKTsKKysgICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVjdFJnbigo ZmxhZ3MgJiBVc2VFZmZlY3RSZWdpb25Cb3VuZHMpID8gcmduLmJvdW5kaW5nUmVjdCgpIDogcmdu KTsKKyAgICAgICAgICAgICBRV2lkZ2V0UGFpbnRDb250ZXh0IGNvbnRleHQocGRldiwgZWZmZWN0 UmduLCBvZmZzZXQsIGZsYWdzLCBzaGFyZWRQYWludGVyLCByZXBhaW50TWFuYWdlcik7CisgICAg ICAgICAgICAgc291cmNlZC0+Y29udGV4dCA9ICZjb250ZXh0OworICAgICAgICAgICAgIGlmICgh c2hhcmVkUGFpbnRlcikgeworQEAgLTUzMjgsNiArNTMyOCw3IEBAIHZvaWQgUVdpZGdldFByaXZh dGU6OmRyYXdXaWRnZXQoUVBhaW50RGV2aWNlICpwZGV2LCBjb25zdCBRUmVnaW9uICZyZ24sIGNv bnN0IFFQCisgICAgICAgICB9CisgICAgIH0KKyAjZW5kaWYgLy8gUVRfQ09ORklHKGdyYXBoaWNz ZWZmZWN0KQorKyAgICBmbGFncyA9IGZsYWdzICYgflVzZUVmZmVjdFJlZ2lvbkJvdW5kczsKKyAK KyAgICAgY29uc3QgYm9vbCBhbHNvT25TY3JlZW4gPSBmbGFncyAmIERyYXdQYWludE9uU2NyZWVu OworICAgICBjb25zdCBib29sIHJlY3Vyc2l2ZSA9IGZsYWdzICYgRHJhd1JlY3Vyc2l2ZTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oIGIvcXRiYXNl L3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAoraW5kZXggZWVmNmI4ZmEyYy4uYzQzMmY0 YjVkNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgK KysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKK0BAIC0yMjksNyAr MjI5LDggQEAgcHVibGljOgorICAgICAgICAgRG9udFN1YnRyYWN0T3BhcXVlQ2hpbGRyZW4gPSAw eDEwLAorICAgICAgICAgRG9udERyYXdPcGFxdWVDaGlsZHJlbiA9IDB4MjAsCisgICAgICAgICBE b250RHJhd05hdGl2ZUNoaWxkcmVuID0gMHg0MCwKKy0gICAgICAgIERvbnRTZXRDb21wb3NpdGlv bk1vZGUgPSAweDgwCisrICAgICAgICBEb250U2V0Q29tcG9zaXRpb25Nb2RlID0gMHg4MCwKKysg ICAgICAgIFVzZUVmZmVjdFJlZ2lvbkJvdW5kcyA9IDB4MTAwCisgICAgIH07CisgICAgIFFfREVD TEFSRV9GTEFHUyhEcmF3V2lkZ2V0RmxhZ3MsIERyYXdXaWRnZXRGbGFnKQorICAgICBRX0ZMQUco RHJhd1dpZGdldEZsYWdzKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdp ZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAoraW5kZXggMDI4ODBiMzRkYS4uMGQ0NGUxMzI2ZCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2Vy LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFn ZXIuY3BwCitAQCAtMTAxOCw3ICsxMDE4LDggQEAgdm9pZCBRV2lkZ2V0UmVwYWludE1hbmFnZXI6 OnBhaW50QW5kRmx1c2goKQorIAorICAgICAvLyBQYWludCB0aGUgcmVzdCB3aXRoIGNvbXBvc2l0 aW9uLgorICAgICBpZiAocmVwYWludEFsbFdpZGdldHMgfHwgIWRpcnR5Q29weS5pc0VtcHR5KCkp IHsKKy0gICAgICAgIFFXaWRnZXRQcml2YXRlOjpEcmF3V2lkZ2V0RmxhZ3MgZmxhZ3MgPSBRV2lk Z2V0UHJpdmF0ZTo6RHJhd0FzUm9vdCB8IFFXaWRnZXRQcml2YXRlOjpEcmF3UmVjdXJzaXZlOwor KyAgICAgICAgUVdpZGdldFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9IFFXaWRnZXRQ cml2YXRlOjpEcmF3QXNSb290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNpdmUKKysgICAg ICAgICAgICAgICAgfCBRV2lkZ2V0UHJpdmF0ZTo6VXNlRWZmZWN0UmVnaW9uQm91bmRzOworICAg ICAgICAgdGx3LT5kX2Z1bmMoKS0+ZHJhd1dpZGdldChzdG9yZS0+cGFpbnREZXZpY2UoKSwgZGly dHlDb3B5LCBRUG9pbnQoKSwgZmxhZ3MsIG51bGxwdHIsIHRoaXMpOworICAgICB9CisgCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwIGIvcXRi YXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCitpbmRleCBmNDM0NWQ5N2M0 Li45NjI5MTJjODM4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVz aW9uc3R5bGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHls ZS5jcHAKK0BAIC0xNzcyLDE0ICsxNzcyLDYgQEAgdm9pZCBRRnVzaW9uU3R5bGU6OmRyYXdDb250 cm9sKENvbnRyb2xFbGVtZW50IGVsZW1lbnQsIGNvbnN0IFFTdHlsZU9wdGlvbiAqb3B0aW8KKyAg ICAgICAgICAgICBwcm94eSgpLT5kcmF3Q29udHJvbChDRV9QdXNoQnV0dG9uTGFiZWwsICZzdWJv cHQsIHBhaW50ZXIsIHdpZGdldCk7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAg Y2FzZSBDRV9QdXNoQnV0dG9uTGFiZWw6CistICAgICAgICBpZiAoY29uc3QgUVN0eWxlT3B0aW9u QnV0dG9uICpidXR0b24gPSBxc3R5bGVvcHRpb25fY2FzdDxjb25zdCBRU3R5bGVPcHRpb25CdXR0 b24gKj4ob3B0aW9uKSkgeworLSAgICAgICAgICAgIFFTdHlsZU9wdGlvbkJ1dHRvbiBiKCpidXR0 b24pOworLSAgICAgICAgICAgIC8vIG5vIFBNX0J1dHRvblNoaWZ0SG9yaXpvbnRhbCBhbmQgUE1f QnV0dG9uU2hpZnRWZXJ0aWNhbCBmb3IgZnVzaW9uIHN0eWxlCistICAgICAgICAgICAgYi5zdGF0 ZSAmPSB+KFN0YXRlX09uIHwgU3RhdGVfU3Vua2VuKTsKKy0gICAgICAgICAgICBRQ29tbW9uU3R5 bGU6OmRyYXdDb250cm9sKGVsZW1lbnQsICZiLCBwYWludGVyLCB3aWRnZXQpOworLSAgICAgICAg fQorLSAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQ0VfTWVudUJhckVtcHR5QXJlYToKKyAgICAg ICAgIHBhaW50ZXItPnNhdmUoKTsKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lk Z2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBs ZXRlci5jcHAKK2luZGV4IDE4YjI0MDYzZDguLmVmNzIwN2E4YTMgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRn ZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAKK0BAIC0xMTIwLDYgKzExMjAsOCBAQCB2b2lkIFFDb21w bGV0ZXI6OnNldE1vZGVsKFFBYnN0cmFjdEl0ZW1Nb2RlbCAqbW9kZWwpCisgeworICAgICBRX0Qo UUNvbXBsZXRlcik7CisgICAgIFFBYnN0cmFjdEl0ZW1Nb2RlbCAqb2xkTW9kZWwgPSBkLT5wcm94 eS0+c291cmNlTW9kZWwoKTsKKysgICAgaWYgKG9sZE1vZGVsID09IG1vZGVsKQorKyAgICAgICAg cmV0dXJuOworICNpZiBRVF9DT05GSUcoZmlsZXN5c3RlbW1vZGVsKQorICAgICBpZiAocW9iamVj dF9jYXN0PGNvbnN0IFFGaWxlU3lzdGVtTW9kZWwgKj4ob2xkTW9kZWwpKQorICAgICAgICAgc2V0 Q29tcGxldGlvblJvbGUoUXQ6OkVkaXRSb2xlKTsgLy8gUVRCVUctNTQ2NDIsIGNsZWFyIEZpbGVO YW1lUm9sZSBzZXQgYnkgUUZpbGVTeXN0ZW1Nb2RlbAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv d2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMv d2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCBhMTI4YjIzOTUwLi5kYzQwYmY2MmZi IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9u LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNw cAorQEAgLTU2LDYgKzU2LDcgQEAKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJVFkKKyAjaW5j bHVkZSAicWFjY2Vzc2libGUuaCIKKyAjZW5kaWYKKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRo ZW1lLmg+CisgCisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKK0BAIC0xMDc2LDE5ICsxMDc3LDE5 IEBAIHZvaWQgUUFic3RyYWN0QnV0dG9uOjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyB7 CisgICAgIFFfRChRQWJzdHJhY3RCdXR0b24pOworICAgICBib29sIG5leHQgPSB0cnVlOworLSAg ICBzd2l0Y2ggKGUtPmtleSgpKSB7CistICAgIGNhc2UgUXQ6OktleV9FbnRlcjoKKy0gICAgY2Fz ZSBRdDo6S2V5X1JldHVybjoKKy0gICAgICAgIGUtPmlnbm9yZSgpOworLSAgICAgICAgYnJlYWs7 CistICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgIGNhc2UgUXQ6OktleV9TcGFjZToKKy0g ICAgICAgIGlmICghZS0+aXNBdXRvUmVwZWF0KCkpIHsKKy0gICAgICAgICAgICBzZXREb3duKHRy dWUpOworLSAgICAgICAgICAgIHJlcGFpbnQoKTsKKy0gICAgICAgICAgICBkLT5lbWl0UHJlc3Nl ZCgpOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CisrCisrICAgIGNvbnN0IGF1dG8ga2V5 ID0gc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBjb25zdCBhdXRvIGJ1dHRv blByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRm b3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblBy ZXNzS2V5cy5jb250YWlucyhrZXkpICYmICFlLT5pc0F1dG9SZXBlYXQoKSkgeworKyAgICAgICAg c2V0RG93bih0cnVlKTsKKysgICAgICAgIHJlcGFpbnQoKTsKKysgICAgICAgIGQtPmVtaXRQcmVz c2VkKCk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgc3dpdGNoIChrZXkpIHsK KyAgICAgY2FzZSBRdDo6S2V5X1VwOgorICAgICAgICAgbmV4dCA9IGZhbHNlOworICAgICAgICAg UV9GQUxMVEhST1VHSCgpOworQEAgLTExNTMsMTUgKzExNTQsMTUgQEAgdm9pZCBRQWJzdHJhY3RC dXR0b246OmtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQgKmUpCisgICAgIGlmICghZS0+aXNBdXRv UmVwZWF0KCkpCisgICAgICAgICBkLT5yZXBlYXRUaW1lci5zdG9wKCk7CisgCistICAgIHN3aXRj aCAoZS0+a2V5KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgY2FzZSBRdDo6 S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSAmJiBkLT5kb3duKQor LSAgICAgICAgICAgIGQtPmNsaWNrKCk7CistICAgICAgICBicmVhazsKKy0gICAgZGVmYXVsdDoK Ky0gICAgICAgIGUtPmlnbm9yZSgpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9 IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1 dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250 YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSkpICYmICFlLT5pc0F1dG9SZXBlYXQo KSAmJiBkLT5kb3duKSB7CisrICAgICAgICBkLT5jbGljaygpOworKyAgICAgICAgcmV0dXJuOwor ICAgICB9CisrCisrICAgIGUtPmlnbm9yZSgpOworIH0KKyAKKyAvKiFccmVpbXAKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAoraW5kZXggN2E0OTZjMjdlMC4uMGEzZDk2 NjQ3YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5j cHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAKK0BAIC0z MzUyLDcgKzMzNTIsMjMgQEAgdm9pZCBRQ29tYm9Cb3g6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50 ICplKQorIAorICAgICBNb3ZlIG1vdmUgPSBOb01vdmU7CisgICAgIGludCBuZXdJbmRleCA9IGN1 cnJlbnRJbmRleCgpOworLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CisrCisrICAgIGJvb2wgcHJl c3NMaWtlQnV0dG9uID0gIWQtPmxpbmVFZGl0OworKyNpZmRlZiBRVF9LRVlQQURfTkFWSUdBVElP TgorKyAgICBwcmVzc0xpa2VCdXR0b24gfD0gUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5cGFkTmF2 aWdhdGlvbkVuYWJsZWQoKSAmJiAhaGFzRWRpdEZvY3VzKCk7CisrI2VuZGlmCisrICAgIGF1dG8g a2V5ID0gc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBpZiAocHJlc3NMaWtl QnV0dG9uKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBs aWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25Q cmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5j b250YWlucyhrZXkpKSB7CisrICAgICAgICAgICAgc2hvd1BvcHVwKCk7CisrICAgICAgICAgICAg cmV0dXJuOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHN3aXRjaCAoa2V5KSB7CisgICAg IGNhc2UgUXQ6OktleV9VcDoKKyAgICAgICAgIGlmIChlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250 cm9sTW9kaWZpZXIpCisgICAgICAgICAgICAgYnJlYWs7IC8vIHBhc3MgdG8gbGluZSBlZGl0IGZv ciBhdXRvIGNvbXBsZXRpb24KK0BAIC0zMzk0LDI2ICszNDEwLDExIEBAIHZvaWQgUUNvbWJvQm94 OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyAgICAgICAgICAgICByZXR1cm47CisgICAg ICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAg ICAgaWYgKCFkLT5saW5lRWRpdCkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgpOworLSAgICAg ICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0 OjpLZXlfRW50ZXI6CistICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CisgICAgIGNhc2UgUXQ6Oktl eV9Fc2NhcGU6CisgICAgICAgICBpZiAoIWQtPmxpbmVFZGl0KQorICAgICAgICAgICAgIGUtPmln bm9yZSgpOworICAgICAgICAgYnJlYWs7CisgI2lmZGVmIFFUX0tFWVBBRF9OQVZJR0FUSU9OCist ICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgICAgICBpZiAoUUFwcGxpY2F0aW9uUHJpdmF0 ZTo6a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQoKQorLSAgICAgICAgICAgICAgICAmJiAoIWhhc0Vk aXRGb2N1cygpIHx8ICFkLT5saW5lRWRpdCkpIHsKKy0gICAgICAgICAgICBzaG93UG9wdXAoKTsK Ky0gICAgICAgICAgICByZXR1cm47CistICAgICAgICB9CistICAgICAgICBicmVhazsKKyAgICAg Y2FzZSBRdDo6S2V5X0xlZnQ6CisgICAgIGNhc2UgUXQ6OktleV9SaWdodDoKKyAgICAgICAgIGlm IChRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpICYmICFoYXNF ZGl0Rm9jdXMoKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0 ZXRpbWVlZGl0X3AuaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRf cC5oCitpbmRleCBkMzZiNmY4ZjlhLi5lMGRmNWI1MTU4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lk Z2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE4IFRoZSBRdCBDb21wYW55 IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENv bnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBRdFdpZGdldHMgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAgYi9xdGJhc2Uv c3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCitpbmRleCAwMmEwYmVkMzI1Li4zZjNl Y2NjMzcwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94 LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcAorQEAg LTU0LDYgKzU0LDggQEAKKyAjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIKKyAjZW5kaWYKKyAjaW5j bHVkZSA8cHJpdmF0ZS9xd2lkZ2V0X3AuaD4KKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGlj YXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyAjaW5jbHVk ZSAicWRlYnVnLmgiCisgCitAQCAtMzYwLDcgKzM2MiwxMCBAQCBib29sIFFHcm91cEJveDo6ZXZl bnQoUUV2ZW50ICplKQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgUUV2ZW50OjpL ZXlQcmVzczogeworICAgICAgICAgUUtleUV2ZW50ICprID0gc3RhdGljX2Nhc3Q8UUtleUV2ZW50 Kj4oZSk7CistICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIChrLT5rZXkoKSA9PSBR dDo6S2V5X1NlbGVjdCB8fCBrLT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSkgeworKyAgICAgICAg Y29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0 Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5 Pj4oKTsKKysgICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgYnV0dG9uUHJlc3NLZXlz LmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGstPmtleSgpKSkpIHsKKyAgICAgICAgICAg ICBkLT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVja0JveDsKKyAgICAg ICAgICAgICB1cGRhdGUoc3R5bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19Hcm91cEJv eCwgJmJveCwgUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94LCB0aGlzKSk7CisgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CitAQCAtMzY5LDcgKzM3NCwxMCBAQCBib29sIFFHcm91cEJveDo6ZXZl bnQoUUV2ZW50ICplKQorICAgICB9CisgICAgIGNhc2UgUUV2ZW50OjpLZXlSZWxlYXNlOiB7Cisg ICAgICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihlKTsKKy0gICAg ICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpLZXlfU2VsZWN0 IHx8IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1 dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50 KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAg ICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3Rh dGljX2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGJvb2wgdG9nZ2xl ID0gKGQtPnByZXNzZWRDb250cm9sID09IFFTdHlsZTo6U0NfR3JvdXBCb3hMYWJlbAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHx8IGQtPnByZXNzZWRDb250cm9sID09IFFTdHlsZTo6U0Nf R3JvdXBCb3hDaGVja0JveCk7CisgICAgICAgICAgICAgZC0+cHJlc3NlZENvbnRyb2wgPSBRU3R5 bGU6OlNDX05vbmU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxh YmVsLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKK2luZGV4IDMw ZmY4MGNiYjAuLmNmMjYwNWMxN2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xbGFiZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwu Y3BwCitAQCAtNDIxLDkgKzQyMSw2IEBAIHZvaWQgUUxhYmVsOjpzZXRQaXhtYXAoY29uc3QgUVBp eG1hcCAmcGl4bWFwKQorICAgICAgICAgZC0+cGl4bWFwID0gbmV3IFFQaXhtYXAocGl4bWFwKTsK KyAgICAgfQorIAorLSAgICBpZiAoZC0+cGl4bWFwLT5kZXB0aCgpID09IDEgJiYgIWQtPnBpeG1h cC0+bWFzaygpKQorLSAgICAgICAgZC0+cGl4bWFwLT5zZXRNYXNrKCooKFFCaXRtYXAgKilkLT5w aXhtYXApKTsKKy0KKyAgICAgZC0+dXBkYXRlTGFiZWwoKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcCBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAKK2luZGV4IDQ5M2Mw OTRjYzEuLmQ1ZjRiNTkwMTcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCitAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgYm9vbCBRVG9v bEJhckFyZWFMYXlvdXQ6OnJlc3RvcmVTdGF0ZShRRGF0YVN0cmVhbSAmc3RyZWFtLCBjb25zdCBR TGlzdDxRVG9vbEJhcioKKyAgICAgICAgICAgICAgICAgaXRlbS53aWRnZXRJdGVtID0gbmV3IFFX aWRnZXRJdGVtVjIodG9vbEJhcik7CisgICAgICAgICAgICAgICAgIHRvb2xCYXItPnNldE9yaWVu dGF0aW9uKGZsb2F0aW5nID8gKChzaG93biAmIDIpID8gUXQ6OlZlcnRpY2FsIDogUXQ6Okhvcml6 b250YWwpIDogZG9jay5vKTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0VmlzaWJsZShz aG93biAmIDEpOworLSAgICAgICAgICAgICAgICB0b29sQmFyLT5kX2Z1bmMoKS0+c2V0V2luZG93 U3RhdGUoZmxvYXRpbmcsIHRydWUsIHJlY3QpOworKyAgICAgICAgICAgICAgICB0b29sQmFyLT5k X2Z1bmMoKS0+c2V0V2luZG93U3RhdGUoZmxvYXRpbmcsIGZhbHNlLCByZWN0KTsKKyAKKyAgICAg ICAgICAgICAgICAgaXRlbS5wcmVmZXJyZWRTaXplID0gaXRlbS5zaXplOworICAgICAgICAgICAg ICAgICBsaW5lLnRvb2xCYXJJdGVtcy5hcHBlbmQoaXRlbSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9xdGNv bmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQv cXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5j cHAKK2luZGV4IDIxMmMwYTJlMTMuLjNjNzdiMWJhMGIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3Vy cmVudGl0ZXJhdGVrZXJuZWwuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50 L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwu Y3BwCitAQCAtMTI2LDggKzEyNiw3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJl bnRJdGVyYXRlS2VybmVsOjppbnN0YW50aWF0ZSgpCisgeworLSAgICBhdXRvIGZ1dHVyZSA9IHN0 YXJ0VGhyZWFkRW5naW5lKG5ldyBQcmludEZvcigwLCA0MCkpLnN0YXJ0QXN5bmNocm9ub3VzbHko KTsKKy0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICBzdGFydFRocmVhZEVuZ2lu ZShuZXcgUHJpbnRGb3IoMCwgNDApKS5zdGFydEJsb2NraW5nKCk7CisgICAgIFFDT01QQVJFKGl0 ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgNDApOworIH0KKyAKK0BAIC0xNjYsMTAgKzE2NSw4IEBA IHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3QoKQorICAgICBj b25zdCBpbnQgdGltZXMgPSA1MDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytp KSB7CisgICAgICAgICBjb3VudGVyLnN0b3JlUmVsYXhlZCgwKTsKKy0gICAgICAgIC8vIFRocmVh ZEVuZ2luZSB3aWxsIGRlbGV0ZSBmIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgICAgIGF1dG8gZiA9 IG5ldyBDb3VudEZvcigwLCBpdGVyYXRpb25zKTsKKy0gICAgICAgIGF1dG8gZnV0dXJlID0gZi0+ c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgp OworKyAgICAgICAgQ291bnRGb3IgZigwLCBpdGVyYXRpb25zKTsKKysgICAgICAgIGYuc3RhcnRC bG9ja2luZygpOworICAgICAgICAgUUNPTVBBUkUoY291bnRlci5sb2FkUmVsYXhlZCgpLCBpdGVy YXRpb25zKTsKKyAgICAgfQorIH0KK0BAIC0xNzcsMTEgKzE3NCw4IEBAIHZvaWQgdHN0X1F0Q29u Y3VycmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3QoKQorIHZvaWQgdHN0X1F0Q29uY3VycmVu dEl0ZXJhdGVLZXJuZWw6Om5vSXRlcmF0aW9ucygpCisgeworICAgICBjb25zdCBpbnQgdGltZXMg PSAyMDAwMDsKKy0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKSB7CistICAgICAg ICBhdXRvIGZ1dHVyZSA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBJdGVyYXRlS2VybmVsPFRlc3RJ dGVyYXRvciwgdm9pZD4oMCwgMCkpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0 YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsK Ky0gICAgfQorKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpCisrICAgICAgICBz dGFydFRocmVhZEVuZ2luZShuZXcgSXRlcmF0ZUtlcm5lbDxUZXN0SXRlcmF0b3IsIHZvaWQ+KDAs IDApKS5zdGFydEJsb2NraW5nKCk7CisgfQorIAorIFFNdXRleCB0aHJlYWRzTXV0ZXg7CitAQCAt MjM2LDEwICsyMzAsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjp0aHJv dHRsaW5nKCkKKyAKKyAgICAgdGhyZWFkcy5jbGVhcigpOworIAorLSAgICAvLyBUaHJlYWRFbmdp bmUgd2lsbCBkZWxldGUgZiB3aGVuIGl0IGZpbmlzaGVzCistICAgIGF1dG8gZiA9IG5ldyBUaHJv dHRsZUZvcigwLCB0b3RhbEl0ZXJhdGlvbnMpOworLSAgICBhdXRvIGZ1dHVyZSA9IGYtPnN0YXJ0 QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICBU aHJvdHRsZUZvciBmKDAsIHRvdGFsSXRlcmF0aW9ucyk7CisrICAgIGYuc3RhcnRCbG9ja2luZygp OworIAorICAgICBRQ09NUEFSRShpdGVyYXRpb25zLmxvYWRSZWxheGVkKCksIHRvdGFsSXRlcmF0 aW9ucyk7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNv bmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3Rf cXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5kZXggYWM3YmU3YWNkZC4uODFiYzY0Yzhk OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCisrKysgYi9xdGJh c2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRj b25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorQEAgLTY1LDkgKzY1LDE2IEBAIHB1YmxpYzoKKyAK KyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1bkRpcmVjdGx5KCkKKyB7Cist ICAgIFByaW50VXNlciAqZW5naW5lID0gbmV3IFByaW50VXNlcigpOworLSAgICBRRnV0dXJlPHZv aWQ+IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZi53YWl0Rm9yRmlu aXNoZWQoKTsKKysgICAgeworKyAgICAgICAgUHJpbnRVc2VyIGVuZ2luZTsKKysgICAgICAgIGVu Z2luZS5zdGFydFNpbmdsZVRocmVhZGVkKCk7CisrICAgICAgICBlbmdpbmUuc3RhcnRCbG9ja2lu ZygpOworKyAgICB9CisrICAgIHsKKysgICAgICAgIFByaW50VXNlciAqZW5naW5lID0gbmV3IFBy aW50VXNlcigpOworKyAgICAgICAgUUZ1dHVyZTx2b2lkPiBmID0gZW5naW5lLT5zdGFydEFzeW5j aHJvbm91c2x5KCk7CisrICAgICAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICB9CisgfQor IAorIGNsYXNzIFN0cmluZ1Jlc3VsdFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPFFTdHJpbmc+ CitAQCAtOTksMTAgKzEwNiw4IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRU aHJlYWRFbmdpbmU6OnJlc3VsdCgpCisgeworLSAgICAvLyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxl dGUgJ2VuZ2luZScgd2hlbiBpdCBmaW5pc2hlcworLSAgICBhdXRvIGVuZ2luZSA9IG5ldyBTdHJp bmdSZXN1bHRVc2VyKCk7CistICAgIGF1dG8gZnV0dXJlID0gZW5naW5lLT5zdGFydEFzeW5jaHJv bm91c2x5KCk7CistICAgIFFDT01QQVJFKGZ1dHVyZS5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikp OworKyAgICBTdHJpbmdSZXN1bHRVc2VyIGVuZ2luZTsKKysgICAgUUNPTVBBUkUoKmVuZ2luZS5z dGFydEJsb2NraW5nKCksIFFTdHJpbmcoIkZvbyIpKTsKKyB9CisgCisgY2xhc3MgVm9pZFJlc3Vs dFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPHZvaWQ+CitAQCAtMTI4LDkgKzEzMywxNyBAQCBw dWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpydW5UaHJvdWdo U3RhcnRlcigpCisgeworLSAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIg PSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKy0gICAgUUZ1dHVy ZTxRU3RyaW5nPiBmID0gc3RhcnRlci5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIFFDT01Q QVJFKGYucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgeworKyAgICAgICAgVGhyZWFk RW5naW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0 cmluZ1Jlc3VsdFVzZXIoKSk7CisrICAgICAgICBRRnV0dXJlPFFTdHJpbmc+ICBmID0gc3RhcnRl ci5zdGFydEFzeW5jaHJvbm91c2x5KCk7CisrICAgICAgICBRQ09NUEFSRShmLnJlc3VsdCgpLCBR U3RyaW5nKCJGb28iKSk7CisrICAgIH0KKysKKysgICAgeworKyAgICAgICAgVGhyZWFkRW5naW5l U3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmluZ1Jl c3VsdFVzZXIoKSk7CisrICAgICAgICBRU3RyaW5nIHN0ciA9IHN0YXJ0ZXIuc3RhcnRCbG9ja2lu ZygpOworKyAgICAgICAgUUNPTVBBUkUoc3RyLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIH0KKyB9 CisgCisgY2xhc3MgQ2FuY2VsVXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8dm9pZD4KK0BAIC0y MTMsNiArMjI2LDEyIEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6dGhyb3R0 bGUoKQorICAgICAgICAgZi53YWl0Rm9yRmluaXNoZWQoKTsKKyAgICAgICAgIFFDT01QQVJFKGNv dW50LmxvYWRSZWxheGVkKCksIDApOworICAgICB9CisrCisrICAgIGZvciAoaW50IGkgPSAwOyBp IDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJvdHRsZUFsd2F5c1VzZXIgdDsKKysgICAg ICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQubG9hZFJlbGF4 ZWQoKSwgMCk7CisrICAgIH0KKyB9CisgCisgUVNldDxRVGhyZWFkICo+IHRocmVhZHM7CitAQCAt MjQ5LDE3ICsyNjgsMzUgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjp0aHJl YWRDb3VudCgpCisgeworICAgICBjb25zdCBpbnQgcmVwZWF0cyA9IDEwOworICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyZWFkQ291bnRVc2VyIHQ7 CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBjb3VudCA9IHRocmVh ZHMuY291bnQoKTsKKysgICAgICAgIGludCBjb3VudF9leHBlY3RlZCA9IFFUaHJlYWRQb29sOjpn bG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpICsgMTsgLy8gKzEgZm9yIHRoZSBtYWlu IHRocmVhZC4KKysgICAgICAgIGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkKKysgICAgICAg ICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAgIFFD T01QQVJFKGNvdW50LCBjb3VudF9leHBlY3RlZCk7CisrCisgICAgICAgICAobmV3IFRocmVhZENv dW50VXNlcigpKS0+c3RhcnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JGaW5pc2hlZCgpOworLSAg ICAgICAgY29uc3QgYXV0byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKy0gICAgICAgIGNvbnN0 IGF1dG8gbWF4VGhyZWFkQ291bnQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4 VGhyZWFkQ291bnQoKTsKKy0gICAgICAgIFFWRVJJRlkoY291bnQgPD0gbWF4VGhyZWFkQ291bnQp OworLSAgICAgICAgUVZFUklGWSghdGhyZWFkcy5jb250YWlucyhRVGhyZWFkOjpjdXJyZW50VGhy ZWFkKCkpKTsKKysgICAgICAgIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgY291 bnRfZXhwZWN0ZWQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291 bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkKKysgICAgICAgICAg ICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAgIFFDT01Q QVJFKGNvdW50LCBjb3VudF9leHBlY3RlZCk7CisgICAgIH0KKyAKKyAgICAgLy8gU2V0IHRoZSBm aW5pc2ggZmxhZyBpbW1lZGlhdGVseSwgdGhpcyBzaG91bGQgZ2l2ZSB1cyBvbmUgdGhyZWFkIG9u bHkuCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBU aHJlYWRDb3VudFVzZXIgdCh0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLyk7CisrICAgICAgICB0 LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBjb3VudCA9IHRocmVhZHMuY291bnQoKTsK KysgICAgICAgIGlmIChjb3VudCAhPSAxKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwg IlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIDEpOworKwor ICAgICAgICAgKG5ldyBUaHJlYWRDb3VudFVzZXIodHJ1ZSAvKmZpbmlzaEltbWVkaWF0ZWx5Ki8p KS0+c3RhcnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICAgICAgY29u c3QgYXV0byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGNvdW50ID0gdGhyZWFk cy5jb3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9IDEpCisrICAgICAgICAgICAgUUVYUEVD VF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisgICAgICAgICBRQ09NUEFSRShjb3Vu dCwgMSk7CisgICAgICAgICBRVkVSSUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJl bnRUaHJlYWQoKSkpOworICAgICB9CitAQCAtNDAwLDYgKzQzNyw3IEBAIHB1YmxpYzoKKyAKKyB2 b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQorIHsKKysgICAg Ly8gQXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFs c2U7CisgICAgICAgICB0cnkgIHsKK0BAIC00MTIsNiArNDUwLDMyIEBAIHZvaWQgdHN0X1F0Q29u Y3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICBRVkVSSUZZMihjYXVn aHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAgICAgfQorIAorKyAgICAvLyBCbG9ja2lu ZyBtb2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSBhIHdvcmtl ciB0aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAg ICB0cnkgIHsKKysgICAgICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25UaHJvd2VyIGUoUVRo cmVhZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsK KysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNh dWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQg bm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyB0ZXN0IHRocm93aW5nIHRo ZSBleGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGRpZmZlcmVudCBjb2RlIHBhdGgpCisr ICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysg ICAgICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25UaHJvd2VyIGUoMCk7CisrICAgICAgICAg ICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRRXhjZXB0aW9u ICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAg UVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKysKKysg ICAgLy8gQXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wgY2F1Z2h0ID0g ZmFsc2U7CisgICAgICAgICB0cnkgIHsKK0BAIC00MjMsNiArNDg3LDMxIEBAIHZvaWQgdHN0X1F0 Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICB9CisgICAgICAg ICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAgICAgfQorKwor KyAgICAvLyBCbG9ja2luZyBtb2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRp b24gZnJvbSBhIHdvcmtlciB0aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0g ZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRFeGNlcHRpb25U aHJvd2VyIGUoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAgICAgICBlLnN0YXJ0 QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFVbmhhbmRsZWRFeGNlcHRpb24g JikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBR VkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAg ICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGRp ZmZlcmVudCBjb2RlIHBhdGgpCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7 CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRFeGNlcHRpb25UaHJvd2Vy IGUoMCk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNo IChjb25zdCBRVW5oYW5kbGVkRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0 cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQg ZXhjZXB0aW9uIik7CisrICAgIH0KKyB9CisgCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcCBiL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKK2luZGV4IDQ5Njg3 NDIxMTAuLmY0YzNmYjcxMWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3Jl bGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCitAQCAtNDIsNiArNDIsNyBAQCBwcml2YXRl IHNsb3RzOgorICAgICB2b2lkIHdyaXRlQmxvY2tfZGF0YSgpOworICAgICB2b2lkIHdyaXRlQmxv Y2soKTsKKyAgICAgdm9pZCBzZWVrKCk7CisrICAgIHZvaWQgaW52YWxpZFNlZWtzKCk7CisgICAg IHZvaWQgc2Vla1Rlc3RfZGF0YSgpOworICAgICB2b2lkIHNlZWtUZXN0KCk7CisgICAgIHZvaWQg cmVhZF9yYXdkYXRhKCk7CitAQCAtMjg2LDYgKzI4NywyOSBAQCB2b2lkIHRzdF9RQnVmZmVyOjpz ZWVrKCkKKyAgICAgUUNPTVBBUkUoYnVmZmVyLnNpemUoKSwgcG9zKTsKKyB9CisgCisrdm9pZCB0 c3RfUUJ1ZmZlcjo6aW52YWxpZFNlZWtzKCkKKyt7CisrICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9m KHFzaXpldHlwZSkgPT0gc2l6ZW9mKHFpbnQ2NCkpIHsKKysgICAgICAgIC8vIHNpemVvZihxc2l6 ZXR5cGUpID09IHNpemVvZihxaW50NjQpLCBzbyArMSB3b3VsZCBvdmVyZmxvdworKyAgICAgICAg UVNLSVAoIlRoaXMgaXMgYSAzMi1iaXQtb25seSB0ZXN0LiIpOworKyAgICB9IGVsc2UgeworKyAg ICAgICAgUUJ1ZmZlciBidWZmZXI7CisrICAgICAgICBidWZmZXIub3BlbihRSU9EZXZpY2U6Oldy aXRlT25seSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgpLCBxc2l6 ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQoMCkpOwor KyAgICAgICAgY29uc3RleHByIHFpbnQ2NCBNYXhRQnl0ZUFycmF5Q2FwYWNpdHkgPSAoc3RkOjpu dW1lcmljX2xpbWl0czxxc2l6ZXR5cGU+OjptYXgpKCk7CisrICAgICAgICAvLyB0aGlzIHNob3Vs ZCBmYWlsIGZhc3QsIG5vdCBhZnRlciB0cnlpbmcgdG8gYWxsb2NhdGUgbmVhcmx5IDIgR2lCIG9m IGRhdGEsCisrICAgICAgICAvLyBwb3RlbnRpYWxseSBjcmFzaGluZyBpbiB0aGUgcHJvY2VzczoK KysgICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKDIgKiBNYXhRQnl0ZUFycmF5Q2FwYWNpdHkg LSAxKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5 cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQoMCkpOworKyAg ICAgICAgLy8gZGl0dG86CisrICAgICAgICBRVkVSSUZZKCFidWZmZXIuc2VlayhNYXhRQnl0ZUFy cmF5Q2FwYWNpdHkgKyAxKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6 ZSgpLCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50 NjQoMCkpOworKyAgICB9CisrfQorKworIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWtUZXN0X2RhdGEo KQorIHsKKyAgICAgd3JpdGVCbG9ja19kYXRhKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAgYi9xdGJhc2UvdGVz dHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAoraW5kZXggZGE1 MzI3NTk0Yy4uNGEwNGUwZjdjNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAorQEAgLTU2MSw3ICs1NjEs OCBAQCBwcm90ZWN0ZWQ6CisgICAgIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRhLCBxaW50NjQg bWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6 ZSwgcWludDY0KGJ1Zi0+c2l6ZSgpIC0gb2Zmc2V0KSk7CistICAgICAgICBtZW1jcHkoZGF0YSwg YnVmLT5jb25zdERhdGEoKSArIG9mZnNldCwgbWF4U2l6ZSk7CisrICAgICAgICBpZiAobWF4U2l6 ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi0+Y29uc3REYXRhKCkgKyBvZmZz ZXQsIG1heFNpemUpOworICAgICAgICAgb2Zmc2V0ICs9IG1heFNpemU7CisgICAgICAgICByZXR1 cm4gbWF4U2l6ZTsKKyAgICAgfQorQEAgLTYwNCwxMyArNjA1LDE1IEBAIHByb3RlY3RlZDoKKyAg ICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQor ICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLnNpemUo KSAtIHBvcygpKSk7CistICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLmNvbnN0RGF0YSgpICsgcG9z KCksIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAgICAgIG1l bWNweShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3MoKSwgbWF4U2l6ZSk7CisgICAgICAgICBy ZXR1cm4gbWF4U2l6ZTsKKyAgICAgfQorICAgICBxaW50NjQgd3JpdGVEYXRhKGNvbnN0IGNoYXIg KmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXpl ID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLnNpemUoKSAtIHBvcygpKSk7CistICAgICAgICBt ZW1jcHkoYnVmLmRhdGEoKSArIHBvcygpLCBkYXRhLCBtYXhTaXplKTsKKysgICAgICAgIGlmICht YXhTaXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHkoYnVmLmRhdGEoKSArIHBvcygpLCBkYXRh LCBtYXhTaXplKTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9CisgCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3Mu Y3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3Mu Y3BwCitpbmRleCBkYjYwYmVhZDY0Li5mMzQ1YTQ0NDE0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwCisrKysgYi9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKK0BAIC0x LDcgKzEsOCBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKyAqKiBDb3B5cmlnaHQgKEMp IDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvcHlyaWdodCAoQykgMjAyMCBJbnRlbCBD b3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjAgVGhlIFF0IENvbXBhbnkgTHRkLgor KyoqIENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqKiBDb250YWN0OiBo dHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTAsNiArMTUxLDggQEAg cHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBzdGFydFN0b3BTdGFydFN0b3BCdWZmZXJzKCk7Cisg ICAgIHZvaWQgcHJvY2Vzc0V2ZW50c0luQVJlYWR5UmVhZFNsb3RfZGF0YSgpOworICAgICB2b2lk IHByb2Nlc3NFdmVudHNJbkFSZWFkeVJlYWRTbG90KCk7CisrICAgIHZvaWQgc3RhcnRGcm9tQ3Vy cmVudFdvcmtpbmdEaXJfZGF0YSgpOworKyAgICB2b2lkIHN0YXJ0RnJvbUN1cnJlbnRXb3JraW5n RGlyKCk7CisgCisgICAgIC8vIGtlZXAgdGhlc2UgYXQgdGhlIGVuZCwgc2luY2UgdGhleSB1c2Ug bG90cyBvZiBwcm9jZXNzZXMgYW5kIHNvbWV0aW1lcworICAgICAvLyBjYXVzZWQgb2JzY3VyZSBm YWlsdXJlcyB0byBvY2N1ciBpbiB0ZXN0cyB0aGF0IGZvbGxvd2VkIHRoZW0gKGVzcC4gb24gdGhl IE1hYykKK0BAIC0yNzMxLDUgKzI3MzQsOTQgQEAgdm9pZCB0c3RfUVByb2Nlc3M6OmZpbmlzaFBy b2Nlc3NCZWZvcmVSZWFkaW5nRG9uZV9kZXByZWNhdGVkKCkKKyAKKyAjZW5kaWYKKyAKKytlbnVt IGNsYXNzIENoZGlyTW9kZSB7CisrICAgIE5vbmUgPSAwLAorKyAgICBJblBhcmVudCwKKysgICAg SW5DaGlsZAorK307CisrUV9ERUNMQVJFX01FVEFUWVBFKENoZGlyTW9kZSkKKysKKyt2b2lkIHRz dF9RUHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXJfZGF0YSgpCisreworKyAgICBx UmVnaXN0ZXJNZXRhVHlwZTxDaGRpck1vZGU+KCk7CisrICAgIFFUZXN0OjphZGRDb2x1bW48UVN0 cmluZz4oInByb2dyYW1QcmVmaXgiKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxDaGRpck1vZGU+ KCJjaGRpck1vZGUiKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxib29sPigic3VjY2VzcyIpOwor KworKyAgICBjb25zdGV4cHIgYm9vbCBJc1dpbmRvd3MgPSB0cnVlCisrI2lmZGVmIFFfT1NfVU5J WAorKyAgICAgICAgICAgICYmIGZhbHNlCisrI2VuZGlmCisrICAgICAgICAgICAgOworKworKyAg ICAvLyBiYXNlbGluZTogdHJ5aW5nIHRvIGV4ZWN1dGUgdGhlIGRpcmVjdG9yeSwgdGhpcyBjYW4n dCBwb3NzaWJseSBzdWNjZWVkIQorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1zYW1lLWN3ZCIp IDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6Ok5vbmUgPDwgZmFsc2U7CisrCisrICAgIC8vIGNy b3NzLXBsYXRmb3JtIGJlaGF2aW9yOiBuZWl0aGVyIE9TIHNlYXJjaGVzIHRoZSBzZXRXb3JraW5n RGlyZWN0b3J5KCkKKysgICAgLy8gZGlyIHdpdGhvdXQgIi4vIgorKyAgICBRVGVzdDo6bmV3Um93 KCJwbGFpbi1jaGlsZC1jaGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6OkluQ2hpbGQg PDwgZmFsc2U7CisrCisrICAgIC8vIGNyb3NzLXBsYXRmb3JtIGJlaGF2aW9yOiBib3RoIE9TZXMg c2VhcmNoIHRoZSBwYXJlbnQncyBDV0Qgd2l0aCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInBy ZWZpeGVkLXBhcmVudC1jaGRpciIpIDw8ICIuLyIgPDwgQ2hkaXJNb2RlOjpJblBhcmVudCA8PCB0 cnVlOworKworKyAgICAvLyBvcHBvc2l0ZSBiZWhhdmlvcnM6IFdpbmRvd3Mgc2VhcmNoZXMgdGhl IHBhcmVudCdzIENXRCBhbmQgVW5peCBzZWFyY2hlcworKyAgICAvLyB0aGUgY2hpbGQncyB3aXRo ICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4ZWQtY2hpbGQtY2hkaXIiKSA8PCAiLi8i IDw8IENoZGlyTW9kZTo6SW5DaGlsZCA8PCAhSXNXaW5kb3dzOworKworKyAgICAvLyBXaW5kb3dz IHNlYXJjaGVzIHRoZSBwYXJlbnQncyBDV0Qgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0OjpuZXdS b3coInBsYWluLXBhcmVudC1jaGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6OkluUGFy ZW50IDw8IElzV2luZG93czsKKyt9CisrCisrdm9pZCB0c3RfUVByb2Nlc3M6OnN0YXJ0RnJvbUN1 cnJlbnRXb3JraW5nRGlyKCkKKyt7CisrICAgIFFGRVRDSChRU3RyaW5nLCBwcm9ncmFtUHJlZml4 KTsKKysgICAgUUZFVENIKENoZGlyTW9kZSwgY2hkaXJNb2RlKTsKKysgICAgUUZFVENIKGJvb2ws IHN1Y2Nlc3MpOworKworKyAgICBRUHJvY2VzcyBwcm9jZXNzOworKyAgICBxUmVnaXN0ZXJNZXRh VHlwZTxRUHJvY2Vzczo6UHJvY2Vzc0Vycm9yPigpOworKyAgICBRU2lnbmFsU3B5IGVycm9yU3B5 KCZwcm9jZXNzLCAmUVByb2Nlc3M6OmVycm9yT2NjdXJyZWQpOworKyAgICBRVkVSSUZZKGVycm9y U3B5LmlzVmFsaWQoKSk7CisrCisrICAgIC8vIGJvdGggdGhlIGRpciBuYW1lIGFuZCB0aGUgZXhl Y3V0YWJsZSBuYW1lCisrICAgIGNvbnN0IFFTdHJpbmcgdGFyZ2V0ID0gUVN0cmluZ0xpdGVyYWwo InRlc3RQcm9jZXNzTm9ybWFsIik7CisrICAgIHByb2Nlc3Muc2V0UHJvZ3JhbShwcm9ncmFtUHJl Zml4ICsgdGFyZ2V0KTsKKysKKysjaWZkZWYgUV9PU19VTklYCisrICAgIC8vIFJlc2V0IFBBVEgs IHRvIGJlIHN1cmUgaXQgZG9lc24ndCBjb250YWluIC4gb3IgdGhlIGVtcHR5IHBhdGguCisrICAg IC8vIFdlIGNhbid0IGRvIHRoaXMgb24gV2luZG93cyBiZWNhdXNlIERMTHMgYXJlIHNlYXJjaGVk IGluIFBBVEgKKysgICAgLy8gYW5kIFdpbmRvd3MgYWx3YXlzIHNlYXJjaGVzICIuIiBhbnl3YXku CisrICAgIGF1dG8gcmVzdG9yZUVudiA9IHFTY29wZUd1YXJkKFtvbGQgPSBxZ2V0ZW52KCJQQVRI IildIHsKKysgICAgICAgIHFwdXRlbnYoIlBBVEgiLCBvbGQpOworKyAgICB9KTsKKysgICAgcXB1 dGVudigiUEFUSCIsICIvIik7CisrI2VuZGlmCisrCisrICAgIHN3aXRjaCAoY2hkaXJNb2RlKSB7 CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpJblBhcmVudDogeworKyAgICAgICAgYXV0byByZXN0b3Jl Q3dkID0gcVNjb3BlR3VhcmQoW29sZCA9IFFEaXI6OmN1cnJlbnRQYXRoKCldIHsKKysgICAgICAg ICAgICBRRGlyOjpzZXRDdXJyZW50KG9sZCk7CisrICAgICAgICB9KTsKKysgICAgICAgIFFWRVJJ RlkoUURpcjo6c2V0Q3VycmVudCh0YXJnZXQpKTsKKysgICAgICAgIHByb2Nlc3Muc3RhcnQoKTsK KysgICAgICAgIGJyZWFrOworKyAgICB9CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpJbkNoaWxkOgor KyAgICAgICAgcHJvY2Vzcy5zZXRXb3JraW5nRGlyZWN0b3J5KHRhcmdldCk7CisrICAgICAgICBR X0ZBTExUSFJPVUdIKCk7CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpOb25lOgorKyAgICAgICAgcHJv Y2Vzcy5zdGFydCgpOworKyAgICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAgUUNPTVBBUkUo cHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLCBzdWNjZXNzKTsKKysgICAgUUNPTVBBUkUoZXJyb3JT cHkuY291bnQoKSwgaW50KCFzdWNjZXNzKSk7CisrICAgIGlmIChzdWNjZXNzKSB7CisrICAgICAg ICBRVkVSSUZZKHByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKCkpOworKyAgICB9IGVsc2UgeworKyAg ICAgICAgUUNPTVBBUkUocHJvY2Vzcy5lcnJvcigpLCBRUHJvY2Vzczo6RmFpbGVkVG9TdGFydCk7 CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVByb2Nlc3MpCisgI2luY2x1ZGUgInRz dF9xcHJvY2Vzcy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9p dGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRh Ymxlc3Byb3h5bW9kZWwuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxz L3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5 bW9kZWwuY3BwCitpbmRleCBlMWVhN2E0NTUyLi45MDk3MmNhYTU3IDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5 bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2Rl bC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKK0BAIC0xMTcsNiArMTE3LDcg QEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURyb3BBZnRlckxh c3RSb3dfZGF0YSgpOworICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURyb3BBZnRlckxhc3RSb3co KTsKKyAgICAgdm9pZCBxdGJ1ZzkxNzg4KCk7CisrICAgIHZvaWQgcXRidWc5MTg3OCgpOworIAor IHByaXZhdGU6CisgICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtb2Q7CitAQCAtODQzLDYgKzg0NCwy MiBAQCB2b2lkIHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsOjpxdGJ1ZzkxNzg4KCkK KyAgICAgUUNPTVBBUkUocHJveHlDb25jYXQuY29sdW1uQ291bnQoKSwgMCk7CisgfQorIAorK3Zv aWQgdHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE4NzgoKQorK3sKKysg ICAgUVN0YW5kYXJkSXRlbU1vZGVsIG07CisrICAgIG0uc2V0Um93Q291bnQoNCk7CisrICAgIG0u c2V0Q29sdW1uQ291bnQoNCk7CisrCisrICAgIFFDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWwg cG07CisrICAgIFFTb3J0RmlsdGVyUHJveHlNb2RlbCBwcm94eUZpbHRlcjsKKysgICAgcHJveHlG aWx0ZXIuc2V0U291cmNlTW9kZWwoJnBtKTsKKysgICAgcHJveHlGaWx0ZXIuc2V0RmlsdGVyRml4 ZWRTdHJpbmcoInNvbWV0aGluZyIpOworKyAgICBwbS5hZGRTb3VyY2VNb2RlbCgmbSk7ICAvLyBU aGlzIHNob3VsZCBub3QgYXNzZXJ0CisrCisrICAgIFFDT01QQVJFKHBtLmNvbHVtbkNvdW50KCks IDQpOworKyAgICBRQ09NUEFSRShwbS5yb3dDb3VudCgpLCA0KTsKKyt9CisrCisgUVRFU1RfR1VJ TEVTU19NQUlOKHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsKQorIAorICNpbmNsdWRl ICJ0c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcAor aW5kZXggOWJkNjZjMDgzNS4uZWQ0YTBiYWU1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcAorQEAgLTE1 OCw2ICsxNTgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIG51bGxSZWNlaXZlcigpOwor ICAgICB2b2lkIGZ1bmN0b3JSZWZlcmVuY2VzQ29ubmVjdGlvbigpOworICAgICB2b2lkIGRpc2Nv bm5lY3REaXNjb25uZWN0cygpOworKyAgICB2b2lkIGRlY2xhcmF0aXZlRGF0YSgpOworIH07Cisg Cisgc3RydWN0IFFPYmplY3RDcmVhdGVkT25TaHV0ZG93bgorQEAgLTc2NzksNSArNzY4MCw4MSBA QCB2b2lkIHRzdF9RT2JqZWN0OjpkaXNjb25uZWN0RGlzY29ubmVjdHMoKQorIFFfU1RBVElDX0FT U0VSVChRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPHRzdF9RT2JqZWN0Pjo6VmFsdWUpOwor IFFfU1RBVElDX0FTU0VSVCghUXRQcml2YXRlOjpIYXNRX09CSkVDVF9NYWNybzxTaWJsaW5nRGVs ZXRlcj46OlZhbHVlKTsKKyAKKysjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwKKysvKgorKyAgICBT aW5jZSBRT2JqZWN0UHJpdmF0ZSBzdG9yZXMgdGhlIGRlY2xhcmF0aXZlRGF0YSBwb2ludGVyIGlu IGEgdW5pb24gd2l0aCB0aGUgcG9pbnRlcgorKyAgICB0byB0aGUgY3VycmVudGx5IGRlc3Ryb3ll ZCBjaGlsZCwgY2FsbHMgdG8gdGhlIFF0RGVjbGFyYXRpdmUgaGFuZGxlcnMgbmVlZCB0byBiZQor KyAgICBjb3JyZWN0bHkgZ3VhcmRlZC4gUVRCVUctMTA1Mjg2CisrKi8KKytuYW1lc3BhY2UgUXRE ZWNsYXJhdGl2ZSB7Cisrc3RhdGljIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqdGhlRGF0YTsK KysKKytzdGF0aWMgdm9pZCBkZXN0cm95ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRh LCBRT2JqZWN0ICopCisreworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsKKyt9Cisrc3Rh dGljIHZvaWQgc2lnbmFsRW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIFFP YmplY3QgKiwgaW50LCB2b2lkICoqKQorK3sKKysgICAgUUNPTVBBUkUoZGF0YSwgdGhlRGF0YSk7 CisrfQorKy8vIHdlIGNhbid0IHVzZSBRQ09NUEFSRSBpbiB0aGUgbmV4dCB0d28gZnVuY3Rpb25z LCBhcyB0aGV5IGRvbid0IHJldHVybiB2b2lkCisrc3RhdGljIGludCByZWNlaXZlcnMoUUFic3Ry YWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGludCkKKyt7CisrICAg IFFUZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVEYXRhIiwgX19GSUxF X18sIF9fTElORV9fKTsKKysgICAgcmV0dXJuIDA7CisrfQorK3N0YXRpYyBib29sIGlzU2lnbmFs Q29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgY29uc3QgUU9iamVjdCAq LCBpbnQpCisreworKyAgICBRVGVzdDo6cUNvbXBhcmUoZGF0YSwgdGhlRGF0YSwgImRhdGEiLCAi dGhlRGF0YSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisrICAgIHJldHVybiB0cnVlOworK30KKysK KytjbGFzcyBPYmplY3QgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJs aWM6CisrICAgIHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIH5PYmplY3QoKQorKyAgICB7 CisrICAgICAgICBpZiAoT2JqZWN0ICpwID0gc3RhdGljX2Nhc3Q8T2JqZWN0ICo+KHBhcmVudCgp KSkKKysgICAgICAgICAgICBwLT5lbWl0U2lnbmFsKCk7CisrICAgIH0KKysKKysgICAgdm9pZCBl bWl0U2lnbmFsKCkKKysgICAgeworKyAgICAgICAgZW1pdCB0aGVTaWduYWwoKTsKKysgICAgfQor KworK3NpZ25hbHM6CisrICAgIHZvaWQgdGhlU2lnbmFsKCk7CisrfTsKKysKKyt9CisrI2VuZGlm CisrCisrdm9pZCB0c3RfUU9iamVjdDo6ZGVjbGFyYXRpdmVEYXRhKCkKKyt7CisrI2lmZGVmIFFU X0JVSUxEX0lOVEVSTkFMCisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIGRlc3Ryb3llZChRQWJz dHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OmRlc3Ryb3llZCk7CisrICAgIFFTY29wZWRWYWx1 ZVJvbGxiYWNrIHNpZ25hbEVtaXR0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpzaWduYWxF bWl0dGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVjbGFy YXRpdmU6OnNpZ25hbEVtaXR0ZWQpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayByZWNlaXZl cnMoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpyZWNlaXZlcnMpOworKyAgICBRU2Nv cGVkVmFsdWVSb2xsYmFjayBpc1NpZ25hbENvbm5lY3RlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURh dGE6OmlzU2lnbmFsQ29ubmVjdGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRdERlY2xhcmF0aXZlOjppc1NpZ25hbENvbm5lY3RlZCk7CisrCisrICAgIFF0 RGVjbGFyYXRpdmU6Ok9iamVjdCBwOworKyAgICBRT2JqZWN0UHJpdmF0ZSAqcHJpdiA9IFFPYmpl Y3RQcml2YXRlOjpnZXQoJnApOworKyAgICBwcml2LT5kZWNsYXJhdGl2ZURhdGEgPSBRdERlY2xh cmF0aXZlOjp0aGVEYXRhID0gbmV3IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTsKKysKKysgICAg Y29ubmVjdCgmcCwgJlF0RGVjbGFyYXRpdmU6Ok9iamVjdDo6dGhlU2lnbmFsLCAmcCwgW117Cisr ICAgIH0pOworKworKyAgICBRdERlY2xhcmF0aXZlOjpPYmplY3QgKmNoaWxkID0gbmV3IFF0RGVj bGFyYXRpdmU6Ok9iamVjdDsKKysgICAgY2hpbGQtPnNldFBhcmVudCgmcCk7CisrI2VuZGlmCisr fQorKworIFFURVNUX01BSU4odHN0X1FPYmplY3QpCisgI2luY2x1ZGUgInRzdF9xb2JqZWN0Lm1v YyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWlt ZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwCitpbmRleCAw ZWE0MjJlY2JjLi4xYTMyNTY1MzRiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29y ZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3Ft aW1lZGF0YWJhc2UuY3BwCitAQCAtNzAsMTUgKzcwLDE1IEBAIHN0YXRpYyBpbmxpbmUgUVN0cmlu ZyB0ZXN0U3VpdGVXYXJuaW5nKCkKKyAKKyAgICAgUVN0cmluZyByZXN1bHQ7CisgICAgIFFUZXh0 U3RyZWFtIHN0cigmcmVzdWx0KTsKKy0gICAgc3RyIDw8ICJcbkNhbm5vdCBmaW5kIHRoZSBzaGFy ZWQtbWltZS1pbmZvIHRlc3Qgc3VpdGVcbnN0YXJ0aW5nIGZyb206ICIKKysgICAgc3RyIDw8ICJc bkNhbm5vdCBmaW5kIHRoZSBzaGFyZWQtbWltZS1pbmZvIHRlc3Qgc3VpdGVcbmluIHRoZSBwYXJl bnQgb2Y6ICIKKyAgICAgICAgIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRRGlyOjpjdXJy ZW50UGF0aCgpKSA8PCAiXG4iCisgICAgICAgICAgICAiY2QgIiA8PCBRRGlyOjp0b05hdGl2ZVNl cGFyYXRvcnMoUVN0cmluZ0xpdGVyYWwoInRlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1p bWVkYXRhYmFzZSIpKSA8PCAiXG4iCistICAgICAgICAgICAid2dldCBodHRwOi8vY2dpdC5mcmVl ZGVza3RvcC5vcmcveGRnL3NoYXJlZC1taW1lLWluZm8vc25hcHNob3QvUmVsZWFzZS0xLTEwLnpp cFxuIgorLSAgICAgICAgICAgInVuemlwIFJlbGVhc2UtMS0xMC56aXBcbiI7CisrICAgICAgICAg ICAid2dldCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveGRnL3NoYXJlZC1taW1lLWlu Zm8vLS9hcmNoaXZlLzIuMS9zaGFyZWQtbWltZS1pbmZvLTIuMS56aXBcbiIKKysgICAgICAgICAg ICJ1bnppcCBzaGFyZWQtbWltZS1pbmZvLTIuMS56aXBcbiI7CisgI2lmZGVmIFFfT1NfV0lOCist ICAgIHN0ciA8PCAibWtkaXIgdGVzdGZpbGVzXG54Y29weSAvcyBSZWxlYXNlLTEtMTAgcy1tLWlc biI7CisrICAgIHN0ciA8PCAibWtkaXIgdGVzdGZpbGVzXG54Y29weSAvcyBzaGFyZWQtbWltZS1p bmZvLTIuMSBzLW0taVxuIjsKKyAjZWxzZQorLSAgICBzdHIgPDwgImxuIC1zIFJlbGVhc2UtMS0x MCBzLW0taVxuIjsKKysgICAgc3RyIDw8ICJsbiAtcyBzaGFyZWQtbWltZS1pbmZvLTIuMSBzLW0t aVxuIjsKKyAjZW5kaWYKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMTU0LDcgKzE1NCw3 IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OmluaXRUZXN0Q2FzZSgpCisgICAgIFFWRVJJRlky KGNvcHlSZXNvdXJjZUZpbGUoeG1sRmlsZU5hbWUsIHhtbFRhcmdldEZpbGVOYW1lLCAmZXJyb3JN ZXNzYWdlKSwgcVByaW50YWJsZShlcnJvck1lc3NhZ2UpKTsKKyAjZW5kaWYKKyAKKy0gICAgbV90 ZXN0U3VpdGUgPSBRRklORFRFU1REQVRBKCJzLW0taS90ZXN0cyIpOworKyAgICBtX3Rlc3RTdWl0 ZSA9IFFGSU5EVEVTVERBVEEoInMtbS1pL3Rlc3RzL21pbWUtZGV0ZWN0aW9uIik7CisgICAgIGlm IChtX3Rlc3RTdWl0ZS5pc0VtcHR5KCkpCisgICAgICAgICBxV2FybmluZygiJXMiLCBxUHJpbnRh YmxlKHRlc3RTdWl0ZVdhcm5pbmcoKSkpOworIAorQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIHRz dF9RTWltZURhdGFiYXNlOjphbGxNaW1lVHlwZXMoKQorICAgICBRVkVSSUZZKCFsc3QuaXNFbXB0 eSgpKTsKKyAKKyAgICAgLy8gSGFyZGNvZGluZyB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBjaGVj ayBib3RoIHByb3ZpZGVycyBmaW5kIHRoZSBzYW1lIG51bWJlciBvZiBtaW1ldHlwZXMuCistICAg IFFDT01QQVJFKGxzdC5jb3VudCgpLCA3NzkpOworKyAgICBRQ09NUEFSRShsc3QuY291bnQoKSwg ODExKTsKKyAKKyAgICAgZm9yZWFjaCAoY29uc3QgUU1pbWVUeXBlICZtaW1lLCBsc3QpIHsKKyAg ICAgICAgIGNvbnN0IFFTdHJpbmcgbmFtZSA9IG1pbWUubmFtZSgpOworQEAgLTYzMSwxMCArNjMx LDkgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6c3VmZml4ZXNfZGF0YSgpCisgCisgICAgIFFU ZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggYSBzaW5nbGUgcGF0dGVybiIpIDw8ICJhcHBsaWNh dGlvbi9wZGYiIDw8ICIqLnBkZiIgPDwgInBkZiI7CisgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0 eXBlIHdpdGggbXVsdGlwbGUgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24veC1rcHJlc2VudGVy IiA8PCAiKi5rcHI7Ki5rcHQiIDw8ICJrcHIiOworLSAgICBRVGVzdDo6bmV3Um93KCJqcGVnIikg PDwgImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsqLmpwZWciIDw8ICJqcGVnIjsKKy0gICAg Ly9pZiAoS01pbWVUeXBlOjpzaGFyZWRNaW1lSW5mb1ZlcnNpb24oKSA+IEtERV9NQUtFX1ZFUlNJ T04oMCwgNjAsIDApKSB7CistICAgICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG1h bnkgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8PCAiKi53cDsq LndwNDsqLndwNTsqLndwNjsqLndwZDsqLndwcCIgPDwgIndwIjsKKy0gICAgLy99CisrICAgIC8v IFRoZSBwcmVmZXJyZWQgc3VmZml4IGZvciBpbWFnZS9qcGVnIGlzICouanBnLCBhcyBwZXIgaHR0 cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjczNworKyAgICBRVGVzdDo6bmV3 Um93KCJqcGVnIikgPDwgImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsqLmpwZWciIDw8ICJq cGciOworKyAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG1hbnkgcGF0dGVybnMiKSA8 PCAiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8PCAiKi53cDsqLndwNDsqLndwNTsqLndw NjsqLndwZDsqLndwcCIgPDwgIndwIjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMgdGV4dCBt aW1ldHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQiIDw8 ICIqLm9kdCIgPDwgIm9kdCI7CisgICAgIFFUZXN0OjpuZXdSb3coIm9hc2lzIHByZXNlbnRhdGlv biBtaW1ldHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNl bnRhdGlvbiIgPDwgIioub2RwIiA8PCAib2RwIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5 cGUgd2l0aCBtdWx0aXBsZSBwYXR0ZXJucyIpIDw8ICJ0ZXh0L3BsYWluIiA8PCAiKi5hc2M7Ki50 eHQ7Kix2IiA8PCAidHh0IjsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitpbmRleCAzZTU4ZGQwM2Nj Li5jOGY4MmVmNWQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJp YWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitAQCAtMTc2LDYgKzE3Niw4 IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBmcm9tVG9WYXJpYW50Q29udmVyc2lvbnNf ZGF0YSgpOworICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9ucygpOworIAorKyAgICB2 b2lkIG5vTGVha09uTmFtZUNsYXNoKCk7CisrCisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyB0ZXN0 RGF0YURpcjsKKyB9OworQEAgLTM2ODUsNSArMzY4NywyMyBAQCB2b2lkIHRzdF9RdEpzb246OmZy b21Ub1ZhcmlhbnRDb252ZXJzaW9ucygpCisgICAgIH0KKyB9CisgCisrdm9pZCB0c3RfUXRKc29u Ojpub0xlYWtPbk5hbWVDbGFzaCgpCisreworKyAgICBRSnNvbkRvY3VtZW50IGRvYyA9IFFKc29u RG9jdW1lbnQ6OmZyb21Kc29uKCJ7XCJcIjp7XCJcIjowfSxcIlwiOjB9Iik7CisrICAgIFFWRVJJ RlkoIWRvYy5pc051bGwoKSk7CisrICAgIGNvbnN0IFFKc29uT2JqZWN0IG9iaiA9IGRvYy5vYmpl Y3QoKTsKKysKKysgICAgLy8gUmVtb3ZlZCB0aGUgZHVwbGljYXRlIGtleS4KKysgICAgUUNPTVBB UkUob2JqLmxlbmd0aCgpLCAxKTsKKysKKysgICAgLy8gUmV0YWluZWQgdGhlIGxhc3Qgb2YgdGhl IGR1cGxpY2F0ZXMuCisrICAgIGNvbnN0IFFKc29uVmFsdWUgdmFsID0gb2JqLmJlZ2luKCkudmFs dWUoKTsKKysgICAgUVZFUklGWSh2YWwuaXNEb3VibGUoKSk7CisrICAgIFFDT01QQVJFKHZhbC50 b0RvdWJsZSgpLCAwLjApOworKworKyAgICAvLyBJdCBzaG91bGQgbm90IGxlYWsuCisrICAgIC8v IEluIHBhcnRpY3VsYXIgaXQgc2hvdWxkIG5vdCBmb3JnZXQgdG8gZGVyZWYgdGhlIGNvbnRhaW5l ciBmb3IgdGhlIGlubmVyIG9iamVjdC4KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUXRKc29uKQor ICNpbmNsdWRlICJ0c3RfcXRqc29uLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAoraW5kZXggYTU5 YjU4ZDU3Zi4uMjQxYzNlODRhYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKK0BAIC02Myw2ICs2 Myw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaXNWYWxpZElkX2RhdGEoKTsKKyAgICAg dm9pZCBpc1ZhbGlkSWQoKTsKKyAgICAgdm9pZCBtYWxmb3JtZWQoKTsKKysgICAgdm9pZCBzZXJp YWxpemUoKTsKKyAgICAgLy8gQmFja2VuZCB0ZXN0cworICAgICB2b2lkIHV0Y1Rlc3QoKTsKKyAg ICAgdm9pZCBpY3VUZXN0KCk7CitAQCAtOTQ3LDYgKzk0OCwzMyBAQCB2b2lkIHRzdF9RVGltZVpv bmU6Om1hbGZvcm1lZCgpCisgICAgICAgICBiYXJmLm9mZnNldEZyb21VdGMobm93KTsKKyB9Cisg Cisrdm9pZCB0c3RfUVRpbWVab25lOjpzZXJpYWxpemUoKQorK3sKKysgICAgaW50IHBhcnRzID0g MDsKKysjaWZuZGVmIFFUX05PX0RFQlVHX1NUUkVBTQorKyAgICBxRGVidWcoKSA8PCBRVGltZVpv bmUoKTsgLy8gdG8gdmVyaWZ5IG5vIGNyYXNoCisrICAgIHBhcnRzKys7CisrI2VuZGlmCisrI2lm bmRlZiBRVF9OT19EQVRBU1RSRUFNCisrICAgIFFCeXRlQXJyYXkgYmxvYjsKKysgICAgeworKyAg ICAgICAgUURhdGFTdHJlYW0gc3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OldyaXRlT25seSk7Cisr ICAgICAgICBzdHJlYW0gPDwgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpIDw8IFFUaW1lWm9uZSg0 MjApIDw8IFFUaW1lWm9uZSgpIDw8IHFpbnQ2NCgtMSk7CisrICAgIH0KKysgICAgUURhdGFTdHJl YW0gc3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OlJlYWRPbmx5KTsKKysgICAgUVRpbWVab25lIGlu dmFsaWQsIG9mZnNldCwgb3NsbzsKKysgICAgcWludDY0IG1pbnVzb25lOworKyAgICBzdHJlYW0g Pj4gb3NsbyA+PiBvZmZzZXQgPj4gaW52YWxpZCA+PiBtaW51c29uZTsKKysgICAgUUNPTVBBUkUo b3NsbywgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpKTsKKysgICAgUUNPTVBBUkUob2Zmc2V0LCBR VGltZVpvbmUoNDIwKSk7CisrICAgIFFWRVJJRlkoIWludmFsaWQuaXNWYWxpZCgpKTsKKysgICAg UUNPTVBBUkUobWludXNvbmUsIHFpbnQ2NCgtMSkpOworKyAgICBwYXJ0cysrOworKyNlbmRpZgor KyAgICBpZiAoIXBhcnRzKQorKyAgICAgICAgUVNLSVAoIk5vIHNlcmlhbGl6YXRpb24gZW5hYmxl ZCIpOworK30KKysKKyB2b2lkIHRzdF9RVGltZVpvbmU6OnV0Y1Rlc3QoKQorIHsKKyAjaWZkZWYg UVRfQlVJTERfSU5URVJOQUwKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3Fk YnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9k YnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKK2luZGV4IDA1NDgwYzZk ZDIuLjcwZjRjNzU3NTYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVz aW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAorQEAgLTMyNCw2ICsz MjQsMTMgQEAgdm9pZCB0c3RfUURCdXNJbnRlcmZhY2U6Om5vdFZhbGlkKCkKKyAKKyAgICAgUVZF UklGWSghaW50ZXJmYWNlLmlzVmFsaWQoKSk7CisgICAgIFFWRVJJRlkoIVFNZXRhT2JqZWN0Ojpp bnZva2VNZXRob2QoJmludGVyZmFjZSwgIkxpc3ROYW1lcyIsIFF0OjpEaXJlY3RDb25uZWN0aW9u KSk7CisrCisrICAgIC8vIFdpdGggYSBjb25uZWN0aW9uLCBidXQgZW1wdHkvbnVsbCBzZXJ2aWNl IGFuZCBwYXRoIHNwZWNpZmllZAorKyAgICBRREJ1c0Nvbm5lY3Rpb24gY29uID0gUURCdXNDb25u ZWN0aW9uOjpzZXNzaW9uQnVzKCk7CisrICAgIFFWRVJJRlkoY29uLmlzQ29ubmVjdGVkKCkpOwor KyAgICBRREJ1c0ludGVyZmFjZSBpZmFjZSh7fSwge30sIHt9LCBjb24pOworKyAgICBRVkVSSUZZ KCFpZmFjZS5pc1ZhbGlkKCkpOworKyAgICBRVkVSSUZZKCFRTWV0YU9iamVjdDo6aW52b2tlTWV0 aG9kKCZpbnRlcmZhY2UsICJMaXN0TmFtZXMiLCBRdDo6RGlyZWN0Q29ubmVjdGlvbikpOworIH0K KyAKKyB2b2lkIHRzdF9RREJ1c0ludGVyZmFjZTo6bm90VmFsaWREZXJpdmVkKCkKK2RpZmYgLS1n aXQgYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNl cXVlbmNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3Rz dF9xa2V5c2VxdWVuY2UuY3BwCitpbmRleCA4NzQ0NjhjOTU0Li4wNGNlYjRhYjY1IDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlz ZXF1ZW5jZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVl bmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCitAQCAtNTA3LDYgKzUwNywxMCBAQCB2b2lkIHRzdF9R S2V5U2VxdWVuY2U6OnRvU3RyaW5nRnJvbUtleWNvZGVfZGF0YSgpCisgICAgIFFUZXN0OjpuZXdS b3coIkN0cmwrQWx0K051bStEZWwiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OkNvbnRyb2xNb2RpZmll ciB8IFF0OjpBbHRNb2RpZmllciB8IFF0OjpLZXlwYWRNb2RpZmllciB8IFF0OjpLZXlfRGVsZXRl KSA8PCAiQ3RybCtBbHQrTnVtK0RlbCI7CisgICAgIFFUZXN0OjpuZXdSb3coIkN0cmwrSW5zIikg PDwgUUtleVNlcXVlbmNlKFF0OjpDb250cm9sTW9kaWZpZXIgfCBRdDo6S2V5X0luc2VydCkgPDwg IkN0cmwrSW5zIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtOdW0rSW5zKDEpIikgPDwgUUtl eVNlcXVlbmNlKFF0OjpLZXlfSW5zZXJ0IHwgUXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6OkNvbnRy b2xNb2RpZmllcikgPDwgIkN0cmwrTnVtK0lucyI7CisrICAgIFFUZXN0OjpuZXdSb3coIkN0cmwi KSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9Db250cm9sKSA8PCAiQ29udHJvbCI7CisrICAgIFFU ZXN0OjpuZXdSb3coIkFsdCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0FsdCkgPDwgIkFsdCI7 CisrICAgIFFUZXN0OjpuZXdSb3coIlNoaWZ0IikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfU2hp ZnQpIDw8ICJTaGlmdCI7CisrICAgIFFUZXN0OjpuZXdSb3coIk1ldGEiKSA8PCBRS2V5U2VxdWVu Y2UoUXQ6OktleV9NZXRhKSA8PCAiTWV0YSI7CisgfQorIAorIHZvaWQgdHN0X1FLZXlTZXF1ZW5j ZTo6dG9TdHJpbmdGcm9tS2V5Y29kZSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v Z3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAgYi9xdGJhc2UvdGVz dHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcAoraW5k ZXggMTVlMGVjYWRhYS4uYjRlY2E3NDI4MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJh c2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNw cAorQEAgLTgxLDYgKzgxLDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCByZWdpc3Rlck9w ZW5UeXBlUHJlZmVycmVkTmFtZXNTeXN0ZW0oKTsKKyAgICAgdm9pZCByZWdpc3Rlck9wZW5UeXBl UHJlZmVycmVkTmFtZXNBcHBsaWNhdGlvbigpOworIAorKyAgICB2b2lkIHN0cmV0Y2hSZXNwZWN0 ZWQoKTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIG1fbGVkRm9udDsKKyAgICAgUVN0cmlu ZyBtX3Rlc3RGb250OworQEAgLTM1NSw2ICszNTcsMjggQEAgc3RhdGljIFFTdHJpbmcgdGVzdFN0 cmluZygpCisgICAgIHJldHVybiBRU3RyaW5nTGl0ZXJhbCgiZm9vIGJhciIpOworIH0KKyAKKyt2 b2lkIHRzdF9RRm9udERhdGFiYXNlOjpzdHJldGNoUmVzcGVjdGVkKCkKKyt7CisrICAgIGludCBp dGFsaWNJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxpY2F0aW9uRm9udChtX3Rlc3RGb250SXRh bGljKTsKKysgICAgUVZFUklGWShpdGFsaWNJZCAhPSAtMSk7CisrCisrICAgIFFWRVJJRlkoIVFG b250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKGl0YWxpY0lkKS5pc0VtcHR5KCkp OworKworKyAgICBRU3RyaW5nIGl0YWxpY0ZvbnROYW1lID0gUUZvbnREYXRhYmFzZTo6YXBwbGlj YXRpb25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmZpcnN0KCk7CisrCisrICAgIFFGb250IGl0YWxp Y0ZvbnQgPSBRRm9udERhdGFiYXNlKCkuZm9udChpdGFsaWNGb250TmFtZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmc6OmZyb21MYXRpbjEoIkl0 YWxpYyIpLCAxNCk7CisrICAgIFFWRVJJRlkoaXRhbGljRm9udC5pdGFsaWMoKSk7CisrCisrICAg IFFGb250IGl0YWxpY1N0cmV0Y2hlZEZvbnQgPSBpdGFsaWNGb250OworKyAgICBpdGFsaWNTdHJl dGNoZWRGb250LnNldFN0cmV0Y2goIDQwMCApOworKworKyAgICBRVkVSSUZZKFFGb250TWV0cmlj c0YoaXRhbGljRm9udCkuaG9yaXpvbnRhbEFkdmFuY2UoUVN0cmluZ0xpdGVyYWwoImZvb2JhciIp KSA8CisrICAgICAgICAgICAgUUZvbnRNZXRyaWNzRihpdGFsaWNTdHJldGNoZWRGb250KS5ob3Jp em9udGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpKTsKKysKKysgICAgUUZvbnRE YXRhYmFzZTo6cmVtb3ZlQXBwbGljYXRpb25Gb250KGl0YWxpY0lkKTsKKyt9CisrCisgdm9pZCB0 c3RfUUZvbnREYXRhYmFzZTo6Y29uZGVuc2VkRm9udFdpZHRoTm9Gb250TWVyZ2luZygpCisgewor ICAgICBpbnQgcmVndWxhckZvbnRJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxpY2F0aW9uRm9u dChtX3Rlc3RGb250KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2Fj Y2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwCitp bmRleCAzZDRhMDk0YzQzLi5iNDIzZTExYTk5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3Fu ZXR3b3JrcmVwbHkuY3BwCitAQCAtMjgxLDYgKzI4MSw3IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAg ICAgdm9pZCBpb0dldEZyb21GaWxlU3BlY2lhbCgpOworICAgICB2b2lkIGlvR2V0RnJvbUZpbGVf ZGF0YSgpOworICAgICB2b2lkIGlvR2V0RnJvbUZpbGUoKTsKKysgICAgdm9pZCBpb0dldEZyb21G aWxlVXJsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwX2RhdGEoKTsKKyAgICAgdm9pZCBpb0dl dEZyb21GdHAoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GdHBXaXRoUmV1c2UoKTsKK0BAIC0zMzAw LDYgKzMzMDEsMTggQEAgdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRmlsZSgpCisg ICAgIFFDT01QQVJFKHJlYWRlci5kYXRhLCBkYXRhKTsKKyB9CisgCisrdm9pZCB0c3RfUU5ldHdv cmtSZXBseTo6aW9HZXRGcm9tRmlsZVVybCgpCisreworKyAgICAvLyBUaGlzIGltbWVkaWF0ZWx5 IGZhaWxzIG9uIG5vbi13aW5kb3dzIHBsYXRmb3JtczoKKysgICAgUU5ldHdvcmtSZXF1ZXN0IHJl cXVlc3QoUVVybCgiZmlsZTovL3VuYy1zZXJ2ZXIvc29tZS9wYXRoIikpOworKyAgICBRTmV0d29y a1JlcGx5UHRyIHJlcGx5KG1hbmFnZXIuZ2V0KHJlcXVlc3QpKTsKKysgICAgUVNpZ25hbFNweSBm aW5pc2hlZFNweShyZXBseS5nZXQoKSwgJlFOZXR3b3JrUmVwbHk6OmZpbmlzaGVkKTsKKysgICAg Ly8gUVRCVUctMTA1NjE4OiBUaGlzIHdvdWxkLCBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMsIG5l dmVyIGhhcHBlbiBiZWNhdXNlIHRoZSBzaWduYWwKKysgICAgLy8gd2FzIGVtaXR0ZWQgYmVmb3Jl IHRoZSBjb25zdHJ1Y3RvciBmaW5pc2hlZCwgbGVhdmluZyBubyBjaGFuY2UgYXQgYWxsIHRvIGNv bm5lY3QgdG8gdGhlCisrICAgIC8vIHNpZ25hbAorKyAgICBRVkVSSUZZKGZpbmlzaGVkU3B5Lndh aXQoKSk7CisrfQorKworIHZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZ0cF9kYXRh KCkKKyB7CisgICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oImZpbGVOYW1lIik7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9m bHVrZS5jZXJ0IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0 cy9mbHVrZS5jZXJ0CitpbmRleCAwNjlmYTZiMzQxLi40Y2M0ZDlhNWVhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0 CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2Zs dWtlLmNlcnQKK0BAIC0xLDc1ICsxLDM0IEBACistQ2VydGlmaWNhdGU6CistICAgIERhdGE6Cist ICAgICAgICBWZXJzaW9uOiAzICgweDIpCistICAgICAgICBTZXJpYWwgTnVtYmVyOiAwICgweDAp CistICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKy0g ICAgICAgIElzc3VlcjogQz1OTywgU1Q9T3NsbywgTD1OeWRhbGVuLCBPPU5va2lhIENvcnBvcmF0 aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSwgT1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtl LnRyb2xsLm5vL2VtYWlsQWRkcmVzcz1haGFuc3NlbkB0cm9sbHRlY2guY29tCistICAgICAgICBW YWxpZGl0eQorLSAgICAgICAgICAgIE5vdCBCZWZvcmU6IERlYyAgNCAwMToxMDozMiAyMDA3IEdN VAorLSAgICAgICAgICAgIE5vdCBBZnRlciA6IEFwciAyMSAwMToxMDozMiAyMDM1IEdNVAorLSAg ICAgICAgU3ViamVjdDogQz1OTywgU1Q9T3NsbywgTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig aXRzIHN1YnNpZGlhcnkoLWllcyksIE9VPURldmVsb3BtZW50LCBDTj1mbHVrZS50cm9sbC5ubwor LSAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CistICAgICAgICAgICAgUHVibGljIEtl eSBBbGdvcml0aG06IHJzYUVuY3J5cHRpb24KKy0gICAgICAgICAgICBSU0EgUHVibGljIEtleTog KDEwMjQgYml0KQorLSAgICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6CistICAgICAg ICAgICAgICAgICAgICAwMDphNzpjODphMDo0YTpjNDoxOTowNToxYjo2NjpiYTozMjplMjpkMjpm MToKKy0gICAgICAgICAgICAgICAgICAgIDFjOjZmOjE3OjgyOmU0OjM5OjJlOjAxOjUxOjkwOmRi OjA0OjM0OjMyOjExOgorLSAgICAgICAgICAgICAgICAgICAgMjE6YzI6MGQ6NmY6NTk6ZDg6NTM6 OTA6NTQ6M2Y6ODM6OGY6YTk6ZDM6YjM6CistICAgICAgICAgICAgICAgICAgICBkNTplZToxYTo5 Yjo4MDphZTpjMzoyNTpjOTo1ZTphNTphZjo0Yjo2MDowNToKKy0gICAgICAgICAgICAgICAgICAg IGFhOmEwOmQxOjkxOjAxOjFmOmNhOjA0OjgzOmUzOjU4OjFjOjk5OjMyOjQ1OgorLSAgICAgICAg ICAgICAgICAgICAgODQ6NzA6NzI6NTg6MDM6OTg6NGE6NjM6OGI6NDE6ZjU6MDg6NDk6ZDI6OTE6 CistICAgICAgICAgICAgICAgICAgICAwMjo2MDo2YjplNDo2NDpmZTpkZDphMDphYTo3NDowODpl OTozNDo0Yzo5MToKKy0gICAgICAgICAgICAgICAgICAgIDVmOjEyOjNkOjM3OjRkOjU0OjJjOmFk OjdmOjViOjk4OjYwOjM2OjAyOjhjOgorLSAgICAgICAgICAgICAgICAgICAgM2I6ZjY6NDU6ZjM6 Mjc6NmE6OWI6OTQ6OWQKKy0gICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAx KQorLSAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6CistICAgICAgICAgICAgWDUwOXYzIEJhc2lj IENvbnN0cmFpbnRzOiAKKy0gICAgICAgICAgICAgICAgQ0E6RkFMU0UKKy0gICAgICAgICAgICBO ZXRzY2FwZSBDb21tZW50OiAKKy0gICAgICAgICAgICAgICAgT3BlblNTTCBHZW5lcmF0ZWQgQ2Vy dGlmaWNhdGUKKy0gICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCist ICAgICAgICAgICAgICAgIDIxOjg1OjA0OjNEOjIzOjAxOjY2OkU1OkY3OjlGOjFBOjg0OjI0OjhB OkFGOjBBOjc5OkY0OkU1OkFDCistICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRl bnRpZmllcjogCistICAgICAgICAgICAgICAgIERpck5hbWU6L0M9Tk8vU1Q9T3Nsby9MPU55ZGFs ZW4vTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykvT1U9RGV2 ZWxvcG1lbnQvQ049Zmx1a2UudHJvbGwubm8vZW1haWxBZGRyZXNzPWFoYW5zc2VuQHRyb2xsdGVj aC5jb20KKy0gICAgICAgICAgICAgICAgc2VyaWFsOjhFOkE4OkI0OkU4OjkxOkI3OjU0OjJFCist CistICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorLSAgICAg ICAgNmQ6NTc6NWY6ZDE6MDU6NDM6ZjA6NjI6MDU6ZWM6MmE6NzE6YTU6ZGM6MTk6MDg6ZjI6YzQ6 CistICAgICAgICBhNjpiZDpiYjoyNTpkOTpjYTo4OTowMTowZTplNDpjZjoxZjpjMTo4YzpjODoy NDoxODozNToKKy0gICAgICAgIDUzOjU5OjdiOmMwOjQzOmI0OjMyOmU2Ojk4OmIyOmE2OmVmOjE1 OjA1OjBiOjQ4OjVmOmUxOgorLSAgICAgICAgYTA6MGM6OTc6YTk6YTE6Nzc6ZDg6MzU6MTg6MzA6 YmM6YTk6OGY6ZDM6Yjc6NTQ6Yzc6ZjE6CistICAgICAgICBhOTo5ZTo1ZDplNjoxOTpiZjpmNjoz Yzo1YjoyYjpkODplNDozZTo2MjoxODo4ODo4YjpkMzoKKy0gICAgICAgIDI0OmUxOjQwOjliOjBj OmU2OjI5OjE2OjYyOmFiOmVhOjA1OjI0OjcwOjM2OmFhOjU1OjkzOgorLSAgICAgICAgZWY6MDI6 ODE6MWI6MjM6MTA6YTI6MDQ6ZWI6NTY6OTU6NzU6ZmM6Zjg6OTQ6YjE6NWQ6NDI6CistICAgICAg ICBjNTozZjozNjo0NDo4NTo1ZDozYToyZTo5MDo0Njo4YTphMjpiOTo2Zjo4NzphZTowYzoxNToK Ky0gICAgICAgIDQwOjE5OjMxOjkwOmZjOjNiOjI1OmJiOmFlOmYxOjY2OjEzOjBkOjg1OjkwOmQ5 OjQ5OjM0OgorLSAgICAgICAgOGY6ZjI6NWQ6Zjk6N2E6ZGI6NGQ6NWQ6Mjc6ZjY6NzY6OWQ6MzU6 OGM6MDY6YTY6NGM6YTM6CistICAgICAgICBiMTpiMjpiNjo2ZjoxZDpkNzphMzowMDpmZDo3Mjpl Yjo5ZTplYTo0NDphMTphZjoyMTozNDoKKy0gICAgICAgIDdkOmM3OjQyOmUyOjQ5OjkxOjE5Ojhi OmMwOmFkOmJhOjgyOjgwOmE4OjcxOjcwOmY0OjM1OgorLSAgICAgICAgMzE6OTE6NjM6ODQ6MjA6 OTU6ZTk6NjA6YWY6NjQ6OGI6Y2M6ZmY6M2Q6OGE6NzY6NzQ6M2Q6CistICAgICAgICBjODo1NTo2 ZDplNDo4ZTpjMzoyYjoxYzplODo0MjoxODphZTo5ZjplNjo2Yjo5YzozNDowNjoKKy0gICAgICAg IGVjOjZhOmYyOmMzCisgLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCistTUlJRUV6Q0NBdnVn QXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQ0JuREVMTUFrR0ExVUVCaE1DVGs4eAorLURU QUxCZ05WQkFnVEJFOXpiRzh4RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZCQW9URFZS eWIyeHMKKy1kR1ZqYUNCQlUwRXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJjd0ZRWURW UVFERXc1bWJIVnJaUzUwCistY205c2JDNXViekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZV2hoYm5O elpXNUFkSEp2Ykd4MFpXTm9MbU52YlRBZQorLUZ3MHdOekV5TURRd01URXdNekphRncwek5UQTBN akV3TVRFd016SmFNR014Q3pBSkJnTlZCQVlUQWs1UE1RMHcKKy1Dd1lEVlFRSUV3UlBjMnh2TVJZ d0ZBWURWUVFLRXcxVWNtOXNiSFJsWTJnZ1FWTkJNUlF3RWdZRFZRUUxFd3RFCistWlhabGJHOXdi V1Z1ZERFWE1CVUdBMVVFQXhNT1pteDFhMlV1ZEhKdmJHd3VibTh3Z1o4d0RRWUpLb1pJaHZjTgor LUFRRUJCUUFEZ1kwQU1JR0pBb0dCQUtmSW9FckVHUVViWnJveTR0THhIRzhYZ3VRNUxnRlJrTnNF TkRJUkljSU4KKy1iMW5ZVTVCVVA0T1BxZE96MWU0YW00Q3V3eVhKWHFXdlMyQUZxcURSa1FFZnln U0Q0MWdjbVRKRmhIQnlXQU9ZCistU21PTFFmVUlTZEtSQW1CcjVHVCszYUNxZEFqcE5FeVJYeEk5 TjAxVUxLMS9XNWhnTmdLTU8vWkY4eWRxbTVTZAorLUFnTUJBQUdqZ2dFYU1JSUJGakFKQmdOVkhS TUVBakFBTUN3R0NXQ0dTQUdHK0VJQkRRUWZGaDFQY0dWdVUxTk0KKy1JRWRsYm1WeVlYUmxaQ0JE WlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVUlZVUVQU01CWnVYM254cUVKSXF2CistQ25uMDVh d3dnYnNHQTFVZEl3U0JzekNCc0tHQm9xU0JuekNCbkRFTE1Ba0dBMVVFQmhNQ1RrOHhEVEFMQmdO VgorLUJBZ1RCRTl6Ykc4eEVEQU9CZ05WQkFjVEIwNTVaR0ZzWlc0eEZqQVVCZ05WQkFvVERWUnli MnhzZEdWamFDQkIKKy1VMEV4RkRBU0JnTlZCQXNUQzBSbGRtVnNiM0J0Wlc1ME1SY3dGUVlEVlFR REV3NW1iSFZyWlM1MGNtOXNiQzV1CistYnpFbE1DTUdDU3FHU0liM0RRRUpBUllXWVdoaGJuTnpa VzVBZEhKdmJHeDBaV05vTG1OdmJZSUpBSTZvdE9pUgorLXQxUXVNQTBHQ1NxR1NJYjNEUUVCQlFV QUE0SUJBUUJ0VjEvUkJVUHdZZ1hzS25HbDNCa0k4c1NtdmJzbDJjcUoKKy1BUTdrengvQmpNZ2tH RFZUV1h2QVE3UXk1cGl5cHU4VkJRdElYK0dnREplcG9YZllOUmd3dkttUDA3ZFV4L0dwCistbmwz bUdiLzJQRnNyMk9RK1loaUlpOU1rNFVDYkRPWXBGbUtyNmdVa2NEYXFWWlB2QW9FYkl4Q2lCT3RX bFhYOAorLStKU3hYVUxGUHpaRWhWMDZMcEJHaXFLNWI0ZXVEQlZBR1RHUS9Ec2x1Njd4WmhNTmha RFpTVFNQOGwzNWV0dE4KKy1YU2YyZHAwMWpBYW1US094c3JadkhkZWpBUDF5NjU3cVJLR3ZJVFI5 eDBMaVNaRVppOEN0dW9LQXFIRnc5RFV4Cista1dPRUlKWHBZSzlraTh6L1BZcDJkRDNJVlcza2pz TXJIT2hDR0s2ZjVtdWNOQWJzYXZMRAorK01JSUY2ekNDQTlPZ0F3SUJBZ0lVZm85YW1KdEpHV3FX RTZmK1NrQU84NXprR3I0d0RRWUpLb1pJaHZjTkFRRUwKKytCUUF3Z1lNeEN6QUpCZ05WQkFZVEFr NVBNUTB3Q3dZRFZRUUlEQVJQYzJ4dk1RMHdDd1lEVlFRSERBUlBjMnh2CisrTVJjd0ZRWURWUVFL REE1VWFHVWdVWFFnUTI5dGNHRnVlVEVNTUFvR0ExVUVDd3dEVWlaRU1SSXdFQVlEVlFRRAorK0RB bElNaUJVWlhOMFpYSXhHekFaQmdrcWhraUc5dzBCQ1FFV0RHMXBibWx0YVVCeGRDNXBiekFnRncw eU1ERXcKKytNall4TWpBeE16RmFHQTh5TVRJd01UQXdNakV5TURFek1Wb3dnWU14Q3pBSkJnTlZC QVlUQWs1UE1RMHdDd1lECisrVlFRSURBUlBjMnh2TVEwd0N3WURWUVFIREFSUGMyeHZNUmN3RlFZ RFZRUUtEQTVVYUdVZ1VYUWdRMjl0Y0dGdQorK2VURU1NQW9HQTFVRUN3d0RVaVpFTVJJd0VBWURW UVFEREFsSU1pQlVaWE4wWlhJeEd6QVpCZ2txaGtpRzl3MEIKKytDUUVXREcxcGJtbHRhVUJ4ZEM1 cGJ6Q0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCCisrQU9pVXA1K0U0 YmxvdUtIN3ErclZOUjhOb1lYMlhrQlcrcStycHkxenU1c3NSU3picXhBakR4OWRraHQ3UWxuZgor K1ZsRFQwMEp2cE9XZGV1UG9uNTkxNWVkUVJzWTRVbmw2bUtIMjlyYTNPdFVhMS95Q0pYc0dWSlRL Q2o3azRCeGIKKys1bVp6Yi9mVGxabnRNTGRUSUJNZlVidzYyRktpcjFXaktJY0o5ZkNvRzhKYUdl S1ZPNFJoNXAwZXpkNFVVVUlkCisrcjFCWGw1TnFkcXkydlRNc0VEbmpPc0QzZWdrdjhJMlNLTjRP Nm4vQzN3V1lwTU9XWVprR29aaUt6N3JKcy9pLworK2V6N2JzVjdKbHdkelRsaHBKemtjT1NWRkJQ NkpsRU94VE5OeFoxd3RLeTdQdFpHbXNTU0FUcTJlNitidzM4QWUKKytPcDBYbnp6cWNHanRERG9m Qm1UN09GelpXalM5VlpTNitET09lMlFIV2xlMW5DSGNIeUg0a3U2SVJsc3I5eGtSCisrTkFJbE9m bnZISHhxSlVlbm9lYVo0b1FEakNCS1MxS1h5Z0pPL3RMN0JMVFFWbi94SzFFbVB2S05uanpXazR0 UgorK1BuaWJVaGhzNTYzNXFwT1UvWVBxRkJoMUpqVnJ1WmJzV2NEQWhSY2V3MHV4T05YT2E5RSs0 bHR0UTl5U1lhMUEKKytMdldxSnVBWDdndTJCc0JNTHlxZm04MTFZbkE3Q0lGTXlPK0hscW1rTEZm djVML3hJUkFYUjdsMjZZR08wVndYCisrQ0dqTWZ6NE5WUE1Na2U0bkI3cWE5TmtwWFFCUUtNbXMz UXpkNUpXMEh5OVJ1ajVPOEdQY0ZabVYwdHdqZDF1SgorK1BEL2NBamtXTGFYamROc0oxNlFXYzJu Z2hRUlM2SFlxS1JYNmorQ1hPeHVwQWdNQkFBR2pVekJSTUIwR0ExVWQKKytEZ1FXQkJSU0NPVTU4 ajlOSlprTWFtdDYyM3F5Q3JoTjNUQWZCZ05WSFNNRUdEQVdnQlJTQ09VNThqOU5KWmtNCisrYW10 NjIzcXlDcmhOM1RBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElD QVFDcQorK3E0anhzV2VORHY1TnExNGhKdEY5SEIrWkw2NHpjWnRSakpQMVlnTnMwUXBwS0lDbWpQ T0wybklNR21JL2pLcnMKKyswZUdBTC85WFhOVkhQeG0xT1BPbmN2aW1NTW1VNmVtWmZwTWRFdFRm S1A0MytQZzlIZ0tSakxvUXA0MDZ2R2VRCisrOGtpL21iQmhySXRWUGdFbTN0dTJBRkEwMlhUWWkr WXhDSTlrUlpMR2tNM0ZiZ3RPdVRMUGwwWjl5K2tpUGM5RgorK3VDU0MwM2FuQkVxdit2RFNJOCt3 T0R5bVEvSUozSnl6MWx4SVJEZnA0cUFla215MGpVMmM5MVZPSEhFbU9tcXEKKytrcXlnR0ZSZHdi ZTk5bTl5UDYzcjZxMGI1SzNYMlVuSjZibnMwaG1Ud1RoWXdwVlBYTFU4amRhVGRkYk11a04yCisr L0VmOTZUc3c4bldPRU9QTXlTSE9USVBnd3laUnAyNmIwa0E5RW1oTHdPUDQwMVN4WFZRQ21TUm10 d05hZ210ZworK2pKS21ab1lCTisvL0Q0NWliSzh6NlEwb09tOVArV2hmL3VVWGVoY1J4Qnh5VjN4 ejdrMHdLR1FiSGovZGR3Y3kKKytJVW9JTjRsckFsaWIrbEsxNzBrVEtOMzUyUERtcnBvMmdtSXpQ RXNmdXJLQUlNU2VsRGw2SCtraWgxNkJ0Wjh5CisrTno2Zmg5U29xcmczT1NBd2FyZThweFY3azUx Y3JCTW9QTE43OEtvUlY4TUZDSzRLN0ZkZHE0clJJU3E2aGlYcQorK3IxbnNqb0VQdUtNOWh1cHJt WlZaZTl0NVljRGEySSt3YjNJaUUzdXdwWmJBZGFMRHlRNW42Ri9xcHNpSWtaWG4KKytndGNGN29x cEc1b1lyd0NjWjUzeS9lelVnVWc3UGxTejJYd0FHdlF0Z2c9PQorIC0tLS0tRU5EIENFUlRJRklD QVRFLS0tLS0KK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Ns c29ja2V0L2NlcnRzL2ZsdWtlLmtleSBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fz c2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CitpbmRleCA5ZDE2NjRkNjA5Li4zMzdjZTU0MWE2IDEw MDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0 cy9mbHVrZS5rZXkKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2Nr ZXQvY2VydHMvZmx1a2Uua2V5CitAQCAtMSwxNSArMSw1MiBAQAorLS0tLS0tQkVHSU4gUlNBIFBS SVZBVEUgS0VZLS0tLS0KKy1NSUlDWEFJQkFBS0JnUUNueUtCS3hCa0ZHMmE2TXVMUzhSeHZGNExr T1M0QlVaRGJCRFF5RVNIQ0RXOVoyRk9RCistVkQrRGo2blRzOVh1R3B1QXJzTWx5VjZscjB0Z0Jh cWcwWkVCSDhvRWcrTllISmt5UllSd2NsZ0RtRXBqaTBIMQorLUNFblNrUUpnYStSay90MmdxblFJ NlRSTWtWOFNQVGROVkN5dGYxdVlZRFlDakR2MlJmTW5hcHVVblFJREFRQUIKKy1Bb0dBTkZ6TGth blRlU0dORk0wdXR0QmlwRlQ5RjRhMDBkcUh6NkpuTzd6WEFUMjZJNXI4c1UxcHFRQmI2dUx6Cist LytRejVad2s4UlVBUWNzTVJnSmV0dVBRVWIwSlpqRjZEdXYyNGhOYXpxWEJDdTdBWnpVZW5qYWZ3 bUtDLzhyaQorLUtwWDNmVHdxemZ6aS8vRktHZ2JYUTgweXlrU1NsaURMM2tuL2RyQVR4c0xDZ1FF Q1FRRFhoRUZXTEowdlZaMXMKKy0xRWtmKzNOSVRFK0RSMTZYK0xRNFc2dnlFSEFqVGJhTld0Y1RL ZEFXTEEybDZONFdBQVBZU2k2YXdtK3pNeHg0CistVm9tVlRzamRBa0VBeDB6K2U3bmF0TGVGY3Jy cThwYlUrd2E2U0FQMVZmaFFXS2l0eEwxZTd1L1FPOTBOQ3B4RQorLW9RWUt6TWttbXBPT0ZqUXdF TUF5MWR2Rk1ibTRMSGxld1FKQUMva3NEQmFVY1FISHFqa3RDdHJVYjhyVmpBeVcKKy1BOGxzY2Nr ZUIyZkVZeUc1SjZkSlZhWTRDbE5PT3M1eU1EUzJBZmsxRjZIL3hLdnRRLzVDekluQS9RSkFURHVi CistSytCUFU4ak85cStncHVJaTNWSVpkdXBzc1ZHbUNnT2JWQ0hMYWtHNHVPMDR5OUl5UGhWOWxB OXRBTHRvSWY0YworLVZJdnY1ZldHWEJyWjQ4a1pBUUpCQUptVkNkelF4ZDlMWkk1dnhpalVDajVF STRlK3g1RFJxVlV2eVA4S0NackMKKy1BaU55b0RQODVUK2hCWmFTWEszYVlHcFZ3ZWx5ajNidm8x R3JUTndOV0x3PQorLS0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCisrLS0tLS1CRUdJTiBQ UklWQVRFIEtFWS0tLS0tCisrTUlJSlFnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NDU3d3Z2dr b0FnRUFBb0lDQVFEb2xLZWZoT0c1YUxpaAorKys2dnExVFVmRGFHRjlsNUFWdnF2cTZjdGM3dWJM RVVzMjZzUUl3OGZYWkliZTBKWjMxWlEwOU5DYjZUbG5YcmoKKys2SitmZGVYblVFYkdPRko1ZXBp aDl2YTJ0enJWR3RmOGdpVjdCbFNVeWdvKzVPQWNXK1ptYzIvMzA1V1o3VEMzCisrVXlBVEgxRzhP dGhTb3E5Vm95aUhDZlh3cUJ2Q1dobmlsVHVFWWVhZEhzM2VGRkZDSGE5UVY1ZVRhbmFzdHIwegor K0xCQTU0enJBOTNvSkwvQ05raWplRHVwL3d0OEZtS1REbG1HWkJxR1lpcys2eWJQNHYzcysyN0Zl eVpjSGMwNVkKKythU2M1SERrbFJRVCtpWlJEc1V6VGNXZGNMU3N1ejdXUnByRWtnRTZ0bnV2bThO L0FIanFkRjU4ODZuQm83UXc2CisrSHdaayt6aGMyVm8wdlZXVXV2Z3pqbnRrQjFwWHRad2gzQjho K0pMdWlFWmJLL2NaRVRRQ0pUbjU3eHg4YWlWSAorK3A2SG1tZUtFQTR3Z1NrdFNsOG9DVHY3Uyt3 UzAwRlovOFN0UkpqN3lqWjQ4MXBPTFVUNTRtMUlZYk9ldCthcVQKKytsUDJENmhRWWRTWTFhN21X N0ZuQXdJVVhIc05Mc1RqVnptdlJQdUpiYlVQY2ttR3RRQzcxcWliZ0YrNEx0Z2JBCisrVEM4cW41 dk5kV0p3T3dpQlRNanZoNWFwcEN4WDcrUy84U0VRRjBlNWR1bUJqdEZjRndob3pIOCtEVlR6REpI dQorK0p3ZTZtdlRaS1YwQVVDakpyTjBNM2VTVnRCOHZVYm8rVHZCajNCV1psZExjSTNkYmlUdy8z QUk1RmkybDQzVGIKKytDZGVrRm5OcDRJVUVVdWgyS2lrVitvL2dsenNicVFJREFRQUJBb0lDQUZ3 MXE2dHI1STQ4dlk3REYrclhzdUxuCisrNVpVV0UxSVE2ZnpCNGxyNzJuSnYvOUVFR25NZ1l6dDlQ cE1Vc0Q2dmRDcEJnUzJDMCs2UkhBckZ6SnROQStSTQorK2lITElHN0s3NzAydmV5ci94QngvTXdp U2xNZU12L1hwa0Z4Vkk2RTZza01HRzJzM0FNWHhLdkpUeTVDcFJ4K0kKKytlUUZ5TEcrWWExWDJs Z0plcy9xKy9DcEFIa09qQ09wY0x5U1FDNU5aNzRxNzM0VjduU2RtbitaczN0WUVoK08vCisrZWl1 d1RQL2o1YjM4VGU1dlZUcUR4VGNpSlBtbGptWExDd2EwTjEwMGxXbGJjcHZ3OHFicWlUSTJKbTNY Q2JVRQorK0F6SGpXOXZtckYzY1JTMWZYeEtGR1NodzNTUnFsa2J4amZlV29pOHFEUFVCUzRtOExP cjhxRzlXbzVOZm9uMHoKKyt6TFA0YmNpM3pIRHZWY2FhWnJyc1VCcy95WmJnK0Rna2ExRG1YN2Vr bWVjY3IyeVRkS0RGZ1B1cFlVeXhWYlRsCisrYTlaTEp5c2pGRDdyZ0J2MVpjbEhvbkxwNlZibSta b1RxdnRlbzRpa0F5Nkw5UnRCV0oyM1hFSzM0UGtQLytjNQorKzJ2V1phT3JualNlQkhiRmNlOGNk SlN4cVdwUCtlU0NJNUk5WGJEcllGSXNRL2dxS2d0ekRLeTJpaEoyWThTVEwKKyt5TzRoeUZQRmp4 YytHZzQvUDJQcG1UNUNZMnR5NDRNMEJXcytKR1c5NkNKUHJycGxmMmxtUVVRSmo1TFpZNjZYCisr Wi80QzlMN1pZdEtaK2JzNVN2VTQ2eVd1Z0F2UVpYMjJYbTl4TFhXeVZYUmR4M2JqKzNNM2ZEbkY5 ZGkvemRiaAorK0NnTHg3b1dQTnJYYzdGQ2Fqbm45QW9JQkFRRDVGTVl3UnB3OU5XVDlXRHhRd3gr Y1NJNEljYmQ4OEJ5VFc2M1MKKytMemVSd1pBMEo5L1Nmd08rYUJSdXB6YzlHa0dYQ2laY0dNdzNB R3NDdGlnOHlGbHc4RTVLbnpON0tsZnRETW5NCisrOU5VeHh6bFI4VndLeUxuWmZHN3NEVGwwNTda bFV1am5xaG10L0Y4RjdkSXk3RlZPMWRFLzhubmdBK0ZZVENPRworK1VaZEdqd3lCRGxETTBKSmRV V0dZM3hzbHV0Y3BDRE41bXpTVEtqeTlkck12SW1Bc2hSYXd4UkY2V0Jwbjd2cjIKKytuQzZ2Y2lx ZngxTXp4MXZ5azBKbTBpbGF5ZERkTE1BRGp0L2lMNE5rcjBCRXM0aytVelFpS0R3cDhndTdhYlEx CisrZUJmeGQ5SWFyNGh0UWEySTFFd2w2UDAxRy9xK1pZd2dIaEo5UlZuNEF4UVhlZklMQW9JQkFR RHZDb3VPUmRRWAorK0M4d3N5cDdNd1hsRi8zTlFlTk41LytCMm1oYnhyQk9mN1BtTUNYTG5rUldj andKdHp5cFdGcUowc3FhaS8yKzAKKyticWJNY2pYNW1hVDhzdFQyc2hsM3pYZS9FanQyZTNUQllw YzF0eXVzZXM4S2I1Qk1VOGh1NnRUZDNHMkNNWHBECisrZFQ2RFZlbUpaQ1R0d2o5YUJOSXhTaXp2 bGdNb2xKbkNwemhQbmxmSFNJNkUrZzNtL0xUVG8zSHdiak1Tdy9VcQorK2lyZ2pPcEkyd1NCQjZM WlBTZ2p2ZmNZUFJ5V1VrMTZMNEE1dVNYMGNBRG5vdkRGTGE1L2gwd0p2Ti9Pb0NTUWcKKytyTENY RzVFMThFeUw1V2M1OEJDWTFadnhtakczbFF0Z1B4WXUySndjMzZSL3kvSktseFc1c3VFUjVaTnBi YkQ0CisrdU95VHQyVnhNUTJiQW9JQkFRQzUrTXpSRnFkby9BamZMNVk1SnJiZlZUelhDVERhMDl4 Q0dkMTZaVTYwUVRXTgorKys0ZWQvcitvMXNVS3FVY1JGQjJNekVNLzJEUUJqUXBaQi9DYkVXdldh MVhKV1h4eXBYYm93dmVaVStRcU9ubU4KKyt1UXZqOFdMeUEzbytQTkY5ZTlRdmF1d0NySHBuOFZw eGJ0UFd1YVlvS25VRnJlRlpaUXhIaFBHeFJCSVMySk9aCisrZURyVDhaYVdua0NraDFBWnA1c21R NzFMT3ByU2xtS3JnNGpkMUdqQ1ZNeFFSNU41S1hidHl2ME9UQ1ovVUZxSworKzJhUkJzTVB5Smdr YUJDaGtaUExSY0t3Yysvd2xRUngxZkhRYjE0RE5UQXBNeG9YRk83ZU93cW1Pa3BBdDlpeWwKKytT Qkl3b1MwVVVJNWFiODgrYkJtWE52S2N1RmROdVE0bm93VEpVbjlwQW9JQkFETU5rSUxCWFN2UzVE ZUl5dU8yCisrU3AxdGtvWlVWKzVOZlBZM3NNREszS0lpYmFXLyt0K0VPQlpvNEw3dEtRQ2I4dlJ6 bDIxbW1zZnhmZ1JhUERiagorKzNyM3R2OWcwYjRZTHh4Qnk1MnBGc2NqL3NvWFJhaTE3U1M3VVp3 QTJRSytYemdEWWJEY0xOQzZtSXNUUUc0R3gKKytkc1drMy96czNLdVVTUWFlaG13cldLK2ZJVUsz OGMxcExLOHY3TG94ckxrcXhsSHdaMDRSdGhIdzhLVHRoSDdYCisrUG5sMUowTEY4Q1NlT3lmV0xT dVBVZmtUMEdFenB0bk5IcEViYUhmUU02UjZlYUdoVkpQRjZBWm1lNHk2WVlnZworK20yaWhoU3Qx bjBYVkVXcEhZV2p4RnkzbUsybXo3NXVuRkM0TE0rTkVZMnAyenVVUW9DdzdOam5ZM1FZcmZDbngK KytyUk1DZ2dFQVhlWHNNU0xGamp5dW9MN2lLYkF4bzUySEQvUDBmQm95NThMeVJjd2ZOVnIwbHZZ YW40cFlFeCtvCisrS2lqSWg5SzE2UHFYWlhLTUE5djAwM0IrdWxtRjhiSjdTZGRDWjVOR3ZuRmhV VERlNERkVEtncDJSdXdRM0JzYworKzNza1BJRGJoVkVUeU9MQ3R5czM0VVNIcnE4VS8wRGxHWTNl TFJmeHc5R25iS3hTQkdhL0tFdS9xUUxQTlVvNTAKKys3eEhaRGc3R0tlQzNrcU5KZXFLTTlya3Aw VnpJR2tFbmFEOTEyN0xlTkRtRVJEZmZ0eEp6Rm9DL1RIdlVCTGZVCisrNlN1czJaWXdSRThWRnZL QzMwUTQ1dC9jNTRYM0l1aFl2QXVpQ3VUbXlmRTRydXl6eU93S3poVWtlZUxxMUFQWAorK2cwdmVG YnlmemxKMHE4cXpEL2lmZnFxSWEyWlNtUT09CisrLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgv dHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFj Y2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAKK2luZGV4IDdiYTM3 MTVlMTMuLjc1MmFhMTIyZjYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9x YWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxp dHlsaW51eC5jcHAKK0BAIC0xNzksNiArMTc5LDcgQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlM aW51eDo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklGWSghYWRkcmVzcy5pc0VtcHR5KCkpOwor IAorICAgICBtX3dpbmRvdyA9IG5ldyBBY2Nlc3NpYmxlVGVzdFdpbmRvdygpOworKyAgICBtX3dp bmRvdy0+c2V0T2JqZWN0TmFtZSgibWFpbldpbmRvdyJfTDEpOworICAgICBtX3dpbmRvdy0+c2hv dygpOworIAorICAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQobV93aW5k b3cpKTsKK0BAIC0yMzYsOCArMjM3LDExIEBAIGJvb2wgaGFzU3RhdGUoUURCdXNJbnRlcmZhY2Ug KmludGVyZmFjZSwgQXRzcGlTdGF0ZVR5cGUgc3RhdGUpCisgdm9pZCB0c3RfUUFjY2Vzc2liaWxp dHlMaW51eDo6dGVzdExhYmVsKCkKKyB7CisgICAgIFFMYWJlbCAqbCA9IG5ldyBRTGFiZWwobV93 aW5kb3cpOworKyAgICBsLT5zZXRPYmplY3ROYW1lKCJ0aGVPYmplY3ROYW1lIl9MMSk7CisgICAg IGwtPnNldFRleHQoIkhlbGxvIEExMXkiKTsKKyAgICAgbV93aW5kb3ctPmFkZFdpZGdldChsKTsK KysgICAgYXV0byBhMTF5RW1wdHkgPSBuZXcgUUxhYmVsKG1fd2luZG93KTsKKysgICAgbV93aW5k b3ctPmFkZFdpZGdldChsKTsKKyAKKyAgICAgLy8gQXBwbGljYXRpb24KKyAgICAgUUNPTVBBUkUo Z2V0UGFyZW50KG1haW5XaW5kb3cpLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfUEFUSF9ST09U KSk7CitAQCAtMjQ5LDYgKzI1Myw4IEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRl c3RMYWJlbCgpCisgICAgIFFDT01QQVJFKGdldENoaWxkcmVuKGxhYmVsSW50ZXJmYWNlKS5jb3Vu dCgpLCAwKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2Nr LCAiR2V0Um9sZU5hbWUiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksIFFMYXRpbjFT dHJpbmcoImxhYmVsIikpOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1 czo6QmxvY2ssICJHZXRSb2xlIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1VJbnQoKSwgMjl1KTsK KysgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0QWNj ZXNzaWJsZUlkIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLAorKyAgICAgICAgICAg ICBRTGF0aW4xU3RyaW5nKCJtYWluV2luZG93LnRoZU9iamVjdE5hbWUiKSk7CisgICAgIFFDT01Q QVJFKGdldFBhcmVudChsYWJlbEludGVyZmFjZSksIG1haW5XaW5kb3ctPnBhdGgoKSk7CisgICAg IFFWRVJJRlkoIWhhc1N0YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9TVEFURV9FRElUQUJMRSkp OworICAgICBRVkVSSUZZKGhhc1N0YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9TVEFURV9SRUFE X09OTFkpKTsKK0BAIC0yNTYsNyArMjYyLDEyIEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGlu dXg6OnRlc3RMYWJlbCgpCisgICAgIGwtPnNldFRleHQoIk5ldyB0ZXh0Iik7CisgICAgIFFDT01Q QVJFKGxhYmVsSW50ZXJmYWNlLT5wcm9wZXJ0eSgiTmFtZSIpLnRvU3RyaW5nKCksIGwtPnRleHQo KSk7CisgCisrICAgIGF1dG8gKmExMXlFbXB0eUludGVyZmFjZSA9IGdldEludGVyZmFjZShjaGls ZHJlbi5hdCgxKSwgIm9yZy5hMTF5LmF0c3BpLkFjY2Vzc2libGUiKTsKKysgICAgUUNPTVBBUkUo YTExeUVtcHR5SW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldEFjY2Vzc2libGVJZCIp LmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwKKysgICAgICAgICAgICAgUUxhdGluMVN0 cmluZygibWFpbldpbmRvdy5RTGFiZWwiKSk7CisrCisgICAgIG1fd2luZG93LT5jbGVhckNoaWxk cmVuKCk7CisrICAgIGRlbGV0ZSBhMTF5RW1wdHlJbnRlcmZhY2U7CisgICAgIGRlbGV0ZSBsYWJl bEludGVyZmFjZTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tl cm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9zcWwv a2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAoraW5kZXggNzZkZjYxYzg5Mi4uNmQ2 ZDY1Yjc5MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1 ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVs L3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBM dGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC02OCw2ICs2OCw4 IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcXVlcnlfZXhlYygpOworICAgICB2b2lkIGV4 ZWNFcnJvclJlY292ZXJ5X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAgIHZvaWQgZXhl Y0Vycm9yUmVjb3ZlcnkoKTsKKysgICAgdm9pZCBwcmVtYXR1cmVFeGVjX2RhdGEoKSB7IGdlbmVy aWNfZGF0YSgpOyB9CisrICAgIHZvaWQgcHJlbWF0dXJlRXhlYygpOworICAgICB2b2lkIGZpcnN0 X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAgIHZvaWQgZmlyc3QoKTsKKyAgICAgdm9p ZCBuZXh0X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CitAQCAtMjc3MCw2ICsyNzcyLDM1IEBA IHZvaWQgdHN0X1FTcWxRdWVyeTo6ZXhlY0Vycm9yUmVjb3ZlcnkoKQorICAgICBRVkVSSUZZX1NR TCggcSwgZXhlYygpICk7CisgfQorIAorK3ZvaWQgdHN0X1FTcWxRdWVyeTo6cHJlbWF0dXJlRXhl YygpCisreworKyAgICBRRkVUQ0goUVN0cmluZywgZGJOYW1lKTsKKysgICAgLy8gV2Ugb25seSB3 YW50IHRoZSBlbmdpbmUgbmFtZSwgZm9yIGFkZERhdGFiYXNlKCk6CisrICAgIGludCBjdXQgPSBk Yk5hbWUuaW5kZXhPZihRQ2hhcignQCcpKTsKKysgICAgaWYgKGN1dCA8IDApCisrICAgICAgICBR U0tJUCgiRmFpbGVkIHRvIHBhcnNlIGRhdGFiYXNlIHR5cGUgb3V0IG9mIG5hbWUiKTsKKysgICAg ZGJOYW1lLnRydW5jYXRlKGN1dCk7CisrICAgIGN1dCA9IGRiTmFtZS5pbmRleE9mKFFDaGFyKCdf JykpOworKyAgICBpZiAoY3V0ID49IDApCisrICAgICAgICBkYk5hbWUgPSBkYk5hbWUubWlkKGN1 dCArIDEpOworKworKyAgICBhdXRvIGRiID0gUVNxbERhdGFiYXNlOjphZGREYXRhYmFzZShkYk5h bWUpOworKyAgICBRU3FsUXVlcnkgcShkYik7CisrCisrICAgIFFUZXN0OjppZ25vcmVNZXNzYWdl KFF0V2FybmluZ01zZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIlFTcWxEYXRhYmFzZVBy aXZhdGU6OnJlbW92ZURhdGFiYXNlOiBjb25uZWN0aW9uICIKKysgICAgICAgICAgICAgICAgICAg ICAgICAgIidxdF9zcWxfZGVmYXVsdF9jb25uZWN0aW9uJyBpcyBzdGlsbCBpbiB1c2UsIGFsbCAi CisrICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVyaWVzIHdpbGwgY2Vhc2UgdG8gd29yay4i KTsKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0ZTo6YWRkRGF0YWJhc2U6IGR1cGxpY2F0 ZSBjb25uZWN0aW9uIG5hbWUgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3F0X3NxbF9k ZWZhdWx0X2Nvbm5lY3Rpb24nLCBvbGQgY29ubmVjdGlvbiByZW1vdmVkLiIpOworKyAgICBhdXRv IG90aGVyRGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7CisrCisrICAgIFFU ZXN0OjppZ25vcmVNZXNzYWdlKFF0V2FybmluZ01zZywgIlFTcWxRdWVyeTo6ZXhlYzogY2FsbGVk IGJlZm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVwIik7CisrICAgIC8vIFFUQlVHLTEwMDAzNzog c2hvdWxkbid0IGNyYXNoICEKKysgICAgUVZFUklGWSghcS5leGVjKCJzZWxlY3Qgc3R1ZmYgZnJv bSBUaGVWb2lkIikpOworK30KKysKKyB2b2lkIHRzdF9RU3FsUXVlcnk6Omxhc3RJbnNlcnRJZCgp CisgeworICAgICBRRkVUQ0goIFFTdHJpbmcsIGRiTmFtZSApOworZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJh Y3RpdGVtbW9kZWx0ZXN0ZXIuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJh Y3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK2luZGV4 IDRhYTNmOGQ2MGIuLmQyMDUwYTYxYWEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90 ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVz dGVyLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9k ZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK0BAIC0xMTUsNiArMTE1 LDEwIEBAIHZvaWQgdHN0X1FBYnN0cmFjdEl0ZW1Nb2RlbFRlc3Rlcjo6c3RhbmRhcmRJdGVtTW9k ZWxaZXJvQ29sdW1ucygpCisgICAgIC8vIFFUQlVHLTkyODg2CisgICAgIG1vZGVsLmluc2VydFJv d3MoMCwgNSk7CisgICAgIG1vZGVsLnJlbW92ZVJvd3MoMSwgMik7CisrCisrICAgIGNvbnN0IFFN b2RlbEluZGV4IHBhcmVudEluZGV4ID0gbW9kZWwuaW5kZXgoMCwgMCk7CisrICAgIG1vZGVsLmlu c2VydFJvd3MoMCwgNSwgcGFyZW50SW5kZXgpOworKyAgICBtb2RlbC5yZW1vdmVSb3dzKDEsIDIs IHBhcmVudEluZGV4KTsKKyB9CisgCisgdm9pZCB0c3RfUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVy Ojp0ZXN0SW5zZXJ0VGhyb3VnaFByb3h5KCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uIGIvcXRiYXNlL3Rlc3RzL2F1dG8v dG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgoraW5kZXggMTJhNGEyMmExOS4uY2U1 MThlNzhmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2Nz X2Jhc2VsaW5lX2luLmpzb24KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxt b2NzX2Jhc2VsaW5lX2luLmpzb24KK0BAIC02NjgsNTAgKzY2OCw2IEBACisgICAgICAgICAiaW5w dXRGaWxlIjogInRhc2sxOTI1NTIuaCIsCisgICAgICAgICAib3V0cHV0UmV2aXNpb24iOiA2Nwor ICAgICB9LAorLSAgICB7CistICAgICAgICAiY2xhc3NlcyI6IFsKKy0gICAgICAgICAgICB7Cist ICAgICAgICAgICAgICAgICJjbGFzc05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJh dGlvbiIsCistICAgICAgICAgICAgICAgICJvYmplY3QiOiB0cnVlLAorLSAgICAgICAgICAgICAg ICAicXVhbGlmaWVkQ2xhc3NOYW1lIjogIklubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24i LAorLSAgICAgICAgICAgICAgICAic2xvdHMiOiBbCistICAgICAgICAgICAgICAgICAgICB7Cist ICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICJuYW1lIjogImEiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1 cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAg ICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJiIiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAg ICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1 YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYyIsCistICAgICAgICAg ICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAg IH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFj Y2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImQiLAor LSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAg ICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAg ICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFt ZSI6ICJlIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgor LSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAg ICAgICAic3VwZXJDbGFzc2VzIjogWworLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAg ICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAibmFtZSI6ICJRT2JqZWN0IgorLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAg ICAgICAgICBdCistICAgICAgICAgICAgfQorLSAgICAgICAgXSwKKy0gICAgICAgICJpbnB1dEZp bGUiOiAidGFzazE4OTk5Ni5oIiwKKy0gICAgICAgICJvdXRwdXRSZXZpc2lvbiI6IDY3CistICAg IH0sCisgICAgIHsKKyAgICAgICAgICJjbGFzc2VzIjogWworICAgICAgICAgICAgIHsKK2RpZmYg LS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybyBiL3F0YmFzZS90ZXN0 cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCitpbmRleCBjMzI0YjNhOGNkLi40YWNlYjc4ZGMwIDEw MDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8KKysrKyBiL3F0 YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCitAQCAtMTUsNyArMTUsNyBAQCBjcm9z c19jb21waWxlOiBERUZJTkVTICs9IE1PQ19DUk9TU19DT01QSUxFRAorIEhFQURFUlMgKz0gdXNp bmctbmFtZXNwYWNlcy5oIG5vLWtleXdvcmRzLmggdGFzazg3ODgzLmggYy1jb21tZW50cy5oIGJh Y2tzbGFzaC1uZXdsaW5lcy5oIG9sZHN0eWxlLWNhc3RzLmggXAorICAgICAgICAgICAgc2xvdHMt d2l0aC12b2lkLXRlbXBsYXRlLmggcWludm9rYWJsZS5oIG5hbWVzcGFjZWQtZmxhZ3MuaCB0cmln cmFwaHMuaCBcCisgICAgICAgICAgICBlc2NhcGVzLWluLXN0cmluZy1saXRlcmFscy5oIGNzdHls ZS1lbnVtcy5oIHFwcml2YXRlc2xvdHMuaCBnYWRnZXR3aXRobm9lbnVtcy5oIFwKKy0gICAgICAg ICAgIGRpci1pbi1pbmNsdWRlLXBhdGguaCBzaW5nbGVfZnVuY3Rpb25fa2V5d29yZC5oIHRhc2sx OTI1NTIuaCB0YXNrMTg5OTk2LmggXAorKyAgICAgICAgICAgZGlyLWluLWluY2x1ZGUtcGF0aC5o IHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5MjU1Mi5oIFwKKyAgICAgICAgICAgIHRh c2syMzQ5MDkuaCB0YXNrMjQwMzY4LmggcHVyZS12aXJ0dWFsLXNpZ25hbHMuaCBjeHgxMS1lbnVt cy5oIFwKKyAgICAgICAgICAgIGN4eDExLWZpbmFsLWNsYXNzZXMuaCBcCisgICAgICAgICAgICBj eHgxMS1leHBsaWNpdC1vdmVycmlkZS1jb250cm9sLmggXAorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2LmggYi9xdGJhc2UvdGVzdHMvYXV0by90b29s cy9tb2MvdGFzazE4OTk5Ni5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGY5NGEw NTFiM2EuLjAwMDAwMDAwMDAKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNr MTg5OTk2LmgKKysrKyAvZGV2L251bGwKK0BAIC0xLDQ3ICswLDAgQEAKKy0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorLSoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4K Ky0qKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCistKioKKy0qKiBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KKy0qKgor LSoqICRRVF9CRUdJTl9MSUNFTlNFOkdQTC1FWENFUFQkCistKiogQ29tbWVyY2lhbCBMaWNlbnNl IFVzYWdlCistKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNl cyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorLSoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lh bCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorLSoqIFNvZnR3YXJlIG9yLCBh bHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgor LSoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBG b3IgbGljZW5zaW5nIHRlcm1zCistKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0 LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCistKiogaW5mb3JtYXRpb24gdXNlIHRo ZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKy0qKgorLSoq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCistKiogQWx0ZXJuYXRpdmVseSwgdGhp cyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCistKiogR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlCistKiogRm91bmRhdGlvbiB3aXRoIGV4Y2VwdGlvbnMgYXMgYXBwZWFyaW5nIGluIHRoZSBm aWxlIExJQ0VOU0UuR1BMMy1FWENFUFQKKy0qKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9m IHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCistKiogaW5mb3JtYXRpb24g dG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2ls bAorLSoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwu CistKioKKy0qKiAkUVRfRU5EX0xJQ0VOU0UkCistKioKKy0qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor LS8vIGlubGluZSBmdW5jdGlvbnMgY2FuIGhhdmUgdGhyb3cgZGVjbGFyYXRpb25zCistCistI2lm bmRlZiBUQVNLMTg5OTk2X0gKKy0jZGVmaW5lIFRBU0sxODk5OTZfSAorLQorLSNpbmNsdWRlIDxR T2JqZWN0PgorLQorLWNsYXNzIElubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24gOiBwdWJs aWMgUU9iamVjdAorLXsKKy0gICAgUV9PQkpFQ1QKKy0KKy1wdWJsaWMgc2xvdHM6CistICAgIHZv aWQgYSgpIHRocm93KCkgeyB9CistICAgIHZvaWQgYigpIGNvbnN0IHRocm93KCkgeyB9CistICAg IHZvaWQgYygpIHRocm93KCk7CistICAgIHZvaWQgZCgpIHRocm93KGludCkgeyB9CistICAgIHZv aWQgZSgpIGNvbnN0IHRocm93KGludCxkb3VibGUpIHsgfQorLX07CistCistI2VuZGlmCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwIGIvcXRiYXNl L3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwCitpbmRleCBjNzE2YWVhZDIxLi4xNWRk OWU0MWU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2Mu Y3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKK0BAIC02 MzEsNyArNjMxLDYgQEAgcHVibGljOgorIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaW5pdFRl c3RDYXNlKCk7CisgCistICAgIHZvaWQgc2xvdFdpdGhFeGNlcHRpb24oKSB0aHJvdyhNeVN0cnVj dCk7CisgICAgIHZvaWQgZG9udFN0cmlwTmFtZXNwYWNlcygpOworICAgICB2b2lkIG9sZFN0eWxl Q2FzdHMoKTsKKyAgICAgdm9pZCB3YXJuT25FeHRyYVNpZ25hbFNsb3RRdWFsaWZpYWN0aW9uKCk7 CitAQCAtNjczLDcgKzY3Miw2IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdGVtcGxhdGVH dEd0KCk7CisgICAgIHZvaWQgcXByaXZhdGVzbG90cygpOworICAgICB2b2lkIHFwcml2YXRlcHJv cGVydGllcygpOworLSAgICB2b2lkIGlubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24oKTsK KyAgICAgdm9pZCB3YXJuT25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCk7CisgICAgIHZvaWQgY29uc3Ry dWN0b3JzKCk7CisgICAgIHZvaWQgdHlwZW5hbWVXaXRoVW5zaWduZWQoKTsKK0BAIC03ODQsMTIg Kzc4Miw2IEBAIHZvaWQgdHN0X01vYzo6aW5pdFRlc3RDYXNlKCkKKyAjZW5kaWYKKyB9CisgCist dm9pZCB0c3RfTW9jOjpzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0KQorLXsKKy0g ICAgLy8gYmUgaGFwcHkKKy0gICAgUVZFUklGWSh0cnVlKTsKKy19CistCisgdm9pZCB0c3RfTW9j Ojpkb250U3RyaXBOYW1lc3BhY2VzKCkKKyB7CisgICAgIFNlbmRlciBzZW5kZXI7CitAQCAtODI0 LDcgKzgxNiw3IEBAIHZvaWQgdHN0X01vYzo6b2xkU3R5bGVDYXN0cygpCisgCisgICAgIFFTdHJp bmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItV29s ZC1zdHlsZS1jYXN0IiA8PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNs dWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEi IDw8ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAi L2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Mu c3RhcnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7 CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC04OTQsNyArODg2LDcgQEAgdm9pZCB0c3Rf TW9jOjppbnB1dEZpbGVOYW1lV2l0aERvdHNCdXROb0V4dGVuc2lvbigpCisgCisgICAgIFFTdHJp bmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIg PDwgIi4uIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIv ZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8 PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMi IDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOwor ICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9j T3V0KTsKK0BAIC0xMTc0LDcgKzExNjYsNyBAQCB2b2lkIHRzdF9Nb2M6Omlnbm9yZU9wdGlvbkNs YXNoZXMoKQorICAgICBRU3RyaW5nTGlzdCBnY2NBcmdzOworICAgICBnY2NBcmdzIDw8ICItYyIg PDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuLiIKKyAgICAgICAgICA8PCAiLUkiIDw8IHF0 SW5jbHVkZVBhdGggPDwgIi1JIiA8PCBpbmNsdWRlRGlyIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIK Ky0gICAgICAgICA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAgIi0iOworKyAgICAgICAg IDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICAiLSI7CisgICAgIHByb2Muc3RhcnQoImdj YyIsIGdjY0FyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAg IHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC0xNTkzLDIxICsxNTg1LDYgQEAgdm9pZCB0c3RfTW9j OjpxcHJpdmF0ZXByb3BlcnRpZXMoKQorIAorIH0KKyAKKy0jaW5jbHVkZSAidGFzazE4OTk5Ni5o IgorLQorLXZvaWQgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbjo6YygpIHRocm93KCkg e30KKy0KKy12b2lkIHRzdF9Nb2M6OmlubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24oKQor LXsKKy0gICAgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiB0c3Q7CistICAgIGNvbnN0 IFFNZXRhT2JqZWN0ICptb2JqID0gdHN0Lm1ldGFPYmplY3QoKTsKKy0gICAgUVZFUklGWShtb2Jq LT5pbmRleE9mU2xvdCgiYSgpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZT bG90KCJiKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImMoKSIp ICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiZCgpIikgIT0gLTEpOwor LSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJlKCkiKSAhPSAtMSk7CistfQorLQorIHZv aWQgdHN0X01vYzo6d2Fybk9uUHJvcGVydHlXaXRob3V0UkVBRCgpCisgeworICNpZmRlZiBNT0Nf Q1JPU1NfQ09NUElMRUQKK0BAIC0xODY5LDcgKzE4NDYsNyBAQCB2b2lkIHRzdF9Nb2M6Om5vdGlm eUVycm9yKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8PCAiLWMiIDw8 ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLiIKKy0gICAgICAgICA8PCAiLUkiIDw8IHF0SW5j bHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzEx IiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwg Ii9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAgICBwcm9j LnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFydGVkKCkp OworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcCBiL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVy dmlldy5jcHAKK2luZGV4IGMzNTVlZTk2NjUuLjg4YzA5ZGU4ZTAgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZp ZXcuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVy dmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCitAQCAtMjUxLDYgKzI1MSw3IEBAIHByaXZhdGUgc2xv dHM6CisgICAgIHZvaWQgdGVzdFJlc2V0Q2FjaGVkU2l6ZUhpbnQoKTsKKyAgICAgdm9pZCBzdGF0 dXNUaXBzKCk7CisgICAgIHZvaWQgdGVzdFJlbW92aW5nQ29sdW1uc1ZpYUxheW91dENoYW5nZWQo KTsKKysgICAgdm9pZCB0ZXN0TW9kZWxNb3ZpbmdDb2x1bW5zKCk7CisgCisgcHJvdGVjdGVkOgor ICAgICB2b2lkIHNldHVwVGVzdERhdGEoYm9vbCB1c2VfcmVzZXRfbW9kZWwgPSBmYWxzZSk7CitA QCAtMzYwLDYgKzM2MSwxMiBAQCBwdWJsaWM6CisgICAgICAgICBlbmRSZW1vdmVDb2x1bW5zKCk7 CisgICAgIH0KKyAKKysgICAgdm9pZCBtb3ZlQ29sdW1uKGludCBmcm9tLCBpbnQgdG8pCisrICAg IHsKKysgICAgICAgIGJlZ2luTW92ZUNvbHVtbnMoUU1vZGVsSW5kZXgoKSwgZnJvbSwgZnJvbSwg UU1vZGVsSW5kZXgoKSwgdG8pOworKyAgICAgICAgZW5kTW92ZUNvbHVtbnMoKTsKKysgICAgfQor KworICAgICB2b2lkIGNsZWFudXAoKQorICAgICB7CisgICAgICAgICBlbWl0IGxheW91dEFib3V0 VG9CZUNoYW5nZWQoKTsKK0BAIC0zNjI3LDUgKzM2MzQsMTggQEAgdm9pZCB0c3RfUUhlYWRlclZp ZXc6OnRlc3RSZW1vdmluZ0NvbHVtbnNWaWFMYXlvdXRDaGFuZ2VkKCkKKyAgICAgLy8gVGhlIG1h aW4gcG9pbnQgb2YgdGhpcyB0ZXN0IGlzIHRoYXQgdGhlIHNlY3Rpb24tc2l6ZSByZXN0b3Jpbmcg Y29kZSBkaWRuJ3QgZ28gb3V0IG9mIGJvdW5kcy4KKyB9CisgCisrdm9pZCB0c3RfUUhlYWRlclZp ZXc6OnRlc3RNb2RlbE1vdmluZ0NvbHVtbnMoKQorK3sKKysgICAgUXRUZXN0TW9kZWwgbW9kZWwo MTAsIDEwKTsKKysgICAgUUhlYWRlclZpZXcgaHYoUXQ6Okhvcml6b250YWwpOworKyAgICBodi5z ZXRNb2RlbCgmbW9kZWwpOworKyAgICBodi5yZXNpemVTZWN0aW9ucyhRSGVhZGVyVmlldzo6UmVz aXplVG9Db250ZW50cyk7CisrICAgIGh2LnNob3coKTsKKysKKysgICAgUVBlcnNpc3RlbnRNb2Rl bEluZGV4IGluZGV4MyA9IG1vZGVsLmluZGV4KDAsIDMpOworKyAgICBtb2RlbC5tb3ZlQ29sdW1u KDMsIDEpOworKyAgICBRQ09NUEFSRShpbmRleDMuY29sdW1uKCksIDEpOworK30KKysKKyBRVEVT VF9NQUlOKHRzdF9RSGVhZGVyVmlldykKKyAjaW5jbHVkZSAidHN0X3FoZWFkZXJ2aWV3Lm1vYyIK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2 aWV3L3RzdF9xdGFibGV2aWV3LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZp ZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCitpbmRleCA3NjEzNTdiMjUyLi4wNmJi NzA2MDc0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3Mv cXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCitAQCAtMzk3LDYg KzM5Nyw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tIZWFkZXJNaW5TaXplKCk7 CisgCisgICAgIHZvaWQgcmVzaXplVG9Db250ZW50cygpOworKyAgICB2b2lkIHJlc2l6ZVRvQ29u dGVudHNTcGFucygpOworIAorICAgICB2b2lkIHRhYkZvY3VzKCk7CisgICAgIHZvaWQgYmlnTW9k ZWwoKTsKK0BAIC0zNzIxLDYgKzM3MjIsNzAgQEAgdm9pZCB0c3RfUVRhYmxlVmlldzo6cmVzaXpl VG9Db250ZW50cygpCisgCisgfQorIAorKworK2NsYXNzIFNwYW5Nb2RlbCA6IHB1YmxpYyBRQWJz dHJhY3RUYWJsZU1vZGVsCisreworK3B1YmxpYzoKKysgICAgU3Bhbk1vZGVsKGJvb2wgc2VjdGlv bnNNb3ZlZCkKKysgICAgICAgIDogX3NlY3Rpb25zTW92ZWQoc2VjdGlvbnNNb3ZlZCkKKysgICAg e30KKysgICAgaW50IGNvbHVtbkNvdW50KGNvbnN0IFFNb2RlbEluZGV4ICYgPSB7fSkgY29uc3Qg b3ZlcnJpZGUgeyByZXR1cm4gMjsgfQorKyAgICBpbnQgcm93Q291bnQoY29uc3QgUU1vZGVsSW5k ZXggJiA9IHt9KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAxOyB9CisrICAgIFFWYXJpYW50IGRh dGEoY29uc3QgUU1vZGVsSW5kZXggJmlkeCwgaW50IHJvbGUgPSBRdDo6RGlzcGxheVJvbGUpIGNv bnN0IG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIGlmIChyb2xlICE9IFF0OjpEaXNwbGF5Um9s ZSkKKysgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKysgICAgICAgIGNvbnN0IGludCBj b2wgPSBfc2VjdGlvbnNNb3ZlZCA/IDEgLSBpZHguY29sdW1uKCkgOiBpZHguY29sdW1uKCk7Cisr ICAgICAgICBpZiAoY29sID09IDApCisrICAgICAgICAgICAgcmV0dXJuICJMb3JlbSBpcHN1bSBk b2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21v ZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4iOwor KyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisrICAgIH0KKytwcml2YXRlOgorKyAgICBib29s IF9zZWN0aW9uc01vdmVkOworK307CisrCisrCisrdm9pZCB0c3RfUVRhYmxlVmlldzo6cmVzaXpl VG9Db250ZW50c1NwYW5zKCkKKyt7CisrICAgIFNwYW5Nb2RlbCBtb2RlbDEoZmFsc2UpOworKyAg ICBTcGFuTW9kZWwgbW9kZWwyKHRydWUpOworKyAgICBRVGFibGVWaWV3IHZpZXcxLCB2aWV3Miwg dmlldzM7CisrICAgIHZpZXcxLnNldE1vZGVsKCZtb2RlbDEpOworKyAgICB2aWV3Mi5zZXRNb2Rl bCgmbW9kZWwyKTsKKysgICAgdmlldzIuaG9yaXpvbnRhbEhlYWRlcigpLT5tb3ZlU2VjdGlvbigw LCAxKTsKKysgICAgdmlldzMuc2V0TW9kZWwoJm1vZGVsMSk7CisrCisrICAgIHZpZXcxLnNldFNw YW4oMCwgMCwgMSwgMik7CisrICAgIHZpZXcyLnNldFNwYW4oMCwgMSwgMSwgMik7CisrICAgIHZp ZXcxLnNob3coKTsKKysgICAgdmlldzIuc2hvdygpOworKyAgICB2aWV3My5zaG93KCk7CisrICAg IFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzEpKTsKKysgICAgUVZF UklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MikpOworKyAgICBRVkVSSUZZ KFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXczKSk7CisrICAgIHZpZXcxLnNldENv bHVtbldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcxLnNldENvbHVtbldpZHRoKDEsIDEwMCk7Cisr ICAgIHZpZXcyLnNldENvbHVtbldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcyLnNldENvbHVtbldp ZHRoKDEsIDEwMCk7CisrICAgIHZpZXczLnNldENvbHVtbldpZHRoKDAsIDIwMCk7CisrCisrICAg IHZpZXcxLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIHZpZXcyLnJlc2l6ZVJvd1RvQ29u dGVudHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIFFDT01Q QVJFKHZpZXcxLnJvd0hlaWdodCgwKSwgdmlldzMucm93SGVpZ2h0KDApKTsKKysgICAgUUNPTVBB UkUodmlldzIucm93SGVpZ2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKworKyAgICB2aWV3 My5yZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDApOworKyAgICB2aWV3My5yZXNpemVSb3dUb0NvbnRl bnRzKDApOworKyAgICAvLyBoZWlnaHQgc2hvdWxkIGJlIG9ubHkgMSB0ZXh0IGxpbmUgZm9yIGVh c3kgdGVzdGluZworKyAgICB2aWV3MS5zZXRSb3dIZWlnaHQoMCwgdmlldzMudmVydGljYWxIZWFk ZXIoKS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3Mi5zZXRSb3dIZWlnaHQoMCwgdmlldzMu dmVydGljYWxIZWFkZXIoKS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3MS5yZXNpemVDb2x1 bW5Ub0NvbnRlbnRzKDApOworKyAgICB2aWV3Mi5yZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDEpOwor KyAgICBRQ09NUEFSRSh2aWV3MS5jb2x1bW5XaWR0aCgwKSwgdmlldzMuY29sdW1uV2lkdGgoMCkg LSB2aWV3MS5jb2x1bW5XaWR0aCgxKSk7CisrICAgIFFDT01QQVJFKHZpZXcyLmNvbHVtbldpZHRo KDApLCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZpZXcyLmNvbHVtbldpZHRoKDEpKTsKKyt9Cisr CisgUVRfQkVHSU5fTkFNRVNQQUNFCisgZXh0ZXJuIGJvb2wgUV9XSURHRVRTX0VYUE9SVCBxdF90 YWJfYWxsX3dpZGdldHMoKTsgLy8gcWFwcGxpY2F0aW9uLmNwcAorIFFUX0VORF9OQU1FU1BBQ0UK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRp b24vdHN0X3FhcHBsaWNhdGlvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5l bC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGEzYjhlZjc4ZDguLjQ5 NTVjZWJkNWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9x YXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAorQEAgLTE0 OTgsNyArMTQ5OCw3IEBAIHZvaWQgdHN0X1FBcHBsaWNhdGlvbjo6ZGVza3RvcFNldHRpbmdzQXdh cmUoKQorICAgICBlbnZpcm9ubWVudCArPSBRTGF0aW4xU3RyaW5nKCJRVF9NQUNfRElTQUJMRV9G T1JFR1JPVU5EX0FQUExJQ0FUSU9OX1RSQU5TRk9STT0xIik7CisgICAgIHRlc3RQcm9jZXNzLnNl dEVudmlyb25tZW50KGVudmlyb25tZW50KTsKKyAjZW5kaWYKKy0gICAgdGVzdFByb2Nlc3Muc3Rh cnQoImRlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlciIpOworKyAgICB0ZXN0UHJvY2Vzcy5zdGFy dCgiLi9kZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXIiKTsKKyAgICAgUVZFUklGWTIodGVzdFBy b2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5n Ojpmcm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ2Rlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlcic6 ICUxIikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAgIFFWRVJJRlkodGVz dFByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKDEwMDAwKSk7CitAQCAtMjQ1Miw3ICsyNDUyLDcgQEAg dm9pZCB0c3RfUUFwcGxpY2F0aW9uOjpxdGJ1Z18xMjY3MygpCisgI2lmIFFUX0NPTkZJRyhwcm9j ZXNzKQorICAgICBRUHJvY2VzcyB0ZXN0UHJvY2VzczsKKyAgICAgUVN0cmluZ0xpc3QgYXJndW1l bnRzOworLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgibW9kYWxfaGVscGVyIiwgYXJndW1lbnRzKTsK KysgICAgdGVzdFByb2Nlc3Muc3RhcnQoIi4vbW9kYWxfaGVscGVyIiwgYXJndW1lbnRzKTsKKyAg ICAgUVZFUklGWTIodGVzdFByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAgICAgICAgICAg cVByaW50YWJsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ21vZGFsX2hlbHBl cic6ICUxIikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAgIFFWRVJJRlko dGVzdFByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKDIwMDAwKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0 YnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3Ri dXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IGViMTA4YTQwZGUuLmRjYTU1Mjhj MWIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3Ry YWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0 by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3Bw CitAQCAtNDEsNiArNDEsNyBAQAorIAorICNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlv bl9wLmg+CisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorKyNpbmNsdWRl IDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyBjbGFzcyB0c3RfUUFic3RyYWN0QnV0dG9uIDog cHVibGljIFFPYmplY3QKKyB7CitAQCAtNzYsNiArNzcsOCBAQCBwcml2YXRlIHNsb3RzOgorICAg ICB2b2lkIGtleU5hdmlnYXRpb24oKTsKKyAjZW5kaWYKKyAKKysgICAgdm9pZCBidXR0b25QcmVz c0tleXMoKTsKKysKKyBwcm90ZWN0ZWQgc2xvdHM6CisgICAgIHZvaWQgb25DbGlja2VkKCk7Cisg ICAgIHZvaWQgb25Ub2dnbGVkKCBib29sIG9uICk7CitAQCAtMjY5LDcgKzI3MiwxMyBAQCB2b2lk IHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorICAgICAgICAgUUNPTVBBUkUo cHJlc3NfY291bnQsIGNsaWNrX2NvdW50KTsKKyAgICAgICAgIFFWRVJJRlkoY2xpY2tfY291bnQg PiAxKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDQ6CisrICAgIGNhc2UgNDogeworKyAg ICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRl OjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxR dDo6S2V5Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6Oktl eV9FbnRlcikpIHsKKysgICAgICAgICAgICBRU0tJUCgicGxhdGZvcm0gdGhlbWUgaGFzIEtleV9F bnRlciBpbiBCdXR0b25QcmVzc0tleXMiKTsKKysgICAgICAgIH0KKyAgICAgICAgIC8vIGNoZWNr IHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdCB3aGVuIGF1dG9yZXBlYXQgaXMgZmFs c2UKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisgICAgICAgICB0ZXN0 V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworQEAgLTI4Niw3ICsyOTUsMTQgQEAgdm9p ZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAKKyAgICAgICAgIFFWRVJJ RlkoIGNsaWNrX2NvdW50ID09IDAgKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDU6Cisr ICAgIH0KKysgICAgY2FzZSA1OiB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5 cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRo ZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRv blByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgICAgIFFTS0lQ KCJwbGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVyIGluIEJ1dHRvblByZXNzS2V5cyIpOworKyAg ICAgICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZm ZWN0IHdoZW4gYXV0b3JlcGVhdCBpcyB0cnVlCisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXREb3du KCBmYWxzZSApOworICAgICAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggdHJ1ZSApOwor QEAgLTMwNCw2ICszMjAsNyBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBl YXQoKQorIAorICAgICAgICAgUVZFUklGWSggY2xpY2tfY291bnQgPT0gMCApOworICAgICAgICAg YnJlYWs7CisrICAgIH0KKyAgICAgY2FzZSA2OgorICAgICAgICAgLy8gdmVyaWZ5IGF1dG9yZXBl YXQgaXMgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgICBNeUJ1dHRvbiB0bXAoIDApOworQEAgLTY1 MSw1ICs2NjgsMTYgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjprZXlOYXZpZ2F0aW9uKCkK KyB9CisgI2VuZGlmCisgCisrdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpidXR0b25QcmVzc0tl eXMoKQorK3sKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8 UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxl bmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0OjprZXlDbGljayh0ZXN0V2lkZ2V0LCBidXR0 b25QcmVzc0tleXNbaV0pOworKyAgICAgICAgUUNPTVBBUkUoY2xpY2tfY291bnQsIGkgKyAxKTsK KysgICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RQWJzdHJhY3RCdXR0b24pCisgI2luY2x1 ZGUgInRzdF9xYWJzdHJhY3RidXR0b24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9h dXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAgYi9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCitp bmRleCAzMjQzNzA1MGY1Li40NmI1YWY2ZDYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNw cAorQEAgLTE2OCw2ICsxNjgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGNoZWNrTWVu dUl0ZW1Qb3NXaGVuU3R5bGVTaGVldElzU2V0KCk7CisgICAgIHZvaWQgY2hlY2tFbWJlZGRlZExp bmVFZGl0V2hlblN0eWxlU2hlZXRJc1NldCgpOworICAgICB2b2lkIHByb3BhZ2F0ZVN0eWxlQ2hh bmdlcygpOworKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZhdGU6CisgICAg IFBsYXRmb3JtSW5wdXRDb250ZXh0IG1fcGxhdGZvcm1JbnB1dENvbnRleHQ7CitAQCAtMTY4Miw2 ICsxNjgzLDE2IEBAIHZvaWQgdHN0X1FDb21ib0JveDo6c2V0TW9kZWwoKQorICAgICBRQ09NUEFS RShib3gucm9vdE1vZGVsSW5kZXgoKSwgcm9vdE1vZGVsSW5kZXgpOworICAgICBib3guc2V0TW9k ZWwoYm94Lm1vZGVsKCkpOworICAgICBRQ09NUEFSRShib3gucm9vdE1vZGVsSW5kZXgoKSwgcm9v dE1vZGVsSW5kZXgpOworKworKyAgICAvLyBjaGVjayB0aGF0IHNldHRpbmcgdGhlIHNhbWUgbW9k ZWwgYXMgdGhlIGNvbXBsZXRlcidzIGRvZXNuJ3QgY3Jhc2gKKysgICAgUUNvbXBsZXRlciAqY29t cGxldGVyID0gbmV3IFFDb21wbGV0ZXIoJmJveCk7CisrICAgIGJveC5zZXRFZGl0YWJsZSh0cnVl KTsKKysgICAgYm94LnNldENvbXBsZXRlcihjb21wbGV0ZXIpOworKyAgICBhdXRvICpsaXN0TW9k ZWwgPSBuZXcgUVN0cmluZ0xpc3RNb2RlbCh7ICJvbmUiLCAidHdvIiB9LCBjb21wbGV0ZXIpOwor KyAgICBjb21wbGV0ZXItPnNldE1vZGVsKGxpc3RNb2RlbCk7CisrICAgIFFDT01QQVJFKGxpc3RN b2RlbC0+cm93Q291bnQoKSwgMik7IC8vIG1ha2Ugc3VyZSBpdCB3YXNuJ3QgZGVsZXRlZAorKyAg ICBib3guc2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1vZGVsLT5yb3dD b3VudCgpLCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisgfQorIAorIHZvaWQg dHN0X1FDb21ib0JveDo6c2V0Q3VzdG9tTW9kZWxBbmRWaWV3KCkKK0BAIC0zNjMyLDUgKzM2NDMs MjQgQEAgdm9pZCB0c3RfUUNvbWJvQm94Ojpwcm9wYWdhdGVTdHlsZUNoYW5nZXMoKQorICAgICBR VkVSSUZZKGZyYW1lU3R5bGUuaW5xdWlyZWQpOworIH0KKyAKKyt2b2lkIHRzdF9RQ29tYm9Cb3g6 OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBRQ29tYm9Cb3ggY29tYm9Cb3g7CisrICAgIGNv bWJvQm94LnNldEVkaXRhYmxlKGZhbHNlKTsKKysgICAgY29tYm9Cb3guYWRkSXRlbShRU3RyaW5n OjpudW1iZXIoMSkpOworKyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51bWJlcigyKSk7 CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0 ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+ PigpOworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsg KytpKSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2soJmNvbWJvQm94LCBidXR0b25QcmVzc0tl eXNbaV0pOworKyAgICAgICAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGEgd2luZG93IHdpbGwgbm90 IGJlIGltbWVkaWF0ZWx5IHZpc2libGUsCisrICAgICAgICAvLyBidXQgdGFrZSBzb21lIGV2ZW50 LWxvb3AgaXRlcmF0aW9ucyB0byBjb21wbGV0ZS4KKysgICAgICAgIC8vIFVzaW5nIFFUUllfVkVS SUZZIHRvIGRlYWwgd2l0aCB0aGF0LgorKyAgICAgICAgUVRSWV9WRVJJRlkoY29tYm9Cb3gudmll dygpLT5pc1Zpc2libGUoKSk7CisrICAgICAgICBjb21ib0JveC5oaWRlUG9wdXAoKTsKKysgICAg fQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RQ29tYm9Cb3gpCisgI2luY2x1ZGUgInRzdF9xY29t Ym9ib3gubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybyBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0 dG9uLnBybworaW5kZXggYmUzY2ZjZDEwNC4uYzIyOGZkZmNjYSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRs aW5rYnV0dG9uLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fj b21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCitAQCAtMSw2ICsxLDYgQEAK KyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcWNvbW1hbmRsaW5rYnV0dG9uCist UVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1aS1wcml2YXRl CisgU09VUkNFUyAgKz0gdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKKyAKKyAKK2RpZmYgLS1n aXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9u L3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAoraW5k ZXggMDA0NGQzM2M2Ni4uNGNmMDYyOTZlNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRv bi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxp bmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKK0BAIC00MCw2ICs0MCw5IEBACisg I2luY2x1ZGUgPFFHcmlkTGF5b3V0PgorICNpbmNsdWRlIDxRUGFpbnRlcj4KKyAKKysjaW5jbHVk ZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jt dGhlbWUuaD4KKysKKyBjbGFzcyB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uIDogcHVibGljIFFPYmpl Y3QKKyB7CisgICAgIFFfT0JKRUNUCitAQCAtMjIzLDYgKzIyNiwxMyBAQCB2b2lkIHRzdF9RQ29t bWFuZExpbmtCdXR0b246OnNldEF1dG9SZXBlYXQoKQorICAgICAvLyBjaGVjayB0aGF0IHByZXNz aW5nIEVOVEVSIGhhcyBubyBlZmZlY3QKKyAgICAgcmVzZXRDb3VudGVycygpOworICAgICB0ZXN0 V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworKyAgICAvLyBTa2lwIGFmdGVyIHJlc2V0IGlmIEJ1 dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NL ZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVt ZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlz LmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKyAg ICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsKKyAgICAgUVRlc3Q6OmtleVBy ZXNzKCB0ZXN0V2lkZ2V0LCBRdDo6S2V5X0VudGVyICk7CisgCitAQCAtMjU1LDYgKzI2NSwxNCBA QCB2b2lkIHRzdF9RQ29tbWFuZExpbmtCdXR0b246OnByZXNzZWQoKQorICAgICBRQ09NUEFSRSgg cHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1 aW50KTEgKTsKKyAKKysgICAgLy8gU2tpcCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRl cgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZh dGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5 Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkg eworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVz dFdpZGdldCxRdDo6S2V5X0VudGVyICk7CisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVp bnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3Vw Ym94LnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdy b3VwYm94LnBybworaW5kZXggNGE1ZTc2ZmY2NS4uYTIzNWZhMWZhYyAxMDA2NDQKKy0tLSBhL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybwor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBi b3gucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0 c3RfcWdyb3VwYm94CistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0 bGliIGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3Fncm91cGJveC5jcHAKKyAKKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Rz dF9xZ3JvdXBib3guY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91 cGJveC90c3RfcWdyb3VwYm94LmNwcAoraW5kZXggNGZiNWQyNjJjYS4uZDhkNzU2MmI3MyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0 X3Fncm91cGJveC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x Z3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAKK0BAIC0zNSw2ICszNSw5IEBACisgI2luY2x1ZGUg PFFSYWRpb0J1dHRvbj4KKyAjaW5jbHVkZSA8UURpYWxvZz4KKyAKKysjaW5jbHVkZSA8cHJpdmF0 ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4K KysKKyAjaW5jbHVkZSAicWdyb3VwYm94LmgiCisgCisgY2xhc3MgdHN0X1FHcm91cEJveCA6IHB1 YmxpYyBRT2JqZWN0CitAQCAtNjksNiArNzIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IHByb3BhZ2F0ZUZvY3VzKCk7CisgICAgIHZvaWQgdGFza19RVEJVR18xOTE3MF9pZ25vcmVNb3Vz ZVJlbGVhc2VFdmVudCgpOworICAgICB2b2lkIHRhc2tfUVRCVUdfMTU1MTlfcHJvcGFnYXRlTW91 c2VFdmVudHMoKTsKKysgICAgdm9pZCBidXR0b25QcmVzc0tleXMoKTsKKyAKKyBwcml2YXRlOgor ICAgICBib29sIGNoZWNrZWQ7CitAQCAtNjEwLDYgKzYxNCwyMCBAQCB2b2lkIHRzdF9RR3JvdXBC b3g6OnRhc2tfUVRCVUdfMTU1MTlfcHJvcGFnYXRlTW91c2VFdmVudHMoKQorICAgICBRQ09NUEFS RShwYXJlbnQubW91c2VNb3ZlZCwgdHJ1ZSk7CisgfQorIAorK3ZvaWQgdHN0X1FHcm91cEJveDo6 YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIFFHcm91cEJveCBncm91cEJveDsKKysgICAgZ3Jv dXBCb3guc2V0Q2hlY2thYmxlKHRydWUpOworKyAgICBRU2lnbmFsU3B5IGNsaWNrZWRTcHkoJmdy b3VwQm94LCAmUUdyb3VwQm94OjpjbGlja2VkKTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVz c0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRo ZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAwOyBp IDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0OjprZXlD bGljaygmZ3JvdXBCb3gsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAgICBRQ09NUEFSRShj bGlja2VkU3B5Lmxlbmd0aCgpLCBpICsgMSk7CisrICAgIH0KKyt9CisrCisgdm9pZCB0c3RfUUdy b3VwQm94OjpzZW5kTW91c2VNb3ZlRXZlbnQoUVdpZGdldCAqd2lkZ2V0LCBjb25zdCBRUG9pbnQg JmxvY2FsUG9zKQorIHsKKyAgICAgLy8gU2VuZCBhIE1vdXNlTW92ZSBldmVudCB3aXRob3V0IGFj dHVhbGx5IG1vdmluZyB0aGUgcG9pbnRlcgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8gYi9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCitpbmRl eCAzNTNhZDA2Y2EyLi5lNTVmNjE0OGYyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybworKysrIGIvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybwor QEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0gdHN0X3FwdXNo YnV0dG9uCistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1 aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3FwdXNoYnV0dG9uLmNwcAorIAorIAorZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3Rf cXB1c2hidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNo YnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK2luZGV4IGU4MTg1MTRhNzkuLjQwNDNlOTMyNmEg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0 b24vdHN0X3FwdXNoYnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK0BAIC00MSw2ICs0MSw5IEBA CisgI2luY2x1ZGUgPFFTdHlsZUZhY3Rvcnk+CisgI2luY2x1ZGUgPFFUYWJXaWRnZXQ+CisgCisr I2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3Fw bGF0Zm9ybXRoZW1lLmg+CisrCisgY2xhc3MgdHN0X1FQdXNoQnV0dG9uIDogcHVibGljIFFPYmpl Y3QKKyB7CisgUV9PQkpFQ1QKK0BAIC0yMTIsNiArMjE1LDEzIEBAIHZvaWQgdHN0X1FQdXNoQnV0 dG9uOjphdXRvUmVwZWF0KCkKKyAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMg bm8gZWZmZWN0CisgICAgIHJlc2V0Q291bnRlcnMoKTsKKyAgICAgdGVzdFdpZGdldC0+c2V0RG93 biggZmFsc2UgKTsKKysgICAgLy8gU2tpcCBhZnRlciByZXNldCBpZiBCdXR0b25QcmVzc0tleXMg aGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBs aWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNz S2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxR TGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6 S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisgICAgIHRlc3RXaWRnZXQt PnNldEF1dG9SZXBlYXQoIGZhbHNlICk7CisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdl dCwgUXQ6OktleV9FbnRlciApOworIAorQEAgLTI0Nyw2ICsyNTcsMTQgQEAgdm9pZCB0c3RfUVB1 c2hCdXR0b246OnByZXNzZWQoKQorICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1aW50KTEg KTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKKyAKKysgICAgLy8g U2tpcCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1 dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBs YXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRv blByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOwor KyAgICB9CisrCisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCxRdDo6S2V5X0VudGVy ICk7CisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFS RSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9t YW51YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdCBiL3F0YmFzZS90ZXN0cy9t YW51YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdAorb2xkIG1vZGUgMTAwNzU1 CituZXcgbW9kZSAxMDA2NDQKK1N1Ym1vZHVsZSBxdGNvbm5lY3Rpdml0eSBlOTU3ZDQ4MS4uMDU2 Mjk0YzA6CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9o Y2ltYW5hZ2VyLmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFu YWdlci5jcHAKK2luZGV4IGUyNjM1ZmFlLi5hOGI4ZTNiOSAxMDA2NDQKKy0tLSBhL3F0Y29ubmVj dGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKKysrKyBiL3F0Y29ubmVj dGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKK0BAIC01NjMsOSArNTYz LDExIEBAIHZvaWQgSGNpTWFuYWdlcjo6aGFuZGxlSGNpQWNsUGFja2V0KGNvbnN0IHF1aW50OCAq ZGF0YSwgaW50IHNpemUpCisgCisgdm9pZCBIY2lNYW5hZ2VyOjpoYW5kbGVMZU1ldGFFdmVudChj b25zdCBxdWludDggKmRhdGEpCisgeworLSAgICAvLyBTcGVjIHY0LjIsIFZvbCAyLCBwYXJ0IEUs IDcuNy42NWZmCisrICAgIC8vIFNwZWMgdjUuMywgVm9sIDQsIHBhcnQgRSwgNy43LjY1LioKKyAg ICAgc3dpdGNoICgqZGF0YSkgeworLSAgICBjYXNlIDB4MTogeworKyAgICBjYXNlIDB4MTogLy8g SENJX0xFX0Nvbm5lY3Rpb25fQ29tcGxldGUKKysgICAgY2FzZSAweEE6IC8vIEhDSV9MRV9Fbmhh bmNlZF9Db25uZWN0aW9uX0NvbXBsZXRlCisrICAgIHsKKyAgICAgICAgIGNvbnN0IHF1aW50MTYg aGFuZGxlID0gYnRfZ2V0X2xlMTYoZGF0YSArIDIpOworICAgICAgICAgZW1pdCBjb25uZWN0aW9u Q29tcGxldGUoaGFuZGxlKTsKKyAgICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL3F0Y29ubmVj dGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVl ei5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlz Y292ZXJ5YWdlbnRfYmx1ZXouY3BwCitpbmRleCA2YTkzMTQzYi4uNGExOGNmYzcgMTAwNjQ0Cist LS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292 ZXJ5YWdlbnRfYmx1ZXouY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3Fi bHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCitAQCAtMzIwLDcgKzMyMCwx MCBAQCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnRQcml2YXRlOjpfcV9maW5p c2hTZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNlRAorICAgICAgICAgICAgIGZvciAoY29uc3QgUUJs dWV0b290aFV1aWQgJmlkIDogc2VydmljZUNsYXNzVXVpZHMpIHsKKyAgICAgICAgICAgICAgICAg aWYgKGlkLm1pbmltdW1TaXplKCkgPT0gMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgIHNlcnZp Y2VJbmZvLnNldFNlcnZpY2VVdWlkKGlkKTsKKy0gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJ bmZvLnNldFNlcnZpY2VOYW1lKFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OnRyKCJD dXN0b20gU2VydmljZSIpKTsKKysgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlSW5mby5z ZXJ2aWNlTmFtZSgpLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZp Y2VJbmZvLnNldFNlcnZpY2VOYW1lKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OnRyKCJDdXN0b20gU2VydmljZSIp KTsKKysgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIFFCbHVldG9v dGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2UgbW9kU2VxID0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmljZUluZm8uYXR0cmlidXRlKFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2Vydmlj ZUNsYXNzSWRzKS52YWx1ZTxRQmx1ZXRvb3RoU2VydmljZUluZm86OlNlcXVlbmNlPigpOworICAg ICAgICAgICAgICAgICAgICAgbW9kU2VxLnJlbW92ZU9uZShRVmFyaWFudDo6ZnJvbVZhbHVlKGlk KSk7CitAQCAtMzM0LDggKzMzNywxMCBAQCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5 QWdlbnRQcml2YXRlOjpfcV9maW5pc2hTZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNlRAorICAgICAg ICAgICAgICAgICBxQ0RlYnVnKFFUX0JUX0JMVUVaKSA8PCAiRGlzY292ZXJlZCBzZXJ2aWNlcyIg PDwgZGlzY292ZXJlZERldmljZXMuYXQoMCkuYWRkcmVzcygpLnRvU3RyaW5nKCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc2VydmljZUluZm8uc2VydmljZU5hbWUo KSA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlVXVpZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDw8ICI+Pj4iIDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VDbGFzc1V1aWRzKCk7 CistCistICAgICAgICAgICAgICAgIGVtaXQgcS0+c2VydmljZURpc2NvdmVyZWQoc2VydmljZUlu Zm8pOworKyAgICAgICAgICAgICAgICAvLyBVc2UgcXVldWVkIGNvbm5lY3Rpb24gdG8gYWxsb3cg dXMgZmluaXNoIHRoZSBzZXJ2aWNlIGxvb3Bpbmc7IHRoZSBhcHBsaWNhdGlvbgorKyAgICAgICAg ICAgICAgICAvLyBtaWdodCBjYWxsIHN0b3AoKSB3aGVuIGl0IGhhcyBkZXRlY3RlZCB0aGUgc2Vy dmljZS1vZi1pbnRlcmVzdC4KKysgICAgICAgICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1l dGhvZChxLCAic2VydmljZURpc2NvdmVyZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlvbiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRX0FSRyhRQmx1ZXRvb3RoU2Vy dmljZUluZm8sIHNlcnZpY2VJbmZvKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAg ICB9CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Ro c29ja2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tl dC5jcHAKK2luZGV4IGU0ZDg1NDQ3Li5hYWRkNDc1NSAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKK0BAIC01OTMsNyArNTkzLDcg QEAgdm9pZCBRQmx1ZXRvb3RoU29ja2V0OjpzZXRTb2NrZXRTdGF0ZShRQmx1ZXRvb3RoU29ja2V0 OjpTb2NrZXRTdGF0ZSBzdGF0ZSkKKyBib29sIFFCbHVldG9vdGhTb2NrZXQ6OmNhblJlYWRMaW5l KCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRQmx1ZXRvb3RoU29ja2V0QmFzZSk7CistICAg IHJldHVybiBkLT5jYW5SZWFkTGluZSgpOworKyAgICByZXR1cm4gZC0+Y2FuUmVhZExpbmUoKSB8 fCBRSU9EZXZpY2U6OmNhblJlYWRMaW5lKCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0 Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3Bw IGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1 cy5jcHAKK2luZGV4IDA4NGFhOTU4Li5kNmFhMTdhNyAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCisrKysgYi9x dGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNw cAorQEAgLTI4NCw2ICsyODQsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU29ja2V0UHJpdmF0ZUJsdWV6 REJ1czo6Y29ubmVjdFRvU2VydmljZSgKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorKyAg ICBpZiAoc2VydmljZS5zb2NrZXRQcm90b2NvbCgpICE9IFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6 UHJvdG9jb2w6OlVua25vd25Qcm90b2NvbCkKKysgICAgICAgIHNvY2tldFR5cGUgPSBzZXJ2aWNl LnNvY2tldFByb3RvY29sKCk7CisrICAgIHFDRGVidWcoUVRfQlRfQkxVRVopIDw8ICJTb2NrZXQg cHJvdG9jb2wgdXNlZDoiIDw8IHNvY2tldFR5cGU7CisrCisgICAgIGNvbm5lY3RUb1NlcnZpY2Uo c2VydmljZS5kZXZpY2UoKS5hZGRyZXNzKCksIHRhcmdldFNlcnZpY2UsIG9wZW5Nb2RlKTsKKyB9 CisgCitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29j a2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8v cWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKK2luZGV4IDA1YmMxYTBm Li5hN2I1ZWYxZiAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0 b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5 L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKK0BA IC0xNDIsNyArMTQyLDcgQEAgdm9pZCB0c3RfUUJsdWV0b290aFNvY2tldDo6aW5pdFRlc3RDYXNl KCkKKyAgICAgcURlYnVnKCkgPDwgIlN0YXJ0aW5nIGRpc2NvdmVyeSI7CisgCisgICAgIHNkYS0+ c2V0VXVpZEZpbHRlcihRQmx1ZXRvb3RoVXVpZChRU3RyaW5nKFRFU1RfU0VSVklDRV9VVUlEKSkp OworLSAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6Ok1pbmlt YWxEaXNjb3ZlcnkpOworKyAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5 QWdlbnQ6OkZ1bGxEaXNjb3ZlcnkpOworIAorICAgICBmb3IgKGludCBjb25uZWN0VGltZSA9IE1h eENvbm5lY3RUaW1lOyAhZG9uZV9kaXNjb3ZlcnkgJiYgY29ubmVjdFRpbWUgPiAwOyBjb25uZWN0 VGltZSAtPSAxMDAwKQorICAgICAgICAgUVRlc3Q6OnFXYWl0KDEwMDApOworU3VibW9kdWxlIHF0 ZGVjbGFyYXRpdmUgZjU3MDFmMGQuLjhkZWZlN2JmOgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRp dmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK2luZGV4IGI2NWI5OTRk NmMuLjE1YThjZDY4NzggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9u L3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2Nv bW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK0BAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK KyAgICAgICAgIGlmIChRVHlwZUluZm88VD46OmlzQ29tcGxleCkgeworICAgICAgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICAgbmV3IChkYXRh ICsgaSkgVCh2ZWN0b3IuYXQoaSkpOworLSAgICAgICAgfSBlbHNlIHsKKysgICAgICAgIH0gZWxz ZSBpZiAoY291bnQpIHsKKyAgICAgICAgICAgICBtZW1jcHkoZGF0YSwgc3RhdGljX2Nhc3Q8Y29u c3Qgdm9pZCo+KHZlY3Rvci5jb25zdERhdGEoKSksIGNvdW50ICogc2l6ZW9mKFQpKTsKKyAgICAg ICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRp bWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGlt ZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKK2luZGV4IGU1N2NkZDgyNzguLjk0NjEzNTk4YWYgMTAw NjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFw cGVyLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0 d3JhcHBlci5jcHAKK0BAIC0xMTQ1LDggKzExNDUsNyBAQCB2b2lkIEhlYXA6OlFPYmplY3RXcmFw cGVyOjptYXJrT2JqZWN0cyhIZWFwOjpCYXNlICp0aGF0LCBRVjQ6Ok1hcmtTdGFjayAqbWFya1N0 YQorIHZvaWQgUU9iamVjdFdyYXBwZXI6OmRlc3Ryb3lPYmplY3QoYm9vbCBsYXN0Q2FsbCkKKyB7 CisgICAgIEhlYXA6OlFPYmplY3RXcmFwcGVyICpoID0gZCgpOworLSAgICBpZiAoIWgtPmludGVy bmFsQ2xhc3MpCistICAgICAgICByZXR1cm47IC8vIGRlc3Ryb3lPYmplY3QgYWxyZWFkeSBnb3Qg Y2FsbGVkCisrICAgIFFfQVNTRVJUKGgtPmludGVybmFsQ2xhc3MpOworIAorICAgICBpZiAoaC0+ b2JqZWN0KCkpIHsKKyAgICAgICAgIFFRbWxEYXRhICpkZGF0YSA9IFFRbWxEYXRhOjpnZXQoaC0+ b2JqZWN0KCksIGZhbHNlKTsKK0BAIC0xMTc2LDcgKzExNzUsNyBAQCB2b2lkIFFPYmplY3RXcmFw cGVyOjpkZXN0cm95T2JqZWN0KGJvb2wgbGFzdENhbGwpCisgICAgICAgICB9CisgICAgIH0KKyAK Ky0gICAgaC0+fkRhdGEoKTsKKysgICAgaC0+ZGVzdHJveSgpOworIH0KKyAKKyAKK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcCBiL3F0ZGVjbGFyYXRp dmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitpbmRleCAwNmNhZjA0ZTVhLi5kYTE0OWE2N2M0 IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKKysr KyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitAQCAtOTgxLDcgKzk4 MSw3IEBAIHZvaWQgTWVtb3J5TWFuYWdlcjo6c3dlZXAoYm9vbCBsYXN0U3dlZXAsIENsYXNzRGVz dHJveVN0YXRzQ2FsbGJhY2sgY2xhc3NDb3VudFB0CisgCisgICAgIGlmIChNdWx0aXBseVdyYXBw ZWRRT2JqZWN0TWFwICptdWx0aXBseVdyYXBwZWRRT2JqZWN0cyA9IGVuZ2luZS0+bV9tdWx0aXBs eVdyYXBwZWRRT2JqZWN0cykgeworICAgICAgICAgZm9yIChNdWx0aXBseVdyYXBwZWRRT2JqZWN0 TWFwOjpJdGVyYXRvciBpdCA9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5iZWdpbigpOyBpdCAh PSBtdWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+ZW5kKCk7KSB7CistICAgICAgICAgICAgaWYgKCFp dC52YWx1ZSgpLmlzTnVsbE9yVW5kZWZpbmVkKCkpCisrICAgICAgICAgICAgaWYgKGl0LnZhbHVl KCkuaXNOdWxsT3JVbmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICAgaXQgPSBtdWx0aXBseVdy YXBwZWRRT2JqZWN0cy0+ZXJhc2UoaXQpOworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg ICAgICAgKytpdDsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFt bGRlbGVnYXRlbW9kZWwuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxl Z2F0ZW1vZGVsLmNwcAoraW5kZXggMjA3OWE4ZWQwNC4uYTU3N2NiMjM1MSAxMDA2NDQKKy0tLSBh L3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKKysrKyBi L3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK0BAIC0z ODksNiArMzg5LDEyIEBAIHZvaWQgUVFtbERlbGVnYXRlTW9kZWxQcml2YXRlOjpjb25uZWN0VG9B YnN0cmFjdEl0ZW1Nb2RlbCgpCisgICAgICAgICAgICAgICAgICAgICAgIHEsICBRUW1sRGVsZWdh dGVNb2RlbCwgU0xPVChfcV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworICAg ICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKHJvd3NB Ym91dFRvQmVSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgcSwgIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVk KFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFi c3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxp bnQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1Qo X3FfY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVj dF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc1JlbW92ZWQo UU1vZGVsSW5kZXgsaW50LGludCkpLAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVs ZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkp OworKyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFM KGNvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAorKyAg ICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5z TW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSk7CisgICAgIHFtbG9i amVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoZGF0YUNoYW5nZWQo UU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSksCisgICAgICAgICAgICAgICAg ICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2RhdGFDaGFuZ2VkKFFNb2RlbElu ZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3Qo YWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChyb3dzTW92ZWQoUU1vZGVsSW5kZXgsaW50 LGludCxRTW9kZWxJbmRleCxpbnQpKSwKK0BAIC00MTMsNiArNDE5LDEyIEBAIHZvaWQgUVFtbERl bGVnYXRlTW9kZWxQcml2YXRlOjpkaXNjb25uZWN0RnJvbUFic3RyYWN0SXRlbU1vZGVsKCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVkKFFN b2RlbEluZGV4LGludCxpbnQpKSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdO QUwocm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAgICAgICAgICAg ICAgICAgIHEsIFNMT1QoX3Ffcm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysg ICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVs SW5kZXgsaW50LGludCkpLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29s dW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6OmRpc2Nv bm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLCBx LAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc1JlbW92ZWQoUU1vZGVs SW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChj b2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwgcSwKKysg ICAgICAgICAgICAgICAgICAgICAgICBTTE9UKF9xX2NvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxp bnQsaW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0s IFNJR05BTChkYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4p KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX2RhdGFDaGFuZ2VkKFFNb2Rl bEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29u bmVjdChhaW0sIFNJR05BTChyb3dzTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRl eCxpbnQpKSwKK0BAIC0xOTczLDYgKzE5ODUsMzggQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6 X3Ffcm93c01vdmVkKAorICAgICB9CisgfQorIAorK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9x X2NvbHVtbnNJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGlu dCBlbmQpCisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChl bmQpOworKyAgICBpZiAocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBi ZWdpbiA9PSAwKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisrICAg ICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOworKyAg ICB9CisrfQorKworK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNSZW1vdmVkKGNv bnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCkKKyt7CisrICAgIFFf RChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlmIChwYXJl bnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2luID09IDApIHsKKysgICAg ICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdl ZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBR UW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc01vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJl bnQsIGludCBzdGFydCwgaW50IGVuZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgUU1vZGVsSW5kZXggJmRlc3RpbmF0aW9uLCBpbnQgY29sdW1uKQorK3sK KysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAg aWYgKChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIHN0YXJ0ID09IDAp CisrICAgICAgICB8fCAoZGVzdGluYXRpb24gPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4 ICYmIGNvbHVtbiA9PSAwKSkgeworKyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMgYXMgY2hhbmdl ZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0b3I8aW50Pigp KTsKKysgICAgfQorK30KKysKKyB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9kYXRhQ2hhbmdl ZChjb25zdCBRTW9kZWxJbmRleCAmYmVnaW4sIGNvbnN0IFFNb2RlbEluZGV4ICZlbmQsIGNvbnN0 IFFWZWN0b3I8aW50PiAmcm9sZXMpCisgeworICAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOwor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2Rl bF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5o CitpbmRleCA4YWFiNGJhZGNhLi5kMTQwYmZiYWFmIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorQEAgLTE1Miw2ICsxNTIsOSBA QCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgX3FfaXRlbXNNb3ZlZChpbnQgZnJvbSwgaW50 IHRvLCBpbnQgY291bnQpOworICAgICB2b2lkIF9xX21vZGVsUmVzZXQoKTsKKyAgICAgdm9pZCBf cV9yb3dzSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJixpbnQsaW50KTsKKysgICAgdm9pZCBf cV9jb2x1bW5zSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQpOworKyAgICB2 b2lkIF9xX2NvbHVtbnNSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50KTsKKysg ICAgdm9pZCBfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQsIGNv bnN0IFFNb2RlbEluZGV4ICYsIGludCk7CisgICAgIHZvaWQgX3Ffcm93c0Fib3V0VG9CZVJlbW92 ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKTsKKyAgICAg dm9pZCBfcV9yb3dzUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQpOworICAgICB2 b2lkIF9xX3Jvd3NNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwgY29uc3QgUU1v ZGVsSW5kZXggJiwgaW50KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9h Y2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitpbmRleCA4NTcxOWZkYzgw Li43OGUyYWIzMDJjIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNz aWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitAQCAtNDYsNiArNDYsNyBA QAorICNpbmNsdWRlICJRdFF1aWNrL3ByaXZhdGUvcXF1aWNrdGV4dGlucHV0X3AuaCIKKyAjaW5j bHVkZSAiUXRRdWljay9wcml2YXRlL3FxdWlja2FjY2Vzc2libGVhdHRhY2hlZF9wLmgiCisgI2lu Y2x1ZGUgIlF0UXVpY2svcXF1aWNrdGV4dGRvY3VtZW50LmgiCisrI2luY2x1ZGUgIlF0UXVpY2sv cXF1aWNrcmVuZGVyY29udHJvbC5oIgorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICNpZiBRVF9D T05GSUcoYWNjZXNzaWJpbGl0eSkKK0BAIC01Nyw3ICs1OCwxOSBAQCBRQWNjZXNzaWJsZVF1aWNr SXRlbTo6UUFjY2Vzc2libGVRdWlja0l0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyAKKyBRV2luZG93 ICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6d2luZG93KCkgY29uc3QKKyB7CistICAgIHJldHVybiBp dGVtKCktPndpbmRvdygpOworKyAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGl0ZW0oKS0+d2lu ZG93KCk7CisrCisrICAgIC8vIEZvciBRUXVpY2tXaWRnZXQgdGhlIGFib3ZlIHdpbmRvdyB3aWxs IGJlIHRoZSBvZmZzY3JlZW4gUVF1aWNrV2luZG93LAorKyAgICAvLyB3aGljaCBpcyBub3QgYSBw YXJ0IG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIERldGVjdCB0aGlzIGNhc2UgYW5kCisrICAg IC8vIHJldHVybiB0aGUgd2luZG93IGZvciB0aGUgUVF1aWNrV2lkZ2V0IGluc3RlYWQuCisrICAg IGlmICh3aW5kb3cgJiYgIXdpbmRvdy0+aGFuZGxlKCkpIHsKKysgICAgICAgIGlmIChRUXVpY2tS ZW5kZXJDb250cm9sICpyZW5kZXJDb250cm9sID0gUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KHdp bmRvdyktPnJlbmRlckNvbnRyb2wpIHsKKysgICAgICAgICAgICBpZiAoUVdpbmRvdyAqcmVuZGVy V2luZG93ID0gcmVuZGVyQ29udHJvbC0+cmVuZGVyV2luZG93KG51bGxwdHIpKQorKyAgICAgICAg ICAgICAgICByZXR1cm4gcmVuZGVyV2luZG93OworKyAgICAgICAgfQorKyAgICB9CisrCisrICAg IHJldHVybiB3aW5kb3c7CisgfQorIAorIGludCBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6Y2hpbGRD b3VudCgpIGNvbnN0CitAQCAtMTEzLDE5ICsxMjYsMTUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2Ug KlFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QKKyBRQWNj ZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja0l0ZW06OnBhcmVudCgpIGNvbnN0Cisg eworICAgICBRUXVpY2tJdGVtICpwYXJlbnQgPSBpdGVtKCktPnBhcmVudEl0ZW0oKTsKKy0gICAg UVF1aWNrV2luZG93ICp3aW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworLSAgICBRUXVpY2tJdGVt ICpjaSA9IHdpbmRvdyA/IHdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7CisrICAgIFFR dWlja1dpbmRvdyAqaXRlbVdpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CisrICAgIFFRdWlja0l0 ZW0gKmNpID0gaXRlbVdpbmRvdyA/IGl0ZW1XaW5kb3ctPmNvbnRlbnRJdGVtKCkgOiBudWxscHRy OworICAgICB3aGlsZSAocGFyZW50ICYmICFRUXVpY2tJdGVtUHJpdmF0ZTo6Z2V0KHBhcmVudCkt PmlzQWNjZXNzaWJsZSAmJiBwYXJlbnQgIT0gY2kpCisgICAgICAgICBwYXJlbnQgPSBwYXJlbnQt PnBhcmVudEl0ZW0oKTsKKyAKKyAgICAgaWYgKHBhcmVudCkgeworICAgICAgICAgaWYgKHBhcmVu dCA9PSBjaSkgeworLSAgICAgICAgICAgIC8vIEp1bXAgb3V0IHRvIHRoZSBzY2VuZSB3aWRnZXQg aWYgdGhlIHBhcmVudCBpcyB0aGUgcm9vdCBpdGVtLgorLSAgICAgICAgICAgIC8vIFRoZXJlIGFy ZSB0d28gcm9vdCBpdGVtcywgUVF1aWNrV2luZG93Ojpyb290SXRlbSBhbmQKKy0gICAgICAgICAg ICAvLyBRUXVpY2tWaWV3OjpkZWNsYXJhdGl2ZVJvb3QuIFRoZSBmb3JtZXIgaXMgdGhlIHRydWUg cm9vdCBpdGVtLAorLSAgICAgICAgICAgIC8vIGJ1dCBpcyBub3QgYSBwYXJ0IG9mIHRoZSBhY2Nl c3NpYmlsaXR5IHRyZWUuIENoZWNrIGlmIHdlIGhpdAorLSAgICAgICAgICAgIC8vIGl0IGhlcmUg YW5kIHJldHVybiBhbiBpbnRlcmZhY2UgZm9yIHRoZSBzY2VuZSBpbnN0ZWFkLgorLSAgICAgICAg ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKHdpbmRvdyk7 CisrICAgICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhlIHdpbmRvdyBpZiB0aGUgcGFyZW50IGlz IHRoZSByb290IGl0ZW0KKysgICAgICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5QWNj ZXNzaWJsZUludGVyZmFjZSh3aW5kb3coKSk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgIHdoaWxlIChwYXJlbnQgJiYgIXBhcmVudC0+ZF9mdW5jKCktPmlzQWNjZXNzaWJsZSkKKyAg ICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRJdGVtKCk7CitAQCAtMTg4LDcg KzE5Nyw3IEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6c3RhdGUo KSBjb25zdAorICAgICBRUmVjdCB2aWV3UmVjdF8gPSB2aWV3UmVjdCgpOworICAgICBRUmVjdCBp dGVtUmVjdCA9IHJlY3QoKTsKKyAKKy0gICAgaWYgKHZpZXdSZWN0Xy5pc051bGwoKSB8fCBpdGVt UmVjdC5pc051bGwoKSB8fCAhaXRlbSgpLT53aW5kb3coKSB8fCAhaXRlbSgpLT53aW5kb3coKS0+ aXNWaXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zpc2libGUoKSB8fCBxRnV6enlJc051bGwoaXRlbSgp LT5vcGFjaXR5KCkpKQorKyAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0ZW1SZWN0Lmlz TnVsbCgpIHx8ICF3aW5kb3coKSB8fCAhd2luZG93KCktPmlzVmlzaWJsZSgpIHx8IWl0ZW0oKS0+ aXNWaXNpYmxlKCkgfHwgcUZ1enp5SXNOdWxsKGl0ZW0oKS0+b3BhY2l0eSgpKSkKKyAgICAgICAg IHN0YXRlLmludmlzaWJsZSA9IHRydWU7CisgICAgIGlmICghdmlld1JlY3RfLmludGVyc2VjdHMo aXRlbVJlY3QpKQorICAgICAgICAgc3RhdGUub2Zmc2NyZWVuID0gdHJ1ZTsKK0BAIC0yMDEsNiAr MjEwLDEwIEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6c3RhdGUo KSBjb25zdAorICAgICBpZiAocm9sZSgpID09IFFBY2Nlc3NpYmxlOjpFZGl0YWJsZVRleHQpCisg ICAgICAgICBpZiAoYXV0byB0aSA9IHFvYmplY3RfY2FzdDxRUXVpY2tUZXh0SW5wdXQgKj4oaXRl bSgpKSkKKyAgICAgICAgICAgICBzdGF0ZS5wYXNzd29yZEVkaXQgPSB0aS0+ZWNob01vZGUoKSAh PSBRUXVpY2tUZXh0SW5wdXQ6Ok5vcm1hbDsKKysgICAgaWYgKCFpdGVtKCktPmlzRW5hYmxlZCgp KSB7CisrICAgICAgICBzdGF0ZS5mb2N1c2FibGUgPSBmYWxzZTsKKysgICAgICAgIHN0YXRlLmRp c2FibGVkID0gdHJ1ZTsKKysgICAgfQorICAgICByZXR1cm4gc3RhdGU7CisgfQorIAorZGlmZiAt LWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlj a3ZpZXdfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJs ZXF1aWNrdmlld19wLmgKK2luZGV4IDM5ZmZjYWYzOWMuLjhiYWEwMTMzMGMgMTAwNjQ0CistLS0g YS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3 X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJs ZXF1aWNrdmlld19wLmgKK0BAIC01OCw3ICs1OCw3IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAor ICNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKyAKKy1jbGFzcyBRQWNjZXNzaWJsZVF1aWNr V2luZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0CisrY2xhc3MgUV9RVUlDS19FWFBPUlQg UUFjY2Vzc2libGVRdWlja1dpbmRvdyA6IHB1YmxpYyBRQWNjZXNzaWJsZU9iamVjdAorIHsKKyBw dWJsaWM6CisgICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3coUVF1aWNrV2luZG93ICpvYmplY3Qp OworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcu Y3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKK2luZGV4 IDgzMjFmY2ZlZWQuLjM4MzA3OGIzYjkgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNrZHJhZy5jcHAKK0BAIC00ODEsNyArNDgxLDkgQEAgdm9pZCBRUXVpY2tEcmFn QXR0YWNoZWQ6OnNldEtleXMoY29uc3QgUVN0cmluZ0xpc3QgJmtleXMpCisgICAgIFxxbWxhdHRh Y2hlZHByb3BlcnR5IHN0cmluZ2xpc3QgUXRRdWljazo6RHJhZzo6bWltZURhdGEKKyAgICAgXHNp bmNlIDUuMgorIAorLSAgICBUaGlzIHByb3BlcnR5IGhvbGRzIGEgbWFwIG9mIG1pbWVEYXRhIHRo YXQgaXMgdXNlZCBkdXJpbmcgc3RhcnREcmFnLgorKyAgICBUaGlzIHByb3BlcnR5IGhvbGRzIGEg bWFwIGZyb20gbWltZSB0eXBlIHRvIGRhdGEgdGhhdCBpcyB1c2VkIGR1cmluZyBzdGFydERyYWcu CisrICAgIFRoZSBtaW1lIGRhdGEgbmVlZHMgdG8gYmUgYSBcYyBzdHJpbmcsIG9yIGFuIFxjIEFy cmF5QnVmZmVyIHdpdGggdGhlIGRhdGEgZW5jb2RlZAorKyAgICBhY2NvcmRpbmcgdG8gdGhlIG1p bWUgdHlwZS4KKyAqLworIAorIFFWYXJpYW50TWFwIFFRdWlja0RyYWdBdHRhY2hlZDo6bWltZURh dGEoKSBjb25zdAorQEAgLTc2Niw4ICs3NjgsMTIgQEAgUXQ6OkRyb3BBY3Rpb24gUVF1aWNrRHJh Z0F0dGFjaGVkUHJpdmF0ZTo6c3RhcnREcmFnKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3QK KyAgICAgUURyYWcgKmRyYWcgPSBuZXcgUURyYWcoc291cmNlID8gc291cmNlIDogcSk7CisgICAg IFFNaW1lRGF0YSAqbWltZURhdGEgPSBuZXcgUU1pbWVEYXRhKCk7CisgCistICAgIGZvciAoYXV0 byBpdCA9IGV4dGVybmFsTWltZURhdGEuY2JlZ2luKCksIGVuZCA9IGV4dGVybmFsTWltZURhdGEu Y2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCistICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5r ZXkoKSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAgZm9yIChhdXRvIGl0 ID0gZXh0ZXJuYWxNaW1lRGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1lRGF0YS5jZW5k KCk7IGl0ICE9IGVuZDsgKytpdCkgeworKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PFFNZXRhVHlw ZTo6VHlwZT4oaXQudmFsdWUoKS50eXBlKCkpID09IFFNZXRhVHlwZTo6UUJ5dGVBcnJheSkKKysg ICAgICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5rZXkoKSwgaXQudmFsdWUoKS50b0J5dGVB cnJheSgpKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShp dC5rZXkoKSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAgfQorIAorICAg ICBkcmFnLT5zZXRNaW1lRGF0YShtaW1lRGF0YSk7CisgICAgIGlmIChwaXhtYXBMb2FkZXIuaXNS ZWFkeSgpKSB7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNraXRlbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNw cAoraW5kZXggNzVmMTQ1NzgxNi4uZGVjMGFlMTlhZSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAorQEAgLTU5LDYgKzU5LDcgQEAKKyAjaW5jbHVk ZSA8UXRDb3JlL3ByaXZhdGUvcW51bWVyaWNfcC5oPgorICNpbmNsdWRlIDxRdEd1aS9xcGEvcXBs YXRmb3JtdGhlbWUuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3Fsb2dnaW5nY2F0ZWdvcnkuaD4KKysj aW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWR1cGxpY2F0ZXRyYWNrZXJfcC5oPgorIAorICNpbmNs dWRlIDxwcml2YXRlL3FxbWxnbG9iYWxfcC5oPgorICNpbmNsdWRlIDxwcml2YXRlL3FxbWxlbmdp bmVfcC5oPgorQEAgLTIzMjYsNiArMjMyNyw3IEBAIFFRdWlja0l0ZW06OlFRdWlja0l0ZW0oUVF1 aWNrSXRlbVByaXZhdGUgJmRkLCBRUXVpY2tJdGVtICpwYXJlbnQpCisgUVF1aWNrSXRlbTo6flFR dWlja0l0ZW0oKQorIHsKKyAgICAgUV9EKFFRdWlja0l0ZW0pOworKyAgICBkLT5pbkRlc3RydWN0 b3IgPSB0cnVlOworIAorICAgICBpZiAoZC0+d2luZG93UmVmQ291bnQgPiAxKQorICAgICAgICAg ZC0+d2luZG93UmVmQ291bnQgPSAxOyAvLyBNYWtlIHN1cmUgd2luZG93IGlzIHNldCB0byBudWxs IGluIG5leHQgY2FsbCB0byBkZXJlZldpbmRvdygpLgorQEAgLTI1MjYsNiArMjUyOCw3IEBAIFFR dWlja0l0ZW0qIFFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW4o UVF1aWNrSXRlbSAqaXRlbSwgYm9vCisgICAgIFFRdWlja0l0ZW0gKmN1cnJlbnQgPSBpdGVtOwor ICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0 ZW1JblRhYkZvY3VzQ2hhaW46IHN0YXJ0SXRlbToiIDw8IHN0YXJ0SXRlbTsKKyAgICAgcUNEZWJ1 ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1 c0NoYWluOiBmaXJzdEZyb21JdGVtOiIgPDwgZmlyc3RGcm9tSXRlbTsKKysgICAgUUR1cGxpY2F0 ZVRyYWNrZXI8UVF1aWNrSXRlbSAqPiBjeWNsZURldGVjdG9yOworICAgICBkbyB7CisgICAgICAg ICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1J blRhYkZvY3VzQ2hhaW46IGN1cnJlbnQ6IiA8PCBjdXJyZW50OworICAgICAgICAgcUNEZWJ1ZyhE QkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0No YWluOiBmcm9tOiIgPDwgZnJvbTsKK0BAIC0yNTkyLDcgKzI1OTUsMTAgQEAgUVF1aWNrSXRlbSog UVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihRUXVpY2tJdGVt ICppdGVtLCBib28KKyAgICAgICAgIC8vIHRyYXZlcnNlZCBhbGwgb2YgdGhlIGNoYWluIChieSBj b21wYXJlIHRoZSBbY3VycmVudF0gaXRlbSB3aXRoIFtzdGFydEl0ZW1dKQorICAgICAgICAgLy8g U2luY2UgdGhlIFtzdGFydEl0ZW1dIG1pZ2h0IGJlIHByb21vdGVkIHRvIGl0cyBwYXJlbnQgaWYg aXQgaXMgaW52aXNpYmxlLAorICAgICAgICAgLy8gd2Ugc3RpbGwgaGF2ZSB0byBjaGVjayBbY3Vy cmVudF0gaXRlbSB3aXRoIG9yaWdpbmFsIHN0YXJ0IGl0ZW0KKy0gICAgICAgIGlmICgoY3VycmVu dCA9PSBzdGFydEl0ZW0gfHwgY3VycmVudCA9PSBvcmlnaW5hbFN0YXJ0SXRlbSkgJiYgZnJvbSA9 PSBmaXJzdEZyb21JdGVtKSB7CisrICAgICAgICAvLyBXZSBtaWdodCBhbHNvIHJ1biBpbnRvIGEg Y3ljbGUgYmVmb3JlIHdlIHJlYWNoIGZpcnN0RnJvbUl0ZW0gYWdhaW4KKysgICAgICAgIC8vIGJ1 dCBub3RlIHRoYXQgd2UgaGF2ZSB0byBpZ25vcmUgY3VycmVudCBpZiB3ZSBhcmUgbWVhbnQgdG8g c2tpcCBpdAorKyAgICAgICAgaWYgKCgoY3VycmVudCA9PSBzdGFydEl0ZW0gfHwgY3VycmVudCA9 PSBvcmlnaW5hbFN0YXJ0SXRlbSkgJiYgZnJvbSA9PSBmaXJzdEZyb21JdGVtKSB8fAorKyAgICAg ICAgICAgICAgICAoIXNraXAgJiYgY3ljbGVEZXRlY3Rvci5oYXNTZWVuKGN1cnJlbnQpKSkgewor ICAgICAgICAgICAgIC8vIHdyYXBwZWQgYXJvdW5kLCBhdm9pZCBlbmRsZXNzIGxvb3BzCisgICAg ICAgICAgICAgaWYgKGl0ZW0gPT0gY29udGVudEl0ZW0pIHsKKyAgICAgICAgICAgICAgICAgcUNE ZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJG b2N1c0NoYWluOiBsb29wZWQsIHJldHVybiBjb250ZW50SXRlbSI7CitAQCAtMjY4OSw5ICsyNjk1 LDggQEAgdm9pZCBRUXVpY2tJdGVtOjpzZXRQYXJlbnRJdGVtKFFRdWlja0l0ZW0gKnBhcmVudEl0 ZW0pCisgCisgICAgICAgICBjb25zdCBib29sIHdhc1Zpc2libGUgPSBpc1Zpc2libGUoKTsKKyAg ICAgICAgIG9wLT5yZW1vdmVDaGlsZCh0aGlzKTsKKy0gICAgICAgIGlmICh3YXNWaXNpYmxlKSB7 CisrICAgICAgICBpZiAod2FzVmlzaWJsZSAmJiAhb3AtPmluRGVzdHJ1Y3RvcikKKyAgICAgICAg ICAgICBlbWl0IG9sZFBhcmVudEl0ZW0tPnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKy0gICAg ICAgIH0KKyAgICAgfSBlbHNlIGlmIChkLT53aW5kb3cpIHsKKyAgICAgICAgIFFRdWlja1dpbmRv d1ByaXZhdGU6OmdldChkLT53aW5kb3cpLT5wYXJlbnRsZXNzSXRlbXMucmVtb3ZlKHRoaXMpOwor ICAgICB9CitAQCAtMjc2OCw4ICsyNzczLDkgQEAgdm9pZCBRUXVpY2tJdGVtOjpzZXRQYXJlbnRJ dGVtKFFRdWlja0l0ZW0gKnBhcmVudEl0ZW0pCisgCisgICAgIGQtPml0ZW1DaGFuZ2UoSXRlbVBh cmVudEhhc0NoYW5nZWQsIGQtPnBhcmVudEl0ZW0pOworIAorLSAgICBlbWl0IHBhcmVudENoYW5n ZWQoZC0+cGFyZW50SXRlbSk7CistICAgIGlmIChpc1Zpc2libGUoKSAmJiBkLT5wYXJlbnRJdGVt KQorKyAgICBpZiAoIWQtPmluRGVzdHJ1Y3RvcikKKysgICAgICAgIGVtaXQgcGFyZW50Q2hhbmdl ZChkLT5wYXJlbnRJdGVtKTsKKysgICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVudEl0ZW0g JiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQoZC0+cGFyZW50SXRlbSktPmluRGVzdHJ1Y3RvcikK KyAgICAgICAgIGVtaXQgZC0+cGFyZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOwor IH0KKyAKK0BAIC0yOTY1LDcgKzI5NzEsOCBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpyZW1v dmVDaGlsZChRUXVpY2tJdGVtICpjaGlsZCkKKyAKKyAgICAgaXRlbUNoYW5nZShRUXVpY2tJdGVt OjpJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlLCBjaGlsZCk7CisgCistICAgIGVtaXQgcS0+Y2hpbGRy ZW5DaGFuZ2VkKCk7CisrICAgIGlmICghaW5EZXN0cnVjdG9yKQorKyAgICAgICAgZW1pdCBxLT5j aGlsZHJlbkNoYW5nZWQoKTsKKyB9CisgCisgdm9pZCBRUXVpY2tJdGVtUHJpdmF0ZTo6cmVmV2lu ZG93KFFRdWlja1dpbmRvdyAqYykKK0BAIC0zMTk0LDYgKzMyMDEsNyBAQCBRUXVpY2tJdGVtUHJp dmF0ZTo6UVF1aWNrSXRlbVByaXZhdGUoKQorICAgICAsIHRvdWNoRW5hYmxlZChmYWxzZSkKKyAj ZW5kaWYKKyAgICAgLCBoYXNDdXJzb3JIYW5kbGVyKGZhbHNlKQorKyAgICAsIGluRGVzdHJ1Y3Rv cihmYWxzZSkKKyAgICAgLCBkaXJ0eUF0dHJpYnV0ZXMoMCkKKyAgICAgLCBuZXh0RGlydHlJdGVt KG51bGxwdHIpCisgICAgICwgcHJldkRpcnR5SXRlbShudWxscHRyKQorQEAgLTUxMjAsNiArNTEy OCwxMyBAQCB2b2lkIFFRdWlja0l0ZW06OmNvbXBvbmVudENvbXBsZXRlKCkKKyAgICAgICAgIGQt PmFkZFRvRGlydHlMaXN0KCk7CisgICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQoZC0+ d2luZG93KS0+ZGlydHlJdGVtKHRoaXMpOworICAgICB9CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nl c3NpYmlsaXR5KQorKyAgICBpZiAoZC0+aXNBY2Nlc3NpYmxlICYmIGQtPmVmZmVjdGl2ZVZpc2li bGUpIHsKKysgICAgICAgIFFBY2Nlc3NpYmxlRXZlbnQgZXYodGhpcywgUUFjY2Vzc2libGU6Ok9i amVjdFNob3cpOworKyAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vzc2liaWxpdHkoJmV2 KTsKKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyBRUXVpY2tTdGF0ZUdyb3VwICpRUXVpY2tJdGVt UHJpdmF0ZTo6X3N0YXRlcygpCitAQCAtNjEwNiw5ICs2MTIxLDExIEBAIGJvb2wgUVF1aWNrSXRl bVByaXZhdGU6OnNldEVmZmVjdGl2ZVZpc2libGVSZWN1cihib29sIG5ld0VmZmVjdGl2ZVZpc2li bGUpCisgICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworICAg ICB9CisgI2VuZGlmCistICAgIGVtaXQgcS0+dmlzaWJsZUNoYW5nZWQoKTsKKy0gICAgaWYgKGNo aWxkVmlzaWJpbGl0eUNoYW5nZWQpCistICAgICAgICBlbWl0IHEtPnZpc2libGVDaGlsZHJlbkNo YW5nZWQoKTsKKysgICAgaWYgKCFpbkRlc3RydWN0b3IpIHsKKysgICAgICAgIGVtaXQgcS0+dmlz aWJsZUNoYW5nZWQoKTsKKysgICAgICAgIGlmIChjaGlsZFZpc2liaWxpdHlDaGFuZ2VkKQorKyAg ICAgICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICB9CisgCisg ICAgIHJldHVybiB0cnVlOyAgICAvLyBlZmZlY3RpdmUgdmlzaWJpbGl0eSBESUQgY2hhbmdlCisg fQorQEAgLTYxNTcsNiArNjE3NCwxNSBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpzZXRFZmZl Y3RpdmVFbmFibGVSZWN1cihRUXVpY2tJdGVtICpzY29wZSwgYm9vbCBuZXdFZmZlYworICAgICB9 CisgCisgICAgIGl0ZW1DaGFuZ2UoUVF1aWNrSXRlbTo6SXRlbUVuYWJsZWRIYXNDaGFuZ2VkLCBl ZmZlY3RpdmVFbmFibGUpOworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgaWYg KGlzQWNjZXNzaWJsZSkgeworKyAgICAgICAgUUFjY2Vzc2libGU6OlN0YXRlIGNoYW5nZWRTdGF0 ZTsKKysgICAgICAgIGNoYW5nZWRTdGF0ZS5kaXNhYmxlZCA9IHRydWU7CisrICAgICAgICBjaGFu Z2VkU3RhdGUuZm9jdXNhYmxlID0gdHJ1ZTsKKysgICAgICAgIFFBY2Nlc3NpYmxlU3RhdGVDaGFu Z2VFdmVudCBldihxLCBjaGFuZ2VkU3RhdGUpOworKyAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0 ZUFjY2Vzc2liaWxpdHkoJmV2KTsKKysgICAgfQorKyNlbmRpZgorICAgICBlbWl0IHEtPmVuYWJs ZWRDaGFuZ2VkKCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja2l0ZW1fcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNraXRlbV9wLmgKK2luZGV4IDg0MWQ5MWJiNDAuLmFkZThmYjYxZjIgMTAwNjQ0CistLS0gYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorKysrIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmgKK0BAIC00NzIsNiArNDcyLDcg QEAgcHVibGljOgorICAgICBib29sIHJlcGxheWluZ1ByZXNzRXZlbnQ6MTsKKyAgICAgYm9vbCB0 b3VjaEVuYWJsZWQ6MTsKKyAgICAgYm9vbCBoYXNDdXJzb3JIYW5kbGVyOjE7CisrICAgIHF1aW50 MzIgaW5EZXN0cnVjdG9yOjE7IC8vIGhhcyBlbnRlcmVkIH5RUXVpY2tJdGVtCisgCisgICAgIGVu dW0gRGlydHlUeXBlIHsKKyAgICAgICAgIFRyYW5zZm9ybU9yaWdpbiAgICAgICAgID0gMHgwMDAw MDAwMSwKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tp dGVtdmlldy5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmll dy5jcHAKK2luZGV4IDAxMGEwMTUyZTEuLmY4YWQxNjhhMTcgMTAwNjQ0CistLS0gYS9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAKKysrKyBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorQEAgLTE3ODUsNyArMTc4 NSw3IEBAIHZvaWQgUVF1aWNrSXRlbVZpZXdQcml2YXRlOjpyZWZpbGwocXJlYWwgZnJvbSwgcXJl YWwgdG8pCisgCisgICAgIGRvIHsKKyAgICAgICAgIGJ1ZmZlclBhdXNlLnN0b3AoKTsKKy0gICAg ICAgIGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGJ1ZmZlcmVkQ2hh bmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7CisrICAgICAgICBpZiAoY3VycmVudENoYW5nZXMu aGFzUGVuZGluZ0NoYW5nZXMoKSB8fCBidWZmZXJlZENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMo KSB8fCBjdXJyZW50Q2hhbmdlcy5hY3RpdmUpIHsKKyAgICAgICAgICAgICBjdXJyZW50Q2hhbmdl cy5yZXNldCgpOworICAgICAgICAgICAgIGJ1ZmZlcmVkQ2hhbmdlcy5yZXNldCgpOworICAgICAg ICAgICAgIHJlbGVhc2VWaXNpYmxlSXRlbXMocmV1c2FibGVGbGFnKTsKK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmggYi9xdGRl Y2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKK2luZGV4IGZi YTM4M2UyNjguLjBkNjM2MTg2MjIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAorQEAgLTYxLDcgKzYxLDYgQEAgUVRfQkVH SU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUVF1aWNrTW91c2VFdmVudDsKKyBjbGFzcyBRUXVpY2tN b3VzZUFyZWE7CistY2xhc3MgUVF1aWNrUG9pbnRlck1hc2s7CisgY2xhc3MgUVF1aWNrTW91c2VB cmVhUHJpdmF0ZSA6IHB1YmxpYyBRUXVpY2tJdGVtUHJpdmF0ZQorIHsKKyAgICAgUV9ERUNMQVJF X1BVQkxJQyhRUXVpY2tNb3VzZUFyZWEpCitAQCAtMTAwLDcgKzk5LDYgQEAgcHVibGljOgorICNp ZiBRVF9DT05GSUcocXVpY2tfZHJhZ2FuZGRyb3ApCisgICAgIFFRdWlja0RyYWcgKmRyYWc7Cisg I2VuZGlmCistICAgIFFQb2ludGVyPFFRdWlja1BvaW50ZXJNYXNrPiBtYXNrOworICAgICBRUG9p bnRGIHN0YXJ0U2NlbmU7CisgICAgIFFQb2ludEYgdGFyZ2V0U3RhcnRQb3M7CisgICAgIFFQb2lu dEYgbGFzdFBvczsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9x cXVpY2t0ZXh0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQu Y3BwCitpbmRleCA2MjMwMTg2OTMzLi5lODIzY2ExMDk1IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwCitAQCAtMjE2OCw3ICsyMTY4LDcgQEAgdm9p ZCBRUXVpY2tUZXh0OjpyZXNldE1heGltdW1MaW5lQ291bnQoKQorICAgICA8aW1nIHNyYz0iIiBh bGlnbj0idG9wLG1pZGRsZSxib3R0b20iIHdpZHRoPSIiIGhlaWdodD0iIj4gLSBpbmxpbmUgaW1h Z2VzCisgICAgIDxvbCB0eXBlPSIiPiwgPHVsIHR5cGU9IiI+IGFuZCA8bGk+IC0gb3JkZXJlZCBh bmQgdW5vcmRlcmVkIGxpc3RzCisgICAgIDxwcmU+PC9wcmU+IC0gcHJlZm9ybWF0dGVkCistICAg ICZndDsgJmx0OyAmYW1wOworKyAgICAmZ3Q7ICZsdDsgJmFtcDsgJnF1b3Q7ICZuYnNwOyAmYXBv czsKKyAgICAgXGVuZGNvZGUKKyAKKyAgICAgXGMgVGV4dC5TdHlsZWRUZXh0IHBhcnNlciBpcyBz dHJpY3QsIHJlcXVpcmluZyB0YWdzIHRvIGJlIGNvcnJlY3RseSBuZXN0ZWQuCitkaWZmIC0tZ2l0 IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxk Z2x5cGhjYWNoZS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3Jo aWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAoraW5kZXggZWI0ZGIwZjg1ZS4uMjMyNWEyNjY1 YiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhp ZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAorQEAgLTQ0Niw3 ICs0NDYsNyBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2Vu ZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICBjb25zdCBjaGFy ICp0ZXh0dXJlUmVjb3JkID0gYWxsb2NhdG9yRGF0YTsKKyAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgdGV4dHVyZUNvdW50OyArK2ksIHRleHR1cmVSZWNvcmQgKz0gUXRkZjo6VGV4dHVyZVJl Y29yZFNpemUpIHsKKy0gICAgICAgICAgICBpZiAodGV4dHVyZVJlY29yZCArIFF0ZGY6OlRleHR1 cmVSZWNvcmRTaXplID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgaWYgKHF0ZGZUYWJs ZUVuZCAtIHRleHR1cmVSZWNvcmQgPCBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSkgeworICAgICAg ICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIs CisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkp KTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTQ2Miw3ICs0NjIsNyBAQCBi b29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJhdGVkQ2FjaGUo Y29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICBjb25zdCBjaGFyICpnbHlwaFJlY29y ZCA9IHRleHR1cmVSZWNvcmQ7CisgICAgICAgICBmb3IgKHF1aW50MzIgaSA9IDA7IGkgPCBnbHlw aENvdW50OyArK2ksIGdseXBoUmVjb3JkICs9IFF0ZGY6OkdseXBoUmVjb3JkU2l6ZSkgeworLSAg ICAgICAgICAgIGlmIChnbHlwaFJlY29yZCArIFF0ZGY6OkdseXBoUmVjb3JkU2l6ZSA+IHF0ZGZU YWJsZUVuZCkgeworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSBnbHlwaFJlY29yZCA8 IFF0ZGY6OiBHbHlwaFJlY29yZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0 ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAg ICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKK0BAIC01MTIsOCArNTEyLDggQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZpZWxk R2x5cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250KQor IAorICAgICAgICAgICAgIGludCB3aWR0aCA9IHRleEluZm8tPmFsbG9jYXRlZEFyZWEud2lkdGgo KTsKKyAgICAgICAgICAgICBpbnQgaGVpZ2h0ID0gdGV4SW5mby0+YWxsb2NhdGVkQXJlYS5oZWln aHQoKTsKKy0gICAgICAgICAgICBxaW50NjQgc2l6ZSA9IHdpZHRoICogaGVpZ2h0OworLSAgICAg ICAgICAgIGlmIChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGV4dHVyZURhdGEgKyBz aXplKSA+IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAgICAgIHFpbnQ2NCBzaXplID0gcWludDY0 KHdpZHRoKSAqIGhlaWdodDsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0gcmVpbnRl cnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRleHR1cmVEYXRhKSA8IHNpemUpIHsKKyAgICAgICAg ICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAor ICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7 CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAoraW5kZXggZDUzMWZjOTIwNS4uYTI1 YWY5MDQxNCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNr c3R5bGVkdGV4dC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNr c3R5bGVkdGV4dC5jcHAKK0BAIC01NjQsNiArNTY0LDggQEAgdm9pZCBRUXVpY2tTdHlsZWRUZXh0 UHJpdmF0ZTo6cGFyc2VFbnRpdHkoY29uc3QgUUNoYXIgKiZjaCwgY29uc3QgUVN0cmluZyAmdGV4 dEkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcig2MCk7CisgICAgICAgICAgICAg ZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoImFtcCIpKQorICAgICAgICAgICAgICAg ICB0ZXh0T3V0ICs9IFFDaGFyKDM4KTsKKysgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0g UUxhdGluMVN0cmluZygiYXBvcyIpKQorKyAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFy KDM5KTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygicXVv dCIpKQorICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM0KTsKKyAgICAgICAgICAg ICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygibmJzcCIpKQorZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNw cCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0 LmNwcAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjhhMWM5MDE4ODAK Ky0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNj ZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcAorQEAgLTAsMCArMSwxMTAgQEAKKysvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4K KysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisr KioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBV c2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMg bWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwg bGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0 ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysq KiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9y IGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5p by90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUg Y29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5 LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy CisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxl IExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmls ZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJl IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVt ZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwt My4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoq IEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlv dXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMg b3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91 bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwy IGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMg ZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5z dXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoq IGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisr KiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAk UVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRl ICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCIKKysKKysjaW5jbHVkZSAicXF1aWNrd2lkZ2V0 X3AuaCIKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2li aWxpdHkpCisrCisrUUFjY2Vzc2libGVRdWlja1dpZGdldDo6UUFjY2Vzc2libGVRdWlja1dpZGdl dChRUXVpY2tXaWRnZXQqIHdpZGdldCkKKys6IFFBY2Nlc3NpYmxlV2lkZ2V0KHdpZGdldCkKKyss IG1fYWNjZXNzaWJsZVdpbmRvdyhRUXVpY2tXaWRnZXRQcml2YXRlOjpnZXQod2lkZ2V0KS0+b2Zm c2NyZWVuV2luZG93KQorK3sKKysgICAgLy8gTk9URTogbV9hY2Nlc3NpYmxlV2luZG93IGlzIGEg UUFjY2Vzc2libGVRdWlja1dpbmRvdywgYW5kIG5vdCBhCisrICAgIC8vIFFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cgKGRlZmluZWQgYmVsb3cpLiBUaGlzIG1lYW5zCisrICAg IC8vIGl0IHdpbGwgcmV0dXJuIHRoZSBRdWljayBpdGVtIGNoaWxkIGludGVyZmFjZXMsIHdoaWNo IGlzIHdoYXQncyBuZWVkZWQgaGVyZQorKyAgICAvLyAodW5saWtlIFFBY2Nlc3NpYmxlUXVpY2tX aWRnZXRPZmZzY3JlZW5XaW5kb3csIHdoaWNoIHdpbGwgcmVwb3J0IDAgY2hpbGRyZW4pLgorK30K KysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldDo6Y2hpbGQo aW50IGluZGV4KSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGls ZChpbmRleCk7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZENvdW50 KCkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cuY2hpbGRDb3VudCgp OworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldDo6aW5kZXhPZkNoaWxkKGNvbnN0 IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2Fj Y2Vzc2libGVXaW5kb3cuaW5kZXhPZkNoaWxkKGlmYWNlKTsKKyt9CisrCisrUUFjY2Vzc2libGVJ bnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQXQoaW50IHgsIGludCB5KSBj b25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZEF0KHgsIHkpOwor K30KKysKKytRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93KQorKzpRQWNj ZXNzaWJsZVF1aWNrV2luZG93KHdpbmRvdykKKyt7CisrCisrfQorKworK1FBY2Nlc3NpYmxlSW50 ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZChpbnQg aW5kZXgpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChpbmRleCk7CisrICAgIHJldHVybiBudWxs cHRyOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6 Y2hpbGRDb3VudCgpIGNvbnN0CisreworKyAgICByZXR1cm4gMDsKKyt9CisrCisraW50IFFBY2Nl c3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmluZGV4T2ZDaGlsZChjb25zdCBRQWNj ZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChpZmFjZSk7 CisrICAgIHJldHVybiAtMTsKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3Np YmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZz Y3JlZW5XaW5kb3c6OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorK3sKKysgICAgUV9VTlVT RUQoeCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisr I2VuZGlmIC8vIGFjY2Vzc2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0 IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRf cC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRn ZXRfcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uN2MyYWI5MzBl MAorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3Fh Y2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oCitAQCAtMCwwICsxLDk1IEBACisrLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQu CisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0Lgor KyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2Ug VXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2Vz IG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFs IGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFs dGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisr KiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZv ciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQu aW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhl IGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiog R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVs eSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl cgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmls ZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZp bGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3Vy ZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJl bWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3Bs LTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysq KiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5 b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAz IG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZv dW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BM MiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlz IGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVu c3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysq KiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAor KyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiog JFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaWZuZGVm IFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRfSAorKyNkZWZpbmUgUUFDQ0VTU0lCTEVRVUlDS1dJREdF VF9ICisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4gRworKy8vICAtLS0tLS0tLS0tLS0tCisrLy8K KysvLyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIFF0IEFQSS4gIEl0IGV4aXN0cyBwdXJl bHkgYXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGlzIGhlYWRlciBmaWxlIG1h eSBjaGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8gdmVyc2lvbiB3aXRob3V0IG5vdGljZSwgb3Ig ZXZlbiBiZSByZW1vdmVkLgorKy8vCisrLy8gV2UgbWVhbiBpdC4KKysvLworKworKyNpbmNsdWRl ICJxcXVpY2t3aWRnZXQuaCIKKysjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY2Nlc3NpYmxld2lkZ2V0 Lmg+CisrCisrI2luY2x1ZGUgPHByaXZhdGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oPgorKwor K1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysK KysvLyBUaGVzZSBjbGFzc2VzIGltcGxlbWVudCB0aGUgUVF1aWNrV2lnZXQgYWNjZXNzaWJpbGl0 eSBzd2l0Y2hhcm9vLAorKy8vIHdoZXJlIHRoZSBjaGlsZCBpdGVtcyBvZiB0aGUgUVF1aWNrV2lk Z2V0T2Zmc2NyZWVuV2luZG93IGFyZSByZXBvcnRlZAorKy8vIGFzIGNoaWxkIGFjY2Vzc2libGUg aW50ZXJmYWNlcyBvZiB0aGUgUUFjY2Vzc2libGVRdWlja1dpZGdldC4KKytjbGFzcyBRQWNjZXNz aWJsZVF1aWNrV2lkZ2V0OiBwdWJsaWMgUUFjY2Vzc2libGVXaWRnZXQKKyt7CisrcHVibGljOgor KyAgICBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFRdWlja1dpZGdldCogd2lkZ2V0KTsKKysKKysg ICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7 CisrICAgIGludCBjaGlsZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBpbmRleE9m Q2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVycmlkZTsK KysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdCBv dmVycmlkZTsKKysKKytwcml2YXRlOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2luZG93IG1fYWNj ZXNzaWJsZVdpbmRvdzsKKysgICAgUV9ESVNBQkxFX0NPUFkoUUFjY2Vzc2libGVRdWlja1dpZGdl dCkKKyt9OworKworK2NsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6 IHB1YmxpYyBRQWNjZXNzaWJsZVF1aWNrV2luZG93CisreworK3B1YmxpYzoKKysgICAgUUFjY2Vz c2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3cgKndpbmRvdyk7Cisr ICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZChpbnQgaW5kZXgpIGNvbnN0IG92ZXJyaWRl OworKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgaW5kZXhP ZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3Qgb3ZlcnJpZGU7 CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3Qg b3ZlcnJpZGU7CisrfTsKKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9O QU1FU1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj a3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjdiYTg4YTE3NjkKKy0tLSAvZGV2 L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1 aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKK0BAIC0wLDAgKzEsNjAgQEAKKysvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysq KiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioK KysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2Fn ZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5 IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGlj ZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJu YXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBh IHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxp Y2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90 ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29u dGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0 aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisr KiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJ Q0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4g UGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50 cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4w Lmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFs dGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIg b3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3Ig YW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRh dGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK KysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFu ZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmls ZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJl IG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiog aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRf RU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlICJx YWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgiCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxl cXVpY2t3aWRnZXRfcC5oIgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05G SUcoYWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vzc2libGVR dWlja1dpZGdldEZhY3RvcnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0ICpvYmpl Y3QpCisreworKyAgICBpZiAoY2xhc3NuYW1lID09IFFMYXRpbjFTdHJpbmcoIlFRdWlja1dpZGdl dCIpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQocW9iamVj dF9jYXN0PFFRdWlja1dpZGdldCAqPihvYmplY3QpKTsKKysgICAgfSBlbHNlIGlmIChjbGFzc25h bWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IikpIHsKKysg ICAgICAgIHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhx b2JqZWN0X2Nhc3Q8UVF1aWNrV2luZG93ICo+KG9iamVjdCkpOworKyAgICB9CisrICAgIHJldHVy biAwOworK30KKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BB Q0UKKysKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vz c2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRn ZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAwMDAuLjhjNjNiMDlmODEKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9y eV9wLmgKK0BAIC0wLDAgKzEsNjYgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiog Q29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRw czovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5f TElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2Vl cyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUg aW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQg cHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNj b3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVt ZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcwor KyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25z LiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0 dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJl IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisr KiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5j bHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0 aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUg bWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysq KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRo aXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05V IEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNp b24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vu c2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9u IGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMK KysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmll dyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisr KioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlIDxRdEd1aS9xYWNjZXNzaWJs ZS5oPgorKworKyNpZm5kZWYgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllfSAorKyNkZWZp bmUgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllfSAorKworKy8vCisrLy8gIFcgQSBSIE4g SSBOIEcKKysvLyAgLS0tLS0tLS0tLS0tLQorKy8vCisrLy8gVGhpcyBmaWxlIGlzIG5vdCBwYXJ0 IG9mIHRoZSBRdCBBUEkuICBJdCBleGlzdHMgcHVyZWx5IGFzIGFuCisrLy8gaW1wbGVtZW50YXRp b24gZGV0YWlsLiAgVGhpcyBoZWFkZXIgZmlsZSBtYXkgY2hhbmdlIGZyb20gdmVyc2lvbiB0bwor Ky8vIHZlcnNpb24gd2l0aG91dCBub3RpY2UsIG9yIGV2ZW4gYmUgcmVtb3ZlZC4KKysvLworKy8v IFdlIG1lYW4gaXQuCisrLy8KKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09O RklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKnFBY2Nlc3NpYmxl UXVpY2tXaWRnZXRGYWN0b3J5KGNvbnN0IFFTdHJpbmcgJmNsYXNzbmFtZSwgUU9iamVjdCAqb2Jq ZWN0KTsKKysKKysjZW5kaWYKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmCitkaWZm IC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAoraW5kZXgg Mzk3ODBmOGRlMy4uOWM5N2I0MzUxOCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj a3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAorQEAgLTM5LDYgKzM5LDcgQEAKKyAKKyAjaW5jbHVk ZSAicXF1aWNrd2lkZ2V0LmgiCisgI2luY2x1ZGUgInFxdWlja3dpZGdldF9wLmgiCisrI2luY2x1 ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCIKKyAKKyAjaW5jbHVkZSAicHJp dmF0ZS9xcXVpY2t3aW5kb3dfcC5oIgorICNpbmNsdWRlICJwcml2YXRlL3FxdWlja2l0ZW1fcC5o IgorQEAgLTc1LDkgKzc2LDE2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisrUVF1aWNr V2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNr V2luZG93UHJpdmF0ZSAmZGQsIFFRdWlja1JlbmRlckNvbnRyb2wgKmNvbnRyb2wpCisrOlFRdWlj a1dpbmRvdyhkZCwgY29udHJvbCkKKyt7CisrICAgIHNldFRpdGxlKFFTdHJpbmc6OmZyb21MYXRp bjEoIk9mZnNjcmVlbiIpKTsKKysgICAgc2V0T2JqZWN0TmFtZShRU3RyaW5nOjpmcm9tTGF0aW4x KCJRUXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7CisrfQorKworIC8vIG92ZXJyaWRlIHNldFZpc2Js ZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgb2Zmc2NyZWVuIHdpbmRvdyBiZWluZyBjcmVhdGVkCisg Ly8gYnkgYmFzZSBjbGFzcy4KKy1jbGFzcyBRUXVpY2tPZmZjcmVlbldpbmRvd1ByaXZhdGU6IHB1 YmxpYyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKytjbGFzcyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5X aW5kb3dQcml2YXRlOiBwdWJsaWMgUVF1aWNrV2luZG93UHJpdmF0ZSB7CisgcHVibGljOgorICAg ICB2b2lkIHNldFZpc2libGUoYm9vbCB2aXNpYmxlKSBvdmVycmlkZSB7CisgICAgICAgICBRX1Eo UVdpbmRvdyk7CitAQCAtMTA1LDkgKzExMyw4IEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6 aW5pdChRUW1sRW5naW5lKiBlKQorICAgICBRX1EoUVF1aWNrV2lkZ2V0KTsKKyAKKyAgICAgcmVu ZGVyQ29udHJvbCA9IG5ldyBRUXVpY2tXaWRnZXRSZW5kZXJDb250cm9sKHEpOworLSAgICBvZmZz Y3JlZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2luZG93KCpuZXcgUVF1aWNrT2ZmY3JlZW5XaW5kb3dQ cml2YXRlKCkscmVuZGVyQ29udHJvbCk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0VGl0bGUo UVN0cmluZzo6ZnJvbUxhdGluMSgiT2Zmc2NyZWVuIikpOworLSAgICBvZmZzY3JlZW5XaW5kb3ct PnNldE9iamVjdE5hbWUoUVN0cmluZzo6ZnJvbUxhdGluMSgiUVF1aWNrT2ZmU2NyZWVuV2luZG93 IikpOworKyAgICBvZmZzY3JlZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2lu ZG93KCpuZXcgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93UHJpdmF0ZSgpLCByZW5kZXJDb250 cm9sKTsKKysgICAgb2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4ocS0+c2NyZWVuKCkpOworICAg ICAvLyBEbyBub3QgY2FsbCBjcmVhdGUoKSBvbiBvZmZzY3JlZW5XaW5kb3cuCisgCisgICAgIC8v IENoZWNrIGlmIHRoZSBTb2Z0d2FyZSBBZGFwdGF0aW9uIGlzIGJlaW5nIHVzZWQKK0BAIC0xMzgs NiArMTQ1LDEwIEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6aW5pdChRUW1sRW5naW5lKiBl KQorICAgICBRV2lkZ2V0Ojpjb25uZWN0KG9mZnNjcmVlbldpbmRvdywgJlFRdWlja1dpbmRvdzo6 Zm9jdXNPYmplY3RDaGFuZ2VkLCBxLCAmUVF1aWNrV2lkZ2V0Ojpwcm9wYWdhdGVGb2N1c09iamVj dENoYW5nZWQpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlbmRlckNvbnRyb2wsIFNJR05BTChy ZW5kZXJSZXF1ZXN0ZWQoKSksIHEsIFNMT1QodHJpZ2dlclVwZGF0ZSgpKSk7CisgICAgIFFPYmpl Y3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFMKHNjZW5lQ2hhbmdlZCgpKSwgcSwgU0xP VCh0cmlnZ2VyVXBkYXRlKCkpKTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisr ICAgIFFBY2Nlc3NpYmxlOjppbnN0YWxsRmFjdG9yeSgmcUFjY2Vzc2libGVRdWlja1dpZGdldEZh Y3RvcnkpOworKyNlbmRpZgorIH0KKyAKKyB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmVuc3Vy ZUVuZ2luZSgpIGNvbnN0CitAQCAtOTAxLDkgKzkxMiw3IEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJp dmF0ZTo6Y3JlYXRlQ29udGV4dCgpCisgCisgICAgICAgICBjb250ZXh0ID0gbmV3IFFPcGVuR0xD b250ZXh0OworICAgICAgICAgY29udGV4dC0+c2V0Rm9ybWF0KG9mZnNjcmVlbldpbmRvdy0+cmVx dWVzdGVkRm9ybWF0KCkpOworLSAgICAgICAgY29uc3QgUVdpbmRvdyAqd2luID0gcS0+d2luZG93 KCktPndpbmRvd0hhbmRsZSgpOworLSAgICAgICAgaWYgKHdpbiAmJiB3aW4tPnNjcmVlbigpKQor LSAgICAgICAgICAgIGNvbnRleHQtPnNldFNjcmVlbih3aW4tPnNjcmVlbigpKTsKKysgICAgICAg IGNvbnRleHQtPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7CisgICAgICAgICBRT3BlbkdMQ29udGV4 dCAqc2hhcmVDb250ZXh0ID0gcXRfZ2xfZ2xvYmFsX3NoYXJlX2NvbnRleHQoKTsKKyAgICAgICAg IGlmICghc2hhcmVDb250ZXh0KQorICAgICAgICAgICAgIHNoYXJlQ29udGV4dCA9IFFXaWRnZXRQ cml2YXRlOjpnZXQocS0+d2luZG93KCkpLT5zaGFyZUNvbnRleHQoKTsKK0BAIC0xNTIwLDE5ICsx NTI5LDE2IEBAIGJvb2wgUVF1aWNrV2lkZ2V0OjpldmVudChRRXZlbnQgKmUpCisgICAgICAgICBk LT5oYW5kbGVXaW5kb3dDaGFuZ2UoKTsKKyAgICAgICAgIGJyZWFrOworIAorLSAgICBjYXNlIFFF dmVudDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6CistICAgICAgICBpZiAoUVdpbmRvdyAqd2luZG93 ID0gdGhpcy0+d2luZG93KCktPndpbmRvd0hhbmRsZSgpKSB7CistICAgICAgICAgICAgUVNjcmVl biAqbmV3U2NyZWVuID0gd2luZG93LT5zY3JlZW4oKTsKKy0KKy0gICAgICAgICAgICBpZiAoZC0+ b2Zmc2NyZWVuV2luZG93KQorLSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNl dFNjcmVlbihuZXdTY3JlZW4pOworLSAgICAgICAgICAgIGlmIChkLT5vZmZzY3JlZW5TdXJmYWNl KQorLSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5TdXJmYWNlLT5zZXRTY3JlZW4obmV3U2Ny ZWVuKTsKKysgICAgY2FzZSBRRXZlbnQ6OlNjcmVlbkNoYW5nZUludGVybmFsOiB7CisrICAgICAg ICBRU2NyZWVuICpuZXdTY3JlZW4gPSBzY3JlZW4oKTsKKysgICAgICAgIGlmIChkLT5vZmZzY3Jl ZW5XaW5kb3cpCisrICAgICAgICAgICAgZC0+b2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4obmV3 U2NyZWVuKTsKKysgICAgICAgIGlmIChkLT5vZmZzY3JlZW5TdXJmYWNlKQorKyAgICAgICAgICAg IGQtPm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4pOworICNpZiBRVF9DT05G SUcob3BlbmdsKQorLSAgICAgICAgICAgIGlmIChkLT5jb250ZXh0KQorLSAgICAgICAgICAgICAg ICBkLT5jb250ZXh0LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKysgICAgICAgIGlmIChkLT5jb250 ZXh0KQorKyAgICAgICAgICAgIGQtPmNvbnRleHQtPnNldFNjcmVlbihuZXdTY3JlZW4pOworICNl bmRpZgorLSAgICAgICAgfQorIAorICAgICAgICAgaWYgKGQtPnVzZVNvZnR3YXJlUmVuZGVyZXIK KyAjaWYgUVRfQ09ORklHKG9wZW5nbCkKK0BAIC0xNTQ1LDcgKzE1NTEsNyBAQCBib29sIFFRdWlj a1dpZGdldDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICAgICAgICAgIGQtPnJlbmRlcih0cnVlKTsK KyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLQorKyAgICB9CisgICAgIGNhc2UgUUV2ZW50 OjpTaG93OgorICAgICBjYXNlIFFFdmVudDo6TW92ZToKKyAgICAgICAgIGQtPnVwZGF0ZVBvc2l0 aW9uKCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlj a3dpZGdldF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0 X3AuaAoraW5kZXggODgxZjdmOTIyMC4uMWE5NDZiY2M3MSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCisrKysgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaAorQEAgLTE0OCw2ICsxNDgsMTQg QEAgcHVibGljOgorICAgICBib29sIGZvcmNlRnVsbFVwZGF0ZTsKKyB9OworIAorK2NsYXNzIFFR dWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVibGljIFFRdWlja1dpbmRvdworK3sKKysgICAg UV9PQkpFQ1QKKysKKytwdWJsaWM6CisrICAgIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhR UXVpY2tXaW5kb3dQcml2YXRlICZkZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29udHJvbCk7Cisr fTsKKysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2VuZGlmIC8vIFFRdWlja1dpZGdldF9QX0gK K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRz LnBybyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCitp bmRleCAyNDM4ZTU3N2FlLi44NWQxNTZiOGEzIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCitAQCAtNyw5ICs3LDEzIEBAIERFRklORVMg ICArPSBRVF9OT19VUkxfQ0FTVF9GUk9NX1NUUklORyBRVF9OT19JTlRFR0VSX0VWRU5UX0NPT1JE SU5BVEVTIFFUX05PX0ZPCisgSEVBREVSUyArPSBcCisgICAgIHFxdWlja3dpZGdldC5oIFwKKyAg ICAgcXF1aWNrd2lkZ2V0X3AuaCBcCistICAgIHF0cXVpY2t3aWRnZXRzZ2xvYmFsLmgKKysgICAg cXRxdWlja3dpZGdldHNnbG9iYWwuaCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5o IFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCisgCisgU09VUkNFUyAr PSBcCistICAgIHFxdWlja3dpZGdldC5jcHAKKysgICAgcXF1aWNrd2lkZ2V0LmNwcCBcCisrICAg IHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdl dGZhY3RvcnkuY3BwCisgCisgbG9hZChxdF9tb2R1bGUpCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAgYi9xdGRlY2xh cmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAoraW5kZXgg M2I3ZDc0ZGY2My4uYjc1YmY4MjBkNSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMv YXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZl L3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAorQEAgLTEwMiw2ICsx MDIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHZhbHVlQ29udmVyc2lvbl9SZWd1bGFy RXhwcmVzc2lvbigpOworICAgICB2b2lkIGNhc3RXaXRoTXVsdGlwbGVJbmhlcml0YW5jZSgpOwor ICAgICB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CisrICAgIHZvaWQgY29sbGVjdEdhcmJhZ2VOZXN0 ZWRXcmFwcGVyc1R3b0VuZ2luZXMoKTsKKyAgICAgdm9pZCBnY1dpdGhOZXN0ZWREYXRhU3RydWN0 dXJlKCk7CisgICAgIHZvaWQgc3RhY2t0cmFjZSgpOworICAgICB2b2lkIG51bWJlclBhcnNpbmdf ZGF0YSgpOworQEAgLTE4MDksNiArMTgxMCw0NCBAQCB2b2lkIHRzdF9RSlNFbmdpbmU6OmNvbGxl Y3RHYXJiYWdlKCkKKyAgICAgUVZFUklGWShwdHIuaXNOdWxsKCkpOworIH0KKyAKKytjbGFzcyBU ZXN0T2JqZWN0Q29udGFpbmVyIDogcHVibGljIFFPYmplY3QKKyt7CisrICAgIFFfT0JKRUNUCisr ICAgIFFfUFJPUEVSVFkoUU9iamVjdCAqZHVtbXkgTUVNQkVSIG1fZHVtbXkgQ09OU1RBTlQpCisr CisrcHVibGljOgorKyAgICBUZXN0T2JqZWN0Q29udGFpbmVyKCkgOiBtX2R1bW15KG5ldyBRT2Jq ZWN0KHRoaXMpKSB7fQorKworK3ByaXZhdGU6CisrICAgIFFPYmplY3QgKm1fZHVtbXk7CisrfTsK KysKKyt2b2lkIHRzdF9RSlNFbmdpbmU6OmNvbGxlY3RHYXJiYWdlTmVzdGVkV3JhcHBlcnNUd29F bmdpbmVzKCkKKyt7CisrICAgIFFKU0VuZ2luZSBlbmdpbmUxOworKyAgICBRSlNFbmdpbmUgZW5n aW5lMjsKKysKKysgICAgVGVzdE9iamVjdENvbnRhaW5lciBjb250YWluZXI7CisrICAgIFFRbWxF bmdpbmU6OnNldE9iamVjdE93bmVyc2hpcCgmY29udGFpbmVyLCBRUW1sRW5naW5lOjpDcHBPd25l cnNoaXApOworKworKyAgICBlbmdpbmUxLmdsb2JhbE9iamVjdCgpLnNldFByb3BlcnR5KCJmb29i YXIiLCBlbmdpbmUxLm5ld1FPYmplY3QoJmNvbnRhaW5lcikpOworKyAgICBlbmdpbmUyLmdsb2Jh bE9iamVjdCgpLnNldFByb3BlcnR5KCJmb29iYXIiLCBlbmdpbmUyLm5ld1FPYmplY3QoJmNvbnRh aW5lcikpOworKworKyAgICBlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6ID0gNDIi KTsKKysgICAgZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiA9IDQzIik7CisrCisr ICAgIFFDT01QQVJFKGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgp LCA0Mik7CisrICAgIFFDT01QQVJFKGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoi KS50b0ludCgpLCA0Myk7CisrCisrICAgIGVuZ2luZTEuY29sbGVjdEdhcmJhZ2UoKTsKKysgICAg ZW5naW5lMi5jb2xsZWN0R2FyYmFnZSgpOworKworKyAgICAvLyBUaGUgR0Mgc2hvdWxkIG5vdCBj b2xsZWN0IGR1bW15IG9iamVjdCB3cmFwcGVycyBuZWl0aGVyIGluIGVuZ2luZTEgbm9yIGVuZ2lu ZTIsIHdlCisrICAgIC8vIHZlcmlmeSB0aGF0IGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhlIGJheiBw cm9wZXJ0eSBzdGlsbCBoYXMgaXRzIHByZXZpb3VzIHZhbHVlLgorKyAgICBRQ09NUEFSRShlbmdp bmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDIpOworKyAgICBRQ09N UEFSRShlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDMpOwor K30KKysKKyB2b2lkIHRzdF9RSlNFbmdpbmU6OmdjV2l0aE5lc3RlZERhdGFTdHJ1Y3R1cmUoKQor IHsKKyAgICAgLy8gVGhlIEdDIG11c3QgYmUgYWJsZSB0byB0cmF2ZXJzZSBkZWVwbHkgbmVzdGVk IG9iamVjdHMsIG90aGVyd2lzZSB0aGlzCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0 cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2Uu cW1sIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRh L3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAwMC4uMjA2MTMzYmIzOQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2 ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5D aGFuZ2UucW1sCitAQCAtMCwwICsxLDExIEBACisraW1wb3J0IFF0UXVpY2sgMi44CisrCisrTGlz dFZpZXcgeworKyAgICBpZDogcm9vdAorKyAgICB3aWR0aDogMjAwCisrICAgIGhlaWdodDogMjAw CisrCisrICAgIGRlbGVnYXRlOiBUZXh0IHsKKysgICAgICAgIHRleHQ6IGRpc3BsYXkKKysgICAg fQorK30KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxl Z2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3Rz L2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK2lu ZGV4IDM1ZjFlMmM5NGQuLjE3MjI0NDc4MzAgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rl c3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAK KysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0 X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTI3LDYgKzI3LDggQEAKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworIAorICNpbmNsdWRlIDxRdFRlc3QvcXRlc3QuaD4KKysjaW5jbHVkZSA8UXRDb3Jl L1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw+CisrI2luY2x1ZGUgPFF0R3VpL1FTdGFuZGFy ZEl0ZW1Nb2RlbD4KKyAjaW5jbHVkZSA8UXRRbWwvcXFtbGNvbXBvbmVudC5oPgorICNpbmNsdWRl IDxRdFFtbE1vZGVscy9wcml2YXRlL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaD4KKyAjaW5jbHVkZSA8 UXRRdWljay9xcXVpY2t2aWV3Lmg+CitAQCAtNDcsNiArNDksNyBAQCBwcml2YXRlIHNsb3RzOgor ICAgICB2b2lkIGZpbHRlck9uR3JvdXBfcmVtb3ZlV2hlbkNvbXBsZXRlZCgpOworICAgICB2b2lk IHF0YnVnXzg2MDE3KCk7CisgICAgIHZvaWQgY29udGV4dEFjY2Vzc2VkQnlIYW5kbGVyKCk7Cisr ICAgIHZvaWQgcmVkcmF3VXBvbkNvbHVtbkNoYW5nZSgpOworIH07CisgCisgY2xhc3MgQWJzdHJh Y3RJdGVtTW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0SXRlbU1vZGVsCitAQCAtMTg2LDYgKzE4OSwz MCBAQCB2b2lkIHRzdF9RUW1sRGVsZWdhdGVNb2RlbDo6Y29udGV4dEFjY2Vzc2VkQnlIYW5kbGVy KCkKKyAgICAgUVZFUklGWShyb290LT5wcm9wZXJ0eSgid29ya3MiKS50b0Jvb2woKSk7CisgfQor IAorK3ZvaWQgdHN0X1FRbWxEZWxlZ2F0ZU1vZGVsOjpyZWRyYXdVcG9uQ29sdW1uQ2hhbmdlKCkK Kyt7CisrICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtMTsKKysgICAgbTEuYXBwZW5kUm93KHsKKysg ICAgICAgICAgICBuZXcgUVN0YW5kYXJkSXRlbSgiQmFuYW5hIiksCisrICAgICAgICAgICAgbmV3 IFFTdGFuZGFyZEl0ZW0oIkNvY29udXQiKSwKKysgICAgfSk7CisrCisrICAgIFFRdWlja1ZpZXcg dmlldyh0ZXN0RmlsZVVybCgicmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwiKSk7CisrICAgIFFD T01QQVJFKHZpZXcuc3RhdHVzKCksIFFRdWlja1ZpZXc6OlJlYWR5KTsKKysgICAgdmlldy5zaG93 KCk7CisrICAgIFFRdWlja0l0ZW0gKnJvb3QgPSB2aWV3LnJvb3RPYmplY3QoKTsKKysgICAgcm9v dC0+c2V0UHJvcGVydHkoIm1vZGVsIiwgUVZhcmlhbnQ6OmZyb21WYWx1ZTxRT2JqZWN0ICo+KCZt MSkpOworKworKyAgICBRT2JqZWN0ICppdGVtID0gcm9vdC0+cHJvcGVydHkoImN1cnJlbnRJdGVt IikudmFsdWU8UU9iamVjdCAqPigpOworKyAgICBRVkVSSUZZKGl0ZW0pOworKyAgICBRQ09NUEFS RShpdGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5nKCksICJCYW5hbmEiKTsKKysKKysgICAg UVZFUklGWShyb290KTsKKysgICAgbTEucmVtb3ZlQ29sdW1uKDApOworKworKyAgICBRQ09NUEFS RShpdGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5nKCksICJDb2NvbnV0Iik7CisrfQorKwor IFFURVNUX01BSU4odHN0X1FRbWxEZWxlZ2F0ZU1vZGVsKQorIAorICNpbmNsdWRlICJ0c3RfcXFt bGRlbGVnYXRlbW9kZWwubW9jIgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwv cXY0bW0vdHN0X3F2NG1tLmNwcAoraW5kZXggNWQ2MzVhYTYzYi4uODI0ZmQ4OWU1YiAxMDA2NDQK Ky0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcAor KysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCitA QCAtNzYsMTAgKzc2LDEwIEBAIHZvaWQgdHN0X3F2NG1tOjptdWx0aVdyYXBwZWRRT2JqZWN0cygp CisgICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVk T2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMSk7CisgICAgICAgICBRQ09NUEFSRShlbmdpbmUy Lm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwg MCk7CisgCistICAgICAgICAvLyBNb3ZlcyB0aGUgYWRkaXRpb25hbCBXZWFrVmFsdWUgZnJvbSBt X211bHRpcGx5V3JhcHBlZFFPYmplY3RzIHRvCistICAgICAgICAvLyBtX3BlbmRpbmdGcmVlZE9i amVjdFdyYXBwZXJWYWx1ZS4gSXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisrICAgICAgICAv LyBUaGUgYWRkaXRpb25hbCBXZWFrVmFsdWUgZnJvbSBtX211bHRpcGx5V3JhcHBlZFFPYmplY3Rz IGhhc24ndCBiZWVuIG1vdmVkCisrICAgICAgICAvLyB0byBtX3BlbmRpbmdGcmVlZE9iamVjdFdy YXBwZXJWYWx1ZSB5ZXQuIEl0J3Mgc3RpbGwgYWxpdmUgYWZ0ZXIgYWxsLgorICAgICAgICAgZW5n aW5lMS5tZW1vcnlNYW5hZ2VyLT5ydW5HQygpOworLSAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5t ZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDIp OworKyAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVl ZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDEpOworIAorICAgICAgICAgLy8gZW5naW5lMiBk b2Vzbid0IG93biB0aGUgb2JqZWN0IGFzIGVuZ2luZTEgd2FzIHRoZSBmaXJzdCB0byB3cmFwIGl0 IGFib3ZlLgorICAgICAgICAgLy8gVGhlcmVmb3JlLCBubyBlZmZlY3QgaGVyZS4KK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9hY3Rp dmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRv L3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFt bAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjg4OWU0ODBmM2IKKy0t LSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tp dGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwKK0BAIC0wLDAgKzEs MTMgQEAKKytpbXBvcnQgUXRRdWljayAyLjYKKysKKytJdGVtIHsKKysgICAgdmlzaWJsZTogdHJ1 ZQorKyAgICBJdGVtIHsKKysgICAgICAgIHZpc2libGU6IGZhbHNlCisrICAgICAgICBJdGVtIHsK KysgICAgICAgICAgICBvYmplY3ROYW1lOiAiaGlkZGVuQ2hpbGQiCisrICAgICAgICAgICAgYWN0 aXZlRm9jdXNPblRhYjogdHJ1ZQorKyAgICAgICAgICAgIGZvY3VzOiB0cnVlCisrICAgICAgICB9 CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNr L3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK2luZGV4IGM4ZjI1MWRiZTEu LmM4ZWYzNmVlNjggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2sv cXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3Rz L2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCitAQCAtNjcsNiArNjcs NyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWIxMCgpOworICAg ICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wX2RhdGEoKTsKKyAgICAgdm9pZCBh Y3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcCgpOworKyAgICB2b2lkIGFjdGl2ZUZvY3VzT25U YWJfaW5maW5pdGVMb29wQ29udHJvbHMoKTsKKyAKKyAgICAgdm9pZCBuZXh0SXRlbUluRm9jdXND aGFpbigpOworICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWluMigpOworQEAgLTEwNTcsNiAr MTA1OCwxNyBAQCB2b2lkIHRzdF9RUXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFiX2luZmluaXRl TG9vcCgpCisgICAgIFFDT01QQVJFKGl0ZW0sIHdpbmRvdy0+cm9vdE9iamVjdCgpKTsKKyB9Cisg CisrCisrdm9pZCB0c3RfUVF1aWNrSXRlbTo6YWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3BD b250cm9scygpCisreworKyAgICBhdXRvIHNvdXJjZSA9IHRlc3RGaWxlVXJsKCJhY3RpdmVGb2N1 c09uVGFiX2luZmluaXRlTG9vcDMucW1sIik7CisrICAgIFFTY29wZWRQb2ludGVyPFFRdWlja1Zp ZXc+d2luZG93KG5ldyBRUXVpY2tWaWV3KCkpOworKyAgICB3aW5kb3ctPnNldFNvdXJjZShzb3Vy Y2UpOworKyAgICB3aW5kb3ctPnNob3coKTsKKysgICAgUVZFUklGWSh3aW5kb3ctPmVycm9ycygp LmlzRW1wdHkoKSk7CisrICAgIFFUZXN0OjprZXlDbGljayh3aW5kb3cuZ2V0KCksIFF0OjpLZXlf VGFiKTsgLy8gc2hvdWxkIG5vdCBoYW5nCisrfQorKworIHZvaWQgdHN0X1FRdWlja0l0ZW06Om5l eHRJdGVtSW5Gb2N1c0NoYWluKCkKKyB7CisgICAgIGlmICghcXRfdGFiX2FsbF93aWRnZXRzKCkp CitTdWJtb2R1bGUgcXRkb2MgYzBjN2JmMDcuLi43OWQ2ZWY2OToKK1N1Ym1vZHVsZSBxdGltYWdl Zm9ybWF0cyAyZGNmMjg5OS4uYWJlNDRjMGY6CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMv c3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vm b3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKK2lu ZGV4IGRkZTc4M2MuLjFiZjkwNzQgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9y bWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCitAQCAt NDYyLDggKzQ2MiwxMiBAQCBzdGF0aWMgYm9vbCBwYXJzZUljb25FbnRyeUluZm8oSUNOU0VudHJ5 ICZpY29uKQorICAgICBpZiAoaXNJY29uQ29tcHJlc3NlZChpY29uKSkKKyAgICAgICAgIHJldHVy biB0cnVlOworICAgICAvLyBJY29uIGRlcHRoOgorLSAgICBpZiAoIWRlcHRoLmlzRW1wdHkoKSkK Ky0gICAgICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoKGRlcHRoLnRvVUludCgpKTsK KysgICAgaWYgKCFkZXB0aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIGNvbnN0IHVpbnQgZGVwdGhV SW50ID0gZGVwdGgudG9VSW50KCk7CisrICAgICAgICBpZiAoZGVwdGhVSW50ID4gMzIpCisrICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6 RGVwdGgoZGVwdGhVSW50KTsKKysgICAgfQorICAgICAvLyBUcnkgbW9ubyBpZiBkZXB0aCBub3Qg Zm91bmQKKyAgICAgaWYgKGljb24uZGVwdGggPT0gSUNOU0VudHJ5OjpEZXB0aFVua25vd24pCisg ICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aE1vbm87CitAQCAtNTE1LDYgKzUx OSw5IEBAIHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkgJmljb24pCisg ICAgICAgICB9CisgICAgICAgICBpY29uLmhlaWdodCA9IGljb24ud2lkdGg7CisgICAgIH0KKysg ICAgLy8gU2FuaXR5IGNoZWNrCisrICAgIGlmIChpY29uLndpZHRoID09IDAgfHwgaWNvbi53aWR0 aCA+IDQwOTYpCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIHJldHVybiB0cnVlOworIH0K KyAKK0BAIC02ODUsNyArNjkyLDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OmNhblJlYWQoKSBjb25z dAorIGJvb2wgUUlDTlNIYW5kbGVyOjpyZWFkKFFJbWFnZSAqb3V0SW1hZ2UpCisgeworICAgICBR SW1hZ2UgaW1nOworLSAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSkgeworKyAgICBpZiAoIWVuc3Vy ZVNjYW5uZWQoKSB8fCBtX2N1cnJlbnRJY29uSW5kZXggPj0gbV9pY29ucy5zaXplKCkpIHsKKyAg ICAgICAgIHFXYXJuaW5nKCJRSUNOU0hhbmRsZXI6OnJlYWQoKTogVGhlIGRldmljZSB3YXNuJ3Qg cGFyc2VkIHByb3Blcmx5ISIpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CitAQCAt ODkyLDcgKzg5OSw3IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgICAgICBjb25zdCBxaW50NjQgYmxvY2tEYXRhT2Zm c2V0ID0gZGV2aWNlKCktPnBvcygpOworLSAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQo YmxvY2tIZWFkZXIpKSB7CisrICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChibG9ja0hl YWRlciwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIGZpbGVsZW5ndGggLSBibG9ja0RhdGFPZmZzZXQp KSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIlFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpOiBG YWlsZWQsIGJhZCBoZWFkZXIgYXQgcG9zICVzLiBPU1R5cGUgXCIlc1wiLCBsZW5ndGggJXUiLAor ICAgICAgICAgICAgICAgICAgICAgIFFCeXRlQXJyYXk6Om51bWJlcihibG9ja0RhdGFPZmZzZXQp LmNvbnN0RGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgIG5hbWVGcm9tT1NUeXBlKGJsb2Nr SGVhZGVyLm9zdHlwZSkuY29uc3REYXRhKCksIGJsb2NrSGVhZGVyLmxlbmd0aCk7CitAQCAtOTI3 LDExICs5MzQsMTQgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAg Y2FzZSBJQ05TQmxvY2tIZWFkZXI6OlR5cGVPZHJwOgorICAgICAgICAgICAgIC8vIEljbnMgY29u dGFpbmVyIHNlZW1zIHRvIGhhdmUgYW4gZW1iZWRkZWQgaWNvbiB2YXJpYW50IGNvbnRhaW5lcgor ICAgICAgICAgICAgIC8vIExldCdzIHN0YXJ0IGEgc2NhbiBmb3IgZW50cmllcworLSAgICAgICAg ICAgIHdoaWxlIChkZXZpY2UoKS0+cG9zKCkgPCBuZXh0QmxvY2tPZmZzZXQpIHsKKysgICAgICAg ICAgICB3aGlsZSAoIXN0cmVhbS5hdEVuZCgpICYmIGRldmljZSgpLT5wb3MoKSA8IG5leHRCbG9j a09mZnNldCkgeworICAgICAgICAgICAgICAgICBJQ05TQmxvY2tIZWFkZXIgaWNvbjsKKyAgICAg ICAgICAgICAgICAgc3RyZWFtID4+IGljb247CisrICAgICAgICAgICAgICAgIGlmIChzdHJlYW0u c3RhdHVzKCkgIT0gUURhdGFTdHJlYW06Ok9rKQorKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgaW5jb3JyZWN0IHZhcmlhbnQg ZW50cnkgaGVhZGVyIGFuZCBzdG9wIHNjYW4KKy0gICAgICAgICAgICAgICAgaWYgKCFpc0Jsb2Nr SGVhZGVyVmFsaWQoaWNvbiwgYmxvY2tEYXRhTGVuZ3RoKSkKKysgICAgICAgICAgICAgICAgcXVp bnQ2NCByZW1haW5pbmcgPSBibG9ja0RhdGFMZW5ndGggLSAoZGV2aWNlKCktPnBvcygpIC0gYmxv Y2tEYXRhT2Zmc2V0KTsKKysgICAgICAgICAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQo aWNvbiwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIHJlbWFpbmluZykpCisgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgaWYgKCFhZGRFbnRyeShpY29uLCBkZXZpY2Uo KS0+cG9zKCksIGJsb2NrSGVhZGVyLm9zdHlwZSkpCisgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CitAQCAtMTAwMyw3ICsxMDEzLDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5E ZXZpY2UoKQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9CistICAgIHJl dHVybiB0cnVlOworKyAgICByZXR1cm4gKG1faWNvbnMuc2l6ZSgpID4gMCk7CisgfQorIAorIGNv bnN0IElDTlNFbnRyeSAmUUlDTlNIYW5kbGVyOjpnZXRJY29uTWFzayhjb25zdCBJQ05TRW50cnkg Jmljb24pIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1h Z2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAoraW5kZXggNTA4MjAyMy4uY2IzNDM3 NCAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9q cDIvcWpwMmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFn ZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAorQEAgLTQzLDYgKzQzLDcgQEAKKyAjaW5jbHVk ZSAicWltYWdlLmgiCisgI2luY2x1ZGUgInF2YXJpYW50LmgiCisgI2luY2x1ZGUgInFjb2xvci5o IgorKyNpbmNsdWRlICJxaW1hZ2VyZWFkZXIuaCIKKyAKKyAjaW5jbHVkZSA8amFzcGVyL2phc3Bl ci5oPgorICNpbmNsdWRlIDxtYXRoLmg+IC8vIGZvciBwb3cKK0BAIC0zMzMsMTYgKzMzNCw0NiBA QCBwcml2YXRlOgorIEpwZWcyMDAwSmFzcGVyUmVhZGVyOjpKcGVnMjAwMEphc3BlclJlYWRlcihR SU9EZXZpY2UgKmlvZCwgU3ViRm9ybWF0IGZvcm1hdCkKKyAgICAgOiBqYXNwZXJPayh0cnVlKSwg aW9EZXZpY2UoaW9kKSwgZm9ybWF0KGZvcm1hdCksIGhhc0FscGhhKGZhbHNlKQorIHsKKysjaWYg SkFTX1ZFUlNJT05fTUFKT1IgPCAzCisgICAgIGlmIChqYXNfaW5pdCgpKSB7CisgICAgICAgICBq YXNwZXJPayA9IGZhbHNlOworICAgICAgICAgcURlYnVnKCJKYXNwZXIgTGlicmFyeSBpbml0aWFs aXphdGlvbiBmYWlsZWQiKTsKKyAgICAgfQorKyNlbHNlCisrICAgIGphc19jb25mX2NsZWFyKCk7 CisrI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg2LCAwLCAwKQorKyAgICBqYXNf Y29uZl9zZXRfbWF4X21lbV91c2FnZShRSW1hZ2VSZWFkZXI6OmFsbG9jYXRpb25MaW1pdCgpICog MTAyNCAqIDEwMjQpOworKyNlbHNlCisrICAgIC8vIDEyOE1CIHNlZW1zIHRvIGJlIGVub3VnaC4K KysgICAgamFzX2NvbmZfc2V0X21heF9tZW1fdXNhZ2UoMTI4ICogMTAyNCAqIDEwMjQpOworKyNl bmRpZgorKyAgICBpZiAoamFzX2luaXRfbGlicmFyeSgpKSB7CisrICAgICAgICBqYXNwZXJPayA9 IGZhbHNlOworKyAgICAgICAgcURlYnVnKCJKYXNwZXIgbGlicmFyeSBpbml0aWFsaXphdGlvbiBm YWlsZWQiKTsKKysgICAgfQorKyAgICBpZiAoamFzX2luaXRfdGhyZWFkKCkpIHsKKysgICAgICAg IGphc19jbGVhbnVwX2xpYnJhcnkoKTsKKysgICAgICAgIGphc3Blck9rID0gZmFsc2U7CisrICAg ICAgICBxRGVidWcoIkphc3BlciB0aHJlYWQgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisrICAg IH0KKysjZW5kaWYKKyB9CisgCisgSnBlZzIwMDBKYXNwZXJSZWFkZXI6On5KcGVnMjAwMEphc3Bl clJlYWRlcigpCisgeworKyNpZiBKQVNfVkVSU0lPTl9NQUpPUiA8IDMKKyAgICAgaWYgKGphc3Bl ck9rKQorICAgICAgICAgamFzX2NsZWFudXAoKTsKKysjZWxzZQorKyAgICBpZiAoamFzcGVyT2sp IHsKKysgICAgICAgIGlmIChqYXNfY2xlYW51cF90aHJlYWQoKSkgeworKyAgICAgICAgICAgIHFE ZWJ1ZygiSmFzcGVyIHRocmVhZCBjbGVhbnVwIGZhaWxlZCIpOworKyAgICAgICAgfQorKyAgICAg ICAgaWYgKGphc19jbGVhbnVwX2xpYnJhcnkoKSkgeworKyAgICAgICAgICAgIHFEZWJ1ZygiSmFz cGVyIGxpYnJhcnkgY2xlYW51cCBmYWlsZWQiKTsKKysgICAgICAgIH0KKysgICAgfQorKyNlbmRp ZgorIH0KKyAKKyAvKiEgXGludGVybmFsCitAQCAtODU3LDcgKzg4OCw3IEBAIGJvb2wgSnBlZzIw MDBKYXNwZXJSZWFkZXI6OndyaXRlKGNvbnN0IFFJbWFnZSAmaW1hZ2UsIGludCBxdWFsaXR5KQor ICAgICB9CisgCisgICAgIC8vIE9wZW4gYW4gZW1wdHkgamFzcGVyIHN0cmVhbSB0aGF0IGdyb3dz IGF1dG9tYXRpY2FsbHkKKy0gICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVhbSA9IGphc19z dHJlYW1fbWVtb3BlbigwLCAtMSk7CisrICAgIGphc19zdHJlYW1fdCAqIG1lbW9yeV9zdHJlYW0g PSBqYXNfc3RyZWFtX21lbW9wZW4oMCwgMCk7CisgCisgICAgIC8vIEphc3BlciB3YW50cyBhIG5v bi1jb25zdCBzdHJpbmcuCisgICAgIGNoYXIgKnN0ciA9IHFzdHJkdXAoamFzcGVyRm9ybWF0U3Ry aW5nLnRvTGF0aW4xKCkuY29uc3REYXRhKCkpOworZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRz L3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAgYi9xdGltYWdl Zm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCitp bmRleCAxMzg2NzUwLi5hYzg5NTZjIDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3Bs dWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAorKysrIGIvcXRpbWFnZWZv cm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAorQEAg LTM2MSw2ICszNjEsOCBAQCBib29sIFFUaWZmSGFuZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdlKQor ICAgICB9CisgCisgICAgIFRJRkYgKmNvbnN0IHRpZmYgPSBkLT50aWZmOworKyAgICBpZiAoVElG RklzVGlsZWQodGlmZikgJiYgVElGRlRpbGVTaXplNjQodGlmZikgPiB1aW50NjRfdChpbWFnZS0+ c2l6ZUluQnl0ZXMoKSkpIC8vIENvcnJ1cHQgaW1hZ2UKKysgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgY29uc3QgcXVpbnQzMiB3aWR0aCA9IGQtPnNpemUud2lkdGgoKTsKKyAgICAgY29uc3Qg cXVpbnQzMiBoZWlnaHQgPSBkLT5zaXplLmhlaWdodCgpOworIAorZGlmZiAtLWdpdCBhL3F0aW1h Z2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAg Yi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRs ZXIuY3BwCitpbmRleCA4MmQzOGNiLi5kMDJlYjA1IDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1h dHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAorKysrIGIv cXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVy LmNwcAorQEAgLTQ1LDYgKzQ1LDcgQEAKKyAjaW5jbHVkZSA8cWRlYnVnLmg+CisgI2luY2x1ZGUg PHFwYWludGVyLmg+CisgI2luY2x1ZGUgPHF2YXJpYW50Lmg+CisrI2luY2x1ZGUgPFF0RW5kaWFu PgorIAorIHN0YXRpYyBjb25zdCBpbnQgcmlmZkhlYWRlclNpemUgPSAxMjsgLy8gUklGRl9IRUFE RVJfU0laRSBmcm9tIHdlYnAvZm9ybWF0X2NvbnN0YW50cy5oCisgCitAQCAtMTAyLDIxICsxMDMs MjMgQEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAorIAorICAgICBt X3NjYW5TdGF0ZSA9IFNjYW5FcnJvcjsKKyAKKy0gICAgaWYgKGRldmljZSgpLT5pc1NlcXVlbnRp YWwoKSkgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiU2VxdWVudGlhbCBkZXZpY2VzIGFyZSBu b3Qgc3VwcG9ydGVkIjsKKysgICAgUVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3RfY2FzdDxRV2Vi cEhhbmRsZXIgKj4odGhpcyk7CisrICAgIGNvbnN0IGludCBoZWFkZXJCeXRlc05lZWRlZCA9IHNp emVvZihXZWJQQml0c3RyZWFtRmVhdHVyZXMpOworKyAgICBRQnl0ZUFycmF5IGhlYWRlciA9IGRl dmljZSgpLT5wZWVrKGhlYWRlckJ5dGVzTmVlZGVkKTsKKysgICAgaWYgKGhlYWRlci5zaXplKCkg PCBoZWFkZXJCeXRlc05lZWRlZCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgfQorIAor LSAgICBxaW50NjQgb2xkUG9zID0gZGV2aWNlKCktPnBvcygpOworLSAgICBkZXZpY2UoKS0+c2Vl aygwKTsKKy0KKy0gICAgUVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3RfY2FzdDxRV2VicEhhbmRs ZXIgKj4odGhpcyk7CistICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNlKCktPnBlZWsoc2l6 ZW9mKFdlYlBCaXRzdHJlYW1GZWF0dXJlcykpOworKyAgICAvLyBXZSBkbyBubyByYW5kb20gYWNj ZXNzIGR1cmluZyBkZWNvZGluZywganVzdCBhIHJlYWRBbGwoKSBvZiB0aGUgd2hvbGUgaW1hZ2Ug ZmlsZS4gU28gaWYKKysgICAgLy8gaWYgaXQgaXMgYWxsIGF2YWlsYWJsZSBhbHJlYWR5LCB3ZSBj YW4gYWNjZXB0IGEgc2VxdWVudGlhbCBkZXZpY2UuIFRoZSByaWZmIGhlYWRlciBjb250YWlucwor KyAgICAvLyB0aGUgZmlsZSBzaXplIG1pbnVzIDggYnl0ZXMgaGVhZGVyCisrICAgIHFpbnQ2NCBi eXRlU2l6ZSA9IHFGcm9tTGl0dGxlRW5kaWFuPHF1aW50MzI+KGhlYWRlci5jb25zdERhdGEoKSAr IDQpOworKyAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpICYmIGRldmljZSgpLT5ieXRl c0F2YWlsYWJsZSgpIDwgYnl0ZVNpemUgKyA4KSB7CisrICAgICAgICBxV2FybmluZygpIDw8ICJR V2VicEhhbmRsZXI6IEluc3VmZmljaWVudCBkYXRhIGF2YWlsYWJsZSBpbiBzZXF1ZW50aWFsIGRl dmljZSI7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKFdlYlBHZXRG ZWF0dXJlcygoY29uc3QgdWludDhfdCopaGVhZGVyLmNvbnN0RGF0YSgpLCBoZWFkZXIuc2l6ZSgp LCAmKHRoYXQtPm1fZmVhdHVyZXMpKSA9PSBWUDhfU1RBVFVTX09LKSB7CisgICAgICAgICBpZiAo bV9mZWF0dXJlcy5oYXNfYW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgLy8gRm9yIGFuaW1hdGlv biwgd2UgaGF2ZSB0byByZWFkIGFuZCBzY2FuIHdob2xlIGZpbGUgdG8gZGV0ZXJtaW5lIGxvb3Ag Y291bnQgYW5kIGltYWdlcyBjb3VudAorLSAgICAgICAgICAgIGRldmljZSgpLT5zZWVrKG9sZFBv cyk7CistCisgICAgICAgICAgICAgaWYgKHRoYXQtPmVuc3VyZURlbXV4ZXIoKSkgeworICAgICAg ICAgICAgICAgICB0aGF0LT5tX2xvb3AgPSBXZWJQRGVtdXhHZXRJKG1fZGVtdXhlciwgV0VCUF9G Rl9MT09QX0NPVU5UKTsKKyAgICAgICAgICAgICAgICAgdGhhdC0+bV9mcmFtZUNvdW50ID0gV2Vi UERlbXV4R2V0SShtX2RlbXV4ZXIsIFdFQlBfRkZfRlJBTUVfQ09VTlQpOworQEAgLTEyNiwxNyAr MTI5LDEzIEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVTY2FubmVkKCkgY29uc3QKKyAgICAg ICAgICAgICAgICAgaWYgKHRoYXQtPm1fZmVhdHVyZXMuaGFzX2FscGhhKQorICAgICAgICAgICAg ICAgICAgICAgdGhhdC0+bV9jb21wb3NpdGVkLT5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgCist ICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCByZXNldCBkZXZpY2UgcG9zaXRpb24gc2luY2Ug d2UgaGF2ZSByZWFkIGluIGFsbCBkYXRhCisgICAgICAgICAgICAgICAgIG1fc2NhblN0YXRlID0g U2NhblN1Y2Nlc3M7CistICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg IH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgbV9zY2FuU3RhdGUgPSBTY2FuU3Vj Y2VzczsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBkZXZpY2UoKS0+c2VlayhvbGRQb3Mp OworLQorICAgICByZXR1cm4gbV9zY2FuU3RhdGUgPT0gU2NhblN1Y2Nlc3M7CisgfQorIAorQEAg LTE1OSw3ICsxNTgsNyBAQCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlRGVtdXhlcigpCisgCisg Ym9vbCBRV2VicEhhbmRsZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyB7CistICAgIGlmICghZW5z dXJlU2Nhbm5lZCgpIHx8IGRldmljZSgpLT5pc1NlcXVlbnRpYWwoKSB8fCAhZW5zdXJlRGVtdXhl cigpKQorKyAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCAhZW5zdXJlRGVtdXhlcigpKQorICAg ICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICBRUmVjdCBwcmV2RnJhbWVSZWN0OworU3VibW9k dWxlIHF0bG9jYXRpb24gOThhNWM1MTEuLmY5OTFlMjhjOgorZGlmZiAtLWdpdCBhL3F0bG9jYXRp b24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24v Y29uZmlndXJlLmpzb24KK2luZGV4IDZkMDFhOWEzLi5kMWU2MjNhMSAxMDA2NDQKKy0tLSBhL3F0 bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdGxvY2F0aW9uL3Ny Yy9sb2NhdGlvbi9jb25maWd1cmUuanNvbgorQEAgLTksNyArOSw3IEBACisgICAgICAgICAgICAg ImxhYmVsIjogIlF0LmxhYnMubG9jYXRpb24gZXhwZXJpbWVudGFsIFFNTCBwbHVnaW4iLAorICAg ICAgICAgICAgICJwdXJwb3NlIjogIlByb3ZpZGVzIGV4cGVyaW1lbnRhbCBRdExvY2F0aW9uIFFN TCB0eXBlcyIsCisgICAgICAgICAgICAgInNlY3Rpb24iOiAiTG9jYXRpb24iLAorLSAgICAgICAg ICAgICJjb25kaXRpb24iOiAiY29uZmlnLm9wZW5nbCIsCisrICAgICAgICAgICAgImNvbmRpdGlv biI6ICJmZWF0dXJlcy5vcGVuZ2wiLAorICAgICAgICAgICAgICJvdXRwdXQiOiBbICJwcml2YXRl RmVhdHVyZSIgXQorICAgICAgICAgfSwKKyAgICAgICAgICJnZW9zZXJ2aWNlc19vc20iOiB7Citk aWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVj dHFzZ3N1cHBvcnQuY3BwIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21h cG9iamVjdHFzZ3N1cHBvcnQuY3BwCitpbmRleCBhOTc4NTczZC4uMTFlMTQ2NmYgMTAwNjQ0Cist LS0gYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3Vw cG9ydC5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBv YmplY3Rxc2dzdXBwb3J0LmNwcAorQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFFHZW9NYXBPYmpl Y3RRU0dTdXBwb3J0Ojp1cGRhdGVNYXBPYmplY3RzKFFTR05vZGUgKnJvb3QsIFFRdWlja1dpbmRv dyAqd2luZAorICAgICBpZiAoIXJvb3QpCisgICAgICAgICByZXR1cm47CisgCistICAgIGlmICht X21hcE9iamVjdHNSb290Tm9kZSAmJiBtX21hcE9iamVjdHNSb290Tm9kZS0+cGFyZW50KCkpCisr ICAgIGlmIChtX21hcE9iamVjdHNSb290Tm9kZSAmJiAhbV9tYXBPYmplY3RzUm9vdE5vZGUtPnBh cmVudCgpKQorICAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGROb2RlKG1fbWFwT2JqZWN0c1Jvb3RO b2RlLmdldCgpKTsKKyAKKyAgICAgaWYgKCFtX21hcE9iamVjdHNSb290Tm9kZSkgeworZGlmZiAt LWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2Rpbmdt YW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVhNDA0NjdlLi5k MTIzYzZhOCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMv ZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3Ny Yy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNw cAorQEAgLTU5LDggKzU5LDEwIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIHN0YXRpYyBjb25zdCBR U3RyaW5nIGtQcmVmaXhFc3JpKFFTdHJpbmdMaXRlcmFsKCJlc3JpLiIpKTsKKyBzdGF0aWMgY29u c3QgUVN0cmluZyBrUGFyYW1Vc2VyQWdlbnQoa1ByZWZpeEVzcmkgKyBRU3RyaW5nTGl0ZXJhbCgi dXNlcmFnZW50IikpOworIAorLXN0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxHZW9jb2RlKFFTdHJp bmdMaXRlcmFsKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2Vz L1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOworLXN0YXRpYyBj b25zdCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cDovL2dl b2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVy L3JldmVyc2VHZW9jb2RlIikpOworK3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxHZW9jb2RlKFFT dHJpbmdMaXRlcmFsKCJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2 aWNlcy8iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IldvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOworK3N0YXRpYyBj b25zdCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgKKysgICAgICAg ICJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9H ZW9jb2RlU2VydmVyL3JldmVyc2VHZW9jb2RlIikpOworIAorIHN0YXRpYyBRU3RyaW5nIGFkZHJl c3NUb1F1ZXJ5KGNvbnN0IFFHZW9BZGRyZXNzICZhZGRyZXNzKQorIHsKK2RpZmYgLS1naXQgYS9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2Vy X2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3Jv dXRlanNvbnBhcnNlcl9lc3JpLmNwcAoraW5kZXggMTc0OTJkOTQuLjk2YzEyYjFiIDEwMDY0NAor LS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNv bnBhcnNlcl9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcAorQEAgLTQ2LDcgKzQ2LDggQEAKKyAK KyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0cDovL3Jlc291 cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93 aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisrLy8gSlNPTiBy ZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dp cy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJy MzAwMDAwMDM2MDAwMDAwLworIAorIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtFcnJvck1lc3NhZ2Uo UVN0cmluZ0xpdGVyYWwoIkVycm9yICUxOiAlMi4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcg a0Vycm9ySnNvbihRU3RyaW5nTGl0ZXJhbCgiRXJyb3I6IGludmFsaWRlIEpTT04gZG9jdW1lbnQu IikpOworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2 aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAKK2luZGV4IDhjYWRmYjI5Li45MmI2YmIx MyAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9n ZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3Nl cnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAorQEAgLTQ0LDcgKzQ0LDggQEAKKyAK KyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0cDovL3Jlc291 cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93 aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisrLy8gSlNPTiBy ZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dp cy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJy MzAwMDAwMDM2MDAwMDAwLworIAorIEdlb1JvdXRlUmVwbHlFc3JpOjpHZW9Sb3V0ZVJlcGx5RXNy aShRTmV0d29ya1JlcGx5ICpyZXBseSwgY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAmcmVxdWVzdCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU9iamVjdCAqcGFyZW50KSA6 CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dl b3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9n ZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCAw ZTZiYzJjNy4uZWQ2MTNmNGIgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dl b3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0 bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVu Z2luZV9lc3JpLmNwcAorQEAgLTQ4LDcgKzQ4LDggQEAgc3RhdGljIGNvbnN0IFFTdHJpbmcga1By ZWZpeEVzcmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5n IGtQYXJhbVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1c2VyYWdlbnQi KSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVG9rZW4oa1ByZWZpeEVzcmkgKyBRU3Ry aW5nTGl0ZXJhbCgidG9rZW4iKSk7CisgCistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJvdXRp bmcoUVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9yb3V0ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3Nl cnZpY2VzL1dvcmxkL1JvdXRlL05BU2VydmVyL1JvdXRlX1dvcmxkL3NvbHZlIikpOworK3N0YXRp YyBjb25zdCBRU3RyaW5nIGtVcmxSb3V0aW5nKFFTdHJpbmdMaXRlcmFsKAorKyAgICAgICAgImh0 dHBzOi8vcm91dGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9Sb3V0ZS9O QVNlcnZlci9Sb3V0ZV9Xb3JsZC9zb2x2ZSIpKTsKKyAKKyBHZW9Sb3V0aW5nTWFuYWdlckVuZ2lu ZUVzcmk6Okdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFudE1hcCAmcGFy YW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRR2VvU2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCitAQCAtNzAsNyAr NzEsOCBAQCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6On5HZW9Sb3V0aW5nTWFuYWdlckVu Z2luZUVzcmkoKQorIHsKKyB9CisgCistLy8gUkVTVCByZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJj ZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAw MDAwMDM2MDAwMDAwCisrLy8gUkVTVCByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMu YXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAw MDM2MDAwMDAwCisgCisgUUdlb1JvdXRlUmVwbHkgKkdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNy aTo6Y2FsY3VsYXRlUm91dGUoY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAmcmVxdWVzdCkKKyB7CitA QCAtMTI1LDcgKzEyNyw3IEBAIHZvaWQgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpyZXBs eUVycm9yKFFHZW9Sb3V0ZVJlcGx5OjpFcnJvciBlcnJvckNvZGUsIGNvCisgUVN0cmluZyBHZW9S b3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OnByZWZlcmVkRGlyZWN0aW9uTGFuZ2FnZSgpCisgewor ICAgICAvLyBsaXN0IG9mIHN1cHBvcnRlZCBsYW5nYWdlcyBpcyBkZWZpbmVkIGluOgorLSAgICAv LyBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5k ZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorKyAgICAvLyBodHRwczovL3Jlc291cmNlcy5h cmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAw MzYwMDAwMDAKKyAgICAgY29uc3QgUVN0cmluZ0xpc3Qgc3VwcG9ydGVkTGFuZ3VhZ2VzID0gewor ICAgICAgICAgImFyIiwgLy8gR2VuZXJhdGUgZGlyZWN0aW9ucyBpbiBBcmFiaWMKKyAgICAgICAg ICJjcyIsIC8vIEdlbmVyYXRlIGRpcmVjdGlvbnMgaW4gQ3plY2gKK2RpZmYgLS1naXQgYS9xdGxv Y2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdl cmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCA1ZDE1ODM1ZC4u MjQxNDhmOTUgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2Vz L2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJl bmdpbmVfZXNyaS5jcHAKK0BAIC0yMzAsNyArMjMwLDggQEAgUUdlb01hcCAqR2VvVGlsZWRNYXBw aW5nTWFuYWdlckVuZ2luZUVzcmk6OmNyZWF0ZU1hcCgpCisgLy8gJHt5fSA9IFkKKyAvLyAke3Rv a2VufSA9IFRva2VuCisgCistLy8gdGVtcGxhdGUgPSAnaHR0cDovL3NlcnZpY2VzLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyL3Rp bGUve3t6fX0ve3t5fX0ve3t4fX0ucG5nJworKy8vIHRlbXBsYXRlID0KKysvLyAnaHR0cHM6Ly9z ZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9f TWFwL01hcFNlcnZlci90aWxlL3t7en19L3t7eX19L3t7eH19LnBuZycKKyAKKyBib29sIEdlb1Rp bGVkTWFwcGluZ01hbmFnZXJFbmdpbmVFc3JpOjppbml0aWFsaXplTWFwU291cmNlcyhRR2VvU2Vy dmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JTdHJpbmcsCitk aWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMu anNvbiBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24K K2luZGV4IDgxNjdhZTdkLi44NjJlMDg3ZCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KKysrKyBiL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KK0BAIC02LDggKzYsOCBAQAorICAgICAg ICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFN0cmVldCBNYXAiLAor ICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNl LAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXIiLAorLSAgICAg ICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9M2I5MzMzNzk4M2U5NDM2ZjhkYjk1MGUzOGE4NjI5YWYn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2Vy dmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TdHJlZXRf TWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxh IGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9M2I5MzMzNzk4 M2U5NDM2ZjhkYjk1MGUzOGE4NjI5YWYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAg IH0sCisgCisgICAgICAgICB7CitAQCAtMTYsOCArMTYsOCBAQAorICAgICAgICAgICAgICIiOiAi QXJjR0lTIE9ubGluZSBXb3JsZCBJbWFnZXJ5IiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1 ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0 dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9J bWFnZXJ5L01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7 IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xMGRmMjI3 OWY5Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAg ICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVz dC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHly aWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9p dGVtLmh0bWw/aWQ9MTBkZjIyNzlmOTY4NGU0YTlmNmE3ZjA4ZmViYWMyYTknPkVzcmk8L2E+IGNv bnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMjYsOCArMjYsOCBA QAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFRlcnJh aW4gQmFzZSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJu aWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNv bmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RlcnJhaW5fQmFzZS9NYXBTZXJ2 ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzYxYWQ4YWIwMTdkNDllMWE4MmY1 ODBlZTEyOTg5MzEnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjog Imh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29y bGRfVGVycmFpbl9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/ aWQ9YzYxYWQ4YWIwMTdkNDllMWE4MmY1ODBlZTEyOTg5MzEnPkVzcmk8L2E+IGNvbnRyaWJ1dG9y cyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMzYsOCArMzYsOCBAQAorICAgICAg ICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFRvcG9ncmFwaHkiLAor ICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNl LAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0Fy Y0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlciIsCistICAgICAgICAg ICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNv bS9ob21lL2l0ZW0uaHRtbD9pZD0zMGU1ZmUzMTQ5YzM0ZGYxYmE5MjJlNmY1YmJmODA4Zic+RXNy aTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIu YXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBT ZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTMwZTVmZTMxNDljMzRkZjFi YTkyMmU2ZjViYmY4MDhmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAor ICAgICAgICAgeworQEAgLTQ2LDggKzQ2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24i OiAiVGhpcyBtYXAgcHJlc2VudHMgbGFuZCBjb3ZlciBhbmQgZGV0YWlsZWQgdG9wb2dyYXBoaWMg bWFwcyBmb3IgdGhlIFVuaXRlZCBTdGF0ZXMuIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1 ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0 dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1VTQV9U b3BvX01hcHMvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTk5Y2Q1 ZmJkOTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAg ICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lT L3Jlc3Qvc2VydmljZXMvVVNBX1RvcG9fTWFwcy9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJj b3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hv bWUvaXRlbS5odG1sP2lkPTk5Y2Q1ZmJkOTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMyJz5Fc3JpPC9h PiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTU2LDggKzU2 LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTmF0aW9uYWwgR2VvZ3JhcGhpYyBX b3JsZCBNYXAiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAi bmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNn aXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL05hdEdlb19Xb3JsZF9NYXAvTWFwU2Vy dmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWI5YjFiNDIyMTk4OTQ0ZmJiZDUy NTBiMzI0MTY5MWI2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6 ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMv TmF0R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPWI5YjFiNDIyMTk4OTQ0ZmJiZDUyNTBiMzI0MTY5MWI2Jz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTY2LDggKzY2LDggQEAKKyAgICAg ICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlbWF0aWMgY29udGVudCBwcm92aWRpbmcgYSBuZXV0 cmFsIGJhY2tncm91bmQgd2l0aCBtaW5pbWFsIGNvbG9ycyIsCisgICAgICAgICAgICAgIm1vYmls ZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVy bCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNl cy9DYW52YXMvV29ybGRfTGlnaHRfR3JheV9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAg ImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9o b21lL2l0ZW0uaHRtbD9pZD1lZDcxMmNiMWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0OSc+RXNyaTwv YT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5h cmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9MaWdodF9H cmF5X0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1lZDcx MmNiMWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0OSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAg ICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC03Niw4ICs3Niw4IEBACisgICAgICAgICAgICAg ImRlc2NyaXB0aW9uIjogIk5hdHVyYWwgRWFydGggcGh5c2ljYWwgbWFwIGZvciB0aGUgd29ybGQi LAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBm YWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNv bS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9QaHlzaWNhbF9NYXAvTWFwU2VydmVyIiwKKy0g ICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5h cmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM0ZWM3MjJhMWNkMzRjZjBhMjM5MDRhYWRmODky M2EwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczov L3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1BoeXNp Y2FsX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5 OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM0ZWM3 MjJhMWNkMzRjZjBhMjM5MDRhYWRmODkyM2EwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAg ICAgICB9LAorIAorICAgICAgICAgeworQEAgLTg2LDggKzg2LDggQEAKKyAgICAgICAgICAgICAi ZGVzY3JpcHRpb24iOiAiUG9ydHJheXMgc3VyZmFjZSBlbGV2YXRpb24gYXMgc2hhZGVkIHJlbGll ZiIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6 IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUu Y29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1NoYWRlZF9SZWxpZWYvTWFwU2VydmVyIiwK Ky0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3 dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTljNTM3MGQwYjU0ZjRkZTFiNDhhMzc5MmQ3 Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRw czovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1No YWRlZF9SZWxpZWYvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05 YzUzNzBkMGI1NGY0ZGUxYjQ4YTM3OTJkNzM3N2ZmMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor ICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC05Niw4ICs5Niw4IEBACisgICAgICAgICAg ICAgImRlc2NyaXB0aW9uIjogIlRoaXMgbWFwIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgYXMgYSBi YXNlbWFwIGJ5IG1hcmluZSBHSVMgcHJvZmVzc2lvbmFscyBhbmQgYXMgYSByZWZlcmVuY2UgbWFw IGJ5IGFueW9uZSBpbnRlcmVzdGVkIGluIG9jZWFuIGRhdGEiLAorICAgICAgICAgICAgICJtb2Jp bGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAi dXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNl cy9PY2Vhbi9Xb3JsZF9PY2Vhbl9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHly aWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0 ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhiOGYyOGI1ZTUwMCc+RXNyaTwvYT4gY29u dHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25s aW5lLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9PY2Vhbi9Xb3JsZF9PY2Vhbl9CYXNlL01hcFNl cnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0 dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MWUxMjZlNzUyMGY5NDY2Yzlj YTI4YjhmMjhiNWU1MDAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisg ICAgICAgICB7CitAQCAtMTA2LDggKzEwNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9u IjogIlRoZW1hdGljIGNvbnRlbnQgcHJvdmlkaW5nIGEgbmV1dHJhbCBiYWNrZ3JvdW5kIHdpdGgg bWluaW1hbCBjb2xvcnMiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAg ICAgICAibmlnaHQiOiB0cnVlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2Vz LmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0Rhcmtf R3JheV9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNv cHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1hMjg0 YTliOTliMzQ0NmEzOTEwZDQxNDRhNTA5OTBmNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAg ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9EYXJrX0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAor KyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3 dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEyODRhOWI5OWIzNDQ2YTM5MTBkNDE0NGE1 MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAg eworQEAgLTExNiw4ICsxMTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZUxv cm1l4oCZcyB0b3BvZ3JhcGhpYyBiYXNlbWFwIGlzIGEgc2VhbWxlc3MgZ2xvYmFsIGRhdGEgc2V0 IHRoYXQgcG9ydHJheXMgdHJhbnNwb3J0YXRpb24sIGh5ZHJvZ3JhcGh5LCBqdXJpc2RpY3Rpb24g Ym91bmRhcmllcywgYW5kIG1ham9yIGdlb2dyYXBoaWMgZmVhdHVyZXMiLAorICAgICAgICAgICAg ICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAg ICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9TcGVjaWFsdHkvRGVMb3JtZV9Xb3JsZF9CYXNlX01hcC9NYXBTZXJ2ZXIiLAorLSAg ICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjE2NWMzZGY0NTNlNGJlNmI1YWM0ZmRiMjQxZWZm YmUnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8v c2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvU3BlY2lhbHR5L0Rl TG9ybWVfV29ybGRfQmFzZV9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0 VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0u aHRtbD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+RXNyaTwvYT4gY29udHJp YnV0b3JzIgorICAgICAgICAgfQorICAgICBdCisgfQorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24v c3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAg Yi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5n aW5lX2VzcmkuY3BwCitpbmRleCAzODU4ZGRmNS4uYWY2NmYyOGUgMTAwNjQ0CistLS0gYS9xdGxv Y2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5lX2Vz cmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxh Y2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNjMsOCArNjMsMTAgQEAgc3RhdGljIGNvbnN0 IFFTdHJpbmcga0NvdW50cmllc0tleShRU3RyaW5nTGl0ZXJhbCgiZGV0YWlsZWRDb3VudHJpZXMi KSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0xvY2FsaXplZE5hbWVzS2V5KFFTdHJpbmdMaXRl cmFsKCJsb2NhbGl6ZWROYW1lcyIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrTWF4TG9jYXRp b25zS2V5KFFTdHJpbmdMaXRlcmFsKCJtYXhMb2NhdGlvbnMiKSk7CisgCistc3RhdGljIGNvbnN0 IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lz L3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlcj9mPXBqc29uIik7Cistc3RhdGljIGNv bnN0IFFVcmwga1VybEZpbmRBZGRyZXNzQ2FuZGlkYXRlcygiaHR0cDovL2dlb2NvZGUuYXJjZ2lz LmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNz Q2FuZGlkYXRlcyIpOworK3N0YXRpYyBjb25zdCBRVXJsIGtVcmxHZW9jb2RlU2VydmVyKAorKyAg ICAgICAgImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dv cmxkL0dlb2NvZGVTZXJ2ZXI/Zj1wanNvbiIpOworK3N0YXRpYyBjb25zdCBRVXJsIGtVcmxGaW5k QWRkcmVzc0NhbmRpZGF0ZXMoImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0 L3NlcnZpY2VzL1dvcmxkLyIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJHZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpOworIAorIFBsYWNl TWFuYWdlckVuZ2luZUVzcmk6OlBsYWNlTWFuYWdlckVuZ2luZUVzcmkoY29uc3QgUVZhcmlhbnRN YXAgJnBhcmFtZXRlcnMsIFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgKmVycm9y U3RyaW5nKSA6CitTdWJtb2R1bGUgcXRtdWx0aW1lZGlhIGYwMzQ0MDc5Li4wZDdjYzMzYToKK2Rp ZmYgLS1naXQgYS9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1 dF9wdWxzZS5jcHAgYi9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9p bnB1dF9wdWxzZS5jcHAKK2luZGV4IDJiNTMyNTEzMi4uYjY4YjRhZjFiIDEwMDY0NAorLS0tIGEv cXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3Bw CisrKysgYi9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9w dWxzZS5jcHAKK0BAIC00MDIsNiArNDAyLDggQEAgaW50IFFQdWxzZUF1ZGlvSW5wdXQ6OmJ5dGVz UmVhZHkoKSBjb25zdAorIAorIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRh dGEsIHFpbnQ2NCBsZW4pCisgeworKyAgICBRX0FTU0VSVChkYXRhICE9IG51bGxwdHIgfHwgbGVu ID09IDApOworKworICAgICBtX2J5dGVzQXZhaWxhYmxlID0gY2hlY2tCeXRlc1JlYWR5KCk7Cisg CisgICAgIHNldEVycm9yKFFBdWRpbzo6Tm9FcnJvcik7CitAQCAtNDExLDcgKzQxMyw4IEBAIHFp bnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgCisg ICAgIGlmICghbV9wdWxsTW9kZSAmJiAhbV90ZW1wQnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAg ICAgcmVhZEJ5dGVzID0gcU1pbihzdGF0aWNfY2FzdDxpbnQ+KGxlbiksIG1fdGVtcEJ1ZmZlci5z aXplKCkpOworLSAgICAgICAgbWVtY3B5KGRhdGEsIG1fdGVtcEJ1ZmZlci5jb25zdERhdGEoKSwg cmVhZEJ5dGVzKTsKKysgICAgICAgIGlmIChyZWFkQnl0ZXMpCisrICAgICAgICAgICAgbWVtY3B5 KGRhdGEsIG1fdGVtcEJ1ZmZlci5jb25zdERhdGEoKSwgcmVhZEJ5dGVzKTsKKyAgICAgICAgIG1f dG90YWxUaW1lVmFsdWUgKz0gcmVhZEJ5dGVzOworIAorICAgICAgICAgaWYgKHJlYWRCeXRlcyA8 IG1fdGVtcEJ1ZmZlci5zaXplKCkpIHsKK0BAIC01MDIsOSArNTA1LDEwIEBAIHFpbnQ2NCBRUHVs c2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgCisgdm9pZCBRUHVs c2VBdWRpb0lucHV0OjphcHBseVZvbHVtZShjb25zdCB2b2lkICpzcmMsIHZvaWQgKmRlc3QsIGlu dCBsZW4pCisgeworKyAgICBRX0FTU0VSVCgoc3JjICYmIGRlc3QpIHx8IGxlbiA9PSAwKTsKKyAg ICAgaWYgKG1fdm9sdW1lIDwgMS5mKQorICAgICAgICAgUUF1ZGlvSGVscGVySW50ZXJuYWw6OnFN dWx0aXBseVNhbXBsZXMobV92b2x1bWUsIG1fZm9ybWF0LCBzcmMsIGRlc3QsIGxlbik7CistICAg IGVsc2UKKysgICAgZWxzZSBpZiAobGVuKQorICAgICAgICAgbWVtY3B5KGRlc3QsIHNyYywgbGVu KTsKKyB9CisgCitTdWJtb2R1bGUgcXRwaW0gMDJlZmVmNWUuLi5mOWE4ZjBmYyAoY29tbWl0cyBu b3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHF1aWNrM2QgYjg1Y2Y2MjIuLjQ3ZGVmYzhiOgorZGlm ZiAtLWdpdCBhL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNz aW1wLnBybyBiL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNz aW1wLnBybworaW5kZXggY2E1YzQ5OWUuLjE3NGEwNzViIDEwMDY0NAorLS0tIGEvcXRxdWljazNk L3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCisrKysgYi9xdHF1 aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KK0BAIC0x MCw3ICsxMCw3IEBAIFFUX0ZPUl9DT05GSUcgKz0gYXNzZXRpbXBvcnRlcnMtcHJpdmF0ZQorIGlu Y2x1ZGUoJCRPVVRfUFdELy4uL3F0YXNzZXRpbXBvcnRlcnMtY29uZmlnLnByaSkKKyAKKyBxdENv bmZpZyhzeXN0ZW0tYXNzaW1wKTohaWYoY3Jvc3NfY29tcGlsZTpob3N0X2J1aWxkKSB7CistICAg IFFNQUtFX1VTRV9QUklWQVRFICs9IGFzc2ltcAorKyAgICBRTUFLRV9VU0VfUFJJVkFURSArPSBx dWljazNkLWFzc2ltcAorIH0gZWxzZSB7CisgICAgIGluY2x1ZGUoLi4vLi4vLi4vM3JkcGFydHkv YXNzaW1wL2Fzc2ltcC5wcmkpCisgfQorU3VibW9kdWxlIHF0cXVpY2tjb250cm9sczIgM2E2NTdk YzAuLjU2Y2U4MjMzOgorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMv cGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcCBiL3F0cXVpY2tjb250cm9s czIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAor aW5kZXggZTVmZTczNGY3Li5lMzY5MjI3NzUgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMy L3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAKKysr KyBiL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0 cGxhdGZvcm1tZW51LmNwcAorQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAicXdpZGdldHBs YXRmb3JtbWVudWl0ZW1fcC5oIgorIAorICNpbmNsdWRlIDxRdEd1aS9xd2luZG93Lmg+CisrI2lu Y2x1ZGUgPFF0R3VpL3ByaXZhdGUvcWhpZ2hkcGlzY2FsaW5nX3AuaD4KKyAjaW5jbHVkZSA8UXRX aWRnZXRzL3FtZW51Lmg+CisgI2luY2x1ZGUgPFF0V2lkZ2V0cy9xYWN0aW9uLmg+CisgCitAQCAt MTQ1LDcgKzE0Niw3IEBAIHZvaWQgUVdpZGdldFBsYXRmb3JtTWVudTo6c2hvd1BvcHVwKGNvbnN0 IFFXaW5kb3cgKndpbmRvdywgY29uc3QgUVJlY3QgJnRhcmdldFJlCisgCisgICAgIFFQb2ludCB0 YXJnZXRQb3MgPSB0YXJnZXRSZWN0LmJvdHRvbUxlZnQoKTsKKyAgICAgaWYgKHdpbmRvdykKKy0g ICAgICAgIHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9HbG9iYWwodGFyZ2V0UG9zKTsKKysgICAg ICAgIHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9HbG9iYWwoUUhpZ2hEcGk6OmZyb21OYXRpdmVM b2NhbFBvc2l0aW9uKHRhcmdldFBvcywgd2luZG93KSk7CisgCisgICAgIGNvbnN0IFFXaWRnZXRQ bGF0Zm9ybU1lbnVJdGVtICp3aWRnZXRJdGVtID0gcW9iamVjdF9jYXN0PGNvbnN0IFFXaWRnZXRQ bGF0Zm9ybU1lbnVJdGVtICo+KGl0ZW0pOworICAgICBtX21lbnUtPnBvcHVwKHRhcmdldFBvcywg d2lkZ2V0SXRlbSA/IHdpZGdldEl0ZW0tPmFjdGlvbigpIDogbnVsbHB0cik7CitkaWZmIC0tZ2l0 IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0 dG9uLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0 cmFjdGJ1dHRvbi5jcHAKK2luZGV4IDk1MGU0ZTA5OS4uYjgxZmJlYTBiIDEwMDY0NAorLS0tIGEv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9u LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fi c3RyYWN0YnV0dG9uLmNwcAorQEAgLTM4Nyw2ICszODcsMTcgQEAgdm9pZCBRUXVpY2tBYnN0cmFj dEJ1dHRvblByaXZhdGU6Oml0ZW1JbXBsaWNpdEhlaWdodENoYW5nZWQoUVF1aWNrSXRlbSAqaXRl bSkKKyAgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JIZWlnaHRDaGFuZ2VkKCk7Cisg fQorIAorK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjppdGVtRGVzdHJveWVkKFFR dWlja0l0ZW0gKml0ZW0pCisreworKyAgICBRX1EoUVF1aWNrQWJzdHJhY3RCdXR0b24pOworKyAg ICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aXRlbURlc3Ryb3llZChpdGVtKTsKKysgICAgaWYgKGl0 ZW0gPT0gaW5kaWNhdG9yKSB7CisrICAgICAgICBpbmRpY2F0b3IgPSBudWxscHRyOworKyAgICAg ICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvcldpZHRoQ2hhbmdlZCgpOworKyAgICAgICAgZW1p dCBxLT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5nZWQoKTsKKysgICAgfQorK30KKysKKyBR UXVpY2tBYnN0cmFjdEJ1dHRvbiAqUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjpmaW5kQ2hl Y2tlZEJ1dHRvbigpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrQWJzdHJhY3RCdXR0 b24pOworQEAgLTExNzYsNiArMTE4NywxMiBAQCBRQWNjZXNzaWJsZTo6Um9sZSBRUXVpY2tBYnN0 cmFjdEJ1dHRvbjo6YWNjZXNzaWJsZVJvbGUoKSBjb25zdAorICAgICB9CisgICAgIHJldHVybiBR QWNjZXNzaWJsZTo6QnV0dG9uOworIH0KKysKKyt2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9uOjph Y2Nlc3NpYmxlUHJlc3NBY3Rpb24oKQorK3sKKysgICAgUV9EKFFRdWlja0Fic3RyYWN0QnV0dG9u KTsKKysgICAgZC0+dHJpZ2dlcigpOworK30KKyAjZW5kaWYKKyAKKyBRVF9FTkRfTkFNRVNQQUNF CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2Fic3RyYWN0YnV0dG9uX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKK2luZGV4IDBmYTQ4OTgwZS4uYWI2NjIyMGQwIDEw MDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fi c3RyYWN0YnV0dG9uX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaAorQEAgLTIwOSw2ICsyMDksNyBAQCBwcm90ZWN0 ZWQ6CisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorICAgICB2b2lkIGFjY2Vzc2liaWxp dHlBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKSBvdmVycmlkZTsKKyAgICAgUUFjY2Vzc2libGU6 OlJvbGUgYWNjZXNzaWJsZVJvbGUoKSBjb25zdCBvdmVycmlkZTsKKysgICAgUV9JTlZPS0FCTEUg dm9pZCBhY2Nlc3NpYmxlUHJlc3NBY3Rpb24oKTsKKyAjZW5kaWYKKyAKKyBwcml2YXRlOgorZGlm ZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0 cmFjdGJ1dHRvbl9wX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAoraW5kZXggOTI5MWMxYTg3Li5iNzI5NzIwZjIgMTAw NjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJz dHJhY3RidXR0b25fcF9wLmgKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAorQEAgLTEwOSw2ICsxMDksNyBAQCBwdWJs aWM6CisgCisgICAgIHZvaWQgaXRlbUltcGxpY2l0V2lkdGhDaGFuZ2VkKFFRdWlja0l0ZW0gKml0 ZW0pIG92ZXJyaWRlOworICAgICB2b2lkIGl0ZW1JbXBsaWNpdEhlaWdodENoYW5nZWQoUVF1aWNr SXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgaXRlbURlc3Ryb3llZChRUXVpY2tJdGVt ICppdGVtKSBvdmVycmlkZTsKKyAKKyAgICAgLy8gY29waWVkIGZyb20gcWFic3RyYWN0YnV0dG9u LmNwcAorICAgICBzdGF0aWMgY29uc3QgaW50IEFVVE9fUkVQRUFUX0RFTEFZID0gMzAwOworZGlm ZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rp b24uY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlv bi5jcHAKK2luZGV4IDIwNDFlNzc0MS4uODYxMGNkZmFlIDEwMDY0NAorLS0tIGEvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKKysrKyBiL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCitAQCAtMTQ1 LDcgKzE0NSw3IEBAIGludCBRUXVpY2tBY3Rpb25Qcml2YXRlOjpTaG9ydGN1dEVudHJ5OjpzaG9y dGN1dElkKCkgY29uc3QKKyAKKyB2b2lkIFFRdWlja0FjdGlvblByaXZhdGU6OlNob3J0Y3V0RW50 cnk6OmdyYWIoY29uc3QgUUtleVNlcXVlbmNlICZzaG9ydGN1dCwgYm9vbCBlbmFibGVkKQorIHsK Ky0gICAgaWYgKHNob3J0Y3V0LmlzRW1wdHkoKSkKKysgICAgaWYgKHNob3J0Y3V0LmlzRW1wdHko KSB8fCBtX3Nob3J0Y3V0SWQpCisgICAgICAgICByZXR1cm47CisgCisgICAgIFF0OjpTaG9ydGN1 dENvbnRleHQgY29udGV4dCA9IFF0OjpXaW5kb3dTaG9ydGN1dDsgLy8gVE9ETworZGlmZiAtLWdp dCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIu Y3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5l ci5jcHAKK2luZGV4IGYzOGMyYjA5Yy4uNmVlZDJhMDI0IDEwMDY0NAorLS0tIGEvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKKysrKyBiL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwCitA QCAtMjI1LDYgKzIyNSw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6Y2xlYW51cCgp CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9iamVjdE1vZGVs Ojpjb3VudENoYW5nZWQsIHEsICZRUXVpY2tDb250YWluZXI6OmNvdW50Q2hhbmdlZCk7CisgICAg IFFPYmplY3Q6OmRpc2Nvbm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9iamVjdE1vZGVsOjpjaGls ZHJlbkNoYW5nZWQsIHEsICZRUXVpY2tDb250YWluZXI6OmNvbnRlbnRDaGlsZHJlbkNoYW5nZWQp OworICAgICBkZWxldGUgY29udGVudE1vZGVsOworKyAgICBjb250ZW50TW9kZWwgPSBudWxscHRy OworIH0KKyAKKyBRUXVpY2tJdGVtICpRUXVpY2tDb250YWluZXJQcml2YXRlOjppdGVtQXQoaW50 IGluZGV4KSBjb25zdAorQEAgLTQzNiw3ICs0MzcsNyBAQCB2b2lkIFFRdWlja0NvbnRhaW5lclBy aXZhdGU6OmNvbnRlbnRDaGlsZHJlbl9jbGVhcihRUW1sTGlzdFByb3BlcnR5PFFRdWlja0l0ZW0+ Cisgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50V2lkdGgoKQorIHsK KyAgICAgUV9RKFFRdWlja0NvbnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50V2lkdGggfHwg cUZ1enp5Q29tcGFyZShjb250ZW50V2lkdGgsIGltcGxpY2l0Q29udGVudFdpZHRoKSkKKysgICAg aWYgKGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRXaWR0aCwgaW1wbGlj aXRDb250ZW50V2lkdGgpIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47CisgCisg ICAgIGNvbnRlbnRXaWR0aCA9IGltcGxpY2l0Q29udGVudFdpZHRoOworQEAgLTQ0Niw3ICs0NDcs NyBAQCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0aCgpCisg dm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50SGVpZ2h0KCkKKyB7Cisg ICAgIFFfUShRUXVpY2tDb250YWluZXIpOworLSAgICBpZiAoaGFzQ29udGVudEhlaWdodCB8fCBx RnV6enlDb21wYXJlKGNvbnRlbnRIZWlnaHQsIGltcGxpY2l0Q29udGVudEhlaWdodCkpCisrICAg IGlmIChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6eUNvbXBhcmUoY29udGVudEhlaWdodCwgaW1w bGljaXRDb250ZW50SGVpZ2h0KSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJuOwor IAorICAgICBjb250ZW50SGVpZ2h0ID0gaW1wbGljaXRDb250ZW50SGVpZ2h0OworZGlmZiAtLWdp dCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNw cCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNw cAoraW5kZXggYmJiZDBlNjIyLi4xZjRiNDczNDMgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKKysrKyBiL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAorQEAgLTg0NSw2 ICs4NDUsMTMgQEAgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6ZXhlY3V0ZUJhY2tncm91bmQo Ym9vbCBjb21wbGV0ZSkKKyAgICAgICAgIHF1aWNrQ29tcGxldGVEZWZlcnJlZChxLCBiYWNrZ3Jv dW5kTmFtZSgpLCBiYWNrZ3JvdW5kKTsKKyB9CisgCisrLyoKKysgICAgXGludGVybmFsCisrCisr ICAgIEhpZGVzIGFuIGl0ZW0gdGhhdCB3YXMgcmVwbGFjZWQgYnkgYSBuZXdlciBvbmUsIHJhdGhl ciB0aGFuCisrICAgIGRlbGV0aW5nIGl0LCBhcyB0aGUgaXRlbSBpcyB0eXBpY2FsbHkgY3JlYXRl ZCBpbiBRTUwgYW5kIGhlbmNlCisrICAgIHdlIGRvbid0IG93biBpdC4KKysqLworIHZvaWQgUVF1 aWNrQ29udHJvbFByaXZhdGU6OmhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pCisgeworICAg ICBpZiAoIWl0ZW0pCitAQCAtODYzLDYgKzg3MCwyOSBAQCB2b2lkIFFRdWlja0NvbnRyb2xQcml2 YXRlOjpoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKQorICNlbmRpZgorIH0KKyAKKysvKgor KyAgICBcaW50ZXJuYWwKKysKKysgICAgTmFtZWQgInVuaGlkZSIgYmVjYXVzZSBpdCdzIHVzZWQg Zm9yIGNhc2VzIHdoZXJlIGFuIGl0ZW0KKysgICAgdGhhdCB3YXMgcHJldmlvdXNseSBoaWRkZW4g YnkgXGwgaGlkZU9sZEl0ZW0oKSB3YW50cyB0byBiZQorKyAgICBzaG93biBieSBhIGNvbnRyb2wg YWdhaW4sIHN1Y2ggYXMgYSBTY3JvbGxCYXIgaW4gU2Nyb2xsVmlldy4KKysqLworK3ZvaWQgUVF1 aWNrQ29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0oUVF1aWNrQ29udHJvbCAqY29udHJvbCwg UVF1aWNrSXRlbSAqaXRlbSkKKyt7CisrICAgIFFfQVNTRVJUKGl0ZW0pOworKyAgICBxQ0RlYnVn KGxjSXRlbU1hbmFnZW1lbnQpIDw8ICJ1bmhpZGluZyBvbGQgaXRlbSIgPDwgaXRlbTsKKysKKysg ICAgaXRlbS0+c2V0VmlzaWJsZSh0cnVlKTsKKysgICAgaXRlbS0+c2V0UGFyZW50SXRlbShjb250 cm9sKTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIC8vIEFkZCB0aGUg aXRlbSBiYWNrIGluIHRvIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisrICAgIFFRdWlja0FjY2Vz c2libGVBdHRhY2hlZCAqYWNjZXNzaWJsZSA9IGFjY2Vzc2libGVBdHRhY2hlZChpdGVtKTsKKysg ICAgaWYgKGFjY2Vzc2libGUpCisrICAgICAgICBhY2Nlc3NpYmxlLT5zZXRJZ25vcmVkKGZhbHNl KTsKKysjZW5kaWYKKyt9CisrCisgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dXBkYXRlQmFz ZWxpbmVPZmZzZXQoKQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRyb2wpOworZGlmZiAtLWdpdCBh L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5o IGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9w LmgKK2luZGV4IDhlOTc5MDc5ZS4uYTZlNjI0YzkxIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKKysrKyBiL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oCitAQCAt MTczLDYgKzE3Myw3IEBAIHB1YmxpYzoKKyAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVCYWNrZ3Jv dW5kKGJvb2wgY29tcGxldGUgPSBmYWxzZSk7CisgCisgICAgIHN0YXRpYyB2b2lkIGhpZGVPbGRJ dGVtKFFRdWlja0l0ZW0gKml0ZW0pOworKyAgICBzdGF0aWMgdm9pZCB1bmhpZGVPbGRJdGVtKFFR dWlja0NvbnRyb2wgKmNvbnRyb2wsIFFRdWlja0l0ZW0gKml0ZW0pOworIAorICAgICB2b2lkIHVw ZGF0ZUJhc2VsaW5lT2Zmc2V0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAgYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAoraW5k ZXggZTZkYjE0ZWI1Li42MTk3ZDE1NDcgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorKysrIGIvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAK K0BAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIFFSZWN0RiBhbGlnbmVkUmVjdChRdDo6TGF5b3V0 RGlyZWN0aW9uIGRpcmVjdGlvbiwgUXQ6OkFsaWdubWVudCBhbGlnbm1lbnQKKyB2b2lkIFFRdWlj a0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OnJlc2l6ZUNvbnRlbnQoKQorIHsKKyAgICAgUV9RKFFR dWlja0RpYWxvZ0J1dHRvbkJveCk7CistICAgIGlmICghY29udGVudEl0ZW0pCisrICAgIGlmICgh Y29udGVudEl0ZW0gfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAg UVJlY3RGIGdlb21ldHJ5ID0gcS0+Ym91bmRpbmdSZWN0KCkuYWRqdXN0ZWQocS0+bGVmdFBhZGRp bmcoKSwgcS0+dG9wUGFkZGluZygpLCAtcS0+cmlnaHRQYWRkaW5nKCksIC1xLT5ib3R0b21QYWRk aW5nKCkpOworQEAgLTMyMiw2ICszMjIsOSBAQCB2b2lkIFFRdWlja0RpYWxvZ0J1dHRvbkJveFBy aXZhdGU6OnVwZGF0ZUxheW91dCgpCisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0 ZTo6Z2V0Q29udGVudFdpZHRoKCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tEaWFs b2dCdXR0b25Cb3gpOworKyAgICBpZiAoIWNvbnRlbnRNb2RlbCkKKysgICAgICAgIHJldHVybiAw OworKworICAgICBjb25zdCBpbnQgY291bnQgPSBjb250ZW50TW9kZWwtPmNvdW50KCk7CisgICAg IGNvbnN0IHFyZWFsIHRvdGFsU3BhY2luZyA9IHFNYXgoMCwgY291bnQgLSAxKSAqIHNwYWNpbmc7 CisgICAgIHFyZWFsIHRvdGFsV2lkdGggPSB0b3RhbFNwYWNpbmc7CitAQCAtMzQxLDYgKzM0NCw5 IEBAIHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRXaWR0aCgp IGNvbnN0CisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudEhl aWdodCgpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsK KysgICAgaWYgKCFjb250ZW50TW9kZWwpCisrICAgICAgICByZXR1cm4gMDsKKysKKyAgICAgY29u c3QgaW50IGNvdW50ID0gY29udGVudE1vZGVsLT5jb3VudCgpOworICAgICBxcmVhbCBtYXhIZWln aHQgPSAwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKK2RpZmYgLS1n aXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5j cHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5j cHAKK2luZGV4IDkxYmQ1OTE4NC4uMGNlNTE4Zjg0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCisrKysgYi9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKK0BAIC0zOTks OCArMzk5LDExIEBAIHZvaWQgUVF1aWNrT3ZlcmxheTo6aXRlbUNoYW5nZShJdGVtQ2hhbmdlIGNo YW5nZSwgY29uc3QgSXRlbUNoYW5nZURhdGEgJmRhdGEpCisgICAgIFFfRChRUXVpY2tPdmVybGF5 KTsKKyAgICAgUVF1aWNrSXRlbTo6aXRlbUNoYW5nZShjaGFuZ2UsIGRhdGEpOworIAorLSAgICBp ZiAoY2hhbmdlID09IEl0ZW1DaGlsZEFkZGVkQ2hhbmdlIHx8IGNoYW5nZSA9PSBJdGVtQ2hpbGRS ZW1vdmVkQ2hhbmdlKQorKyAgICBpZiAoY2hhbmdlID09IEl0ZW1DaGlsZEFkZGVkQ2hhbmdlIHx8 IGNoYW5nZSA9PSBJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlKSB7CisgICAgICAgICBzZXRWaXNpYmxl KCFkLT5hbGxEcmF3ZXJzLmlzRW1wdHkoKSB8fCAhY2hpbGRJdGVtcygpLmlzRW1wdHkoKSk7Cisr ICAgICAgICBpZiAoZGF0YS5pdGVtLT5wYXJlbnQoKSA9PSBkLT5tb3VzZUdyYWJiZXJQb3B1cCkK KysgICAgICAgICAgICBkLT5zZXRNb3VzZUdyYWJiZXJQb3B1cChudWxscHRyKTsKKysgICAgfQor IH0KKyAKKyB2b2lkIFFRdWlja092ZXJsYXk6Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYg Jm5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYgJm9sZEdlb21ldHJ5KQorZGlmZiAtLWdpdCBhL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAK K2luZGV4IDRlMmY1MDlkYi4uMWM0YjMwOGNkIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKKysrKyBiL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwCitAQCAtNzk3 LDYgKzc5NywxNCBAQCB2b2lkIFFRdWlja1Njcm9sbEJhckF0dGFjaGVkUHJpdmF0ZTo6aW5pdEhv cml6b250YWwoKQorICAgICBpZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2FibGUtPnBhcmVu dEl0ZW0oKSkKKyAgICAgICAgIGhvcml6b250YWwtPnN0YWNrQWZ0ZXIoZmxpY2thYmxlKTsKKyAK KysgICAgLy8gSWYgYSBzY3JvbGwgYmFyIHdhcyBwcmV2aW91c2x5IGhpZGRlbiAoZHVlIHRvIGUu Zy4gc2V0dGluZyBhIG5ldyBjb250ZW50SXRlbQorKyAgICAvLyBvbiBhIFNjcm9sbFZpZXcpLCB3 ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHVuLWhpZGUgaXQuCisrICAgIC8vIFdlIGRvbid0 IGJvdGhlciBjaGVja2luZyBpZiB0aGUgaXRlbSBpcyBhY3R1YWxseSB0aGUgb2xkIG9uZSwgYmVj YXVzZQorKyAgICAvLyBpZiBpdCdzIG5vdCwgYWxsIG9mIHRoZSB0aGluZ3MgdGhlIGZ1bmN0aW9u IGRvZXMgKHNldHRpbmcgcGFyZW50LCB2aXNpYmlsaXR5LCBldGMuKQorKyAgICAvLyBzaG91bGQg YmUgbm8tb3BzIGFueXdheS4KKysgICAgaWYgKGF1dG8gY29udHJvbCA9IHFvYmplY3RfY2FzdDxR UXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkKKysgICAgICAgIFFRdWlja0NvbnRyb2xQ cml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIGhvcml6b250YWwpOworKworICAgICBsYXlv dXRIb3Jpem9udGFsKCk7CisgICAgIGhvcml6b250YWwtPnNldFNpemUoYXJlYS0+cHJvcGVydHko IndpZHRoUmF0aW8iKS50b1JlYWwoKSk7CisgICAgIGhvcml6b250YWwtPnNldFBvc2l0aW9uKGFy ZWEtPnByb3BlcnR5KCJ4UG9zaXRpb24iKS50b1JlYWwoKSk7CitAQCAtODE4LDYgKzgyNiw5IEBA IHZvaWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0VmVydGljYWwoKQorICAg ICBpZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2FibGUtPnBhcmVudEl0ZW0oKSkKKyAgICAg ICAgIHZlcnRpY2FsLT5zdGFja0FmdGVyKGZsaWNrYWJsZSk7CisgCisrICAgIGlmIChhdXRvIGNv bnRyb2wgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrQ29udHJvbCo+KHFfcHRyLT5wYXJlbnQoKSkpCisr ICAgICAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShjb250cm9sLCB2ZXJ0 aWNhbCk7CisrCisgICAgIGxheW91dFZlcnRpY2FsKCk7CisgICAgIHZlcnRpY2FsLT5zZXRTaXpl KGFyZWEtPnByb3BlcnR5KCJoZWlnaHRSYXRpbyIpLnRvUmVhbCgpKTsKKyAgICAgdmVydGljYWwt PnNldFBvc2l0aW9uKGFyZWEtPnByb3BlcnR5KCJ5UG9zaXRpb24iKS50b1JlYWwoKSk7CitkaWZm IC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Nj cm9sbHZpZXcucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEv dHN0X3Njcm9sbHZpZXcucW1sCitpbmRleCAwZThiMDgzNTIuLmNkNDkzMTE4NCAxMDA2NDQKKy0t LSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2 aWV3LnFtbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEv dHN0X3Njcm9sbHZpZXcucW1sCitAQCAtNTc2LDQgKzU3Niw1MSBAQCBUZXN0Q2FzZSB7CisgICAg ICAgICB2ZXJpZnkobmV3SG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxlKQorICAgICAgICAgdmVy aWZ5KCFvbGRIb3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgIH0KKysKKysgICAgQ29t cG9uZW50IHsKKysgICAgICAgIGlkOiBiaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0YW5kYWxvbmVG bGlja2FibGUKKysKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIHdpZHRoOiAyMDAKKysg ICAgICAgICAgICBoZWlnaHQ6IDIwMAorKworKyAgICAgICAgICAgIHByb3BlcnR5IGFsaWFzIHNj cm9sbFZpZXc6IHNjcm9sbFZpZXcKKysKKysgICAgICAgICAgICBTY3JvbGxWaWV3IHsKKysgICAg ICAgICAgICAgICAgaWQ6IHNjcm9sbFZpZXcKKysgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxs OiBwYXJlbnQKKysgICAgICAgICAgICAgICAgY29udGVudEl0ZW06IGxpc3RWaWV3CisrCisrICAg ICAgICAgICAgICAgIHByb3BlcnR5IEl0ZW0gc29tZUJpbmRpbmc6IGNvbnRlbnRJdGVtCisrICAg ICAgICAgICAgfQorKyAgICAgICAgICAgIExpc3RWaWV3IHsKKysgICAgICAgICAgICAgICAgaWQ6 IGxpc3RWaWV3CisrICAgICAgICAgICAgICAgIG1vZGVsOiAxMAorKyAgICAgICAgICAgICAgICBk ZWxlZ2F0ZTogSXRlbURlbGVnYXRlIHsKKysgICAgICAgICAgICAgICAgICAgIHRleHQ6IG1vZGVs RGF0YQorKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGxpc3RWaWV3LndpZHRoCisrICAgICAg ICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAg Ly8gVGVzdHMgdGhhdCBzY3JvbGwgYmFycyBzaG93IHVwIGZvciBhIFNjcm9sbFZpZXcgd2hlcmUK KysgICAgLy8gLSBpdHMgY29udGVudEl0ZW0gaXMgZGVjbGFyZWQgYXMgYSBzdGFuZGFsb25lLCBz ZXBhcmF0ZSBpdGVtCisrICAgIC8vIC0gdGhlcmUgaXMgYSBiaW5kaW5nIHRvIGNvbnRlbnRJdGVt ICh3aGljaCBjYXVzZXMgYSBkZWZhdWx0IEZsaWNrYWJsZSB0byBiZSBjcmVhdGVkKQorKyAgICBm dW5jdGlvbiB0ZXN0X2JpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZSgp IHsKKysgICAgICAgIGxldCByb290ID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGJpbmRpbmdUb0Nv bnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZSwgdGVzdENhc2UpCisrICAgICAgICB2ZXJp Znkocm9vdCkKKysKKysgICAgICAgIGxldCBjb250cm9sID0gcm9vdC5zY3JvbGxWaWV3CisrICAg ICAgICBsZXQgdmVydGljYWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9sbEJhci52ZXJ0aWNhbAor KyAgICAgICAgbGV0IGhvcml6b250YWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9sbEJhci5ob3Jp em9udGFsCisrICAgICAgICBjb21wYXJlKHZlcnRpY2FsU2Nyb2xsQmFyLnBhcmVudCwgY29udHJv bCkKKysgICAgICAgIGNvbXBhcmUoaG9yaXpvbnRhbFNjcm9sbEJhci5wYXJlbnQsIGNvbnRyb2wp CisrICAgICAgICB2ZXJpZnkodmVydGljYWxTY3JvbGxCYXIudmlzaWJsZSkKKysgICAgICAgIHZl cmlmeShob3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisrCisrICAgICAgICBtb3VzZURyYWco dmVydGljYWxTY3JvbGxCYXIsIHZlcnRpY2FsU2Nyb2xsQmFyLndpZHRoIC8gMiwgdmVydGljYWxT Y3JvbGxCYXIuaGVpZ2h0IC8gMiwgMCwgNTApCisrICAgICAgICB2ZXJpZnkodmVydGljYWxTY3Jv bGxCYXIuYWN0aXZlKQorKyAgICAgICAgdmVyaWZ5KGhvcml6b250YWxTY3JvbGxCYXIuYWN0aXZl KQorKyAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9j b250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRv L2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKK2luZGV4IGIzZmFiNDFjYS4uMTBiNmJhYTAy IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEv dHN0X3N3aXRjaC5xbWwKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9s cy9kYXRhL3RzdF9zd2l0Y2gucW1sCitAQCAtNjA4LDQgKzYwOCwyNyBAQCBUZXN0Q2FzZSB7Cisg ICAgICAgICBtb3VzZUNsaWNrKGNvbnRyb2wuaW5kaWNhdG9yKQorICAgICAgICAgdmVyaWZ5KGNv bnRyb2wuYWN0aXZlRm9jdXMpCisgICAgIH0KKysKKysgICAgQ29tcG9uZW50IHsKKysgICAgICAg IGlkOiBkZWxldGlvbk9yZGVyMQorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgSW1hZ2Ug eyBpZDogaW5uZXJJbWFnZSB9CisrICAgICAgICAgICAgU3dpdGNoIHsgaW5kaWNhdG9yOiBpbm5l ckltYWdlIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAg ICAgaWQ6IGRlbGV0aW9uT3JkZXIyCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBTd2l0 Y2ggeyBpbmRpY2F0b3I6IGlubmVySW1hZ2UgfQorKyAgICAgICAgICAgIEltYWdlIHsgaWQ6IGlu bmVySW1hZ2UgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGZ1bmN0aW9uIHRlc3RfZGVs ZXRpb25PcmRlcigpIHsKKysgICAgICAgIHZhciBjb250cm9sMSA9IGNyZWF0ZVRlbXBvcmFyeU9i amVjdChkZWxldGlvbk9yZGVyMSwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnkoY29udHJvbDEp CisrICAgICAgICB2YXIgY29udHJvbDIgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoZGVsZXRpb25P cmRlcjIsIHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5KGNvbnRyb2wyKQorKyAgICB9CisgfQor ZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRh L3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMv YXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uOWU0NTk4YjlmCistLS0gL2Rldi9u dWxsCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9y ZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwKK0BAIC0wLDAgKzEsNzggQEAKKysvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55 IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysq KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4K KysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkJTRCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2Ug VXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2Vz IG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFs IGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFs dGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisr KiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZv ciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQu aW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhl IGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiog QlNEIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHVzZSB0aGlzIGZp bGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBCU0QgbGljZW5zZQorKyoqIGFzIGZvbGxvd3M6Cisr KioKKysqKiAiUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0CisrKiogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKyoqIG1ldDoKKysqKiAgICog UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKysqKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLgorKyoqICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyoqICAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysq KiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3 aXRoIHRoZQorKyoqICAgICBkaXN0cmlidXRpb24uCisrKiogICAqIE5laXRoZXIgdGhlIG5hbWUg b2YgVGhlIFF0IENvbXBhbnkgTHRkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisrKiogICAgIGNvbnRy aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl ZAorKyoqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0 dGVuIHBlcm1pc3Npb24uCisrKioKKysqKgorKyoqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKysqKiAiQVMgSVMiIEFO RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor KyoqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTIEZPUgorKyoqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisrKiogT1dORVIgT1IgQ09OVFJJQlVU T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrKiog U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg QlVUIE5PVAorKyoqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKyoqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKyoqIFRIRU9SWSBP RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQKKysqKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UKKysqKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiIKKysqKgorKyoqICRRVF9FTkRf TElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisraW1wb3J0IFF0UXVpY2sg Mi4xNQorK2ltcG9ydCBRdFF1aWNrLkNvbnRyb2xzIDIuMTUKKysKKytBcHBsaWNhdGlvbldpbmRv dyB7CisrICAgIGlkOiB3aW5kb3cKKysgICAgd2lkdGg6IDQwMAorKyAgICBoZWlnaHQ6IDQwMAor KyAgICB0aXRsZTogInJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uIgorKworKyAgICBwcm9wZXJ0 eSBhbGlhcyBwb3B1cDogcG9wdXAKKysgICAgcHJvcGVydHkgYWxpYXMgbW9kYWxQb3B1cDogbW9k YWxQb3B1cAorKworKyAgICBQb3B1cCB7CisrICAgICAgICBpZDogcG9wdXAKKysgICAgICAgIHk6 IHBhcmVudC5oZWlnaHQgLSBoZWlnaHQKKysgICAgICAgIHdpZHRoOiA1MAorKyAgICAgICAgaGVp Z2h0OiA1MAorKyAgICB9CisrCisrICAgIFBvcHVwIHsKKysgICAgICAgIGlkOiBtb2RhbFBvcHVw CisrICAgICAgICBtb2RhbDogdHJ1ZQorKyAgICAgICAgeTogcGFyZW50LmhlaWdodCAtIGhlaWdo dAorKyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBoZWlnaHQ6IDUwCisrICAgICAgICBleGl0 OiAgVHJhbnNpdGlvbiB7IFBhdXNlQW5pbWF0aW9uIHsgZHVyYXRpb246IDEwMCB9IH0KKysgICAg fQorK30KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9w dXAvdHN0X3FxdWlja3BvcHVwLmNwcCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVp Y2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwCitpbmRleCA1NDk1MmQxMjguLjNkNTBlMmRkNCAx MDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3Rf cXF1aWNrcG9wdXAuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNr cG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAorQEAgLTEwMCw2ICsxMDAsNyBAQCBwcml2YXRlIHNs b3RzOgorICAgICB2b2lkIGludmlzaWJsZVRvb2xUaXBPcGVuKCk7CisgICAgIHZvaWQgY2VudGVy SW5PdmVybGF5V2l0aGluU3RhY2tWaWV3SXRlbSgpOworICAgICB2b2lkIGRlc3Ryb3lEdXJpbmdF eGl0VHJhbnNpdGlvbigpOworKyAgICB2b2lkIHJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uKCk7 CisgfTsKKyAKKyB2b2lkIHRzdF9RUXVpY2tQb3B1cDo6aW5pdFRlc3RDYXNlKCkKK0BAIC0xNTc1 LDYgKzE1NzYsMzQgQEAgdm9pZCB0c3RfUVF1aWNrUG9wdXA6OmRlc3Ryb3lEdXJpbmdFeGl0VHJh bnNpdGlvbigpCisgICAgIFFWRVJJRlkoIWJ1dHRvbi0+aXNEb3duKCkpOworIH0KKyAKKyt2b2lk IHRzdF9RUXVpY2tQb3B1cDo6cmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKQorK3sKKysgICAg UVF1aWNrQXBwbGljYXRpb25IZWxwZXIgaGVscGVyKHRoaXMsICJyZWxlYXNlQWZ0ZXJFeGl0VHJh bnNpdGlvbi5xbWwiKTsKKysgICAgUVZFUklGWTIoaGVscGVyLnJlYWR5LCBoZWxwZXIuZmFpbHVy ZU1lc3NhZ2UoKSk7CisrCisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaGVscGVyLndpbmRv dzsKKysgICAgd2luZG93LT5zaG93KCk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2lu ZG93QWN0aXZlKHdpbmRvdykpOworKworKyAgICBRUXVpY2tPdmVybGF5ICpvdmVybGF5ID0gUVF1 aWNrT3ZlcmxheTo6b3ZlcmxheSh3aW5kb3cpOworKyAgICBRUXVpY2tQb3B1cCAqbW9kYWxQb3B1 cCA9IHdpbmRvdy0+cHJvcGVydHkoIm1vZGFsUG9wdXAiKS52YWx1ZTxRUXVpY2tQb3B1cCAqPigp OworKyAgICBRUXVpY2tQb3B1cCAqcG9wdXAgPSB3aW5kb3ctPnByb3BlcnR5KCJwb3B1cCIpLnZh bHVlPFFRdWlja1BvcHVwICo+KCk7CisrCisrICAgIG1vZGFsUG9wdXAtPm9wZW4oKTsKKysgICAg UVRSWV9WRVJJRlkobW9kYWxQb3B1cC0+aXNPcGVuZWQoKSk7CisrCisrICAgIFFUZXN0Ojptb3Vz ZVByZXNzKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwg MSkpOworKyAgICAvLyB3YWl0IHVudGlsIHRoZSB0cmFuc2l0aW9uIGlzIGZpbmlzaGVkIGFuZCB0 aGUgb3ZlcmxheSBoaWRlcyBpdHNlbGYKKysgICAgUVRSWV9WRVJJRlkoIW92ZXJsYXktPmlzVmlz aWJsZSgpKTsKKysgICAgUVRlc3Q6Om1vdXNlUmVsZWFzZSh3aW5kb3csIFF0OjpMZWZ0QnV0dG9u LCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysKKysgICAgcG9wdXAtPm9wZW4oKTsK KysgICAgUVRSWV9WRVJJRlkocG9wdXAtPmlzT3BlbmVkKCkpOworKyAgICBRVGVzdDo6bW91c2VD bGljayh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEp KTsKKysgICAgUVRSWV9WRVJJRlkoIXBvcHVwLT5pc09wZW5lZCgpKTsKKyt9CisrCisrCisgUVRF U1RfUVVJQ0tDT05UUk9MU19NQUlOKHRzdF9RUXVpY2tQb3B1cCkKKyAKKyAjaW5jbHVkZSAidHN0 X3FxdWlja3BvcHVwLm1vYyIKK1N1Ym1vZHVsZSBxdHNjcmlwdCA1YmU5NWY5Ni4uLjRkOGU0YmQy IChjb21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0c3BlZWNoIDE3ZmM5ZmRlLi4yNTU4 NDVlMjoKK2RpZmYgLS1naXQgYS9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0 Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwIGIvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRz L3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAoraW5kZXggNmViNzRi OC4uYmNjN2RkMSAxMDA2NDQKKy0tLSBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hk aXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAKKysrKyBiL3F0c3BlZWNoL3NyYy9w bHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAKK0BA IC0zNTcsNyArMzU3LDkgQEAgUVZlY3RvcjxRTG9jYWxlPiBRVGV4dFRvU3BlZWNoRW5naW5lU3Bl ZWNoZDo6YXZhaWxhYmxlTG9jYWxlcygpIGNvbnN0CisgCisgUVZlY3RvcjxRVm9pY2U+IFFUZXh0 VG9TcGVlY2hFbmdpbmVTcGVlY2hkOjphdmFpbGFibGVWb2ljZXMoKSBjb25zdAorIHsKKy0gICAg cmV0dXJuIG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRMb2NhbGUubmFtZSgpKS50b1ZlY3Rvcigp OworKyAgICBRTGlzdDxRVm9pY2U+IHJlc3VsdExpc3QgPSBtX3ZvaWNlcy52YWx1ZXMobV9jdXJy ZW50TG9jYWxlLm5hbWUoKSk7CisrICAgIHN0ZDo6cmV2ZXJzZShyZXN1bHRMaXN0LmJlZ2luKCks IHJlc3VsdExpc3QuZW5kKCkpOworKyAgICByZXR1cm4gcmVzdWx0TGlzdC50b1ZlY3RvcigpOwor IH0KKyAKKyAvLyBXZSBoYXZlIG5vIHdheSBvZiBrbm93aW5nIG91ciBvd24gY2xpZW50X2lkIHNp bmNlIHNwZWVjaC1kaXNwYXRjaGVyIHNlZW1zIHRvIGJlIGluY29tcGxldGUKK1N1Ym1vZHVsZSBx dHN2ZyAwYzA1NzgwZS4uYTdhMGYyNDk6CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3BsdWdpbnMv aW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcCBiL3F0c3ZnL3NyYy9wbHVnaW5zL2lt YWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKK2luZGV4IDU2MWU3N2UuLjEyZTA1NzQg MTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hh bmRsZXIuY3BwCisrKysgYi9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdp b2hhbmRsZXIuY3BwCitAQCAtMTkxLDYgKzE5MSw4IEBAIGJvb2wgUVN2Z0lPSGFuZGxlcjo6cmVh ZChRSW1hZ2UgKmltYWdlKQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGlm ICghZmluYWxTaXplLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgIGlmIChxTWF4KGZpbmFsU2l6 ZS53aWR0aCgpLCBmaW5hbFNpemUuaGVpZ2h0KCkpID4gMHhmZmZmKQorKyAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7IC8vIEFzc3VtZSBjb3JydXB0ZWQgZmlsZQorICAgICAgICAgICAgIGlt YWdlLT5maWxsKGQtPmJhY2tDb2xvci5yZ2JhKCkpOworICAgICAgICAgICAgIFFQYWludGVyIHAo aW1hZ2UpOworICAgICAgICAgICAgIGQtPnIucmVuZGVyKCZwLCBib3VuZHMpOworZGlmZiAtLWdp dCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFu ZGxlci5jcHAKK2luZGV4IGE1Zjg3N2YuLjhkZGE1NjMgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMv c3ZnL3FzdmdoYW5kbGVyLmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAK K0BAIC0xMzkzLDkgKzEzOTMsMTAgQEAgc3RhdGljIHZvaWQgcGFyc2VGb250KFFTdmdOb2RlICpu b2RlLAorICAgICAgICAgY2FzZSBGb250U2l6ZU5vbmU6CisgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICBjYXNlIEZvbnRTaXplVmFsdWU6IHsKKy0gICAgICAgICAgICBRU3ZnSGFuZGxlcjo6 TGVuZ3RoVHlwZSBkdW1teTsgLy8gc2hvdWxkIGFsd2F5cyBiZSBwaXhlbCBzaXplCistICAgICAg ICAgICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4ocGFyc2VMZW5ndGgoYXR0cmlidXRlcy5mb250 U2l6ZSwgZHVtbXksIGhhbmRsZXIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHFyZWFsKDB4ZmZmZikpKTsKKysgICAgICAgICAgICBRU3ZnSGFuZGxlcjo6TGVuZ3RoVHlw ZSB0eXBlOworKyAgICAgICAgICAgIHFyZWFsIGZzID0gcGFyc2VMZW5ndGgoYXR0cmlidXRlcy5m b250U2l6ZSwgdHlwZSwgaGFuZGxlcik7CisrICAgICAgICAgICAgZnMgPSBjb252ZXJ0VG9QaXhl bHMoZnMsIHRydWUsIHR5cGUpOworKyAgICAgICAgICAgIGZvbnRTdHlsZS0+c2V0U2l6ZShxTWlu KGZzLCBxcmVhbCgweGZmZmYpKSk7CisgICAgICAgICB9CisgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICBkZWZhdWx0OgorQEAgLTI1MTMsNiArMjUxNCw4IEBAIHN0YXRpYyBib29sIHBhcnNl QW5pbWF0ZVRyYW5zZm9ybU5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAgICAgICAgICArK3M7 CisgICAgICAgICB9CisgICAgIH0KKysgICAgaWYgKHZhbHMuY291bnQoKSAlIDMgIT0gMCkKKysg ICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgYm9vbCBvayA9IHRydWU7CisgICAgIGludCBi ZWdpbiA9IHBhcnNlQ2xvY2tWYWx1ZShiZWdpblN0ciwgJm9rKTsKK0BAIC0yNTc2LDYgKzI1Nzks OCBAQCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZUNpcmNsZU5vZGUoUVN2Z05vZGUgKnBhcmVudCwK KyAgICAgcXJlYWwgbmN4ID0gdG9Eb3VibGUoY3gpOworICAgICBxcmVhbCBuY3kgPSB0b0RvdWJs ZShjeSk7CisgICAgIHFyZWFsIG5yICA9IHRvRG91YmxlKHIpOworKyAgICBpZiAobnIgPCAwLjAp CisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAKKyAgICAgUVJlY3RGIHJlY3QobmN4LW5yLCBu Y3ktbnIsIG5yKjIsIG5yKjIpOworICAgICBRU3ZnTm9kZSAqY2lyY2xlID0gbmV3IFFTdmdDaXJj bGUocGFyZW50LCByZWN0KTsKK0BAIC0zMDQ2LDE1ICszMDUxLDE2IEBAIHN0YXRpYyBRU3ZnU3R5 bGVQcm9wZXJ0eSAqY3JlYXRlUmFkaWFsR3JhZGllbnROb2RlKFFTdmdOb2RlICpub2RlLAorIAor ICAgICBxcmVhbCBuY3ggPSAwLjU7CisgICAgIHFyZWFsIG5jeSA9IDAuNTsKKy0gICAgcXJlYWwg bnIgID0gMC41OworICAgICBpZiAoIWN4LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeCA9IHRvRG91 YmxlKGN4KTsKKyAgICAgaWYgKCFjeS5pc0VtcHR5KCkpCisgICAgICAgICBuY3kgPSB0b0RvdWJs ZShjeSk7CisrCisrICAgIHFyZWFsIG5yID0gMC4wOworICAgICBpZiAoIXIuaXNFbXB0eSgpKQor ICAgICAgICAgbnIgPSB0b0RvdWJsZShyKTsKKy0gICAgaWYgKG5yIDwgMC41KQorLSAgICAgICAg bnIgPSAwLjU7CisrICAgIGlmIChuciA8PSAwLjApCisrICAgICAgICByZXR1cm4gbnVsbHB0cjsK KyAKKyAgICAgcXJlYWwgbmZ4ID0gbmN4OworICAgICBpZiAoIWZ4LmlzRW1wdHkoKSkKK0BAIC0z MzUwLDcgKzMzNTYsOSBAQCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZVRleHROb2RlKFFTdmdOb2Rl ICpwYXJlbnQsCisgICAgIC8vIyMjIGVkaXRhYmxlIGFuZCByb3RhdGUgbm90IGhhbmRsZWQKKyAg ICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgdHlwZTsKKyAgICAgcXJlYWwgbnggPSBwYXJzZUxl bmd0aCh4LCB0eXBlLCBoYW5kbGVyKTsKKysgICAgbnggPSBjb252ZXJ0VG9QaXhlbHMobngsIHRy dWUsIHR5cGUpOworICAgICBxcmVhbCBueSA9IHBhcnNlTGVuZ3RoKHksIHR5cGUsIGhhbmRsZXIp OworKyAgICBueSA9IGNvbnZlcnRUb1BpeGVscyhueSwgdHJ1ZSwgdHlwZSk7CisgCisgICAgIFFT dmdOb2RlICp0ZXh0ID0gbmV3IFFTdmdUZXh0KHBhcmVudCwgUVBvaW50RihueCwgbnkpKTsKKyAg ICAgcmV0dXJuIHRleHQ7CitAQCAtMzY5MSw5ICszNjk5LDcgQEAgdm9pZCBRU3ZnSGFuZGxlcjo6 cGFyc2UoKQorICAgICAgICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVyOjpFbmRFbGVtZW50OgorICAg ICAgICAgICAgIGVuZEVsZW1lbnQoeG1sLT5uYW1lKCkpOworICAgICAgICAgICAgICsrcmVtYWlu aW5nVW5maW5pc2hlZEVsZW1lbnRzOworLSAgICAgICAgICAgIC8vIGlmIHdlIGFyZSB1c2luZyBz b21lYm9keSBlbHNlJ3MgcXhtbHN0cmVhbXJlYWRlcgorLSAgICAgICAgICAgIC8vIHdlIHNob3Vs ZCBub3QgcmVhZCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0KKy0gICAgICAgICAgICBkb25l ID0gIW1fb3duc1JlYWRlciAmJiAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0cmluZygic3ZnIikp OworKyAgICAgICAgICAgIGRvbmUgPSAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0cmluZygic3Zn IikpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVy OjpDaGFyYWN0ZXJzOgorICAgICAgICAgICAgIGNoYXJhY3RlcnMoeG1sLT50ZXh0KCkpOworZGlm ZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAgYi9xdHN2Zy9zcmMvc3Zn L3FzdmdzdHJ1Y3R1cmUuY3BwCitpbmRleCBiODk2MDhiLi44OWM5ZTRlIDEwMDY0NAorLS0tIGEv cXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3Zn c3RydWN0dXJlLmNwcAorQEAgLTI1NSw5ICsyNTUsMTMgQEAgaW5saW5lIHN0YXRpYyBib29sIGlz U3VwcG9ydGVkU3ZnRmVhdHVyZShjb25zdCBRU3RyaW5nICZzdHIpCisgICAgIH07CisgCisgICAg IGlmIChzdHIubGVuZ3RoKCkgPD0gTUFYX1dPUkRfTEVOR1RIICYmIHN0ci5sZW5ndGgoKSA+PSBN SU5fV09SRF9MRU5HVEgpIHsKKysgICAgICAgIGNvbnN0IGNoYXIxNl90IHVuaWNvZGU0NCA9IHN0 ci5hdCg0NCkudW5pY29kZSgpOworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29kZTQ1ID0g c3RyLmF0KDQ1KS51bmljb2RlKCk7CisrICAgICAgICBpZiAodW5pY29kZTQ0ID49IHNpemVvZihh c3NvX3ZhbHVlcykgfHwgdW5pY29kZTQ1ID49IHNpemVvZihhc3NvX3ZhbHVlcykpCisrICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgY29uc3QgaW50IGtleSA9IHN0ci5sZW5ndGgo KQorLSAgICAgICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbc3RyLmF0KDQ1KS51bmlj b2RlKCldCistICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDQp LnVuaWNvZGUoKV07CisrICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1t1bmlj b2RlNDVdCisrICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1t1bmljb2RlNDRd OworICAgICAgICAgaWYgKGtleSA8PSBNQVhfSEFTSF9WQUxVRSAmJiBrZXkgPj0gMCkKKyAgICAg ICAgICAgICByZXR1cm4gc3RyID09IFFMYXRpbjFTdHJpbmcod29yZGxpc3Rba2V5XSk7CisgICAg IH0KK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwIGIvcXRz dmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAoraW5kZXggNjNkMDc5Ny4uMTllNzE1NCAx MDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKKysrKyBiL3F0 c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKK0BAIC00MzMsOCArNDMzLDE2IEBAIHZv aWQgUVN2Z1RpbnlEb2N1bWVudDo6ZHJhdyhRUGFpbnRlciAqcCwgUVN2Z0V4dHJhU3RhdGVzICYp CisgICAgIGRyYXcocCk7CisgfQorIAorK3N0YXRpYyBib29sIGlzVmFsaWRNYXRyaXgoY29uc3Qg UVRyYW5zZm9ybSAmdHJhbnNmb3JtKQorK3sKKysgICAgcXJlYWwgZGV0ZXJtaW5hbnQgPSB0cmFu c2Zvcm0uZGV0ZXJtaW5hbnQoKTsKKysgICAgcmV0dXJuIHFJc0Zpbml0ZShkZXRlcm1pbmFudCk7 CisrfQorKworIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6bWFwU291cmNlVG9UYXJnZXQoUVBhaW50 ZXIgKnAsIGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwgY29uc3QgUVJlY3RGICZzb3VyY2VSZWN0 KQorIHsKKysgICAgUVRyYW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBwLT53b3JsZFRyYW5zZm9ybSgp OworKworICAgICBRUmVjdEYgdGFyZ2V0ID0gdGFyZ2V0UmVjdDsKKyAgICAgaWYgKHRhcmdldC5p c0VtcHR5KCkpIHsKKyAgICAgICAgIFFQYWludERldmljZSAqZGV2ID0gcC0+ZGV2aWNlKCk7CitA QCAtNDg3LDYgKzQ5NSw5IEBAIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6bWFwU291cmNlVG9UYXJn ZXQoUVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwKKyAgICAgICAgIH0KKyAj ZW5kaWYKKyAgICAgfQorKworKyAgICBpZiAoIWlzVmFsaWRNYXRyaXgocC0+d29ybGRUcmFuc2Zv cm0oKSkpCisrICAgICAgICBwLT5zZXRXb3JsZFRyYW5zZm9ybShvbGRUcmFuc2Zvcm0pOworIH0K KyAKKyBRUmVjdEYgUVN2Z1RpbnlEb2N1bWVudDo6Ym91bmRzT25FbGVtZW50KGNvbnN0IFFTdHJp bmcgJmlkKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVy L3RzdF9xc3ZncmVuZGVyZXIuY3BwIGIvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0 X3FzdmdyZW5kZXJlci5jcHAKK2luZGV4IDM2Yzc2ZWMuLmRiNzFlMDIgMTAwNjQ0CistLS0gYS9x dHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAorKysrIGIv cXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAKK0BAIC04 Niw2ICs4Niw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgb3NzX2Z1enpfMjM3MzEoKTsK KyAgICAgdm9pZCBvc3NfZnV6el8yNDEzMSgpOworICAgICB2b2lkIG9zc19mdXp6XzI0NzM4KCk7 CisrICAgIHZvaWQgaWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpOworKyAgICB2b2lkIGls bGVnYWxBbmltYXRlVHJhbnNmb3JtKCk7CisgCisgI2lmbmRlZiBRVF9OT19DT01QUkVTUworICAg ICB2b2lkIHRlc3RHekxvYWRpbmcoKTsKK0BAIC0xNjQ2LDUgKzE2NDgsMjIgQEAgdm9pZCB0c3Rf UVN2Z1JlbmRlcmVyOjpvc3NfZnV6el8yNDczOCgpCisgICAgIFFTdmdSZW5kZXJlcigpLmxvYWQo UUJ5dGVBcnJheSgiPHN2Zz48cGF0aCBkPVwiYSAyIDFlLTIxMi4uLi4uXCI+IikpOworIH0KKyAK Kyt2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6OmlsbGVnYWxBbmltYXRlVHJhbnNmb3JtX2RhdGEoKQor K3sKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxRQnl0ZUFycmF5Pigic3ZnIik7CisrCisrICAgIFFU ZXN0OjpuZXdSb3coImNhc2UxIikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9y bSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIHZhbHVlcz1cIjgsMCw1LDBc Ij4iKTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTIiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxh bmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgdmFs dWVzPVwiMSwyXCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2UzIikgPDwgUUJ5dGVBcnJh eSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVy PVwiMlwiIGZyb209XCIuLiA1IDJcIiB0bz1cImZcIj4iKTsKKysgICAgUVRlc3Q6Om5ld1Jvdygi Y2FzZTQiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJzY2Fs ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiBieT1cIi0tLC4uXCI+Iik7CisrfQorKworK3ZvaWQg dHN0X1FTdmdSZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm0oKQorK3sKKysgICAgUUZF VENIKFFCeXRlQXJyYXksIHN2Zyk7CisrICAgIFFTdmdSZW5kZXJlciByZW5kZXJlcjsKKysgICAg UVZFUklGWSghcmVuZGVyZXIubG9hZChzdmcpKTsgLy8gYWxzbyBzaG91bGRuJ3QgYXNzZXJ0Cisr fQorKworIFFURVNUX01BSU4odHN0X1FTdmdSZW5kZXJlcikKKyAjaW5jbHVkZSAidHN0X3Fzdmdy ZW5kZXJlci5tb2MiCitTdWJtb2R1bGUgcXR0b29scyA2OTE0ZjdjOC4uMDkwZTUyNmU6CitkaWZm IC0tZ2l0IGEvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0 b3IuY3BwIGIvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0 b3IuY3BwCitpbmRleCBmZWFiMWUyZDUuLmNiZmI4MjUwNyAxMDA2NDQKKy0tLSBhL3F0dG9vbHMv c3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAorKysrIGIvcXR0 b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCitAQCAt NDQ1LDcgKzQ0NSw5IEBAIGJvb2wgSGVscEdlbmVyYXRvclByaXZhdGU6Omluc2VydEZpbGVzKGNv bnN0IFFTdHJpbmdMaXN0ICZmaWxlcywgY29uc3QgUVN0cmluZyAmCisgICAgIGlmIChmaWx0ZXJT ZXRJZCA8IDApCisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICsrZmlsdGVyU2V0SWQ7Cist ICAgIGZvciAoaW50IGF0dElkIDogcUFzQ29uc3QoZmlsdGVyQXR0cykpIHsKKysgICAgUUxpc3Q8 aW50PiBhdHRWYWx1ZXMgPSBmaWx0ZXJBdHRzLnZhbHVlcygpOworKyAgICBzdGQ6OnNvcnQoYXR0 VmFsdWVzLmJlZ2luKCksIGF0dFZhbHVlcy5lbmQoKSk7CisrICAgIGZvciAoaW50IGF0dElkIDog cUFzQ29uc3QoYXR0VmFsdWVzKSkgeworICAgICAgICAgbV9xdWVyeS0+cHJlcGFyZShRTGF0aW4x U3RyaW5nKCJJTlNFUlQgSU5UTyBGaWxlQXR0cmlidXRlU2V0VGFibGUgIgorICAgICAgICAgICAg ICJWQUxVRVMoPywgPykiKSk7CisgICAgICAgICBtX3F1ZXJ5LT5iaW5kVmFsdWUoMCwgZmlsdGVy U2V0SWQpOworU3VibW9kdWxlIHF0d2F5bGFuZCBkZmIwMTI5Yy4uMjkwNGUxYjM6CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24gYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9jb25maWd1cmUuanNvbgoraW5kZXggMmY0MjQ1ODAuLjI5MjIyMzU3IDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCitAQCAtMTQ5LDggKzE0OSw3IEBACisgICAgICAg ICAgICAgICAgICAgICAiI2VuZGlmIgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg fSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCistICAgICAgICAgICAgInVzZSI6ICJl Z2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwKKyAgICAgICAg ICJ2dWxrYW4tc2VydmVyLWJ1ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiVnVsa2Fu IEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xNjgsNyArMTY3LDggQEAKKyAgICAgICAgICAgICAgICAg ICAgICJleHBvcnRBbGxvY0luZm8uaGFuZGxlVHlwZXMgPSBWS19FWFRFUk5BTF9NRU1PUllfSEFO RExFX1RZUEVfT1BBUVVFX0ZEX0JJVF9LSFI7IiwKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1 cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAg fSwKKysgICAgICAgICAgICAidXNlIjogIndheWxhbmQtY2xpZW50IgorICAgICAgICAgfSwKKyAg ICAgICAgICJlZ2xfMV81LXdheWxhbmQiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIkVHTCAx LjUgd2l0aCBXYXlsYW5kIFBsYXRmb3JtIiwKK0BAIC0xODMsNyArMTgzLDcgQEAKKyAgICAgICAg ICAgICAgICAgICAgICJlZ2xHZXRQbGF0Zm9ybURpc3BsYXkoRUdMX1BMQVRGT1JNX1dBWUxBTkRf RVhULCAoc3RydWN0IHdsX2Rpc3BsYXkgKikobnVsbHB0ciksIG51bGxwdHIpOyIKKyAgICAgICAg ICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisr ICAgICAgICAgICAgInVzZSI6ICJlZ2wgd2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9CisgICAg IH0sCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5k Y2xpZW50ZXh0ZW5zaW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFu ZGNsaWVudGV4dGVuc2lvbi5jcHAKK2luZGV4IDEyNWIxZTE5Li5lZGNjZmU2MyAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5j cHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVu c2lvbi5jcHAKK0BAIC03NCw3ICs3NCwxMCBAQCB2b2lkIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9u UHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwodm9pZCAqZGF0YSwgOjp3bF9yZWdpcworIHZv aWQgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OmFkZFJlZ2lzdHJ5TGlzdGVuZXIoKQorIHsKKyAg ICAgUV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKKy0gICAgZC0+d2F5bGFuZEludGVncmF0 aW9uLT5kaXNwbGF5KCktPmFkZFJlZ2lzdHJ5TGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5z aW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworKyAgICBpZiAoIWQtPnJl Z2lzdGVyZWQpIHsKKysgICAgICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5h ZGRSZWdpc3RyeUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRs ZVJlZ2lzdHJ5R2xvYmFsLCB0aGlzKTsKKysgICAgICAgIGQtPnJlZ2lzdGVyZWQgPSB0cnVlOwor KyAgICB9CisgfQorIAorIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjpRV2F5bGFuZENsaWVudEV4 dGVuc2lvbihjb25zdCBpbnQgdmVyKQorQEAgLTg4LDYgKzkxLDEzIEBAIFFXYXlsYW5kQ2xpZW50 RXh0ZW5zaW9uOjpRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVyKQorICAgICBR TWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsICJhZGRSZWdpc3RyeUxpc3RlbmVyIiwgUXQ6 OlF1ZXVlZENvbm5lY3Rpb24pOworIH0KKyAKKytRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6flFX YXlsYW5kQ2xpZW50RXh0ZW5zaW9uKCkKKyt7CisrICAgIFFfRChRV2F5bGFuZENsaWVudEV4dGVu c2lvbik7CisrICAgIGlmIChkLT5yZWdpc3RlcmVkICYmICFRQ29yZUFwcGxpY2F0aW9uOjpjbG9z aW5nRG93bigpKQorKyAgICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCktPnJl bW92ZUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lz dHJ5R2xvYmFsLCB0aGlzKTsKKyt9CisrCisgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVn cmF0aW9uICpRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6aW50ZWdyYXRpb24oKSBjb25zdAorIHsK KyAgICAgUV9EKGNvbnN0IFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaCBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oCitpbmRl eCA5ODI3MmU1Ny4uNWJkMjgzOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9n bG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKK0BAIC02Myw2ICs2Myw3IEBAIGNs YXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uIDogcHVi bGljIFFPYmplY3QKKyAgICAgUV9QUk9QRVJUWShib29sIGFjdGl2ZSBSRUFEIGlzQWN0aXZlIE5P VElGWSBhY3RpdmVDaGFuZ2VkKQorIHB1YmxpYzoKKyAgICAgUVdheWxhbmRDbGllbnRFeHRlbnNp b24oY29uc3QgaW50IHZlcnNpb24pOworKyAgICB+UVdheWxhbmRDbGllbnRFeHRlbnNpb24oKTsK KyAKKyAgICAgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICppbnRlZ3JhdGlv bigpIGNvbnN0OworICAgICBpbnQgdmVyc2lvbigpIGNvbnN0OworZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmggYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCitpbmRl eCA2OWNjNDZhMC4uOTA5MWVmYmUgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9n bG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCitAQCAtNjgsNiArNjgsNyBA QCBwdWJsaWM6CisgICAgIFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5 bGFuZEludGVncmF0aW9uID0gbnVsbHB0cjsKKyAgICAgaW50IHZlcnNpb24gPSAtMTsKKyAgICAg Ym9vbCBhY3RpdmUgPSBmYWxzZTsKKysgICAgYm9vbCByZWdpc3RlcmVkID0gZmFsc2U7CisgfTsK KyAKKyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZENsaWVudEV4dGVuc2lv blRlbXBsYXRlUHJpdmF0ZSA6IHB1YmxpYyBRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGUK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3Bw IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcAoraW5kZXggN2Uy ZTMzMDguLmUzZTYwZWQ1IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkYXRhZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh ZGV2aWNlLmNwcAorQEAgLTcyLDYgKzcyLDggQEAgUVdheWxhbmREYXRhRGV2aWNlOjpRV2F5bGFu ZERhdGFEZXZpY2UoUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlciAqbWFuYWdlciwgUVdheWwKKyAK KyBRV2F5bGFuZERhdGFEZXZpY2U6On5RV2F5bGFuZERhdGFEZXZpY2UoKQorIHsKKysgICAgaWYg KHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSBXTF9EQVRBX0RFVklDRV9S RUxFQVNFX1NJTkNFX1ZFUlNJT04pCisrICAgICAgICByZWxlYXNlKCk7CisgfQorIAorIFFXYXls YW5kRGF0YU9mZmVyICpRV2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvbk9mZmVyKCkgY29uc3QK K0BAIC0xMTAsNyArMTEyLDcgQEAgUVdheWxhbmREYXRhT2ZmZXIgKlFXYXlsYW5kRGF0YURldmlj ZTo6ZHJhZ09mZmVyKCkgY29uc3QKKyAgICAgcmV0dXJuIG1fZHJhZ09mZmVyLmRhdGEoKTsKKyB9 CisgCistYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVE YXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKytib29sIFFXYXlsYW5kRGF0YURldmljZTo6c3Rh cnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rp b25zLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyB7CisgICAgIGF1dG8gKnNlYXQgPSBtX2Rpc3Bs YXktPmN1cnJlbnRJbnB1dERldmljZSgpOworICAgICBhdXRvICpvcmlnaW4gPSBzZWF0LT5wb2lu dGVyRm9jdXMoKTsKK0BAIC0xMjMsNyArMTI1LDI4IEBAIGJvb2wgUVdheWxhbmREYXRhRGV2aWNl OjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pCisg ICAgIH0KKyAKKyAgICAgbV9kcmFnU291cmNlLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFTb3VyY2Uo bV9kaXNwbGF5LT5kbmRTZWxlY3Rpb25IYW5kbGVyKCksIG1pbWVEYXRhKSk7CisrCisrICAgIGlm ICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmplY3QoKSkgPj0gMykKKysgICAgICAgIG1f ZHJhZ1NvdXJjZS0+c2V0X2FjdGlvbnMoZHJvcEFjdGlvbnNUb1dsKHN1cHBvcnRlZEFjdGlvbnMp KTsKKysKKyAgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291 cmNlOjpjYW5jZWxsZWQsIHRoaXMsICZRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VDYW5j ZWxsZWQpOworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFT b3VyY2U6OmRuZFJlc3BvbnNlVXBkYXRlZCwgdGhpcywgW3RoaXNdKGJvb2wgYWNjZXB0ZWQsIFF0 OjpEcm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAgICAgIGF1dG8gZHJhZyA9IHN0YXRpY19j YXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVn cmF0aW9uKCktPmRyYWcoKSk7CisrICAgICAgICAgICAgLy8gaW4gb2xkIHZlcnNpb25zIGRyb3Ag YWN0aW9uIGlzIG5vdCBzZXQsIHNvIHdlIGd1ZXNzCisrICAgICAgICAgICAgaWYgKHdsX2RhdGFf c291cmNlX2dldF92ZXJzaW9uKG1fZHJhZ1NvdXJjZS0+b2JqZWN0KCkpIDwgMykgeworKyAgICAg ICAgICAgICAgICBkcmFnLT5zZXRSZXNwb25zZShhY2NlcHRlZCk7CisrICAgICAgICAgICAgfSBl bHNlIHsKKysgICAgICAgICAgICAgICAgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgcmVzcG9uc2Uo YWNjZXB0ZWQsIGFjdGlvbik7CisrICAgICAgICAgICAgICAgIGRyYWctPnNldFJlc3BvbnNlKHJl c3BvbnNlKTsKKysgICAgICAgICAgICB9CisrICAgIH0pOworKyAgICBjb25uZWN0KG1fZHJhZ1Nv dXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmRuZERyb3BwZWQsIHRoaXMsIFtdKGJv b2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAgUVBsYXRmb3Jt RHJvcFF0UmVzcG9uc2UgcmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbik7CisrICAgICAgICBzdGF0 aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1J bnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXREcm9wUmVzcG9uc2UocmVzcG9uc2UpOworKyAgICB9 KTsKKysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNl OjpmaW5pc2hlZCwgdGhpcywgW10oKSB7CisrICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERy YWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFn KCkpLT5maW5pc2hEcmFnKCk7CisrICAgIH0pOworIAorICAgICBzdGFydF9kcmFnKG1fZHJhZ1Nv dXJjZS0+b2JqZWN0KCksIG9yaWdpbi0+d2xTdXJmYWNlKCksIGljb24tPndsU3VyZmFjZSgpLCBt X2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5zZXJpYWwoKSk7CisgICAgIHJldHVybiB0 cnVlOworQEAgLTE1Miw3ICsxNzUsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9k ZXZpY2VfZHJvcCgpCisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVk QWN0aW9ucygpOworICAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisgICAgICAgICBkcmFn RGF0YSA9IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9u cyA9IFF0OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysg ICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygp OworICAgICB9IGVsc2UgeworICAgICAgICAgcmV0dXJuOworICAgICB9CitAQCAtMTYyLDcgKzE4 NSwxMSBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZHJvcCgpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJzKCkpOworIAor ICAgICBpZiAoZHJhZykgeworLSAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+Zmlu aXNoRHJhZyhyZXNwb25zZSk7CisrICAgICAgICBhdXRvIGRyYWcgPSAgc3RhdGljX2Nhc3Q8UVdh eWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24o KS0+ZHJhZygpKTsKKysgICAgICAgIGRyYWctPnNldERyb3BSZXNwb25zZShyZXNwb25zZSk7Cisr ICAgICAgICBkcmFnLT5maW5pc2hEcmFnKCk7CisrICAgIH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIp IHsKKysgICAgICAgIG1fZHJhZ09mZmVyLT5maW5pc2goKTsKKyAgICAgfQorIH0KKyAKK0BAIC0x ODYsNyArMjEzLDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2VudGVy KHVpbnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgIHN1cHBvcnRl ZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSBpZiAobV9k cmFnT2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7 CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFj dGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJh Z09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKyAgICAgY29uc3QgUVBsYXRm b3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9ydGVkQWN0 aW9ucywKK0BAIC0xOTcsMTEgKzIyNCw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRh X2RldmljZV9lbnRlcih1aW50MzJfdCBzZXJpYWwsIHdsX3N1cmZhY2UgKnN1cmZhY2UsCisgICAg ICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXRSZXNwb25zZShyZXNwb25zZSk7Cisg ICAgIH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworLSAgICAgICAgd2xf ZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBt X2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CistICAgIH0g ZWxzZSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0 KCksIG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOworLSAgICB9CisrICAgIHNlbmRSZXNwb25zZShz dXBwb3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7CisgfQorIAorIHZvaWQgUVdheWxhbmREYXRhRGV2 aWNlOjpkYXRhX2RldmljZV9sZWF2ZSgpCitAQCAtMjM1LDEwICsyNTgsMTAgQEAgdm9pZCBRV2F5 bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX21vdGlvbih1aW50MzJfdCB0aW1lLCB3bF9maXhl ZF90IHgsIHdsX2ZpeGUKKyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0 ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBkcmFnRGF0YSA9IG1fZHJhZ09m ZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpDb3B5QWN0 aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAgIHN1cHBvcnRl ZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9CisgCist ICAgIFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlIHJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVy ZmFjZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3Vw cG9ydGVkQWN0aW9ucywKKysgICAgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgcmVzcG9u c2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJh Z0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UUd1aUFwcGxpY2F0aW9uOjptb3VzZUJ1dHRvbnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWlB cHBsaWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7CisgCitAQCAtMjQ2LDExICsyNjksNyBA QCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbW90aW9uKHVpbnQzMl90IHRp bWUsIHdsX2ZpeGVkX3QgeCwgd2xfZml4ZQorICAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmRE cmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJh ZygpKS0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworICAgICB9CisgCistICAgIGlmIChyZXNwb25z ZS5pc0FjY2VwdGVkKCkpIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09m ZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCku dG9VdGY4KCkuY29uc3REYXRhKCkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgd2xfZGF0YV9v ZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBudWxscHRy KTsKKy0gICAgfQorKyAgICBzZW5kUmVzcG9uc2Uoc3VwcG9ydGVkQWN0aW9ucywgcmVzcG9uc2Up OworIH0KKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIAorQEAgLTI3NywxNCAr Mjk2LDEwIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpzZWxlY3Rpb25Tb3VyY2VDYW5jZWxs ZWQoKQorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgdm9pZCBRV2F5bGFuZERhdGFEZXZp Y2U6OmRyYWdTb3VyY2VDYW5jZWxsZWQoKQorIHsKKysgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmRE cmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJh ZygpKS0+ZmluaXNoRHJhZygpOworICAgICBtX2RyYWdTb3VyY2UucmVzZXQoKTsKKyB9CisgCist dm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VUYXJnZXRDaGFuZ2VkKGNvbnN0IFFT dHJpbmcgJm1pbWVUeXBlKQorLXsKKy0gICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+dXBk YXRlVGFyZ2V0KG1pbWVUeXBlKTsKKy19CistCisgUVBvaW50IFFXYXlsYW5kRGF0YURldmljZTo6 Y2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRvdyAqd25kKSBjb25zdAor IHsKKyAgICAgUVBvaW50IHBudCh3bF9maXhlZF90b19pbnQoeCksIHdsX2ZpeGVkX3RvX2ludCh5 KSk7CitAQCAtMjk3LDYgKzMxMiwzMyBAQCBRUG9pbnQgUVdheWxhbmREYXRhRGV2aWNlOjpjYWxj dWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbgorICAgICB9 CisgICAgIHJldHVybiBwbnQ7CisgfQorKworK3ZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpzZW5k UmVzcG9uc2UoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIGNvbnN0IFFQbGF0Zm9y bURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt7CisrICAgIGlmIChyZXNwb25zZS5pc0FjY2Vw dGVkKCkpIHsKKysgICAgICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmplY3Qo KSkgPj0gMykKKysgICAgICAgICAgICBtX2RyYWdPZmZlci0+c2V0X2FjdGlvbnMoZHJvcEFjdGlv bnNUb1dsKHN1cHBvcnRlZEFjdGlvbnMpLCBkcm9wQWN0aW9uc1RvV2wocmVzcG9uc2UuYWNjZXB0 ZWRBY3Rpb24oKSkpOworKworKyAgICAgICAgbV9kcmFnT2ZmZXItPmFjY2VwdChtX2VudGVyU2Vy aWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAg ICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJpYWwsIFFTdHJpbmcoKSk7CisrICAgIH0K Kyt9CisrCisraW50IFFXYXlsYW5kRGF0YURldmljZTo6ZHJvcEFjdGlvbnNUb1dsKFF0OjpEcm9w QWN0aW9ucyBhY3Rpb25zKQorK3sKKysKKysgICAgaW50IHdsQWN0aW9ucyA9IFdMX0RBVEFfREVW SUNFX01BTkFHRVJfRE5EX0FDVElPTl9OT05FOworKyAgICBpZiAoYWN0aW9ucyAmIFF0OjpDb3B5 QWN0aW9uKQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5E X0FDVElPTl9DT1BZOworKyAgICBpZiAoYWN0aW9ucyAmIChRdDo6TW92ZUFjdGlvbiB8IFF0OjpU YXJnZXRNb3ZlQWN0aW9uKSkKKysgICAgICAgIHdsQWN0aW9ucyB8PSBXTF9EQVRBX0RFVklDRV9N QU5BR0VSX0RORF9BQ1RJT05fTU9WRTsKKysKKysgICAgLy8gd2F5bGFuZCBkb2VzIG5vdCBzdXBw b3J0IExpbmtBY3Rpb24gYXQgdGhlIHRpbWUgb2Ygd3JpdGluZworKyAgICByZXR1cm4gd2xBY3Rp b25zOworK30KKysKKysKKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIAorIH0K K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5o IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaAoraW5kZXggMTZj M2FkMjguLjgwMWRjYzJjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkYXRhZGV2aWNlX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh ZGV2aWNlX3AuaAorQEAgLTY0LDYgKzY0LDcgQEAgUVRfUkVRVUlSRV9DT05GSUcod2F5bGFuZF9k YXRhZGV2aWNlKTsKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRTWltZURhdGE7Cisr Y2xhc3MgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2U7CisgY2xhc3MgUVdpbmRvdzsKKyAKKyBuYW1l c3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKK0BAIC04OSw3ICs5MCw3IEBAIHB1YmxpYzoKKyAKKyAj aWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAgICBRV2F5bGFuZERhdGFPZmZlciAqZHJhZ09m ZmVyKCkgY29uc3Q7CistICAgIGJvb2wgc3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFFX YXlsYW5kV2luZG93ICppY29uKTsKKysgICAgYm9vbCBzdGFydERyYWcoUU1pbWVEYXRhICptaW1l RGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIFFXYXlsYW5kV2luZG93ICpp Y29uKTsKKyAgICAgdm9pZCBjYW5jZWxEcmFnKCk7CisgI2VuZGlmCisgCitAQCAtMTA5LDEzICsx MTAsMTYgQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3Ap CisgICAgIHZvaWQgZHJhZ1NvdXJjZUNhbmNlbGxlZCgpOworLSAgICB2b2lkIGRyYWdTb3VyY2VU YXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKTsKKyAjZW5kaWYKKyAKKyBwcml2 YXRlOgorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIFFQb2ludCBjYWxjdWxhdGVE cmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0OworICNlbmRpZgor KyAgICB2b2lkIHNlbmRSZXNwb25zZShRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywg Y29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysKKysgICAgc3RhdGlj IGludCBkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rpb25zIGRyb3BBY3Rpb25zKTsKKysKKyAK KyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRV2F5bGFu ZElucHV0RGV2aWNlICptX2lucHV0RGV2aWNlID0gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcCBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCitpbmRleCAzNWQ2NzMw Ny4uNmRjNGY3N2YgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRh dGFkZXZpY2VtYW5hZ2VyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhZGV2aWNlbWFuYWdlci5jcHAKK0BAIC01MCw4ICs1MCw4IEBAIFFUX0JFR0lOX05BTUVTUEFD RQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorLVFXYXlsYW5kRGF0YURldmlj ZU1hbmFnZXI6OlFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNw bGF5LCB1aW50MzJfdCBpZCkKKy0gICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRpc3BsYXkt PndsX3JlZ2lzdHJ5KCksIGlkLCAxKQorK1FXYXlsYW5kRGF0YURldmljZU1hbmFnZXI6OlFXYXls YW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBpbnQgdmVyc2lv biwgdWludDMyX3QgaWQpCisrICAgIDogd2xfZGF0YV9kZXZpY2VfbWFuYWdlcihkaXNwbGF5LT53 bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAzKSkKKyAgICAgLCBtX2Rpc3BsYXkoZGlz cGxheSkKKyB7CisgICAgIC8vIENyZWF0ZSB0cmFuc2ZlciBkZXZpY2VzIGZvciBhbGwgaW5wdXQg ZGV2aWNlcy4KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFk ZXZpY2VtYW5hZ2VyX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmlj ZW1hbmFnZXJfcC5oCitpbmRleCBiZDA1YzBmYi4uNTEwZDliZTQgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgKK0BAIC02OCw3 ICs2OCw3IEBAIGNsYXNzIFFXYXlsYW5kSW5wdXREZXZpY2U7CisgY2xhc3MgUV9XQVlMQU5EX0NM SUVOVF9FWFBPUlQgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlciA6IHB1YmxpYyBRdFdheWxhbmQ6 OndsX2RhdGFfZGV2aWNlX21hbmFnZXIKKyB7CisgcHVibGljOgorLSAgICBRV2F5bGFuZERhdGFE ZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgdWludDMyX3QgaWQpOworKyAg ICBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgaW50 IHZlcnNpb24sIHVpbnQzMl90IGlkKTsKKyAgICAgflFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIo KSBvdmVycmlkZTsKKyAKKyAgICAgUVdheWxhbmREYXRhRGV2aWNlICpnZXREYXRhRGV2aWNlKFFX YXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFvZmZlci5jcHAKK2luZGV4IDIyOTdlOGExLi5mZTBlYThjOSAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCitAQCAtODIsNiArODIsMTUg QEAgUU1pbWVEYXRhICpRV2F5bGFuZERhdGFPZmZlcjo6bWltZURhdGEoKQorICAgICByZXR1cm4g bV9taW1lRGF0YS5kYXRhKCk7CisgfQorIAorK1F0OjpEcm9wQWN0aW9ucyBRV2F5bGFuZERhdGFP ZmZlcjo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0CisreworKyAgICBpZiAod2xfZGF0YV9vZmZl cl9nZXRfdmVyc2lvbihjb25zdF9jYXN0PDo6d2xfZGF0YV9vZmZlcio+KG9iamVjdCgpKSkgPCAz KSB7CisrICAgICAgICByZXR1cm4gUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6Q29weUFjdGlvbjsKKysg ICAgfQorKworKyAgICByZXR1cm4gbV9zdXBwb3J0ZWRBY3Rpb25zOworK30KKysKKyB2b2lkIFFX YXlsYW5kRGF0YU9mZmVyOjpzdGFydFJlY2VpdmluZyhjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwg aW50IGZkKQorIHsKKyAgICAgcmVjZWl2ZShtaW1lVHlwZSwgZmQpOworQEAgLTkzLDYgKzEwMiwy MiBAQCB2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRhX29mZmVyX29mZmVyKGNvbnN0IFFTdHJp bmcgJm1pbWVfdHlwZSkKKyAgICAgbV9taW1lRGF0YS0+YXBwZW5kRm9ybWF0KG1pbWVfdHlwZSk7 CisgfQorIAorK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfYWN0aW9uKHVpbnQz Ml90IGRuZF9hY3Rpb24pCisreworKyAgICBRX1VOVVNFRChkbmRfYWN0aW9uKTsKKysgICAgLy8g VGhpcyBpcyB0aGUgY29tcG9zaXRvciB0ZWxsaW5nIHRoZSBkcmFnIHRhcmdldCB3aGF0IGFjdGlv biBpdCBzaG91bGQgcGVyZm9ybQorKyAgICAvLyBJdCBkb2VzIG5vdCBtYXAgbmljZWx5IGludG8g UXQgZmluYWwgZHJvcCBzZW1hbnRpY3MsIG90aGVyIHRoYW4gcHJldGVuZGluZyB0aGVyZSBpcyBv bmx5IG9uZSBzdXBwb3J0ZWQgYWN0aW9uPworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YU9mZmVy OjpkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQzMl90IHNvdXJjZV9hY3Rpb25zKQorK3sK KysgICAgbV9zdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkRyb3BBY3Rpb25zKCk7CisrICAgIGlmIChz b3VyY2VfYWN0aW9ucyAmIFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9NT1ZFKQor KyAgICAgICAgbV9zdXBwb3J0ZWRBY3Rpb25zIHw9IFF0OjpNb3ZlQWN0aW9uOworKyAgICBpZiAo c291cmNlX2FjdGlvbnMgJiBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fQ09QWSkK KysgICAgICAgIG1fc3VwcG9ydGVkQWN0aW9ucyB8PSBRdDo6Q29weUFjdGlvbjsKKyt9CisrCisg UVdheWxhbmRNaW1lRGF0YTo6UVdheWxhbmRNaW1lRGF0YShRV2F5bGFuZEFic3RyYWN0RGF0YU9m ZmVyICpkYXRhT2ZmZXIpCisgICAgIDogbV9kYXRhT2ZmZXIoZGF0YU9mZmVyKQorIHsKK0BAIC0x NjMsMTcgKzE4OCwxOCBAQCBRVmFyaWFudCBRV2F5bGFuZE1pbWVEYXRhOjpyZXRyaWV2ZURhdGFf c3lzKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBRVmFyaWFudDo6VAorIAorIGludCBRV2F5bGFu ZE1pbWVEYXRhOjpyZWFkRGF0YShpbnQgZmQsIFFCeXRlQXJyYXkgJmRhdGEpIGNvbnN0Cisgewor LSAgICBmZF9zZXQgcmVhZHNldDsKKy0gICAgRkRfWkVSTygmcmVhZHNldCk7CistICAgIEZEX1NF VChmZCwgJnJlYWRzZXQpOworLSAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OworKyAgICBzdHJ1 Y3QgcG9sbGZkIHJlYWRzZXQ7CisrICAgIHJlYWRzZXQuZmQgPSBmZDsKKysgICAgcmVhZHNldC5l dmVudHMgPSBQT0xMSU47CisrICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0OworICAgICB0aW1l b3V0LnR2X3NlYyA9IDE7CistICAgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisrICAgIHRpbWVvdXQu dHZfbnNlYyA9IDA7CisrCisgCisgICAgIFFfRk9SRVZFUiB7CistICAgICAgICBpbnQgcmVhZHkg PSBzZWxlY3QoRkRfU0VUU0laRSwgJnJlYWRzZXQsIG51bGxwdHIsIG51bGxwdHIsICZ0aW1lb3V0 KTsKKysgICAgICAgIGludCByZWFkeSA9IHF0X3NhZmVfcG9sbCgmcmVhZHNldCwgMSwgJnRpbWVv dXQpOworICAgICAgICAgaWYgKHJlYWR5IDwgMCkgeworLSAgICAgICAgICAgIHFXYXJuaW5nKCkg PDwgIlFXYXlsYW5kRGF0YU9mZmVyOiBzZWxlY3QoKSBmYWlsZWQiOworKyAgICAgICAgICAgIHFX YXJuaW5nKCkgPDwgIlFXYXlsYW5kRGF0YU9mZmVyOiBxdF9zYWZlX3BvbGwoKSBmYWlsZWQiOwor ICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgIH0gZWxzZSBpZiAocmVhZHkgPT0gMCkg eworICAgICAgICAgICAgIHFXYXJuaW5nKCJRV2F5bGFuZERhdGFPZmZlcjogdGltZW91dCByZWFk aW5nIGZyb20gcGlwZSIpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YW9mZmVyX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVy X3AuaAoraW5kZXggOWNmMTQ4M2MuLjZmNjY3Mzk4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKK0BAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKKyAgICAg ZXhwbGljaXQgUVdheWxhbmREYXRhT2ZmZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBzdHJ1 Y3QgOjp3bF9kYXRhX29mZmVyICpvZmZlcik7CisgICAgIH5RV2F5bGFuZERhdGFPZmZlcigpIG92 ZXJyaWRlOworICAgICBRTWltZURhdGEgKm1pbWVEYXRhKCkgb3ZlcnJpZGU7CisrICAgIFF0OjpE cm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zKCkgY29uc3Q7CisgCisgICAgIFFTdHJpbmcgZmly c3RGb3JtYXQoKSBjb25zdDsKKyAKK0BAIC04OSwxMCArOTAsMTMgQEAgcHVibGljOgorIAorIHBy b3RlY3RlZDoKKyAgICAgdm9pZCBkYXRhX29mZmVyX29mZmVyKGNvbnN0IFFTdHJpbmcgJm1pbWVf dHlwZSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9vZmZlcl9zb3VyY2VfYWN0aW9ucyh1aW50 MzJfdCBzb3VyY2VfYWN0aW9ucykgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9vZmZlcl9hY3Rp b24odWludDMyX3QgZG5kX2FjdGlvbikgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVdh eWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRU2NvcGVkUG9pbnRlcjxR V2F5bGFuZE1pbWVEYXRhPiBtX21pbWVEYXRhOworKyAgICBRdDo6RHJvcEFjdGlvbnMgbV9zdXBw b3J0ZWRBY3Rpb25zOworIH07CisgCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhc291cmNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YXNvdXJjZS5jcHAKK2luZGV4IGY0NTEyMmZiLi41NTk5Y2JkNCAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKK0BAIC0xMDEsNyArMTAxLDMyIEBA IHZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9zZW5kKGNvbnN0IFFTdHJpbmcg Jm1pbWVfdHlwZSwgaW50MzJfdCBmZCkKKyAKKyB2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0 YV9zb3VyY2VfdGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkKKyB7CistICAgIFFfRU1J VCB0YXJnZXRDaGFuZ2VkKG1pbWVfdHlwZSk7CisrICAgIG1fYWNjZXB0ZWQgPSAhbWltZV90eXBl LmlzRW1wdHkoKTsKKysgICAgUV9FTUlUIGRuZFJlc3BvbnNlVXBkYXRlZChtX2FjY2VwdGVkLCBt X2Ryb3BBY3Rpb24pOworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3Vy Y2VfYWN0aW9uKHVpbnQzMl90IGFjdGlvbikKKyt7CisrICAgIFF0OjpEcm9wQWN0aW9uIHF0QWN0 aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKysKKysgICAgaWYgKGFjdGlvbiA9PSBXTF9EQVRBX0RF VklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRSkKKysgICAgICAgIHF0QWN0aW9uID0gUXQ6Ok1v dmVBY3Rpb247CisrICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VS X0RORF9BQ1RJT05fQ09QWSkKKysgICAgICAgIHF0QWN0aW9uID0gUXQ6OkNvcHlBY3Rpb247Cisr CisrICAgIG1fZHJvcEFjdGlvbiA9IHF0QWN0aW9uOworKyAgICBRX0VNSVQgZG5kUmVzcG9uc2VV cGRhdGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisrfQorKworK3ZvaWQgUVdheWxhbmRE YXRhU291cmNlOjpkYXRhX3NvdXJjZV9kbmRfZmluaXNoZWQoKQorK3sKKysgICAgUV9FTUlUIGZp bmlzaGVkKCk7CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9k bmRfZHJvcF9wZXJmb3JtZWQoKQorK3sKKysKKysgICAgUV9FTUlUIGRuZERyb3BwZWQobV9hY2Nl cHRlZCwgbV9kcm9wQWN0aW9uKTsKKyB9CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFzb3VyY2VfcC5oCitpbmRleCAyNWFmZmY3OS4uOTZmMDdiYzMgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCisrKysgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCitAQCAtNzcsMTcgKzc3 LDI1IEBAIHB1YmxpYzoKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSgpIGNvbnN0OworIAorIFFf U0lHTkFMUzoKKy0gICAgdm9pZCB0YXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlw ZSk7CisgICAgIHZvaWQgY2FuY2VsbGVkKCk7CisrICAgIHZvaWQgZmluaXNoZWQoKTsKKysKKysg ICAgdm9pZCBkbmRSZXNwb25zZVVwZGF0ZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24g YWN0aW9uKTsKKysgICAgdm9pZCBkbmREcm9wcGVkKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0 aW9uIGFjdGlvbik7CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIGRhdGFfc291cmNlX2NhbmNl bGxlZCgpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFfc291cmNlX3NlbmQoY29uc3QgUVN0cmlu ZyAmbWltZV90eXBlLCBpbnQzMl90IGZkKSBvdmVycmlkZTsKKyAgICAgdm9pZCBkYXRhX3NvdXJj ZV90YXJnZXQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKSBvdmVycmlkZTsKKysgICAgdm9pZCBk YXRhX3NvdXJjZV9kbmRfZHJvcF9wZXJmb3JtZWQoKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRh X3NvdXJjZV9kbmRfZmluaXNoZWQoKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX3NvdXJjZV9h Y3Rpb24odWludDMyX3QgYWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5 bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFNaW1lRGF0YSAqbV9taW1l X2RhdGEgPSBudWxscHRyOworKyAgICBib29sIG1fYWNjZXB0ZWQgPSBmYWxzZTsKKysgICAgUXQ6 OkRyb3BBY3Rpb24gbV9kcm9wQWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKyB9OworIAorIH0K K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAoraW5kZXggZjEwYzFmNzku LmMwMWUyMzhiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNw bGF5LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAor QEAgLTg1LDEwICs4NSwyMDMgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKysjaW5jbHVk ZSA8dHVwbGU+IC8vIGZvciBzdGQ6OnRpZQorKworK3N0YXRpYyB2b2lkIGNoZWNrV2F5bGFuZEVy cm9yKHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KQorK3sKKysgICAgaW50IGVjb2RlID0gd2xf ZGlzcGxheV9nZXRfZXJyb3IoZGlzcGxheSk7CisrICAgIGlmICgoZWNvZGUgPT0gRVBJUEUgfHwg ZWNvZGUgPT0gRUNPTk5SRVNFVCkpIHsKKysgICAgICAgIC8vIHNwZWNpYWwgY2FzZSB0aGlzIHRv IHByb3ZpZGUgYSBuaWNlciBlcnJvcgorKyAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNv bm5lY3Rpb24gYnJva2UuIERpZCB0aGUgV2F5bGFuZCBjb21wb3NpdG9yIGRpZT8iKTsKKysgICAg fSBlbHNlIHsKKysgICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGV4cGVy aWVuY2VkIGEgZmF0YWwgZXJyb3I6ICVzIiwgc3RyZXJyb3IoZWNvZGUpKTsKKysgICAgfQorKyAg ICBfZXhpdCgxKTsKKyt9CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0 V2F5bGFuZENsaWVudCB7CisgCisrY2xhc3MgRXZlbnRUaHJlYWQgOiBwdWJsaWMgUVRocmVhZAor K3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIGVudW0gT3BlcmF0aW5nTW9kZSB7Cisr ICAgICAgICBFbWl0VG9EaXNwYXRjaCwgLy8gRW1pdCB0aGUgc2lnbmFsLCBhbGxvdyBkaXNwYXRj aGluZyBpbiBhIGRpZmZlcm50IHRocmVhZC4KKysgICAgICAgIFNlbGZEaXNwYXRjaCwgLy8gRGlz cGF0Y2ggdGhlIGV2ZW50cyBpbnNpZGUgdGhpcyB0aHJlYWQuCisrICAgIH07CisrCisrICAgIEV2 ZW50VGhyZWFkKHN0cnVjdCB3bF9kaXNwbGF5ICogd2wsIHN0cnVjdCB3bF9ldmVudF9xdWV1ZSAq IGV2X3F1ZXVlLAorKyAgICAgICAgICAgICAgICBPcGVyYXRpbmdNb2RlIG1vZGUpCisrICAgICAg ICA6IG1fZmQod2xfZGlzcGxheV9nZXRfZmQod2wpKQorKyAgICAgICAgLCBtX3BpcGVmZHsgLTEs IC0xIH0KKysgICAgICAgICwgbV93bGRpc3BsYXkod2wpCisrICAgICAgICAsIG1fd2xldnF1ZXVl KGV2X3F1ZXVlKQorKyAgICAgICAgLCBtX21vZGUobW9kZSkKKysgICAgICAgICwgbV9yZWFkaW5n KHRydWUpCisrICAgICAgICAsIG1fcXVpdHRpbmcoZmFsc2UpCisrICAgIHsKKysgICAgICAgIHNl dE9iamVjdE5hbWUoUVN0cmluZ0xpdGVyYWwoIldheWxhbmRFdmVudFRocmVhZCIpKTsKKysgICAg fQorKworKyAgICB2b2lkIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpCisrICAgIHsKKysgICAgICAg IC8qCisrICAgICAgICAgKiBEaXNwYXRjaCBwZW5kaW5nIGV2ZW50cyBhbmQgZmx1c2ggdGhlIHJl cXVlc3RzIGF0IGxlYXN0IG9uY2UuIElmIHRoZSBldmVudCB0aHJlYWQKKysgICAgICAgICAqIGlz IG5vdCByZWFkaW5nLCB0cnkgdG8gY2FsbCBfcHJlcGFyZV9yZWFkKCkgdG8gYWxsb3cgdGhlIGV2 ZW50IHRocmVhZCB0byBwb2xsKCkuCisrICAgICAgICAgKiBJZiB0aGF0IGZhaWxzLCByZS10cnkg ZGlzcGF0Y2ggJiBmbHVzaCBhZ2FpbiB1bnRpbCBfcHJlcGFyZV9yZWFkKCkgaXMgc3VjY2Vzc2Z1 bC4KKysgICAgICAgICAqCisrICAgICAgICAgKiBUaGlzIGFsbG93IGFueSBjYWxsIHRvIHJlYWRB bmREaXNwYXRjaEV2ZW50cygpIHRvIHN0YXJ0IGV2ZW50IHRocmVhZCdzIHBvbGxpbmcsCisrICAg ICAgICAgKiBub3Qgb25seSB0aGUgb25lIGlzc3VlZCBmcm9tIGV2ZW50IHRocmVhZCdzIHdhaXRG b3JSZWFkaW5nKCksIHdoaWNoIG1lYW5zIGZ1bmN0aW9ucworKyAgICAgICAgICogY2FsbGVkIGZy b20gZGlzcGF0Y2hfcGVuZGluZygpIGNhbiBzYWZlbHkgc3BpbiBhbiBldmVudCBsb29wLgorKyAg ICAgICAgICovCisrICAgICAgICBmb3IgKDs7KSB7CisrICAgICAgICAgICAgaWYgKGRpc3BhdGNo UXVldWVQZW5kaW5nKCkgPCAwKSB7CisrICAgICAgICAgICAgICAgIGNoZWNrV2F5bGFuZEVycm9y KG1fd2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgIH0K KysKKysgICAgICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKG1fd2xkaXNwbGF5KTsKKysKKysgICAg ICAgICAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGlmIGV2ZW50IHRocmVhZCBpcyByZWFkaW5nIGV2 ZXJ5IHRpbWUgd2UgZGlzcGF0Y2gKKysgICAgICAgICAgICAvLyBzb21ldGhpbmcsIGFzIHRoYXQg bWF5IHJlY3Vyc2l2ZWx5IGNhbGwgdGhpcyBmdW5jdGlvbi4KKysgICAgICAgICAgICBpZiAobV9y ZWFkaW5nLmxvYWRBY3F1aXJlKCkpCisrICAgICAgICAgICAgICAgIGJyZWFrOworKworKyAgICAg ICAgICAgIGlmIChwcmVwYXJlUmVhZFF1ZXVlKCkgPT0gMCkgeworKyAgICAgICAgICAgICAgICBR TXV0ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAgICAgICAgICAgIG1fcmVhZGluZy5zdG9y ZVJlbGVhc2UodHJ1ZSk7CisrICAgICAgICAgICAgICAgIG1fY29uZC53YWtlT25lKCk7CisrICAg ICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQor KworKyAgICB2b2lkIHN0b3AoKQorKyAgICB7CisrICAgICAgICAvLyBXZSBoYXZlIHRvIGJvdGgg d3JpdGUgdG8gdGhlIHBpcGUgYW5kIHNldCB0aGUgZmxhZywgYXMgdGhlIHRocmVhZCBtYXkgYmUK KysgICAgICAgIC8vIGVpdGhlciBpbiB0aGUgcG9sbCgpIG9yIHdhaXRpbmcgZm9yIF9wcmVwYXJl X3JlYWQoKS4KKysgICAgICAgIGlmIChtX3BpcGVmZFsxXSAhPSAtMSAmJiB3cml0ZShtX3BpcGVm ZFsxXSwgIlwwIiwgMSkgPT0gLTEpCisrICAgICAgICAgICAgcVdhcm5pbmcoIkZhaWxlZCB0byB3 cml0ZSB0byB0aGUgcGlwZTogJXMuIiwgc3RyZXJyb3IoZXJybm8pKTsKKysKKysgICAgICAgIHsK KysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAgICAgICAgbV9x dWl0dGluZyA9IHRydWU7CisrICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsKKysgICAgICAg IH0KKysKKysgICAgICAgIHdhaXQoKTsKKysgICAgfQorKworK1FfU0lHTkFMUzoKKysgICAgdm9p ZCBuZWVkUmVhZEFuZERpc3BhdGNoKCk7CisrCisrcHJvdGVjdGVkOgorKyAgICB2b2lkIHJ1bigp IG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIC8vIHdlIHVzZSB0aGlzIHBpcGUgdG8gbWFrZSB0 aGUgbG9vcCBleGl0IG90aGVyd2lzZSBpZiB3ZSBzaW1wbHkgdXNlZCBhIGZsYWcgb24gdGhlIGxv b3AgY29uZGl0aW9uLCBpZiBzdG9wKCkgZ2V0cworKyAgICAgICAgLy8gY2FsbGVkIHdoaWxlIHBv bGwoKSBpcyBibG9ja2luZyB0aGUgdGhyZWFkIHdpbGwgbmV2ZXIgcXVpdCBzaW5jZSB0aGVyZSBh cmUgbm8gd2F5bGFuZCBtZXNzYWdlcyBjb21pbmcgYW55bW9yZS4KKysgICAgICAgIHN0cnVjdCBQ aXBlCisrICAgICAgICB7CisrICAgICAgICAgICAgUGlwZShpbnQgKmZkcykKKysgICAgICAgICAg ICAgICAgOiBmZHMoZmRzKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYgKHF0 X3NhZmVfcGlwZShmZHMpICE9IDApCisrICAgICAgICAgICAgICAgICAgICBxV2FybmluZygiUGlw ZSBjcmVhdGlvbiBmYWlsZWQuIFF1aXR0aW5nIG1heSBoYW5nLiIpOworKyAgICAgICAgICAgIH0K KysgICAgICAgICAgICB+UGlwZSgpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBp ZiAoZmRzWzBdICE9IC0xKSB7CisrICAgICAgICAgICAgICAgICAgICBjbG9zZShmZHNbMF0pOwor KyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmRzWzFdKTsKKysgICAgICAgICAgICAgICAgfQor KyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpbnQgKmZkczsKKysgICAgICAgIH0gcGlw ZShtX3BpcGVmZCk7CisrCisrICAgICAgICAvLyBNYWtlIHRoZSBtYWluIHRocmVhZCBjYWxsIHds X3ByZXBhcmVfcmVhZCgpLCBkaXNwYXRjaCB0aGUgcGVuZGluZyBtZXNzYWdlcyBhbmQgZmx1c2gg dGhlCisrICAgICAgICAvLyBvdXRib3VuZCBvbmVzLiBXYWl0IHVudGlsIGl0J3MgZG9uZSBiZWZv cmUgcHJvY2VlZGluZywgdW5sZXNzIHdlJ3JlIHRvbGQgdG8gcXVpdC4KKysgICAgICAgIHdoaWxl ICh3YWl0Rm9yUmVhZGluZygpKSB7CisrICAgICAgICAgICAgcG9sbGZkIGZkc1syXSA9IHsgeyBt X2ZkLCBQT0xMSU4sIDAgfSwgeyBtX3BpcGVmZFswXSwgUE9MTElOLCAwIH0gfTsKKysgICAgICAg ICAgICBwb2xsKGZkcywgMiwgLTEpOworKworKyAgICAgICAgICAgIGlmIChmZHNbMV0ucmV2ZW50 cyAmIFBPTExJTikgeworKyAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCByZWFsbHkgY2FyZSB0 byByZWFkIHRoZSBieXRlIHRoYXQgd2FzIHdyaXR0ZW4gaGVyZSBzaW5jZSB3ZSdyZSBjbG9zaW5n IGRvd24KKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtX3dsZGlzcGxh eSk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAg ICAgICBpZiAoZmRzWzBdLnJldmVudHMgJiBQT0xMSU4pCisrICAgICAgICAgICAgICAgIHdsX2Rp c3BsYXlfcmVhZF9ldmVudHMobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICAvLyBUaGUg cG9sbGwgd2FzIHN1Y2Nlc2Z1bGwgYW5kIHRoZSBldmVudCB0aHJlYWQgZGlkIHRoZSB3bF9kaXNw bGF5X3JlYWRfZXZlbnRzKCkuIE9uIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUgbG9vcAorKyAg ICAgICAgICAgICAgICAvLyB0aGUgZXZlbnQgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQgd2lsbCBj YXVzZSBpdCB0byBkaXNwYXRjaCB0aGUgbWVzc2FnZXMganVzdCByZWFkLCB1bmxlc3MgdGhlIGxv b3AgZXhpdHMgaW4gd2hpY2gKKysgICAgICAgICAgICAgICAgLy8gY2FzZSB3ZSBkb24ndCBjYXJl IGFueW1vcmUgYWJvdXQgdGhlbS4KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAg IHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobV93bGRpc3BsYXkpOworKyAgICAgICAgfQorKyAgICB9 CisrCisrcHJpdmF0ZToKKysgICAgYm9vbCB3YWl0Rm9yUmVhZGluZygpCisrICAgIHsKKysgICAg ICAgIFFfQVNTRVJUKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSB0aGlzKTsKKysKKysgICAg ICAgIG1fcmVhZGluZy5zdG9yZVJlbGVhc2UoZmFsc2UpOworKworKyAgICAgICAgaWYgKG1fbW9k ZSA9PSBTZWxmRGlzcGF0Y2gpIHsKKysgICAgICAgICAgICByZWFkQW5kRGlzcGF0Y2hFdmVudHMo KTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgUV9FTUlUIG5lZWRSZWFkQW5kRGlz cGF0Y2goKTsKKysKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbV9tdXRleCk7Cisr ICAgICAgICAgICAgLy8gbV9yZWFkaW5nIG1pZ2h0IGJlIHNldCBmcm9tIG91ciBlbWl0IG9yIHNv bWUgb3RoZXIgaW52b2NhdGlvbiBvZgorKyAgICAgICAgICAgIC8vIHJlYWRBbmREaXNwYXRjaEV2 ZW50cygpLgorKyAgICAgICAgICAgIHdoaWxlICghbV9yZWFkaW5nLmxvYWRSZWxheGVkKCkgJiYg IW1fcXVpdHRpbmcpCisrICAgICAgICAgICAgICAgIG1fY29uZC53YWl0KCZtX211dGV4KTsKKysg ICAgICAgIH0KKysKKysgICAgICAgIHJldHVybiAhbV9xdWl0dGluZzsKKysgICAgfQorKworKyAg ICBpbnQgZGlzcGF0Y2hRdWV1ZVBlbmRpbmcoKQorKyAgICB7CisrICAgICAgICBpZiAobV93bGV2 cXVldWUpCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVu ZGluZyhtX3dsZGlzcGxheSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxzZQorKyAgICAgICAg ICAgIHJldHVybiB3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobV93bGRpc3BsYXkpOworKyAg ICB9CisrCisrICAgIGludCBwcmVwYXJlUmVhZFF1ZXVlKCkKKysgICAgeworKyAgICAgICAgaWYg KG1fd2xldnF1ZXVlKQorKyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X3ByZXBhcmVfcmVh ZF9xdWV1ZShtX3dsZGlzcGxheSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxzZQorKyAgICAg ICAgICAgIHJldHVybiB3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZChtX3dsZGlzcGxheSk7CisrICAg IH0KKysKKysgICAgaW50IG1fZmQ7CisrICAgIGludCBtX3BpcGVmZFsyXTsKKysgICAgd2xfZGlz cGxheSAqbV93bGRpc3BsYXk7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX3dsZXZxdWV1ZTsKKysg ICAgT3BlcmF0aW5nTW9kZSBtX21vZGU7CisrCisrICAgIC8qIENvbmN1cnJlbmN5IG5vdGUgd2hl biBvcGVyYXRpbmcgaW4gRW1pdFRvRGlzcGF0Y2ggbW9kZToKKysgICAgICogbV9yZWFkaW5nIGlz IHNldCB0byBmYWxzZSBpbnNpZGUgZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJlYWRpbmcoKSwgYW5k IGlzCisrICAgICAqIHNldCB0byB0cnVlIGluc2lkZSBtYWluIHRocmVhZCdzIHJlYWRBbmREaXNw YXRjaEV2ZW50cygpLgorKyAgICAgKiBUaGUgbG9jayBpcyBub3QgdGFrZW4gd2hlbiBzZXR0aW5n IG1fcmVhZGluZyB0byBmYWxzZSwgYXMgdGhlIG1haW4gdGhyZWFkCisrICAgICAqIGlzIG5vdCBh Y3RpdmVseSB3YWl0aW5nIGZvciBpdCB0byB0dXJuIGZhbHNlLiBIb3dldmVyLCB0aGUgbG9jayBp cyB0YWtlbgorKyAgICAgKiBpbnNpZGUgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkgYmVmb3JlIHNl dHRpbmcgbV9yZWFkaW5nIHRvIHRydWUsCisrICAgICAqIGFzIHRoZSBldmVudCB0aHJlYWQgaXMg YWN0aXZlbHkgd2FpdGluZyBmb3IgaXQgdW5kZXIgdGhlIHdhaXQgY29uZGl0aW9uLgorKyAgICAg Ki8KKysKKysgICAgUUF0b21pY0ludGVnZXI8Ym9vbD4gbV9yZWFkaW5nOworKyAgICBib29sIG1f cXVpdHRpbmc7CisrICAgIFFNdXRleCBtX211dGV4OworKyAgICBRV2FpdENvbmRpdGlvbiBtX2Nv bmQ7CisrfTsKKysKKyBRX0xPR0dJTkdfQ0FURUdPUlkobGNRcGFXYXlsYW5kLCAicXQucXBhLndh eWxhbmQiKTsgLy8gZm9yIGdlbmVyYWwgKHVuY2F0ZWdvcml6ZWQpIFdheWxhbmQgcGxhdGZvcm0g bG9nZ2luZworIAorIHN0cnVjdCB3bF9zdXJmYWNlICpRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZVN1 cmZhY2Uodm9pZCAqaGFuZGxlKQorQEAgLTE1OCwxNyArMzUxLDE2IEBAIFFXYXlsYW5kRGlzcGxh eTo6UVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlv bikKKyAgICAgaWYgKCFtWGtiQ29udGV4dCkKKyAgICAgICAgIHFDV2FybmluZyhsY1FwYVdheWxh bmQsICJmYWlsZWQgdG8gY3JlYXRlIHhrYiBjb250ZXh0Iik7CisgI2VuZGlmCistCistICAgIGZv cmNlUm91bmRUcmlwKCk7CistCistICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlzRW1wdHkoKSkg eworLSAgICAgICAgLy8gR2l2ZSB3bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRwdXRfdjEuZG9u ZSBldmVudHMgYSBjaGFuY2UgdG8gYXJyaXZlCistICAgICAgICBmb3JjZVJvdW5kVHJpcCgpOwor LSAgICB9CisgfQorIAorIFFXYXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxheSh2b2lkKQor IHsKKysgICAgaWYgKG1fZXZlbnRUaHJlYWQpCisrICAgICAgICBtX2V2ZW50VGhyZWFkLT5zdG9w KCk7CisrCisrICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZCkKKysgICAgICAgIG1fZnJh bWVFdmVudFF1ZXVlVGhyZWFkLT5zdG9wKCk7CisrCisgICAgIGlmIChtU3luY0NhbGxiYWNrKQor ICAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtU3luY0NhbGxiYWNrKTsKKyAKK0BAIC0xODcs NiArMzc5LDIxIEBAIFFXYXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxheSh2b2lkKQorICNl bmRpZgorICAgICBpZiAobURpc3BsYXkpCisgICAgICAgICB3bF9kaXNwbGF5X2Rpc2Nvbm5lY3Qo bURpc3BsYXkpOworKworKyAgICBpZiAobV9mcmFtZUV2ZW50UXVldWUpCisrICAgICAgICB3bF9l dmVudF9xdWV1ZV9kZXN0cm95KG1fZnJhbWVFdmVudFF1ZXVlKTsKKyt9CisrCisrLy8gU3RlcHMg d2hpY2ggaXMgY2FsbGVkIGp1c3QgYWZ0ZXIgY29uc3RydWN0b3IuIFRoaXMgc2VwYXJhdGVzIHJl Z2lzdHJ5X2dsb2JhbCgpIG91dCBvZiB0aGUgY29uc3RydWN0b3IKKysvLyBzbyB0aGF0IGZhY3Rv cnkgZnVuY3Rpb25zIGluIGludGVncmF0aW9uIGNhbiBiZSBvdmVycmlkZGVuLgorK3ZvaWQgUVdh eWxhbmREaXNwbGF5Ojppbml0aWFsaXplKCkKKyt7CisrICAgIGZvcmNlUm91bmRUcmlwKCk7Cisr CisrICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlzRW1wdHkoKSkgeworKyAgICAgICAgLy8gR2l2 ZSB3bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRwdXRfdjEuZG9uZSBldmVudHMgYSBjaGFuY2Ug dG8gYXJyaXZlCisrICAgICAgICBmb3JjZVJvdW5kVHJpcCgpOworKyAgICB9CisgfQorIAorIHZv aWQgUVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3JlZW4oKQorQEAgLTIwMyw5OCArNDEwLDM3IEBA IHZvaWQgUVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3JlZW4oKQorIAorIHZvaWQgUVdheWxhbmRE aXNwbGF5OjpjaGVja0Vycm9yKCkgY29uc3QKKyB7CistICAgIGludCBlY29kZSA9IHdsX2Rpc3Bs YXlfZ2V0X2Vycm9yKG1EaXNwbGF5KTsKKy0gICAgaWYgKChlY29kZSA9PSBFUElQRSB8fCBlY29k ZSA9PSBFQ09OTlJFU0VUKSkgeworLSAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRoaXMgdG8gcHJv dmlkZSBhIG5pY2VyIGVycm9yCistICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVj dGlvbiBicm9rZS4gRGlkIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOworLSAgICB9IGVs c2UgeworLSAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gZXhwZXJpZW5j ZWQgYSBmYXRhbCBlcnJvcjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworLSAgICB9CistICAgIF9l eGl0KDEpOworKyAgICBjaGVja1dheWxhbmRFcnJvcihtRGlzcGxheSk7CisgfQorIAorKy8vIENh bGxlZCBpbiBtYWluIHRocmVhZCwgZWl0aGVyIGZyb20gcXVldWVkIHNpZ25hbCBvciBkaXJlY3Rs eS4KKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Zmx1c2hSZXF1ZXN0cygpCisgeworLSAgICBpZiAo d2xfZGlzcGxheV9wcmVwYXJlX3JlYWQobURpc3BsYXkpID09IDApIHsKKy0gICAgICAgIHdsX2Rp c3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAgICB9CistCistICAgIGlmICh3bF9kaXNw bGF5X2Rpc3BhdGNoX3BlbmRpbmcobURpc3BsYXkpIDwgMCkKKy0gICAgICAgIGNoZWNrRXJyb3Io KTsKKy0KKy0gICAgeworLSAgICAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVM b2NrKTsKKy0gICAgICAgIGZvciAoY29uc3QgRnJhbWVRdWV1ZSAmcSA6IG1FeHRlcm5hbFF1ZXVl cykgeworLSAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIocS5tdXRleCk7CistICAgICAg ICAgICAgd2hpbGUgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1EaXNwbGF5LCBxLnF1 ZXVlKSAhPSAwKQorLSAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3Bl bmRpbmcobURpc3BsYXksIHEucXVldWUpOworLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9l dmVudHMobURpc3BsYXkpOworLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVf cGVuZGluZyhtRGlzcGxheSwgcS5xdWV1ZSk7CistICAgICAgICB9CistICAgIH0KKy0KKy0gICAg d2xfZGlzcGxheV9mbHVzaChtRGlzcGxheSk7CistfQorLQorLXZvaWQgUVdheWxhbmREaXNwbGF5 OjpibG9ja2luZ1JlYWRFdmVudHMoKQorLXsKKy0gICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2go bURpc3BsYXkpIDwgMCkKKy0gICAgICAgIGNoZWNrRXJyb3IoKTsKKy19CistCistdm9pZCBRV2F5 bGFuZERpc3BsYXk6OmRlc3Ryb3lGcmFtZVF1ZXVlKGNvbnN0IFFXYXlsYW5kRGlzcGxheTo6RnJh bWVRdWV1ZSAmcSkKKy17CistICAgIFFXcml0ZUxvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxv Y2spOworLSAgICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmKG1FeHRlcm5hbFF1ZXVlcy5iZWdpbigp LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1FeHRlcm5hbFF1ZXVlcy5lbmQoKSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICBbJnFdIChjb25zdCBRV2F5bGFuZERpc3BsYXk6OkZy YW1lUXVldWUgJm90aGVyKXsgcmV0dXJuIG90aGVyLnF1ZXVlID09IHEucXVldWU7IH0pOworLSAg ICBRX0FTU0VSVChpdCAhPSBtRXh0ZXJuYWxRdWV1ZXMuZW5kKCkpOworLSAgICBtRXh0ZXJuYWxR dWV1ZXMuZXJhc2UoaXQpOworLSAgICBpZiAocS5xdWV1ZSAhPSBudWxscHRyKQorLSAgICAgICAg d2xfZXZlbnRfcXVldWVfZGVzdHJveShxLnF1ZXVlKTsKKy0gICAgZGVsZXRlIHEubXV0ZXg7Cisr ICAgIG1fZXZlbnRUaHJlYWQtPnJlYWRBbmREaXNwYXRjaEV2ZW50cygpOworIH0KKyAKKy1RV2F5 bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgUVdheWxhbmREaXNwbGF5OjpjcmVhdGVGcmFtZVF1ZXVl KCkKKysvLyBXZSBoYXZlIHRvIHdhaXQgdW50aWwgd2UgaGF2ZSBhbiBldmVudERpc3BhdGNoZXIg YmVmb3JlIGNyZWF0aW5nIHRoZSBldmVudFRocmVhZCwKKysvLyBvdGhlcndpc2UgZm9yY2VSb3Vu ZFRyaXAoKSBtYXkgYmxvY2sgaW5zaWRlIF9ldmVudHNfcmVhZCgpIGJlY2F1c2UgZXZlbnRUaHJl YWQgaXMKKysvLyBwb2xsaW5nLgorK3ZvaWQgUVdheWxhbmREaXNwbGF5Ojppbml0RXZlbnRUaHJl YWQoKQorIHsKKy0gICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7Cist ICAgIEZyYW1lUXVldWUgcXtjcmVhdGVFdmVudFF1ZXVlKCl9OworLSAgICBtRXh0ZXJuYWxRdWV1 ZXMuYXBwZW5kKHEpOworLSAgICByZXR1cm4gcTsKKy19CisrICAgIG1fZXZlbnRUaHJlYWQucmVz ZXQoCisrICAgICAgICAgICAgbmV3IEV2ZW50VGhyZWFkKG1EaXNwbGF5LCAvKiBkZWZhdWx0IHF1 ZXVlICovIG51bGxwdHIsIEV2ZW50VGhyZWFkOjpFbWl0VG9EaXNwYXRjaCkpOworKyAgICBjb25u ZWN0KG1fZXZlbnRUaHJlYWQuZ2V0KCksICZFdmVudFRocmVhZDo6bmVlZFJlYWRBbmREaXNwYXRj aCwgdGhpcywKKysgICAgICAgICAgICAmUVdheWxhbmREaXNwbGF5OjpmbHVzaFJlcXVlc3RzLCBR dDo6UXVldWVkQ29ubmVjdGlvbik7CisrICAgIG1fZXZlbnRUaHJlYWQtPnN0YXJ0KCk7CisgCist d2xfZXZlbnRfcXVldWUgKlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlRXZlbnRRdWV1ZSgpCistewor LSAgICByZXR1cm4gd2xfZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3BsYXkpOworKyAgICAvLyB3 bF9kaXNwbGF5X2Rpc2Nvbm5lY3QoKSBmcmVlIHRoaXMuCisrICAgIG1fZnJhbWVFdmVudFF1ZXVl ID0gd2xfZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3BsYXkpOworKyAgICBtX2ZyYW1lRXZlbnRR dWV1ZVRocmVhZC5yZXNldCgKKysgICAgICAgICAgICBuZXcgRXZlbnRUaHJlYWQobURpc3BsYXks IG1fZnJhbWVFdmVudFF1ZXVlLCBFdmVudFRocmVhZDo6U2VsZkRpc3BhdGNoKSk7CisrICAgIG1f ZnJhbWVFdmVudFF1ZXVlVGhyZWFkLT5zdGFydCgpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRGlz cGxheTo6ZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1ZSwgc3RkOjpmdW5j dGlvbjxib29sICgpPiBjb25kaXRpb24sIGludCB0aW1lb3V0KQorK3ZvaWQgUVdheWxhbmREaXNw bGF5OjpibG9ja2luZ1JlYWRFdmVudHMoKQorIHsKKy0gICAgaWYgKCFjb25kaXRpb24oKSkKKy0g ICAgICAgIHJldHVybjsKKy0KKy0gICAgUUVsYXBzZWRUaW1lciB0aW1lcjsKKy0gICAgdGltZXIu c3RhcnQoKTsKKy0gICAgc3RydWN0IHBvbGxmZCBwRmQgPSBxdF9tYWtlX3BvbGxmZCh3bF9kaXNw bGF5X2dldF9mZChtRGlzcGxheSksIFBPTExJTik7CistICAgIHdoaWxlICh0aW1lb3V0ID09IC0x IHx8IHRpbWVyLmVsYXBzZWQoKSA8IHRpbWVvdXQpIHsKKy0gICAgICAgIHdoaWxlICh3bF9kaXNw bGF5X3ByZXBhcmVfcmVhZF9xdWV1ZShtRGlzcGxheSwgcXVldWUpICE9IDApCistICAgICAgICAg ICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxdWV1ZSk7Cist CistICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKG1EaXNwbGF5KTsKKy0KKy0gICAgICAgIGNvbnN0 IGludCByZW1haW5pbmcgPSBxTWF4KHRpbWVvdXQgLSB0aW1lci5lbGFwc2VkKCksIDBsbCk7Cist ICAgICAgICBjb25zdCBpbnQgcG9sbFRpbWVvdXQgPSB0aW1lb3V0ID09IC0xID8gLTEgOiByZW1h aW5pbmc7CistICAgICAgICBpZiAocXRfcG9sbF9tc2VjcygmcEZkLCAxLCBwb2xsVGltZW91dCkg PiAwKQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAg ICAgICAgZWxzZQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobURpc3BsYXkp OworLQorLSAgICAgICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlz cGxheSwgcXVldWUpIDwgMCkKKy0gICAgICAgICAgICBjaGVja0Vycm9yKCk7CistCistICAgICAg ICBpZiAoIWNvbmRpdGlvbigpKQorLSAgICAgICAgICAgIGJyZWFrOworLSAgICB9CisrICAgIGlm ICh3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KSA8IDApCisrICAgICAgICBjaGVja1dheWxh bmRFcnJvcihtRGlzcGxheSk7CisgfQorIAorIFFXYXlsYW5kU2NyZWVuICpRV2F5bGFuZERpc3Bs YXk6OnNjcmVlbkZvck91dHB1dChzdHJ1Y3Qgd2xfb3V0cHV0ICpvdXRwdXQpIGNvbnN0CitAQCAt MzQ1LDcgKzQ5MSw3IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWwodWlu dDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgICAgIGlmIChpbnRlcmZh Y2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX291dHB1dCIpKSB7CisgICAgICAgICBtV2FpdGluZ1Nj cmVlbnMgPDwgbmV3IFFXYXlsYW5kU2NyZWVuKHRoaXMsIHZlcnNpb24sIGlkKTsKKyAgICAgfSBl bHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX2NvbXBvc2l0b3IiKSkgewor LSAgICAgICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24sIDMpOworKyAg ICAgICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24sIDQpOworICAgICAg ICAgbUNvbXBvc2l0b3IuaW5pdChyZWdpc3RyeSwgaWQsIG1Db21wb3NpdG9yVmVyc2lvbik7Cisg ICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9zaG0iKSkgewor ICAgICAgICAgbVNobS5yZXNldChuZXcgUVdheWxhbmRTaG0odGhpcywgdmVyc2lvbiwgaWQpKTsK K0BAIC0zNTQsNyArNTAwLDcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2Jh bCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAgICAgIG1J bnB1dERldmljZXMuYXBwZW5kKGlucHV0RGV2aWNlKTsKKyAjaWYgUVRfQ09ORklHKHdheWxhbmRf ZGF0YWRldmljZSkKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwo IndsX2RhdGFfZGV2aWNlX21hbmFnZXIiKSkgeworLSAgICAgICAgbURuZFNlbGVjdGlvbkhhbmRs ZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIodGhpcywgaWQpKTsKKysgICAg ICAgIG1EbmRTZWxlY3Rpb25IYW5kbGVyLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFEZXZpY2VNYW5h Z2VyKHRoaXMsIHZlcnNpb24sIGlkKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAoaW50ZXJm YWNlID09IFFTdHJpbmdMaXRlcmFsKCJxdF9zdXJmYWNlX2V4dGVuc2lvbiIpKSB7CisgICAgICAg ICBtV2luZG93RXh0ZW5zaW9uLnJlc2V0KG5ldyBRdFdheWxhbmQ6OnF0X3N1cmZhY2VfZXh0ZW5z aW9uKHJlZ2lzdHJ5LCBpZCwgMSkpOworQEAgLTM2OSw2ICs1MTUsOCBAQCB2b2lkIFFXYXlsYW5k RGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRl cmZhY2UsIHVpbgorICNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rp b24pCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfcHJp bWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkgeworICAgICAgICAgbVByaW1hcnlT ZWxlY3Rpb25NYW5hZ2VyLnJlc2V0KG5ldyBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VN YW5hZ2VyVjEodGhpcywgaWQsIDEpKTsKKysgICAgICAgIGZvciAoUVdheWxhbmRJbnB1dERldmlj ZSAqaW5wdXREZXZpY2UgOiBxQXNDb25zdChtSW5wdXREZXZpY2VzKSkKKysgICAgICAgICAgICBp bnB1dERldmljZS0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShtUHJpbWFyeVNlbGVjdGlvbk1h bmFnZXItPmNyZWF0ZURldmljZShpbnB1dERldmljZSkpOworICNlbmRpZgorICAgICB9IGVsc2Ug aWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgiendwX3RleHRfaW5wdXRfbWFuYWdlcl92 MiIpICYmICFtQ2xpZW50U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCkgeworICAgICAgICAgbVRl eHRJbnB1dE1hbmFnZXIucmVzZXQobmV3IFF0V2F5bGFuZDo6endwX3RleHRfaW5wdXRfbWFuYWdl cl92MihyZWdpc3RyeSwgaWQsIDEpKTsKK0BAIC00MjcsNiArNTc1LDEzIEBAIHZvaWQgUVdheWxh bmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWxfcmVtb3ZlKHVpbnQzMl90IGlkKQorICAgICAgICAg ICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFRleHRJbnB1dChudWxscHRyKTsKKyAgICAgICAg ICAgICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+cmVjb25maWd1cmVJbnB1dENvbnRleHQoKTsK KyAgICAgICAgICAgICB9CisrI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3Nl bGVjdGlvbikKKysgICAgICAgICAgICBpZiAoZ2xvYmFsLmludGVyZmFjZSA9PSBRU3RyaW5nTGl0 ZXJhbCgiendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxIikpIHsKKysgICAg ICAgICAgICAgICAgbVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLnJlc2V0KCk7CisrICAgICAgICAg ICAgICAgIGZvciAoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UgOiBxQXNDb25zdCht SW5wdXREZXZpY2VzKSkKKysgICAgICAgICAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRQcmlt YXJ5U2VsZWN0aW9uRGV2aWNlKG51bGxwdHIpOworKyAgICAgICAgICAgIH0KKysjZW5kaWYKKyAg ICAgICAgICAgICBtR2xvYmFscy5yZW1vdmVBdChpKTsKKyAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgIH0KK0BAIC00NTIsOSArNjA3LDEwIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjphZGRS ZWdpc3RyeUxpc3RlbmVyKFJlZ2lzdHJ5TGlzdGVuZXIgbGlzdGVuZXIsIHZvaWQgKmRhdGEpCisg Cisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlbW92ZUxpc3RlbmVyKFJlZ2lzdHJ5TGlzdGVuZXIg bGlzdGVuZXIsIHZvaWQgKmRhdGEpCisgeworLSAgICBzdGQ6OnJlbW92ZV9pZihtUmVnaXN0cnlM aXN0ZW5lcnMuYmVnaW4oKSwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgpLCBbPV0oTGlzdGVuZXIg bCl7CisrICAgIGF1dG8gaXRlciA9IHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxpc3RlbmVycy5i ZWdpbigpLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBsKXsKKyAgICAg ICAgIHJldHVybiAobC5saXN0ZW5lciA9PSBsaXN0ZW5lciAmJiBsLmRhdGEgPT0gZGF0YSk7Cisg ICAgIH0pOworKyAgICBtUmVnaXN0cnlMaXN0ZW5lcnMuZXJhc2UoaXRlciwgbVJlZ2lzdHJ5TGlz dGVuZXJzLmVuZCgpKTsKKyB9CisgCisgdWludDMyX3QgUVdheWxhbmREaXNwbGF5OjpjdXJyZW50 VGltZU1pbGxpc2VjKCkKK0BAIC00NjcsNTAgKzYyMyw5IEBAIHVpbnQzMl90IFFXYXlsYW5kRGlz cGxheTo6Y3VycmVudFRpbWVNaWxsaXNlYygpCisgICAgIHJldHVybiAwOworIH0KKyAKKy1zdGF0 aWMgdm9pZAorLXN5bmNfY2FsbGJhY2sodm9pZCAqZGF0YSwgc3RydWN0IHdsX2NhbGxiYWNrICpj YWxsYmFjaywgdWludDMyX3Qgc2VyaWFsKQorLXsKKy0gICAgUV9VTlVTRUQoc2VyaWFsKQorLSAg ICBib29sICpkb25lID0gc3RhdGljX2Nhc3Q8Ym9vbCAqPihkYXRhKTsKKy0KKy0gICAgKmRvbmUg PSB0cnVlOworLQorLSAgICAvLyBJZiB0aGUgd2xfY2FsbGJhY2sgZG9uZSBldmVudCBpcyByZWNl aXZlZCBhZnRlciB0aGUgY29uZGl0aW9uIGNoZWNrIGluIHRoZSB3aGlsZSBsb29wIGluCistICAg IC8vIGZvcmNlUm91bmRUcmlwKCksIGJ1dCBiZWZvcmUgdGhlIGNhbGwgdG8gcHJvY2Vzc0V2ZW50 cywgdGhlIGNhbGwgdG8gcHJvY2Vzc0V2ZW50cyBtYXkgYmxvY2sKKy0gICAgLy8gZm9yZXZlciBp ZiBubyBtb3JlIGV2ZW50cyBhcmUgcG9zdGVkIChldmVudGhvdWdoIHRoZSBjYWxsYmFjayBpcyBo YW5kbGVkIGluIHJlc3BvbnNlIHRvIHRoZQorLSAgICAvLyBhYm91dFRvQmxvY2sgc2lnbmFsKS4g SGVuY2UsIHdlIHdha2UgdXAgdGhlIGV2ZW50IGRpc3BhdGNoZXIgc28gZm9yY2VSb3VuZFRyaXAg bWF5IHJldHVybi4KKy0gICAgLy8gKFFUQlVHLTY0Njk2KQorLSAgICBpZiAoYXV0byAqZGlzcGF0 Y2hlciA9IFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVyKCkpCistICAg ICAgICBkaXNwYXRjaGVyLT53YWtlVXAoKTsKKy0KKy0gICAgd2xfY2FsbGJhY2tfZGVzdHJveShj YWxsYmFjayk7CistfQorLQorLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY2FsbGJhY2tfbGlzdGVu ZXIgc3luY19saXN0ZW5lciA9IHsKKy0gICAgc3luY19jYWxsYmFjaworLX07CistCisgdm9pZCBR V2F5bGFuZERpc3BsYXk6OmZvcmNlUm91bmRUcmlwKCkKKyB7CistICAgIC8vIHdsX2Rpc3BsYXlf cm91bmR0cmlwKCkgd29ya3Mgb24gdGhlIG1haW4gcXVldWUgb25seSwKKy0gICAgLy8gYnV0IHdl IHVzZSBhIHNlcGFyYXRlIG9uZSwgc28gYmFzaWNhbGx5IHJlaW1wbGVtZW50IGl0IGhlcmUKKy0g ICAgaW50IHJldCA9IDA7CistICAgIGJvb2wgZG9uZSA9IGZhbHNlOworLSAgICB3bF9jYWxsYmFj ayAqY2FsbGJhY2sgPSB3bF9kaXNwbGF5X3N5bmMobURpc3BsYXkpOworLSAgICB3bF9jYWxsYmFj a19hZGRfbGlzdGVuZXIoY2FsbGJhY2ssICZzeW5jX2xpc3RlbmVyLCAmZG9uZSk7CistICAgIGZs dXNoUmVxdWVzdHMoKTsKKy0gICAgaWYgKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnRE aXNwYXRjaGVyKCkpIHsKKy0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkgeworLSAg ICAgICAgICAgIFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVyKCktPnBy b2Nlc3NFdmVudHMoUUV2ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMpOworLSAgICAgICAgICAg IHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtRGlzcGxheSk7CistICAgICAgICB9 CistICAgIH0gZWxzZSB7CistICAgICAgICB3aGlsZSAoIWRvbmUgJiYgcmV0ID49IDApCistICAg ICAgICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSk7CistICAgIH0KKy0K Ky0gICAgaWYgKHJldCA9PSAtMSAmJiAhZG9uZSkKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ry b3koY2FsbGJhY2spOworKyAgICAgd2xfZGlzcGxheV9yb3VuZHRyaXAobURpc3BsYXkpOworIH0K KyAKKyBib29sIFFXYXlsYW5kRGlzcGxheTo6c3VwcG9ydHNXaW5kb3dEZWNvcmF0aW9uKCkgY29u c3QKK0BAIC01NzQsMTQgKzY4OSwxMCBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6aGFuZGxlS2V5 Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpYworICAgICBp ZiAobUxhc3RLZXlib2FyZEZvY3VzID09IGtleWJvYXJkRm9jdXMpCisgICAgICAgICByZXR1cm47 CisgCistICAgIGlmIChtV2F5bGFuZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbikgewor LSAgICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+bVNoZWxsSW50ZWdyYXRpb24tPmhhbmRsZUtl eWJvYXJkRm9jdXNDaGFuZ2VkKGtleWJvYXJkRm9jdXMsIG1MYXN0S2V5Ym9hcmRGb2N1cyk7Cist ICAgIH0gZWxzZSB7CistICAgICAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKy0gICAgICAgICAgICBo YW5kbGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CistICAgICAgICBpZiAobUxhc3RL ZXlib2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0 S2V5Ym9hcmRGb2N1cyk7CistICAgIH0KKysgICAgaWYgKGtleWJvYXJkRm9jdXMpCisrICAgICAg ICBoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CisrICAgIGlmIChtTGFzdEtl eWJvYXJkRm9jdXMpCisrICAgICAgICBoYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtTGFzdEtleWJv YXJkRm9jdXMpOworIAorICAgICBtTGFzdEtleWJvYXJkRm9jdXMgPSBrZXlib2FyZEZvY3VzOwor IH0KK0BAIC02MDAsNiArNzExLDE5IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5kbGVXYXls YW5kU3luYygpCisgICAgIFFXaW5kb3cgKmFjdGl2ZVdpbmRvdyA9IG1BY3RpdmVXaW5kb3dzLmVt cHR5KCkgPyBudWxscHRyIDogbUFjdGl2ZVdpbmRvd3MubGFzdCgpLT53aW5kb3coKTsKKyAgICAg aWYgKGFjdGl2ZVdpbmRvdyAhPSBRR3VpQXBwbGljYXRpb246OmZvY3VzV2luZG93KCkpCisgICAg ICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoYWN0aXZl V2luZG93KTsKKysKKysgICAgaWYgKCFhY3RpdmVXaW5kb3cpIHsKKysgICAgICAgIGlmIChsYXN0 SW5wdXREZXZpY2UoKSkgeworKyNpZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorKyAgICAgICAgICAg IGlmIChhdXRvICpkYXRhRGV2aWNlID0gbGFzdElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKSkK KysgICAgICAgICAgICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7 CisrI2VuZGlmCisrI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlv bikKKysgICAgICAgICAgICBpZiAoYXV0byAqZGV2aWNlID0gbGFzdElucHV0RGV2aWNlKCktPnBy aW1hcnlTZWxlY3Rpb25EZXZpY2UoKSkKKysgICAgICAgICAgICAgICAgZGV2aWNlLT5pbnZhbGlk YXRlU2VsZWN0aW9uT2ZmZXIoKTsKKysjZW5kaWYKKysgICAgICAgIH0KKysgICAgfQorIH0KKyAK KyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBRV2F5bGFuZERpc3BsYXk6OnN5bmNDYWxsYmFj a0xpc3RlbmVyID0geworQEAgLTYyNiw2ICs3NTAsMTMgQEAgUVdheWxhbmRJbnB1dERldmljZSAq UVdheWxhbmREaXNwbGF5OjpkZWZhdWx0SW5wdXREZXZpY2UoKSBjb25zdAorICAgICByZXR1cm4g bUlucHV0RGV2aWNlcy5pc0VtcHR5KCkgPyAwIDogbUlucHV0RGV2aWNlcy5maXJzdCgpOworIH0K KyAKKytib29sIFFXYXlsYW5kRGlzcGxheTo6aXNLZXlib2FyZEF2YWlsYWJsZSgpIGNvbnN0Cisr eworKyAgICByZXR1cm4gc3RkOjphbnlfb2YoCisrICAgICAgICAgICAgbUlucHV0RGV2aWNlcy5j b25zdEJlZ2luKCksIG1JbnB1dERldmljZXMuY29uc3RFbmQoKSwKKysgICAgICAgICAgICBbdGhp c10oY29uc3QgUVdheWxhbmRJbnB1dERldmljZSAqZGV2aWNlKSB7IHJldHVybiBkZXZpY2UtPmtl eWJvYXJkKCkgIT0gbnVsbHB0cjsgfSk7CisrfQorKworICNpZiBRVF9DT05GSUcoY3Vyc29yKQor IAorIFFXYXlsYW5kQ3Vyc29yICpRV2F5bGFuZERpc3BsYXk6OndheWxhbmRDdXJzb3IoKQorQEAg LTY1Miw0ICs3ODMsNiBAQCBRV2F5bGFuZEN1cnNvclRoZW1lICpRV2F5bGFuZERpc3BsYXk6Omxv YWRDdXJzb3JUaGVtZShjb25zdCBRU3RyaW5nICZuYW1lLCBpbnQgcAorIAorIH0gLy8gbmFtZXNw YWNlIFF0V2F5bGFuZENsaWVudAorIAorKyNpbmNsdWRlICJxd2F5bGFuZGRpc3BsYXkubW9jIgor KworIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRpc3BsYXlfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5 X3AuaAoraW5kZXggM2IwOTJiYzguLjQyYmM2NjFkIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkaXNwbGF5X3AuaAorQEAgLTEwOSw2ICsxMDksNyBAQCBjbGFzcyBRV2F5bGFuZFN1 cmZhY2U7CisgY2xhc3MgUVdheWxhbmRTaGVsbEludGVncmF0aW9uOworIGNsYXNzIFFXYXlsYW5k Q3Vyc29yOworIGNsYXNzIFFXYXlsYW5kQ3Vyc29yVGhlbWU7CisrY2xhc3MgRXZlbnRUaHJlYWQ7 CisgCisgdHlwZWRlZiB2b2lkICgqUmVnaXN0cnlMaXN0ZW5lcikodm9pZCAqZGF0YSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdHJ5 LAorQEAgLTEyMCwxNSArMTIxLDExIEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFX YXlsYW5kRGlzcGxheSA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgUXRXYXlsYW5kCisgICAgIFFf T0JKRUNUCisgCisgcHVibGljOgorLSAgICBzdHJ1Y3QgRnJhbWVRdWV1ZSB7CistICAgICAgICBG cmFtZVF1ZXVlKHdsX2V2ZW50X3F1ZXVlICpxID0gbnVsbHB0cikgOiBxdWV1ZShxKSwgbXV0ZXgo bmV3IFFNdXRleCkge30KKy0gICAgICAgIHdsX2V2ZW50X3F1ZXVlICpxdWV1ZTsKKy0gICAgICAg IFFNdXRleCAqbXV0ZXg7CistICAgIH07CistCisgICAgIFFXYXlsYW5kRGlzcGxheShRV2F5bGFu ZEludGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24pOworICAgICB+UVdheWxhbmREaXNwbGF5 KHZvaWQpIG92ZXJyaWRlOworIAorKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKysKKyAjaWYgUVRf Q09ORklHKHhrYmNvbW1vbikKKyAgICAgc3RydWN0IHhrYl9jb250ZXh0ICp4a2JDb250ZXh0KCkg Y29uc3QgeyByZXR1cm4gbVhrYkNvbnRleHQuZ2V0KCk7IH0KKyAjZW5kaWYKK0BAIC0yMTAsMTEg KzIwNywxMSBAQCBwdWJsaWM6CisgICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQo UVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UpOworICAgICB2b2lkIGhhbmRsZVdpbmRv d0Rlc3Ryb3llZChRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKyAKKy0gICAgd2xfZXZlbnRfcXVl dWUgKmNyZWF0ZUV2ZW50UXVldWUoKTsKKy0gICAgRnJhbWVRdWV1ZSBjcmVhdGVGcmFtZVF1ZXVl KCk7CistICAgIHZvaWQgZGVzdHJveUZyYW1lUXVldWUoY29uc3QgRnJhbWVRdWV1ZSAmcSk7Cist ICAgIHZvaWQgZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1ZSwgc3RkOjpm dW5jdGlvbjxib29sKCk+IGNvbmRpdGlvbiwgaW50IHRpbWVvdXQgPSAtMSk7CisrICAgIHdsX2V2 ZW50X3F1ZXVlICpmcmFtZUV2ZW50UXVldWUoKSB7IHJldHVybiBtX2ZyYW1lRXZlbnRRdWV1ZTsg fTsKKysKKysgICAgYm9vbCBpc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3Q7CisgCisrICAgIHZv aWQgaW5pdEV2ZW50VGhyZWFkKCk7CisgcHVibGljIHNsb3RzOgorICAgICB2b2lkIGJsb2NraW5n UmVhZEV2ZW50cygpOworICAgICB2b2lkIGZsdXNoUmVxdWVzdHMoKTsKK0BAIC0yMzcsNiArMjM0 LDkgQEAgcHJpdmF0ZToKKyAgICAgfTsKKyAKKyAgICAgc3RydWN0IHdsX2Rpc3BsYXkgKm1EaXNw bGF5ID0gbnVsbHB0cjsKKysgICAgUVNjb3BlZFBvaW50ZXI8RXZlbnRUaHJlYWQ+IG1fZXZlbnRU aHJlYWQ7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX2ZyYW1lRXZlbnRRdWV1ZSA9IG51bGxwdHI7 CisrICAgIFFTY29wZWRQb2ludGVyPEV2ZW50VGhyZWFkPiBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVh ZDsKKyAgICAgUXRXYXlsYW5kOjp3bF9jb21wb3NpdG9yIG1Db21wb3NpdG9yOworICAgICBRU2Nv cGVkUG9pbnRlcjxRV2F5bGFuZFNobT4gbVNobTsKKyAgICAgUUxpc3Q8UVdheWxhbmRTY3JlZW4g Kj4gbVdhaXRpbmdTY3JlZW5zOworQEAgLTI3MywxMSArMjczLDkgQEAgcHJpdmF0ZToKKyAgICAg UVdheWxhbmRJbnB1dERldmljZSAqbUxhc3RJbnB1dERldmljZSA9IG51bGxwdHI7CisgICAgIFFQ b2ludGVyPFFXYXlsYW5kV2luZG93PiBtTGFzdElucHV0V2luZG93OworICAgICBRUG9pbnRlcjxR V2F5bGFuZFdpbmRvdz4gbUxhc3RLZXlib2FyZEZvY3VzOworLSAgICBRVmVjdG9yPFFXYXlsYW5k V2luZG93ICo+IG1BY3RpdmVXaW5kb3dzOworLSAgICBRVmVjdG9yPEZyYW1lUXVldWU+IG1FeHRl cm5hbFF1ZXVlczsKKysgICAgUUxpc3Q8UVdheWxhbmRXaW5kb3cgKj4gbUFjdGl2ZVdpbmRvd3M7 CisgICAgIHN0cnVjdCB3bF9jYWxsYmFjayAqbVN5bmNDYWxsYmFjayA9IG51bGxwdHI7CisgICAg IHN0YXRpYyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBzeW5jQ2FsbGJhY2tMaXN0ZW5lcjsK Ky0gICAgUVJlYWRXcml0ZUxvY2sgbV9mcmFtZVF1ZXVlTG9jazsKKyAKKyAgICAgYm9vbCBtQ2xp ZW50U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCA9ICFRUGxhdGZvcm1JbnB1dENvbnRleHRGYWN0 b3J5OjpyZXF1ZXN0ZWQoKS5pc051bGwoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRuZC5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRu ZC5jcHAKK2luZGV4IDY1MzVhYTE2Li43YzUzZjVmYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkbmQuY3BwCitAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6c3RhcnRE cmFnKCkKKyB7CisgICAgIFFCYXNpY0RyYWc6OnN0YXJ0RHJhZygpOworICAgICBRV2F5bGFuZFdp bmRvdyAqaWNvbiA9IHN0YXRpY19jYXN0PFFXYXlsYW5kV2luZG93ICo+KHNoYXBlZFBpeG1hcFdp bmRvdygpLT5oYW5kbGUoKSk7CistICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmlj ZSgpLT5kYXRhRGV2aWNlKCktPnN0YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCksIGljb24pKSB7 CisrICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCkt PnN0YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCksIGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygp LCBpY29uKSkgeworICAgICAgICAgaWNvbi0+YWRkQXR0YWNoT2Zmc2V0KC1kcmFnKCktPmhvdFNw b3QoKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICAvLyBDYW5jZWxsaW5nIGltbWVkaWF0ZWx5 IGRvZXMgbm90IHdvcmssIHNpbmNlIHRoZSBldmVudCBsb29wIGZvciBRRHJhZzo6ZXhlYyBpcyBz dGFydGVkCitAQCAtODAsNiArODAsOSBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6Y2FuY2VsKCkKKyAg ICAgUUJhc2ljRHJhZzo6Y2FuY2VsKCk7CisgCisgICAgIG1fZGlzcGxheS0+Y3VycmVudElucHV0 RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+Y2FuY2VsRHJhZygpOworKworKyAgICBpZiAoZHJhZygp KQorKyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRlcigpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5k RHJhZzo6bW92ZShjb25zdCBRUG9pbnQgJmdsb2JhbFBvcywgUXQ6Ok1vdXNlQnV0dG9ucyBiLCBR dDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kcykKK0BAIC0xMDMsMzMgKzEwNiw0MSBAQCB2b2lkIFFX YXlsYW5kRHJhZzo6ZW5kRHJhZygpCisgICAgIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNl KCktPmhhbmRsZUVuZERyYWcoKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERyYWc6OnVwZGF0ZVRh cmdldChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVz cG9uc2UoYm9vbCBhY2NlcHRlZCkKKyB7CistICAgIHNldENhbkRyb3AoIW1pbWVUeXBlLmlzRW1w dHkoKSk7CistCistICAgIGlmIChjYW5Ecm9wKCkpIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihk ZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJl bnRJbnB1dERldmljZSgpLT5tb2RpZmllcnMoKSkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAg dXBkYXRlQ3Vyc29yKFF0OjpJZ25vcmVBY3Rpb24pOworLSAgICB9CisrICAgIC8vIFRoaXMgbWV0 aG9kIGlzIHVzZWQgZm9yIG9sZCBEYXRhRGV2aWNlcyB3aGVyZSB0aGUgZHJhZyBhY3Rpb24gaXMg bm90IGNvbW11bmljYXRlZAorKyAgICBRdDo6RHJvcEFjdGlvbiBhY3Rpb24gPSBkZWZhdWx0QWN0 aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERl dmljZSgpLT5tb2RpZmllcnMoKSk7CisrICAgIHNldFJlc3BvbnNlKFFQbGF0Zm9ybURyb3BRdFJl c3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERyYWc6OnNl dFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt2b2lk IFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2Ug JnJlc3BvbnNlKQorIHsKKyAgICAgc2V0Q2FuRHJvcChyZXNwb25zZS5pc0FjY2VwdGVkKCkpOwor IAorICAgICBpZiAoY2FuRHJvcCgpKSB7CistICAgICAgICB1cGRhdGVDdXJzb3IoZGVmYXVsdEFj dGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXRE ZXZpY2UoKS0+bW9kaWZpZXJzKCkpKTsKKysgICAgICAgIHVwZGF0ZUN1cnNvcihyZXNwb25zZS5h Y2NlcHRlZEFjdGlvbigpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHVwZGF0ZUN1cnNvcihR dDo6SWdub3JlQWN0aW9uKTsKKyAgICAgfQorIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6Zmlu aXNoRHJhZyhjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisrdm9pZCBR V2F5bGFuZERyYWc6OnNldERyb3BSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25z ZSAmcmVzcG9uc2UpCisgeworICAgICBzZXRFeGVjdXRlZERyb3BBY3Rpb24ocmVzcG9uc2UuYWNj ZXB0ZWRBY3Rpb24oKSk7CisrfQorKworK3ZvaWQgUVdheWxhbmREcmFnOjpmaW5pc2hEcmFnKCkK Kyt7CisgICAgIFFLZXlFdmVudCBldmVudChRRXZlbnQ6OktleVByZXNzLCBRdDo6S2V5X0VzY2Fw ZSwgUXQ6Ok5vTW9kaWZpZXIpOworICAgICBldmVudEZpbHRlcihzaGFwZWRQaXhtYXBXaW5kb3co KSwgJmV2ZW50KTsKKysKKysgICAgaWYgKGRyYWcoKSkKKysgICAgICAgIGRyYWcoKS0+ZGVsZXRl TGF0ZXIoKTsKKyt9CisrCisrYm9vbCBRV2F5bGFuZERyYWc6Om93bnNEcmFnT2JqZWN0KCkgY29u c3QKKyt7CisrICAgIHJldHVybiB0cnVlOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkbmRfcC5oCitpbmRleCA0NzRmZTJhYi4uNDZmNjI5YWMgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZG5kX3AuaAorQEAgLTcxLDkgKzcxLDEwIEBAIHB1YmxpYzoKKyAgICAgUVdh eWxhbmREcmFnKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSk7CisgICAgIH5RV2F5bGFuZERyYWco KSBvdmVycmlkZTsKKyAKKy0gICAgdm9pZCB1cGRhdGVUYXJnZXQoY29uc3QgUVN0cmluZyAmbWlt ZVR5cGUpOworLSAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3Bv bnNlICZyZXNwb25zZSk7CistICAgIHZvaWQgZmluaXNoRHJhZyhjb25zdCBRUGxhdGZvcm1Ecm9w UXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIHNldFJlc3BvbnNlKGJvb2wgYWNjZXB0 ZWQpOworKyAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNl ICZyZXNwb25zZSk7CisrICAgIHZvaWQgc2V0RHJvcFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURy b3BRdFJlc3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgZmluaXNoRHJhZygpOworIAorIHBy b3RlY3RlZDoKKyAgICAgdm9pZCBzdGFydERyYWcoKSBvdmVycmlkZTsKK0BAIC04Miw2ICs4Myw3 IEBAIHByb3RlY3RlZDoKKyAgICAgdm9pZCBkcm9wKGNvbnN0IFFQb2ludCAmZ2xvYmFsUG9zLCBR dDo6TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RzKSBvdmVycmlkZTsK KyAgICAgdm9pZCBlbmREcmFnKCkgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgb3duc0RyYWdPYmpl Y3QoKSBjb25zdCBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERpc3BsYXkg Km1fZGlzcGxheSA9IG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRpbnB1dGRldmljZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlu cHV0ZGV2aWNlLmNwcAoraW5kZXggNjEzZmU4NjIuLjRiOTBkZTg0IDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwCitAQCAtNjg1LDYgKzY4NSwxMSBA QCBwdWJsaWM6CisgCisgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2ludGVyOjpwb2ludGVy X2xlYXZlKHVpbnQzMl90IHRpbWUsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlKQorIHsKKysg ICAgaW52YWxpZGF0ZUZvY3VzKCk7CisrICAgIG1CdXR0b25zID0gUXQ6Ok5vQnV0dG9uOworKwor KyAgICBtUGFyZW50LT5tVGltZSA9IHRpbWU7CisrCisgICAgIC8vIFRoZSBldmVudCBtYXkgYXJy aXZlIGFmdGVyIGRlc3Ryb3lpbmcgdGhlIHdpbmRvdywgaW5kaWNhdGVkIGJ5CisgICAgIC8vIGEg bnVsbCBzdXJmYWNlLgorICAgICBpZiAoIXN1cmZhY2UpCitAQCAtNjk2LDExICs3MDEsNiBAQCB2 b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVhdmUodWludDMyX3Qg dGltZSwgc3RydWN0IHdsX3N1cmZhYworIAorICAgICBpZiAoIVFXYXlsYW5kV2luZG93Ojptb3Vz ZUdyYWIoKSkKKyAgICAgICAgIHNldEZyYW1lRXZlbnQobmV3IExlYXZlRXZlbnQod2luZG93LCBt U3VyZmFjZVBvcywgbUdsb2JhbFBvcykpOworLQorLSAgICBpbnZhbGlkYXRlRm9jdXMoKTsKKy0g ICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CistCistICAgIG1QYXJlbnQtPm1UaW1lID0gdGlt ZTsKKyB9CisgCisgY2xhc3MgTW90aW9uRXZlbnQgOiBwdWJsaWMgUVdheWxhbmRQb2ludGVyRXZl bnQKK0BAIC0xMzAwLDE0ICsxMzAwLDYgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpLZXli b2FyZDo6aGFuZGxlRm9jdXNEZXN0cm95ZWQoKQorIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6 S2V5Ym9hcmQ6OmhhbmRsZUZvY3VzTG9zdCgpCisgeworICAgICBtRm9jdXMgPSBudWxscHRyOwor LSNpZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorLSAgICBpZiAoYXV0byAqZGF0YURldmljZSA9IG1Q YXJlbnQtPmRhdGFEZXZpY2UoKSkKKy0gICAgICAgIGRhdGFEZXZpY2UtPmludmFsaWRhdGVTZWxl Y3Rpb25PZmZlcigpOworLSNlbmRpZgorLSNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJp bWFyeV9zZWxlY3Rpb24pCistICAgIGlmIChhdXRvICpkZXZpY2UgPSBtUGFyZW50LT5wcmltYXJ5 U2VsZWN0aW9uRGV2aWNlKCkpCistICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25P ZmZlcigpOworLSNlbmRpZgorICAgICBtUGFyZW50LT5tUURpc3BsYXktPmhhbmRsZUtleWJvYXJk Rm9jdXNDaGFuZ2VkKG1QYXJlbnQpOworICAgICBtUmVwZWF0VGltZXIuc3RvcCgpOworIH0KK0BA IC0xMzk2LDYgKzEzODgsNyBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlRvdWNoOjp0b3Vj aF9jYW5jZWwoKQorICAgICBpZiAodG91Y2hFeHQpCisgICAgICAgICB0b3VjaEV4dC0+dG91Y2hD YW5jZWxlZCgpOworIAorKyAgICBtRm9jdXMgPSBudWxscHRyOworICAgICBRV2luZG93U3lzdGVt SW50ZXJmYWNlOjpoYW5kbGVUb3VjaENhbmNlbEV2ZW50KG51bGxwdHIsIG1QYXJlbnQtPm1Ub3Vj aERldmljZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kaW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3Jh dGlvbi5jcHAKK2luZGV4IGM1M2NjYjc4Li41NDg2MTYwMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAorQEAgLTEyNSw2ICsxMjUsOSBAQCBRV2F5 bGFuZEludGVncmF0aW9uOjpRV2F5bGFuZEludGVncmF0aW9uKCkKKyAjZW5kaWYKKyAKKyAgICAg cmVjb25maWd1cmVJbnB1dENvbnRleHQoKTsKKysKKysgICAgUVdheWxhbmRXaW5kb3c6OmZpeGVk VG9wbGV2ZWxQb3NpdGlvbnMgPQorKyAgICAgICAgICAgICFxRW52aXJvbm1lbnRWYXJpYWJsZUlz U2V0KCJRVF9XQVlMQU5EX0RJU0FCTEVfRklYRURfUE9TSVRJT05TIik7CisgfQorIAorIFFXYXls YW5kSW50ZWdyYXRpb246On5RV2F5bGFuZEludGVncmF0aW9uKCkKK0BAIC0xOTIsMTQgKzE5NSwx OCBAQCBRQWJzdHJhY3RFdmVudERpc3BhdGNoZXIgKlFXYXlsYW5kSW50ZWdyYXRpb246OmNyZWF0 ZUV2ZW50RGlzcGF0Y2hlcigpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZEludGVncmF0aW9uOjpp bml0aWFsaXplKCkKKyB7CisrICAgIG1EaXNwbGF5LT5pbml0RXZlbnRUaHJlYWQoKTsKKysKKysg ICAgLy8gQ2FsbCBhZnRlciBldmVudERpc3BhdGNoZXIgaXMgZnVsbHkgY29ubmVjdGVkLCBmb3Ig UVdheWxhbmREaXNwbGF5Ojpmb3JjZVJvdW5kVHJpcCgpCisrICAgIG1EaXNwbGF5LT5pbml0aWFs aXplKCk7CisrCisrICAgIC8vIEJ1dCB0aGUgYWJvdXRUb0Jsb2NrKCkgYW5kIGF3YWtlKCkgc2hv dWxkIGJlIGNvbm5lY3RlZCBhZnRlciBpbml0aWFsaXplUGxhdGZvcm0oKS4KKysgICAgLy8gT3Ro ZXJ3aXNlIHRoZSBjb25uZWN0ZWQgZmx1c2hSZXF1ZXN0cygpIG1heSBjb25zdW1lcyB1cCBhbGwg ZXZlbnRzIGJlZm9yZSBwcm9jZXNzRXZlbnRzIHN0YXJ0cyB0byB3YWl0LAorKyAgICAvLyBzbyB0 aGF0IHByb2Nlc3NFdmVudHMoUUV2ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMpIG1heSBiZSBi bG9ja2VkIGluIHRoZSBmb3JjZVJvdW5kVHJpcCgpLgorICAgICBRQWJzdHJhY3RFdmVudERpc3Bh dGNoZXIgKmRpc3BhdGNoZXIgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpldmVudERpc3BhdGNo ZXI7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZGlzcGF0Y2hlciwgU0lHTkFMKGFib3V0VG9CbG9j aygpKSwgbURpc3BsYXkuZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworICAgICBRT2Jq ZWN0Ojpjb25uZWN0KGRpc3BhdGNoZXIsIFNJR05BTChhd2FrZSgpKSwgbURpc3BsYXkuZGF0YSgp LCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworIAorLSAgICBpbnQgZmQgPSB3bF9kaXNwbGF5X2dl dF9mZChtRGlzcGxheS0+d2xfZGlzcGxheSgpKTsKKy0gICAgUVNvY2tldE5vdGlmaWVyICpzbiA9 IG5ldyBRU29ja2V0Tm90aWZpZXIoZmQsIFFTb2NrZXROb3RpZmllcjo6UmVhZCwgbURpc3BsYXku ZGF0YSgpKTsKKy0gICAgUU9iamVjdDo6Y29ubmVjdChzbiwgU0lHTkFMKGFjdGl2YXRlZChRU29j a2V0RGVzY3JpcHRvcikpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7 CistCisgICAgIC8vIFF0IGRvZXMgbm90IHN1cHBvcnQgcnVubmluZyB3aXRoIG5vIHNjcmVlbnMK KyAgICAgbURpc3BsYXktPmVuc3VyZVNjcmVlbigpOworIH0KK0BAIC0yNjIsNiArMjY5LDE0IEBA IFFXYXlsYW5kRGlzcGxheSAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6ZGlzcGxheSgpIGNvbnN0Cisg ICAgIHJldHVybiBtRGlzcGxheS5kYXRhKCk7CisgfQorIAorK1F0OjpLZXlib2FyZE1vZGlmaWVy cyBRV2F5bGFuZEludGVncmF0aW9uOjpxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkgY29uc3QKKyt7 CisrICAgIGlmIChhdXRvICpzZWF0ID0gbURpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpKSB7 CisrICAgICAgICByZXR1cm4gc2VhdC0+bW9kaWZpZXJzKCk7CisrICAgIH0KKysgICAgcmV0dXJu IFF0OjpOb01vZGlmaWVyOworK30KKysKKyBRTGlzdDxpbnQ+IFFXYXlsYW5kSW50ZWdyYXRpb246 OnBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdAorIHsKKyAgICAgaWYg KGF1dG8gKnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpCitAQCAtNDc5LDcg KzQ5NCw3IEBAIHZvaWQgUVdheWxhbmRJbnRlZ3JhdGlvbjo6cmVjb25maWd1cmVJbnB1dENvbnRl eHQoKQorICAgICB9CisgI2VuZGlmCisgCistICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAi dXNpbmcgaW5wdXQgbWV0aG9kOiIgPDwgaW5wdXRDb250ZXh0KCktPm1ldGFPYmplY3QoKS0+Y2xh c3NOYW1lKCk7CisrICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAidXNpbmcgaW5wdXQgbWV0 aG9kOiIgPDwgKGlucHV0Q29udGV4dCgpID8gaW5wdXRDb250ZXh0KCktPm1ldGFPYmplY3QoKS0+ Y2xhc3NOYW1lKCkgOiAiPG5vbmU+Iik7CisgfQorIAorIFFXYXlsYW5kU2hlbGxJbnRlZ3JhdGlv biAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxJbnRlZ3JhdGlvbihjb25zdCBRU3Ry aW5nICZpbnRlZ3JhdGlvbk5hbWUpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlu dGVncmF0aW9uX3AuaAoraW5kZXggZmY3MGFlMjUuLjczYjgwNjU4IDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oCitAQCAtMTA3LDYgKzEwNyw4IEBA IHB1YmxpYzoKKyAKKyAgICAgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KCkgY29uc3Q7CisgCisr ICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkgY29uc3Qg b3ZlcnJpZGU7CisrCisgICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVu dCAqZXZlbnQpIGNvbnN0IG92ZXJyaWRlOworIAorICAgICBRU3RyaW5nTGlzdCB0aGVtZU5hbWVz KCkgY29uc3Qgb3ZlcnJpZGU7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCitpbmRleCA4MzJmOTY3OC4uZWE1MDg3NzEgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5j cHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYx LmNwcAorQEAgLTU0LDExICs1NCw2IEBAIFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1h bmFnZXJWMTo6UVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxCisgICAgIDog endwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxKGRpc3BsYXktPndsX3JlZ2lz dHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIHVpbnQoMSkpKQorICAgICAsIG1fZGlzcGxheShkaXNw bGF5KQorIHsKKy0gICAgLy8gQ3JlYXRlIGRldmljZXMgZm9yIGFsbCBzZWF0cy4KKy0gICAgLy8g VGhpcyBvbmx5IHdvcmtzIGlmIHdlIGdldCB0aGUgZ2xvYmFsIGJlZm9yZSBhbGwgZGV2aWNlcwor LSAgICBjb25zdCBhdXRvIHNlYXRzID0gbV9kaXNwbGF5LT5pbnB1dERldmljZXMoKTsKKy0gICAg Zm9yIChhdXRvICpzZWF0IDogc2VhdHMpCistICAgICAgICBzZWF0LT5zZXRQcmltYXJ5U2VsZWN0 aW9uRGV2aWNlKGNyZWF0ZURldmljZShzZWF0KSk7CisgfQorIAorIFFXYXlsYW5kUHJpbWFyeVNl bGVjdGlvbkRldmljZVYxICpRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjE6 OmNyZWF0ZURldmljZShRV2F5bGFuZElucHV0RGV2aWNlICpzZWF0KQorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kc2NyZWVuLmNwcAoraW5kZXggNmNiMzM3ZGUuLjU1MzdkYWZkIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCisrKysgYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKK0BAIC02MCw3ICs2MCw3IEBAIFFX YXlsYW5kWGRnT3V0cHV0TWFuYWdlclYxOjpRV2F5bGFuZFhkZ091dHB1dE1hbmFnZXJWMShRV2F5 bGFuZERpc3BsYXkqIGRpc3BsYXksCisgfQorIAorIFFXYXlsYW5kU2NyZWVuOjpRV2F5bGFuZFNj cmVlbihRV2F5bGFuZERpc3BsYXkgKndheWxhbmREaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWludDMy X3QgaWQpCistICAgIDogUXRXYXlsYW5kOjp3bF9vdXRwdXQod2F5bGFuZERpc3BsYXktPndsX3Jl Z2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDIpKQorKyAgICA6IFF0V2F5bGFuZDo6d2xfb3V0 cHV0KHdheWxhbmREaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAzKSkK KyAgICAgLCBtX291dHB1dElkKGlkKQorICAgICAsIG1XYXlsYW5kRGlzcGxheSh3YXlsYW5kRGlz cGxheSkKKyAgICAgLCBtT3V0cHV0TmFtZShRU3RyaW5nTGl0ZXJhbCgiU2NyZWVuJTEiKS5hcmco aWQpKQorQEAgLTcyLDcgKzcyLDcgQEAgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5kU2NyZWVuKFFX YXlsYW5kRGlzcGxheSAqd2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW4KKyAgICAgICAg IHFDV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ3bF9vdXRwdXQgZG9uZSBldmVudCBub3Qgc3Vw cG9ydGVkIGJ5IGNvbXBvc2l0b3IsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PDwgIlFTY3JlZW4gbWF5IG5vdCB3b3JrIGNvcnJlY3RseSI7CisgICAgICAgICBtV2F5bGFuZERp c3BsYXktPmZvcmNlUm91bmRUcmlwKCk7IC8vIEdpdmUgdGhlIGNvbXBvc2l0b3IgYSBjaGFuY2Ug dG8gc2VuZCBnZW9tZXRyeSBldGMuCistICAgICAgICBtT3V0cHV0RG9uZSA9IHRydWU7IC8vIEZh a2UgdGhlIGRvbmUgZXZlbnQKKysgICAgICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gT3V0cHV0RG9u ZUV2ZW50OyAvLyBGYWtlIHRoZSBkb25lIGV2ZW50CisgICAgICAgICBtYXliZUluaXRpYWxpemUo KTsKKyAgICAgfQorIH0KK0BAIC04MSwxNiArODEsMjkgQEAgUVdheWxhbmRTY3JlZW46On5RV2F5 bGFuZFNjcmVlbigpCisgeworICAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQo KSkKKyAgICAgICAgIHp4ZGdfb3V0cHV0X3YxOjpkZXN0cm95KCk7CisrICAgIGlmICh3bF9vdXRw dXQ6OmlzSW5pdGlhbGl6ZWQoKSAmJiB3bF9vdXRwdXRfZ2V0X3ZlcnNpb24od2xfb3V0cHV0Ojpv YmplY3QoKSkgPj0gV0xfT1VUUFVUX1JFTEVBU0VfU0lOQ0VfVkVSU0lPTikKKysgICAgICAgIHds X291dHB1dDo6cmVsZWFzZSgpOworK30KKysKKyt1aW50IFFXYXlsYW5kU2NyZWVuOjpyZXF1aXJl ZEV2ZW50cygpIGNvbnN0CisreworKyAgICB1aW50IHJldCA9IE91dHB1dERvbmVFdmVudDsKKysK KysgICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpKSB7CisrICAgICAg ICByZXQgfD0gWGRnT3V0cHV0TmFtZUV2ZW50OworKworKyAgICAgICAgaWYgKG1XYXlsYW5kRGlz cGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9uKCkgPCAzKQorKyAgICAgICAgICAgIHJl dCB8PSBYZGdPdXRwdXREb25lRXZlbnQ7CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyB9Cisg Cisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6bWF5YmVJbml0aWFsaXplKCkKKyB7CisgICAgIFFfQVNT RVJUKCFtSW5pdGlhbGl6ZWQpOworIAorLSAgICBpZiAoIW1PdXRwdXREb25lKQorLSAgICAgICAg cmV0dXJuOworLQorLSAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkg JiYgIW1YZGdPdXRwdXREb25lKQorKyAgICBjb25zdCB1aW50IHJlcXVpcmVkRXZlbnRzID0gdGhp cy0+cmVxdWlyZWRFdmVudHMoKTsKKysgICAgaWYgKChtUHJvY2Vzc2VkRXZlbnRzICYgcmVxdWly ZWRFdmVudHMpICE9IHJlcXVpcmVkRXZlbnRzKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBt SW5pdGlhbGl6ZWQgPSB0cnVlOworQEAgLTI3Niw5ICsyODksOCBAQCB2b2lkIFFXYXlsYW5kU2Ny ZWVuOjpvdXRwdXRfc2NhbGUoaW50MzJfdCBmYWN0b3IpCisgCisgdm9pZCBRV2F5bGFuZFNjcmVl bjo6b3V0cHV0X2RvbmUoKQorIHsKKy0gICAgbU91dHB1dERvbmUgPSB0cnVlOworLSAgICBpZiAo enhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSAmJiBtV2F5bGFuZERpc3BsYXktPnhkZ091 dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpID49IDMpCistICAgICAgICBtWGRnT3V0cHV0RG9uZSA9 IHRydWU7CisrICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gT3V0cHV0RG9uZUV2ZW50OworKworICAg ICBpZiAobUluaXRpYWxpemVkKSB7CisgICAgICAgICB1cGRhdGVPdXRwdXRQcm9wZXJ0aWVzKCk7 CisgICAgICAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSkKK0BAIC0zMzks NyArMzUxLDcgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfZG9uZSgpCisg ICAgIGlmIChRX1VOTElLRUxZKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52 ZXJzaW9uKCkgPj0gMykpCisgICAgICAgICBxV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ6eGRn X291dHB1dF92MS5kb25lIHJlY2VpdmVkIG9uIHZlcnNpb24gMyBvciBuZXdlciwgdGhpcyBpcyBt b3N0IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRvciI7CisgCistICAgIG1YZGdPdXRwdXRE b25lID0gdHJ1ZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBYZGdPdXRwdXREb25lRXZlbnQ7 CisgICAgIGlmIChtSW5pdGlhbGl6ZWQpCisgICAgICAgICB1cGRhdGVYZGdPdXRwdXRQcm9wZXJ0 aWVzKCk7CisgICAgIGVsc2UKK0BAIC0zNDgsNyArMzYwLDExIEBAIHZvaWQgUVdheWxhbmRTY3Jl ZW46Onp4ZGdfb3V0cHV0X3YxX2RvbmUoKQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Onp4ZGdf b3V0cHV0X3YxX25hbWUoY29uc3QgUVN0cmluZyAmbmFtZSkKKyB7CisrICAgIGlmIChRX1VOTElL RUxZKG1Jbml0aWFsaXplZCkpCisrICAgICAgICBxV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ6 eGRnX291dHB1dF92MS5uYW1lIHJlY2VpdmVkIGFmdGVyIG91dHB1dCBoYXMgYmVlbiBpbml0aWFs aXplZCwgdGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRvciI7CisrCisg ICAgIG1PdXRwdXROYW1lID0gbmFtZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBYZGdPdXRw dXROYW1lRXZlbnQ7CisgfQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46OnVwZGF0ZVhkZ091dHB1 dFByb3BlcnRpZXMoKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k c2NyZWVuX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAoraW5k ZXggZGYxYzk0ZjIuLjA1MGNmZGMwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRzY3JlZW5fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNj cmVlbl9wLmgKK0BAIC0xMTYsNiArMTE2LDEzIEBAIHB1YmxpYzoKKyAgICAgc3RhdGljIFFXYXls YW5kU2NyZWVuICpmcm9tV2xPdXRwdXQoOjp3bF9vdXRwdXQgKm91dHB1dCk7CisgCisgcHJpdmF0 ZToKKysgICAgZW51bSBFdmVudCA6IHVpbnQgeworKyAgICAgICAgWGRnT3V0cHV0RG9uZUV2ZW50 ID0gMHgxLAorKyAgICAgICAgT3V0cHV0RG9uZUV2ZW50ID0gMHgyLAorKyAgICAgICAgWGRnT3V0 cHV0TmFtZUV2ZW50ID0gMHg0LAorKyAgICB9OworKyAgICB1aW50IHJlcXVpcmVkRXZlbnRzKCkg Y29uc3Q7CisrCisgICAgIHZvaWQgb3V0cHV0X21vZGUodWludDMyX3QgZmxhZ3MsIGludCB3aWR0 aCwgaW50IGhlaWdodCwgaW50IHJlZnJlc2gpIG92ZXJyaWRlOworICAgICB2b2lkIG91dHB1dF9n ZW9tZXRyeShpbnQzMl90IHgsIGludDMyX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsCitAQCAtMTQ4LDggKzE1NSw3IEBAIHByaXZh dGU6CisgICAgIFFTaXplIG1QaHlzaWNhbFNpemU7CisgICAgIFFTdHJpbmcgbU91dHB1dE5hbWU7 CisgICAgIFF0OjpTY3JlZW5PcmllbnRhdGlvbiBtX29yaWVudGF0aW9uID0gUXQ6OlByaW1hcnlP cmllbnRhdGlvbjsKKy0gICAgYm9vbCBtT3V0cHV0RG9uZSA9IGZhbHNlOworLSAgICBib29sIG1Y ZGdPdXRwdXREb25lID0gZmFsc2U7CisrICAgIHVpbnQgbVByb2Nlc3NlZEV2ZW50cyA9IDA7Cisg ICAgIGJvb2wgbUluaXRpYWxpemVkID0gZmFsc2U7CisgCisgI2lmIFFUX0NPTkZJRyhjdXJzb3Ip CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3Rv cmUuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3Bw CitpbmRleCBkYzdmZjY3MC4uNDFjZmZkZjcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAorQEAgLTUyLDYgKzUyLDcgQEAKKyAKKyAj aW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13YXlsYW5kLWNsaWVudC1w cm90b2NvbC5oPgorIAorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4K KyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAKK0BAIC02MSw2ICs2Miw5IEBACisgIyAgaWZuZGVm IE1GRF9DTE9FWEVDCisgIyAgICBkZWZpbmUgTUZEX0NMT0VYRUMgICAgIDB4MDAwMVUKKyAjICBl bmRpZgorKyMgIGlmbmRlZiBNRkRfQUxMT1dfU0VBTElORworKyMgICAgZGVmaW5lIE1GRF9BTExP V19TRUFMSU5HIDB4MDAwMlUKKysjICBlbmRpZgorICNlbmRpZgorIAorIFFUX0JFR0lOX05BTUVT UEFDRQorQEAgLTc0LDggKzc4LDEwIEBAIFFXYXlsYW5kU2htQnVmZmVyOjpRV2F5bGFuZFNobUJ1 ZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksCisgICAgIGludCBhbGxvYyA9IHN0cmlkZSAq IHNpemUuaGVpZ2h0KCk7CisgICAgIGludCBmZCA9IC0xOworIAorLSNpZmRlZiBTWVNfbWVtZmRf Y3JlYXRlCistICAgIGZkID0gc3lzY2FsbChTWVNfbWVtZmRfY3JlYXRlLCAid2F5bGFuZC1zaG0i LCBNRkRfQ0xPRVhFQyk7CisrI2lmIGRlZmluZWQoU1lTX21lbWZkX2NyZWF0ZSkgJiYgZGVmaW5l ZChGX1NFQUxfU0VBTCkKKysgICAgZmQgPSBzeXNjYWxsKFNZU19tZW1mZF9jcmVhdGUsICJ3YXls YW5kLXNobSIsIE1GRF9DTE9FWEVDIHwgTUZEX0FMTE9XX1NFQUxJTkcpOworKyAgICBpZiAoZmQg Pj0gMCkKKysgICAgICAgIGZjbnRsKGZkLCBGX0FERF9TRUFMUywgRl9TRUFMX1NIUklOSyB8IEZf U0VBTF9TRUFMKTsKKyAjZW5kaWYKKyAKKyAgICAgUVNjb3BlZFBvaW50ZXI8UUZpbGU+IGZpbGVQ b2ludGVyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93 LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAoraW5kZXggY2I4 Mjg1N2EuLmZiMmM1OWRjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmR3aW5kb3cuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5j cHAKK0BAIC03Niw3ICs3Niw2IEBAIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdpbmRvdzo6bU1v dXNlR3JhYiA9IG51bGxwdHI7CisgUVdheWxhbmRXaW5kb3c6OlFXYXlsYW5kV2luZG93KFFXaW5k b3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KQorICAgICA6IFFQbGF0Zm9ybVdp bmRvdyh3aW5kb3cpCisgICAgICwgbURpc3BsYXkoZGlzcGxheSkKKy0gICAgLCBtRnJhbWVRdWV1 ZShtRGlzcGxheS0+Y3JlYXRlRnJhbWVRdWV1ZSgpKQorICAgICAsIG1SZXNpemVBZnRlclN3YXAo cUVudmlyb25tZW50VmFyaWFibGVJc1NldCgiUVRfV0FZTEFORF9SRVNJWkVfQUZURVJfU1dBUCIp KQorIHsKKyAgICAgeworQEAgLTk1LDkgKzk0LDYgQEAgUVdheWxhbmRXaW5kb3c6OlFXYXlsYW5k V2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KQorIAorIFFX YXlsYW5kV2luZG93Ojp+UVdheWxhbmRXaW5kb3coKQorIHsKKy0gICAgbURpc3BsYXktPmRlc3Ry b3lGcmFtZVF1ZXVlKG1GcmFtZVF1ZXVlKTsKKy0gICAgbURpc3BsYXktPmhhbmRsZVdpbmRvd0Rl c3Ryb3llZCh0aGlzKTsKKy0KKyAgICAgZGVsZXRlIG1XaW5kb3dEZWNvcmF0aW9uOworIAorICAg ICBpZiAobVN1cmZhY2UpCitAQCAtMjQzLDYgKzIzOSw3IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6 OnNob3VsZENyZWF0ZVN1YlN1cmZhY2UoKSBjb25zdAorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6 OnJlc2V0KCkKKyB7CisrICAgIGNsb3NlQ2hpbGRQb3B1cHMoKTsKKyAgICAgZGVsZXRlIG1TaGVs bFN1cmZhY2U7CisgICAgIG1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBkZWxldGUgbVN1 YlN1cmZhY2VXaW5kb3c7CitAQCAtMjU1LDE3ICsyNTIsMjIgQEAgdm9pZCBRV2F5bGFuZFdpbmRv dzo6cmVzZXQoKQorICAgICAgICAgbVN1cmZhY2UucmVzZXQoKTsKKyAgICAgfQorIAorLSAgICBp ZiAobUZyYW1lQ2FsbGJhY2spIHsKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1l Q2FsbGJhY2spOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICB9Cisr ICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAg ICAgICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CisrICAgICAgICAgICAgd2xfY2FsbGJhY2tfZGVz dHJveShtRnJhbWVDYWxsYmFjayk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxs cHRyOworKyAgICAgICAgfQorIAorLSAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZh bGlkYXRlKCk7CistICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworKyAgICAg ICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworKyAgICAgICAgbVdh aXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisrICAgIH0KKyAgICAgbUZyYW1lQ2FsbGJh Y2tUaW1lZE91dCA9IGZhbHNlOworIAorICAgICBtTWFzayA9IFFSZWdpb24oKTsKKyAgICAgbVF1 ZXVlZEJ1ZmZlciA9IG51bGxwdHI7CisrCisrICAgIG1EaXNwbGF5LT5oYW5kbGVXaW5kb3dEZXN0 cm95ZWQodGhpcyk7CisgfQorIAorIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdpbmRvdzo6ZnJv bVdsU3VyZmFjZSg6OndsX3N1cmZhY2UgKnN1cmZhY2UpCitAQCAtMzUxLDE5ICszNTMsMjUgQEAg dm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnlfaGVscGVyKGNvbnN0IFFSZWN0ICZyZWN0 KQorICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0 IFFSZWN0ICZyZWN0KQorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFS ZWN0ICZyKQorIHsKKysgICAgYXV0byByZWN0ID0gcjsKKysgICAgaWYgKGZpeGVkVG9wbGV2ZWxQ b3NpdGlvbnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93KCktPnR5cGUo KSAhPSBRdDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlRvb2xU aXApIHsKKysgICAgICAgIHJlY3QubW92ZVRvKHNjcmVlbigpLT5nZW9tZXRyeSgpLnRvcExlZnQo KSk7CisrICAgIH0KKyAgICAgc2V0R2VvbWV0cnlfaGVscGVyKHJlY3QpOworIAorICAgICBpZiAo d2luZG93KCktPmlzVmlzaWJsZSgpICYmIHJlY3QuaXNWYWxpZCgpKSB7CisgICAgICAgICBpZiAo bVdpbmRvd0RlY29yYXRpb24pCisgICAgICAgICAgICAgbVdpbmRvd0RlY29yYXRpb24tPnVwZGF0 ZSgpOworIAorLSAgICAgICAgaWYgKG1SZXNpemVBZnRlclN3YXAgJiYgd2luZG93VHlwZSgpID09 IEVnbCAmJiBtU2VudEluaXRpYWxSZXNpemUpCisrICAgICAgICBpZiAobVJlc2l6ZUFmdGVyU3dh cCAmJiB3aW5kb3dUeXBlKCkgPT0gRWdsICYmIG1TZW50SW5pdGlhbFJlc2l6ZSkgeworKyAgICAg ICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtUmVzaXplTG9jayk7CisgICAgICAgICAgICAgbVJl c2l6ZURpcnR5ID0gdHJ1ZTsKKy0gICAgICAgIGVsc2UKKysgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlR2VvbWV0cnlDaGFuZ2Uod2lu ZG93KCksIGdlb21ldHJ5KCkpOworLQorKyAgICAgICAgfQorICAgICAgICAgbVNlbnRJbml0aWFs UmVzaXplID0gdHJ1ZTsKKyAgICAgfQorICAgICBRUmVjdCBleHBvc2VHZW9tZXRyeShRUG9pbnQo KSwgZ2VvbWV0cnkoKS5zaXplKCkpOworQEAgLTM3NCw3ICszODIsNyBAQCB2b2lkIFFXYXlsYW5k V2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgICAgIG1TaGVsbFN1 cmZhY2UtPnNldFdpbmRvd0dlb21ldHJ5KHdpbmRvd0NvbnRlbnRHZW9tZXRyeSgpKTsKKyAKKyAg ICAgaWYgKGlzT3BhcXVlKCkgJiYgbU1hc2suaXNFbXB0eSgpKQorLSAgICAgICAgc2V0T3BhcXVl QXJlYShyZWN0KTsKKysgICAgICAgIHNldE9wYXF1ZUFyZWEoUVJlY3QoUVBvaW50KDAsIDApLCBy ZWN0LnNpemUoKSkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNpemVGcm9tQXBw bHlDb25maWd1cmUoY29uc3QgUVNpemUgJnNpemVXaXRoTWFyZ2lucywgY29uc3QgUVBvaW50ICZv ZmZzZXQpCitAQCAtMzk5LDIxICs0MDcsNiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZW5kRXhw b3NlRXZlbnQoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIG1MYXN0RXhwb3NlR2VvbWV0cnkgPSBy ZWN0OworIH0KKyAKKy0KKy1zdGF0aWMgUVZlY3RvcjxRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4+ IGFjdGl2ZVBvcHVwczsKKy0KKy12b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZVBvcHVwcyhRV2F5 bGFuZFdpbmRvdyAqcGFyZW50KQorLXsKKy0gICAgd2hpbGUgKCFhY3RpdmVQb3B1cHMuaXNFbXB0 eSgpKSB7CistICAgICAgICBhdXRvIHBvcHVwID0gYWN0aXZlUG9wdXBzLnRha2VMYXN0KCk7Cist ICAgICAgICBpZiAocG9wdXAuaXNOdWxsKCkpCistICAgICAgICAgICAgY29udGludWU7CistICAg ICAgICBpZiAocG9wdXAuZGF0YSgpID09IHBhcmVudCkKKy0gICAgICAgICAgICByZXR1cm47Cist ICAgICAgICBwb3B1cC0+cmVzZXQoKTsKKy0gICAgfQorLX0KKy0KKyBRUGxhdGZvcm1TY3JlZW4g KlFXYXlsYW5kV2luZG93OjpjYWxjdWxhdGVTY3JlZW5Gcm9tU3VyZmFjZUV2ZW50cygpIGNvbnN0 CisgeworICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworQEAgLTQzMywxMCAr NDI2LDcgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisg ICAgIGxhc3RWaXNpYmxlID0gdmlzaWJsZTsKKyAKKyAgICAgaWYgKHZpc2libGUpIHsKKy0gICAg ICAgIGlmICh3aW5kb3coKS0+dHlwZSgpID09IFF0OjpQb3B1cCB8fCB3aW5kb3coKS0+dHlwZSgp ID09IFF0OjpUb29sVGlwKQorLSAgICAgICAgICAgIGFjdGl2ZVBvcHVwcyA8PCB0aGlzOworICAg ICAgICAgaW5pdFdpbmRvdygpOworLSAgICAgICAgbURpc3BsYXktPmZsdXNoUmVxdWVzdHMoKTsK KyAKKyAgICAgICAgIHNldEdlb21ldHJ5KHdpbmRvd0dlb21ldHJ5KCkpOworICAgICAgICAgLy8g RG9uJ3QgZmx1c2ggdGhlIGV2ZW50cyBoZXJlLCBvciBlbHNlIHRoZSBuZXdseSB2aXNpYmxlIHdp bmRvdyBtYXkgc3RhcnQgZHJhd2luZywgYnV0IHNpbmNlCitAQCAtNDQ0LDcgKzQzNCw2IEBAIHZv aWQgUVdheWxhbmRXaW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQorICAgICAgICAgLy8g UVdheWxhbmRTaG1CYWNraW5nU3RvcmU6OmJlZ2luUGFpbnQoKS4KKyAgICAgfSBlbHNlIHsKKyAg ICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKy0gICAgICAgIGNsb3NlUG9wdXBzKHRo aXMpOworICAgICAgICAgcmVzZXQoKTsKKyAgICAgfQorIH0KK0BAIC01NTYsMTIgKzU0NSwxMiBA QCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZW5kUmVjdXJzaXZlRXhwb3NlRXZlbnQoKQorIAorIHZv aWQgUVdheWxhbmRXaW5kb3c6OmF0dGFjaChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBpbnQgeCwg aW50IHkpCisgeworLSAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQoKSk7CisgICAgIFFS ZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsKKyAgICAgaWYgKG1TdXJmYWNlID09IG51 bGxwdHIpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGlmIChidWZmZXIpIHsKKysgICAgICAg IFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgICAgIGhhbmRsZVVwZGF0ZSgp OworICAgICAgICAgYnVmZmVyLT5zZXRCdXN5KCk7CisgCitAQCAtNTgzLDcgKzU3MiwxMSBAQCB2 b2lkIFFXYXlsYW5kV2luZG93OjpkYW1hZ2UoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIGlmICht U3VyZmFjZSA9PSBudWxscHRyKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBtU3VyZmFjZS0+ ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsK KysgICAgY29uc3QgaW50IHMgPSBzY2FsZSgpOworKyAgICBpZiAobURpc3BsYXktPmNvbXBvc2l0 b3JWZXJzaW9uKCkgPj0gNCkKKysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2VfYnVmZmVyKHMgKiBy ZWN0LngoKSwgcyAqIHJlY3QueSgpLCBzICogcmVjdC53aWR0aCgpLCBzICogcmVjdC5oZWlnaHQo KSk7CisrICAgIGVsc2UKKysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3Qu eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5k V2luZG93OjpzYWZlQ29tbWl0KFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGNvbnN0IFFSZWdpb24g JmRhbWFnZSkKK0BAIC02MTksOCArNjEyLDE0IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmNvbW1p dChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBjb25zdCBRUmVnaW9uICZkYW1hZ2UpCisgICAgICAg ICByZXR1cm47CisgCisgICAgIGF0dGFjaE9mZnNldChidWZmZXIpOworLSAgICBmb3IgKGNvbnN0 IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCistICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgp LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAgaWYgKG1EaXNw bGF5LT5jb21wb3NpdG9yVmVyc2lvbigpID49IDQpIHsKKysgICAgICAgIGNvbnN0IGludCBzID0g c2NhbGUoKTsKKysgICAgICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkKKysgICAg ICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlX2J1ZmZlcihzICogcmVjdC54KCksIHMgKiByZWN0Lnko KSwgcyAqIHJlY3Qud2lkdGgoKSwgcyAqIHJlY3QuaGVpZ2h0KCkpOworKyAgICB9IGVsc2Ugewor KyAgICAgICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAgICAgICAgIG1T dXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVp Z2h0KCkpOworKyAgICB9CisgICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAg ICAgYnVmZmVyLT5zZXRDb21taXR0ZWQoKTsKKyAgICAgbVN1cmZhY2UtPmNvbW1pdCgpOworQEAg LTYzNSw0MiArNjM0LDUzIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmNvbW1pdCgpCisgCisgY29u c3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgUVdheWxhbmRXaW5kb3c6OmNhbGxiYWNrTGlzdGVuZXIg PSB7CisgICAgIFtdKHZvaWQgKmRhdGEsIHdsX2NhbGxiYWNrICpjYWxsYmFjaywgdWludDMyX3Qg dGltZSkgeworLSAgICAgICAgUV9VTlVTRUQoY2FsbGJhY2spOworICAgICAgICAgUV9VTlVTRUQo dGltZSk7CisgICAgICAgICBhdXRvICp3aW5kb3cgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZFdpbmRv dyo+KGRhdGEpOworLSAgICAgICAgd2luZG93LT5oYW5kbGVGcmFtZUNhbGxiYWNrKCk7CisrICAg ICAgICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soY2FsbGJhY2spOworICAgICB9CisgfTsK KyAKKy12b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNrKCkKKyt2b2lkIFFX YXlsYW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNrKHdsX2NhbGxiYWNrKiBjYWxsYmFjaykK KyB7CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAgIGlm ICghbUZyYW1lQ2FsbGJhY2spIHsKKysgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGNhbGxiYWNr IGlzIGFscmVhZHkgdW5zZXQgYnkgUVdheWxhbmRXaW5kb3c6OnJlc2V0LgorKyAgICAgICAgLy8g VGhlIHdsX2NhbGxiYWNrIG9iamVjdCB3aWxsIGJlIGRlc3Ryb3llZCB0aGVyZSB0b28uCisrICAg ICAgICByZXR1cm47CisrICAgIH0KKysgICAgUV9BU1NFUlQoY2FsbGJhY2sgPT0gbUZyYW1lQ2Fs bGJhY2spOworKyAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKysgICAgbUZyYW1l Q2FsbGJhY2sgPSBudWxscHRyOworKworICAgICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBm YWxzZTsKKyAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworIAor ICAgICAvLyBUaGUgcmVzdCBjYW4gd2FpdCB1bnRpbCB3ZSBjYW4gcnVuIGl0IG9uIHRoZSBjb3Jy ZWN0IHRocmVhZAorLSAgICBpZiAoIW1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkpIHsKKy0gICAg ICAgIGF1dG8gZG9IYW5kbGVFeHBvc2UgPSBbdGhpc10oKSB7CistICAgICAgICAgICAgYm9vbCB3 YXNFeHBvc2VkID0gaXNFeHBvc2VkKCk7CistICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tUaW1l ZE91dCA9IGZhbHNlOworLSAgICAgICAgICAgIGlmICghd2FzRXhwb3NlZCAmJiBpc0V4cG9zZWQo KSkgLy8gRGlkIHNldHRpbmcgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCBtYWtlIHRoZSB3aW5kb3cg ZXhwb3NlZD8KKy0gICAgICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgp LCBnZW9tZXRyeSgpLnNpemUoKSkpOworLSAgICAgICAgICAgIGlmICh3YXNFeHBvc2VkICYmIGhh c1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCistICAgICAgICAgICAgICAgIGRlbGl2ZXJVcGRhdGVS ZXF1ZXN0KCk7CistCistICAgICAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZh bHNlOworLSAgICAgICAgfTsKKysgICAgYXV0byBkb0hhbmRsZUV4cG9zZSA9IFt0aGlzXSgpIHsK KysgICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkuc3RvcmVSZWxlYXNlKGZhbHNlKTsK KysgICAgICAgIGJvb2wgd2FzRXhwb3NlZCA9IGlzRXhwb3NlZCgpOworKyAgICAgICAgbUZyYW1l Q2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOworKyAgICAgICAgaWYgKCF3YXNFeHBvc2VkICYmIGlz RXhwb3NlZCgpKSAvLyBEaWQgc2V0dGluZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0IG1ha2UgdGhl IHdpbmRvdyBleHBvc2VkPworKyAgICAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdChRUG9p bnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKysgICAgICAgIGlmICh3YXNFeHBvc2VkICYmIGhh c1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCisrICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVl c3QoKTsKKysgICAgfTsKKyAKKysgICAgaWYgKG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkudGVz dEFuZFNldEFjcXVpcmUoZmFsc2UsIHRydWUpKSB7CisgICAgICAgICAvLyBRdWV1ZWQgY29ubmVj dGlvbiwgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNhbGwgaGFuZGxlVXBkYXRlKCkgZnJvbSBpbnNp ZGUgd2FpdEZvckZyYW1lU3luYygpCisgICAgICAgICAvLyBpbiB0aGUgc2luZ2xlLXRocmVhZGVk IGNhc2UuCistICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gdHJ1ZTsKKyAgICAg ICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgZG9IYW5kbGVFeHBvc2UsIFF0OjpR dWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgfQorKworKyAgICBtRnJhbWVTeW5jV2FpdC5ub3RpZnlf YWxsKCk7CisgfQorIAorIGJvb2wgUVdheWxhbmRXaW5kb3c6OndhaXRGb3JGcmFtZVN5bmMoaW50 IHRpbWVvdXQpCisgeworLSAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKG1GcmFtZVF1ZXVlLm11dGV4 KTsKKy0gICAgbURpc3BsYXktPmRpc3BhdGNoUXVldWVXaGlsZShtRnJhbWVRdWV1ZS5xdWV1ZSwg WyZdKCkgeyByZXR1cm4gbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrOyB9LCB0aW1lb3V0KTsKKysg ICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysKKysgICAgUURlYWRs aW5lVGltZXIgZGVhZGxpbmUodGltZW91dCk7CisrICAgIHdoaWxlIChtV2FpdGluZ0ZvckZyYW1l Q2FsbGJhY2sgJiYgbUZyYW1lU3luY1dhaXQud2FpdCgmbUZyYW1lU3luY011dGV4LCBkZWFkbGlu ZSkpIHsgfQorIAorICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKSB7CisgICAgICAg ICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1l IGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7CitAQCAt ODY4LDYgKzg3OCwxNyBAQCBib29sIFFXYXlsYW5kV2luZG93OjpjcmVhdGVEZWNvcmF0aW9uKCkK KyAgICAgICAgICAgICBzdWJzdXJmLT5zZXRfcG9zaXRpb24ocG9zLngoKSArIG0ubGVmdCgpLCBw b3MueSgpICsgbS50b3AoKSk7CisgICAgICAgICB9CisgICAgICAgICBzZW5kRXhwb3NlRXZlbnQo UVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7CisrCisrICAgICAgICAvLyBUaGlz IGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBidWZmZXIgaXMgcmVjcmVhdGVkLCBidXQgc2lu Y2UKKysgICAgICAgIC8vIHRoZSBjb250ZW50IHJlY3QgcmVtYWlucyB0aGUgc2FtZSwgdGhlIHdp ZGdldHMgcmVtYWluIHRoZSBzYW1lCisrICAgICAgICAvLyBzaXplIGFuZCBhcmUgbm90IHJlZHJh d24sIGxlYXZpbmcgdGhlIG5ldyBidWZmZXIgZW1wdHkuIEFzIGEgc2ltcGxlCisrICAgICAgICAv LyB3b3JrLWFyb3VuZCwgd2UgdHJpZ2dlciBhIGZ1bGwgZXh0cmEgdXBkYXRlIHdoZW5ldmVyIHRo ZSBjbGllbnQtc2lkZQorKyAgICAgICAgLy8gd2luZG93IGRlY29yYXRpb25zIGFyZSB0b2dnbGVk IHdoaWxlIHRoZSB3aW5kb3cgaXMgc2hvd2luZy4KKysgICAgICAgIC8vIE5vdGU6IGNyZWF0ZURl Y29yYXRpb24oKSBpcyBzb21ldGltZXMgY2FsbGVkIGZyb20gdGhlIHJlbmRlciB0aHJlYWQKKysg ICAgICAgIC8vIG9mIFF0IFF1aWNrLiBUaGlzIGlzIGVzc2VudGlhbGx5IHdyb25nIGFuZCBjb3Vs ZCBwb3RlbnRpYWxseSBjYXVzZSBwcm9ibGVtcywKKysgICAgICAgIC8vIGJ1dCB1bnRpbCB0aGUg dW5kZXJseWluZyBpc3N1ZSBoYXMgYmVlbiBmaXhlZCwgd2UgaGF2ZSB0byB1c2UgaW52b2tlTWV0 aG9kKCkKKysgICAgICAgIC8vIGhlcmUgdG8gYXZvaWQgYXNzZXJ0cy4KKysgICAgICAgIFFNZXRh T2JqZWN0OjppbnZva2VNZXRob2Qod2luZG93KCksICZRV2luZG93OjpyZXF1ZXN0VXBkYXRlKTsK KyAgICAgfQorIAorICAgICByZXR1cm4gbVdpbmRvd0RlY29yYXRpb247CitAQCAtMTAyMyw2ICsx MDQ0LDEzIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVNjcmVlbnNDaGFuZ2VkKCkKKyAK KyAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U2NyZWVuQ2hhbmdlZCh3 aW5kb3coKSwgbmV3U2NyZWVuLT5RUGxhdGZvcm1TY3JlZW46OnNjcmVlbigpKTsKKyAgICAgbUxh c3RSZXBvcnRlZFNjcmVlbiA9IG5ld1NjcmVlbjsKKysgICAgaWYgKGZpeGVkVG9wbGV2ZWxQb3Np dGlvbnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93KCktPnR5cGUoKSAh PSBRdDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlRvb2xUaXAK KysgICAgICAgICYmIGdlb21ldHJ5KCkudG9wTGVmdCgpICE9IG5ld1NjcmVlbi0+Z2VvbWV0cnko KS50b3BMZWZ0KCkpIHsKKysgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSB0aGlzLT5nZW9tZXRyeSgp OworKyAgICAgICAgZ2VvbWV0cnkubW92ZVRvKG5ld1NjcmVlbi0+Z2VvbWV0cnkoKS50b3BMZWZ0 KCkpOworKyAgICAgICAgc2V0R2VvbWV0cnkoZ2VvbWV0cnkpOworKyAgICB9CisgCisgICAgIGlu dCBzY2FsZSA9IG5ld1NjcmVlbi0+aXNQbGFjZWhvbGRlcigpID8gMSA6IHN0YXRpY19jYXN0PFFX YXlsYW5kU2NyZWVuICo+KG5ld1NjcmVlbiktPnNjYWxlKCk7CisgICAgIGlmIChzY2FsZSAhPSBt U2NhbGUpIHsKK0BAIC0xMDk0LDEwICsxMTIyLDE4IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OnNl dE1vdXNlR3JhYkVuYWJsZWQoYm9vbCBncmFiKQorICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCisr UXQ6OldpbmRvd1N0YXRlcyBRV2F5bGFuZFdpbmRvdzo6d2luZG93U3RhdGVzKCkgY29uc3QKKyt7 CisrICAgIHJldHVybiBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzOworK30KKysKKyB2b2lkIFFX YXlsYW5kV2luZG93OjpoYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKFF0OjpXaW5kb3dTdGF0ZXMg c3RhdGVzKQorIHsKKyAgICAgY3JlYXRlRGVjb3JhdGlvbigpOworLSAgICBRV2luZG93U3lzdGVt SW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0YXRlcywgbUxh c3RSZXBvcnRlZFdpbmRvd1N0YXRlcyk7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzV2l0 aG91dEFjdGl2ZSA9IHN0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworKyAgICBRdDo6V2luZG93 U3RhdGVzIGxhc3RTdGF0ZXNXaXRob3V0QWN0aXZlID0gbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRl cyAmIH5RdDo6V2luZG93QWN0aXZlOworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k bGVXaW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0YXRlc1dpdGhvdXRBY3RpdmUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0U3Rh dGVzV2l0aG91dEFjdGl2ZSk7CisgICAgIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMgPSBzdGF0 ZXM7CisgfQorIAorQEAgLTExMzksMTkgKzExNzUsMjQgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6 dGltZXJFdmVudChRVGltZXJFdmVudCAqZXZlbnQpCisgICAgIGlmIChldmVudC0+dGltZXJJZCgp ICE9IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpCisgICAgICAgICByZXR1cm47 CisgCistICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGlyZWQgPSBtRnJhbWVDYWxsYmFja0VsYXBz ZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CistICAgIGlmICghbUZy YW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8IGNhbGxiYWNrVGltZXJFeHBpcmVk ICkgeworLSAgICAgICAga2lsbFRpbWVyKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVy SWQpOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOwor LSAgICB9CistICAgIGlmIChtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgJiYg Y2FsbGJhY2tUaW1lckV4cGlyZWQpIHsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRp bWVyLmludmFsaWRhdGUoKTsKKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1G cmFtZVN5bmNNdXRleCk7CisgCistICAgICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9y ZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91 bGQgbm93IGJlIGluZXhwb3NlZCI7CistICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0g dHJ1ZTsKKy0gICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7CistICAgICAgICBzZW5k RXhwb3NlRXZlbnQoUVJlY3QoKSk7CisrICAgICAgICBib29sIGNhbGxiYWNrVGltZXJFeHBpcmVk ID0gbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaGFzRXhwaXJlZChtRnJhbWVDYWxsYmFja1Rp bWVvdXQpOworKyAgICAgICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlk KCkgfHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7CisrICAgICAgICAgICAga2lsbFRpbWVyKG1G cmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpOworKyAgICAgICAgICAgIG1GcmFtZUNh bGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSAtMTsKKysgICAgICAgIH0KKysgICAgICAgIGlm ICghbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8ICFjYWxsYmFja1RpbWVy RXhwaXJlZCkgeworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgICAgIG1G cmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKyAgICAgfQorKworKyAgICBx Q0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNh bGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7CisrICAgIG1G cmFtZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVlOworKyAgICBtV2FpdGluZ0ZvclVwZGF0ZSA9IGZh bHNlOworKyAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7CisgfQorIAorIHZvaWQgUVdheWxh bmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorQEAgLTExNjAsOCArMTIwMSwxMSBAQCB2b2lkIFFX YXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyAgICAgUV9BU1NFUlQoaGFzUGVuZGluZ1Vw ZGF0ZVJlcXVlc3QoKSk7IC8vIHNob3VsZCBiZSBzZXQgYnkgUVBBCisgCisgICAgIC8vIElmIHdl IGhhdmUgYSBmcmFtZSBjYWxsYmFjayBhbGwgaXMgZ29vZCBhbmQgd2lsbCBiZSB0YWtlbiBjYXJl IG9mIHRoZXJlCistICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCistICAgICAgICBy ZXR1cm47CisrICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNN dXRleCk7CisrICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAg ICAgIHJldHVybjsKKysgICAgfQorIAorICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGNhbGxlZCBk ZWxpdmVyVXBkYXRlUmVxdWVzdCgpLCBidXQgaGF2ZW4ndCBzZWVuIGFueSBhdHRhY2grY29tbWl0 L3N3YXAgeWV0CisgICAgIC8vIFRoaXMgaXMgYSBzb21ld2hhdCByZWR1bmRhbnQgYmVoYXZpb3Ig YW5kIG1pZ2h0IGluZGljYXRlIGEgYnVnIGluIHRoZSBjYWxsaW5nIGNvZGUsIHNvIGxvZworQEAg LTExNzQsNyArMTIxOCwxMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkK KyAgICAgLy8gc28gdXNlIGludm9rZU1ldGhvZCB0byBkZWxheSB0aGUgZGVsaXZlcnkgYSBiaXQu CisgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdIHsKKyAgICAgICAg IC8vIFRoaW5ncyBtaWdodCBoYXZlIGNoYW5nZWQgaW4gdGhlIG1lYW50aW1lCistICAgICAgICBp ZiAoaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSAmJiAhbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNr KQorKyAgICAgICAgeworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5 bmNNdXRleCk7CisrICAgICAgICAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysg ICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGhhc1BlbmRp bmdVcGRhdGVSZXF1ZXN0KCkpCisgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsK KyAgICAgfSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworIH0KK0BAIC0xMTg1LDE5ICsxMjM0LDE4 IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorIHZvaWQgUVdheWxhbmRX aW5kb3c6OmhhbmRsZVVwZGF0ZSgpCisgeworICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdz dG9yZSkgPDwgImhhbmRsZVVwZGF0ZSIgPDwgUVRocmVhZDo6Y3VycmVudFRocmVhZCgpOworKwor ICAgICAvLyBUT0RPOiBTaG91bGQgc3luYyBzdWJzdXJmYWNlcyBhdm9pZCByZXF1ZXN0aW5nIGZy YW1lIGNhbGxiYWNrcz8KKyAgICAgUVJlYWRMb2NrZXIgbG9jaygmbVN1cmZhY2VMb2NrKTsKKyAg ICAgaWYgKCFtU3VyZmFjZSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1GcmFtZUNh bGxiYWNrKSB7CistICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsK Ky0gICAgICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKy0gICAgfQorKyAgICBRTXV0ZXhM b2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICBpZiAobVdhaXRpbmdGb3JGcmFt ZUNhbGxiYWNrKQorKyAgICAgICAgcmV0dXJuOworIAorLSAgICBRTXV0ZXhMb2NrZXIgbG9ja2Vy KG1GcmFtZVF1ZXVlLm11dGV4KTsKKyAgICAgc3RydWN0IDo6d2xfc3VyZmFjZSAqd3JhcHBlZFN1 cmZhY2UgPSByZWludGVycHJldF9jYXN0PHN0cnVjdCA6OndsX3N1cmZhY2UgKj4od2xfcHJveHlf Y3JlYXRlX3dyYXBwZXIobVN1cmZhY2UtPm9iamVjdCgpKSk7CistICAgIHdsX3Byb3h5X3NldF9x dWV1ZShyZWludGVycHJldF9jYXN0PHdsX3Byb3h5ICo+KHdyYXBwZWRTdXJmYWNlKSwgbUZyYW1l UXVldWUucXVldWUpOworKyAgICB3bF9wcm94eV9zZXRfcXVldWUocmVpbnRlcnByZXRfY2FzdDx3 bF9wcm94eSAqPih3cmFwcGVkU3VyZmFjZSksIG1EaXNwbGF5LT5mcmFtZUV2ZW50UXVldWUoKSk7 CisgICAgIG1GcmFtZUNhbGxiYWNrID0gd2xfc3VyZmFjZV9mcmFtZSh3cmFwcGVkU3VyZmFjZSk7 CisgICAgIHdsX3Byb3h5X3dyYXBwZXJfZGVzdHJveSh3cmFwcGVkU3VyZmFjZSk7CisgICAgIHds X2NhbGxiYWNrX2FkZF9saXN0ZW5lcihtRnJhbWVDYWxsYmFjaywgJlFXYXlsYW5kV2luZG93Ojpj YWxsYmFja0xpc3RlbmVyLCB0aGlzKTsKK0BAIC0xMjA3LDYgKzEyNTUsOCBAQCB2b2lkIFFXYXls YW5kV2luZG93OjpoYW5kbGVVcGRhdGUoKQorICAgICAvLyBTdGFydCBhIHRpbWVyIGZvciBoYW5k bGluZyB0aGUgY2FzZSB3aGVuIHRoZSBjb21wb3NpdG9yIHN0b3BzIHNlbmRpbmcgZnJhbWUgY2Fs bGJhY2tzLgorICAgICBpZiAobUZyYW1lQ2FsbGJhY2tUaW1lb3V0ID4gMCkgeworICAgICAgICAg UU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworKyAgICAgICAgICAgIFFN dXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrCisgICAgICAgICAgICAgaWYg KG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykgeworICAgICAgICAgICAgICAgICBpZiAobUZyYW1l Q2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA8IDApCisgICAgICAgICAgICAgICAgICAgICBt RnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gc3RhcnRUaW1lcihtRnJhbWVDYWxs YmFja1RpbWVvdXQpOworQEAgLTEyNjcsNiArMTMxNywyMCBAQCB2b2lkIFFXYXlsYW5kV2luZG93 OjpzZXRPcGFxdWVBcmVhKGNvbnN0IFFSZWdpb24gJm9wYXF1ZUFyZWEpCisgICAgIHdsX3JlZ2lv bl9kZXN0cm95KHJlZ2lvbik7CisgfQorIAorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmFkZENoaWxk UG9wdXAoUVdheWxhbmRXaW5kb3cgKnN1cmZhY2UpIHsKKysgICAgbUNoaWxkUG9wdXBzLmFwcGVu ZChzdXJmYWNlKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVtb3ZlQ2hpbGRQb3B1 cChRV2F5bGFuZFdpbmRvdyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMucmVtb3ZlQWxs KHN1cmZhY2UpOworK30KKysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZUNoaWxkUG9wdXBz KCkgeworKyAgICB3aGlsZSAoIW1DaGlsZFBvcHVwcy5pc0VtcHR5KCkpIHsKKysgICAgICAgIGF1 dG8gcG9wdXAgPSBtQ2hpbGRQb3B1cHMudGFrZUxhc3QoKTsKKysgICAgICAgIHBvcHVwLT5yZXNl dCgpOworKyAgICB9CisrfQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCitpbmRleCAwMTMzN2NmZi4uMmYyMTlkOGMgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgKKysrKyBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAorQEAgLTk4LDYgKzk4LDkgQEAg cHVibGljOgorICAgICBRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5kRGlz cGxheSAqZGlzcGxheSk7CisgICAgIH5RV2F5bGFuZFdpbmRvdygpIG92ZXJyaWRlOworIAorKyAg ICAvLyBLZWVwIFRvcGxldmVscyBwb3NpdGlvbiBvbiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRo ZWlyIHNjcmVlbgorKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgZml4ZWRUb3BsZXZlbFBvc2l0aW9u cyA9IHRydWU7CisrCisgICAgIHZpcnR1YWwgV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3Qg PSAwOworICAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlU2l6ZSgpOworICAgICBXSWQgd2luSWQoKSBj b25zdCBvdmVycmlkZTsKK0BAIC0xNDgsNiArMTUxLDcgQEAgcHVibGljOgorICAgICB2b2lkIHNl dFdpbmRvd1N0YXRlKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKSBvdmVycmlkZTsKKyAgICAgdm9p ZCBzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpIG92ZXJyaWRlOworICAgICB2 b2lkIGhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpOwor KyAgICBRdDo6V2luZG93U3RhdGVzIHdpbmRvd1N0YXRlcygpIGNvbnN0OworIAorICAgICB2b2lk IHJhaXNlKCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgbG93ZXIoKSBvdmVycmlkZTsKK0BAIC0yMDYs NiArMjEwLDEwIEBAIHB1YmxpYzoKKyAgICAgdm9pZCBoYW5kbGVVcGRhdGUoKTsKKyAgICAgdm9p ZCBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpIG92ZXJyaWRlOworIAorKyAgICB2b2lkIGFkZENoaWxk UG9wdXAoUVdheWxhbmRXaW5kb3cqIGNoaWxkKTsKKysgICAgdm9pZCByZW1vdmVDaGlsZFBvcHVw KFFXYXlsYW5kV2luZG93KiBjaGlsZCk7CisrICAgIHZvaWQgY2xvc2VDaGlsZFBvcHVwcygpOwor KworIHB1YmxpYyBzbG90czoKKyAgICAgdm9pZCBhcHBseUNvbmZpZ3VyZSgpOworIAorQEAgLTIx NSw3ICsyMjMsMTEgQEAgc2lnbmFsczoKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIFFXYXlsYW5kRGlz cGxheSAqbURpc3BsYXkgPSBudWxscHRyOworKworKyAgICAvLyBtU3VyZmFjZSBjYW4gYmUgd3Jp dHRlbiBieSB0aGUgbWFpbiB0aHJlYWQuIE90aGVyIHRocmVhZHMgc2hvdWxkIGNsYWltIGEgcmVh ZCBsb2NrIGZvciBhY2Nlc3MKKysgICAgbXV0YWJsZSBRUmVhZFdyaXRlTG9jayBtU3VyZmFjZUxv Y2s7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kU3VyZmFjZT4gbVN1cmZhY2U7CisrCisg ICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICptU2hlbGxTdXJmYWNlID0gbnVsbHB0cjsKKyAgICAg UVdheWxhbmRTdWJTdXJmYWNlICptU3ViU3VyZmFjZVdpbmRvdyA9IG51bGxwdHI7CisgICAgIFFW ZWN0b3I8UVdheWxhbmRTdWJTdXJmYWNlICo+IG1DaGlsZHJlbjsKK0BAIC0yMjUsMTMgKzIzNywx NCBAQCBwcm90ZWN0ZWQ6CisgICAgIFF0OjpNb3VzZUJ1dHRvbnMgbU1vdXNlUHJlc3NlZEluQ29u dGVudEFyZWEgPSBRdDo6Tm9CdXR0b247CisgCisgICAgIFdJZCBtV2luZG93SWQ7CistICAgIGJv b2wgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisgICAgIGJvb2wgbUZyYW1lQ2Fs bGJhY2tUaW1lZE91dCA9IGZhbHNlOyAvLyBXaGV0aGVyIHRoZSBmcmFtZSBjYWxsYmFjayBoYXMg dGltZWQgb3V0CistICAgIGJvb2wgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZhbHNlOwor ICAgICBpbnQgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOworLSAgICBR RWxhcHNlZFRpbWVyIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyOworLSAgICBzdHJ1Y3QgOjp3 bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICBRV2F5bGFuZERpc3Bs YXk6OkZyYW1lUXVldWUgbUZyYW1lUXVldWU7CisrICAgIFFBdG9taWNJbnQgbVdhaXRpbmdGb3JV cGRhdGVEZWxpdmVyeSA9IGZhbHNlOworKworKyAgICBib29sIG1XYWl0aW5nRm9yRnJhbWVDYWxs YmFjayA9IGZhbHNlOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIFFFbGFw c2VkVGltZXIgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXI7IC8vIFByb3RlY3RlZCBieSBtRnJh bWVTeW5jTXV0ZXgKKysgICAgc3RydWN0IDo6d2xfY2FsbGJhY2sgKm1GcmFtZUNhbGxiYWNrID0g bnVsbHB0cjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAgICBRTXV0ZXggbUZy YW1lU3luY011dGV4OworICAgICBRV2FpdENvbmRpdGlvbiBtRnJhbWVTeW5jV2FpdDsKKyAKKyAg ICAgLy8gVHJ1ZSB3aGVuIHdlIGhhdmUgY2FsbGVkIGRlbGl2ZXJSZXF1ZXN0VXBkYXRlLCBidXQg dGhlIGNsaWVudCBoYXMgbm90IHlldCBhdHRhY2hlZCBhIG5ldyBidWZmZXIKK0BAIC0yNjEsNiAr Mjc0LDggQEAgcHJvdGVjdGVkOgorICAgICBRV2F5bGFuZEJ1ZmZlciAqbVF1ZXVlZEJ1ZmZlciA9 IG51bGxwdHI7CisgICAgIFFSZWdpb24gbVF1ZXVlZEJ1ZmZlckRhbWFnZTsKKyAKKysgICAgUUxp c3Q8UVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+PiBtQ2hpbGRQb3B1cHM7CisrCisgcHJpdmF0ZToK KyAgICAgdm9pZCBzZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3QpOworICAgICB2 b2lkIGluaXRXaW5kb3coKTsKK0BAIC0yODMsMTIgKzI5OCwxMCBAQCBwcml2YXRlOgorICAgICBR UmVjdCBtTGFzdEV4cG9zZUdlb21ldHJ5OworIAorICAgICBzdGF0aWMgY29uc3Qgd2xfY2FsbGJh Y2tfbGlzdGVuZXIgY2FsbGJhY2tMaXN0ZW5lcjsKKy0gICAgdm9pZCBoYW5kbGVGcmFtZUNhbGxi YWNrKCk7CisrICAgIHZvaWQgaGFuZGxlRnJhbWVDYWxsYmFjayhzdHJ1Y3QgOjp3bF9jYWxsYmFj ayogY2FsbGJhY2spOworIAorICAgICBzdGF0aWMgUVdheWxhbmRXaW5kb3cgKm1Nb3VzZUdyYWI7 CisgCistICAgIG11dGFibGUgUVJlYWRXcml0ZUxvY2sgbVN1cmZhY2VMb2NrOworLQorICAgICBm cmllbmQgY2xhc3MgUVdheWxhbmRTdWJTdXJmYWNlOworIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRp b25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNo ZWxsaW50ZWdyYXRpb25fcC5oCitpbmRleCBjY2FkMDA0OC4uNGNjOWIzYjggMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRl Z3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24v cXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAorQEAgLTczLDExICs3MywxMCBAQCBwdWJsaWM6 CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICB2aXJ0dWFsIFFXYXlsYW5kU2hl bGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgPSAw OworKyAgICAvLyBrZXB0IGZvciBiaW5hcnkgY29tcGF0IHdpdGggbGF5ZXItc2hlbGwtcXQKKyAg ICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93 ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgICAgICBpZiAobmV3 Rm9jdXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3 Rm9jdXMpOworLSAgICAgICAgaWYgKG9sZEZvY3VzKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+ aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworKyAgICAgICAgUV9VTlVTRUQobmV3 Rm9jdXMpOworKyAgICAgICAgUV9VTlVTRUQob2xkRm9jdXMpOworICAgICB9CisgICAgIHZpcnR1 YWwgdm9pZCAqbmF0aXZlUmVzb3VyY2VGb3JXaW5kb3coY29uc3QgUUJ5dGVBcnJheSAmcmVzb3Vy Y2UsIFFXaW5kb3cgKndpbmRvdykgeworICAgICAgICAgUV9VTlVTRUQocmVzb3VyY2UpOworZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbiBiL3F0d2F5 bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgoraW5kZXggYmNmZDUyMTUuLmRhOTVk MDdiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29u CisrKysgYi9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KK0BAIC03LDYg KzcsMzEgQEAKKyAgICAgInRlc3REaXIiOiAiLi4vLi4vY29uZmlnLnRlc3RzIiwKKyAKKyAgICAg ImxpYnJhcmllcyI6IHsKKysgICAgICAgICJ3YXlsYW5kLWNsaWVudCI6IHsKKysgICAgICAgICAg ICAibGFiZWwiOiAiV2F5bGFuZCBjbGllbnQgbGlicmFyeSIsCisrICAgICAgICAgICAgImhlYWRl cnMiOiAid2F5bGFuZC12ZXJzaW9uLmgiLAorKyAgICAgICAgICAgICJ0ZXN0IjogeworKyAgICAg ICAgICAgICAgICAibWFpbiI6IFsKKysgICAgICAgICAgICAgICAgICAgICIjaWYgV0FZTEFORF9W RVJTSU9OX01BSk9SIDwgMSIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlcnJvciBXYXlsYW5k IDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAgICAgICAgICAgICAgICAgICAiI2VuZGlm IiwKKysgICAgICAgICAgICAgICAgICAgICIjaWYgV0FZTEFORF9WRVJTSU9OX01BSk9SID09IDEi LAorKyAgICAgICAgICAgICAgICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01JTk9SIDwgOCIs CisrICAgICAgICAgICAgICAgICAgICAiIyAgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBoaWdoZXIg cmVxdWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgZW5kaWYiLAorKyAgICAgICAgICAg ICAgICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01JTk9SID09IDgiLAorKyAgICAgICAgICAg ICAgICAgICAgIiMgIGlmIFdBWUxBTkRfVkVSU0lPTl9NSUNSTyA8IDAiLAorKyAgICAgICAgICAg ICAgICAgICAgIiMgICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisr ICAgICAgICAgICAgICAgICAgICAiIyAgZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiMg ZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKysgICAgICAgICAgICAgICAg IF0KKysgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICJzb3VyY2VzIjogWworKyAgICAgICAg ICAgICAgICB7ICJ0eXBlIjogInBrZ0NvbmZpZyIsICJhcmdzIjogIndheWxhbmQtY2xpZW50IiB9 LAorKyAgICAgICAgICAgICAgICAiLWx3YXlsYW5kLWNsaWVudCIKKysgICAgICAgICAgICBdCisr ICAgICAgICB9LAorICAgICAgICAgIndheWxhbmQtc2VydmVyIjogeworICAgICAgICAgICAgICJs YWJlbCI6ICJ3YXlsYW5kLXNlcnZlciIsCisgICAgICAgICAgICAgImhlYWRlcnMiOiAid2F5bGFu ZC12ZXJzaW9uLmgiLAorQEAgLTE1MSw4ICsxNzYsNyBAQAorICAgICAgICAgICAgICAgICAgICAg IiNlbmRpZiIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAg ICAgImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAg ICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAiZG1hYnVmLWNsaWVu dC1idWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIkxpbnV4IENsaWVudCBkbWEtYnVm IEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xNzYsOCArMjAwLDcgQEAKKyAgICAgICAgICAgICAgICAg ICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAg ICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysg ICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgInZ1bGth bi1zZXJ2ZXItYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxrYW4gQnVmZmVy IFNoYXJpbmciLAorQEAgLTE5NSw3ICsyMTgsOCBAQAorICAgICAgICAgICAgICAgICAgICAgImV4 cG9ydEFsbG9jSW5mby5oYW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQ RV9PUEFRVUVfRkRfQklUX0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIK KyAgICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9LAorKyAg ICAgICAgICAgICJ1c2UiOiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9CisgICAgIH0sCisg CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93 YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJl aW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAoraW5k ZXggNzg4OWY1NzUuLjY0MTQwNjcyIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9oYXJkd2Fy ZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAKKysr KyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wv cXdheWxhbmRlZ2x3aW5kb3cuY3BwCitAQCAtNDAsNiArNDAsNyBAQAorICNpbmNsdWRlICJxd2F5 bGFuZGVnbHdpbmRvdy5oIgorIAorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS9x d2F5bGFuZHNjcmVlbl9wLmg+CisrI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3 YXlsYW5kc3VyZmFjZV9wLmg+CisgI2luY2x1ZGUgInF3YXlsYW5kZ2xjb250ZXh0LmgiCisgCisg I2luY2x1ZGUgPFF0RWdsU3VwcG9ydC9wcml2YXRlL3FlZ2xjb252ZW5pZW5jZV9wLmg+CitAQCAt MTI0LDYgKzEyNSw3IEBAIHZvaWQgUVdheWxhbmRFZ2xXaW5kb3c6OnVwZGF0ZVN1cmZhY2UoYm9v bCBjcmVhdGUpCisgICAgICAgICB9CisgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50KCk7CisgICAg IH0gZWxzZSB7CisrICAgICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1TdXJmYWNlTG9jayk7Cisg ICAgICAgICBpZiAobV93YXlsYW5kRWdsV2luZG93KSB7CisgICAgICAgICAgICAgaW50IGN1cnJl bnRfd2lkdGgsIGN1cnJlbnRfaGVpZ2h0OworICAgICAgICAgICAgIHN0YXRpYyBib29sIGRpc2Fi bGVSZXNpemVDaGVjayA9IHFnZXRlbnYoIlFUX1dBWUxBTkRfRElTQUJMRV9SRVNJWkVDSEVDSyIp LnRvSW50KCk7CitAQCAtMTMxLDE0ICsxMzMsMTYgQEAgdm9pZCBRV2F5bGFuZEVnbFdpbmRvdzo6 dXBkYXRlU3VyZmFjZShib29sIGNyZWF0ZSkKKyAgICAgICAgICAgICBpZiAoIWRpc2FibGVSZXNp emVDaGVjaykgeworICAgICAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X2dldF9hdHRhY2hlZF9z aXplKG1fd2F5bGFuZEVnbFdpbmRvdywgJmN1cnJlbnRfd2lkdGgsICZjdXJyZW50X2hlaWdodCk7 CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmIChkaXNhYmxlUmVzaXplQ2hlY2sgfHwg KGN1cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCkgfHwgY3VycmVudF9oZWln aHQgIT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKSkgeworKyAgICAgICAgICAgIGlmIChkaXNh YmxlUmVzaXplQ2hlY2sgfHwgKGN1cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJnaW5zLndpZHRo KCkgfHwgY3VycmVudF9oZWlnaHQgIT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKSB8fCBtX3Jl cXVlc3RlZFNpemUgIT0gc2l6ZVdpdGhNYXJnaW5zKSB7CisgICAgICAgICAgICAgICAgIHdsX2Vn bF93aW5kb3dfcmVzaXplKG1fd2F5bGFuZEVnbFdpbmRvdywgc2l6ZVdpdGhNYXJnaW5zLndpZHRo KCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSwgbU9mZnNldC54KCksIG1PZmZzZXQueSgpKTsK KysgICAgICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTaXplID0gc2l6ZVdpdGhNYXJnaW5zOworICAg ICAgICAgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50KCk7CisgCisgICAgICAgICAgICAgICAgIG1f cmVzaXplID0gdHJ1ZTsKKyAgICAgICAgICAgICB9CistICAgICAgICB9IGVsc2UgaWYgKGNyZWF0 ZSAmJiB3bFN1cmZhY2UoKSkgeworLSAgICAgICAgICAgIG1fd2F5bGFuZEVnbFdpbmRvdyA9IHds X2VnbF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZSgpLCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwg c2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlICYm IG1TdXJmYWNlKSB7CisrICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0gd2xfZWdsX3dp bmRvd19jcmVhdGUobVN1cmZhY2UtPm9iamVjdCgpLCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwg c2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAgICAgICAgICBtX3JlcXVlc3RlZFNpemUg PSBzaXplV2l0aE1hcmdpbnM7CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAoIW1fZWdsU3Vy ZmFjZSAmJiBtX3dheWxhbmRFZ2xXaW5kb3cgJiYgY3JlYXRlKSB7CitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFu ZGVnbHdpbmRvdy5oIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93 YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitpbmRleCA1YjFmNGQ1Ni4uMDA3OWRmZWYg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dh eWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdh cmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaAorQEAg LTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKKyAgICAgbXV0YWJsZSBRT3BlbkdMRnJhbWVidWZmZXJP YmplY3QgKm1fY29udGVudEZCTyA9IG51bGxwdHI7CisgCisgICAgIFFTdXJmYWNlRm9ybWF0IG1f Zm9ybWF0OworKyAgICBRU2l6ZSBtX3JlcXVlc3RlZFNpemU7CisgfTsKKyAKKyB9CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgt ZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmggYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJl aW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFi dWYuaAoraW5kZXggNTZhNzEwYzMuLmM2YThiNmM2IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYx L2xpbnV4ZG1hYnVmLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9j b21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCitAQCAtNDEs NiArNDEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvUVRleHRTdHJlYW0+CisgI2luY2x1ZGUgPFF0 R3VpL1FPcGVuR0xUZXh0dXJlPgorIAorKyNpbmNsdWRlIDxhcnJheT4KKysKKyAjaW5jbHVkZSA8 RUdML2VnbC5oPgorICNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisgCitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwIGIvcXR3YXls YW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCitpbmRleCBlNzVm ZGEzYy4uZmE4ODUxNDMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3Jh dGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNv cmF0aW9ucy9icmFkaWVudC9tYWluLmNwcAorQEAgLTE2NCwxMyArMTY0LDEwIEBAIHZvaWQgUVdh eWxhbmRCcmFkaWVudERlY29yYXRpb246OnBhaW50KFFQYWludERldmljZSAqZGV2aWNlKQorICAg ICAvLyBXaW5kb3cgaWNvbgorICAgICBRSWNvbiBpY29uID0gd2F5bGFuZFdpbmRvdygpLT53aW5k b3dJY29uKCk7CisgICAgIGlmICghaWNvbi5pc051bGwoKSkgeworLSAgICAgICAgUVBpeG1hcCBw aXhtYXAgPSBpY29uLnBpeG1hcChRU2l6ZSgxMjgsIDEyOCkpOworLSAgICAgICAgUVBpeG1hcCBz Y2FsZWQgPSBwaXhtYXAuc2NhbGVkKDIyLCAyMiwgUXQ6Oklnbm9yZUFzcGVjdFJhdGlvLCBRdDo6 U21vb3RoVHJhbnNmb3JtYXRpb24pOworLQorICAgICAgICAgUVJlY3RGIGljb25SZWN0KDAsIDAs IDIyLCAyMik7CistICAgICAgICBwLmRyYXdQaXhtYXAoaWNvblJlY3QuYWRqdXN0ZWQobWFyZ2lu cygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCksCist ICAgICAgICAgICAgICAgICAgICAgc2NhbGVkLCBpY29uUmVjdCk7CisrICAgICAgICBpY29uUmVj dC5hZGp1c3QobWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCksCisr ICAgICAgICBpY29uLnBhaW50KCZwLCBpY29uUmVjdC50b1JlY3QoKSk7CisgICAgIH0KKyAKKyAg ICAgLy8gV2luZG93IHRpdGxlCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAgYi9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4 ZGdwb3B1cHY1LmNwcAoraW5kZXggODVkMjVlM2MuLjYwYmRkNDkxIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5k eGRncG9wdXB2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCitAQCAtNDcsMTggKzQ3LDIx IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgewor IAorLVFXYXlsYW5kWGRnUG9wdXBWNTo6UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19w b3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpCisrUVdheWxhbmRYZGdQb3B1 cFY1OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdh eWxhbmRXaW5kb3cqIHBhcmVudCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdykKKyAgICAgOiBRV2F5 bGFuZFNoZWxsU3VyZmFjZSh3aW5kb3cpCisgICAgICwgUXRXYXlsYW5kOjp4ZGdfcG9wdXBfdjUo cG9wdXApCisrICAgICwgbV9wYXJlbnQocGFyZW50KQorICAgICAsIG1fd2luZG93KHdpbmRvdykK KyB7CisgICAgIGlmICh3aW5kb3ctPmRpc3BsYXkoKS0+d2luZG93RXh0ZW5zaW9uKCkpCisgICAg ICAgICBtX2V4dGVuZGVkV2luZG93ID0gbmV3IFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNlKHdpbmRv dyk7CisrICAgIG1fcGFyZW50LT5hZGRDaGlsZFBvcHVwKG1fd2luZG93KTsKKyB9CisgCisgUVdh eWxhbmRYZGdQb3B1cFY1Ojp+UVdheWxhbmRYZGdQb3B1cFY1KCkKKyB7CisgICAgIHhkZ19wb3B1 cF9kZXN0cm95KG9iamVjdCgpKTsKKysgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkUG9wdXAobV93 aW5kb3cpOworICAgICBkZWxldGUgbV9leHRlbmRlZFdpbmRvdzsKKyB9CisgCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRncG9wdXB2NV9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAoraW5kZXggNzQ5NGY2YTYu LmQ4NWYxMzBiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKKysrKyBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3Bv cHVwdjVfcC5oCitAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9S VCBRV2F5bGFuZFhkZ1BvcHVwVjUgOiBwdWJsaWMgUVdheWxhbmRTaGVsbFN1cmZhY2UKKyB7Cisg ICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAgICBRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6 eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdyk7CisrICAgIFFXYXls YW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRv dyogcGFyZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKyAgICAgflFXYXlsYW5kWGRnUG9w dXBWNSgpIG92ZXJyaWRlOworIAorIHByb3RlY3RlZDoKK0BAIC03OCw2ICs3OCw3IEBAIHByb3Rl Y3RlZDoKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZEV4dGVuZGVkU3VyZmFjZSAqbV9leHRl bmRlZFdpbmRvdyA9IG51bGxwdHI7CisrICAgIFFXYXlsYW5kV2luZG93ICptX3BhcmVudCA9IG51 bGxwdHI7CisgICAgIFFXYXlsYW5kV2luZG93ICptX3dpbmRvdyA9IG51bGxwdHI7CisgfTsKKyAK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCitpbmRl eCA3ZTI0MmM0YS4uZGVmODQ1MmEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcAorKysr IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRnc2hlbGx2NS5jcHAKK0BAIC04NCw3ICs4NCw3IEBAIFFXYXlsYW5kWGRnUG9wdXBW NSAqUVdheWxhbmRYZGdTaGVsbFY1OjpjcmVhdGVYZGdQb3B1cChRV2F5bGFuZFdpbmRvdyAqd2lu ZG93LCBRCisgICAgIGludCB4ID0gcG9zaXRpb24ueCgpICsgcGFyZW50V2luZG93LT5mcmFtZU1h cmdpbnMoKS5sZWZ0KCk7CisgICAgIGludCB5ID0gcG9zaXRpb24ueSgpICsgcGFyZW50V2luZG93 LT5mcmFtZU1hcmdpbnMoKS50b3AoKTsKKyAKKy0gICAgYXV0byBwb3B1cCA9IG5ldyBRV2F5bGFu ZFhkZ1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ctPndsU3VyZmFjZSgpLCBwYXJlbnRTdXJm YWNlLCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwgd2luZG93KTsKKysgICAgYXV0byBwb3B1 cCA9IG5ldyBRV2F5bGFuZFhkZ1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ctPndsU3VyZmFj ZSgpLCBwYXJlbnRTdXJmYWNlLCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwgcGFyZW50V2lu ZG93LCB3aW5kb3cpOworICAgICBtX3BvcHVwcy5hcHBlbmQod2luZG93KTsKKyAgICAgUU9iamVj dDo6Y29ubmVjdChwb3B1cCwgJlFXYXlsYW5kWGRnUG9wdXBWNTo6ZGVzdHJveWVkLCBbdGhpcywg d2luZG93XSgpeworICAgICAgICAgbV9wb3B1cHMucmVtb3ZlT25lKHdpbmRvdyk7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1 L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3Jh dGlvbi5jcHAKK2luZGV4IDRlMjU5NDlmLi5jZmM2MDkzOSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3No ZWxsdjVpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAK K0BAIC04NSwxMyArODUsNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVs bFY1SW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZAorICAgICByZXR1cm4g bV94ZGdTaGVsbC0+Y3JlYXRlWGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXls YW5kWGRnU2hlbGxWNUludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5 bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgeworLSAgICBp ZiAobmV3Rm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnUG9wdXBWNSAqPihuZXdGb2N1 cy0+c2hlbGxTdXJmYWNlKCkpKQorLSAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3Rp dmF0ZWQobmV3Rm9jdXMpOworLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXls YW5kWGRnUG9wdXBWNSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKQorLSAgICAgICAgbV9k aXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistfQorLQorIH0KKyAK KyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9u X3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12 NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGNlNmJkYjllLi5hZWQ4 ODY3MCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFu ZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK0BAIC02Nyw3ICs2Nyw2IEBAIHB1YmxpYzoKKyAg ICAgUVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxp emUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVs bFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVy cmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRv dyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJp dmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbFY1PiBtX3hkZ1NoZWxs OworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKK2lu ZGV4IDhjMzcxNjYxLi4xNTFjNzhlMyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwCisr KysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYv cXdheWxhbmR4ZGdzaGVsbHY2LmNwcAorQEAgLTE3NCw2ICsxNzQsNyBAQCBRV2F5bGFuZFhkZ1N1 cmZhY2VWNjo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZVY2ICp4ZGdTdXJmYWNlLCBR V2F5bGFuZFhkZworICAgICAsIG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorICAgICAsIG1fcGFy ZW50KHBhcmVudCkKKyB7CisrICAgIG1fcGFyZW50LT53aW5kb3coKS0+YWRkQ2hpbGRQb3B1cCht X3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBv cHVwOjp+UG9wdXAoKQorQEAgLTE4MSw2ICsxODIsOCBAQCBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6 UG9wdXA6On5Qb3B1cCgpCisgICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgICBkZXN0 cm95KCk7CisgCisrICAgIG1fcGFyZW50LT53aW5kb3coKS0+cmVtb3ZlQ2hpbGRQb3B1cChtX3hk Z1N1cmZhY2UtPndpbmRvdygpKTsKKysKKyAgICAgaWYgKG1fZ3JhYmJpbmcpIHsKKyAgICAgICAg IGF1dG8gKnNoZWxsID0gbV94ZGdTdXJmYWNlLT5tX3NoZWxsOworICAgICAgICAgUV9BU1NFUlQo c2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPT0gdGhpcyk7CitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5k eGRnc2hlbGx2NmludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAK K2luZGV4IDAzMTY0MzE2Li5lOGRhOGJhMSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRl Z3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAKK0BAIC02OCwy MCArNjgsNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdy YXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZAorICAgICByZXR1cm4gbV94ZGdTaGVs bC0+Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRnU2hlbGxW NkludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAq bmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykKKy17CistICAgIGlmIChuZXdGb2N1 cykgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhk Z1N1cmZhY2VWNiAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhk Z1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAg ICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgfQor LSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+ KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2Ug PSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xkRm9jdXMtPnNoZWxsU3Vy ZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVz QWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0 aXZhdGVkKG9sZEZvY3VzKTsKKy0gICAgfQorLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFD RQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVs bHY2aW50ZWdyYXRpb25fcC5oCitpbmRleCAyNjFmOGNiYi4uYzFiY2Q1YzYgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdh eWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdy YXRpb25fcC5oCitAQCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hl bGxWNkludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxh eSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVT aGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQg aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5 bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29w ZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hlbGxWNj4gbV94ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4 ZGdzaGVsbC5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK2luZGV4IGYzZTNjMzMwLi5mYTZkNTgwOCAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC9xd2F5bGFuZHhkZ3NoZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCitAQCAtNjcsMTEgKzY3 LDYgQEAgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6VG9wbGV2ZWwoUVdheWxhbmRYZGdT dXJmYWNlICp4ZGdTdXJmYWNlKQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6On5U b3BsZXZlbCgpCisgeworLSAgICBpZiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3Rp dmUpIHsKKy0gICAgICAgIFFXYXlsYW5kV2luZG93ICp3aW5kb3cgPSBtX3hkZ1N1cmZhY2UtPndp bmRvdygpOworLSAgICAgICAgd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRvd0RlYWN0aXZh dGVkKHdpbmRvdyk7CistICAgIH0KKy0KKyAgICAgLy8gVGhlIHByb3RvY29sIHNwZWMgcmVxdWly ZXMgdGhhdCB0aGUgZGVjb3JhdGlvbiBvYmplY3QgaXMgZGVsZXRlZCBiZWZvcmUgeGRnX3RvcGxl dmVsLgorICAgICBkZWxldGUgbV9kZWNvcmF0aW9uOworICAgICBtX2RlY29yYXRpb24gPSBudWxs cHRyOworQEAgLTg1LDE2ICs4MCwxNSBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2 ZWw6OmFwcGx5Q29uZmlndXJlKCkKKyAgICAgaWYgKCEobV9hcHBsaWVkLnN0YXRlcyAmIChRdDo6 V2luZG93TWF4aW1pemVkfFF0OjpXaW5kb3dGdWxsU2NyZWVuKSkpCisgICAgICAgICBtX25vcm1h bFNpemUgPSBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT53aW5kb3dGcmFtZUdlb21ldHJ5KCkuc2l6 ZSgpOworIAorLSAgICBpZiAoKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAm JiAhKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkKKysgICAgaWYgKChtX3Bl bmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgIShtX2FwcGxpZWQuc3RhdGVzICYg UXQ6OldpbmRvd0FjdGl2ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5k aXNwbGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAgIG1feGRnU3VyZmFjZS0+ bV93aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG1feGRnU3VyZmFjZS0+ bV93aW5kb3cpOworIAorLSAgICBpZiAoIShtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0Fj dGl2ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkKKysgICAgaWYg KCEobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmIChtX2FwcGxpZWQuc3Rh dGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZhY2UtPm1fd2lu ZG93LT5kaXNwbGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAgIG1feGRnU3Vy ZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobV94ZGdT dXJmYWNlLT5tX3dpbmRvdyk7CisgCistICAgIC8vIFRPRE86IG5vbmUgb2YgdGhlIG90aGVyIHBs dWdpbnMgc2VuZCBXaW5kb3dBY3RpdmUgZWl0aGVyLCBidXQgaXMgaXQgb24gcHVycG9zZT8KKy0g ICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0QWN0aXZlID0gbV9wZW5kaW5nLnN0YXRl cyAmIH5RdDo6V2luZG93QWN0aXZlOworLQorLSAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5o YW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKHN0YXRlc1dpdGhvdXRBY3RpdmUpOworKyAgICBtX3hk Z1N1cmZhY2UtPm1fd2luZG93LT5oYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKG1fcGVuZGluZy5z dGF0ZXMpOworIAorICAgICBpZiAobV9wZW5kaW5nLnNpemUuaXNFbXB0eSgpKSB7CisgICAgICAg ICAvLyBBbiBlbXB0eSBzaXplIGluIHRoZSBjb25maWd1cmUgbWVhbnMgaXQncyB1cCB0byB0aGUg Y2xpZW50IHRvIGNob29zZSB0aGUgc2l6ZQorQEAgLTEwNSw4ICs5OSw2IEBAIHZvaWQgUVdheWxh bmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6YXBwbHlDb25maWd1cmUoKQorICAgICAgICAgbV94ZGdT dXJmYWNlLT5tX3dpbmRvdy0+cmVzaXplRnJvbUFwcGx5Q29uZmlndXJlKG1fcGVuZGluZy5zaXpl KTsKKyAgICAgfQorIAorLSAgICBtX3hkZ1N1cmZhY2UtPnNldFNpemVIaW50cygpOworLQorICAg ICBtX2FwcGxpZWQgPSBtX3BlbmRpbmc7CisgICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAi QXBwbGllZCBwZW5kaW5nIHhkZ190b3BsZXZlbCBjb25maWd1cmUgZXZlbnQ6IiA8PCBtX2FwcGxp ZWQuc2l6ZSA8PCBtX2FwcGxpZWQuc3RhdGVzOworIH0KK0BAIC0yMDMsMTIgKzE5NSwxNyBAQCBR dFdheWxhbmQ6OnhkZ190b3BsZXZlbDo6cmVzaXplX2VkZ2UgUVdheWxhbmRYZGdTdXJmYWNlOjpU b3BsZXZlbDo6Y29udmVydFRvUmVzaQorICAgICAgICAgICAgICAgICB8ICgoZWRnZXMgJiBRdDo6 UmlnaHRFZGdlKSA/IHJlc2l6ZV9lZGdlX3JpZ2h0IDogMCkpOworIH0KKyAKKy1RV2F5bGFuZFhk Z1N1cmZhY2U6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFX YXlsYW5kWGRnU3VyZmFjZSAqcGFyZW50LAorK1FXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6OlBv cHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRXaW5kb3cgKnBhcmVu dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdFdheWxhbmQ6OnhkZ19wb3Np dGlvbmVyICpwb3NpdGlvbmVyKQorLSAgICA6IHhkZ19wb3B1cCh4ZGdTdXJmYWNlLT5nZXRfcG9w dXAocGFyZW50LT5vYmplY3QoKSwgcG9zaXRpb25lci0+b2JqZWN0KCkpKQorLSAgICAsIG1feGRn U3VyZmFjZSh4ZGdTdXJmYWNlKQorKyAgICA6IG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorKyAg ICAsIG1fcGFyZW50WGRnU3VyZmFjZShxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+ KHBhcmVudC0+c2hlbGxTdXJmYWNlKCkpKQorICAgICAsIG1fcGFyZW50KHBhcmVudCkKKyB7Cisr CisrICAgIGluaXQoeGRnU3VyZmFjZS0+Z2V0X3BvcHVwKG1fcGFyZW50WGRnU3VyZmFjZSA/IG1f cGFyZW50WGRnU3VyZmFjZS0+b2JqZWN0KCkgOiBudWxscHRyLCBwb3NpdGlvbmVyLT5vYmplY3Qo KSkpOworKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50LT5hZGRDaGlsZFBv cHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAgICB9CisgfQorIAorIFFXYXlsYW5kWGRn U3VyZmFjZTo6UG9wdXA6On5Qb3B1cCgpCitAQCAtMjE2LDEwICsyMTMsMjQgQEAgUVdheWxhbmRY ZGdTdXJmYWNlOjpQb3B1cDo6flBvcHVwKCkKKyAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAg ICAgICAgIGRlc3Ryb3koKTsKKyAKKysgICAgaWYgKG1fcGFyZW50KSB7CisrICAgICAgICBtX3Bh cmVudC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysgICAgfQor KworICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAgICAgYXV0byAqc2hlbGwgPSBtX3hkZ1N1 cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VSVChzaGVsbC0+bV90b3Btb3N0R3JhYmJp bmdQb3B1cCA9PSB0aGlzKTsKKy0gICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVw ID0gbV9wYXJlbnQtPm1fcG9wdXA7CisrICAgICAgICBzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQ b3B1cCA9IG1fcGFyZW50WGRnU3VyZmFjZSA/IG1fcGFyZW50WGRnU3VyZmFjZS0+bV9wb3B1cCA6 IG51bGxwdHI7CisrICAgICAgICBtX2dyYWJiaW5nID0gZmFsc2U7CisrCisrICAgICAgICAvLyBT eW50aGVzaXplIFF0IGVudGVyL2xlYXZlIGV2ZW50cyBmb3IgcG9wdXAKKysgICAgICAgIFFXaW5k b3cgKmxlYXZlID0gbnVsbHB0cjsKKysgICAgICAgIGlmIChtX3hkZ1N1cmZhY2UgJiYgbV94ZGdT dXJmYWNlLT53aW5kb3coKSkKKysgICAgICAgICAgICBsZWF2ZSA9IG1feGRnU3VyZmFjZS0+d2lu ZG93KCktPndpbmRvdygpOworKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxl TGVhdmVFdmVudChsZWF2ZSk7CisrCisrICAgICAgICBpZiAoUVdpbmRvdyAqZW50ZXIgPSBRR3Vp QXBwbGljYXRpb246OnRvcExldmVsQXQoUUN1cnNvcjo6cG9zKCkpKQorKyAgICAgICAgICAgIFFX aW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVudGVyRXZlbnQoZW50ZXIsIGVudGVyLT5tYXBG cm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCkpOworICAgICB9CisgfQor IAorQEAgLTI1Nyw2ICsyNjgsNyBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlFXYXlsYW5kWGRnU3Vy ZmFjZShRV2F5bGFuZFhkZ1NoZWxsICpzaGVsbCwgOjp4ZGdfc3VyZmFjZSAqcworICAgICAgICAg ICAgICAgICBtX3RvcGxldmVsLT5zZXRfcGFyZW50KHBhcmVudFhkZ1N1cmZhY2UtPm1fdG9wbGV2 ZWwtPm9iamVjdCgpKTsKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICBzZXRTaXplSGludHMoKTsK KyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjp+UVdheWxhbmRYZGdTdXJmYWNlKCkKK0BAIC00 MDAsOCArNDEyLDYgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5k V2luZG93ICpwYXJlbnQpCisgeworICAgICBRX0FTU0VSVCghbV90b3BsZXZlbCAmJiAhbV9wb3B1 cCk7CisgCistICAgIGF1dG8gcGFyZW50WGRnU3VyZmFjZSA9IHN0YXRpY19jYXN0PFFXYXlsYW5k WGRnU3VyZmFjZSAqPihwYXJlbnQtPnNoZWxsU3VyZmFjZSgpKTsKKy0KKyAgICAgYXV0byBwb3Np dGlvbmVyID0gbmV3IFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIobV9zaGVsbC0+Y3JlYXRlX3Bv c2l0aW9uZXIoKSk7CisgICAgIC8vIHNldF9wb3B1cCBleHBlY3RzIGEgcG9zaXRpb24gcmVsYXRp dmUgdG8gdGhlIHBhcmVudAorICAgICBRUG9pbnQgdHJhbnNpZW50UG9zID0gbV93aW5kb3ctPmdl b21ldHJ5KCkudG9wTGVmdCgpOyAvLyB0aGlzIGlzIGFic29sdXRlCitAQCAtNDE0LDggKzQyNCw5 IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFy ZW50KQorICAgICBwb3NpdGlvbmVyLT5zZXRfYW5jaG9yKFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9u ZXI6OmFuY2hvcl90b3BfbGVmdCk7CisgICAgIHBvc2l0aW9uZXItPnNldF9ncmF2aXR5KFF0V2F5 bGFuZDo6eGRnX3Bvc2l0aW9uZXI6OmdyYXZpdHlfYm90dG9tX3JpZ2h0KTsKKyAgICAgcG9zaXRp b25lci0+c2V0X3NpemUobV93aW5kb3ctPmdlb21ldHJ5KCkud2lkdGgoKSwgbV93aW5kb3ctPmdl b21ldHJ5KCkuaGVpZ2h0KCkpOworLSAgICBtX3BvcHVwID0gbmV3IFBvcHVwKHRoaXMsIHBhcmVu dFhkZ1N1cmZhY2UsIHBvc2l0aW9uZXIpOworKyAgICBtX3BvcHVwID0gbmV3IFBvcHVwKHRoaXMs IHBhcmVudCwgcG9zaXRpb25lcik7CisgICAgIHBvc2l0aW9uZXItPmRlc3Ryb3koKTsKKysKKyAg ICAgZGVsZXRlIHBvc2l0aW9uZXI7CisgfQorIAorQEAgLTQzNyw2ICs0NDgsMjMgQEAgdm9pZCBR V2F5bGFuZFhkZ1N1cmZhY2U6OnNldEdyYWJQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50LCBR V2F5bGFuZElucHV0RGV2aWMKKyAgICAgfQorICAgICBzZXRQb3B1cChwYXJlbnQpOworICAgICBt X3BvcHVwLT5ncmFiKGRldmljZSwgc2VyaWFsKTsKKysKKysgICAgLy8gU3ludGhlc2l6ZSBRdCBl bnRlci9sZWF2ZSBldmVudHMgZm9yIHBvcHVwCisrICAgIGlmICghcGFyZW50KQorKyAgICAgICAg cmV0dXJuOworKyAgICBRV2luZG93ICpjdXJyZW50ID0gUUd1aUFwcGxpY2F0aW9uOjp0b3BMZXZl bEF0KFFDdXJzb3I6OnBvcygpKTsKKysgICAgUVdpbmRvdyAqbGVhdmUgPSBwYXJlbnQtPndpbmRv dygpOworKyAgICBpZiAoY3VycmVudCAhPSBsZWF2ZSkKKysgICAgICAgIHJldHVybjsKKysKKysg ICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlTGVhdmVFdmVudChsZWF2ZSk7CisrCisr ICAgIFFXaW5kb3cgKmVudGVyID0gbnVsbHB0cjsKKysgICAgaWYgKG1fcG9wdXAgJiYgbV9wb3B1 cC0+bV94ZGdTdXJmYWNlICYmIG1fcG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93KCkpCisrICAg ICAgICBlbnRlciA9IG1fcG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93KCktPndpbmRvdygpOwor KworKyAgICBpZiAoZW50ZXIpCisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k bGVFbnRlckV2ZW50KGVudGVyLCBlbnRlci0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSks IFFDdXJzb3I6OnBvcygpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnhkZ19z dXJmYWNlX2NvbmZpZ3VyZSh1aW50MzJfdCBzZXJpYWwpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxf cC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3 YXlsYW5keGRnc2hlbGxfcC5oCitpbmRleCA5Njc4NTIwNS4uNGI1MThmMGEgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxh bmR4ZGdzaGVsbF9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAorQEAgLTEzMSwxNCArMTMxLDE1IEBA IHByaXZhdGU6CisgCisgICAgIGNsYXNzIFBvcHVwIDogcHVibGljIFF0V2F5bGFuZDo6eGRnX3Bv cHVwIHsKKyAgICAgcHVibGljOgorLSAgICAgICAgUG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4 ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZ1N1cmZhY2UgKnBhcmVudCwgUXRXYXlsYW5kOjp4ZGdfcG9z aXRpb25lciAqcG9zaXRpb25lcik7CisrICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2Ug KnhkZ1N1cmZhY2UsIFFXYXlsYW5kV2luZG93ICpwYXJlbnQsIFF0V2F5bGFuZDo6eGRnX3Bvc2l0 aW9uZXIgKnBvc2l0aW9uZXIpOworICAgICAgICAgflBvcHVwKCkgb3ZlcnJpZGU7CisgCisgICAg ICAgICB2b2lkIGdyYWIoUVdheWxhbmRJbnB1dERldmljZSAqc2VhdCwgdWludCBzZXJpYWwpOwor ICAgICAgICAgdm9pZCB4ZGdfcG9wdXBfcG9wdXBfZG9uZSgpIG92ZXJyaWRlOworIAorICAgICAg ICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3hkZ1N1cmZhY2UgPSBudWxscHRyOworLSAgICAgICAg UVdheWxhbmRYZGdTdXJmYWNlICptX3BhcmVudCA9IG51bGxwdHI7CisrICAgICAgICBRV2F5bGFu ZFhkZ1N1cmZhY2UgKm1fcGFyZW50WGRnU3VyZmFjZSA9IG51bGxwdHI7CisrICAgICAgICBRV2F5 bGFuZFdpbmRvdyAqbV9wYXJlbnQgPSBudWxscHRyOworICAgICAgICAgYm9vbCBtX2dyYWJiaW5n ID0gZmFsc2U7CisgICAgIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5j cHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdh eWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAoraW5kZXggODc2OWQ5NzEuLmRhMGRkNmE3IDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdy YXRpb24uY3BwCitAQCAtNjksMjAgKzY5LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKlFXYXls YW5kWGRnU2hlbGxJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2kKKyAg ICAgcmV0dXJuIG1feGRnU2hlbGwtPmdldFhkZ1N1cmZhY2Uod2luZG93KTsKKyB9CisgCistdm9p ZCBRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2Vk KFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKQorLXsK Ky0gICAgaWYgKG5ld0ZvY3VzKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVj dF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOwor LSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0 ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0Zv Y3VzKTsKKy0gICAgfQorLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5k WGRnU3VyZmFjZSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKSB7CistICAgICAgICBhdXRv ICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihvbGRGb2N1 cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZh Y2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxl V2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLSAgICB9CistfQorLQorIH0KKyAKKyBRVF9F TkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmggYi9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdz aGVsbGludGVncmF0aW9uX3AuaAoraW5kZXggYjZjYWE2YzkuLjJmOTI5Zjk4IDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXls YW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5o CitAQCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxJbnRlZ3Jh dGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkp IG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNl KFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtleWJv YXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cg Km9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRlcjxR V2F5bGFuZFhkZ1NoZWxsPiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv c2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwIGIvcXR3YXlsYW5kL3Ny Yy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKK2luZGV4IDUyNmQw ZWY0Li5mNTBjY2YzMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5k aW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9x d2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAorQEAgLTM5LDcgKzM5LDEwIEBACisg CisgI2luY2x1ZGUgInF3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXJfcC5oIgorIAorKyNp bmNsdWRlIDxRQnJ1c2g+CisrI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyAjaW5jbHVkZSA8 UUlucHV0TWV0aG9kPgorKyNpbmNsdWRlIDxRUGFsZXR0ZT4KKyAjaW5jbHVkZSA8UVRleHRDaGFy Rm9ybWF0PgorIAorICNpZmRlZiBRVF9CVUlMRF9XQVlMQU5EQ09NUE9TSVRPUl9MSUIKK0BAIC04 MSwzMiArODQsMzggQEAgdm9pZCBRV2F5bGFuZElucHV0TWV0aG9kRXZlbnRCdWlsZGVyOjphZGRQ cmVlZGl0U3R5bGluZyh1aW50MzJfdCBpbmRleCwgdWludDMyX3QKKyAgICAgUVRleHRDaGFyRm9y bWF0IGZvcm1hdDsKKyAKKyAgICAgc3dpdGNoIChzdHlsZSkgeworLSAgICBjYXNlIDA6CistICAg IGNhc2UgMToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX05PTkU6 CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NU WUxFX0RFRkFVTFQ6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9V TkRFUkxJTkU6CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAg ICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVy bGluZSk7CisgICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50 OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgs IGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgMjoKKy0gICAgY2FzZSAzOgor KyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfQUNUSVZFOgorKyAgICBj YXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfSU5BQ1RJVkU6CisgICAgICAgICBm b3JtYXQuc2V0Rm9udFdlaWdodChRRm9udDo6Qm9sZCk7CisgICAgICAgICBmb3JtYXQuc2V0Rm9u dFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4 dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisgICAgICAgICBtX3ByZWVkaXRTdHlsZXMu YXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRl eHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7CistICAg IGNhc2UgNDoKKy0gICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworLSAgICAg ICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJs aW5lKTsKKy0gICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6 OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwg Zm9ybWF0KSk7CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9ISUdI TElHSFQ6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9TRUxFQ1RJ T046CisrICAgICAgICB7CisrICAgICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1 ZSk7CisrICAgICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1h dDo6U2luZ2xlVW5kZXJsaW5lKTsKKysgICAgICAgICAgICBRUGFsZXR0ZSBwYWxldHRlID0gcUFw cC0+cGFsZXR0ZSgpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRCYWNrZ3JvdW5kKFFCcnVzaChw YWxldHRlLmNvbG9yKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdobGlnaHQpKSk7Cisr ICAgICAgICAgICAgZm9ybWF0LnNldEZvcmVncm91bmQoUUJydXNoKHBhbGV0dGUuY29sb3IoUVBh bGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodGVkVGV4dCkpKTsKKysgICAgICAgICAg ICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlu cHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworKyAg ICAgICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAgY2FzZSBaV1BfVEVY VF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0lOQ09SUkVDVDoKKyAgICAgICAgIGZvcm1hdC5zZXRG b250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFU ZXh0Q2hhckZvcm1hdDo6V2F2ZVVuZGVybGluZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJs aW5lQ29sb3IoUUNvbG9yKFF0OjpyZWQpKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBl bmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZv cm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0vLyAgICBj YXNlIFF0V2F5bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9zZWxlY3Rpb246Cist Ly8gICAgY2FzZSBRdFdheWxhbmQ6OndsX3RleHRfaW5wdXQ6OnByZWVkaXRfc3R5bGVfbm9uZToK KyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworICAgICB9CitAQCAtMTUzLDcgKzE2Miw3 IEBAIFFJbnB1dE1ldGhvZEV2ZW50IFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxkZXI6OmJ1 aWxkUHJlZWRpdChjb25zdCBRU3RyaW5nICZ0CisgCisgICAgIGlmIChtX3ByZWVkaXRDdXJzb3Ig PCAwKSB7CisgICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0 cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpDdXJzb3IsIDAsIDAsIFFWYXJpYW50KCkpKTsKKy0g ICAgfSBlbHNlIGlmIChtX3ByZWVkaXRDdXJzb3IgPiAwKSB7CisrICAgIH0gZWxzZSB7CisgICAg ICAgICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1 dE1ldGhvZEV2ZW50OjpDdXJzb3IsIGluZGV4RnJvbVdheWxhbmQodGV4dCwgbV9wcmVlZGl0Q3Vy c29yKSwgMSwgUVZhcmlhbnQoKSkpOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvc2hhcmVk L3F3YXlsYW5kbWltZWhlbHBlci5jcHAKK2luZGV4IGE1ZmRkMzRkLi5lMmZlMTkyOCAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKKysrKyBi L3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKK0BAIC02MCw3ICs2 MCw3IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRCeXRlQXJyYXkoUU1pbWVE YXRhICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisgICAgICAgICAgICAgYnVmLm9wZW4oUUlP RGV2aWNlOjpSZWFkV3JpdGUpOworICAgICAgICAgICAgIFFCeXRlQXJyYXkgZm10ID0gIkJNUCI7 CisgICAgICAgICAgICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoUUxhdGluMVN0cmluZygiaW1h Z2UvIikpKSB7CistICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1nRm10ID0gbWltZVR5cGUu bWlkKDYpLnRvVXBwZXIoKS50b0xhdGluMSgpOworKyAgICAgICAgICAgICAgICBRQnl0ZUFycmF5 IGltZ0ZtdCA9IG1pbWVUeXBlLm1pZCg2KS50b0xvd2VyKCkudG9MYXRpbjEoKTsKKyAgICAgICAg ICAgICAgICAgaWYgKFFJbWFnZVdyaXRlcjo6c3VwcG9ydGVkSW1hZ2VGb3JtYXRzKCkuY29udGFp bnMoaW1nRm10KSkKKyAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGltZ0ZtdDsKKyAgICAgICAg ICAgICB9CitAQCAtNzQsNyArNzQsNyBAQCBRQnl0ZUFycmF5IFFXYXlsYW5kTWltZUhlbHBlcjo6 Z2V0Qnl0ZUFycmF5KFFNaW1lRGF0YSAqbWltZURhdGEsIGNvbnN0IFFTdHJpbmcgJgorICAgICAg ICAgUUxpc3Q8UVVybD4gdXJscyA9IG1pbWVEYXRhLT51cmxzKCk7CisgICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IHVybHMuY291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgY29udGVudC5h cHBlbmQodXJscy5hdChpKS50b0VuY29kZWQoKSk7CistICAgICAgICAgICAgY29udGVudC5hcHBl bmQoJ1xuJyk7CisrICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAg IH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGNvbnRlbnQgPSBtaW1lRGF0YS0+ZGF0YShtaW1l VHlwZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZp Y2V2MS90c3RfZGF0YWRldmljZXYxLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9k YXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKK2luZGV4IDE1NjhiM2I5Li4wNjc0MTBk MCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEv dHN0X2RhdGFkZXZpY2V2MS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9k YXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKK0BAIC0zNSw3ICszNSw3IEBACisgCisg dXNpbmcgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yOworIAorLWNvbnN0ZXhwciBpbnQgZGF0YURl dmljZVZlcnNpb24gPSAxOworK2NvbnN0ZXhwciBpbnQgZGF0YURldmljZVZlcnNpb24gPSAzOwor IAorIGNsYXNzIERhdGFEZXZpY2VDb21wb3NpdG9yIDogcHVibGljIERlZmF1bHRDb21wb3NpdG9y IHsKKyBwdWJsaWM6CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3Nl YXR2NS90c3Rfc2VhdHY1LmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUv dHN0X3NlYXR2NS5jcHAKK2luZGV4IDkzMTJjMmU1Li4yZWEzODJmMSAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKKysrKyBiL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKK0BAIC03Myw2 ICs3Myw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgbXVsdGlUb3VjaCgpOworICAgICB2 b2lkIG11bHRpVG91Y2hVcEFuZE1vdGlvbkZyYW1lKCk7CisgICAgIHZvaWQgdGFwQW5kTW92ZUlu U2FtZUZyYW1lKCk7CisrICAgIHZvaWQgY2FuY2VsVG91Y2goKTsKKyB9OworIAorIHZvaWQgdHN0 X3NlYXR2NTo6YmluZHNUb1NlYXQoKQorQEAgLTY0Niw1ICs2NDcsMzQgQEAgdm9pZCB0c3Rfc2Vh dHY1Ojp0YXBBbmRNb3ZlSW5TYW1lRnJhbWUoKQorICAgICBRVFJZX0NPTVBBUkUod2luZG93Lm1f ZXZlbnRzLmxhc3QoKS50b3VjaFBvaW50cy5maXJzdCgpLnN0YXRlKCksIFF0OjpUb3VjaFBvaW50 U3RhdGU6OlRvdWNoUG9pbnRSZWxlYXNlZCk7CisgfQorIAorK3ZvaWQgdHN0X3NlYXR2NTo6Y2Fu Y2VsVG91Y2goKQorK3sKKysgICAgVG91Y2hXaW5kb3cgd2luZG93OworKyAgICBRQ09NUE9TSVRP Ul9UUllfVkVSSUZZKHhkZ1N1cmZhY2UoKSAmJiB4ZGdTdXJmYWNlKCktPm1fY29tbWl0dGVkQ29u ZmlndXJlU2VyaWFsKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqdCA9IHRv dWNoKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICB0LT5zZW5kRG93 bih4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCksIHszMiwgMzJ9LCAxKTsKKysgICAgICAgIHQtPnNl bmRGcmFtZShjKTsKKysgICAgICAgIHQtPnNlbmRDYW5jZWwoYyk7CisrICAgICAgICB0LT5zZW5k RnJhbWUoYyk7CisrICAgIH0pOworKworKyAgICBRVFJZX1ZFUklGWSghd2luZG93Lm1fZXZlbnRz LmVtcHR5KCkpOworKyAgICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cubV9ldmVudHMudGFr ZUZpcnN0KCk7CisrICAgICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6VG91Y2hCZWdpbik7 CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRTdGF0ZXMsIFF0OjpUb3VjaFBvaW50UHJl c3NlZCk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAxKTsKKysg ICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMuZmlyc3QoKS5wb3MoKSwgUVBvaW50RigzMi13 aW5kb3cuZnJhbWVNYXJnaW5zKCkubGVmdCgpLCAzMi13aW5kb3cuZnJhbWVNYXJnaW5zKCkudG9w KCkpKTsKKysgICAgfQorKyAgICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cubV9ldmVudHMu dGFrZUZpcnN0KCk7CisrICAgICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6VG91Y2hDYW5j ZWwpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50cy5sZW5ndGgoKSwgMCk7CisrICAg IH0KKyt9CisrCisgUUNPTVBPU0lUT1JfVEVTVF9NQUlOKHRzdF9zZWF0djUpCisgI2luY2x1ZGUg InRzdF9zZWF0djUubW9jIgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVu dC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKK2luZGV4IDVjNmM4M2JhLi5mYTliNzY2MiAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0 b3IuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21w b3NpdG9yLmNwcAorQEAgLTI3LDYgKzI3LDcgQEAKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAor ICNpbmNsdWRlICJjb3JlY29tcG9zaXRvci5oIgorKyNpbmNsdWRlIDx0aHJlYWQ+CisgCisgbmFt ZXNwYWNlIE1vY2tDb21wb3NpdG9yIHsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKK2luZGV4IDBkOTg4NTIxLi5kMWEyZTdj YiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXBy b3RvY29sLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3Jl cHJvdG9jb2wuY3BwCitAQCAtNDUxLDYgKzQ1MSwxMyBAQCB2b2lkIFRvdWNoOjpzZW5kRnJhbWUo d2xfY2xpZW50ICpjbGllbnQpCisgICAgICAgICBzZW5kX2ZyYW1lKHItPmhhbmRsZSk7CisgfQor IAorK3ZvaWQgVG91Y2g6OnNlbmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpCisreworKyAgICBj b25zdCBhdXRvIHRvdWNoUmVzb3VyY2VzID0gcmVzb3VyY2VNYXAoKS52YWx1ZXMoY2xpZW50KTsK KysgICAgZm9yIChhdXRvICpyIDogdG91Y2hSZXNvdXJjZXMpCisrICAgICAgICBzZW5kX2NhbmNl bChyLT5oYW5kbGUpOworK30KKysKKyB1aW50IEtleWJvYXJkOjpzZW5kRW50ZXIoU3VyZmFjZSAq c3VyZmFjZSkKKyB7CisgICAgIGF1dG8gc2VyaWFsID0gbV9zZWF0LT5tX2NvbXBvc2l0b3ItPm5l eHRTZXJpYWwoKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkL2NvcmVwcm90b2NvbC5oIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9j b3JlcHJvdG9jb2wuaAoraW5kZXggYTFhZjEzN2EuLjIxMGQ4ZGRiIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAorKysrIGIvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAorQEAgLTE1OCw3 ICsxNTgsNyBAQCBjbGFzcyBXbENvbXBvc2l0b3IgOiBwdWJsaWMgR2xvYmFsLCBwdWJsaWMgUXRX YXlsYW5kU2VydmVyOjp3bF9jb21wb3NpdG9yCisgeworICAgICBRX09CSkVDVAorIHB1YmxpYzoK Ky0gICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpjb21wb3NpdG9yLCBp bnQgdmVyc2lvbiA9IDMpCisrICAgIGV4cGxpY2l0IFdsQ29tcG9zaXRvcihDb3JlQ29tcG9zaXRv ciAqY29tcG9zaXRvciwgaW50IHZlcnNpb24gPSA0KQorICAgICAgICAgOiBRdFdheWxhbmRTZXJ2 ZXI6OndsX2NvbXBvc2l0b3IoY29tcG9zaXRvci0+bV9kaXNwbGF5LCB2ZXJzaW9uKQorICAgICAg ICAgLCBtX2NvbXBvc2l0b3IoY29tcG9zaXRvcikKKyAgICAge30KK0BAIC0zNjQsNiArMzY0LDcg QEAgcHVibGljOgorICAgICB1aW50IHNlbmRVcCh3bF9jbGllbnQgKmNsaWVudCwgaW50IGlkKTsK KyAgICAgdm9pZCBzZW5kTW90aW9uKHdsX2NsaWVudCAqY2xpZW50LCBjb25zdCBRUG9pbnRGICZw b3NpdGlvbiwgaW50IGlkKTsKKyAgICAgdm9pZCBzZW5kRnJhbWUod2xfY2xpZW50ICpjbGllbnQp OworKyAgICB2b2lkIHNlbmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpOworIAorICAgICBTZWF0 ICptX3NlYXQgPSBudWxscHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwIGIvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCitpbmRleCBhNDE1Y2Jm NS4uYjFkM2QwN2QgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcAorQEAgLTM0Miw3ICszNDIsNyBAQCBD b21wb3NpdG9yOjpDb21wb3NpdG9yKE1vY2tDb21wb3NpdG9yICptb2NrQ29tcG9zaXRvcikKKyAg ICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgfQorIAorLSAgICB3bF9nbG9iYWxfY3Jl YXRlKG1fZGlzcGxheSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxLCB0aGlzLCBiaW5kQ29t cG9zaXRvcik7CisrICAgIHdsX2dsb2JhbF9jcmVhdGUobV9kaXNwbGF5LCAmd2xfY29tcG9zaXRv cl9pbnRlcmZhY2UsIDQsIHRoaXMsIGJpbmRDb21wb3NpdG9yKTsKKyAKKyAgICAgbV9kYXRhX2Rl dmljZV9tYW5hZ2VyLnJlc2V0KG5ldyBEYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBtX2Rpc3BsYXkp KTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29s ZC9tb2Nrc3VyZmFjZS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29s ZC9tb2Nrc3VyZmFjZS5jcHAKK2luZGV4IGU5ZGY1ZjkwLi5jMzI0NmU0YSAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcAor KysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2Uu Y3BwCitAQCAtMTI1LDYgKzEyNSwxNiBAQCB2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZGFtYWdlKFJl c291cmNlICpyZXNvdXJjZSwKKyAgICAgUV9VTlVTRUQoaGVpZ2h0KTsKKyB9CisgCisrdm9pZCBT dXJmYWNlOjpzdXJmYWNlX2RhbWFnZV9idWZmZXIoUmVzb3VyY2UgKnJlc291cmNlLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQz Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyt7CisrICAgIFFfVU5VU0VEKHJlc291cmNlKTsK KysgICAgUV9VTlVTRUQoeCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICBRX1VOVVNFRCh3aWR0 aCk7CisrICAgIFFfVU5VU0VEKGhlaWdodCk7CisrfQorKworIHZvaWQgU3VyZmFjZTo6c3VyZmFj ZV9mcmFtZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IGNhbGxiYWNrKQorIHsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaAoraW5kZXggOTQ5ZGMyM2QuLmQxNzY4Mzdl IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9j a3N1cmZhY2UuaAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQv bW9ja3N1cmZhY2UuaAorQEAgLTY1LDYgKzY1LDggQEAgcHJvdGVjdGVkOgorICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB3bF9yZXNvdXJjZSAqYnVmZmVyLCBpbnQgeCwgaW50IHkpIG92 ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfZGFtYWdlKFJlc291cmNlICpyZXNvdXJjZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0 aCwgaW50MzJfdCBoZWlnaHQpIG92ZXJyaWRlOworKyAgICB2b2lkIHN1cmZhY2VfZGFtYWdlX2J1 ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkgb3Zl cnJpZGU7CisgICAgIHZvaWQgc3VyZmFjZV9mcmFtZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWxsYmFjaykgb3ZlcnJpZGU7CisgICAgIHZv aWQgc3VyZmFjZV9jb21taXQoUmVzb3VyY2UgKnJlc291cmNlKSBvdmVycmlkZTsKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAg Yi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAKK2lu ZGV4IDk1ZTRlNjA5Li42MGM2NzJjZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwCitAQCAtMTI5LDYgKzEyOSwxMCBAQCB2 b2lkIHRzdF9zdXJmYWNlOjp3YWl0Rm9yRnJhbWVDYWxsYmFja0dsKCkKKyAgICAgLy8gTWFrZSBz dXJlIHdlIGZvbGxvdyBmcmFtZSBjYWxsYmFja3MgZm9yIHNvbWUgZnJhbWVzCisgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAgICB4ZGdQaW5nQW5kV2FpdEZvclBvbmco KTsgLy8gTWFrZSBzdXJlIHRoaW5ncyBoYXZlIGhhcHBlbmVkIG9uIHRoZSBjbGllbnQKKysgICAg ICAgIGlmICghcUVudmlyb25tZW50VmFyaWFibGVJbnRWYWx1ZSgiUVRfV0FZTEFORF9ESVNBQkxF X1dJTkRPV0RFQ09SQVRJT04iKSAmJiBpID09IDApIHsKKysgICAgICAgICAgICBRQ09NUEFSRShi dWZmZXJTcHkuY291bnQoKSwgMSk7CisrICAgICAgICAgICAgYnVmZmVyU3B5LnJlbW92ZUZpcnN0 KCk7CisrICAgICAgICB9CisgICAgICAgICBleGVjKFsmXSB7CisgICAgICAgICAgICAgUVZFUklG WShidWZmZXJTcHkuZW1wdHkoKSk7IC8vIE1ha2Ugc3VyZSBubyBleHRyYSBidWZmZXJzIGhhdmUg YXJyaXZlZAorICAgICAgICAgICAgIFFWRVJJRlkoIXhkZ1RvcGxldmVsKCktPnN1cmZhY2UoKS0+ bV93YWl0aW5nRnJhbWVDYWxsYmFja3MuZW1wdHkoKSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAgYi9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAoraW5kZXggMjI3N2Ji YjguLjc0Nzg3NWI0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hk Z3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVu dC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitAQCAtMzEsNiArMzEsNyBAQAorICNpbmNsdWRl IDxRdEd1aS9RT3BlbkdMV2luZG93PgorICNpbmNsdWRlIDxRdEd1aS9xcGEvcXBsYXRmb3JtbmF0 aXZlaW50ZXJmYWNlLmg+CisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3dheWxh bmQtd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KKysjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50 L3ByaXZhdGUvcXdheWxhbmR3aW5kb3dfcC5oPgorIAorIHVzaW5nIG5hbWVzcGFjZSBNb2NrQ29t cG9zaXRvcjsKKyAKK0BAIC00NSw2ICs0Niw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQg Y29uZmlndXJlU3RhdGVzKCk7CisgICAgIHZvaWQgcG9wdXAoKTsKKyAgICAgdm9pZCB0b29sdGlw T25Qb3B1cCgpOworKyAgICB2b2lkIHRvb2x0aXBBbmRTaWJsaW5nUG9wdXAoKTsKKyAgICAgdm9p ZCBzd2l0Y2hQb3B1cHMoKTsKKyAgICAgdm9pZCBoaWRlUG9wdXBQYXJlbnQoKTsKKyAgICAgdm9p ZCBwb25ncygpOworQEAgLTEzOCw2ICsxNDAsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmln dXJlU2l6ZSgpCisgCisgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgewor KyAgICBRVkVSSUZZKHFwdXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tfVElNRU9VVCIs ICIwIikpOworICAgICBRUmFzdGVyV2luZG93IHdpbmRvdzsKKyAgICAgd2luZG93LnJlc2l6ZSg2 NCwgNDgpOworICAgICB3aW5kb3cuc2hvdygpOworQEAgLTE1NCw5ICsxNTcsMTIgQEAgdm9pZCB0 c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgICAgIC8vIFRvcGxldmVsIHdpbmRvd3Mg ZG9uJ3Qga25vdyB0aGVpciBwb3NpdGlvbiBvbiB4ZGctc2hlbGwKKyAvLyAgICBRQ09NUEFSRSh3 aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RPOiB0aGlz IGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIGVuYWJs ZWQKKyAKKy0vLyAgICBRRVhQRUNUX0ZBSUwoIiIsICJjb25maWd1cmUgaGFzIGFscmVhZHkgYmVl biBhY2tlZCwgd2Ugc2hvdWxkbid0IGhhdmUgdG8gd2FpdCBmb3IgaXNBY3RpdmUiLCBDb250aW51 ZSk7CistLy8gICAgUVZFUklGWSh3aW5kb3cuaXNBY3RpdmUoKSk7CistICAgIFFUUllfVkVSSUZZ KHdpbmRvdy5pc0FjdGl2ZSgpKTsgLy8gSnVzdCBtYWtlIHN1cmUgaXQgZXZlbnR1YWxseSBnZXQn cyBzZXQgY29ycmVjdGx5CisrICAgIC8vIHdpbmRvdy53aW5kb3dzdGF0ZSgpIGlzIGRyaXZlbiBi eSBrZXlib2FyZCBmb2N1cywgaG93ZXZlciBmb3IgZGVjb3JhdGlvbnMgd2Ugd2FudCB0byBmb2xs b3cKKysgICAgLy8gWERHU2hlbGwgdGhpcyBpcyBpbnRlcm5hbCB0byBRdFdheWxhbmQgc28gaXQg aXMgcXVlcmllZCBkaXJlY3RseQorKyAgICBhdXRvIHdheWxhbmRXaW5kb3cgPSBzdGF0aWNfY2Fz dDxRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kV2luZG93ICo+KHdpbmRvdy5oYW5kbGUoKSk7Cisr ICAgIFFfQVNTRVJUKHdheWxhbmRXaW5kb3cpOworKyAgICBRVFJZX1ZFUklGWSh3YXlsYW5kV2lu ZG93LT53aW5kb3dTdGF0ZXMoKS50ZXN0RmxhZygKKysgICAgICAgICAgICBRdDo6V2luZG93QWN0 aXZlKSk7IC8vIEp1c3QgbWFrZSBzdXJlIGl0IGV2ZW50dWFsbHkgZ2V0J3Mgc2V0IGNvcnJlY3Rs eQorIAorICAgICBjb25zdCBRU2l6ZSBzY3JlZW5TaXplKDY0MCwgNDgwKTsKKyAgICAgY29uc3Qg dWludCBtYXhpbWl6ZWRTZXJpYWwgPSBleGVjKFs9XSB7CitAQCAtMTg2LDYgKzE5Miw3IEBAIHZv aWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMoKQorICAgICBRQ09NUEFSRSh3aW5kb3cu d2luZG93U3RhdGVzKCksIFF0OjpXaW5kb3dOb1N0YXRlKTsKKyAgICAgUUNPTVBBUkUod2luZG93 LmZyYW1lR2VvbWV0cnkoKS5zaXplKCksIHdpbmRvd2VkU2l6ZSk7CisgLy8gICAgUUNPTVBBUkUo d2luZG93LmZyYW1lR2VvbWV0cnkoKS50b3BMZWZ0KCksIFFQb2ludCgpKTsgLy8gVE9ETzogdGhp cyBkb2Vzbid0IGN1cnJlbnRseSB3b3JrIHdoZW4gd2luZG93IGRlY29yYXRpb25zIGFyZSBlbmFi bGVkCisrICAgIFFWRVJJRlkocXVuc2V0ZW52KCJRVF9XQVlMQU5EX0ZSQU1FX0NBTExCQUNLX1RJ TUVPVVQiKSk7CisgfQorIAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpwb3B1cCgpCitAQCAtMzQwLDYg KzM0Nyw5MiBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6dG9vbHRpcE9uUG9wdXAoKQorICAgICBRQ09N UE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgwKSwgbnVsbHB0cik7CisgfQorIAorK3ZvaWQg dHN0X3hkZ3NoZWxsOjp0b29sdGlwQW5kU2libGluZ1BvcHVwKCkKKyt7CisrICAgIGNsYXNzIFRv b2xUaXAgOiBwdWJsaWMgUVJhc3RlcldpbmRvdyB7CisrICAgIHB1YmxpYzoKKysgICAgICAgIGV4 cGxpY2l0IFRvb2xUaXAoUVdpbmRvdyAqcGFyZW50KSB7CisrICAgICAgICAgICAgc2V0VHJhbnNp ZW50UGFyZW50KHBhcmVudCk7CisrICAgICAgICAgICAgc2V0RmxhZ3MoUXQ6OlRvb2xUaXApOwor KyAgICAgICAgICAgIHJlc2l6ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgc2hvdygpOworKyAg ICAgICAgfQorKyAgICAgICAgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQgKmV2ZW50 KSBvdmVycmlkZSB7CisrICAgICAgICAgICAgUVJhc3RlcldpbmRvdzo6bW91c2VQcmVzc0V2ZW50 KGV2ZW50KTsKKysgICAgICAgICAgICBtX3BvcHVwID0gbmV3IFFSYXN0ZXJXaW5kb3c7CisrICAg ICAgICAgICAgbV9wb3B1cC0+c2V0VHJhbnNpZW50UGFyZW50KHRyYW5zaWVudFBhcmVudCgpKTsK KysgICAgICAgICAgICBtX3BvcHVwLT5zZXRGbGFncyhRdDo6UG9wdXApOworKyAgICAgICAgICAg IG1fcG9wdXAtPnJlc2l6ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgbV9wb3B1cC0+c2hvdygp OworKyAgICAgICAgfQorKworKyAgICAgICAgUVJhc3RlcldpbmRvdyAqbV9wb3B1cCA9IG51bGxw dHI7CisrICAgIH07CisrCisrICAgIGNsYXNzIFdpbmRvdyA6IHB1YmxpYyBRUmFzdGVyV2luZG93 IHsKKysgICAgcHVibGljOgorKyAgICAgICAgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZl bnQgKmV2ZW50KSBvdmVycmlkZSB7CisrICAgICAgICAgICAgUVJhc3RlcldpbmRvdzo6bW91c2VQ cmVzc0V2ZW50KGV2ZW50KTsKKysgICAgICAgICAgICBtX3Rvb2x0aXAgPSBuZXcgVG9vbFRpcCh0 aGlzKTsKKysgICAgICAgIH0KKysgICAgICAgIFRvb2xUaXAgKm1fdG9vbHRpcCA9IG51bGxwdHI7 CisrICAgIH07CisrCisrICAgIFdpbmRvdyB3aW5kb3c7CisrICAgIHdpbmRvdy5yZXNpemUoMjAw LCAyMDApOworKyAgICB3aW5kb3cuc2hvdygpOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVS SUZZKHhkZ1RvcGxldmVsKCkpOworKyAgICBleGVjKFs9XSB7IHhkZ1RvcGxldmVsKCktPnNlbmRD b21wbGV0ZUNvbmZpZ3VyZSgpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdU b3BsZXZlbCgpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysK KysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqc3VyZmFjZSA9IHhkZ1RvcGxldmVsKCkt PnN1cmZhY2UoKTsKKysgICAgICAgIGF1dG8gKnAgPSBwb2ludGVyKCk7CisrICAgICAgICBhdXRv ICpjID0gY2xpZW50KCk7CisrICAgICAgICBwLT5zZW5kRW50ZXIoc3VyZmFjZSwgezEwMCwgMTAw fSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNs aWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3ByZXNzZWQpOworKyAgICAg ICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0 ZV9yZWxlYXNlZCk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5k TGVhdmUoc3VyZmFjZSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgIH0pOworKwor KyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKCkpOworKyAgICBleGVjKFs9XSB7 IHhkZ1BvcHVwKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZShRUmVjdCgxMDAsIDEwMCwgMTAwLCAx MDApKTsgfSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoKS0+bV94ZGdT dXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrICAgIFFDT01QT1NJVE9SX1RS WV9WRVJJRlkoIXhkZ1BvcHVwKCktPm1fZ3JhYmJlZCk7CisrCisrICAgIGV4ZWMoWz1dIHsKKysg ICAgICAgIGF1dG8gKnN1cmZhY2UgPSB4ZGdQb3B1cCgpLT5zdXJmYWNlKCk7CisrICAgICAgICBh dXRvICpwID0gcG9pbnRlcigpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgpOworKyAgICAg ICAgcC0+c2VuZEVudGVyKHN1cmZhY2UsIHsxMDAsIDEwMH0pOworKyAgICAgICAgcC0+c2VuZEZy YW1lKGMpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50 ZXI6OmJ1dHRvbl9zdGF0ZV9wcmVzc2VkKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50 KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcmVsZWFzZWQpOworKyAgICAgICAg cC0+c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklG WSh4ZGdQb3B1cCgxKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnUG9wdXAoMSktPnNlbmRDb21wbGV0 ZUNvbmZpZ3VyZShRUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsgfSk7CisrICAgIFFDT01QT1NJ VE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25m aWd1cmVTZXJpYWwpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpLT5t X2dyYWJiZWQpOworKworKyAgICAvLyBDbG9zZSB0aGUgbWlkZGxlIHRvb2x0aXAgKGl0IHNob3Vs ZCBub3QgY2xvc2UgdGhlIHNpYmxpbmcgcG9wdXApCisrICAgIHdpbmRvdy5tX3Rvb2x0aXAtPmNs b3NlKCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDEpLCBudWxs cHRyKTsKKysgICAgLy8gVmVyaWZ5IHRoZSByZW1haW5pbmcgeGRnIHN1cmZhY2UgaXMgYSBncmFi IHBvcHVwLi4KKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgwKSk7CisrICAg IFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMCktPm1fZ3JhYmJlZCk7CisrCisrICAg IHdpbmRvdy5tX3Rvb2x0aXAtPm1fcG9wdXAtPmNsb3NlKCk7CisrICAgIFFDT01QT1NJVE9SX1RS WV9DT01QQVJFKHhkZ1BvcHVwKDEpLCBudWxscHRyKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NP TVBBUkUoeGRnUG9wdXAoMCksIG51bGxwdHIpOworK30KKysKKyAvLyBRVEJVRy02NTY4MAorIHZv aWQgdHN0X3hkZ3NoZWxsOjpzd2l0Y2hQb3B1cHMoKQorIHsKK0BAIC01MDUsNyArNTk4LDcgQEAg dm9pZCB0c3RfeGRnc2hlbGw6Om1pbk1heFNpemUoKQorICAgICB3aW5kb3cuc2hvdygpOworICAg ICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCkpOworIAorLSAgICBleGVjKFs9 XSB7IHhkZ1RvcGxldmVsKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZSgpOyB9KTsKKysgICAgLy8g d2UgZG9uJ3Qgcm91bmR0cmlwIHdpdGggb3VyIGNvbmZpZ3VyYXRpb24gdGhlIGluaXRpYWwgY29t bWl0IHNob3VsZCBiZSBjb3JyZWN0CisgCisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhk Z1RvcGxldmVsKCktPm1fY29tbWl0dGVkLm1pblNpemUsIFFTaXplKDEwMCwgMTAwKSk7CisgICAg IFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1RvcGxldmVsKCktPm1fY29tbWl0dGVkLm1heFNp emUsIFFTaXplKDEwMDAsIDEwMDApKTsKK1N1Ym1vZHVsZSBxdHdlYmNoYW5uZWwgNjE4NDIyZWUu LmY4OTQ5NjU1OgorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0 YW9iamVjdHB1Ymxpc2hlci5jcHAgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFv YmplY3RwdWJsaXNoZXIuY3BwCitpbmRleCA1MzZlYjVjLi44OThkNzY5IDEwMDY0NAorLS0tIGEv cXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAorKysr IGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAor QEAgLTE4Niw4ICsxODYsNiBAQCBRX0RFQ0xBUkVfVFlQRUlORk8oT3ZlcmxvYWRSZXNvbHV0aW9u Q2FuZGlkYXRlLCBRX01PVkFCTEVfVFlQRSk7CisgUU1ldGFPYmplY3RQdWJsaXNoZXI6OlFNZXRh T2JqZWN0UHVibGlzaGVyKFFXZWJDaGFubmVsICp3ZWJDaGFubmVsKQorICAgICA6IFFPYmplY3Qo d2ViQ2hhbm5lbCkKKyAgICAgLCB3ZWJDaGFubmVsKHdlYkNoYW5uZWwpCistICAgICwgc2lnbmFs SGFuZGxlcih0aGlzKQorLSAgICAsIGNsaWVudElzSWRsZShmYWxzZSkKKyAgICAgLCBibG9ja1Vw ZGF0ZXMoZmFsc2UpCisgICAgICwgcHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQoZmFsc2UpCisg eworQEAgLTMwMSwxNyArMjk5LDE3IEBAIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVy OjpjbGFzc0luZm9Gb3JPYmplY3QoY29uc3QgUU9iamVjdCAqb2JqZWN0LCBRV2ViCisgICAgIHJl dHVybiBkYXRhOworIH0KKyAKKy12b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRDbGllbnRJ c0lkbGUoYm9vbCBpc0lkbGUpCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2V0Q2xpZW50 SXNJZGxlKGJvb2wgaXNJZGxlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3Bv cnQpCisgeworLSAgICBpZiAoY2xpZW50SXNJZGxlID09IGlzSWRsZSkgeworLSAgICAgICAgcmV0 dXJuOworLSAgICB9CistICAgIGNsaWVudElzSWRsZSA9IGlzSWRsZTsKKy0gICAgaWYgKCFpc0lk bGUgJiYgdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAgICAgdGltZXIuc3RvcCgpOworLSAgICB9 IGVsc2UgaWYgKGlzSWRsZSAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAgICAgdGltZXIu c3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKy0gICAgfQorKyAgICB0cmFu c3BvcnRTdGF0ZVt0cmFuc3BvcnRdLmNsaWVudElzSWRsZSA9IGlzSWRsZTsKKysgICAgaWYgKGlz SWRsZSkKKysgICAgICAgIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyh0cmFuc3BvcnQpOwor K30KKysKKytib29sIFFNZXRhT2JqZWN0UHVibGlzaGVyOjppc0NsaWVudElkbGUoUVdlYkNoYW5u ZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byBmb3VuZCA9IHRy YW5zcG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysgICAgcmV0dXJuIGZvdW5kICE9IHRyYW5z cG9ydFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlOworIH0KKyAKKyBR SnNvbk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZUNsaWVudChRV2ViQ2hh bm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCitAQCAtMzMzLDYgKzMzMSw3IEBAIFFK c29uT2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFXZWJDaGFu bmVsQWJzdHJhY3RUcmFuc3BvcnQKKyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0 aWFsaXplUHJvcGVydHlVcGRhdGVzKGNvbnN0IFFPYmplY3QgKmNvbnN0IG9iamVjdCwgY29uc3Qg UUpzb25PYmplY3QgJm9iamVjdEluZm8pCisgeworKyAgICBhdXRvICpzaWduYWxIYW5kbGVyID0g c2lnbmFsSGFuZGxlckZvcihvYmplY3QpOworICAgICBmb3JlYWNoIChjb25zdCBRSnNvblZhbHVl ICZwcm9wZXJ0eUluZm9WYXIsIG9iamVjdEluZm9bS0VZX1BST1BFUlRJRVNdLnRvQXJyYXkoKSkg eworICAgICAgICAgY29uc3QgUUpzb25BcnJheSAmcHJvcGVydHlJbmZvID0gcHJvcGVydHlJbmZv VmFyLnRvQXJyYXkoKTsKKyAgICAgICAgIGlmIChwcm9wZXJ0eUluZm8uc2l6ZSgpIDwgMikgewor QEAgLTM1MywxOSArMzUyLDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxp emVQcm9wZXJ0eVVwZGF0ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0CisgCisgICAgICAg ICAvLyBPbmx5IGNvbm5lY3QgZm9yIGEgcHJvcGVydHkgdXBkYXRlIG9uY2UKKyAgICAgICAgIGlm IChjb25uZWN0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgeworLSAgICAgICAgICAgIHNpZ25hbEhh bmRsZXIuY29ubmVjdFRvKG9iamVjdCwgc2lnbmFsSW5kZXgpOworKyAgICAgICAgICAgIHNpZ25h bEhhbmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNpZ25hbEluZGV4KTsKKyAgICAgICAgIH0KKyAK KyAgICAgICAgIGNvbm5lY3RlZFByb3BlcnRpZXMuaW5zZXJ0KHByb3BlcnR5SW5kZXgpOworICAg ICB9CisgCisgICAgIC8vIGFsc28gYWx3YXlzIGNvbm5lY3QgdG8gZGVzdHJveWVkIHNpZ25hbAor LSAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVkU2lnbmFsSW5k ZXgpOworKyAgICBzaWduYWxIYW5kbGVyLT5jb25uZWN0VG8ob2JqZWN0LCBzX2Rlc3Ryb3llZFNp Z25hbEluZGV4KTsKKyB9CisgCisgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRp bmdQcm9wZXJ0eVVwZGF0ZXMoKQorIHsKKy0gICAgaWYgKGJsb2NrVXBkYXRlcyB8fCAhY2xpZW50 SXNJZGxlIHx8IHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMuaXNFbXB0eSgpKSB7CisrICAgIGlmIChi bG9ja1VwZGF0ZXMpIHsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorQEAgLTQxNSwxOCAr NDE0LDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRQZW5kaW5nUHJvcGVydHlV cGRhdGVzKCkKKyAKKyAgICAgLy8gZGF0YSBkb2VzIG5vdCBjb250YWluIHNwZWNpZmljIHVwZGF0 ZXMKKyAgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkgeworLSAgICAgICAgc2V0Q2xpZW50SXNJZGxl KGZhbHNlKTsKKy0KKyAgICAgICAgIG1lc3NhZ2VbS0VZX0RBVEFdID0gZGF0YTsKKy0gICAgICAg IGJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlQnJvYWRjYXN0TWVz c2FnZShtZXNzYWdlKTsKKyAgICAgfQorIAorICAgICAvLyBzZW5kIGV2ZXJ5IHByb3BlcnR5IHVw ZGF0ZSB3aGljaCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgYnJvYWRjYXN0ZWQKKyAgICAgY29uc3Qg UUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpjb25zdF9p dGVyYXRvciBzdWVuZCA9IHNwZWNpZmljVXBkYXRlcy5jb25zdEVuZCgpOworICAgICBmb3IgKFFI YXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQqLCBRSnNvbkFycmF5Pjo6Y29uc3RfaXRl cmF0b3IgaXQgPSBzcGVjaWZpY1VwZGF0ZXMuY29uc3RCZWdpbigpOyBpdCAhPSBzdWVuZDsgKytp dCkgeworICAgICAgICAgbWVzc2FnZVtLRVlfREFUQV0gPSBpdC52YWx1ZSgpOworLSAgICAgICAg aXQua2V5KCktPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgZW5xdWV1ZU1lc3NhZ2Uo bWVzc2FnZSwgaXQua2V5KCkpOworICAgICB9CisrCisrICAgIGZvciAoYXV0byBzdGF0ZSA9IHRy YW5zcG9ydFN0YXRlLmJlZ2luKCk7IHN0YXRlICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpOyArK3N0 YXRlKQorKyAgICAgICAgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHN0YXRlLmtleSgpKTsK KyB9CisgCisgUVZhcmlhbnQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Omludm9rZU1ldGhvZChRT2Jq ZWN0ICpjb25zdCBvYmplY3QsIGNvbnN0IFFNZXRhTWV0aG9kICZtZXRob2QsCitAQCAtNTcyLDcg KzU3Miw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNpZ25hbEVtaXR0ZWQoY29uc3Qg UU9iamVjdCAqb2JqZWN0LCBjb25zdCBpbnQgc2lnbmFsCisgICAgICAgICB9CisgICAgIH0gZWxz ZSB7CisgICAgICAgICBwZW5kaW5nUHJvcGVydHlVcGRhdGVzW29iamVjdF1bc2lnbmFsSW5kZXhd ID0gYXJndW1lbnRzOworLSAgICAgICAgaWYgKGNsaWVudElzSWRsZSAmJiAhYmxvY2tVcGRhdGVz ICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CisrICAgICAgICBpZiAoIWJsb2NrVXBkYXRlcyAmJiAh dGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQ REFURV9JTlRFUlZBTCwgdGhpcyk7CisgICAgICAgICB9CisgICAgIH0KK0BAIC01OTAsNyArNTkw LDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6b2JqZWN0RGVzdHJveWVkKGNvbnN0IFFP YmplY3QgKm9iamVjdCkKKyAgICAgLy8gb25seSByZW1vdmUgZnJvbSBoYW5kbGVyIHdoZW4gd2Ug aW5pdGlhbGl6ZWQgdGhlIHByb3BlcnR5IHVwZGF0ZXMKKyAgICAgLy8gY2Y6IGh0dHBzOi8vYnVn cmVwb3J0cy5xdC5pby9icm93c2UvUVRCVUctNjAyNTAKKyAgICAgaWYgKHByb3BlcnR5VXBkYXRl c0luaXRpYWxpemVkKSB7CistICAgICAgICBzaWduYWxIYW5kbGVyLnJlbW92ZShvYmplY3QpOwor KyAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3QpLT5yZW1vdmUob2JqZWN0KTsKKyAgICAg ICAgIHNpZ25hbFRvUHJvcGVydHlNYXAucmVtb3ZlKG9iamVjdCk7CisgICAgIH0KKyAgICAgcGVu ZGluZ1Byb3BlcnR5VXBkYXRlcy5yZW1vdmUob2JqZWN0KTsKK0BAIC04NTIsNiArODUyLDUyIEBA IHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25P YmplY3QgJm1lc3NhZ2UpIGNvbnN0CisgICAgIH0KKyB9CisgCisrdm9pZCBRTWV0YU9iamVjdFB1 Ymxpc2hlcjo6ZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3Nh Z2UpCisreworKyAgICBpZiAod2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMuaXNFbXB0 eSgpKSB7CisrICAgICAgICBxV2FybmluZygiUVdlYkNoYW5uZWwgaXMgbm90IGNvbm5lY3RlZCB0 byBhbnkgdHJhbnNwb3J0cywgY2Fubm90IHNlbmQgbWVzc2FnZTogJXMiLAorKyAgICAgICAgICAg ICAgICAgUUpzb25Eb2N1bWVudChtZXNzYWdlKS50b0pzb24oKS5jb25zdERhdGEoKSk7CisrICAg ICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgZm9yIChhdXRvICp0cmFuc3BvcnQgOiB3ZWJD aGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cykgeworKyAgICAgICAgYXV0byAmc3RhdGUgPSB0 cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdOworKyAgICAgICAgc3RhdGUucXVldWVkTWVzc2FnZXMu YXBwZW5kKG1lc3NhZ2UpOworKyAgICB9CisrfQorKworK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNo ZXI6OmVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFu c3BvcnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8gJnN0YXRlID0gdHJhbnNwb3J0U3RhdGVb dHJhbnNwb3J0XTsKKysgICAgc3RhdGUucXVldWVkTWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpOwor K30KKysKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVw ZGF0ZXMoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAg YXV0byBmb3VuZCA9IHRyYW5zcG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysgICAgaWYgKGZv dW5kICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJZGxl CisrICAgICAgICAmJiAhZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcy5pc0VtcHR5KCkpIHsK KysKKysgICAgICAgIC8vIElmIHRoZSBjbGllbnQgaXMgY29ubmVjdGVkIHdpdGggYW4gaW4tcHJv Y2VzcyB0cmFuc3BvcnQsIGl0IGNhbgorKyAgICAgICAgLy8gaGFwcGVuIHRoYXQgYSBtZXNzYWdl IHRyaWdnZXJzIGEgc3Vic2VxdWVudCBwcm9wZXJ0eSBjaGFuZ2UuIEluCisrICAgICAgICAvLyB0 aGF0IGNhc2UsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHF1ZXVlZCBtZXNzYWdlcyBoYXZl IGFscmVhZHkKKysgICAgICAgIC8vIGJlZW4gY2xlYXJlZDsgb3RoZXJ3aXNlIHRoZSByZWN1cnNp dmUgY2FsbCB3aWxsIHNlbmQgZXZlcnl0aGlnIGFnYWluLgorKyAgICAgICAgLy8gQ2FzZSBpbiBw b2ludDogVGhlIHFtbHdlYmNoYW5uZWwgdGVzdHMgZmFpbCBpZiB3ZSBkb24ndCBjbGVhciB0aGUK KysgICAgICAgIC8vIHF1ZXVlZCBtZXNzYWdlcyBiZWZvcmUgc2VuZGluZyB0aGVtIG91dC4KKysg ICAgICAgIC8vIEZvciB0aGF0IHNhbWUgcmVhc29uIHNldCB0aGUgY2xpZW50IHRvICJidXN5IiAo YWthIG5vbi1pZGxlKSBqdXN0CisrICAgICAgICAvLyByaWdodCBiZWZvcmUgc2VuZGluZyBvdXQg dGhlIG1lc3NhZ2VzOyBvdGhlcndpc2UgYSBwb3RlbnRpYWwKKysgICAgICAgIC8vICJJZGxlIiB0 eXBlIG1lc3NhZ2Ugd2lsbCBub3QgY29ycmVjdGx5IHJlc3RvcmUgdGhlIElkbGUgc3RhdGUuCisr ICAgICAgICBjb25zdCBhdXRvIG1lc3NhZ2VzID0gc3RkOjptb3ZlKGZvdW5kLnZhbHVlKCkucXVl dWVkTWVzc2FnZXMpOworKyAgICAgICAgUV9BU1NFUlQoZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNz YWdlcy5pc0VtcHR5KCkpOworKyAgICAgICAgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGUgPSBm YWxzZTsKKysKKysgICAgICAgIGZvciAoY29uc3QgYXV0byAmbWVzc2FnZSA6IG1lc3NhZ2VzKSB7 CisrICAgICAgICAgICAgdHJhbnNwb3J0LT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKysgICAgICAg IH0KKysgICAgfQorK30KKysKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNz YWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNw b3J0ICp0cmFuc3BvcnQpCisgeworICAgICBpZiAoIXdlYkNoYW5uZWwtPmRfZnVuYygpLT50cmFu c3BvcnRzLmNvbnRhaW5zKHRyYW5zcG9ydCkpIHsKK0BAIC04NjYsNyArOTEyLDcgQEAgdm9pZCBR TWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVz c2FnZSwgUVdlYkNoYW5uZWwKKyAKKyAgICAgY29uc3QgTWVzc2FnZVR5cGUgdHlwZSA9IHRvVHlw ZShtZXNzYWdlLnZhbHVlKEtFWV9UWVBFKSk7CisgICAgIGlmICh0eXBlID09IFR5cGVJZGxlKSB7 CistICAgICAgICBzZXRDbGllbnRJc0lkbGUodHJ1ZSk7CisrICAgICAgICBzZXRDbGllbnRJc0lk bGUodHJ1ZSwgdHJhbnNwb3J0KTsKKyAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVJbml0KSB7 CisgICAgICAgICBpZiAoIW1lc3NhZ2UuY29udGFpbnMoS0VZX0lEKSkgeworICAgICAgICAgICAg IHFXYXJuaW5nKCJKU09OIG1lc3NhZ2Ugb2JqZWN0IGlzIG1pc3NpbmcgdGhlIGlkIHByb3BlcnR5 OiAlcyIsCitAQCAtOTEzLDkgKzk1OSw5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Omhh bmRsZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsCisgICAg ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICB0cmFuc3BvcnQtPnNlbmRNZXNzYWdl KGNyZWF0ZVJlc3BvbnNlKG1lc3NhZ2UudmFsdWUoS0VZX0lEKSwgd3JhcFJlc3VsdChyZXN1bHQs IHRyYW5zcG9ydCkpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlQ29ubmVjdFRv U2lnbmFsKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2JqZWN0LCBt ZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisrICAgICAgICAgICAgc2lnbmFs SGFuZGxlckZvcihvYmplY3QpLT5jb25uZWN0VG8ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9T SUdOQUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZURpc2Nv bm5lY3RGcm9tU2lnbmFsKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5kaXNjb25uZWN0 RnJvbShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKysgICAg ICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPmRpc2Nvbm5lY3RGcm9tKG9iamVjdCwg bWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworICAgICAgICAgfSBlbHNlIGlm ICh0eXBlID09IFR5cGVTZXRQcm9wZXJ0eSkgeworICAgICAgICAgICAgIHNldFByb3BlcnR5KG9i amVjdCwgbWVzc2FnZS52YWx1ZShLRVlfUFJPUEVSVFkpLnRvSW50KC0xKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBtZXNzYWdlLnZhbHVlKEtFWV9WQUxVRSkpOworQEAgLTkzMSw2ICs5Nzcs NyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRCbG9ja1VwZGF0ZXMoYm9vbCBibG9j aykKKyAgICAgYmxvY2tVcGRhdGVzID0gYmxvY2s7CisgCisgICAgIGlmICghYmxvY2tVcGRhdGVz KSB7CisrICAgICAgICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMp OworICAgICAgICAgc2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKTsKKyAgICAgfSBlbHNlIGlm ICh0aW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICB0aW1lci5zdG9wKCk7CitAQCAtOTQ4LDQg Kzk5NSwxNSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjp0aW1lckV2ZW50KFFUaW1lckV2 ZW50ICpldmVudCkKKyAgICAgfQorIH0KKyAKKytTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVi bGlzaGVyPiAqUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNpZ25hbEhhbmRsZXJGb3IoY29uc3QgUU9i amVjdCAqb2JqZWN0KQorK3sKKysgICAgYXV0byB0aHJlYWQgPSBvYmplY3QtPnRocmVhZCgpOwor KyAgICBhdXRvIGl0ID0gc2lnbmFsSGFuZGxlcnMuZmluZCh0aHJlYWQpOworKyAgICBpZiAoaXQg PT0gc2lnbmFsSGFuZGxlcnMuZW5kKCkpIHsKKysgICAgICAgIGl0ID0gc2lnbmFsSGFuZGxlcnMu ZW1wbGFjZSh0aHJlYWQsIHRoaXMpLmZpcnN0OworKyAgICAgICAgaXQtPnNlY29uZC5tb3ZlVG9U aHJlYWQodGhyZWFkKTsKKysgICAgfQorKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7CisrfQorKwor IFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5u ZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVs L3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAoraW5kZXggYmJkOTg3NS4uNDcxM2VmMSAxMDA2NDQK Ky0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9w LmgKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hl cl9wLmgKK0BAIC01OSw2ICs1OSw5IEBACisgI2luY2x1ZGUgPFFCYXNpY1RpbWVyPgorICNpbmNs dWRlIDxRUG9pbnRlcj4KKyAjaW5jbHVkZSA8UUpzb25PYmplY3Q+CisrI2luY2x1ZGUgPFFRdWV1 ZT4KKysKKysjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyAKKyAjaW5jbHVkZSAicXdlYmNoYW5u ZWxnbG9iYWwuaCIKKyAKK0BAIC0xMDksMTcgKzExMiwzNiBAQCBwdWJsaWM6CisgICAgICAqLwor ICAgICB2b2lkIGJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpIGNv bnN0OworIAorKyAgICAvKioKKysgICAgICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAgbWVzc2FnZSB0 byBhbGwga25vd24gdHJhbnNwb3J0cy4KKysgICAgICovCisrICAgIHZvaWQgZW5xdWV1ZUJyb2Fk Y2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpOworKworKyAgICAvKioKKysg ICAgICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAgbWVzc2FnZSB0byBAcCB0cmFuc3BvcnQuCisrICAg ICAqLworKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdl LCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworKyAgICAvKioK KysgICAgICogSWYgY2xpZW50IGZvciBnaXZlbiBAcCB0cmFuc3BvcnQgaXMgaWRsZSwgc2VuZCBx dWV1ZWQgbWVzc2FnZWQgdG8gQHAgdHJhbnNwb3J0IGFuZCB0aGVuIG1hcmsKKysgICAgICogdGhl IGNsaWVudCBhcyBub3QgaWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2VuZEVucXVldWVkUHJv cGVydHlVcGRhdGVzKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7Cisr CisgICAgIC8qKgorICAgICAgKiBTZXJpYWxpemUgdGhlIFFNZXRhT2JqZWN0IG9mIEBwIG9iamVj dCBhbmQgcmV0dXJuIGl0IGluIEpTT04gZm9ybS4KKyAgICAgICovCisgICAgIFFKc29uT2JqZWN0 IGNsYXNzSW5mb0Zvck9iamVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWJDaGFubmVsQWJz dHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisgCisgICAgIC8qKgorLSAgICAgKiBTZXQgdGhl IGNsaWVudCB0byBpZGxlIG9yIGJ1c3ksIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBAcCBpc0lkbGUu CistICAgICAqCistICAgICAqIFdoZW4gdGhlIHZhbHVlIGNoYW5nZWQsIHN0YXJ0L3N0b3AgdGhl IHByb3BlcnR5IHVwZGF0ZSB0aW1lciBhY2NvcmRpbmdseS4KKysgICAgICogU2V0IHRoZSBjbGll bnQgdG8gaWRsZSBvciBidXN5IGZvciBhIHNpbmdsZSBAcCB0cmFuc3BvcnQsIGJhc2VkIG9uIHRo ZSB2YWx1ZSBvZiBAcCBpc0lkbGUuCisrICAgICAqLworKyAgICB2b2lkIHNldENsaWVudElzSWRs ZShib29sIGlzSWRsZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsK KysKKysgICAgLyoqCisrICAgICAqIENoZWNrIHRoYXQgY2xpZW50IGlzIGlkbGUgZm9yIEBwIHRy YW5zcG9ydC4KKyAgICAgICovCistICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxl KTsKKysgICAgYm9vbCBpc0NsaWVudElkbGUoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAq dHJhbnNwb3J0KTsKKyAKKyAgICAgLyoqCisgICAgICAqIEluaXRpYWxpemUgY2xpZW50cyBieSBz ZW5kaW5nIHRoZW0gdGhlIGNsYXNzIGluZm9ybWF0aW9uIG9mIHRoZSByZWdpc3RlcmVkIG9iamVj dHMuCitAQCAtMjcyLDEwICsyOTQsMTggQEAgcHJpdmF0ZToKKyAgICAgZnJpZW5kIGNsYXNzIFRl c3RXZWJDaGFubmVsOworIAorICAgICBRV2ViQ2hhbm5lbCAqd2ViQ2hhbm5lbDsKKy0gICAgU2ln bmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gc2lnbmFsSGFuZGxlcjsKKysgICAgc3Rk Ojp1bm9yZGVyZWRfbWFwPGNvbnN0IFFUaHJlYWQqLCBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0 UHVibGlzaGVyPj4gc2lnbmFsSGFuZGxlcnM7CisrICAgIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmpl Y3RQdWJsaXNoZXI+ICpzaWduYWxIYW5kbGVyRm9yKGNvbnN0IFFPYmplY3QgKm9iamVjdCk7Cisg CistICAgIC8vIHRydWUgd2hlbiB0aGUgY2xpZW50IGlzIGlkbGUsIGZhbHNlIG90aGVyd2lzZQor LSAgICBib29sIGNsaWVudElzSWRsZTsKKysgICAgc3RydWN0IFRyYW5zcG9ydFN0YXRlCisrICAg IHsKKysgICAgICAgIFRyYW5zcG9ydFN0YXRlKCkgOiBjbGllbnRJc0lkbGUoZmFsc2UpIHsgfQor KyAgICAgICAgLy8gdHJ1ZSB3aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3RoZXJ3aXNl CisrICAgICAgICBib29sIGNsaWVudElzSWRsZTsKKysgICAgICAgIC8vIG1lc3NhZ2VzIHRvIHNl bmQKKysgICAgICAgIFFRdWV1ZTxRSnNvbk9iamVjdD4gcXVldWVkTWVzc2FnZXM7CisrICAgIH07 CisrICAgIFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKiwgVHJhbnNwb3J0U3Rh dGU+IHRyYW5zcG9ydFN0YXRlOworIAorICAgICAvLyB0cnVlIHdoZW4gbm8gcHJvcGVydHkgdXBk YXRlcyBzaG91bGQgYmUgc2VudCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgIGJvb2wgYmxvY2tVcGRh dGVzOworZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5k bGVyX3AuaCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAor aW5kZXggMjdhZmFkYi4uZDc3MzczYyAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2Vi Y2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAorKysrIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFu bmVsL3NpZ25hbGhhbmRsZXJfcC5oCitAQCAtNTYsNiArNTYsNyBAQAorICNpbmNsdWRlIDxRVmVj dG9yPgorICNpbmNsdWRlIDxRTWV0YU1ldGhvZD4KKyAjaW5jbHVkZSA8UURlYnVnPgorKyNpbmNs dWRlIDxRVGhyZWFkPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTcxLDYgKzcyLDcg QEAgc3RhdGljIGNvbnN0IGludCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4ID0gUU9iamVjdDo6c3Rh dGljTWV0YU9iamVjdC5pbmRleE9mTWV0aG8KKyB0ZW1wbGF0ZTxjbGFzcyBSZWNlaXZlcj4KKyBj bGFzcyBTaWduYWxIYW5kbGVyIDogcHVibGljIFFPYmplY3QKKyB7CisrICAgIFFfRElTQUJMRV9D T1BZKFNpZ25hbEhhbmRsZXIpCisgcHVibGljOgorICAgICBTaWduYWxIYW5kbGVyKFJlY2VpdmVy ICpyZWNlaXZlciwgUU9iamVjdCAqcGFyZW50ID0gMCk7CisgCitAQCAtMjY4LDYgKzI3MCw3IEBA IGludCBTaWduYWxIYW5kbGVyPFJlY2VpdmVyPjo6cXRfbWV0YWNhbGwoUU1ldGFPYmplY3Q6OkNh bGwgY2FsbCwgaW50IG1ldGhvZElkLCB2CisgICAgIGlmIChjYWxsID09IFFNZXRhT2JqZWN0OjpJ bnZva2VNZXRhTWV0aG9kKSB7CisgICAgICAgICBjb25zdCBRT2JqZWN0ICpvYmplY3QgPSBzZW5k ZXIoKTsKKyAgICAgICAgIFFfQVNTRVJUKG9iamVjdCk7CisrICAgICAgICBRX0FTU0VSVChRVGhy ZWFkOjpjdXJyZW50VGhyZWFkKCkgPT0gb2JqZWN0LT50aHJlYWQoKSk7CisgICAgICAgICBRX0FT U0VSVChzZW5kZXJTaWduYWxJbmRleCgpID09IG1ldGhvZElkKTsKKyAgICAgICAgIFFfQVNTRVJU KG1fY29ubmVjdGlvbnNDb3VudGVyLmNvbnRhaW5zKG9iamVjdCkpOworICAgICAgICAgUV9BU1NF UlQobV9jb25uZWN0aW9uc0NvdW50ZXIudmFsdWUob2JqZWN0KS5jb250YWlucyhtZXRob2RJZCkp OworZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5l bC5jcHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwCitp bmRleCA5ODkxNjg3Li4zY2E4MWMyIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1 dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8v cW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAorQEAgLTQ2LDcgKzQ2LDExIEBAIFRlc3RXZWJDaGFubmVs Ojp+VGVzdFdlYkNoYW5uZWwoKQorIAorIGJvb2wgVGVzdFdlYkNoYW5uZWw6OmNsaWVudElzSWRs ZSgpIGNvbnN0CisgeworLSAgICByZXR1cm4gUVdlYkNoYW5uZWw6OmRfZnVuYygpLT5wdWJsaXNo ZXItPmNsaWVudElzSWRsZTsKKysgICAgZm9yIChhdXRvICp0cmFuc3BvcnQgOiBRV2ViQ2hhbm5l bDo6ZF9mdW5jKCktPnRyYW5zcG9ydHMpIHsKKysgICAgICAgIGlmIChRV2ViQ2hhbm5lbDo6ZF9m dW5jKCktPnB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKHRyYW5zcG9ydCkpCisrICAgICAgICAgICAg cmV0dXJuIHRydWU7CisrICAgIH0KKysgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKyBRVF9FTkRf TkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5l bC90c3Rfd2ViY2hhbm5lbC5jcHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVs L3RzdF93ZWJjaGFubmVsLmNwcAoraW5kZXggMTgxZGE5ZS4uMzdmOTg5YSAxMDA2NDQKKy0tLSBh L3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCisr KysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmNw cAorQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0VHJhbnNwb3J0 V3JhcE9iamVjdFByb3BlcnRpZXMoKQorICAgICBEdW1teVRyYW5zcG9ydCAqZHVtbXlUcmFuc3Bv cnQgPSBuZXcgRHVtbXlUcmFuc3BvcnQodGhpcyk7CisgICAgIGNoYW5uZWwuY29ubmVjdFRvKGR1 bW15VHJhbnNwb3J0KTsKKyAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5pbml0aWFs aXplQ2xpZW50KGR1bW15VHJhbnNwb3J0KTsKKy0gICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlz aGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSk7CisrICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxp c2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsIGR1bW15VHJhbnNwb3J0KTsKKyAKKyAgICAgUUNP TVBBUkUoY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT50cmFuc3BvcnRlZFdyYXBwZWRPYmpl Y3RzLnNpemUoKSwgMCk7CisgCitAQCAtOTQzLDggKzk0Myw2IEBAIHZvaWQgVGVzdFdlYkNoYW5u ZWw6OnRlc3RJbmZpbml0ZVJlY3Vyc2lvbigpCisgCisgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVz dEFzeW5jT2JqZWN0KCkKKyB7CistICAgIFFTS0lQKCJUaGlzIHRlc3QgaXMgYnJva2VuLiBTZWUg UVRCVUctODA3MjkiKTsKKy0KKyAgICAgUVdlYkNoYW5uZWwgY2hhbm5lbDsKKyAgICAgY2hhbm5l bC5jb25uZWN0VG8obV9kdW1teVRyYW5zcG9ydCk7CisgCitAQCAtOTkwLDYgKzk4OCw1MCBAQCB2 b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5bmNPYmplY3QoKQorICAgICB0aHJlYWQud2FpdCgp OworIH0KKyAKKyt2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0UHJvcGVydHlNdWx0aXBsZVRyYW5z cG9ydHMoKQorK3sKKysgICAgRHVtbXlUcmFuc3BvcnQgdHJhbnNwb3J0MTsKKysgICAgRHVtbXlU cmFuc3BvcnQgdHJhbnNwb3J0MjsKKysKKysgICAgUVdlYkNoYW5uZWwgY2hhbm5lbDsKKysgICAg UU1ldGFPYmplY3RQdWJsaXNoZXIgKnB1Ymxpc2hlciA9IGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxp c2hlcjsKKysKKysgICAgVGVzdE9iamVjdCB0ZXN0T2JqOworKyAgICB0ZXN0T2JqLnNldE9iamVj dE5hbWUoInRlc3RPYmplY3QiKTsKKysgICAgY2hhbm5lbC5yZWdpc3Rlck9iamVjdCh0ZXN0T2Jq Lm9iamVjdE5hbWUoKSwgJnRlc3RPYmopOworKyAgICBjaGFubmVsLmNvbm5lY3RUbygmdHJhbnNw b3J0MSk7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQyKTsKKysKKysgICAgdGVz dE9iai5zZXRQcm9wKCJIZWxsbyIpOworKworKyAgICBwdWJsaXNoZXItPmluaXRpYWxpemVDbGll bnQoJnRyYW5zcG9ydDEpOworKyAgICBwdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQoJnRyYW5z cG9ydDIpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0 MSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwg dHJ1ZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQy KSwgZmFsc2UpOworKyAgICBRVkVSSUZZKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuaXNFbXB0 eSgpKTsKKysgICAgUVZFUklGWSh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLmlzRW1wdHkoKSk7 CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiV29ybGQiKTsKKysgICAgUVRSWV9DT01QQVJFX1dJ VEhfVElNRU9VVCh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUsIDIwMDApOwor KyAgICBRQ09NUEFSRSh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMHUpOworKyAg ICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7CisrICAgIFFU UllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCks IDF1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5z cG9ydDEpLCBmYWxzZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0 cmFuc3BvcnQyKSwgZmFsc2UpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIiEhISIpOworKyAg ICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7CisrICAgIFFD T01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgdHJ1ZSk7CisrICAg IFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2UpOwor KyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCku c2l6ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50 KCkuc2l6ZSgpLCAxdSk7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0 cmFuc3BvcnQxKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQxLm1l c3NhZ2VzU2VudCgpLnNpemUoKSwgMnUsIDIwMDApOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXIt PmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUUNPTVBBUkUocHVibGlz aGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrfQorKworIGNsYXNzIEZ1 bmN0aW9uV3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0CisgeworICAgICBRX09CSkVDVAorQEAgLTEw ODIsNyArMTEyNCw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoSW5pdGlhbGl6ZUNsaWVu dHMoKQorIAorICAgICAgICAgcHVibGlzaGVyLT5wcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZCA9 IGZhbHNlOworICAgICAgICAgcHVibGlzaGVyLT5zaWduYWxUb1Byb3BlcnR5TWFwLmNsZWFyKCk7 CistICAgICAgICBwdWJsaXNoZXItPnNpZ25hbEhhbmRsZXIuY2xlYXIoKTsKKysgICAgICAgIHB1 Ymxpc2hlci0+c2lnbmFsSGFuZGxlcnMuY2xlYXIoKTsKKyAgICAgfQorIH0KKyAKK0BAIC0xMTA3 LDcgKzExNDksNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjpiZW5jaFByb3BlcnR5VXBkYXRlcygp CisgICAgICAgICAgICAgb2JqLT5jaGFuZ2UoKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGNo YW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+Y2xpZW50SXNJZGxlID0gdHJ1ZTsKKysgICAgICAg IGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsIG1fZHVt bXlUcmFuc3BvcnQpOworICAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZW5k UGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0d2Vi Y2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaCBiL3F0d2ViY2hh bm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAoraW5kZXggZWFlMjFm NC4uZGQ0ZTY5MCAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5u ZWwvdHN0X3dlYmNoYW5uZWwuaAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hh bm5lbC90c3Rfd2ViY2hhbm5lbC5oCitAQCAtMzQ4LDYgKzM0OCw3IEBAIHByaXZhdGUgc2xvdHM6 CisgICAgIHZvaWQgdGVzdEpzb25Ub1ZhcmlhbnQoKTsKKyAgICAgdm9pZCB0ZXN0SW5maW5pdGVS ZWN1cnNpb24oKTsKKyAgICAgdm9pZCB0ZXN0QXN5bmNPYmplY3QoKTsKKysgICAgdm9pZCB0ZXN0 UHJvcGVydHlNdWx0aXBsZVRyYW5zcG9ydHMoKTsKKyAgICAgdm9pZCB0ZXN0RGVsZXRpb25EdXJp bmdNZXRob2RJbnZvY2F0aW9uX2RhdGEoKTsKKyAgICAgdm9pZCB0ZXN0RGVsZXRpb25EdXJpbmdN ZXRob2RJbnZvY2F0aW9uKCk7CisgCitTdWJtb2R1bGUgcXR3ZWJlbmdpbmUgZjMyODA1NGQuLi4z OGUwZGY2YyAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHdlYnNvY2tldHMgNjU4 NTA5NTQuLjYzZmI4ZGExOgorZGlmZiAtLWdpdCBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0 cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tl dHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCitpbmRleCAyYWZmZGQ1Li45NWYxMTk0IDEw MDY0NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJv Y2Vzc29yLmNwcAorKysrIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRk YXRhcHJvY2Vzc29yLmNwcAorQEAgLTI3Myw2ICsyNzMsNyBAQCB2b2lkIFFXZWJTb2NrZXREYXRh UHJvY2Vzc29yOjpjbGVhcigpCisgICAgIGlmICghbV9wQ29udmVydGVyU3RhdGUpCisgICAgICAg ICBtX3BDb252ZXJ0ZXJTdGF0ZSA9IG5ldyBRVGV4dENvZGVjOjpDb252ZXJ0ZXJTdGF0ZShRVGV4 dENvZGVjOjpDb252ZXJ0SW52YWxpZFRvTnVsbCB8CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVGV4dENvZGVjOjpJZ25vcmVIZWFk ZXIpOworKyAgICBmcmFtZS5jbGVhcigpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdHdl YnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcCBiL3F0d2Vic29j a2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCitpbmRleCBkZjg3YTkz Li5kMDQ2NWYxIDEwMDY0NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJz b2NrZXRwcm90b2NvbC5jcHAKKysrKyBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vi c29ja2V0cHJvdG9jb2wuY3BwCitAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUVdlYlNvY2tldFBy b3RvY29sOjptYXNrKGNoYXIgKnBheWxvYWQsIHF1aW50NjQgc2l6ZSwgcXVpbnQzMiBtYXNraW5n S2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWludDgoKG1hc2tpbmdLZXkgJiAw eDAwMDBGRjAwdSkgPj4gOCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aW50OCgo bWFza2luZ0tleSAmIDB4MDAwMDAwRkZ1KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIH07 CistICAgIGludCBpID0gMDsKKysgICAgcXVpbnQ2NCBpID0gMDsKKyAgICAgd2hpbGUgKHNpemUt LSA+IDApCisgICAgICAgICAqcGF5bG9hZCsrIF49IG1hc2tbaSsrICUgNF07CisgfQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQppbmRleCBm ODc5ZGYzYTNlNzA2Li5hMGQzMDM2YWY3OWE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIwogIyBy ZXZidW1wIGxpYnF0eGRnIGFmdGVyIGJ1bXBpbmcgcGF0Y2ggdmVyc2lvbgogcGtnbmFtZT1xdDUK LXZlcnNpb249NS4xNS43KzIwMjIxMTE5Cit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQorYnVp bGRfc3R5bGU9bWV0YQogIyBjb21taXQgZjhjOWZiMzA0YmMzZTUzYjNhYTA3Zjk2MmNkNzRlOTE2 MGRlY2NjYwogIyBiYXNlIHJlcG86IGh0dHBzOi8vaW52ZW50LmtkZS5vcmcvcXQvcXQvcXQ1Ci1y ZXZpc2lvbj04Ci1idWlsZF9zdHlsZT1tZXRhCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGNsYW5n IGZsZXggcGVybCBnbGliLWRldmVsIHBrZy1jb25maWcKICBweXRob24zIHJlMmMgcnVieSB3aGlj aCIKIG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIFZ1bGthbi1IZWFkZXJzIGFsc2EtbGliLWRldmVs IGRvdWJsZS1jb252ZXJzaW9uLWRldmVsCkBAIC0yOSw5ICsyOSw5IEBAIGhvbWVwYWdlPSJodHRw czovL3F0LmlvLyIKICMgdGFyYmFsbCBpcyBnZW5lcmF0ZWQgd2l0aCBgZ2l0IGFyY2hpdmUtYWxs IHF0NS0kdmVyc2lvbi50YXIuZ3pgCiAjIHRvIGtlZXAgdGhlIHNpemUgc21hbGxlciBxdHdlYmVu Z2luZSwgcXR3ZWJ2aWV3LCBxdGRvY2dhbGxlcnksIHF0YWN0aXZlcXQgYW5kIHF0cGltCiAjIGNh biBiZSBtYXJrZWQgd2l0aCB0aGUgZXhwb3J0LWlnbm9yZSBhdHRyaWJ1dGUKLWRpc3RmaWxlcz0i aHR0cHM6Ly92b2lkLmpvaG5ueW5hdG9yLmRldi9kaXN0ZmlsZXMvcXQ1LSR7dmVyc2lvbn0udGFy Lmd6IgotY2hlY2tzdW09OWQ1N2FmNDcxYzc4MDI5YTM2MjI3NmI3Yzk5MTA4ZWEwMDlmNTExYmI5 YmE2ZmY2Y2I4ODRmNmRkZDI1NWU5ZgotcHl0aG9uX3ZlcnNpb249MworZGlzdGZpbGVzPSJodHRw czovL2Rvd25sb2FkLnF0LmlvL2FyY2hpdmUvcXQvNS4xNS8ke3ZlcnNpb259L3NpbmdsZS9xdC1l dmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tzdW09Nzc2 YTkzMDJjMzM2NjcxZjk0MDZhNTNiZDMwYjhlMzZmODI1NzQyYjJlYzQ0YTU3YzA4MjE3YmZmMGZh ODZiOQorcHl0aG9uX3ZlcnNpb249MiAjdW52ZXJpZmllZAogcmVwbGFjZXM9InF0NS1kb2M8NS42 LjAgcXQ1LXF1aWNrMTw1LjYuMCBxdDUtcXVpY2sxLWRldmVsPDUuNi4wIHF0NS13ZWJraXQ8NS42 LjAgcXQ1LXdlYmtpdC1kZXZlbDw1LjYuMAogIHF0NS1lbmdpbmlvPDUuNy4xIHF0NS1lbmdpbmlv LWRldmVsPDUuNy4xIHF0NS1wbHVnaW4tZ3RrPDUuNy4xIHF0NS1jYW52YXMzZDw1LjEzLjAiCiBs aWIzMm1vZGU9ZnVsbApAQCAtMjQ2LDcgKzI0Niw2IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkjIG9w dHMrPSIgLXYiCiAJb3B0cys9IiAtc2tpcCBxdHdlYmVuZ2luZSIKIAlvcHRzKz0iIC1za2lwIHF0 d2VidmlldyIKLQlvcHRzKz0iIC1za2lwIHF0ZG9jZ2FsbGVyeSIKIAlvcHRzKz0iIC1za2lwIHF0 cGltIgogCW9wdHMrPSIgLXNraXAgcXRzeXN0ZW1zIgogCW9wdHMrPSIgLXNraXAgcXRzcGVlY2gi CgpGcm9tIDhmYTU1NjNkYjNiYWUyNmY2ZjQwOWM2OTc0YzBhNDA5Nzc1ZjA0NmMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2My8xMTVdIHF0 YXY6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9xdGF2L3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlIGIvc3JjcGtncy9xdGF2L3RlbXBsYXRl CmluZGV4IDc3NWQ1YTEzOWE5ZWYuLjJkMDBhZDEwNDM1NWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv cXRhdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKQEAgLTQsNyArNCw3IEBA IHZlcnNpb249MS4xMy4wCiByZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2Vk ZXBlbmRzPSJxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRl dmVsIGxpYmFzcy1kZXZlbCBsaWJvcGVuYWwtZGV2ZWwKK21ha2VkZXBlbmRzPSJmZm1wZWc0LWRl dmVsIGxpYmFzcy1kZXZlbCBsaWJvcGVuYWwtZGV2ZWwKICBsaWJ2YS1nbHgtZGV2ZWwgbGliWHYt ZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtc3ZnLWRl dmVsCiAgcXQ1LXF1aWNrY29udHJvbHMiCgpGcm9tIGZhZGYwNmZiZTE0NjY0ODg1NGQzYWNiN2U2 ODE1YjJjZWY4NTc2NDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA2NC8xMTVdIHF0b3g6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9xdG94L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdG94L3RlbXBsYXRlIGIv c3JjcGtncy9xdG94L3RlbXBsYXRlCmluZGV4IDM5YzY0M2ZlY2RiNWEuLmJiNzBlN2Y1MTI0MGEg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0b3gvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdG94JwogcGtnbmFt ZT1xdG94CiB2ZXJzaW9uPTEuMTcuNgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5 bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVQREFURV9DSEVDSz1PRkYKICAtREdJVF9ERVND UklCRT0ke3ZlcnNpb259CgpGcm9tIDM4ODUzZDVlMjBmYzZiOWQ5MmRiNzg1MTUxZjkyNmVlYjAx Yjg0NzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BB VENIIDA2NS8xMTVdIHJldHJvYXJjaDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL3JldHJvYXJjaC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBs YXRlIGIvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKaW5kZXggY2IzMTI1YzVkYmYxYS4uYzY1 YzI2ZjdiZjAzMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdyZXRyb2FyY2gnCiBwa2duYW1lPXJldHJvYXJjaAogdmVyc2lvbj0xLjE2LjAuMwot cmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1cmVf YXJncz0iLS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0YyAtLWVuYWJsZS1uZXR3b3JraW5n CiAgLS1lbmFibGUtdWRldiAtLWRpc2FibGUtYnVpbHRpbmZsYWMgLS1kaXNhYmxlLWJ1aWx0aW5n bHNsYW5nCgpGcm9tIGM4N2Y1NjRhN2E5N2JiMmNiNWU3ZWYwYTYwOTY2YzM4YTM4YjBjNGMgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2Ni8x MTVdIHNjcmNweTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3NjcmNweS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIGIvc3JjcGtncy9zY3Jj cHkvdGVtcGxhdGUKaW5kZXggYWMxOGJjMDM0MThjZS4uZjM5YTdmNjc4YWIzNSAxMDA2NDQKLS0t IGEvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzY3JjcHknCiBwa2duYW1lPXNj cmNweQogdmVyc2lvbj0yLjEuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGNvbXBpbGVfc2VydmVyPWZhbHNlCiAgLURwcmVidWls dF9zZXJ2ZXI9L3Vzci9zaGFyZS9zY3JjcHkvc2NyY3B5LXNlcnZlci12JHt2ZXJzaW9ufSIKCkZy b20gMDJkNzBkNDAwYTI1MDU0NWIzNjJkYjhmZTk1NWI4OGRjZjMxZDFiOCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAx NyBPY3QgMjAyMyAwODo1NDoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY3LzExNV0gTmV3IHBh Y2thZ2U6IHNwZXgteCByZXBsYWNlcyBzcGVrLWFsdGVybmF0aXZlIGZvcgogZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUgICAgICAgICAgICAgICAgICAgICAgfCAgMSAr CiBzcmNwa2dzL3tzcGVrLWFsdGVybmF0aXZlID0+IHNwZWsteH0vdGVtcGxhdGUgfCAyMiArKysr KysrKysrKystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlCiBy ZW5hbWUgc3JjcGtncy97c3Blay1hbHRlcm5hdGl2ZSA9PiBzcGVrLXh9L3RlbXBsYXRlICg1MiUp CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlIGIvc3JjcGtncy9zcGVrLWFs dGVybmF0aXZlCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjc2NjQ4 MjM2ZGE3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUKQEAg LTAsMCArMSBAQAorc3Blay14ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlIGIvc3JjcGtncy9zcGVrLXgvdGVt cGxhdGUKc2ltaWxhcml0eSBpbmRleCA1MiUKcmVuYW1lIGZyb20gc3JjcGtncy9zcGVrLWFsdGVy bmF0aXZlL3RlbXBsYXRlCnJlbmFtZSB0byBzcmNwa2dzL3NwZWsteC90ZW1wbGF0ZQppbmRleCBk N2I1NWM3NzZiMWQ0Li4zZGVkNmMyYzMyM2U0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3NwZWstYWx0 ZXJuYXRpdmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zcGVrLXgvdGVtcGxhdGUKQEAgLTEsMTgg KzEsMTggQEAKLSMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NwZWstYWx0ZXJuYXRpdmUnCi1wa2duYW1l PXNwZWstYWx0ZXJuYXRpdmUKLXZlcnNpb249MC44LjIuMwotcmV2aXNpb249MgorIyBUZW1wbGF0 ZSBmaWxlIGZvciAnc3Blay14JworcGtnbmFtZT1zcGVrLXgKK3ZlcnNpb249MC45LjMKK3Jldmlz aW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21h a2UgZ2V0dGV4dC1kZXZlbCBpbnRsdG9vbCBsaWJ0b29sIHBrZy1jb25maWcKICB3eFdpZGdldHMt Y29tbW9uIHd4V2lkZ2V0cy1ndGszLWRldmVsIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCB3 eFdpZGdldHMtZ3RrMy1kZXZlbCIKIGRlcGVuZHM9ImZmbXBlZyIKIHNob3J0X2Rlc2M9IkFjb3Vz dGljIHNwZWN0cnVtIGFuYWx5c2VyIgotbWFpbnRhaW5lcj0iS2FydGlrIFNpbmdoIDxrYXJ0aWsu eW53YUBnbWFpbC5jb20+IgorbWFpbnRhaW5lcj0iemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4i CiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgotaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNv bS93aXRobW9ydGVuL3NwZWstYWx0ZXJuYXRpdmUiCi1kaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHVi LmNvbS93aXRobW9ydGVuL3NwZWstYWx0ZXJuYXRpdmUvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5n eiIKLWNoZWNrc3VtPSIwMDdiYTRiODRhMzEwYjA3OGUzNzhhYTg0YzhlODA3ODNkYjU4MjE0Mzdh NzU3YTQ4OGMzZWNlYzM3N2U2YjJhIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9NaWtl V2FuZzAwMDAwMC9zcGVrLXgiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9NaWtlV2Fu ZzAwMDAwMC9zcGVrLXgvYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCitjaGVja3N1bT0iN2Y0 YjEwOTkwMzMzM2NkZDMxMGFiMmI5MTc2ZjBkYzQ5YTU2NTg5MTM3NmUyODFhMjMzZDM0MmNlZGY5 MGVmNyIKIAogQ1hYRkxBR1M9Ii1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklU Uz02NCIKIApAQCAtMjIsMyArMjIsOSBAQCBleHBvcnQgV1hfQ09ORklHX05BTUU9Ind4LWNvbmZp Zy1ndGszIgogcHJlX2NvbmZpZ3VyZSgpIHsKIAlOT0NPTkZJR1VSRT0xIC4vYXV0b2dlbi5zaAog fQorCitzcGVrLWFsdGVybmF0aXZlX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0ic3Blay14IgorCXNo b3J0X2Rlc2MrPSIgLSB0cmFuc2l0aW9uYWwgZHVtbXkgcGFja2FnZSIKKwlidWlsZF9zdHlsZT1t ZXRhCit9CgpGcm9tIDVkNDcxZTIxMjc0YWFjYzkyZGM0OTc5ZWZiNTI3ZDY5ZDBmNWY2NWIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2OC8x MTVdIHNzcjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3Nzci90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlIGIvc3JjcGtncy9zc3IvdGVtcGxh dGUKaW5kZXggODQyYjI0MjNhYWQxMC4uMzQ0OGNhMTEwZWIwYyAxMDA2NDQKLS0tIGEvc3JjcGtn cy9zc3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zc3IvdGVtcGxhdGUKQEAgLTUsNyArNSw3IEBA IHJldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX1FU NT1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJhbHNhLWxp Yi1kZXZlbCBmZm1wZWctZGV2ZWwgZ2x1LWRldmVsIGphY2stZGV2ZWwgcHVsc2VhdWRpby1kZXZl bAorbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ2x1LWRldmVsIGph Y2stZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIHF0NS10b29scy1kZXZlbCBxdDUteDExZXh0cmFz LWRldmVsIGxpYlhpbmVyYW1hLWRldmVsIHY0bC11dGlscy1kZXZlbCIKIGRlcGVuZHM9ImRlc2t0 b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9kZXNjPSJTaW1wbGUgU2Ny ZWVuIFJlY29yZGVyIGZvciBwcm9ncmFtcyBhbmQgZ2FtZXMiCgpGcm9tIDUzMGM5NThiMWE5YWI1 MDNiNTlmNGI1YmM2ZWRjNDZiZmFhODcwZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2OS8xMTVdIHN5bmZpZzogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMCBhbmQgbWx0NwoKLS0tCiBzcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0 Y2ggfCA3MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL3N5bmZpZy90ZW1w bGF0ZSAgICAgICAgICAgICAgfCAgNCArLQogMiBmaWxlcyBjaGFuZ2VkLCA3MyBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvc3luZmlnL3Bh dGNoZXMvZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnL3BhdGNoZXMv ZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xMDc4MGI0Mjc4MmY0Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0w LDAgKzEsNzEgQEAKKy0tLSBhL3NyYy9tb2R1bGVzL21vZF9saWJhdmNvZGVjL3RyZ3RfYXYuY3Bw CTIwMjItMTAtMjUgMDk6MTQ6MTIuMDAwMDAwMDAwIC0wNDAwCisrKysgYi9zcmMvbW9kdWxlcy9t b2RfbGliYXZjb2RlYy90cmd0X2F2LmNwcAkyMDIzLTA1LTA1IDIxOjM0OjE3Ljg5OTE5NDU1OSAt MDQwMAorQEAgLTM4LDYgKzQxLDcgQEAKKyBleHRlcm4gIkMiCisgeworICNpZmRlZiBIQVZFX0xJ QkFWRk9STUFUX0FWRk9STUFUX0gKKysjCWluY2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5oPgor ICMJaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAjZWxpZiBkZWZpbmVkKEhBVkVf QVZGT1JNQVRfSCkKKyAjCWluY2x1ZGUgPGF2Zm9ybWF0Lmg+CitAQCAtMTU1LDExICsxNTYsMTEg QEAKKyAgICAgfQorIAorIAlib29sIG9wZW5fdmlkZW9fc3RyZWFtKCkgeworLQkJaWYgKGF2Y29k ZWNfb3BlbjIodmlkZW9fY29udGV4dCwgTlVMTCwgTlVMTCkgPCAwKSB7CisrCQlpZiAoYXZjb2Rl Y19vcGVuMih2aWRlb19jb250ZXh0LCBudWxscHRyLCBudWxscHRyKSA8IDApIHsKKyAJCQlzeW5m aWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzogY291bGQgbm90IG9wZW4gdmlkZW8gY29kZWMi KTsKKyAJCQkvLyBzZWVtcyB0aGUgY2FsbGluZyBvZiBhdmNvZGVjX2ZyZWVfY29udGV4dCBhZnRl ciBlcnJvciB3aWxsIGNhdXNlIGNyYXNoCisgCQkJLy8gc28ganVzdCBmb3JnZXQgYWJvdXQgdGhp cyBjb250ZXh0CistCQkJdmlkZW9fY29udGV4dCA9IE5VTEw7CisrCQkJdmlkZW9fY29udGV4dCA9 IG51bGxwdHI7CisgCQkJY2xvc2UoKTsKKyAJCQlyZXR1cm4gZmFsc2U7CisgICAgICAgICB9CitA QCAtMjM0LDE1ICsyMzUsMjEgQEAKKyAJCWNsb3NlKCk7CisgCisgCQlpZiAoIWF2X3JlZ2lzdGVy ZWQpIHsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTggLy8gRkZNUEVHIDwgNC4w CisgCQkJYXZfcmVnaXN0ZXJfYWxsKCk7CisrI2VuZGlmCisgCQkJYXZfcmVnaXN0ZXJlZCA9IHRy dWU7CisgCQl9CisgCisgCQkvLyBndWVzcyBmb3JtYXQKKy0JCUFWT3V0cHV0Rm9ybWF0ICpmb3Jt YXQgPSBhdl9ndWVzc19mb3JtYXQoTlVMTCwgZmlsZW5hbWUuY19zdHIoKSwgTlVMTCk7CisrI2lm IExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU5IC8vIEZGTVBFRyA8IDUuMAorKwkJQVZPdXRw dXRGb3JtYXQqIGZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5jX3N0 cigpLCBudWxscHRyKTsKKysjZWxzZQorKwkJY29uc3QgQVZPdXRwdXRGb3JtYXQqIGZvcm1hdCA9 IGF2X2d1ZXNzX2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5jX3N0cigpLCBudWxscHRyKTsKKysj ZW5kaWYKKyAJCWlmICghZm9ybWF0KSB7CisgCQkJc3luZmlnOjp3YXJuaW5nKCJUYXJnZXRfTGli QVZDb2RlYzogdW5hYmxlIHRvIGd1ZXNzIHRoZSBvdXRwdXQgZm9ybWF0LCBkZWZhdWx0aW5nIHRv IE1QRUciKTsKKy0JCQlmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoIm1wZWciLCBOVUxMLCBOVUxM KTsKKysJCQlmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoIm1wZWciLCBudWxscHRyLCBudWxscHRy KTsKKyAJCX0KKyAJCWlmICghZm9ybWF0KSB7CisgCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0X0xp YkFWQ29kZWM6IHVuYWJsZSB0byBmaW5kICdtcGVnJyBvdXRwdXQgZm9ybWF0Iik7CitAQCAtMjU0 LDYgKzI2MSw3IEBACisgCQljb250ZXh0ID0gYXZmb3JtYXRfYWxsb2NfY29udGV4dCgpOworIAkJ YXNzZXJ0KGNvbnRleHQpOworIAkJY29udGV4dC0+b2Zvcm1hdCA9IGZvcm1hdDsKKysjaWYgTElC QVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTggLy8gRkZNUEVHIDwgNC4wCisgCQlpZiAoZmlsZW5h bWUuc2l6ZSgpICsgMSA+IHNpemVvZihjb250ZXh0LT5maWxlbmFtZSkpIHsKKyAJCQlzeW5maWc6 OmVycm9yKAorIAkJCQkiVGFyZ2V0X0xpYkFWQ29kZWM6IGZpbGVuYW1lIHRvbyBsb25nLCBtYXgg bGVuZ3RoIGlzICVkLCBmaWxlbmFtZSBpcyAnJXMnIiwKK0BAIC0yNjMsNiArMjcxLDE0IEBACisg CQkJcmV0dXJuIGZhbHNlOworIAkJfQorIAkJbWVtY3B5KGNvbnRleHQtPmZpbGVuYW1lLCBmaWxl bmFtZS5jX3N0cigpLCBmaWxlbmFtZS5zaXplKCkgKyAxKTsKKysjZWxzZQorKwkJY29udGV4dC0+ dXJsID0gYXZfc3RybmR1cChmaWxlbmFtZS5jX3N0cigpLCBmaWxlbmFtZS5zaXplKCkpOworKwkJ aWYgKCFjb250ZXh0LT51cmwpIHsKKysJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2Rl YzogY2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciBmaWxlbmFtZSIpOworKwkJCWNsb3NlKCk7Cisr CQkJcmV0dXJuIGZhbHNlOworKwkJfQorKyNlbmRpZgorIAorIAkJcGFja2V0ID0gYXZfcGFja2V0 X2FsbG9jKCk7CisgCQlhc3NlcnQocGFja2V0KTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmln L3RlbXBsYXRlIGIvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUKaW5kZXggZDRkM2UzNDFhMjBiZi4u NzAzY2ZkN2ViYWM4NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9zeW5maWcvdGVtcGxhdGUKQEAgLTYsNyArNiw3IEBAIHJldmlzaW9uPTQKIGJ1aWxk X3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXdpdGgtYm9vc3QtbGliZGly PSR7WEJQU19DUk9TU19CQVNFfS91c3IvbGliIgogaG9zdG1ha2VkZXBlbmRzPSJib29zdC1idWls ZCBJbWFnZU1hZ2ljayBwa2ctY29uZmlnIGludGx0b29sIgotbWFrZWRlcGVuZHM9IkVUTCBnZXR0 ZXh0LWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdC1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKK21ha2Vk ZXBlbmRzPSJFVEwgZ2V0dGV4dC1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQ3LWRldmVsIGxpYm1h Z2ljay1kZXZlbAogIGxpYm1uZy1kZXZlbCBib29zdC1idWlsZCBib29zdC1kZXZlbCBsaWJvcGVu ZXhyLWRldmVsIGZmbXBlZy1kZXZlbCIKIGRlcGVuZHM9IkltYWdlTWFnaWNrIgogc2hvcnRfZGVz Yz0iQ0xJIDJEIHZlY3RvciBhbmQgdGltZWxpbmUtYmFzZWQgYW5pbWF0aW9uIHNvZnR3YXJlIgpA QCAtMjAsNyArMjAsNyBAQCBDWFhGTEFHUz0iLXN0ZD1jKysxMSAtREhBVkVfTE9DQUxFX0g9MSIK IAogc3luZmlnLWRldmVsX3BhY2thZ2UoKSB7CiAJZGVwZW5kcz0iJHtzb3VyY2Vwa2d9Pj0ke3Zl cnNpb259XyR7cmV2aXNpb259Ci0JIGxpYm9wZW5leHItZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0 LWRldmVsIgorCSBsaWJvcGVuZXhyLWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwiCiAJ c2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgogCXBrZ19pbnN0YWxsKCkgewogCQl2 bW92ZSB1c3IvYmluL3N5bmZpZy1jb25maWcKCkZyb20gZmI2ZDIyN2ZkZjNhYWU5MmQ5MmNhODQ4 YjMyOGQ1YjE0MGM0MTllOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDcwLzExNV0gdGltZzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL3RpbWcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RpbWcvdGVtcGxhdGUg Yi9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKaW5kZXggMmEyYWI3NjNkMmZkZC4uOGZiNDMyNzUzNWVm OSAxMDA2NDQKLS0tIGEvc3JjcGtncy90aW1nL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGltZy90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RpbWcnCiBwa2du YW1lPXRpbWcKIHZlcnNpb249MS40LjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX09QRU5TTElERV9TVVBQT1JUPW9mZiAt V25vLWRldiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnaXQiCgpGcm9tIDRhYmQ3ZGMz OWVjODFjZjBlMGZhMGRjMDg3M2Y2Y2IwNzRiNWRlNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3MS8xMTVdIHR2aGVhZGVuZDogcmV2YnVt cCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlIGIvc3JjcGtncy90dmhlYWRlbmQvdGVt cGxhdGUKaW5kZXggOWFlYTdkZTRlYzcwNS4uMDEyZDMxYzQ4NzlmZiAxMDA2NDQKLS0tIGEvc3Jj cGtncy90dmhlYWRlbmQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUK QEAgLTgsNyArOCw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1kdmJzY2FuIC0tZGlzYWJs ZS1mZm1wZWdfc3RhdGljCiAtLWRpc2FibGUtbGlieDI2NV9zdGF0aWMgLS1kaXNhYmxlLWxpYnZw eF9zdGF0aWMgLS1kaXNhYmxlLWxpYnRoZW9yYV9zdGF0aWMKIC0tZGlzYWJsZS1saWJ2b3JiaXNf c3RhdGljIC0tZGlzYWJsZS1saWJmZGthYWNfc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJnZXR0 ZXh0IHBrZy1jb25maWcgcHl0aG9uMyBnaXQgd2hpY2giCi1tYWtlZGVwZW5kcz0iYXZhaGktbGli cy1kZXZlbCBvcGVuc3NsLWRldmVsIHpsaWItZGV2ZWwgbGliY3VybC1kZXZlbCBmZm1wZWctZGV2 ZWwiCittYWtlZGVwZW5kcz0iYXZhaGktbGlicy1kZXZlbCBvcGVuc3NsLWRldmVsIHpsaWItZGV2 ZWwgbGliY3VybC1kZXZlbCBmZm1wZWc0LWRldmVsIgogc2hvcnRfZGVzYz0iVFYgc3RyZWFtaW5n IHNlcnZlciIKIG1haW50YWluZXI9ImxlbW1pIDxsZW1taUBuZXJkMm5lcmQub3JnPiIKIGxpY2Vu c2U9IkdQTC0zLjAtb25seSIKCkZyb20gYzY3NzY4OGM2MjYyYjUzNjExNTE3OGJkMmEyNGIyODlk ZDFhZjJmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDcyLzExNV0gdW5wYXBlcjogdXBkYXRlIHRvIDcuMC4wLgoKLS0tCiBzcmNwa2dzL3Vu cGFwZXIvdGVtcGxhdGUgfCAxNiArKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBp bnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW5wYXBl ci90ZW1wbGF0ZSBiL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQppbmRleCAzOGVkNDdhNTg0MDE2 Li4xZmY5MTBlNzIyYWZjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKKysr IGIvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICd1bnBhcGVyJwogcGtnbmFtZT11bnBhcGVyCi12ZXJzaW9uPTYuMQotcmV2aXNp b249MwotYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQordmVyc2lvbj03LjAuMAorcmV2aXNpb249 MQorYnVpbGRfc3R5bGU9bWVzb24KK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBtZXNvbiBs aWJ4c2x0IgorbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBweXRob24zLVNwaGlueCIKK3Nob3J0 X2Rlc2M9IlBvc3QtcHJvY2Vzc2luZyB0b29sIGZvciBzY2FubmVkIHNoZWV0cyBvZiBwYXBlciIK IG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCi1ob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWcgbGlieHNsdCIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwiCi1s aWNlbnNlPSJHUEwtMiIKK2xpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0 cHM6Ly93d3cuZmxhbWVleWVzLmV1L3Byb2plY3RzL3VucGFwZXIiCi1zaG9ydF9kZXNjPSJBIHBv c3QtcHJvY2Vzc2luZyB0b29sIGZvciBzY2FubmVkIHNoZWV0cyBvZiBwYXBlciIKIGRpc3RmaWxl cz0iaHR0cHM6Ly93d3cuZmxhbWVleWVzLmV1L2ZpbGVzLyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50 YXIueHoiCi1jaGVja3N1bT0yMzdjODRmNWRhNTQ0YjNmNzcwOTgyN2Y5ZjEyYzM3YzM0NmNkZjAy OWIxMTI4ZmI0NjMzZjliYWZhNWNiOTMwCitjaGVja3N1bT0yNTc1ZmJiZjI2YzIyNzE5ZDFjYjg4 MmI1OTYwMmM5OTAwYzdmNzQ3MTE4YWMxMzA4ODNmNjM0MTliZTQ2YTgwCgpGcm9tIDJmMmI4YzA3 YjU0MTA3Y2JlYmVhOWE4YTYzNGVjNzVjM2EzMWFjNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3My8xMTVdIHZiYS1tOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdmJhLW0vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3ZiYS1tL3RlbXBsYXRlIGIvc3JjcGtncy92YmEtbS90ZW1wbGF0ZQppbmRleCA5YzcxY2Vm ZTNmOGRkLi4yMjIzZDI5N2MzMWY1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiBwa2duYW1lPXZi YS1tCiByZXZlcnRzPTEyOTJfMgogdmVyc2lvbj0yLjEuNwotcmV2aXNpb249MgorcmV2aXNpb249 MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9HVEs9VFJVRSAt REVOQUJMRV9GRk1QRUc9VFJVRSAtREVOQUJMRV9MSU5LPVRSVUUgLURDTUFLRV9CVUlMRF9UWVBF PVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyB1bnppcCB6aXAg eWFzbSB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKCkZyb20gYTRkYWE0Njk2NzczY2UwMGNkZTdkNWU1 ZDhlOTU1YjQxYmE5NGY4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDc0LzExNV0gdmljZTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoK LS0tCiBzcmNwa2dzL3ZpY2UvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpY2UvdGVtcGxh dGUgYi9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKaW5kZXggYjFmODY2ZDM1MDk1ZS4uNGJlYWIyYzVm OWViZCAxMDA2NDQKLS0tIGEvc3JjcGtncy92aWNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvdmlj ZS90ZW1wbGF0ZQpAQCAtMjYsNyArMjYsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2b3B0X2lmIGd0 azMgZ3RrKzMtZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZlbCkKIAkkKHZv cHRfaWYgZ3RrMyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCki CisJJCh2b3B0X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9IkVtdWxhdG9y IGZvciBDNjQsIEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMxNiIKIG1haW50 YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4w LW9yLWxhdGVyIgoKRnJvbSBjMGFjOWU2NTdhMTRhNGU3MTIwOTgwNDRkZDJiZDIxNDRlM2U0NjUx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NzUvMTE1XSB3YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvd2F5 cGlwZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSBiL3NyY3Br Z3Mvd2F5cGlwZS90ZW1wbGF0ZQppbmRleCA2ZGE4OGIyMWJmMmExLi40ZGE4MDU4NDAwYjU4IDEw MDY0NAotLS0gYS9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93YXlwaXBl L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2F5cGlwZScK IHBrZ25hbWU9d2F5cGlwZQogdmVyc2lvbj0wLjguNgotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9bWVzb24KICMgbHRvIGlzIG9mZiBiZWNhdXNlIGl0IGNhdXNlcyBsaW5raW5n IGVycm9ycyBpbiBhcm12NmwgYW5kIGFybXY3bCAoZHVlIHRvIE5FT04pCiBjb25maWd1cmVfYXJn cz0iLUR3ZXJyb3I9ZmFsc2UgLUR3aXRoX2RtYWJ1Zj1lbmFibGVkIC1Ed2l0aF9sejQ9ZW5hYmxl ZAoKRnJvbSA4NTcxNGMxZmYxNDZmNzYxMzc2MTI5YTgyYmJlZTA1NzA1MDliYzkzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzYvMTE1XSB4 cHJhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MveHByYS90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MveHByYS90ZW1wbGF0ZSBiL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQpp bmRleCAzOTQ3MThiNTZmNjg2Li4zNGZiZmY5YjJmMWFlIDEwMDY0NAotLS0gYS9zcmNwa2dzL3hw cmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAneHByYScKIHBrZ25hbWU9eHByYQogdmVyc2lvbj01LjAuMwot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2Vf YnVpbGRfYXJncz0iLS13aXRob3V0LWN1ZGFfa2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxk IgogbWFrZV9pbnN0YWxsX2FyZ3M9IiQodm9wdF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdz fSIKCkZyb20gY2M2MmU0Nzg2MTBiMmJmNjg4ZjBmMzBmNzdmNTdmODg4MzM4MzU0ZCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog RnJpLCAzMSBNYXIgMjAyMyAwOTowNzo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc3LzExNV0g bnYtY29kZWMtaGVhZGVyczogdXBkYXRlIHRvIDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNv ZGVjLWhlYWRlcnMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFk ZXJzL3RlbXBsYXRlIGIvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNk NDIyYTYxZTQ4OTEuLjI1MWUwNTdmODI2ZmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbnYtY29kZWMt aGVhZGVycy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUK QEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdudi1jb2RlYy1oZWFkZXJzJwog cGtnbmFtZT1udi1jb2RlYy1oZWFkZXJzCi12ZXJzaW9uPTExLjEuNS4xCit2ZXJzaW9uPTEyLjAu MTYuMAogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBzaG9ydF9kZXNjPSJG Rm1wZWcgdmVyc2lvbiBvZiBoZWFkZXJzIHJlcXVpcmVkIHRvIGludGVyZmFjZSB3aXRoIE52aWRp YXMgY29kZWMgQVBJcyIKQEAgLTgsNyArOCw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBo YW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cDovL2dpdC52 aWRlb2xhbi5vcmcvP3A9ZmZtcGVnL252LWNvZGVjLWhlYWRlcnMuZ2l0IgogZGlzdGZpbGVzPSJo dHRwczovL2dpdGh1Yi5jb20vRkZtcGVnL252LWNvZGVjLWhlYWRlcnMvYXJjaGl2ZS9uJHt2ZXJz aW9ufS50YXIuZ3oiCi1jaGVja3N1bT1kMDk1ZmJkNTZhYTkzNzcyNDcxYTMyM2JlMGViZTY1NTA0 YTBmNDNmMDZjNzZhMzBiNmQyNWRhNzdiMDZhZTljCitjaGVja3N1bT0yYTE1MzNiNjVmNTVmOWRh NTI5NTZmYWYwNjI3ZWQzYjc0ODY4YWMwYzdmMjY5OTkwZWRkMjEzNjkxMTNiNDhmCiAKIHBvc3Rf aW5zdGFsbCgpIHsKIAlzZWQgLW4gJzQsMjVwJyBpbmNsdWRlL2ZmbnZjb2RlYy9udkVuY29kZUFQ SS5oID4gTElDRU5TRQoKRnJvbSBiNGY1Zjc3ZmNiNGJkYzQ3ODRjNzAzYWFlYmE0N2VkMWJjMGZk MjBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIzIDA5OjA4OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNzgvMTE1XSBvcGVuaW1hZ2VkZW5vaXNlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3Bl bmltYWdlZGVub2lzZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0 ZQppbmRleCBiNzkyODEzZGJhN2MyLi4xMDlkZWIxNzFjM2Y3IDEwMDY0NAotLS0gYS9zcmNwa2dz L29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNl L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmltYWdl ZGVub2lzZScKIHBrZ25hbWU9b3BlbmltYWdlZGVub2lzZQogdmVyc2lvbj0xLjQuMwotcmV2aXNp b249MQorcmV2aXNpb249MgogYXJjaHM9Ing4Nl82NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogaG9z dG1ha2VkZXBlbmRzPSJpc3BjIHB5dGhvbjMiCgpGcm9tIDg1NzIzNWMzODE5NDIwN2UyNWRhMzM3 MDM2NGU4M2ExNjIzZGRkOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMTo0NSAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDc5LzExNV0gc2hvdGN1dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nob3RjdXQv dGVtcGxhdGUgYi9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKaW5kZXggMzMxNDFmYmQ4NjJkNy4u ZjQ2Y2I1M2I2YmZiOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3Nob3RjdXQnCiBwa2duYW1lPXNob3RjdXQKIHZlcnNpb249MjMuMDkuMjkKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURT SE9UQ1VUX1ZFUlNJT049JHt2ZXJzaW9ufSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBx dDYtdG9vbHMtZGV2ZWwiCgpGcm9tIDhlY2Q4MjBkMDgyZjMwYzVlMDliODYzOTBmMTAwNmNkMWNh MGZhYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMzozMCAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDgwLzExNV0gc2hpYm9rZW4yOiByZXZidW1wIGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3Br Z3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggfCAx ICsKIHNyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0 bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2Vu Mi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIGIvc3JjcGtncy9zaGli b2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBt b2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi5lZmNmMzI0OWJkODg1Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5 cGFzcy5wYXRjaApAQCAtMCwwICsxIEBACisuLi8uLi9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9p bXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlIGIvc3JjcGtncy9zaGli b2tlbjIvdGVtcGxhdGUKaW5kZXggODgzZDZhMDg0ZDg2OC4uZjNjMDZlYzI0NWExZiAxMDA2NDQK LS0tIGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaGlib2tlbjIv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaGlib2tlbjIn CiBwa2duYW1lPXNoaWJva2VuMgogdmVyc2lvbj01LjE1LjEwCi1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBfcGtnbmFtZT0icHlzaWRlLXNldHVwLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBi dWlsZF93cmtzcmM9InNvdXJjZXMvc2hpYm9rZW4yIgogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20g YmE0NDgwYmRkZjY3ZWFjYWZmODk0NWMzODZiYWIyZmQ1M2E5MDZiMCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzIEFw ciAyMDIzIDIzOjMzOjUzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODEvMTE1XSBweXRob24zLXB5 c2lkZTI6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogLi4uL3BhdGNoZXMvaW1wb3J0bGli LW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggICAgICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjcGtn cy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8ICAyICstCiAyIGZp bGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5l cnktYnlwYXNzLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0 Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCBiL3NyY3BrZ3MvcHl0aG9uMy1w eXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNjRjNDI5NTg0Nzc2YgotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hp bmVyeS1ieXBhc3MucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVXNpbmcgdGhpcyBwcmV2ZW50cyBh biBlcnJvciBhcm91bmQgbGluZSAyMjAgYmVsb3cgaXQuCisiQXR0cmlidXRlRXJyb3I6IG1vZHVs ZSAnaW1wb3J0bGliJyBoYXMgbm8gYXR0cmlidXRlICdtYWNoaW5lcnknIgorVGhlIG9sZCBiYWNr dXAgbG9naWMgaXMgaW4gcGxhY2UgYW5kIGNvbXBpbGVzIHdpdGhvdXQgaXNzdWVzLgorLS0tIGEv c291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3RzdHJhcC5w eQkyMDIzLTA0LTAyIDIzOjA5OjM0LjY4ODkxMjQwMiAtMDQwMAorKysrIGIvc291cmNlcy9zaGli b2tlbjIvbGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3RzdHJhcC5weQkyMDIzLTA0LTAy IDIzOjEwOjAzLjM5NTUyOTU4MiAtMDQwMAorQEAgLTE3MCw5ICsxNzAsNiBAQAorCisgICAgICMg J3ppcHN0cmluZ19zZXF1ZW5jZScgY29tZXMgZnJvbSBzaWduYXR1cmUuY3BwCisgICAgIHppcGJ5 dGVzID0gYmFzZTY0LmI2NGRlY29kZSgnJy5qb2luKHppcHN0cmluZ19zZXF1ZW5jZSkpCistICAg IGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKKy0gICAgICAgIHZ6aXAgPSB6aXBmaWxlLlpp cEZpbGUoaW8uQnl0ZXNJTyh6aXBieXRlcykpCistICAgICAgICByZXR1cm4gc3lzLm1ldGFfcGF0 aCwgRW1iZWRkYWJsZVppcEltcG9ydGVyKHZ6aXApCisKKyAgICAgIyBPbGQgdmVyc2lvbiBmb3Ig UHl0aG9uIDIuNywgb25seS4KKyAgICAgaW1wb3J0IG9zCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5 dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRl CmluZGV4IDI0OWVmYTkwOTg4NDIuLjUyNjI2NDM2Y2U3NWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv cHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNp ZGUyJwogcGtnbmFtZT1weXRob24zLXB5c2lkZTIKIHZlcnNpb249NS4xNS4xMAotcmV2aXNpb249 MQorcmV2aXNpb249MgogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3Zl cnNpb259IgogYnVpbGRfd3Jrc3JjPSJzb3VyY2VzL3B5c2lkZTIiCiBidWlsZF9zdHlsZT1jbWFr ZQoKRnJvbSA1MzMyM2IyZjA0ODFjYjg2MjNiN2U5YjQzZmRjYTk3ZmFmY2M5MWUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBU dWUsIDQgQXByIDIwMjMgMTE6MTQ6MzUgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4Mi8xMTVdIGtv bnF1ZXJvcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tvbnF1ZXJvci90 ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSBiL3NyY3Br Z3Mva29ucXVlcm9yL3RlbXBsYXRlCmluZGV4IGFiZmE1OWU2YjdkZWQuLjNjYzI5YzEyZGMxZGIg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva29u cXVlcm9yL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdr b25xdWVyb3InCiBwa2duYW1lPWtvbnF1ZXJvcgogdmVyc2lvbj0yMy4wOC4yCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EREVTS1RP UFRPSlNPTl9FWEVDVVRBQkxFPS91c3IvYmluL2Rlc2t0b3B0b2pzb24iCiBob3N0bWFrZWRlcGVu ZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcHl0aG9uMyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2Ug a2RvY3Rvb2xzCi1rY29yZWFkZG9ucyBrY29uZmlnIGdldHRleHQiCisga2NvcmVhZGRvbnMga2Nv bmZpZyBnZXR0ZXh0IgogbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtd2ViZW5naW5lLWRldmVs IHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAogIHF0NS13ZWJjaGFubmVsLWRldmVsIHF0NS1sb2NhdGlv bi1kZXZlbCBrY211dGlscy1kZXZlbCBrZGVsaWJzNHN1cHBvcnQtZGV2ZWwKICBrYXJjaGl2ZS1k ZXZlbCBraHRtbC1kZXZlbCBrZGVzdS1kZXZlbCBrYWN0aXZpdGllczUtZGV2ZWwiCgpGcm9tIDU5 MGQ0NjhjZTY0ZTdlMmU5ZDc2MzUwZmY5ZGJhNTc0ODNiYWY3NDAgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIg MjAyMyAxMToxNDo1OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgzLzExNV0gcXQ1LXNwZWVjaDog cmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS1zcGVl Y2gvdGVtcGxhdGUKaW5kZXggM2VjZDEwZDUwNjUwYy4uMmQ3ZDRkNGQyNDUzNSAxMDA2NDQKLS0t IGEvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXNwZWVjaC90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS1zcGVlY2gn CiBwa2duYW1lPXF0NS1zcGVlY2gKIHZlcnNpb249NS4xNS43Ci1yZXZpc2lvbj0yCityZXZpc2lv bj0zCiBfY29tbWl0PWQzMmY0YTQ3OWQzOGExMWY1NDc1OTgwMDRiOTc1ZjQzNTY0MjRhMTYKIGJ1 aWxkX3N0eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iLS0gLWZsaXRlIC1mbGl0ZS1hbHNhIC1z cGVlY2hkIgoKRnJvbSBiZDQyNjVhMDBjMzBkODhkZmQ0YzYwYWUwOTkwNjQ3NTI1NjgwNDdhIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBUdWUsIDQgQXByIDIwMjMgMTg6Mzg6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4NC8x MTVdIHF0NS1zdHlsZXBsdWdpbnM6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtn cy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtc3R5bGVw bHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCmluZGV4 IDk2ZWQ5N2QxMmNkMjQuLjMwZDkzNjYwYTJhNGUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0 eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtc3R5bGVwbHVnaW5z JwogcGtnbmFtZT1xdDUtc3R5bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4wCi1yZXZpc2lvbj0yMAor cmV2aXNpb249MjEKIF9naXRyZXY9MzM1ZGJlY2UxMDNlMmNiZjZjN2NmODE5YWI2NjcyYzI5NTZi MTdiMwogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUt aG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIGMwYjY3NWRjMTdmYWIwZjQ4Nzk3NmJjZGU3ZDVk NzI4YWM3NDc2YWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAyMyAyMDoxNTowMyAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDg1LzExNV0gcXQ2LXdlYmVuZ2luZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUgfCAxICsKIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1w bGF0ZSBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQppbmRleCA5OGNkYzY4MDQ4MWIz Li5mMzNhNzFiZDJhMGRjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCkBAIC0xNTgsNiArMTU4LDcg QEAgcHJlX2luc3RhbGwoKSB7CiB9CiAKIHBvc3RfaW5zdGFsbCgpIHsKKwl2bGljZW5zZSBMSUNF TlNFUy9CU0QtMy1DbGF1c2UudHh0CiAJbG9jYWwgX2ZpbGUKIAlmaW5kICIke0RFU1RESVJ9Ii91 c3IvbGliL3F0Ni9leGFtcGxlcyBcCiAJCS1wYXRoICcqL2xpYi9xdDYvKiovbGliL3F0Ni8qJyAt dHlwZSBmIHwKCkZyb20gYWY3M2Y2NTljZTA5OTYyZmNkMmJiZjI3ZWZiMzFjNGM1MzI0YmJiZiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogU2F0LCAzIEp1biAyMDIzIDA4OjIwOjIyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODYv MTE1XSBndGs0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3RrNC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3RrNC90ZW1w bGF0ZQppbmRleCA2YTRlMjAzNTdhODZmLi5lYzBjMTNkMmNjNWIwIDEwMDY0NAotLS0gYS9zcmNw a2dzL2d0azQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ndGs0L3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3RrNCcKIHBrZ25hbWU9Z3RrNAogdmVyc2lvbj00 LjEyLjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9o ZWxwZXI9ImdpciIKIGNvbmZpZ3VyZV9hcmdzPSItRG1hbi1wYWdlcz10cnVlIC1EZG9jdW1lbnRh dGlvbj10cnVlIC1EYnVpbGQtdGVzdHM9ZmFsc2UKCkZyb20gZDllNTRmMzJmZTIyNGU5OGZjNjFm NmQwMTM4MDk5MTBiZTgxYzJiNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA0IEp1biAyMDIzIDExOjI4OjI2IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwODcvMTE1XSBzaXJpbDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3NpcmlsL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaXJpbC90ZW1w bGF0ZSBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKaW5kZXggODQzMzJmNzlkMDYwZC4uNjI3NTBk ZDI0NzU0OCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaXJpbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3NpcmlsL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2ly aWwnCiBwa2duYW1lPXNpcmlsCiB2ZXJzaW9uPTAuOS4xMgotcmV2aXNpb249MTAKK3JldmlzaW9u PTExCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgaW50bHRvb2wgYXV0b2NvbmYgYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCIKIG1ha2VkZXBlbmRz PSJmZnR3LWRldmVsIGxpYmNvbmZpZy1kZXZlbCBsaWJvcGVuY3YtZGV2ZWwgbGliZmZtczItZGV2 ZWwKCkZyb20gY2YxZGUyYTMzNmIzNzczMjg1YjljYTQzNWFlMDVkNjU1ODVhNmYzZiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog VGh1LCAyMiBKdW4gMjAyMyAxMDoyNTowMiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg4LzExNV0g a2RlbmxpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rZGVubGl2ZS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUgYi9zcmNwa2dzL2tk ZW5saXZlL3RlbXBsYXRlCmluZGV4IGVjNWZlNzU4NjA5NDguLmU2OWVjZmYzMWYyNzIgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9rZGVubGl2ZS90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tkZW5saXZlJwog cGtnbmFtZT1rZGVubGl2ZQogdmVyc2lvbj0yMy4wOC4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSIKICBleHRyYS1jbWFrZS1tb2R1 bGVzIGtjb25maWcga2NvcmVhZGRvbnMga2RvY3Rvb2xzIHBrZy1jb25maWcgcHl0aG9uMwoKRnJv bSBjNjE4MzBjZmFiYzZkNTRjODc0OGExZDk1NjM5N2E5ZTYyN2Q4NGY1IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQg SnVsIDIwMjMgMTE6MTc6MzcgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4OS8xMTVdIERFTEVURTog aW50ZWxfcGFja2FnZXMKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyICsKIHNyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlICAgICAgICAg ICAgICAgICB8ICAgMiArLQogLi4ubW1vbi1FbmFibGUtTU1DLWluLWZyZWUta2VybmVsLWJ1aWxk LnBhdGNoIHwgMTI1ICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2 ZXIvdGVtcGxhdGUgICAgICAgICAgIHwgICA2ICstCiBzcmNwa2dzL2ludGVsLW1lZGlhLXNkay9w YXRjaGVzL211c2wucGF0Y2ggICAgfCAgMTQgKysKIHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3Rl bXBsYXRlICAgICAgICAgICAgICB8ICAzNyArKysrKysKIHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2Rr L3VwZGF0ZSAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYm1meCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJtZngtZGV2ZWwgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3Mvb25ldnBsLWRldmVsICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUtZGV2ZWwg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRl ICAgICAgICAgICAgIHwgIDI3ICsrKysKIHNyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlICAgICAgICAg ICAgICAgICAgICAgICB8ICAzNCArKysrKwogMTMgZmlsZXMgY2hhbmdlZCwgMjQ4IGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pbnRlbC1t ZWRpYS1kcml2ZXIvcGF0Y2hlcy8wMDAxLU1lZGlhLUNvbW1vbi1FbmFibGUtTU1DLWluLWZyZWUt a2VybmVsLWJ1aWxkLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pbnRlbC1tZWRp YS1zZGsvcGF0Y2hlcy9tdXNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pbnRl bC1tZWRpYS1zZGsvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLW1l ZGlhLXNkay91cGRhdGUKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYm1meAogY3JlYXRl IG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlibWZ4LWRldmVsCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3Jj cGtncy9vbmV2cGwtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL29uZXZwbC1pbnRl bC1ncHUtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUv dGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZwbC90ZW1wbGF0ZQoKZGlm ZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDU3NDVmZjBjYTdi ODQuLmZmMTgzZmFiYTU1YWEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9u L3NobGlicwpAQCAtNDI1Myw2ICs0MjUzLDggQEAgbGliZ3NvYXBzc2wrKy0yLjguMTI0LnNvIGdz b2FwLTIuOC4xMjRfMQogbGlianhsLnNvLjAuOCBsaWJqeGwtMC44LjJfMQogbGlianhsX2RlYy5z by4wLjggbGlianhsLTAuOC4yXzEKIGxpYmp4bF90aHJlYWRzLnNvLjAuOCBsaWJqeGwtMC44LjJf MQorbGlibWZ4LnNvLjEgbGlibWZ4LTIyLjYuNF8xCitsaWJ2cGwuc28uMiBvbmV2cGwtMjAyMy4x LjJfMQogbGlidGV4dC1lbmdpbmUtMC4xLnNvLjAgdGV4dC1lbmdpbmUtMC4xLjFfMQogbGlidm1h Zi5zby4xIHZtYWYtMi4zLjFfMQogbGlibGMzLnNvLjEgbGlibGMzLTEuMC4zXzEKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC1nbW1saWIv dGVtcGxhdGUKaW5kZXggYjlkZjY0MmY2MzIwZi4uM2Q2NGJlNzQxNTI5OCAxMDA2NDQKLS0tIGEv c3JjcGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pbnRlbC1nbW1saWIv dGVtcGxhdGUKQEAgLTE0LDcgKzE0LDcgQEAgYnVpbGRfc3R5bGU9Y21ha2UKICMgY29tcGlsZXJz IGZsYWcgaW4gdXNlLgogY29uZmlndXJlX2FyZ3M9Ii1Xbm8tZGV2Igogc2hvcnRfZGVzYz0iSW50 ZWwgR3JhcGhpY3MgTWVtb3J5IE1hbmFnZW1lbnQgTGlicmFyeSIKLW1haW50YWluZXI9Ik9ycGhh bmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCittYWludGFpbmVyPSJTdGVmYW5vIFJhZ25pIDxz dDNyNGdAcHJvdG9ubWFpbC5jb20+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHBzOi8v Z2l0aHViLmNvbS9pbnRlbC9nbW1saWIiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9p bnRlbC9nbW1saWIvYXJjaGl2ZS9pbnRlbC1nbW1saWItJHt2ZXJzaW9ufS50YXIuZ3oiCmRpZmYg LS1naXQgYS9zcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzLzAwMDEtTWVkaWEtQ29t bW9uLUVuYWJsZS1NTUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2ggYi9zcmNwa2dzL2ludGVs LW1lZGlhLWRyaXZlci9wYXRjaGVzLzAwMDEtTWVkaWEtQ29tbW9uLUVuYWJsZS1NTUMtaW4tZnJl ZS1rZXJuZWwtYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMC4uNTI1ZmI2ODg3MjJjOAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvaW50ZWwtbWVk aWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxlLU1NQy1pbi1mcmVlLWtl cm5lbC1idWlsZC5wYXRjaApAQCAtMCwwICsxLDEyNSBAQAorRnJvbSBlNjhmZWFiN2RiMDM2ODM4 ZDk1MjFiYTNiOWYwMDcxN2MzN2MwMjRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog SmF5WWFuZyA8amF5LnlhbmdAaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyMSBNYXIgMjAyMyAxNzox Nzo1NSArMDgwMAorU3ViamVjdDogW1BBVENIXSBbTWVkaWEgQ29tbW9uXSBFbmFibGUgTU1DIGlu IGZyZWUga2VybmVsIGJ1aWxkCisKK0FkZCBtbWMgYnVpbGQgZGVmaW5pdGlvbiBpbiBmcmVlIGtl cm5lbCBidWlsZAorLS0tCisgbWVkaWFfZHJpdmVyL2Fnbm9zdGljL2dlbjkvY29kZWMvaGFsL21l ZGlhX3NyY3MuY21ha2UgICAgICAgICAgfCAyICstCisgbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4 L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21ha2UgICAgICAgfCAzICstLQorIC4uLi9tZWRp YV9pbnRlcmZhY2VzX205X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAgICAgICAgIHwg MiArLQorIC4uLi9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2Nm bC5jcHAgICAgICAgIHwgMiArLQorIC4uLi9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRpYV9p bnRlcmZhY2VzX2c5X2dsay5jcHAgICAgICAgIHwgMiArLQorIC4uLi9tZWRpYV9pbnRlcmZhY2Vz X205X2tibC9tZWRpYV9pbnRlcmZhY2VzX2c5X2tibC5jcHAgICAgICAgIHwgMiArLQorIC4uLi9t ZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAgICAgICAg IHwgMiArLQorIDcgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygt KQorCitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVyL2Fnbm9zdGljL2dlbjkvY29kZWMvaGFsL21l ZGlhX3NyY3MuY21ha2UgYi9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVk aWFfc3Jjcy5jbWFrZQoraW5kZXggOGJiMzZiYWZlLi43ODkwMmEyMmQgMTAwNjQ0CistLS0gYS9t ZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZQorKysr IGIvbWVkaWFfZHJpdmVyL2Fnbm9zdGljL2dlbjkvY29kZWMvaGFsL21lZGlhX3NyY3MuY21ha2UK K0BAIC0yNyw3ICsyNyw3IEBAIHNldChUTVBfMV9IRUFERVJTXworICAgICAke0NNQUtFX0NVUlJF TlRfTElTVF9ESVJ9L2NvZGVjaGFsX2h3X2c5X1guaAorICkKKyAKKy1pZigke01NQ19TdXBwb3J0 ZWR9IFNUUkVRVUFMICJ5ZXMiKQorK2lmKCR7TU1DX1N1cHBvcnRlZH0gU1RSRVFVQUwgInllcyIg QU5EIEVOQUJMRV9OT05GUkVFX0tFUk5FTFMgQU5EIEVOQUJMRV9LRVJORUxTKQorICAgICBzZXQo VE1QXzFfU09VUkNFU18KKyAgICAgICAgICR7VE1QXzFfU09VUkNFU199CisgICAgICAgICAke0NN QUtFX0NVUlJFTlRfTElTVF9ESVJ9L2NvZGVjaGFsX21lbWRlY29tcF9nOS5jcHAKK2RpZmYgLS1n aXQgYS9tZWRpYV9kcml2ZXIvY21ha2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51eC5j bWFrZSBiL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4 LmNtYWtlCitpbmRleCBkZTBjYTg1M2YuLjgxMjFlYTYwYyAxMDA2NDQKKy0tLSBhL21lZGlhX2Ry aXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4LmNtYWtlCisrKysgYi9t ZWRpYV9kcml2ZXIvY21ha2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51eC5jbWFrZQor QEAgLTM1LDcgKzM1LDYgQEAgaWYoTk9UIEVOQUJMRV9LRVJORUxTIE9SIE5PVCBFTkFCTEVfTk9O RlJFRV9LRVJORUxTKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKEhFVkNfRW5jb2RlX1ZNRV9T dXBwb3J0ZWQgIm5vIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNUEVHMl9FbmNvZGVfVk1F X1N1cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKENNUlRfSEVWQ19FTkNf RkVJX1N1cHBvcnRlZCAibm8iKQorLSAgICBic19zZXRfaWZfdW5kZWZpbmVkKE1NQ19TdXBwb3J0 ZWQgIm5vIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChWQzFfRGVjb2RlX1N1cHBvcnRlZCAi bm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKERlY29kZV9Qcm9jZXNzaW5nX1N1cHBvcnRl ZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKEtlcm5lbF9BdXRvX0Rlbm9pc2VfU3Vw cG9ydGVkICJubyIpCitAQCAtNDYsNyArNDUsNiBAQCBlbHNlKCkKKyAgICAgYnNfc2V0X2lmX3Vu ZGVmaW5lZChIRVZDX0VuY29kZV9WTUVfU3VwcG9ydGVkICIke0VuY29kZV9WTUVfU3VwcG9ydGVk fSIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoTVBFRzJfRW5jb2RlX1ZNRV9TdXBwb3J0ZWQg IiR7RW5jb2RlX1ZNRV9TdXBwb3J0ZWR9IikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChDTVJU X0hFVkNfRU5DX0ZFSV9TdXBwb3J0ZWQgInllcyIpCistICAgIGJzX3NldF9pZl91bmRlZmluZWQo TU1DX1N1cHBvcnRlZCAieWVzIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChWQzFfRGVjb2Rl X1N1cHBvcnRlZCAieWVzIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChEZWNvZGVfUHJvY2Vz c2luZ19TdXBwb3J0ZWQgInllcyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoS2VybmVsX0F1 dG9fRGVub2lzZV9TdXBwb3J0ZWQgInllcyIpCitAQCAtNjQsNiArNjIsNyBAQCBic19zZXRfaWZf dW5kZWZpbmVkKFZQOV9EZWNvZGVfU3VwcG9ydGVkICJ5ZXMiKQorIGJzX3NldF9pZl91bmRlZmlu ZWQoVlBfU0ZDX1N1cHBvcnRlZCAieWVzIikKKyBic19zZXRfaWZfdW5kZWZpbmVkKENvbW1vbl9F bmNvZGVfU3VwcG9ydGVkICJ5ZXMiKQorIGJzX3NldF9pZl91bmRlZmluZWQoTWVkaWFfU2NhbGFi aWxpdHlfU3VwcG9ydGVkICJ5ZXMiKQorK2JzX3NldF9pZl91bmRlZmluZWQoTU1DX1N1cHBvcnRl ZCAieWVzIikKKyAKKyAjIGZlYXR1cmVzIGNvbnRyb2xsZWQgYnkgZ2xvYmFsIGZsYWcgRW5jb2Rl X1ZERW5jX1N1cHBvcnRlZAorIGJzX3NldF9pZl91bmRlZmluZWQoQVZDX0VuY29kZV9WREVuY19T dXBwb3J0ZWQgIiR7RW5jb2RlX1ZERW5jX1N1cHBvcnRlZH0iKQorZGlmZiAtLWdpdCBhL21lZGlh X2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9ieHQvbWVkaWFfaW50 ZXJmYWNlc19nOV9ieHQuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9p bnRlcmZhY2VzX205X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAKK2luZGV4IDNmMzA2 ZWUyYS4uOGU0YzBmNTMyIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFj ZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAKKysr KyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9ieHQv bWVkaWFfaW50ZXJmYWNlc19nOV9ieHQuY3BwCitAQCAtMTM1LDcgKzEzNSw3IEBAIE1PU19TVEFU VVMgTWh3SW50ZXJmYWNlc0c5Qnh0OjpJbml0aWFsaXplKAorIAorICAgICByZXR1cm4gTU9TX1NU QVRVU19TVUNDRVNTOworIH0KKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChf TU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZV TExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgYnh0UmVnaXN0ZXJlZE1tZCA9CisgICAgIE1l ZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmlj ZUc5Qnh0PigodWludDMyX3QpSUdGWF9CUk9YVE9OKTsKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2 ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVyZmFj ZXNfZzlfY2ZsLmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJm YWNlc19tOV9jZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwCitpbmRleCBiOGZhMWVlYzAu Ljg0ZTBmYWQxZCAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVk aWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwCisrKysgYi9t ZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfY2ZsL21lZGlh X2ludGVyZmFjZXNfZzlfY2ZsLmNwcAorQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGJvb2wgY2Zs UmVnaXN0ZXJlZE1odyA9CisgICAgIE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTWh3SW50ZXJmYWNl cz46OgorICAgICBSZWdpc3RlcjxNaHdJbnRlcmZhY2VzRzlLYmw+KCh1aW50MzJfdClJR0ZYX0NP RkZFRUxBS0UpOworIAorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZpbmVkKF9NTUNf U1VQUE9SVEVEKSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5lZChfRlVMTF9P UEVOX1NPVVJDRSkKKyBzdGF0aWMgYm9vbCBjZmxSZWdpc3RlcmVkTW1kID0KKyAgICAgTWVkaWFG YWN0b3J5PHVpbnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1kRGV2aWNlRzlL Ymw+KCh1aW50MzJfdClJR0ZYX0NPRkZFRUxBS0UpOworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZl ci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9nbGsvbWVkaWFfaW50ZXJmYWNl c19nOV9nbGsuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZh Y2VzX205X2dsay9tZWRpYV9pbnRlcmZhY2VzX2c5X2dsay5jcHAKK2luZGV4IGRlODFlNjA5MS4u MjYzOGNiM2E2IDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRp YV9pbnRlcmZhY2VzX205X2dsay9tZWRpYV9pbnRlcmZhY2VzX2c5X2dsay5jcHAKKysrKyBiL21l ZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9nbGsvbWVkaWFf aW50ZXJmYWNlc19nOV9nbGsuY3BwCitAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgYm9vbCBnbGtS ZWdpc3RlcmVkTWh3ID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNaHdJbnRlcmZhY2Vz Pjo6CisgICAgIFJlZ2lzdGVyPE1od0ludGVyZmFjZXNHOUtibD4oKHVpbnQzMl90KUlHRlhfR0VN SU5JTEFLRSk7CisgCistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01NQ19T VVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxMX09Q RU5fU09VUkNFKQorIHN0YXRpYyBib29sIGdsa1JlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRpYUZh Y3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VHOUti bD4oKHVpbnQzMl90KUlHRlhfR0VNSU5JTEFLRSk7CitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVy L21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2tibC9tZWRpYV9pbnRlcmZhY2Vz X2c5X2tibC5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFj ZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcAoraW5kZXggOTlkNzg2MTg1Li40 ZTljNmU3ZjEgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlh X2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcAorKysrIGIvbWVk aWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2tibC9tZWRpYV9p bnRlcmZhY2VzX2c5X2tibC5jcHAKK0BAIC0xMzEsNyArMTMxLDcgQEAgTU9TX1NUQVRVUyBNaHdJ bnRlcmZhY2VzRzlLYmw6OkluaXRpYWxpemUoCisgCisgICAgIHJldHVybiBNT1NfU1RBVFVTX1NV Q0NFU1M7CisgfQorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZpbmVkKF9NTUNfU1VQ UE9SVEVEKSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5lZChfRlVMTF9PUEVO X1NPVVJDRSkKKyBzdGF0aWMgYm9vbCBrYmxSZWdpc3RlcmVkTW1kID0KKyAgICAgTWVkaWFGYWN0 b3J5PHVpbnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1kRGV2aWNlRzlLYmw+ KCh1aW50MzJfdClJR0ZYX0tBQllMQUtFKTsKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvbWVk aWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlf c2tsLmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19t OV9za2wvbWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3BwCitpbmRleCBlMjUyMGVkZjcuLjRiMDAx MmM2NCAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50 ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3BwCisrKysgYi9tZWRpYV9k cml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfc2tsL21lZGlhX2ludGVy ZmFjZXNfZzlfc2tsLmNwcAorQEAgLTEzOSw3ICsxMzksNyBAQCBNT1NfU1RBVFVTIE1od0ludGVy ZmFjZXNHOVNrbDo6SW5pdGlhbGl6ZSgKKyAKKyAgICAgcmV0dXJuIE1PU19TVEFUVVNfU1VDQ0VT UzsKKyB9CistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01NQ19TVVBQT1JU RUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxMX09QRU5fU09V UkNFKQorIHN0YXRpYyBib29sIHNrbFJlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRpYUZhY3Rvcnk8 dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VHOVNrbD4oKHVp bnQzMl90KUlHRlhfU0tZTEFLRSk7CistLSAKKzIuNDAuMAorCmRpZmYgLS1naXQgYS9zcmNwa2dz L2ludGVsLW1lZGlhLWRyaXZlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVy L3RlbXBsYXRlCmluZGV4IDA2YjdjMTlhMGJhMDcuLjE3MzViOTBjNjVjZTUgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaW50ZWwt bWVkaWEtZHJpdmVyL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnaW50ZWwtbWVkaWEtZHJpdmVyJwogcGtnbmFtZT1pbnRlbC1tZWRpYS1kcml2ZXIKLXZlcnNp b249MjMuMy41Cit2ZXJzaW9uPTIyLjYuNAogcmV2aXNpb249MQogYXJjaHM9Ing4Nl82NCoiCiBi dWlsZF9zdHlsZT1jbWFrZQpAQCAtOCwxMSArOCwxMSBAQCBjb25maWd1cmVfYXJncz0iLVduby1k ZXYgLURFTkFCTEVfTk9ORlJFRV9LRVJORUxTPSQodm9wdF9pZiBub25mcmVlIE9OIE9GRikiCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGlidmEtZGV2ZWwgbGli WDExLWRldmVsIGludGVsLWdtbWxpYi1kZXZlbCBsaWJwY2lhY2Nlc3MtZGV2ZWwiCiBzaG9ydF9k ZXNjPSJJbnRlbCBNZWRpYSBEcml2ZXIgZm9yIFZBQVBJIChCcm9hZHdlbGwrKSIKLW1haW50YWlu ZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCittYWludGFpbmVyPSJTdGVmYW5v IFJhZ25pIDxzdDNyNGdAcHJvdG9ubWFpbC5jb20+IgogbGljZW5zZT0iTUlULCBCU0QtMy1DbGF1 c2UiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL21lZGlhLWRyaXZlciIKIGRp c3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL21lZGlhLWRyaXZlci9hcmNoaXZlL2lu dGVsLW1lZGlhLSR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09NjdmZDE1NjU0YmIzYzU5NmZl YjhjODVlODEyMjFkZTU2MzJlMTFmNTk4NDIxYzM1YWRjNDQ1M2Q3MjdmMDEzMAorY2hlY2tzdW09 MGMwNGI5ZDc0YjkyZGU0MWZkNDA5YjYyOTEzY2U0YWZkNzk5MjM2YzBiNmJjMTk4M2E0OTY5OTA3 NjRlNWQ5MAogCiBidWlsZF9vcHRpb25zPSJub25mcmVlIgogZGVzY19vcHRpb25fbm9uZnJlZT0i RW5hYmxlIG5vbmZyZWUga2VybmVscyIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEt c2RrL3BhdGNoZXMvbXVzbC5wYXRjaCBiL3NyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3BhdGNoZXMv bXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi40YWU3 MDkyNGI3NDRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvcGF0 Y2hlcy9tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMTQgQEAKKy0tLSBhL3Rvb2xzL3RyYWNlci90cmFj ZXIvdHJhY2VyX2xpbnV4LmNwcAkyMDIyLTExLTE4IDAzOjAyOjU5LjAwMDAwMDAwMCAtMDUwMAor KysrIGIvdG9vbHMvdHJhY2VyL3RyYWNlci90cmFjZXJfbGludXguY3BwCTIwMjItMTItMTggMDE6 NDQ6NTEuMzQxNTQyNTcyIC0wNTAwCitAQCAtMzIsNiArMzIsMTEgQEAKKyAjaW5jbHVkZSA8ZGxm Y24uaD4KKyAjaW5jbHVkZSAidHJhY2VyLmgiCisKKysjaWZuZGVmIFJUTERfREVFUEJJTkQKKysv LyBtdXNsIG5laXRoZXIgZGVmaW5lcyBub3IgY2FuIHVzZSBSVExEX0RFRVBCSU5ECisrI2RlZmlu ZSBSVExEX0RFRVBCSU5EIDAKKysjZW5kaWYKKysKKyAjaWYgZGVmaW5lZChfX2kzODZfXykKKyAg ICAgI2RlZmluZSBMSUJNRlhIVyAibGlibWZ4aHczMi5zby4xIgorICNlbGlmIGRlZmluZWQoX194 ODZfNjRfXykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3RlbXBsYXRlIGIv c3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMC4uN2FlYWI1MTgwMmY4ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvaW50ZWwtbWVkaWEtc2RrL3RlbXBsYXRlCkBAIC0wLDAgKzEsMzcgQEAKKyMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2ludGVsLW1lZGlhLXNkaycKK3BrZ25hbWU9aW50ZWwtbWVkaWEtc2RrCit2ZXJz aW9uPTIyLjYuNAorcmV2aXNpb249MQorYXJjaHM9Ing4Nl82NCoiCitidWlsZF9zdHlsZT1jbWFr ZQorY29uZmlndXJlX2FyZ3M9Ii1Xbm8tZGV2IC1EQlVJTERfU0FNUExFUz1PRkYgLURCVUlMRF9U RVNUUz1PTiIKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKK21ha2VkZXBlbmRzPSJsaWJ2 YS1kZXZlbCBsaWJkcm0tZGV2ZWwgaW50ZWwtZ21tbGliLWRldmVsIgorc2hvcnRfZGVzYz0iSW50 ZWwgTWVkaWEgU0RLIgorbWFpbnRhaW5lcj0iU3RlZmFubyBSYWduaSA8c3QzcjRnQHByb3Rvbm1h aWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCwgQlNELTMtQ2xhdXNlIgoraG9tZXBhZ2U9Imh0dHBzOi8v Z2l0aHViLmNvbS9JbnRlbC1NZWRpYS1TREsvTWVkaWFTREsiCitkaXN0ZmlsZXM9Imh0dHBzOi8v Z2l0aHViLmNvbS9JbnRlbC1NZWRpYS1TREsvTWVkaWFTREsvYXJjaGl2ZS9yZWZzL3RhZ3MvaW50 ZWwtbWVkaWFzZGstJHt2ZXJzaW9ufS50YXIuZ3oiCitjaGVja3N1bT0xOTdhY2QwNTZmODFlOWZm MWMyNzA2OGQ1MGU4Yzg0YzIwMTRkOTRjN2FjMTdjYWQ2OWQ1YzJkNjFlNDQ1ZmQzCisKK3Bvc3Rf aW5zdGFsbCgpIHsKKwl2bGljZW5zZSBMSUNFTlNFCit9CisKK2xpYm1meF9wYWNrYWdlKCkgewor CWRlcGVuZHM9IiR7bWFrZWRlcGVuZHN9ICR7c291cmNlcGtnfS0ke3ZlcnNpb259XyR7cmV2aXNp b259IgorCXNob3J0X2Rlc2M9IkludGVsIE1lZGlhU0RLIG1meCBsaWIiCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlIHVzci9saWIvbWZ4CisJCXZtb3ZlICJ1c3IvbGliL2xpYm1meCouc28qIgor CX0KK30KKworbGlibWZ4LWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHttYWtlZGVwZW5k c30gJHtzb3VyY2Vwa2d9LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAt IGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVk ZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCX0KK30KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv aW50ZWwtbWVkaWEtc2RrL3VwZGF0ZSBiL3NyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3VwZGF0ZQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi40MzRhMmJjNjdmN2ExCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlCkBAIC0wLDAg KzEgQEAKK3BrZ25hbWU9aW50ZWwtbWVkaWEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlibWZ4IGIv c3JjcGtncy9saWJtZngKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4u OGZmYzcwOTljMjI3MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlibWZ4CkBAIC0wLDAg KzEgQEAKK2ludGVsLW1lZGlhLXNkawpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGlibWZ4LWRldmVsIGIvc3JjcGtncy9saWJtZngtZGV2ZWwKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uOGZmYzcwOTljMjI3MgotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvbGlibWZ4LWRldmVsCkBAIC0wLDAgKzEgQEAKK2ludGVsLW1l ZGlhLXNkawpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv b25ldnBsLWRldmVsIGIvc3JjcGtncy9vbmV2cGwtZGV2ZWwKbmV3IGZpbGUgbW9kZSAxMjAwMDAK aW5kZXggMDAwMDAwMDAwMDAwMC4uZTIzMDY1MDBiNDg3MQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3Mvb25ldnBsLWRldmVsCkBAIC0wLDAgKzEgQEAKK29uZXZwbApcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS1kZXZlbCBi L3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRl eCAwMDAwMDAwMDAwMDAwLi40NzkyMGNlZWNmOTE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsCkBAIC0wLDAgKzEgQEAKK29uZXZwbC1pbnRlbC1ncHUK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL29uZXZwbC1p bnRlbC1ncHUvdGVtcGxhdGUgYi9zcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUvdGVtcGxhdGUKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZjE0YWNiNzI4YTU0ZAotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZQpAQCAtMCww ICsxLDI3IEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdvbmV2cGwtaW50ZWwtZ3B1JworcGtnbmFt ZT1vbmV2cGwtaW50ZWwtZ3B1Cit2ZXJzaW9uPTIyLjYuNAorcmV2aXNpb249MQorYXJjaHM9Ing4 Nl82NCoiCitidWlsZF9zdHlsZT1jbWFrZQorY29uZmlndXJlX2FyZ3M9Ii1Xbm8tZGV2IC1EQ01B S0VfQlVJTERfVFlQRT1SZWxlYXNlIgoraG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBwa2ctY29uZmln IgorbWFrZWRlcGVuZHM9ImxpYmRybS1kZXZlbCBsaWJ2YS1kZXZlbCBvbmV2cGwtZGV2ZWwiCitz aG9ydF9kZXNjPSJSdW50aW1lIGltcGxlbWVudGF0aW9uIG9mIG9uZVZQTCBBUEkgZm9yIEludGVs IEdlbiBHUFVzIgorbWFpbnRhaW5lcj0iemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4iCitsaWNl bnNlPSJNSVQiCitob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL29uZWFwaS1zcmMvb25lVlBM LWludGVsLWdwdSIKK2NoYW5nZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL29uZWFwaS1zcmMvb25l VlBMLWludGVsLWdwdS9ibG9iL21haW4vQ0hBTkdFTE9HLm1kIgorZGlzdGZpbGVzPSJodHRwczov L2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1L2FyY2hpdmUvcmVmcy90YWdz L2ludGVsLW9uZXZwbC0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTc0YjA5NzlkY2IyYWYx YjdjNjhlZGI4Y2JjYjAyZDUzOWRlNTExMDkwYjEyZmFjNTA2NTJjYmFjZDcwN2M0ZTYKKworcG9z dF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UKK30KKworb25ldnBsLWludGVsLWdwdS1k ZXZlbF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlw a2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9wa2djb25maWcKKwl9Cit9CmRpZmYgLS1n aXQgYS9zcmNwa2dzL29uZXZwbC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjg1YzdjMmRhODVjZTkKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL29uZXZwbC90ZW1wbGF0ZQpAQCAtMCwwICsxLDM0IEBA CisjIFRlbXBsYXRlIGZpbGUgZm9yICdvbmV2cGwnCitwa2duYW1lPW9uZXZwbAordmVyc2lvbj0y MDIzLjEuMgorcmV2aXNpb249MQorYXJjaHM9Ing4Nl82NCoiCitidWlsZF9zdHlsZT1jbWFrZQor Y29uZmlndXJlX2FyZ3M9IgorCS1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIC1Xbm8tZGV2CisJ LURCVUlMRF9QWVRIT05fQklORElORzpCT09MPSdPRkYnCisJLURCVUlMRF9FWEFNUExFUzpCT09M PSdPRkYnCisJLURCVUlMRF9URVNUUzpCT09MPSdPTicKKwktRElOU1RBTExfRVhBTVBMRV9DT0RF OkJPT0w9J09GRiciCitob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGxpYlgxMSBweXRob24gd2F5bGFu ZC1wcm90b2NvbHMgcGtnLWNvbmZpZyIKK21ha2VkZXBlbmRzPSJsaWJ2YS1kZXZlbCBsaWJYMTEt ZGV2ZWwgd2F5bGFuZC1kZXZlbCIKK3Nob3J0X2Rlc2M9IkludGVsIG9uZUFQSSBWaWRlbyBQcm9j ZXNzaW5nIGxpYnJhcnkiCittYWludGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIK K2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczovL3d3dy5pbnRlbC5jb20vY29udGVudC93 d3cvdXMvZW4vZGV2ZWxvcGVyL3Rvb2xzL29uZWFwaS9vbmV2cGwuaHRtbCIKK2Rpc3RmaWxlcz0i aHR0cHM6Ly9naXRodWIuY29tL29uZWFwaS1zcmMvb25lVlBML2FyY2hpdmUvdiR7dmVyc2lvbn0v JHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPWIyMjYxY2NhMTc0Y2UxODE1 ZjNkNDdjNjQ3OTIxYWIxN2Y2ODI2N2M2OWMxZTI0NDRmZjI3YWFiN2QxOTljYmIKKworcG9zdF9p bnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UKK30KKworb25ldnBsLWRldmVsX3BhY2thZ2Uo KSB7CisJZGVwZW5kcz0iJHttYWtlZGVwZW5kc30gJHtzb3VyY2Vwa2d9LSR7dmVyc2lvbn1fJHty ZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19pbnN0 YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZwor CQl2bW92ZSAidXNyL2xpYi8qLnNvIgorCX0KK30KCkZyb20gOWZmNmQ4MmI4NzJkMjQ1ZjA4YTEw OGUyMTAwNTE4ZWYxZTllNThkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCA4IEp1bCAyMDIzIDIwOjIwOjU5IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwOTAvMTE1XSB0cmFja2VyLW1pbmVyczogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMv dGVtcGxhdGUKaW5kZXggMGI5N2Y0NzQ4OWY4MS4uZjE5NmQyYmY5ZTRhNCAxMDA2NDQKLS0tIGEv c3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RyYWNrZXItbWlu ZXJzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndHJhY2tl ci1taW5lcnMnCiBwa2duYW1lPXRyYWNrZXItbWluZXJzCiB2ZXJzaW9uPTMuNi4xCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPXFlbXUKICMg bWlzc2luZyBsaWJncnNzIGZvciBtaW5lcl9yc3MKCkZyb20gMjMyYzZmY2M1NDRiYzNmZjk3YmMx NGVhZmE3ZDcxOThhM2MwODc1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCA4IEp1bCAyMDIzIDIwOjIxOjIxIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwOTEvMTE1XSBtcGQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9tcGQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21wZC90ZW1wbGF0ZSBi L3NyY3BrZ3MvbXBkL3RlbXBsYXRlCmluZGV4IDY0NWMxYjc3OGU0MDcuLjYwMjg3Y2M5ZjZlM2Mg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXBkL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXBkJwogcGtnbmFtZT1t cGQKIHZlcnNpb249MC4yMy4xNAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9 bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRG9wdXM9ZW5hYmxlZCAtRG1pa21vZD1lbmFibGVkIC1E bmVpZ2hib3I9dHJ1ZQogIC1Ec291bmRjbG91ZD1lbmFibGVkIC1EcGlwZT10cnVlIC1EdHdvbGFt ZT1lbmFibGVkIC1EYnppcDI9ZW5hYmxlZAoKRnJvbSA1NGFmM2MyYWY1N2ZlNTE2NGJhNzFkNmIz MTNhZTU2ZGZiMzRkOTA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMwIEF1ZyAyMDIzIDA5OjEwOjAyIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwOTIvMTE1XSB0Z19vd3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy90Z19vd3QvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RnX293dC90ZW1w bGF0ZSBiL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCmluZGV4IDUwYmM4MzEwYjg4NTkuLmM5MzI2 MmQ1YzVkZTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvdGdfb3d0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn dGdfb3d0JwogcGtnbmFtZT10Z19vd3QKIHZlcnNpb249MC4wLjAuMjAyMzA5MjEKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIF9jb21taXQ9M2JiM2Q3NTc2ODFlNmNjNTEzNWFlYzY1MjlhNzUzZGMz ZGNkY2ZiOQogX2xpYnl1dl9jb21taXQ9MDQ4MjFkMWU3ZDYwODQ1NTI1ZThkYjU1YzdiY2Q0MWVm NWJlOTQwNgogX2Fic2VpbF9jb21taXQ9OGMwYjk0ZTc5M2E2NjQ5NWUwYjFmMzRhNWViMjZiZDdk YzY3MmRiMAoKRnJvbSA5NjlmMTQ0OGQ0YTM4N2JmMTU3NmNhNTVlZjgwZDE0NGNjNjRiOGM0IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDMwIEF1ZyAyMDIzIDA5OjEwOjQ0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTMv MTE1XSB0ZWxlZ3JhbS1kZXNrdG9wOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGVsZWdyYW0t ZGVza3RvcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQppbmRl eCA5YmQ5NGNlMzc4MWZmLi5kMzNmYzYyYjEwZTM4IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RlbGVn cmFtLWRlc2t0b3AvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGVsZWdyYW0tZGVza3Rv cCcKIHBrZ25hbWU9dGVsZWdyYW0tZGVza3RvcAogdmVyc2lvbj00LjExLjIKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9InFlbXUgZ2lyIgog Y29uZmlndXJlX2FyZ3M9Ii1EVERFU0tUT1BfQVBJX0lEPTIwOTIzNQoKRnJvbSBmNGMwMThhODQ5 YjgwYzdiZTQ0MGMzNjU5OTEzYTYyODI2NDdlZmE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMwIEF1ZyAyMDIzIDA5 OjExOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTQvMTE1XSBnc3QtcGx1Z2lucy1iYWQxOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQppbmRleCAyYmYyZjRiMDY0MmZlLi4wZmFmY2I2 NTU1Mzk1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXBsdWdpbnMtYmFkMScKIHBrZ25hbWU9Z3N0LXBsdWdpbnMt YmFkMQogdmVyc2lvbj0xLjIyLjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX2hlbHBl cj0iZ2lyIgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRHBhY2thZ2Utb3Jp Z2luPWh0dHBzOi8vdm9pZGxpbnV4Lm9yZyAtRGRvYz1kaXNhYmxlZAoKRnJvbSBkMGQzM2IxYmNm Y2NlNmRhNzFkZTM4NGI4ZmIyNTQ2OTQ0MmI5ZDczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMwIEF1ZyAyMDIzIDA5 OjEyOjA5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTUvMTE1XSBvcGVubXc6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVubXcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL29wZW5tdy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCmluZGV4IDBhYmY1 ZmY3Y2RiZWMuLmI1NzE4MGYxYTQ0NDYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnb3Blbm13JwogcGtnbmFtZT1vcGVubXcKIHZlcnNpb249MC40OC4wCi1y ZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogX3JlY2FzdF9jb21taXQ9 ZTc1YWRmODZmOTFlYjMwODIyMjAwODVlNDJkZGE2MjY3OWY5YTNlYQogX2J1bGxldF90YWc9My4x NwoKRnJvbSA1MzcyZDYzNWJkZDMxNTJhOTMyNTQyOTIwYjMzMzhlYTBkNzA1ZWVjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDMwIEF1ZyAyMDIzIDA5OjE0OjUzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTYvMTE1XSBs bXM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9sbXMvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2xtcy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbG1zL3RlbXBsYXRlCmluZGV4 IGUzNThmNzU5MDJhOTguLjNiMjFjNDU4ZGU1MTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbG1zL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvbG1zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnbG1zJwogcGtnbmFtZT1sbXMKIHZlcnNpb249My40Mi4xCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIgogbWFrZWRlcGVuZHM9Ind0LWRldmVsIGZmbXBlZy1kZXZlbCBib29zdC1kZXZlbCBs aWJjb25maWcrKy1kZXZlbCB0YWdsaWItZGV2ZWwgcGFtLWRldmVsIGxpYmdyYXBoaWNzbWFnaWNr LWRldmVsIGd0ZXN0LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwiCgpGcm9tIDEyZGE0MDhiN2RmZjFl MjdmNzI2YTVlYTAzMmZlZDZlNTA1NDc3ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTg6 MTggLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ny8xMTVdIGZyZWVjYWQ6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9mcmVlY2FkL3RlbXBsYXRlIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IGMxMzU3 MDFlMzhiOWEuLjcwNTQ5OWU5OTcyYTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZWNhZC90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdmcmVlY2FkJwogcGtnbmFtZT1mcmVlY2FkCiB2ZXJzaW9uPTAuMjAu MgotcmV2aXNpb249NworcmV2aXNpb249OAogYnVpbGRfd3Jrc3JjPSJGcmVlQ0FELSR7dmVyc2lv bn0iCiBidWlsZF9zdHlsZT1jbWFrZQogcHljb21waWxlX2RpcnM9InVzci9saWIvJHtwa2duYW1l fS9Nb2QiCgpGcm9tIDljZWY2OGM4Yjc0ZDJiNDBkNWFiNDFiOWZhMTc0MTQ0YzQ1NDllMzEgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFN1biwgMTUgT2N0IDIwMjMgMjE6NDc6MTggLTA0MDAKU3ViamVjdDogW1BBVENIIDA5OC8x MTVdIGxpYm9wZW5zaG90OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbGli b3BlbnNob3QvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRl IGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQppbmRleCA4ZTU3YzVmNTkyMTY5Li43YThm NDUyMGU3ODkyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdsaWJvcGVuc2hvdCcKIHBrZ25hbWU9bGlib3BlbnNob3QKIHZlcnNpb249MC4z LjAKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWNtYWtlCiAjIEJ1aWxkcyBm YWlsIHdpdGggUnVieS0yLjQuMQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX1JVQlk9T0ZGIC1E VVNFX1NZU1RFTV9KU09OQ1BQPU9OIgoKRnJvbSA1OTc2YmZiZGZjYWZkNjRjOTE1YjA1M2U5YmQz MTU2MzZhZTM2ZDBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDggTm92IDIwMjMgMTA6MTA6MzAgLTA1MDAKU3ViamVj dDogW1BBVENIIDA5OS8xMTVdIG9wZW5pbWFnZWlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5p bWFnZWlvL3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZQppbmRleCAzY2Uz ZjllNDlkMzUwLi4yN2QyMTMxYmMwYTYxIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWlv L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VpbycKIHBrZ25hbWU9b3BlbmltYWdl aW8KIHZlcnNpb249Mi40LjkuMAotcmV2aXNpb249NworcmV2aXNpb249OAogYnVpbGRfc3R5bGU9 Y21ha2UKIGJ1aWxkX2hlbHBlcj1xZW11CiBjb25maWd1cmVfYXJncz0iLURVU0VfUVQ9MCAtRFVT RV9QWVRIT049MCAtRE9JSU9fQlVJTERfVEVTVFM9MAoKRnJvbSAzZGE4ZjY3MjRmOGZiNTkzYWQw MTBiMzRjYTU1YjA2OWJmZWIzOTNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDggTm92IDIwMjMgMTA6MTE6NTcgLTA1 MDAKU3ViamVjdDogW1BBVENIIDEwMC8xMTVdIHN5bmZpZ3N0dWRpbzogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlIGIvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxh dGUKaW5kZXggMDllNDQyZGE5YTY4MC4uMmJjMDE3Y2VkY2E2YiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxh dGUKQEAgLTIsNyArMiw3IEBACiAjIFNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCAnc3luZmln JyBhbmQgJ0VUTCcKIHBrZ25hbWU9c3luZmlnc3R1ZGlvCiB2ZXJzaW9uPTEuNC40Ci1yZXZpc2lv bj00CityZXZpc2lvbj01CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJn cz0iLS1kaXNhYmxlLXVwZGF0ZS1taW1lZGIiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcg aW50bHRvb2wgZ2V0dGV4dCBzeW5maWciCgpGcm9tIDRhMjVhNjE0ODA4YmQ2NmMyZTU2MDAyZWEy YzE0YmMwMzI4Zjk5YzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgOCBOb3YgMjAyMyAxMDoxMjozMiAtMDUwMApTdWJq ZWN0OiBbUEFUQ0ggMTAxLzExNV0gZ21pYzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2dtaWMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dtaWMvdGVtcGxhdGUgYi9z cmNwa2dzL2dtaWMvdGVtcGxhdGUKaW5kZXggODA4OTUzZTliNTQzYy4uZDg1NDgwOGY4NmFhNCAx MDA2NDQKLS0tIGEvc3JjcGtncy9nbWljL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ21pYy90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dtaWMnCiBwa2duYW1l PWdtaWMKIHZlcnNpb249My4xLjYKLXJldmlzaW9uPTUKK3JldmlzaW9uPTYKIF96YXJ0X2hhc2g9 MzRlYmY2Y2NlMGJhZmI5OGFiZTU3Y2VjODNjNGEwMmNkMWFiZWNhMAogY3JlYXRlX3dya3NyYz15 ZXMKIGJ1aWxkX3dya3NyYz0ic3JjIgoKRnJvbSA0ZWE2MmE4OWZkNjkxMmMyODZjY2Y2YzYxYjBl M2MwMDVhMzk0NTNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAyMDIzIDE0OjUzOjEwIC0wNTAwClN1Ympl Y3Q6IFtQQVRDSCAxMDIvMTE1XSBtaXh4eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL21peHh4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9taXh4eC90ZW1wbGF0ZSBi L3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKaW5kZXggNjkyMTk5NmU0ZTc3Yi4uNmE3OWIzMjhjMWFi ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21peHh4 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWl4eHgnCiBw a2duYW1lPW1peHh4CiB2ZXJzaW9uPTIuMy4zCi1yZXZpc2lvbj02CityZXZpc2lvbj03CiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNl IgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHBrZy1jb25maWcgcHJvdG9i dWYgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIgoKRnJvbSAxNzkwY2E1NTc4ZTIyZmMwNzRhMmJh MGJlZjgxMGE1NmY1N2M5MTA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAyMDIzIDE0OjUzOjI4IC0wNTAw ClN1YmplY3Q6IFtQQVRDSCAxMDMvMTE1XSBtdXNpa2N1YmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL211 c2lrY3ViZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCmluZGV4IGQ5ZTYx ODZlNjY5N2IuLjYzNzk1MmQ1MGFjYTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXVzaWtjdWJlL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnbXVzaWtjdWJlJwogcGtnbmFtZT1tdXNpa2N1YmUKIHZlcnNp b249My4wLjAKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWNtYWtlCiBtYWtl X2NtZD1tYWtlCiBjb25maWd1cmVfYXJncz0iLUROT19OQ1VSU0VTVz0xIgoKRnJvbSA0MjAyOWQx MTBhMjJhOTNkNzIyOGFhY2FkYzI3Y2Y3NzVlNjQ1YjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAyMDIz IDE0OjUzOjQ1IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMDQvMTE1XSBlbGVjdHJvbjI0OiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZWxlY3Ryb24yNC90 ZW1wbGF0ZQppbmRleCBhOWM4NjVjMTljOTg5Li5iODYxM2U0MzYyYmM3IDEwMDY0NAotLS0gYS9z cmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZWxlY3Ryb24yNCcKIHBr Z25hbWU9ZWxlY3Ryb24yNAogdmVyc2lvbj0yNC4zLjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMK IF9ub2RldmVyPTE4LjE0LjAKIF9jaHJvbWl1bXZlcj0xMTIuMC41NjE1LjE2NQogYXJjaHM9Ing4 Nl82NCogYWFyY2g2NCoiCgpGcm9tIGJjMDk4NzQ3ZTAyYjBmZTQ5NGVkMGZlYzI4MTBjMjc3NTIy ZGNhMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IEZyaSwgMTAgTm92IDIwMjMgMTQ6NTQ6MDAgLTA1MDAKU3ViamVjdDogW1BB VENIIDEwNS8xMTVdIGVsZWN0cm9uMTk6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9lbGVjdHJvbjE5L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjE5L3Rl bXBsYXRlIGIvc3JjcGtncy9lbGVjdHJvbjE5L3RlbXBsYXRlCmluZGV4IGIxOGJjNzkyYzgyMjEu LjI5ZmIzNGUyNTRlZWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdlbGVjdHJvbjE5JwogcGtnbmFtZT1lbGVjdHJvbjE5CiB2ZXJzaW9uPTE5 LjAuOAotcmV2aXNpb249NAorcmV2aXNpb249NQogX25vZGV2ZXI9MTYuMTQuMgogX2Nocm9taXVt dmVyPTEwMi4wLjUwMDUuMTI1CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiBwcGM2NGxlKiIKCkZy b20gMzc1MDQ5N2M1OGVjNmUxY2ZhMTcyYjAxOThjZDgwNWQzOWQwMjQ2ZiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAx MCBOb3YgMjAyMyAxNDo1NDoxMyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTA2LzExNV0gd2YtcmVj b3JkZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93Zi1yZWNvcmRlci90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUgYi9zcmNwa2dz L3dmLXJlY29yZGVyL3RlbXBsYXRlCmluZGV4IDA4Zjk4NmIwMzEwMDYuLjYzYzQ1Y2Y0YjgxNGQg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93 Zi1yZWNvcmRlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3dmLXJlY29yZGVyJwogcGtnbmFtZT13Zi1yZWNvcmRlcgogdmVyc2lvbj0wLjQuMQotcmV2aXNp b249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBzY2RvYyB3YXlsYW5kLWRldmVsIgogbWFrZWRlcGVuZHM9IndheWxhbmQtcHJvdG9j b2xzIHdheWxhbmQtZGV2ZWwgZmZtcGVnLWRldmVsIGxpYmdibS1kZXZlbCB4MjY0LWRldmVsCgpG cm9tIGQ4NThiZjJlNWYyZGY1YWFkNTMzZjI4MzY3MjZmODFmNTJiM2EwZDMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwg MTAgTm92IDIwMjMgMTQ6NTQ6MjYgLTA1MDAKU3ViamVjdDogW1BBVENIIDEwNy8xMTVdIG9iczog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29icy90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlIGIvc3JjcGtncy9vYnMvdGVtcGxhdGUKaW5kZXggNWQx ZDVlODg3NDA5ZS4uM2VhYWY4ZDRjODIwMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9vYnMvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9vYnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdvYnMnCiBwa2duYW1lPW9icwogdmVyc2lvbj0yOS4xLjMKLXJldmlzaW9uPTMK K3JldmlzaW9uPTQKIGFyY2hzPSJpNjg2KiB4ODZfNjQqIHBwYzY0bGUqIGFhcmNoNjQqIgogYnVp bGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE9CU19WRVJTSU9OX09WRVJSSURFPSR7 dmVyc2lvbn0gLURFTkFCTEVfSkFDSz1PTgoKRnJvbSA5NzY0NzIyMWE2YTVmNzEyYzYxZjA1ZGNl NWQwZTNlZGFhMmViMGM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAyMDIzIDE0OjU0OjM2IC0wNTAwClN1 YmplY3Q6IFtQQVRDSCAxMDgvMTE1XSBtbHQ3OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvbWx0Ny90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZSBi L3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQppbmRleCA5OGYzMDJhZDNhNTE2Li43ZWI4YzAwZmExNTgw IDEwMDY0NAotLS0gYS9zcmNwa2dzL21sdDcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tbHQ3L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWx0NycKIHBrZ25h bWU9bWx0NwogdmVyc2lvbj03LjIwLjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTV0lHX1BZVEhPTj1PTiAtRE1PRF9RVDY9T04i CiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0 aG9uMyB3aGljaAoKRnJvbSBmNzYxYjczZTVlMjRlNWI4YmUyMmM3NWQ4MTg5Y2NmNjUxNjYwYjlh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBGcmksIDEwIE5vdiAyMDIzIDE0OjU0OjQ4IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAx MDkvMTE1XSBxdDYtbXVsdGltZWRpYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtbXVsdGlt ZWRpYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKaW5kZXggNjdh NTc3ZTEzMDBmZS4uMWRhNjI2ZWNmNTE1YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtbXVsdGlt ZWRpYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ2LW11bHRpbWVkaWEnCiBwa2duYW1l PXF0Ni1tdWx0aW1lZGlhCiB2ZXJzaW9uPTYuNi4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EUVRfRkVBVFVSRV9nc3RyZWFtZXI9 T04iCiBob3N0bWFrZWRlcGVuZHM9InBlcmwgcXQ2LWRlY2xhcmF0aXZlLWhvc3QtdG9vbHMgcGtn LWNvbmZpZyBxdDYtc2hhZGVydG9vbHMiCgpGcm9tIDA1OGQ1YWI1YTQ0NjkzY2JjYjY0ZWU5ODdj MjFlMzFiNjc2YmNmNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTAgTm92IDIwMjMgMTU6MDA6MTUgLTA1MDAKU3Vi amVjdDogW1BBVENIIDExMC8xMTVdIGJhcmVzaXA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXJlc2lwL3Rl bXBsYXRlIGIvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCmluZGV4IDEyYzg5NTRlZjdiOWIuLmIx NmI2N2JlYWI4ZDIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdiYXJlc2lwJwogcGtnbmFtZT1iYXJlc2lwCiB2ZXJzaW9uPTMuNi4wCi1yZXZpc2lvbj0y CityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29u ZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0ibGliZ3NtLWRldmVsIGxpYnBuZy1kZXZlbCBv cGVuc3NsLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwKCkZyb20gYWJmMjAxZDA5MDU3YmFjMmIzOWY4 YmI2NWU1NGQ2ZDcwYzIyZjU4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAxMCBOb3YgMjAyMyAxNTowMjozMCAtMDUw MApTdWJqZWN0OiBbUEFUQ0ggMTExLzExNV0gUU1QbGF5MjogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL1FNUGxh eTIvdGVtcGxhdGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKaW5kZXggNDZjODBmNjRhMTM0 OS4uOTQyMjU4Y2U2MGZiNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ1FNUGxheTInCiBwa2duYW1lPVFNUGxheTIKIHZlcnNpb249MjMuMTAuMjIKLXJl dmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIgogbWFrZWRlcGVuZHM9ImFsc2Et bGliLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJhc3MtZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJnbWUt ZGV2ZWwKCkZyb20gODgwZTQ2ZWE4OGRlMjc3NmY3ZGU4NzQzMWEzMzVlMjcxYjIzZjU3ZCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAxMCBOb3YgMjAyMyAxNTowMjozNCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTEyLzEx NV0gYWxzYS1wbHVnaW5zOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYWxz YS1wbHVnaW5zL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxh dGUgYi9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZQppbmRleCBhNTcwOGE3ZDgyYThmLi43 YmZkYWQwNDZjNDgzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2Fsc2EtcGx1Z2lucycKIHBrZ25hbWU9YWxzYS1wbHVnaW5zCiB2ZXJz aW9uPTEuMi43LjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1jb25m aWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtbWFlbW8tcGx1Z2luIgogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA0YjcyZmVlZDA0ZjVmYTYwZThiOTMwMjM4NjU3YWRk ODU3M2E0MGM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAyMDIzIDE1OjAyOjM5IC0wNTAwClN1YmplY3Q6 IFtQQVRDSCAxMTMvMTE1XSBkb2xwaGluLWVtdTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kb2xwaGlu LWVtdS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKaW5kZXggMDcwOTkz YWFjMzFkMi4uOTZlZGY1MGQzZTRhMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9kb2xwaGluLWVtdS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZG9scGhpbi1lbXUnCiBwa2duYW1lPWRvbHBoaW4tZW11 CiB2ZXJzaW9uPTUuMC4xOTM2OAotcmV2aXNpb249MgorcmV2aXNpb249MwogX2RvbHBoaW5fY29t bWl0PWRhZGJlYjRiYWU3ZTdmYTIzYWYyYjQ2ZTBhZGQ0MTQzMDk0ZGMxMDcKIF9tZ2JhX2NvbW1p dD00NGUwNzRhMTVlOTY1MTQ4MWY3ZjY1MmFjMDA2YTdjOWQ1OGNiZWI5CiBfZ29vZ2xldGVzdF9j b21taXQ9YmUwM2QwMGY1ZjBjYzNhOTk3ZDFhMzY4YmVlOGExZmU5MzY1MWY0OAoKRnJvbSAwODM0 YWI2M2YzZWU2NzllZTAwNzg1MjQ2NTFhMTkzYjQ3YmE5MzljIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAy MDIzIDE1OjAyOjQzIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMTQvMTE1XSBtaW5pZGxuYTogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxh dGUKaW5kZXggNWZhOTI5ZjNhMGMxMi4uNzQyOTkxZWNkMDRhZiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9taW5pZGxuYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWluaWRsbmEnCiBwa2duYW1lPW1pbmlk bG5hCiB2ZXJzaW9uPTEuMy4zCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1n bnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iCiAgLS1zYmluZGlyPS91c3IvYmluCgpGcm9t IDk4NWJiYTJmZTVmMjdiYmYyMmUzN2U4N2ZlMzQwY2U0NTQ1YzhkMDcgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTAg Tm92IDIwMjMgMTU6MDc6MzkgLTA1MDAKU3ViamVjdDogW1BBVENIIDExNS8xMTVdIG1wdjogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21wdi90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbXB2L3RlbXBsYXRlIGIvc3JjcGtncy9tcHYvdGVtcGxhdGUKaW5kZXggMzAxYTc3 YWQyMjk3MS4uMTU0MTcyNmFkYmIxNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tcHYvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9tcHYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdtcHYnCiBwa2duYW1lPW1wdgogdmVyc2lvbj0wLjM2LjAKLXJldmlzaW9uPTMKK3Jl dmlzaW9uPTQKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURjZGRhPWVuYWJs ZWQgLURkdmJpbj1lbmFibGVkIC1EZHZkbmF2PWVuYWJsZWQKICAtRGxpYm1wdj10cnVlIC1EY3Bs dWdpbnM9ZW5hYmxlZAo= --===============6858005599439631886==--