From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mx.groups.io with SMTP id smtpd.web10.4640.1608157141987051410 for ; Wed, 16 Dec 2020 14:19:02 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=O028ZTZN; spf=pass (domain: redhat.com, ip: 63.128.21.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608157141; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Xp4CqdOZ43CAHMHHe0zAI5kKxryVfrBgnapOZpSRens=; b=O028ZTZNR8EeltzcCSydFuJ8+hoa39sIlehXyUhnAbGrJaHDpt3oPaRpi3q0Po6Akf5ItO EYdNwoJmaKSOvlxeXKDdK8zBfURD8WmXcKVII9/68ZSk9WVmgudHiAd/tqy0xFznZuc06t QAZulDMhtVTuy8mp/4rtz/lPhaojkjM= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-80-RWkKTyQ1NtWMYSoGfgGVCg-1; Wed, 16 Dec 2020 17:18:59 -0500 X-MC-Unique: RWkKTyQ1NtWMYSoGfgGVCg-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 461D819251A1; Wed, 16 Dec 2020 22:18:58 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-114-152.ams2.redhat.com [10.36.114.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0B0CF1971D; Wed, 16 Dec 2020 22:18:52 +0000 (UTC) From: "Laszlo Ersek" To: devel@edk2.groups.io, virtio-fs@redhat.com, lersek@redhat.com Cc: Ard Biesheuvel , Jordan Justen , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [edk2 PATCH 32/48] OvmfPkg/VirtioFsDxe: add a shared wrapper for FUSE_READ / FUSE_READDIRPLUS Date: Wed, 16 Dec 2020 22:11:09 +0100 Message-Id: <20201216211125.19496-33-lersek@redhat.com> In-Reply-To: <20201216211125.19496-1-lersek@redhat.com> References: <20201216211125.19496-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 QWRkIHRoZSBWaXJ0aW9Gc0Z1c2VSZWFkRmlsZU9yRGlyKCkgZnVuY3Rpb24sIGZvciBzZW5kaW5n IHRoZSBGVVNFX1JFQUQgb3IKRlVTRV9SRUFERElSUExVUyBjb21tYW5kIHRvIHRoZSBWaXJ0aW8g RmlsZXN5c3RlbSBkZXZpY2UuCgpQYXJzaW5nIHRoZSBzdHJ1Y3R1cmVkIEZVU0VfUkVBRERJUlBM VVMgb3V0cHV0IGlzIGNvbXBsZXgsIGFuZCBjYW5ub3QgYmUKaW50ZWdyYXRlZCBpbnRvIHRoZSB3 cmFwcGVyIGZ1bmN0aW9uLiBHaXZlbiB0aGF0IGZhY3QsIEZVU0VfUkVBRCBhbmQKRlVTRV9SRUFE RElSUExVUyB0dXJuIG91dCB0byBuZWVkIGlkZW50aWNhbCBsb3ctbGV2ZWwgaGFuZGxpbmcsIGV4 Y2VwdCBmb3IKdGhlIG9wY29kZS4gSGVuY2UgdGhlIHNoYXJlZCB3cmFwcGVyIGZ1bmN0aW9uLgoK KEl0J3MgcHJ1ZGVudCB0byB2ZXJpZnkgd2hldGhlciB0aGUgRlVTRSBzZXJ2ZXIgc3VwcG9ydHMg RlVTRV9SRUFERElSUExVUywKc28gdXBkYXRlIHRoZSBzZXNzaW9uIGluaXQgY29kZSBhY2NvcmRp bmdseS4pCgpUaGlzIGlzIHRoZSBmaXJzdCBGVVNFIHJlcXVlc3Qgd3JhcHBlciBmdW5jdGlvbiB0 aGF0IGRlYWxzIHdpdGggYSB2YXJpYWJsZQpzaXplIHRhaWwgYnVmZmVyLgoKQ2M6IEFyZCBCaWVz aGV1dmVsIDxhcmQuYmllc2hldXZlbEBhcm0uY29tPgpDYzogSm9yZGFuIEp1c3RlbiA8am9yZGFu LmwuanVzdGVuQGludGVsLmNvbT4KQ2M6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOpIDxwaGlsbWRA cmVkaGF0LmNvbT4KUmVmOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcu Y2dpP2lkPTMwOTcKU2lnbmVkLW9mZi1ieTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNv bT4KLS0tCiBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5oIHwgIDY3 ICsrKysrKysKIE92bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mICAgICAgICAgfCAg IDEgKwogT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5oICAgICAgICAgICB8ICAxMSAr KwogT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9GdXNlSW5pdC5jICAgICAgICAgICAgICB8ICAxMCArLQog T3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9GdXNlUmVhZC5jICAgICAgICAgICAgICB8IDE5MSArKysrKysr KysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyNzYgaW5zZXJ0aW9ucygrKSwgNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9W aXJ0aW9Gcy5oIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvVmlydGlvRnMuaApp bmRleCA4MDBkMzY1MWUxMmIuLmZhOGM0MDAxOWY0ZSAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9JbmNs dWRlL0luZHVzdHJ5U3RhbmRhcmQvVmlydGlvRnMuaAorKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5k dXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5oCkBAIC0xMDMsMzYgKzEwMyw3MSBAQCB0eXBlZGVmIHN0 cnVjdCB7CiAjZGVmaW5lIFZJUlRJT19GU19GVVNFX01PREVfUEVSTV9XT1RIIDAwMDAwMDJ1DQog DQogLy8NCiAvLyBGbGFncyBmb3IgVmlydGlvRnNGdXNlT3BPcGVuLg0KIC8vDQogI2RlZmluZSBW SVJUSU9fRlNfRlVTRV9PUEVOX1JFUV9GX1JET05MWSAwDQogI2RlZmluZSBWSVJUSU9fRlNfRlVT RV9PUEVOX1JFUV9GX1JEV1IgICAyDQogDQorLy8NCisvLyBGbGFncyBmb3IgVmlydGlvRnNGdXNl T3BJbml0Lg0KKy8vDQorI2RlZmluZSBWSVJUSU9fRlNfRlVTRV9JTklUX1JFUV9GX0RPX1JFQURE SVJQTFVTIEJJVDEzDQorDQorLyoqDQorICBNYWNybyBmb3IgY2FsY3VsYXRpbmcgdGhlIHNpemUg b2YgYSBkaXJlY3Rvcnkgc3RyZWFtIGVudHJ5Lg0KKw0KKyAgVGhlIG1hY3JvIG1heSBldmFsdWF0 ZSBOYW1lbGVuIG11bHRpcGxlIHRpbWVzLg0KKw0KKyAgVGhlIG1hY3JvIGV2YWx1YXRlcyB0byBh IFVJTlROIHZhbHVlIHRoYXQgaXMgc2FmZSB0byBjYXN0IHRvIFVJTlQzMi4NCisNCisgIEBwYXJh bVtpbl0gTmFtZWxlbiAgVGhlIHNpemUgb2YgdGhlIGZpbGVuYW1lIGJ5dGUgYXJyYXkgdGhhdCBm b2xsb3dzDQorICAgICAgICAgICAgICAgICAgICAgIFZJUlRJT19GU19GVVNFX0RJUkVOVFBMVVNf UkVTUE9OU0UgaW4gdGhlIGRpcmVjdG9yeQ0KKyAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0s IGFzIHJlcG9ydGVkIGJ5DQorICAgICAgICAgICAgICAgICAgICAgIFZJUlRJT19GU19GVVNFX1NU QVRGU19SRVNQT05TRS5OYW1lbGVuIG9yDQorICAgICAgICAgICAgICAgICAgICAgIFZJUlRJT19G U19GVVNFX0RJUkVOVFBMVVNfUkVTUE9OU0UuTmFtZWxlbi4gVGhlIGZpbGVuYW1lDQorICAgICAg ICAgICAgICAgICAgICAgIGJ5dGUgYXJyYXkgaXMgbm90IE5VTC10ZXJtaW5hdGVkLg0KKw0KKyAg QHJldHZhbCAwICBOYW1lbGVuIHdhcyB6ZXJvIG9yIGdyZWF0ZXIgdGhhbiBTSVpFXzRLQi4NCisN CisgIEByZXR1cm4gICAgVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZGlyZWN0b3J5IGVudHJ5 LCBpbmNsdWRpbmcgdGhlDQorICAgICAgICAgICAgIFZJUlRJT19GU19GVVNFX0RJUkVOVFBMVVNf UkVTUE9OU0UgaGVhZGVyLg0KKyoqLw0KKyNkZWZpbmUgVklSVElPX0ZTX0ZVU0VfRElSRU5UUExV U19SRVNQT05TRV9TSVpFKE5hbWVsZW4pICAgICAgICAgICAgIFwNCisgICgoTmFtZWxlbikgPT0g MCB8fCAoTmFtZWxlbikgPiBTSVpFXzRLQiA/ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQor ICAgKFVJTlROKTAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KKyAgIEFMSUdOX1ZBTFVFICggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgIHNpemVvZiAoVklSVElPX0ZTX0ZV U0VfRElSRU5UUExVU19SRVNQT05TRSkgKyAoVUlOVE4pKE5hbWVsZW4pLCBcDQorICAgICBzaXpl b2YgKFVJTlQ2NCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KKyAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCisgICApDQorDQogLy8NCiAvLyBGVVNFIG9wZXJhdGlvbiBj b2Rlcy4NCiAvLw0KIHR5cGVkZWYgZW51bSB7DQogICBWaXJ0aW9Gc0Z1c2VPcExvb2t1cCAgICAg ID0gIDEsDQogICBWaXJ0aW9Gc0Z1c2VPcEZvcmdldCAgICAgID0gIDIsDQogICBWaXJ0aW9Gc0Z1 c2VPcEdldEF0dHIgICAgID0gIDMsDQogICBWaXJ0aW9Gc0Z1c2VPcE1rRGlyICAgICAgID0gIDks DQogICBWaXJ0aW9Gc0Z1c2VPcFVubGluayAgICAgID0gMTAsDQogICBWaXJ0aW9Gc0Z1c2VPcFJt RGlyICAgICAgID0gMTEsDQogICBWaXJ0aW9Gc0Z1c2VPcE9wZW4gICAgICAgID0gMTQsDQorICBW aXJ0aW9Gc0Z1c2VPcFJlYWQgICAgICAgID0gMTUsDQogICBWaXJ0aW9Gc0Z1c2VPcFN0YXRGcyAg ICAgID0gMTcsDQogICBWaXJ0aW9Gc0Z1c2VPcFJlbGVhc2UgICAgID0gMTgsDQogICBWaXJ0aW9G c0Z1c2VPcEZzeW5jICAgICAgID0gMjAsDQogICBWaXJ0aW9Gc0Z1c2VPcEZsdXNoICAgICAgID0g MjUsDQogICBWaXJ0aW9Gc0Z1c2VPcEluaXQgICAgICAgID0gMjYsDQogICBWaXJ0aW9Gc0Z1c2VP cE9wZW5EaXIgICAgID0gMjcsDQogICBWaXJ0aW9Gc0Z1c2VPcFJlbGVhc2VEaXIgID0gMjksDQog ICBWaXJ0aW9Gc0Z1c2VPcEZzeW5jRGlyICAgID0gMzAsDQogICBWaXJ0aW9Gc0Z1c2VPcENyZWF0 ZSAgICAgID0gMzUsDQorICBWaXJ0aW9Gc0Z1c2VPcFJlYWREaXJQbHVzID0gNDQsDQogfSBWSVJU SU9fRlNfRlVTRV9PUENPREU7DQogDQogI3ByYWdtYSBwYWNrICgxKQ0KIC8vDQogLy8gUmVxdWVz dC1yZXNwb25zZSBoZWFkZXJzIGNvbW1vbiB0byBhbGwgcmVxdWVzdCB0eXBlcy4NCiAvLw0KIHR5 cGVkZWYgc3RydWN0IHsNCiAgIFVJTlQzMiBMZW47DQpAQCAtMjI5LDE2ICsyNjQsMjkgQEAgdHlw ZWRlZiBzdHJ1Y3QgewogfSBWSVJUSU9fRlNfRlVTRV9PUEVOX1JFUVVFU1Q7DQogDQogdHlwZWRl ZiBzdHJ1Y3Qgew0KICAgVUlOVDY0IEZpbGVIYW5kbGU7DQogICBVSU5UMzIgT3BlbkZsYWdzOw0K ICAgVUlOVDMyIFBhZGRpbmc7DQogfSBWSVJUSU9fRlNfRlVTRV9PUEVOX1JFU1BPTlNFOw0KIA0K Ky8vDQorLy8gSGVhZGVyIGZvciBWaXJ0aW9Gc0Z1c2VPcFJlYWQgYW5kIFZpcnRpb0ZzRnVzZU9w UmVhZERpclBsdXMuDQorLy8NCit0eXBlZGVmIHN0cnVjdCB7DQorICBVSU5UNjQgRmlsZUhhbmRs ZTsNCisgIFVJTlQ2NCBPZmZzZXQ7DQorICBVSU5UMzIgU2l6ZTsNCisgIFVJTlQzMiBSZWFkRmxh Z3M7DQorICBVSU5UNjQgTG9ja093bmVyOw0KKyAgVUlOVDMyIEZsYWdzOw0KKyAgVUlOVDMyIFBh ZGRpbmc7DQorfSBWSVJUSU9fRlNfRlVTRV9SRUFEX1JFUVVFU1Q7DQorDQogLy8NCiAvLyBIZWFk ZXIgZm9yIFZpcnRpb0ZzRnVzZU9wU3RhdEZzLg0KIC8vDQogdHlwZWRlZiBzdHJ1Y3Qgew0KICAg VUlOVDY0IEJsb2NrczsNCiAgIFVJTlQ2NCBCZnJlZTsNCiAgIFVJTlQ2NCBCYXZhaWw7DQogICBV SU5UNjQgRmlsZXM7DQpAQCAtMzA3LDExICszNTUsMzAgQEAgdHlwZWRlZiBzdHJ1Y3QgewogLy8g SGVhZGVyIGZvciBWaXJ0aW9Gc0Z1c2VPcENyZWF0ZS4NCiAvLw0KIHR5cGVkZWYgc3RydWN0IHsN CiAgIFVJTlQzMiBGbGFnczsNCiAgIFVJTlQzMiBNb2RlOw0KICAgVUlOVDMyIFVtYXNrOw0KICAg VUlOVDMyIFBhZGRpbmc7DQogfSBWSVJUSU9fRlNfRlVTRV9DUkVBVEVfUkVRVUVTVDsNCisNCisv Lw0KKy8vIEhlYWRlciBmb3IgVmlydGlvRnNGdXNlT3BSZWFkRGlyUGx1cy4NCisvLw0KKy8vIERp dmVyZ2luZyBmcm9tIHRoZSByZXN0IG9mIHRoZSBoZWFkZXJzLCB0aGlzIHN0cnVjdHVyZSBlbWJl ZHMgb3RoZXINCisvLyBzdHJ1Y3R1cmVzLiBUaGUgcmVhc29uIGlzIHRoYXQgYSBzY2F0dGVyIGxp c3QgY2Fubm90IGJlIHVzZWQgdG8gcmVjZWl2ZQ0KKy8vIE5vZGVSZXNwIGFuZCBBdHRyUmVzcCBz ZXBhcmF0ZWx5OyB0aGUgcmVjb3JkIGJlbG93IGlzIGZvbGxvd2VkIGJ5IGEgdmFyaWFibGUNCisv LyBzaXplIGZpbGVuYW1lIGJ5dGUgYXJyYXksIGFuZCB0aGVuIHN1Y2ggcGFpcnMgYXJlIHJlcGVh dGVkIGEgbnVtYmVyIG9mDQorLy8gdGltZXMuIFRodXMsIGxhdGVyIGhlYWRlciBzdGFydCBvZmZz ZXRzIGRlcGVuZCBvbiBlYXJsaWVyIGZpbGVuYW1lIGFycmF5DQorLy8gc2l6ZXMuDQorLy8NCit0 eXBlZGVmIHN0cnVjdCB7DQorICBWSVJUSU9fRlNfRlVTRV9OT0RFX1JFU1BPTlNFICAgICAgIE5v ZGVSZXNwOw0KKyAgVklSVElPX0ZTX0ZVU0VfQVRUUklCVVRFU19SRVNQT05TRSBBdHRyUmVzcDsN CisgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZUlkOw0KKyAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWVGb3JOZXh0RW50cnk7DQorICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVsZW47DQorICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFR5cGU7DQorfSBWSVJUSU9fRlNfRlVTRV9ESVJFTlRQTFVT X1JFU1BPTlNFOw0KICNwcmFnbWEgcGFjayAoKQ0KIA0KICNlbmRpZiAvLyBWSVJUSU9fRlNfSF8N CmRpZmYgLS1naXQgYS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZiBiL092bWZQ a2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mCmluZGV4IDNjYjVjMTAxYzNhNi4uMzljNzdj N2M0ZWU5IDEwMDY0NAotLS0gYS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZgor KysgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZgpAQCAtODgsMTYgKzg4LDE3 IEBAIFtTb3VyY2VzXQogICBGdXNlRnN5bmMuYw0KICAgRnVzZUdldEF0dHIuYw0KICAgRnVzZUlu aXQuYw0KICAgRnVzZUxvb2t1cC5jDQogICBGdXNlTWtEaXIuYw0KICAgRnVzZU9wZW4uYw0KICAg RnVzZU9wZW5EaXIuYw0KICAgRnVzZU9wZW5PckNyZWF0ZS5jDQorICBGdXNlUmVhZC5jDQogICBG dXNlUmVsZWFzZS5jDQogICBGdXNlU3RhdEZzLmMNCiAgIEZ1c2VVbmxpbmsuYw0KICAgSGVscGVy cy5jDQogICBTaW1wbGVGc0Nsb3NlLmMNCiAgIFNpbXBsZUZzRGVsZXRlLmMNCiAgIFNpbXBsZUZz Rmx1c2guYw0KICAgU2ltcGxlRnNHZXRJbmZvLmMNCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1ZpcnRp b0ZzRHhlL1ZpcnRpb0ZzRHhlLmggYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmgK aW5kZXggOTQ4ZmNmYjZiNmYzLi5mNTUwMWFmN2QwYTQgMTAwNjQ0Ci0tLSBhL092bWZQa2cvVmly dGlvRnNEeGUvVmlydGlvRnNEeGUuaAorKysgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0Zz RHhlLmgKQEAgLTI5MywxNiArMjkzLDI3IEBAIFZpcnRpb0ZzRnVzZVJlbW92ZUZpbGVPckRpciAo CiBFRklfU1RBVFVTDQogVmlydGlvRnNGdXNlT3BlbiAoDQogICBJTiBPVVQgVklSVElPX0ZTICpW aXJ0aW9GcywNCiAgIElOICAgICBVSU5UNjQgICAgTm9kZUlkLA0KICAgSU4gICAgIEJPT0xFQU4g ICBSZWFkV3JpdGUsDQogICAgICBPVVQgVUlOVDY0ICAgICpGdXNlSGFuZGxlDQogICApOw0KIA0K K0VGSV9TVEFUVVMNCitWaXJ0aW9Gc0Z1c2VSZWFkRmlsZU9yRGlyICgNCisgIElOIE9VVCBWSVJU SU9fRlMgKlZpcnRpb0ZzLA0KKyAgSU4gICAgIFVJTlQ2NCAgICBOb2RlSWQsDQorICBJTiAgICAg VUlOVDY0ICAgIEZ1c2VIYW5kbGUsDQorICBJTiAgICAgQk9PTEVBTiAgIElzRGlyLA0KKyAgSU4g ICAgIFVJTlQ2NCAgICBPZmZzZXQsDQorICBJTiBPVVQgVUlOVDMyICAgICpTaXplLA0KKyAgICAg T1VUIFZPSUQgICAgICAqRGF0YQ0KKyAgKTsNCisNCiBFRklfU1RBVFVTDQogVmlydGlvRnNGdXNl U3RhdEZzICgNCiAgIElOIE9VVCBWSVJUSU9fRlMgICAgICAgICAgICAgICAgICAgICAgKlZpcnRp b0ZzLA0KICAgSU4gICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlSWQsDQog ICAgICBPVVQgVklSVElPX0ZTX0ZVU0VfU1RBVEZTX1JFU1BPTlNFICpGaWxlc3lzQXR0cg0KICAg ICAgKTsNCiANCiBFRklfU1RBVFVTDQpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9G dXNlSW5pdC5jIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9GdXNlSW5pdC5jCmluZGV4IGFhMTlkYmRj MDVjYi4uN2FhNmVlNzVjYWY2IDEwMDY0NAotLS0gYS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL0Z1c2VJ bml0LmMKKysrIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9GdXNlSW5pdC5jCkBAIC0yMSwxNyArMjEs MTggQEAKICAgYmVmb3JlIFZpcnRpb0ZzVW5pbml0KCkgaXMgY2FsbGVkLg0KIA0KICAgQHBhcmFt W2luLG91dF0gVmlydGlvRnMgIFRoZSBWaXJ0aW8gRmlsZXN5c3RlbSBkZXZpY2UgdG8gc2VuZCB0 aGUgRlVTRV9JTklUDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCB0by4gVGhl IEZVU0UgcmVxdWVzdCBjb3VudGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZpcnRp b0ZzLT5SZXF1ZXN0SWQiIGlzIHNldCB0byAxIG9uIG91dHB1dC4NCiANCiAgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICBUaGUgRlVTRSBzZXNzaW9uIGhhcyBiZWVuIHN0YXJ0ZWQuDQogDQotICBA cmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgRlVTRSBpbnRlcmZhY2UgdmVyc2lvbiBuZWdvdGlhdGlv biBmYWlsZWQuDQorICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgRlVTRSBpbnRlcmZhY2UgdmVy c2lvbiBvciBmZWF0dXJlIG5lZ290aWF0aW9uDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmFpbGVkLg0KIA0KICAgQHJldHVybiAgICAgICAgICAgICAgICAgIFRoZSAiZXJybm8iIHZhbHVl IG1hcHBlZCB0byBhbiBFRklfU1RBVFVTIGNvZGUsIGlmDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGhlIFZpcnRpbyBGaWxlc3lzdGVtIGRldmljZSBleHBsaWNpdGx5IHJlcG9ydGVkIGFu DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IuDQogDQogICBAcmV0dXJuICAgICAg ICAgICAgICAgICAgRXJyb3IgY29kZXMgcHJvcGFnYXRlZCBmcm9tDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgVmlydGlvRnNTZ0xpc3RzVmFsaWRhdGUoKSwgVmlydGlvRnNGdXNlTmV3UmVx dWVzdCgpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnRpb0ZzU2dMaXN0c1N1Ym1p dCgpLA0KQEAgLTkyLDE3ICs5MywxNyBAQCBWaXJ0aW9Gc0Z1c2VJbml0U2Vzc2lvbiAoCiAgIH0N CiANCiAgIC8vDQogICAvLyBQb3B1bGF0ZSB0aGUgRlVTRV9JTklULXNwZWNpZmljIGZpZWxkcy4N CiAgIC8vDQogICBJbml0UmVxLk1ham9yICAgICAgICA9IFZJUlRJT19GU19GVVNFX01BSk9SOw0K ICAgSW5pdFJlcS5NaW5vciAgICAgICAgPSBWSVJUSU9fRlNfRlVTRV9NSU5PUjsNCiAgIEluaXRS ZXEuTWF4UmVhZGFoZWFkID0gMDsNCi0gIEluaXRSZXEuRmxhZ3MgICAgICAgID0gMDsNCisgIElu aXRSZXEuRmxhZ3MgICAgICAgID0gVklSVElPX0ZTX0ZVU0VfSU5JVF9SRVFfRl9ET19SRUFERElS UExVUzsNCiANCiAgIC8vDQogICAvLyBTdWJtaXQgdGhlIHJlcXVlc3QuDQogICAvLw0KICAgU3Rh dHVzID0gVmlydGlvRnNTZ0xpc3RzU3VibWl0IChWaXJ0aW9GcywgJlJlcVNnTGlzdCwgJlJlc3BT Z0xpc3QpOw0KICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KICAgICByZXR1cm4gU3RhdHVz Ow0KICAgfQ0KQEAgLTExNiwxNyArMTE3LDE4IEBAIFZpcnRpb0ZzRnVzZUluaXRTZXNzaW9uICgK ICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogTGFiZWw9XCIlc1wiIEVycm5vPSVkXG4i LCBfX0ZVTkNUSU9OX18sDQogICAgICAgICBWaXJ0aW9Gcy0+TGFiZWwsIENvbW1vblJlc3AuRXJy b3IpKTsNCiAgICAgICBTdGF0dXMgPSBWaXJ0aW9Gc0Vycm5vVG9FZmlTdGF0dXMgKENvbW1vblJl c3AuRXJyb3IpOw0KICAgICB9DQogICAgIHJldHVybiBTdGF0dXM7DQogICB9DQogDQogICAvLw0K LSAgLy8gQ2hlY2sgRlVTRSBpbnRlcmZhY2UgdmVyc2lvbiBjb21wYXRpYmlsaXR5Lg0KKyAgLy8g Q2hlY2sgRlVTRSBpbnRlcmZhY2UgdmVyc2lvbiAvIGZlYXR1cmUgY29tcGF0aWJpbGl0eS4NCiAg IC8vDQogICBpZiAoSW5pdFJlc3AuTWFqb3IgPCBJbml0UmVxLk1ham9yIHx8DQotICAgICAgKElu aXRSZXNwLk1ham9yID09IEluaXRSZXEuTWFqb3IgJiYgSW5pdFJlc3AuTWlub3IgPCBJbml0UmVx Lk1pbm9yKSkgew0KKyAgICAgIChJbml0UmVzcC5NYWpvciA9PSBJbml0UmVxLk1ham9yICYmIElu aXRSZXNwLk1pbm9yIDwgSW5pdFJlcS5NaW5vcikgfHwNCisgICAgICAoSW5pdFJlc3AuRmxhZ3Mg JiBWSVJUSU9fRlNfRlVTRV9JTklUX1JFUV9GX0RPX1JFQURESVJQTFVTKSA9PSAwKSB7DQogICAg IHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQogICB9DQogDQogICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQogfQ0KZGlmZiAtLWdpdCBhL092bWZQa2cvVmlydGlvRnNEeGUvRnVzZVJlYWQuYyBiL092bWZQ a2cvVmlydGlvRnNEeGUvRnVzZVJlYWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjE2MTFlMjk4YjkwZAotLS0gL2Rldi9udWxsCisrKyBiL092bWZQa2cvVmlydGlv RnNEeGUvRnVzZVJlYWQuYwpAQCAtMCwwICsxLDE5MSBAQAorLyoqIEBmaWxlDQorICBGVVNFX1JF QUQgLyBGVVNFX1JFQURESVJQTFVTIHdyYXBwZXIgZm9yIHRoZSBWaXJ0aW8gRmlsZXN5c3RlbSBk ZXZpY2UuDQorDQorICBDb3B5cmlnaHQgKEMpIDIwMjAsIFJlZCBIYXQsIEluYy4NCisNCisgIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorKiovDQorDQorI2lu Y2x1ZGUgIlZpcnRpb0ZzRHhlLmgiDQorDQorLyoqDQorICBSZWFkIGEgY2h1bmsgZnJvbSBhIHJl Z3VsYXIgZmlsZSBvciBhIGRpcmVjdG9yeSBzdHJlYW0sIGJ5IHNlbmRpbmcgdGhlDQorICBGVVNF X1JFQUQgLyBGVVNFX1JFQURESVJQTFVTIHJlcXVlc3QgdG8gdGhlIFZpcnRpbyBGaWxlc3lzdGVt IGRldmljZS4NCisNCisgIFRoZSBmdW5jdGlvbiBtYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgVmly dGlvRnNGdXNlSW5pdFNlc3Npb24oKSByZXR1cm5zDQorICBzdWNjZXNzZnVsbHkgYW5kIGJlZm9y ZSBWaXJ0aW9Gc1VuaW5pdCgpIGlzIGNhbGxlZC4NCisNCisgIEBwYXJhbVtpbixvdXRdIFZpcnRp b0ZzICBUaGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlIHRvIHNlbmQgdGhlIEZVU0VfUkVBRA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEZVU0VfUkVBRERJUlBMVVMgcmVxdWVzdCB0 by4gT24gb3V0cHV0LCB0aGUgRlVTRQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl c3QgY291bnRlciAiVmlydGlvRnMtPlJlcXVlc3RJZCIgd2lsbCBoYXZlIGJlZW4NCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRlZC4NCisNCisgIEBwYXJhbVtpbl0gTm9kZUlk ICAgICAgICBUaGUgaW5vZGUgbnVtYmVyIG9mIHRoZSByZWd1bGFyIGZpbGUgb3IgZGlyZWN0b3J5 DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtIHRvIHJlYWQgZnJvbS4NCisNCisg IEBwYXJhbVtpbl0gRnVzZUhhbmRsZSAgICBUaGUgb3BlbiBoYW5kbGUgdG8gdGhlIHJlZ3VsYXIg ZmlsZSBvciBkaXJlY3RvcnkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0gdG8g cmVhZCBmcm9tLg0KKw0KKyAgQHBhcmFtW2luXSBJc0RpciAgICAgICAgIFRSVUUgaWYgTm9kZUlk IGFuZCBGdXNlSGFuZGxlIHJlZmVyIHRvIGEgZGlyZWN0b3J5LA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZBTFNFIGlmIE5vZGVJZCBhbmQgRnVzZUhhbmRsZSByZWZlciB0byBhIHJlZ3Vs YXINCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLg0KKw0KKyAgQHBhcmFtW2luXSBP ZmZzZXQgICAgICAgIElmIElzRGlyIGlzIEZBTFNFOiB0aGUgYWJzb2x1dGUgZmlsZSBwb3NpdGlv biBhdA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRvIHN0YXJ0IHJlYWRpbmcu DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgSXNEaXIgaXMgVFJVRTogdGhlIGRp cmVjdG9yeSBzdHJlYW0gY29va2llIGF0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hp Y2ggdG8gc3RhcnQgb3IgY29udGludWUgcmVhZGluZy4gVGhlIHplcm8tdmFsdWVkDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29va2llIGlkZW50aWZpZXMgdGhlIHN0YXJ0IG9mIHRoZSBk aXJlY3Rvcnkgc3RyZWFtLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXIgcG9z aXRpb25zIGluIHRoZSBkaXJlY3Rvcnkgc3RyZWFtIGNhbiBiZQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhc3NlZCBpbiBmcm9tIHRoZSBDb29raWVGb3JOZXh0RW50cnkgZmllbGQgb2YN CisgICAgICAgICAgICAgICAgICAgICAgICAgICBWSVJUSU9fRlNfRlVTRV9ESVJFTlRQTFVTX1JF U1BPTlNFLg0KKw0KKyAgQHBhcmFtW2luLG91dF0gU2l6ZSAgICAgIE9uIGlucHV0LCB0aGUgbnVt YmVyIG9mIGJ5dGVzIHRvIHJlYWQuIE9uIHN1Y2Nlc3NmdWwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4sIHRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCwgd2hpY2gg bWF5DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgc21hbGxlciB0aGFuIHRoZSB2YWx1 ZSBvbiBpbnB1dC4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHJlYWRpbmcg YSByZWd1bGFyIGZpbGUgKGkuZS4sIHdoZW4gSXNEaXIgaXMNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBGQUxTRSksIEVPRiBjYW4gYmUgZGV0ZWN0ZWQgYnkgcGFzc2luZyBpbiBhIG5vbnpl cm8NCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplLCBhbmQgZmluZGluZyBhIHplcm8g U2l6ZSBvbiBvdXRwdXQuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiByZWFk aW5nIGEgZGlyZWN0b3J5IHN0cmVhbSAoaS5lLiwgd2hlbiBJc0RpciBpcw0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRSVUUpLCBEYXRhIGNvbnNpc3RzIG9mIGEgc2VxdWVuY2Ugb2YgdmFy aWFibHktc2l6ZWQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRzIChkaXJlY3Rv cnkgZW50cmllcykuIEEgcmVhZCBvcGVyYXRpb24NCisgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm5zIHRoZSBtYXhpbWFsIHNlcXVlbmNlIG9mIHJlY29yZHMgdGhhdCBmaXRzIGluDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSwgd2l0aG91dCBoYXZpbmcgdG8gdHJ1bmNh dGUgYSByZWNvcmQuIEluIG9yZGVyDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ3Vh cmFudGVlIHByb2dyZXNzLCBjYWxsDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW aXJ0aW9Gc0Z1c2VTdGF0RnMgKFZpcnRpb0ZzLCBOb2RlSWQsDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZGaWxlc3lzQXR0cikNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBmaXJzdCwgdG8gbGVhcm4gdGhlIG1heGltdW0gTmFtZWxlbiBmb3IgdGhlDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHN0cmVhbS4gVGhlbiBhc3NpZ24gU2l6ZSBhdCBs ZWFzdA0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVklSVElPX0ZTX0ZVU0VfRElS RU5UUExVU19SRVNQT05TRV9TSVpFICgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RmlsZXN5c0F0dHIuTmFtZWxlbikNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBp bnB1dC4gKFJlbWVtYmVyIHRoYXQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWSVJUSU9f RlNfRlVTRV9ESVJFTlRQTFVTX1JFU1BPTlNFX1NJWkUoKSBtYXkgcmV0dXJuDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCBpZiBpdHMgTmFtZWxlbiBhcmd1bWVudCBpcyBpbnZhbGlkLikg RU9GIGNhbiBiZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdGVkIGlmIFNpemUg aXMgc2V0IG9uIGlucHV0IGxpa2UgZGVzY3JpYmVkDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWJvdmUsIGFuZCBTaXplIGlzIHplcm8gb24gb3V0cHV0Lg0KKw0KKyAgQHBhcmFtW291dF0g RGF0YSAgICAgICAgIEJ1ZmZlciB0byByZWFkIHRoZSBieXRlcyBmcm9tIHRoZSByZWd1bGFyIGZp bGUgb3INCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGlyZWN0b3J5IHN0cmVhbSBp bnRvLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgZm9yIHByb3ZpZGluZyByb29tIGZvciAoYXQgbGVhc3QpIGFzIG1hbnkgYnl0ZXMgaW4NCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIGFzIFNpemUgaXMgb24gaW5wdXQuDQorDQor ICBAcmV0dmFsIEVGSV9TVUNDRVNTICBSZWFkIHN1Y2Nlc3NmdWwuIFRoZSBjYWxsZXIgaXMgcmVz cG9uc2libGUgZm9yIGNoZWNraW5nDQorICAgICAgICAgICAgICAgICAgICAgICBTaXplIHRvIGxl YXJuIHRoZSBhY3R1YWwgYnl0ZSBjb3VudCB0cmFuc2ZlcnJlZC4NCisNCisgIEByZXR1cm4gICAg ICAgICAgICAgIFRoZSAiZXJybm8iIHZhbHVlIG1hcHBlZCB0byBhbiBFRklfU1RBVFVTIGNvZGUs IGlmIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNl IGV4cGxpY2l0bHkgcmVwb3J0ZWQgYW4gZXJyb3IuDQorDQorICBAcmV0dXJuICAgICAgICAgICAg ICBFcnJvciBjb2RlcyBwcm9wYWdhdGVkIGZyb20gVmlydGlvRnNTZ0xpc3RzVmFsaWRhdGUoKSwN CisgICAgICAgICAgICAgICAgICAgICAgIFZpcnRpb0ZzRnVzZU5ld1JlcXVlc3QoKSwgVmlydGlv RnNTZ0xpc3RzU3VibWl0KCksDQorICAgICAgICAgICAgICAgICAgICAgICBWaXJ0aW9Gc0Z1c2VD aGVja1Jlc3BvbnNlKCkuDQorKiovDQorRUZJX1NUQVRVUw0KK1ZpcnRpb0ZzRnVzZVJlYWRGaWxl T3JEaXIgKA0KKyAgSU4gT1VUIFZJUlRJT19GUyAqVmlydGlvRnMsDQorICBJTiAgICAgVUlOVDY0 ICAgIE5vZGVJZCwNCisgIElOICAgICBVSU5UNjQgICAgRnVzZUhhbmRsZSwNCisgIElOICAgICBC T09MRUFOICAgSXNEaXIsDQorICBJTiAgICAgVUlOVDY0ICAgIE9mZnNldCwNCisgIElOIE9VVCBV SU5UMzIgICAgKlNpemUsDQorICAgICBPVVQgVk9JRCAgICAgICpEYXRhDQorICApDQorew0KKyAg VklSVElPX0ZTX0ZVU0VfUkVRVUVTVCAgICAgICAgQ29tbW9uUmVxOw0KKyAgVklSVElPX0ZTX0ZV U0VfUkVBRF9SRVFVRVNUICAgUmVhZFJlcTsNCisgIFZJUlRJT19GU19JT19WRUNUT1IgICAgICAg ICAgIFJlcUlvVmVjWzJdOw0KKyAgVklSVElPX0ZTX1NDQVRURVJfR0FUSEVSX0xJU1QgUmVxU2dM aXN0Ow0KKyAgVklSVElPX0ZTX0ZVU0VfUkVTUE9OU0UgICAgICAgQ29tbW9uUmVzcDsNCisgIFZJ UlRJT19GU19JT19WRUNUT1IgICAgICAgICAgIFJlc3BJb1ZlY1syXTsNCisgIFZJUlRJT19GU19T Q0FUVEVSX0dBVEhFUl9MSVNUIFJlc3BTZ0xpc3Q7DQorICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgICBTdGF0dXM7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICBUYWlsQnVm ZmVyRmlsbDsNCisNCisgIC8vDQorICAvLyBTZXQgdXAgdGhlIHNjYXR0ZXItZ2F0aGVyIGxpc3Rz Lg0KKyAgLy8NCisgIFJlcUlvVmVjWzBdLkJ1ZmZlciA9ICZDb21tb25SZXE7DQorICBSZXFJb1Zl Y1swXS5TaXplICAgPSBzaXplb2YgQ29tbW9uUmVxOw0KKyAgUmVxSW9WZWNbMV0uQnVmZmVyID0g JlJlYWRSZXE7DQorICBSZXFJb1ZlY1sxXS5TaXplICAgPSBzaXplb2YgUmVhZFJlcTsNCisgIFJl cVNnTGlzdC5Jb1ZlYyAgICA9IFJlcUlvVmVjOw0KKyAgUmVxU2dMaXN0Lk51bVZlYyAgID0gQVJS QVlfU0laRSAoUmVxSW9WZWMpOw0KKw0KKyAgUmVzcElvVmVjWzBdLkJ1ZmZlciA9ICZDb21tb25S ZXNwOw0KKyAgUmVzcElvVmVjWzBdLlNpemUgICA9IHNpemVvZiBDb21tb25SZXNwOw0KKyAgUmVz cElvVmVjWzFdLkJ1ZmZlciA9IERhdGE7DQorICBSZXNwSW9WZWNbMV0uU2l6ZSAgID0gKlNpemU7 DQorICBSZXNwU2dMaXN0LklvVmVjICAgID0gUmVzcElvVmVjOw0KKyAgUmVzcFNnTGlzdC5OdW1W ZWMgICA9IEFSUkFZX1NJWkUgKFJlc3BJb1ZlYyk7DQorDQorICAvLw0KKyAgLy8gVmFsaWRhdGUg dGhlIHNjYXR0ZXItZ2F0aGVyIGxpc3RzOyBjYWxjdWxhdGUgdGhlIHRvdGFsIHRyYW5zZmVyIHNp emVzLg0KKyAgLy8NCisgIFN0YXR1cyA9IFZpcnRpb0ZzU2dMaXN0c1ZhbGlkYXRlIChWaXJ0aW9G cywgJlJlcVNnTGlzdCwgJlJlc3BTZ0xpc3QpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIFBvcHVsYXRlIHRo ZSBjb21tb24gcmVxdWVzdCBoZWFkZXIuDQorICAvLw0KKyAgU3RhdHVzID0gVmlydGlvRnNGdXNl TmV3UmVxdWVzdCAoDQorICAgICAgICAgICAgIFZpcnRpb0ZzLA0KKyAgICAgICAgICAgICAmQ29t bW9uUmVxLA0KKyAgICAgICAgICAgICBSZXFTZ0xpc3QuVG90YWxTaXplLA0KKyAgICAgICAgICAg ICBJc0RpciA/IFZpcnRpb0ZzRnVzZU9wUmVhZERpclBsdXMgOiBWaXJ0aW9Gc0Z1c2VPcFJlYWQs DQorICAgICAgICAgICAgIE5vZGVJZA0KKyAgICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8v IFBvcHVsYXRlIHRoZSBGVVNFX1JFQUQtIC8gRlVTRV9SRUFERElSUExVUy1zcGVjaWZpYyBmaWVs ZHMuDQorICAvLw0KKyAgUmVhZFJlcS5GaWxlSGFuZGxlID0gRnVzZUhhbmRsZTsNCisgIFJlYWRS ZXEuT2Zmc2V0ICAgICA9IE9mZnNldDsNCisgIFJlYWRSZXEuU2l6ZSAgICAgICA9ICpTaXplOw0K KyAgUmVhZFJlcS5SZWFkRmxhZ3MgID0gMDsNCisgIFJlYWRSZXEuTG9ja093bmVyICA9IDA7DQor ICBSZWFkUmVxLkZsYWdzICAgICAgPSAwOw0KKyAgUmVhZFJlcS5QYWRkaW5nICAgID0gMDsNCisN CisgIC8vDQorICAvLyBTdWJtaXQgdGhlIHJlcXVlc3QuDQorICAvLw0KKyAgU3RhdHVzID0gVmly dGlvRnNTZ0xpc3RzU3VibWl0IChWaXJ0aW9GcywgJlJlcVNnTGlzdCwgJlJlc3BTZ0xpc3QpOw0K KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0K Kw0KKyAgLy8NCisgIC8vIFZlcmlmeSB0aGUgcmVzcG9uc2UuIE5vdGUgdGhhdCBUYWlsQnVmZmVy RmlsbCBpcyB2YXJpYWJsZS4NCisgIC8vDQorICBTdGF0dXMgPSBWaXJ0aW9Gc0Z1c2VDaGVja1Jl c3BvbnNlICgmUmVzcFNnTGlzdCwgQ29tbW9uUmVxLlVuaXF1ZSwNCisgICAgICAgICAgICAgJlRh aWxCdWZmZXJGaWxsKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgaWYgKFN0 YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSB7DQorICAgICAgREVCVUcgKChERUJVR19FUlJPUiwg IiVhOiBMYWJlbD1cIiVzXCIgTm9kZUlkPSVMdSBGdXNlSGFuZGxlPSVMdSAiDQorICAgICAgICAi SXNEaXI9JWQgT2Zmc2V0PTB4JUx4IFNpemU9MHgleCBEYXRhQCVwIEVycm5vPSVkXG4iLCBfX0ZV TkNUSU9OX18sDQorICAgICAgICBWaXJ0aW9Gcy0+TGFiZWwsIE5vZGVJZCwgRnVzZUhhbmRsZSwg SXNEaXIsIE9mZnNldCwgKlNpemUsIERhdGEsDQorICAgICAgICBDb21tb25SZXNwLkVycm9yKSk7 DQorICAgICAgU3RhdHVzID0gVmlydGlvRnNFcnJub1RvRWZpU3RhdHVzIChDb21tb25SZXNwLkVy cm9yKTsNCisgICAgfQ0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8v IFJlcG9ydCB0aGUgYWN0dWFsIHRyYW5zZmVyIHNpemUuDQorICAvLw0KKyAgLy8gSW50ZWdlciBv dmVyZmxvdyBpbiB0aGUgKFVJTlQzMikgY2FzdCBiZWxvdyBpcyBub3QgcG9zc2libGU7IHRoZQ0K KyAgLy8gVklSVElPX0ZTX1NDQVRURVJfR0FUSEVSX0xJU1QgZnVuY3Rpb25zIHdvdWxkIGhhdmUg Y2F1Z2h0IHRoYXQuDQorICAvLw0KKyAgKlNpemUgPSAoVUlOVDMyKVRhaWxCdWZmZXJGaWxsOw0K KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KK30NCi0tIAoyLjE5LjEuMy5nMzAyNDdhYTVkMjAxCgoK