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.web09.4017.1608155624147552000 for ; Wed, 16 Dec 2020 13:53:44 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Rtoj6Ezc; 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=1608155623; 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=8h935VslzKamo81u3UycgrzSAlb78fJZ7oavtihDQLM=; b=Rtoj6EzcSu5nkZyRfw+6pKk1O5CFW2bbV5uLi6NP0tkJmm+gdjCcRki8VpUD/dMjrp0mDR PODiVpZVcB8AlO3EVbYjJrK5F60Tg2fQ8prV4tiqvzK7is8VtJL04CtPKkFCcm1/7d7pDL dzTG5I1T9+pAF8KkXessda+6kmG+nr0= 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-470-f8goCZPdOL6hhzyxTkNEAA-1; Wed, 16 Dec 2020 16:53:39 -0500 X-MC-Unique: f8goCZPdOL6hhzyxTkNEAA-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5D561107ACE6; Wed, 16 Dec 2020 21:53:38 +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 8F00A5D9C0; Wed, 16 Dec 2020 21:53:33 +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 20/48] OvmfPkg/VirtioFsDxe: implement the wrapper function for FUSE_CREATE Date: Wed, 16 Dec 2020 22:10:57 +0100 Message-Id: <20201216211125.19496-21-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.79 on 10.5.11.14 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 QWRkIHRoZSBWaXJ0aW9Gc0Z1c2VPcGVuT3JDcmVhdGUoKSBmdW5jdGlvbiwgZm9yIHNlbmRpbmcg dGhlIEZVU0VfQ1JFQVRFCmNvbW1hbmQgdG8gdGhlIFZpcnRpbyBGaWxlc3lzdGVtIGRldmljZS4K CkNjOiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAYXJtLmNvbT4KQ2M6IEpvcmRhbiBK dXN0ZW4gPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+CkNjOiBQaGlsaXBwZSBNYXRoaWV1LURh dWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+ClJlZjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUu b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDk3ClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVy c2VrQHJlZGhhdC5jb20+Ci0tLQogT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvVmly dGlvRnMuaCB8ICAxNyArKysKIE92bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mICAg ICAgICAgfCAgIDEgKwogT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5oICAgICAgICAg ICB8ICAgOSArKwogT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9GdXNlT3Blbk9yQ3JlYXRlLmMgICAgICB8 IDE1NSArKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxODIgaW5zZXJ0aW9u cygrKQoKZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1ZpcnRp b0ZzLmggYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5oCmluZGV4 IDlmZmViOWM4Yzk1NC4uNjNhY2VkMjI5ZTliIDEwMDY0NAotLS0gYS9Pdm1mUGtnL0luY2x1ZGUv SW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5oCisrKyBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3Ry eVN0YW5kYXJkL1ZpcnRpb0ZzLmgKQEAgLTgwLDE4ICs4MCwyNCBAQCB0eXBlZGVmIHN0cnVjdCB7 CiAvLyBUaGUgaW5vZGUgbnVtYmVyIG9mIHRoZSByb290IGRpcmVjdG9yeS4NCiAvLw0KICNkZWZp bmUgVklSVElPX0ZTX0ZVU0VfUk9PVF9ESVJfTk9ERV9JRCAxDQogDQogLy8NCiAvLyBGaWxlIG1v ZGUgYml0bWFza3MuDQogLy8NCiAjZGVmaW5lIFZJUlRJT19GU19GVVNFX01PREVfUEVSTV9SV1hV IDAwMDA3MDB1DQorI2RlZmluZSBWSVJUSU9fRlNfRlVTRV9NT0RFX1BFUk1fUlVTUiAwMDAwNDAw dQ0KKyNkZWZpbmUgVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1dVU1IgMDAwMDIwMHUNCiAjZGVm aW5lIFZJUlRJT19GU19GVVNFX01PREVfUEVSTV9SV1hHIDAwMDAwNzB1DQorI2RlZmluZSBWSVJU SU9fRlNfRlVTRV9NT0RFX1BFUk1fUkdSUCAwMDAwMDQwdQ0KKyNkZWZpbmUgVklSVElPX0ZTX0ZV U0VfTU9ERV9QRVJNX1dHUlAgMDAwMDAyMHUNCiAjZGVmaW5lIFZJUlRJT19GU19GVVNFX01PREVf UEVSTV9SV1hPIDAwMDAwMDd1DQorI2RlZmluZSBWSVJUSU9fRlNfRlVTRV9NT0RFX1BFUk1fUk9U SCAwMDAwMDA0dQ0KKyNkZWZpbmUgVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1dPVEggMDAwMDAw MnUNCiANCiAvLw0KIC8vIEZsYWdzIGZvciBWaXJ0aW9Gc0Z1c2VPcE9wZW4uDQogLy8NCiAjZGVm aW5lIFZJUlRJT19GU19GVVNFX09QRU5fUkVRX0ZfUkRPTkxZIDANCiAjZGVmaW5lIFZJUlRJT19G U19GVVNFX09QRU5fUkVRX0ZfUkRXUiAgIDINCiANCiAvLw0KQEAgLTEwMywxNiArMTA5LDE3IEBA IHR5cGVkZWYgZW51bSB7CiAgIFZpcnRpb0ZzRnVzZU9wT3BlbiAgICAgICAgPSAxNCwNCiAgIFZp cnRpb0ZzRnVzZU9wUmVsZWFzZSAgICAgPSAxOCwNCiAgIFZpcnRpb0ZzRnVzZU9wRnN5bmMgICAg ICAgPSAyMCwNCiAgIFZpcnRpb0ZzRnVzZU9wRmx1c2ggICAgICAgPSAyNSwNCiAgIFZpcnRpb0Zz RnVzZU9wSW5pdCAgICAgICAgPSAyNiwNCiAgIFZpcnRpb0ZzRnVzZU9wT3BlbkRpciAgICAgPSAy NywNCiAgIFZpcnRpb0ZzRnVzZU9wUmVsZWFzZURpciAgPSAyOSwNCiAgIFZpcnRpb0ZzRnVzZU9w RnN5bmNEaXIgICAgPSAzMCwNCisgIFZpcnRpb0ZzRnVzZU9wQ3JlYXRlICAgICAgPSAzNSwNCiB9 IFZJUlRJT19GU19GVVNFX09QQ09ERTsNCiANCiAjcHJhZ21hIHBhY2sgKDEpDQogLy8NCiAvLyBS ZXF1ZXN0LXJlc3BvbnNlIGhlYWRlcnMgY29tbW9uIHRvIGFsbCByZXF1ZXN0IHR5cGVzLg0KIC8v DQogdHlwZWRlZiBzdHJ1Y3Qgew0KICAgVUlOVDMyIExlbjsNCkBAIC0yNDYsMTEgKzI1MywyMSBA QCB0eXBlZGVmIHN0cnVjdCB7CiAgIFVJTlQxNiBNYXhCYWNrZ3JvdW5kOw0KICAgVUlOVDE2IENv bmdlc3Rpb25UaHJlc2hvbGQ7DQogICBVSU5UMzIgTWF4V3JpdGU7DQogICBVSU5UMzIgVGltZUdy YW47DQogICBVSU5UMTYgTWF4UGFnZXM7DQogICBVSU5UMTYgTWFwQWxpZ25tZW50Ow0KICAgVUlO VDMyIFVudXNlZFs4XTsNCiB9IFZJUlRJT19GU19GVVNFX0lOSVRfUkVTUE9OU0U7DQorDQorLy8N CisvLyBIZWFkZXIgZm9yIFZpcnRpb0ZzRnVzZU9wQ3JlYXRlLg0KKy8vDQordHlwZWRlZiBzdHJ1 Y3Qgew0KKyAgVUlOVDMyIEZsYWdzOw0KKyAgVUlOVDMyIE1vZGU7DQorICBVSU5UMzIgVW1hc2s7 DQorICBVSU5UMzIgUGFkZGluZzsNCit9IFZJUlRJT19GU19GVVNFX0NSRUFURV9SRVFVRVNUOw0K ICNwcmFnbWEgcGFjayAoKQ0KIA0KICNlbmRpZiAvLyBWSVJUSU9fRlNfSF8NCmRpZmYgLS1naXQg YS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZiBiL092bWZQa2cvVmlydGlvRnNE eGUvVmlydGlvRnNEeGUuaW5mCmluZGV4IGVlYmI4NmY3YzI3NS4uYjk0MmJhYTRhNzcyIDEwMDY0 NAotLS0gYS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZgorKysgYi9Pdm1mUGtn L1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZgpAQCAtODQsMTYgKzg0LDE3IEBAIFtTb3VyY2Vz XQogICBEcml2ZXJCaW5kaW5nLmMNCiAgIEZ1c2VGbHVzaC5jDQogICBGdXNlRm9yZ2V0LmMNCiAg IEZ1c2VGc3luYy5jDQogICBGdXNlSW5pdC5jDQogICBGdXNlTWtEaXIuYw0KICAgRnVzZU9wZW4u Yw0KICAgRnVzZU9wZW5EaXIuYw0KKyAgRnVzZU9wZW5PckNyZWF0ZS5jDQogICBGdXNlUmVsZWFz ZS5jDQogICBIZWxwZXJzLmMNCiAgIFNpbXBsZUZzQ2xvc2UuYw0KICAgU2ltcGxlRnNEZWxldGUu Yw0KICAgU2ltcGxlRnNGbHVzaC5jDQogICBTaW1wbGVGc0dldEluZm8uYw0KICAgU2ltcGxlRnNH ZXRQb3NpdGlvbi5jDQogICBTaW1wbGVGc09wZW4uYw0KZGlmZiAtLWdpdCBhL092bWZQa2cvVmly dGlvRnNEeGUvVmlydGlvRnNEeGUuaCBiL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUu aAppbmRleCA4ZmQ1NmJkYmY2ZTEuLjc5NWNmNGVlNWQ3ZCAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9W aXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5oCisrKyBiL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlv RnNEeGUuaApAQCAtMjgxLDE2ICsyODEsMjUgQEAgVmlydGlvRnNGdXNlSW5pdFNlc3Npb24gKAog DQogRUZJX1NUQVRVUw0KIFZpcnRpb0ZzRnVzZU9wZW5EaXIgKA0KICAgSU4gT1VUIFZJUlRJT19G UyAqVmlydGlvRnMsDQogICBJTiAgICAgVUlOVDY0ICAgIE5vZGVJZCwNCiAgICAgIE9VVCBVSU5U NjQgICAgKkZ1c2VIYW5kbGUNCiAgICk7DQogDQorRUZJX1NUQVRVUw0KK1ZpcnRpb0ZzRnVzZU9w ZW5PckNyZWF0ZSAoDQorICBJTiBPVVQgVklSVElPX0ZTICpWaXJ0aW9GcywNCisgIElOICAgICBV SU5UNjQgICAgUGFyZW50Tm9kZUlkLA0KKyAgSU4gICAgIENIQVI4ICAgICAqTmFtZSwNCisgICAg IE9VVCBVSU5UNjQgICAgKk5vZGVJZCwNCisgICAgIE9VVCBVSU5UNjQgICAgKkZ1c2VIYW5kbGUN CisgICk7DQorDQogLy8NCiAvLyBFRklfU0lNUExFX0ZJTEVfU1lTVEVNX1BST1RPQ09MIG1lbWJl ciBmdW5jdGlvbnMgZm9yIHRoZSBWaXJ0aW8gRmlsZXN5c3RlbQ0KIC8vIGRyaXZlci4NCiAvLw0K IA0KIEVGSV9TVEFUVVMNCiBFRklBUEkNCiBWaXJ0aW9Gc09wZW5Wb2x1bWUgKA0KZGlmZiAtLWdp dCBhL092bWZQa2cvVmlydGlvRnNEeGUvRnVzZU9wZW5PckNyZWF0ZS5jIGIvT3ZtZlBrZy9WaXJ0 aW9Gc0R4ZS9GdXNlT3Blbk9yQ3JlYXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi42MGFiMDAyYmNkOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL1ZpcnRp b0ZzRHhlL0Z1c2VPcGVuT3JDcmVhdGUuYwpAQCAtMCwwICsxLDE1NSBAQAorLyoqIEBmaWxlDQor ICBGVVNFX0NSRUFURSB3cmFwcGVyIGZvciB0aGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlLg0K Kw0KKyAgQ29weXJpZ2h0IChDKSAyMDIwLCBSZWQgSGF0LCBJbmMuDQorDQorICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpbmNsdWRlIDxM aWJyYXJ5L0Jhc2VMaWIuaD4gLy8gQXNjaWlTdHJTaXplKCkNCisNCisjaW5jbHVkZSAiVmlydGlv RnNEeGUuaCINCisNCisvKioNCisgIFNlbmQgYSBGVVNFX0NSRUFURSByZXF1ZXN0IHRvIHRoZSBW aXJ0aW8gRmlsZXN5c3RlbSBkZXZpY2UsIGZvciBvcGVuaW5nIGENCisgIHJlZ3VsYXIgZmlsZSB3 aXRoIChPX1JEV1IgfCBPX0NSRUFUKSBzZW1hbnRpY3MuDQorDQorICBUaGUgZnVuY3Rpb24gbWF5 IG9ubHkgYmUgY2FsbGVkIGFmdGVyIFZpcnRpb0ZzRnVzZUluaXRTZXNzaW9uKCkgcmV0dXJucw0K KyAgc3VjY2Vzc2Z1bGx5IGFuZCBiZWZvcmUgVmlydGlvRnNVbmluaXQoKSBpcyBjYWxsZWQuDQor DQorICBAcGFyYW1baW4sb3V0XSBWaXJ0aW9GcyAgVGhlIFZpcnRpbyBGaWxlc3lzdGVtIGRldmlj ZSB0byBzZW5kIHRoZSBGVVNFX0NSRUFURQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl cXVlc3QgdG8uIE9uIG91dHB1dCwgdGhlIEZVU0UgcmVxdWVzdCBjb3VudGVyDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlZpcnRpb0ZzLT5SZXF1ZXN0SWQiIHdpbGwgaGF2ZSBiZWVuIGlu Y3JlbWVudGVkLg0KKw0KKyAgQHBhcmFtW2luXSBQYXJlbnROb2RlSWQgIFRoZSBpbm9kZSBudW1i ZXIgb2YgdGhlIGRpcmVjdCBwYXJlbnQgZGlyZWN0b3J5IG9mDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhlIHJlZ3VsYXIgZmlsZSB0byBvcGVuIG9yIGNyZWF0ZS4NCisNCisgIEBwYXJh bVtpbl0gTmFtZSAgICAgICAgICBUaGUgc2luZ2xlLWNvbXBvbmVudCBmaWxlbmFtZSBvZiB0aGUg cmVndWxhciBmaWxlIHRvDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbiBvciBjcmVh dGUsIHVuZGVyIHRoZSBwYXJlbnQgZGlyZWN0b3J5DQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWRlbnRpZmllZCBieSBQYXJlbnROb2RlSWQuDQorDQorICBAcGFyYW1bb3V0XSBOb2RlSWQg ICAgICAgVGhlIGlub2RlIG51bWJlciBvZiB0aGUgcmVndWxhciBmaWxlLCByZXR1cm5lZCBieQ0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBWaXJ0aW8gRmlsZXN5c3RlbSBkZXZpY2Uu DQorDQorICBAcGFyYW1bb3V0XSBGdXNlSGFuZGxlICAgVGhlIG9wZW4gZmlsZSBoYW5kbGUgcmV0 dXJuZWQgYnkgdGhlIFZpcnRpbw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVzeXN0 ZW0gZGV2aWNlLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgVGhlIHJlZ3VsYXIgZmlsZSBo YXMgYmVlbiBvcGVuZWQsIGFuZCAoaWYgbmVjZXNzYXJ5KQ0KKyAgICAgICAgICAgICAgICAgICAg ICAgY3JlYXRlZC4NCisNCisgIEByZXR1cm4gICAgICAgICAgICAgIFRoZSAiZXJybm8iIHZhbHVl IG1hcHBlZCB0byBhbiBFRklfU1RBVFVTIGNvZGUsIGlmIHRoZQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlIGV4cGxpY2l0bHkgcmVwb3J0ZWQgYW4gZXJy b3IuDQorDQorICBAcmV0dXJuICAgICAgICAgICAgICBFcnJvciBjb2RlcyBwcm9wYWdhdGVkIGZy b20gVmlydGlvRnNTZ0xpc3RzVmFsaWRhdGUoKSwNCisgICAgICAgICAgICAgICAgICAgICAgIFZp cnRpb0ZzRnVzZU5ld1JlcXVlc3QoKSwgVmlydGlvRnNTZ0xpc3RzU3VibWl0KCksDQorICAgICAg ICAgICAgICAgICAgICAgICBWaXJ0aW9Gc0Z1c2VDaGVja1Jlc3BvbnNlKCkuDQorKiovDQorRUZJ X1NUQVRVUw0KK1ZpcnRpb0ZzRnVzZU9wZW5PckNyZWF0ZSAoDQorICBJTiBPVVQgVklSVElPX0ZT ICpWaXJ0aW9GcywNCisgIElOICAgICBVSU5UNjQgICAgUGFyZW50Tm9kZUlkLA0KKyAgSU4gICAg IENIQVI4ICAgICAqTmFtZSwNCisgICAgIE9VVCBVSU5UNjQgICAgKk5vZGVJZCwNCisgICAgIE9V VCBVSU5UNjQgICAgKkZ1c2VIYW5kbGUNCisgICkNCit7DQorICBWSVJUSU9fRlNfRlVTRV9SRVFV RVNUICAgICAgICAgICAgIENvbW1vblJlcTsNCisgIFZJUlRJT19GU19GVVNFX0NSRUFURV9SRVFV RVNUICAgICAgQ3JlYXRlUmVxOw0KKyAgVklSVElPX0ZTX0lPX1ZFQ1RPUiAgICAgICAgICAgICAg ICBSZXFJb1ZlY1szXTsNCisgIFZJUlRJT19GU19TQ0FUVEVSX0dBVEhFUl9MSVNUICAgICAgUmVx U2dMaXN0Ow0KKyAgVklSVElPX0ZTX0ZVU0VfUkVTUE9OU0UgICAgICAgICAgICBDb21tb25SZXNw Ow0KKyAgVklSVElPX0ZTX0ZVU0VfTk9ERV9SRVNQT05TRSAgICAgICBOb2RlUmVzcDsNCisgIFZJ UlRJT19GU19GVVNFX0FUVFJJQlVURVNfUkVTUE9OU0UgQXR0clJlc3A7DQorICBWSVJUSU9fRlNf RlVTRV9PUEVOX1JFU1BPTlNFICAgICAgIE9wZW5SZXNwOw0KKyAgVklSVElPX0ZTX0lPX1ZFQ1RP UiAgICAgICAgICAgICAgICBSZXNwSW9WZWNbNF07DQorICBWSVJUSU9fRlNfU0NBVFRFUl9HQVRI RVJfTElTVCAgICAgIFJlc3BTZ0xpc3Q7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCisNCisgIC8vDQorICAvLyBTZXQgdXAgdGhlIHNjYXR0ZXItZ2F0aGVy IGxpc3RzLg0KKyAgLy8NCisgIFJlcUlvVmVjWzBdLkJ1ZmZlciA9ICZDb21tb25SZXE7DQorICBS ZXFJb1ZlY1swXS5TaXplICAgPSBzaXplb2YgQ29tbW9uUmVxOw0KKyAgUmVxSW9WZWNbMV0uQnVm ZmVyID0gJkNyZWF0ZVJlcTsNCisgIFJlcUlvVmVjWzFdLlNpemUgICA9IHNpemVvZiBDcmVhdGVS ZXE7DQorICBSZXFJb1ZlY1syXS5CdWZmZXIgPSBOYW1lOw0KKyAgUmVxSW9WZWNbMl0uU2l6ZSAg ID0gQXNjaWlTdHJTaXplIChOYW1lKTsNCisgIFJlcVNnTGlzdC5Jb1ZlYyAgICA9IFJlcUlvVmVj Ow0KKyAgUmVxU2dMaXN0Lk51bVZlYyAgID0gQVJSQVlfU0laRSAoUmVxSW9WZWMpOw0KKw0KKyAg UmVzcElvVmVjWzBdLkJ1ZmZlciA9ICZDb21tb25SZXNwOw0KKyAgUmVzcElvVmVjWzBdLlNpemUg ICA9IHNpemVvZiBDb21tb25SZXNwOw0KKyAgUmVzcElvVmVjWzFdLkJ1ZmZlciA9ICZOb2RlUmVz cDsNCisgIFJlc3BJb1ZlY1sxXS5TaXplICAgPSBzaXplb2YgTm9kZVJlc3A7DQorICBSZXNwSW9W ZWNbMl0uQnVmZmVyID0gJkF0dHJSZXNwOw0KKyAgUmVzcElvVmVjWzJdLlNpemUgICA9IHNpemVv ZiBBdHRyUmVzcDsNCisgIFJlc3BJb1ZlY1szXS5CdWZmZXIgPSAmT3BlblJlc3A7DQorICBSZXNw SW9WZWNbM10uU2l6ZSAgID0gc2l6ZW9mIE9wZW5SZXNwOw0KKyAgUmVzcFNnTGlzdC5Jb1ZlYyAg ICA9IFJlc3BJb1ZlYzsNCisgIFJlc3BTZ0xpc3QuTnVtVmVjICAgPSBBUlJBWV9TSVpFIChSZXNw SW9WZWMpOw0KKw0KKyAgLy8NCisgIC8vIFZhbGlkYXRlIHRoZSBzY2F0dGVyLWdhdGhlciBsaXN0 czsgY2FsY3VsYXRlIHRoZSB0b3RhbCB0cmFuc2ZlciBzaXplcy4NCisgIC8vDQorICBTdGF0dXMg PSBWaXJ0aW9Gc1NnTGlzdHNWYWxpZGF0ZSAoVmlydGlvRnMsICZSZXFTZ0xpc3QsICZSZXNwU2dM aXN0KTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsN CisgIH0NCisNCisgIC8vDQorICAvLyBQb3B1bGF0ZSB0aGUgY29tbW9uIHJlcXVlc3QgaGVhZGVy Lg0KKyAgLy8NCisgIFN0YXR1cyA9IFZpcnRpb0ZzRnVzZU5ld1JlcXVlc3QgKFZpcnRpb0ZzLCAm Q29tbW9uUmVxLCBSZXFTZ0xpc3QuVG90YWxTaXplLA0KKyAgICAgICAgICAgICBWaXJ0aW9Gc0Z1 c2VPcENyZWF0ZSwgUGFyZW50Tm9kZUlkKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN CisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8vDQorICAvLyBQb3B1bGF0ZSB0aGUg RlVTRV9DUkVBVEUtc3BlY2lmaWMgZmllbGRzLg0KKyAgLy8NCisgIC8vIFZJUlRJT19GU19GVVNF X09QRU5fUkVRX0ZfUkRXUiBpcyB3aHkgdGhpcyByZXF1ZXN0IGNhbiBuZXZlciBvcGVuIGENCisg IC8vIGRpcmVjdG9yeSAoRUlTRElSKS4gQW5kIFZJUlRJT19GU19GVVNFX09QRU5fUkVRX0ZfUkRX UiBpcyBjb25zaXN0ZW50IHdpdGgNCisgIC8vIHRoZSBvbmx5IE9wZW5Nb2RlIG9mIEVGSV9GSUxF X1BST1RPQ09MLk9wZW4oKSB0aGF0IGVuYWJsZXMgZmlsZXN5c3RlbQ0KKyAgLy8gb2JqZWN0IGNy ZWF0aW9uIC0tIHRoYXQgaXMsIENyZWF0ZS9SZWFkL1dyaXRlLg0KKyAgLy8NCisgIENyZWF0ZVJl cS5GbGFncyAgID0gVklSVElPX0ZTX0ZVU0VfT1BFTl9SRVFfRl9SRFdSOw0KKyAgQ3JlYXRlUmVx Lk1vZGUgICAgPSAoVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1JVU1IgfA0KKyAgICAgICAgICAg ICAgICAgICAgICAgVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1dVU1IgfA0KKyAgICAgICAgICAg ICAgICAgICAgICAgVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1JHUlAgfA0KKyAgICAgICAgICAg ICAgICAgICAgICAgVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1dHUlAgfA0KKyAgICAgICAgICAg ICAgICAgICAgICAgVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1JPVEggfA0KKyAgICAgICAgICAg ICAgICAgICAgICAgVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1dPVEgpOw0KKyAgQ3JlYXRlUmVx LlVtYXNrICAgPSAwOw0KKyAgQ3JlYXRlUmVxLlBhZGRpbmcgPSAwOw0KKw0KKyAgLy8NCisgIC8v IFN1Ym1pdCB0aGUgcmVxdWVzdC4NCisgIC8vDQorICBTdGF0dXMgPSBWaXJ0aW9Gc1NnTGlzdHNT dWJtaXQgKFZpcnRpb0ZzLCAmUmVxU2dMaXN0LCAmUmVzcFNnTGlzdCk7DQorICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0KKyAg Ly8gVmVyaWZ5IHRoZSByZXNwb25zZSAoYWxsIHJlc3BvbnNlIGJ1ZmZlcnMgYXJlIGZpeGVkIHNp emUpLg0KKyAgLy8NCisgIFN0YXR1cyA9IFZpcnRpb0ZzRnVzZUNoZWNrUmVzcG9uc2UgKCZSZXNw U2dMaXN0LCBDb21tb25SZXEuVW5pcXVlLCBOVUxMKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCisgICAgaWYgKFN0YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSB7DQorICAgICAgREVC VUcgKChERUJVR19FUlJPUiwgIiVhOiBMYWJlbD1cIiVzXCIgUGFyZW50Tm9kZUlkPSVMdSBOYW1l PVwiJWFcIiAiDQorICAgICAgICAiRXJybm89JWRcbiIsIF9fRlVOQ1RJT05fXywgVmlydGlvRnMt PkxhYmVsLCBQYXJlbnROb2RlSWQsIE5hbWUsDQorICAgICAgICBDb21tb25SZXNwLkVycm9yKSk7 DQorICAgICAgU3RhdHVzID0gVmlydGlvRnNFcnJub1RvRWZpU3RhdHVzIChDb21tb25SZXNwLkVy cm9yKTsNCisgICAgfQ0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8v IE91dHB1dCB0aGUgTm9kZUlkIG9mIHRoZSAocG9zc2libHkgbmV3KSByZWd1bGFyIGZpbGUuIEFs c28gb3V0cHV0IHRoZSBvcGVuDQorICAvLyBmaWxlIGhhbmRsZS4NCisgIC8vDQorICAqTm9kZUlk ICAgICA9IE5vZGVSZXNwLk5vZGVJZDsNCisgICpGdXNlSGFuZGxlID0gT3BlblJlc3AuRmlsZUhh bmRsZTsNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCit9DQotLSAKMi4xOS4xLjMuZzMwMjQ3YWE1 ZDIwMQoKCg==