From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.61]) by mx.groups.io with SMTP id smtpd.web10.9281.1582478781025737440 for ; Sun, 23 Feb 2020 09:26:21 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=BDjnOLoC; spf=pass (domain: redhat.com, ip: 205.139.110.61, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582478780; 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=96t/MpszV6xGEMJDr7bqmNPVVhSrex6ClLznT3DD+eI=; b=BDjnOLoCcj47JiASOiewMO0uUsft4aUpFAsJM2D4gJKFlmjli0piBKsRoqLT+UlAFl/a9z fDSjDhF4jQpLDKCQ7SLBNtLXyNytTnd4ayzCjkdoxUsEvgpaV3Q5Lg8YzAeTUPWk+UyzXR ef2frvrEowcNhIlG6Poz1H4nNi5F9bE= 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-370-9P0FUP8wMWuxSVK7Z8QObg-1; Sun, 23 Feb 2020 12:26:14 -0500 X-MC-Unique: 9P0FUP8wMWuxSVK7Z8QObg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D9E58800D50; Sun, 23 Feb 2020 17:26:12 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-53.ams2.redhat.com [10.36.116.53]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2BCF79182B; Sun, 23 Feb 2020 17:26:10 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Ard Biesheuvel , Igor Mammedov , Jiewen Yao , Jordan Justen , Michael Kinney , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 13/16] OvmfPkg/CpuHotplugSmm: complete root MMI handler for CPU hotplug Date: Sun, 23 Feb 2020 18:25:34 +0100 Message-Id: <20200223172537.28464-14-lersek@redhat.com> In-Reply-To: <20200223172537.28464-1-lersek@redhat.com> References: <20200223172537.28464-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 V2l0aCB0aGUgaGVscCBvZiB0aGUgUG9zdC1TTU0gUGVuIGFuZCB0aGUgU01CQVNFIHJlbG9jYXRp b24gZnVuY3Rpb25zCmFkZGVkIGluIHRoZSBwcmV2aW91cyBwYXRjaGVzLCB3ZSBjYW4gbm93IGNv bXBsZXRlIHRoZSByb290IE1NSSBoYW5kbGVyCmZvciBDUFUgaG90cGx1Zy4KCkluIHRoZSBkcml2 ZXIncyBlbnRyeSBwb2ludCBmdW5jdGlvbjoKCi0gYWxsb2NhdGUgdGhlIHBlbiAoaW4gYSByZXNl cnZlZCBwYWdlIGluIG5vcm1hbCBSQU0pLAoKLSBpbnN0YWxsIHRoZSBkZWZhdWx0ICgiZmlyc3Qi KSBTTUkgaGFuZGxlciBmb3IgaG90LWFkZGVkIENQVXMgKHdoaWNoCiAgaW5jbHVkZXMgcHJpbWlu ZyB0aGUgZXhjaGFuZ2UgYXJlYSBiZXR3ZWVuIHRoZSBNTSBNb25hcmNoIGFuZCB0aGUKICBob3Qt YWRkZWQgQ1BVcywgaS5lLiwgc2h1dHRpbmcgdGhlIEFQSUMgSUQgZ2F0ZSkuCgpJbiB0aGUgcm9v dCBNTUkgaGFuZGxlciwgZm9yIGVhY2ggaG90LWFkZGVkIENQVToKCi0gcmVjb3JkIHRoZSBBUElD IElEIG9mIHRoZSBuZXcgQ1BVIGluIENQVV9IT1RfUExVR19EQVRBLAoKLSByZWxvY2F0ZSB0aGUg U01CQVNFIG9mIHRoZSBuZXcgQ1BVLAoKLSBpbmZvcm0gUGlTbW1DcHVEeGVTbW0gYnkgY2FsbGlu ZwogIEVGSV9TTU1fQ1BVX1NFUlZJQ0VfUFJPVE9DT0wuQWRkUHJvY2Vzc29yKCkuCgpDYzogQXJk IEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+CkNjOiBJZ29yIE1hbW1lZG92 IDxpbWFtbWVkb0ByZWRoYXQuY29tPgpDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5j b20+CkNjOiBKb3JkYW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPgpDYzogTWlj aGFlbCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPgpDYzogUGhpbGlwcGUgTWF0 aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPgpSZWY6IGh0dHBzOi8vYnVnemlsbGEudGlh bm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMgpTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJz ZWsgPGxlcnNla0ByZWRoYXQuY29tPgotLS0KCk5vdGVzOgogICAgKDEpIEF0IHRoaXMgc3RhZ2Us IENQVSBob3RwbHVnIHdpdGggU01NIHdvcmtzLgogICAgCiAgICBUZXN0IENQVSB0b3BvbG9neSAo bGlidmlydCBkb21haW4gWE1MIHNuaXBwZXQpOgogICAgCiAgICA+ICAgPHZjcHVzPgogICAgPiAg ICAgPHZjcHUgaWQ9JzAnIGVuYWJsZWQ9J3llcycgaG90cGx1Z2dhYmxlPSdubycvPgogICAgPiAg ICAgPHZjcHUgaWQ9JzEnIGVuYWJsZWQ9J25vJyBob3RwbHVnZ2FibGU9J3llcycvPgogICAgPiAg ICAgPHZjcHUgaWQ9JzInIGVuYWJsZWQ9J3llcycgaG90cGx1Z2dhYmxlPSd5ZXMnLz4KICAgID4g ICAgIDx2Y3B1IGlkPSczJyBlbmFibGVkPSdubycgaG90cGx1Z2dhYmxlPSd5ZXMnLz4KICAgID4g ICA8L3ZjcHVzPgogICAgCiAgICBUaGUgZmlybXdhcmUgbG9ncyB0aGUgZm9sbG93aW5nIGR1cmlu ZyBub3JtYWwgYm9vdDoKICAgIAogICAgPiBTbWJhc2VBbGxvY2F0ZVBvc3RTbW1QZW46IFBvc3Qt U01NIFBlbiBhdCAweDlGMDAwCiAgICAKICAgIENQVSBob3RwbHVnIGNvbW1hbmQgb24gdGhlIGhv c3Qgc2lkZToKICAgIAogICAgPiB2aXJzaCBzZXR2Y3B1IG92bWYuZmVkb3JhLnEzNSAxIC0tZW5h YmxlIC0tbGl2ZQogICAgCiAgICBGaXJtd2FyZSBsb2cgaW4gcmVzcG9uc2U6CiAgICAKICAgID4g UWVtdUNwdWhwQ29sbGVjdEFwaWNJZHM6IEN1cnJlbnRTZWxlY3Rvcj0xOiBpbnNlcnQKICAgID4g UWVtdUNwdWhwQ29sbGVjdEFwaWNJZHM6IEFwaWNJZD0weDAwMDAwMDAxCiAgICA+IFFlbXVDcHVo cENvbGxlY3RBcGljSWRzOiBDdXJyZW50U2VsZWN0b3I9MiBQZW5kaW5nU2VsZWN0b3I9MToKICAg ID4gICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXAtYXJvdW5kCiAgICA+IFFlbXVDcHVocENv bGxlY3RBcGljSWRzOiBQbHVnZ2VkQ291bnQ9MSBUb1VucGx1Z0NvdW50PTAKICAgID4gQ3B1SG90 cGx1Z01taTogaG90LWFkZGVkIEFQSUMgSUQgMHgwMDAwMDAwMSwgU01CQVNFIDB4N0QwODIwMDAs CiAgICA+ICAgICAgICAgICAgICAgIEVGSV9TTU1fQ1BVX1NFUlZJQ0VfUFJPVE9DT0wgYXNzaWdu ZWQgbnVtYmVyIDIKICAgIAogICAgUXVlcnkgdGhlIENQVSByZWdpc3RlciBzdGF0ZSBvbiB0aGUg aG9zdCBzaWRlICh3aXRob3V0IG9ubGluaW5nIHRoZQogICAgaG90LWFkZGVkIENQVSBpbiB0aGUg T1MganVzdCB5ZXQpOgogICAgCiAgICA+IHZpcnNoIHFlbXUtbW9uaXRvci1jb21tYW5kIG92bWYu ZmVkb3JhLnEzNSAtLWhtcCAnaW5mbyByZWdpc3RlcnMgLWEnCiAgICAKICAgIE91dHB1dCwgY29u ZmlybWluZyBwZW5uZWQgc3RhdHVzIChwZW4gYXQgMHg5RjAwMCk6CiAgICAKICAgID4gQ1BVIzEK ICAgID4gRUFYPTAwMDA5ZjAwIEVCWD0wMDAwMDAwMCBFQ1g9MDAwMDAwMDAgRURYPTAwMDAwNjAw CiAgICA+IEVTST0wMDAwMDAwMCBFREk9MDAwMDAwMDAgRUJQPTAwMDAwMDAwIEVTUD0wMDAwMDAw MAogICAgPiBFSVA9MDAwMDAwMGMgRUZMPTAwMDAwMDAyIFstLS0tLS0tXSBDUEw9MCBJST0wIEEy MD0xIFNNTT0wIEhMVD0xCiAgICA+IEVTID0wMDAwIDAwMDAwMDAwIDAwMDBmZmZmIDAwMDA5MzAw CiAgICA+IENTID05ZjAwIDAwMDlmMDAwIDAwMDBmZmZmIDAwMDA5YjAwCiAgICA+IFNTID0wMDAw IDAwMDAwMDAwIDAwMDBmZmZmIDAwMDA5MzAwCiAgICA+IERTID05ZjAwIDAwMDlmMDAwIDAwMDBm ZmZmIDAwMDA5MzAwCiAgICA+IEZTID0wMDAwIDAwMDAwMDAwIDAwMDBmZmZmIDAwMDA5MzAwCiAg ICA+IEdTID0wMDAwIDAwMDAwMDAwIDAwMDBmZmZmIDAwMDA5MzAwCiAgICA+IExEVD0wMDAwIDAw MDAwMDAwIDAwMDBmZmZmIDAwMDA4MjAwCiAgICA+IFRSID0wMDAwIDAwMDAwMDAwIDAwMDBmZmZm IDAwMDA4YjAwCiAgICA+IEdEVD0gICAgIDAwMDAwMDAwIDAwMDBmZmZmCiAgICA+IElEVD0gICAg IDAwMDAwMDAwIDAwMDBmZmZmCiAgICA+IENSMD02MDAwMDAxMCBDUjI9MDAwMDAwMDAgQ1IzPTAw MDAwMDAwIENSND0wMDAwMDAwMAogICAgPiBEUjA9MDAwMDAwMDAwMDAwMDAwMCBEUjE9MDAwMDAw MDAwMDAwMDAwMCBEUjI9MDAwMDAwMDAwMDAwMDAwMAogICAgPiBEUjM9MDAwMDAwMDAwMDAwMDAw MAogICAgPiBEUjY9MDAwMDAwMDBmZmZmMGZmMCBEUjc9MDAwMDAwMDAwMDAwMDQwMAogICAgPiBF RkVSPTAwMDAwMDAwMDAwMDAwMDAKICAgID4gRkNXPTAzN2YgRlNXPTAwMDAgW1NUPTBdIEZUVz0w MCBNWENTUj0wMDAwMWY4MAogICAgPiBGUFIwPTAwMDAwMDAwMDAwMDAwMDAgMDAwMCBGUFIxPTAw MDAwMDAwMDAwMDAwMDAgMDAwMAogICAgPiBGUFIyPTAwMDAwMDAwMDAwMDAwMDAgMDAwMCBGUFIz PTAwMDAwMDAwMDAwMDAwMDAgMDAwMAogICAgPiBGUFI0PTAwMDAwMDAwMDAwMDAwMDAgMDAwMCBG UFI1PTAwMDAwMDAwMDAwMDAwMDAgMDAwMAogICAgPiBGUFI2PTAwMDAwMDAwMDAwMDAwMDAgMDAw MCBGUFI3PTAwMDAwMDAwMDAwMDAwMDAgMDAwMAogICAgPiBYTU0wMD0wMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMAogICAgPiBYTU0wMT0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMAogICAgPiBYTU0wMj0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgPiBY TU0wMz0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgPiBYTU0wND0wMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgPiBYTU0wNT0wMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMAogICAgPiBYTU0wNj0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MAogICAgPiBYTU0wNz0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgCiAgICBB ZGRpdGlvbmFsbHksIHRoZSBkbWVzZyBpbiB0aGUgTGludXggZ3Vlc3QgY29udGFpbnM6CiAgICAK ICAgID4gQ1BVMiBoYXMgYmVlbiBob3QtYWRkZWQKICAgIAogICAgV2UgY2FuIG5vdyBib290IHRo ZSBob3QtYWRkYWQgQ1BVIGluIHRoZSBMaW51eCBndWVzdDoKICAgIAogICAgPiBlY2hvIDEgPiAv c3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUyL29ubGluZQogICAgCiAgICBEbWVzZyBpbiByZXNw b25zZToKICAgIAogICAgPiBzbXBib290OiBCb290aW5nIE5vZGUgMCBQcm9jZXNzb3IgMiBBUElD IDB4MQogICAgPiBrdm0tY2xvY2s6IGNwdSAyLCBtc3IgNmUwMTA4MSwgc2Vjb25kYXJ5IGNwdSBj bG9jawogICAgPiBLVk0gc2V0dXAgYXN5bmMgUEYgZm9yIGNwdSAyCiAgICA+IGt2bS1zdGVhbHRp bWU6IGNwdSAyLCBtc3IgN2I1MmEwNDAKICAgID4gV2lsbCBvbmxpbmUgYW5kIGluaXQgaG90cGx1 Z2dlZCBDUFU6IDIKICAgIAogICAgU3RpbGwgaW4gdGhlIGd1ZXN0LCBjYWxsIFVFRkkgdmFyaWFi bGUgc2VydmljZXMgb24gZWFjaCBDUFUgKGluY2x1ZGluZwogICAgdGhlIGhvdC1hZGRlZCBvbmUp LCBwZXIKICAgIDxodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL3RpYW5vY29yZS5naXRodWIu aW8vd2lraS9UZXN0aW5nLVNNTS13aXRoLVFFTVUsLUtWTS1hbmQtbGlidmlydCN1ZWZpLXZhcmlh YmxlLWFjY2Vzcy10ZXN0PjoKICAgIAogICAgPiB0YXNrc2V0IC1jIDAgZWZpYm9vdG1ncgogICAg PiB0YXNrc2V0IC1jIDEgZWZpYm9vdG1ncgogICAgPiB0YXNrc2V0IC1jIDIgZWZpYm9vdG1ncgog ICAgCiAgICBObyBkZWxheXMsIG5vIGluc3RhYmlsaXR5LgogICAgCiAgICBIYXZpbmcgYm9vdGVk IHRoZSBob3QtYWRkZWQgQ1BVIGluIHRoZSBMaW51eCBndWVzdCwgdGhlIGhvc3Qtc2lkZQogICAg Y29tbWFuZAogICAgCiAgICA+IHZpcnNoIHFlbXUtbW9uaXRvci1jb21tYW5kIG92bWYuZmVkb3Jh LnEzNSAtLWhtcCAnaW5mbyByZWdpc3RlcnMgLWEnCiAgICAKICAgIG5vdyBzaG93czoKICAgIAog ICAgPiBDUFUjMQogICAgPiBSQVg9ZmZmZmZmZmZiMzllNGI1MCBSQlg9MDAwMDAwMDAwMDAwMDAw MiBSQ1g9MDAwMDAwMDAwMDAwMDAwMAogICAgPiBSRFg9MDAwMDAwMDAwMDAwMDAwMgogICAgPiBS U0k9MDAwMDAwMDAwMDAwMDAwMiBSREk9ZmZmZjkzMmNiYjUxYzUyMCBSQlA9MDAwMDAwMDAwMDAw MDAwMgogICAgPiBSU1A9ZmZmZmJjNWJjMDA4M2ViMAogICAgPiBSOCA9MDAwMDAwY2Q0MmU0ZGZm YiBSOSA9MDAwMDAwNWEyMjUwMjU5OSBSMTA9MDAwMDAwNWEyMjUwMjU5OQogICAgPiBSMTE9MDAw MDAwNWEyMjUwMjU5OQogICAgPiBSMTI9ZmZmZjkzMmNiYWUyNWRjMCBSMTM9MDAwMDAwMDAwMDAw MDAwMCBSMTQ9MDAwMDAwMDAwMDAwMDAwMAogICAgPiBSMTU9ZmZmZjkzMmNiYWUyNWRjMAogICAg PiBSSVA9ZmZmZmZmZmZiMzllNGYyZSBSRkw9MDAwMDAyNDYgWy0tLVotUC1dIENQTD0wIElJPTAg QTIwPTEgU01NPTAKICAgID4gSExUPTEKICAgID4gRVMgPTAwMDAgMDAwMDAwMDAwMDAwMDAwMCBm ZmZmZmZmZiAwMGMwMDAwMAogICAgPiBDUyA9MDAxMCAwMDAwMDAwMDAwMDAwMDAwIGZmZmZmZmZm IDAwYTA5YjAwIERQTD0wIENTNjQgWy1SQV0KICAgID4gU1MgPTAwMTggMDAwMDAwMDAwMDAwMDAw MCBmZmZmZmZmZiAwMGMwOTMwMCBEUEw9MCBEUyAgIFstV0FdCiAgICA+IERTID0wMDAwIDAwMDAw MDAwMDAwMDAwMDAgZmZmZmZmZmYgMDBjMDAwMDAKICAgID4gRlMgPTAwMDAgMDAwMDAwMDAwMDAw MDAwMCBmZmZmZmZmZiAwMGMwMDAwMAogICAgPiBHUyA9MDAwMCBmZmZmOTMyY2JiNTAwMDAwIGZm ZmZmZmZmIDAwYzAwMDAwCiAgICA+IExEVD0wMDAwIDAwMDAwMDAwMDAwMDAwMDAgMDAwZmZmZmYg MDAwMDAwMDAKICAgID4gVFIgPTAwNDAgZmZmZmZlMDAwMDA2OTAwMCAwMDAwMjA2ZiAwMDAwOGIw MCBEUEw9MCBUU1M2NC1idXN5CiAgICA+IEdEVD0gICAgIGZmZmZmZTAwMDAwNjcwMDAgMDAwMDAw N2YKICAgID4gSURUPSAgICAgZmZmZmZlMDAwMDAwMDAwMCAwMDAwMGZmZgogICAgPiBDUjA9ODAw NTAwMzMgQ1IyPTAwMDA3ZjU0ODkzY2JmMjAgQ1IzPTAwMDAwMDAwNzg0MTgwMDEgQ1I0PTAwMTYw NmUwCiAgICA+IERSMD0wMDAwMDAwMDAwMDAwMDAwIERSMT0wMDAwMDAwMDAwMDAwMDAwIERSMj0w MDAwMDAwMDAwMDAwMDAwCiAgICA+IERSMz0wMDAwMDAwMDAwMDAwMDAwCiAgICA+IERSNj0wMDAw MDAwMGZmZmYwZmYwIERSNz0wMDAwMDAwMDAwMDAwNDAwCiAgICA+IEVGRVI9MDAwMDAwMDAwMDAw MGQwMQogICAgPiBGQ1c9MDM3ZiBGU1c9MDAwMCBbU1Q9MF0gRlRXPTAwIE1YQ1NSPTAwMDAxZmEw CiAgICA+IEZQUjA9MDAwMDAwMDAwMDAwMDAwMCAwMDAwIEZQUjE9MDAwMDAwMDAwMDAwMDAwMCAw MDAwCiAgICA+IEZQUjI9MDAwMDAwMDAwMDAwMDAwMCAwMDAwIEZQUjM9MDAwMDAwMDAwMDAwMDAw MCAwMDAwCiAgICA+IEZQUjQ9MDAwMDAwMDAwMDAwMDAwMCAwMDAwIEZQUjU9MDAwMDAwMDAwMDAw MDAwMCAwMDAwCiAgICA+IEZQUjY9MDAwMDAwMDAwMDAwMDAwMCAwMDAwIEZQUjc9MDAwMDAwMDAw MDAwMDAwMCAwMDAwCiAgICA+IFhNTTAwPTAwMDAwMDAwMDAwMDAwMDA0MGVkMmJlMDAwMDAwMDAw CiAgICA+IFhNTTAxPTAwMDAwMDAwMDAwMDAwMDA0MDRkZGYxYTlmYmU3NmM5CiAgICA+IFhNTTAy PTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTAzPTAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTA0PTAwMDAwMDAwMDAwMDAwMDAzZmYwMDAw MDAwMDAwMDAwCiAgICA+IFhNTTA1PTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAg ICA+IFhNTTA2PTAwMDAwMDAwMDAwMDAwMDA0MDc4MDAyZDBhYzQ4N2I3CiAgICA+IFhNTTA3PTAw MDAwMDAwMDAwMDAwMDA0MDRkZGYxYTlmYmU3NmM5CiAgICA+IFhNTTA4PTcyMjIzZDQ0NDk1NTQx MjAyMjc0NmY2ZjcyMjIzZDQ0CiAgICA+IFhNTTA5PTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwCiAgICA+IFhNTTEwPTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+ IFhNTTExPTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTEyPTAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTEzPTAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTE0PTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwCiAgICA+IFhNTTE1PTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICAKICAg IEhvdHBsdWcgYW5vdGhlciBDUFU6CiAgICAKICAgID4gdmlyc2ggc2V0dmNwdSBvdm1mLmZlZG9y YS5xMzUgMyAtLWVuYWJsZSAtLWxpdmUKICAgIAogICAgRmlybXdhcmUgbG9nIGluIHJlc3BvbnNl OgogICAgCiAgICA+IFFlbXVDcHVocENvbGxlY3RBcGljSWRzOiBDdXJyZW50U2VsZWN0b3I9Mzog aW5zZXJ0CiAgICA+IFFlbXVDcHVocENvbGxlY3RBcGljSWRzOiBBcGljSWQ9MHgwMDAwMDAwMwog ICAgPiBRZW11Q3B1aHBDb2xsZWN0QXBpY0lkczogUGx1Z2dlZENvdW50PTEgVG9VbnBsdWdDb3Vu dD0wCiAgICA+IENwdUhvdHBsdWdNbWk6IGhvdC1hZGRlZCBBUElDIElEIDB4MDAwMDAwMDMsIFNN QkFTRSAweDdEMDg0MDAwLAogICAgPiAgICAgICAgICAgICAgICBFRklfU01NX0NQVV9TRVJWSUNF X1BST1RPQ09MIGFzc2lnbmVkIG51bWJlciAzCiAgICAKICAgIE9ubGluZSB0aGUgaG90LWFkZGVk IENQVSBpbiB0aGUgTGludXggZ3Vlc3Q6CiAgICAKICAgID4gZWNobyAxID4gL3N5cy9kZXZpY2Vz L3N5c3RlbS9jcHUvY3B1My9vbmxpbmUKICAgIAogICAgR3Vlc3QgZG1lc2cgaW4gcmVzcG9uc2U6 CiAgICAKICAgID4gc21wYm9vdDogQm9vdGluZyBOb2RlIDAgUHJvY2Vzc29yIDMgQVBJQyAweDMK ICAgID4ga3ZtLWNsb2NrOiBjcHUgMywgbXNyIDZlMDEwYzEsIHNlY29uZGFyeSBjcHUgY2xvY2sK ICAgID4gS1ZNIHNldHVwIGFzeW5jIFBGIGZvciBjcHUgMwogICAgPiBrdm0tc3RlYWx0aW1lOiBj cHUgMywgbXNyIDdiNWFhMDQwCiAgICA+IFdpbGwgb25saW5lIGFuZCBpbml0IGhvdHBsdWdnZWQg Q1BVOiAzCiAgICAKICAgICgyKSBBbHRlcm5hdGl2ZSBvcmRlciBvZiBhY3Rpb25zOgogICAgCiAg ICBIb3RwbHVnIGJvdGggQ1BVcyBmaXJzdCwgb24gdGhlIGhvc3Q6CiAgICAKICAgID4gdmlyc2gg c2V0dmNwdSBvdm1mLmZlZG9yYS5xMzUgMSAtLWVuYWJsZSAtLWxpdmUKICAgID4gdmlyc2ggc2V0 dmNwdSBvdm1mLmZlZG9yYS5xMzUgMyAtLWVuYWJsZSAtLWxpdmUKICAgIAogICAgKnRoZW4qIG9u bGluZSBib3RoIGhvdC1hZGRlZCBDUFVzIGluIHRoZSBMaW51eCBndWVzdDoKICAgIAogICAgPiBl Y2hvIDEgPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUyL29ubGluZQogICAgPiBlY2hvIDEg PiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUzL29ubGluZQogICAgCiAgICBUaGUgb25seSBk aWZmZXJlbmNlIGhlcmUgaXMgdGhhdCB0aGUgYnJvYWRjYXN0IFNNSSBmb3IgdGhlIHNlY29uZAog ICAgaG90cGx1ZyBmaW5kcyB0aGUgZmlyc3QgaG90cGx1Z2dlZCBDUFUgc3RpbGwgaW4gdGhlIHBl biAoaS5lLiwgbm90CiAgICBvbmxpbmVkIGJ5IExpbnV4KS4gVGhlcmUgaXMgbm8gZGlmZmVyZW5j ZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW9yIChiZXlvbmQKICAgIHRoZSBtYXRjaGluZyBsb2cgbWVz c2FnZXMgYW5kIHJlZ2lzdGVyIGR1bXBzKS4KICAgIAogICAgKDMpIFdoYXQgZG9lc24ndCB3b3Jr IHlldDoKICAgIAogICAgLSBDUFUgaG90cGx1ZyB3LyBTTU0gaW4gU0VWIGd1ZXN0cy4KICAgIAog ICAgICBTZWUgPGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MTUxMiNjMTQ+LgogICAgCiAgICAgIChOQi4gSSdtIHVuY2VydGFpbiBpZiBDUFUgaG90cGx1ZyB3 b3JrcyBpbiBTRVYgZ3Vlc3RzIHdpdGhvdXQKICAgICAgU01NX1JFUVVJUkUgdG8gYmVnaW4gd2l0 aC4pCiAgICAKICAgIC0gUzMgcmVzdW1lIHcvIFNNTSBhZnRlciBob3QtYWRkaW5nIGEgQ1BVLgog ICAgCiAgICAgIFRoZSByZW1haW5pbmcgcGF0Y2hlcyBpbiB0aGUgc2VyaWVzIHRha2UgY2FyZSBv ZiB0aGF0LiAoT25seSBpbiB0aGUKICAgICAgYWJzZW5jZSBvZiBTRVY7IFNFVitTMyBsb29rcyBi cm9rZW4gcmVnYXJkbGVzcyBvZiBob3RwbHVnLikKICAgIAogICAgLSBDUFUgaG90LXVucGx1ZyB3 LyBTTU0uCiAgICAKICAgICAgTmVlZHMgc2VwYXJhdGUgaW52ZXN0aWdhdGlvbi4gRUZJX1NNTV9S RU1PVkVfUFJPQ0VTU09SIGluCiAgICAgICJVZWZpQ3B1UGtnL0luY2x1ZGUvUHJvdG9jb2wvU21t Q3B1U2VydmljZS5oIiBpcyBkb2N1bWVudGVkIGFzCiAgICAgIGZvbGxvd3M6ICJBZnRlciB0aGlz IEFQSSBpcyBjYWxsZWQsIHRoZSByZW1vdmVkIHByb2Nlc3NvciBtdXN0IG5vdAogICAgICByZXNw b25kIHRvIFNNSXMgaW4gdGhlIGNvaGVyZW5jZSBkb21haW4iLiBUaGlzIGNvdWxkIHJhaXNlIGNo YWxsZW5naW5nCiAgICAgIG9yZGVyaW5nIHF1ZXN0aW9ucyBiZXR3ZWVuIFFFTVUsIHRoZSBmaXJt d2FyZSwgYW5kIHRoZSBPUy4KCiBPdm1mUGtnL0NwdUhvdHBsdWdTbW0vQ3B1SG90cGx1Zy5jIHwg OTcgKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9DcHVI b3RwbHVnLmMgYi9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0vQ3B1SG90cGx1Zy5jCmluZGV4IDQyZTAy M2NiODVjMC4uMjBlNmJlYzA0ZjQxIDEwMDY0NAotLS0gYS9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0v Q3B1SG90cGx1Zy5jCisrKyBiL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9DcHVIb3RwbHVnLmMKQEAg LTEsNzYgKzEsODIgQEAKIC8qKiBAZmlsZQ0KICAgUm9vdCBTTUkgaGFuZGxlciBmb3IgVkNQVSBo b3RwbHVnIFNNSXMuDQogDQogICBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZCBIYXQsIEluYy4NCiAN CiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQogKiovDQog DQogI2luY2x1ZGUgPENwdUhvdFBsdWdEYXRhLmg+ICAgICAgICAgICAgICAgICAgLy8gQ1BVX0hP VF9QTFVHX0RBVEENCiAjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9RMzVNY2hJY2g5Lmg+ICAg ICAvLyBJQ0g5X0FQTV9DTlQNCiAjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9RZW11Q3B1SG90 cGx1Zy5oPiAvLyBRRU1VX0NQVUhQX0NNRF9HRVRfUEVORElORw0KICNpbmNsdWRlIDxMaWJyYXJ5 L0Jhc2VMaWIuaD4gICAgICAgICAgICAgICAgIC8vIENwdURlYWRMb29wKCkNCiAjaW5jbHVkZSA8 TGlicmFyeS9EZWJ1Z0xpYi5oPiAgICAgICAgICAgICAgICAvLyBBU1NFUlQoKQ0KICNpbmNsdWRl IDxMaWJyYXJ5L01tU2VydmljZXNUYWJsZUxpYi5oPiAgICAgIC8vIGdNbXN0DQogI2luY2x1ZGUg PExpYnJhcnkvUGNkTGliLmg+ICAgICAgICAgICAgICAgICAgLy8gUGNkR2V0Qm9vbCgpDQogI2lu Y2x1ZGUgPExpYnJhcnkvU2FmZUludExpYi5oPiAgICAgICAgICAgICAgLy8gU2FmZVVpbnRuU3Vi KCkNCiAjaW5jbHVkZSA8UHJvdG9jb2wvTW1DcHVJby5oPiAgICAgICAgICAgICAgICAvLyBFRklf TU1fQ1BVX0lPX1BST1RPQ09MDQogI2luY2x1ZGUgPFByb3RvY29sL1NtbUNwdVNlcnZpY2UuaD4g ICAgICAgICAgLy8gRUZJX1NNTV9DUFVfU0VSVklDRV9QUk9UT0NPTA0KICNpbmNsdWRlIDxVZWZp L1VlZmlCYXNlVHlwZS5oPiAgICAgICAgICAgICAgIC8vIEVGSV9TVEFUVVMNCiANCiAjaW5jbHVk ZSAiQXBpY0lkLmgiICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUElDX0lEDQogI2luY2x1 ZGUgIlFlbXVDcHVocC5oIiAgICAgICAgICAgICAgICAgICAgICAgLy8gUWVtdUNwdWhwV3JpdGVD cHVTZWxlY3RvcigpDQorI2luY2x1ZGUgIlNtYmFzZS5oIiAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gU21iYXNlQWxsb2NhdGVQb3N0U21tUGVuKCkNCiANCiAvLw0KIC8vIFdlIHVzZSB0aGlz IHByb3RvY29sIGZvciBhY2Nlc3NpbmcgSU8gUG9ydHMuDQogLy8NCiBTVEFUSUMgRUZJX01NX0NQ VV9JT19QUk9UT0NPTCAqbU1tQ3B1SW87DQogLy8NCiAvLyBUaGUgZm9sbG93aW5nIHByb3RvY29s IGlzIHVzZWQgdG8gcmVwb3J0IHRoZSBhZGRpdGlvbiBvciByZW1vdmFsIG9mIGEgQ1BVIHRvDQog Ly8gdGhlIFNNTSBDUFUgZHJpdmVyIChQaVNtbUNwdUR4ZVNtbSkuDQogLy8NCiBTVEFUSUMgRUZJ X1NNTV9DUFVfU0VSVklDRV9QUk9UT0NPTCAqbU1tQ3B1U2VydmljZTsNCiAvLw0KIC8vIFRoaXMg c3RydWN0dXJlIGlzIGEgY29tbXVuaWNhdGlvbiBzaWRlLWNoYW5uZWwgYmV0d2VlbiB0aGUNCiAv LyBFRklfU01NX0NQVV9TRVJWSUNFX1BST1RPQ09MIGNvbnN1bWVyIChpLmUuLCB0aGlzIGRyaXZl cikgYW5kIHByb3ZpZGVyDQogLy8gKGkuZS4sIFBpU21tQ3B1RHhlU21tKS4NCiAvLw0KIFNUQVRJ QyBDUFVfSE9UX1BMVUdfREFUQSAqbUNwdUhvdFBsdWdEYXRhOw0KIC8vDQogLy8gU01SQU0gYXJy YXlzIGZvciBmZXRjaGluZyB0aGUgQVBJQyBJRHMgb2YgcHJvY2Vzc29ycyB3aXRoIHBlbmRpbmcg ZXZlbnRzIChvZg0KIC8vIGtub3duIGV2ZW50IHR5cGVzKSwgZm9yIHRoZSB0aW1lIG9mIGp1c3Qg b25lIE1NSS4NCiAvLw0KIC8vIFRoZSBsaWZldGltZXMgb2YgdGhlc2UgYXJyYXlzIG1hdGNoIHRo YXQgb2YgdGhpcyBkcml2ZXIgb25seSBiZWNhdXNlIHdlDQogLy8gZG9uJ3Qgd2FudCB0byBhbGxv Y2F0ZSBTTVJBTSBhdCBPUyBydW50aW1lLCBhbmQgcG90ZW50aWFsbHkgZmFpbCAob3INCiAvLyBm cmFnbWVudCB0aGUgU01SQU0gbWFwKS4NCiAvLw0KIC8vIFRoZXNlIGFycmF5cyBwcm92aWRlIHJv b20gZm9yICgicG9zc2libGUgQ1BVIGNvdW50IiBtaW51cyBvbmUpIEFQSUMgSURzDQogLy8gZWFj aCwgYXMgd2UgZG9uJ3QgZXhwZWN0IGV2ZXJ5IHBvc3NpYmxlIENQVSB0byBhcHBlYXIsIG9yIGRp c2FwcGVhciwgaW4gYQ0KIC8vIHNpbmdsZSBNTUkuIFRoZSBudW1iZXJzIG9mIHVzZWQgKHBvcHVs YXRlZCkgZWxlbWVudHMgaW4gdGhlIGFycmF5cyBhcmUNCiAvLyBkZXRlcm1pbmVkIG9uIGV2ZXJ5 IE1NSSBzZXBhcmF0ZWx5Lg0KIC8vDQogU1RBVElDIEFQSUNfSUQgKm1QbHVnZ2VkQXBpY0lkczsN CiBTVEFUSUMgQVBJQ19JRCAqbVRvVW5wbHVnQXBpY0lkczsNCiAvLw0KKy8vIEFkZHJlc3Mgb2Yg dGhlIG5vbi1TTVJBTSByZXNlcnZlZCBtZW1vcnkgcGFnZSB0aGF0IGNvbnRhaW5zIHRoZSBQb3N0 LVNNTSBQZW4NCisvLyBmb3IgaG90LWFkZGVkIENQVXMuDQorLy8NCitTVEFUSUMgVUlOVDMyIG1Q b3N0U21tUGVuQWRkcmVzczsNCisvLw0KIC8vIFJlcHJlc2VudHMgdGhlIHJlZ2lzdHJhdGlvbiBv ZiB0aGUgQ1BVIEhvdHBsdWcgTU1JIGhhbmRsZXIuDQogLy8NCiBTVEFUSUMgRUZJX0hBTkRMRSBt RGlzcGF0Y2hIYW5kbGU7DQogDQogDQogLyoqDQogICBDUFUgSG90cGx1ZyBNTUkgaGFuZGxlciBm dW5jdGlvbi4NCiANCiAgIFRoaXMgaXMgYSByb290IE1NSSBoYW5kbGVyLg0KIA0KICAgQHBhcmFt W2luXSBEaXNwYXRjaEhhbmRsZSAgICAgIFRoZSB1bmlxdWUgaGFuZGxlIGFzc2lnbmVkIHRvIHRo aXMgaGFuZGxlciBieQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9NTV9T WVNURU1fVEFCTEUuTW1pSGFuZGxlclJlZ2lzdGVyKCkuDQogDQogICBAcGFyYW1baW5dIENvbnRl eHQgICAgICAgICAgICAgQ29udGV4dCBwYXNzZWQgaW4gYnkNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFRklfTU1fU1lTVEVNX1RBQkxFLk1taU1hbmFnZSgpLiBEdWUgdG8NCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcHVIb3RwbHVnTW1pKCkgYmVpbmcgYSBy b290IE1NSSBoYW5kbGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRl eHQgaXMgQVNTRVJUKCllZCB0byBiZSBOVUxMLg0KIA0KICAgQHBhcmFtW2luLG91dF0gQ29tbUJ1 ZmZlciAgICAgIElnbm9yZWQsIGR1ZSB0byBDcHVIb3RwbHVnTW1pKCkgYmVpbmcgYSByb290DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTU1JIGhhbmRsZXIuDQogDQogICBAcGFy YW1baW4sb3V0XSBDb21tQnVmZmVyU2l6ZSAgSWdub3JlZCwgZHVlIHRvIENwdUhvdHBsdWdNbWko KSBiZWluZyBhIHJvb3QNCkBAIC05Nyw0NCArMTAzLDQ2IEBAIFNUQVRJQyBFRklfSEFORExFIG1E aXNwYXRjaEhhbmRsZTsKIA0KICAgQHJldHZhbCBFRklfV0FSTl9JTlRFUlJVUFRfU09VUkNFX1BF TkRJTkcgICBUaGUgTU1JIHNvdXJjZSBpcyBzdGlsbCBwZW5kaW5nLA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgaGFuZGxlcnMgc2hvdWxk IHN0aWxsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJl IGNhbGxlZC4NCiANCiAgIEByZXR2YWwgRUZJX0lOVEVSUlVQVF9QRU5ESU5HICAgICAgICAgICAg ICAgVGhlIE1NSSBzb3VyY2UgY291bGQgbm90IGJlDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHF1aWVzY2VkLg0KICoqLw0KIFNUQVRJQw0KIEVGSV9TVEFU VVMNCiBFRklBUEkNCiBDcHVIb3RwbHVnTW1pICgNCiAgIElOIEVGSV9IQU5ETEUgRGlzcGF0Y2hI YW5kbGUsDQogICBJTiBDT05TVCBWT0lEICpDb250ZXh0ICAgICAgICBPUFRJT05BTCwNCiAgIElO IE9VVCBWT0lEICAgKkNvbW1CdWZmZXIgICAgIE9QVElPTkFMLA0KICAgSU4gT1VUIFVJTlROICAq Q29tbUJ1ZmZlclNpemUgT1BUSU9OQUwNCiAgICkNCiB7DQogICBFRklfU1RBVFVTIFN0YXR1czsN CiAgIFVJTlQ4ICAgICAgQXBtQ29udHJvbDsNCiAgIFVJTlQzMiAgICAgUGx1Z2dlZENvdW50Ow0K ICAgVUlOVDMyICAgICBUb1VucGx1Z0NvdW50Ow0KKyAgVUlOVDMyICAgICBQbHVnZ2VkSWR4Ow0K KyAgVUlOVDMyICAgICBOZXdTbG90Ow0KIA0KICAgLy8NCiAgIC8vIEFzc2VydCB0aGF0IHdlIGFy ZSBlbnRlcmluZyB0aGlzIGZ1bmN0aW9uIGR1ZSB0byBvdXIgcm9vdCBNTUkgaGFuZGxlcg0KICAg Ly8gcmVnaXN0cmF0aW9uLg0KICAgLy8NCiAgIEFTU0VSVCAoRGlzcGF0Y2hIYW5kbGUgPT0gbURp c3BhdGNoSGFuZGxlKTsNCiAgIC8vDQogICAvLyBXaGVuIE1taU1hbmFnZSgpIGlzIGludm9rZWQg dG8gcHJvY2VzcyByb290IE1NSSBoYW5kbGVycywgdGhlIGNhbGxlciAodGhlDQogICAvLyBNTSBD b3JlKSBpcyBleHBlY3RlZCB0byBwYXNzIGluIGEgTlVMTCBDb250ZXh0LiBNbWlNYW5hZ2UoKSB0 aGVuIHBhc3Nlcw0KICAgLy8gdGhlIHNhbWUgTlVMTCBDb250ZXh0IHRvIGluZGl2aWR1YWwgaGFu ZGxlcnMuDQogICAvLw0KICAgQVNTRVJUIChDb250ZXh0ID09IE5VTEwpOw0KICAgLy8NCiAgIC8v IFJlYWQgdGhlIE1NSSBjb21tYW5kIHZhbHVlIGZyb20gdGhlIEFQTSBDb250cm9sIFBvcnQsIHRv IHNlZSBpZiB0aGlzIGlzIGFuDQogICAvLyBNTUkgd2Ugc2hvdWxkIGNhcmUgYWJvdXQuDQogICAv Lw0KICAgU3RhdHVzID0gbU1tQ3B1SW8tPklvLlJlYWQgKG1NbUNwdUlvLCBNTV9JT19VSU5UOCwg SUNIOV9BUE1fQ05ULCAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgJkFwbUNvbnRyb2wp Ow0KICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KICAgICBERUJVRyAoKERFQlVHX0VSUk9S LCAiJWE6IGZhaWxlZCB0byByZWFkIElDSDlfQVBNX0NOVDogJXJcbiIsIF9fRlVOQ1RJT05fXywN CiAgICAgICBTdGF0dXMpKTsNCiAgICAgLy8NCkBAIC0xNTIsNDkgKzE2MCwxMTYgQEAgQ3B1SG90 cGx1Z01taSAoCiANCiAgIC8vDQogICAvLyBDb2xsZWN0IHRoZSBDUFVzIHdpdGggcGVuZGluZyBl dmVudHMuDQogICAvLw0KICAgU3RhdHVzID0gUWVtdUNwdWhwQ29sbGVjdEFwaWNJZHMgKA0KICAg ICAgICAgICAgICBtTW1DcHVJbywNCiAgICAgICAgICAgICAgbUNwdUhvdFBsdWdEYXRhLT5BcnJh eUxlbmd0aCwgICAgIC8vIFBvc3NpYmxlQ3B1Q291bnQNCiAgICAgICAgICAgICAgbUNwdUhvdFBs dWdEYXRhLT5BcnJheUxlbmd0aCAtIDEsIC8vIEFwaWNJZENvdW50DQogICAgICAgICAgICAgIG1Q bHVnZ2VkQXBpY0lkcywNCiAgICAgICAgICAgICAgJlBsdWdnZWRDb3VudCwNCiAgICAgICAgICAg ICAgbVRvVW5wbHVnQXBpY0lkcywNCiAgICAgICAgICAgICAgJlRvVW5wbHVnQ291bnQNCiAgICAg ICAgICAgICAgKTsNCiAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCiAgICAgZ290byBGYXRh bDsNCiAgIH0NCiAgIGlmIChUb1VucGx1Z0NvdW50ID4gMCkgew0KICAgICBERUJVRyAoKERFQlVH X0VSUk9SLCAiJWE6IGhvdC11bnBsdWcgaXMgbm90IHN1cHBvcnRlZCB5ZXRcbiIsDQogICAgICAg X19GVU5DVElPTl9fKSk7DQogICAgIGdvdG8gRmF0YWw7DQogICB9DQogDQorICAvLw0KKyAgLy8g UHJvY2VzcyBob3QtYWRkZWQgQ1BVcy4NCisgIC8vDQorICAvLyBUaGUgUG9zdC1TTU0gUGVuIG5l ZWQgbm90IGJlIHJlaW5zdGFsbGVkIG11bHRpcGxlIHRpbWVzIHdpdGhpbiBhIHNpbmdsZQ0KKyAg Ly8gcm9vdCBNTUkgaGFuZGxpbmcuIEV2ZW4gcmVpbnN0YWxsaW5nIG9uY2UgcGVyIHJvb3QgTU1J IGlzIG9ubHkgcHJ1ZGVuY2U7DQorICAvLyBpbiB0aGVvcnkgaW5zdGFsbGluZyB0aGUgcGVuIGlu IHRoZSBkcml2ZXIncyBlbnRyeSBwb2ludCBmdW5jdGlvbiBzaG91bGQNCisgIC8vIHN1ZmZpY2Uu DQorICAvLw0KKyAgU21iYXNlUmVpbnN0YWxsUG9zdFNtbVBlbiAobVBvc3RTbW1QZW5BZGRyZXNz KTsNCisNCisgIFBsdWdnZWRJZHggPSAwOw0KKyAgTmV3U2xvdCA9IDA7DQorICB3aGlsZSAoUGx1 Z2dlZElkeCA8IFBsdWdnZWRDb3VudCkgew0KKyAgICBBUElDX0lEIE5ld0FwaWNJZDsNCisgICAg VUlOVE4gICBOZXdQcm9jZXNzb3JOdW1iZXJCeVByb3RvY29sOw0KKw0KKyAgICBOZXdBcGljSWQg PSBtUGx1Z2dlZEFwaWNJZHNbUGx1Z2dlZElkeF07DQorICAgIC8vDQorICAgIC8vIEZpbmQgdGhl IGZpcnN0IGVtcHR5IHNsb3QgaW4gQ1BVX0hPVF9QTFVHX0RBVEEuDQorICAgIC8vDQorICAgIHdo aWxlIChOZXdTbG90IDwgbUNwdUhvdFBsdWdEYXRhLT5BcnJheUxlbmd0aCAmJg0KKyAgICAgICAg ICAgbUNwdUhvdFBsdWdEYXRhLT5BcGljSWRbTmV3U2xvdF0gIT0gTUFYX1VJTlQ2NCkgew0KKyAg ICAgIE5ld1Nsb3QrKzsNCisgICAgfQ0KKyAgICBpZiAoTmV3U2xvdCA9PSBtQ3B1SG90UGx1Z0Rh dGEtPkFycmF5TGVuZ3RoKSB7DQorICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBubyBy b29tIGZvciBBUElDIElEICIgRk1UX0FQSUNfSUQgIlxuIiwNCisgICAgICAgIF9fRlVOQ1RJT05f XywgTmV3QXBpY0lkKSk7DQorICAgICAgZ290byBGYXRhbDsNCisgICAgfQ0KKw0KKyAgICAvLw0K KyAgICAvLyBTdG9yZSB0aGUgQVBJQyBJRCBvZiB0aGUgbmV3IHByb2Nlc3NvciB0byB0aGUgc2xv dC4NCisgICAgLy8NCisgICAgbUNwdUhvdFBsdWdEYXRhLT5BcGljSWRbTmV3U2xvdF0gPSBOZXdB cGljSWQ7DQorDQorICAgIC8vDQorICAgIC8vIFJlbG9jYXRlIHRoZSBTTUJBU0Ugb2YgdGhlIG5l dyBDUFUuDQorICAgIC8vDQorICAgIFN0YXR1cyA9IFNtYmFzZVJlbG9jYXRlIChOZXdBcGljSWQs IG1DcHVIb3RQbHVnRGF0YS0+U21CYXNlW05ld1Nsb3RdLA0KKyAgICAgICAgICAgICAgIG1Qb3N0 U21tUGVuQWRkcmVzcyk7DQorICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICBn b3RvIFJldm9rZU5ld1Nsb3Q7DQorICAgIH0NCisNCisgICAgLy8NCisgICAgLy8gQWRkIHRoZSBu ZXcgQ1BVIHdpdGggRUZJX1NNTV9DUFVfU0VSVklDRV9QUk9UT0NPTC4NCisgICAgLy8NCisgICAg U3RhdHVzID0gbU1tQ3B1U2VydmljZS0+QWRkUHJvY2Vzc29yIChtTW1DcHVTZXJ2aWNlLCBOZXdB cGljSWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk5ld1Byb2Nlc3Nvck51bWJl ckJ5UHJvdG9jb2wpOw0KKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgICAgREVC VUcgKChERUJVR19FUlJPUiwgIiVhOiBBZGRQcm9jZXNzb3IoIiBGTVRfQVBJQ19JRCAiKTogJXJc biIsDQorICAgICAgICBfX0ZVTkNUSU9OX18sIE5ld0FwaWNJZCwgU3RhdHVzKSk7DQorICAgICAg Z290byBSZXZva2VOZXdTbG90Ow0KKyAgICB9DQorDQorICAgIERFQlVHICgoREVCVUdfSU5GTywg IiVhOiBob3QtYWRkZWQgQVBJQyBJRCAiIEZNVF9BUElDX0lEICIsIFNNQkFTRSAweCVMeCwgIg0K KyAgICAgICJFRklfU01NX0NQVV9TRVJWSUNFX1BST1RPQ09MIGFzc2lnbmVkIG51bWJlciAlTHVc biIsIF9fRlVOQ1RJT05fXywNCisgICAgICBOZXdBcGljSWQsIChVSU5UNjQpbUNwdUhvdFBsdWdE YXRhLT5TbUJhc2VbTmV3U2xvdF0sDQorICAgICAgKFVJTlQ2NClOZXdQcm9jZXNzb3JOdW1iZXJC eVByb3RvY29sKSk7DQorDQorICAgIE5ld1Nsb3QrKzsNCisgICAgUGx1Z2dlZElkeCsrOw0KKyAg fQ0KKw0KICAgLy8NCiAgIC8vIFdlJ3ZlIGhhbmRsZWQgdGhpcyBNTUkuDQogICAvLw0KICAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KIA0KK1Jldm9rZU5ld1Nsb3Q6DQorICBtQ3B1SG90UGx1Z0RhdGEt PkFwaWNJZFtOZXdTbG90XSA9IE1BWF9VSU5UNjQ7DQorDQogRmF0YWw6DQogICBBU1NFUlQgKEZB TFNFKTsNCiAgIENwdURlYWRMb29wICgpOw0KICAgLy8NCiAgIC8vIFdlIGNvdWxkbid0IGhhbmRs ZSB0aGlzIE1NSS4NCiAgIC8vDQogICByZXR1cm4gRUZJX0lOVEVSUlVQVF9QRU5ESU5HOw0KIH0N CiANCiANCiAvLw0KIC8vIEVudHJ5IHBvaW50IGZ1bmN0aW9uIG9mIHRoaXMgZHJpdmVyLg0KIC8v DQogRUZJX1NUQVRVUw0KIEVGSUFQSQ0KIENwdUhvdHBsdWdFbnRyeSAoDQogICBJTiBFRklfSEFO RExFICAgICAgIEltYWdlSGFuZGxlLA0KICAgSU4gRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFi bGUNCiAgICkNCiB7DQogICBFRklfU1RBVFVTIFN0YXR1czsNCiAgIFVJTlROICAgICAgU2l6ZTsN CkBAIC0yNTEsODMgKzMyNiwxMDEgQEAgQ3B1SG90cGx1Z0VudHJ5ICgKICAgLy8NCiAgIC8vIEFs bG9jYXRlIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBkZXBlbmQgb24gdGhlIHBvc3NpYmxlIENQ VSBjb3VudC4NCiAgIC8vDQogICBpZiAoUkVUVVJOX0VSUk9SIChTYWZlVWludG5TdWIgKG1DcHVI b3RQbHVnRGF0YS0+QXJyYXlMZW5ndGgsIDEsICZTaXplKSkgfHwNCiAgICAgICBSRVRVUk5fRVJS T1IgKFNhZmVVaW50bk11bHQgKHNpemVvZiAoQVBJQ19JRCksIFNpemUsICZTaXplKSkpIHsNCiAg ICAgU3RhdHVzID0gRUZJX0FCT1JURUQ7DQogICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTog aW52YWxpZCBDUFVfSE9UX1BMVUdfREFUQVxuIiwgX19GVU5DVElPTl9fKSk7DQogICAgIGdvdG8g RmF0YWw7DQogICB9DQogICBTdGF0dXMgPSBnTW1zdC0+TW1BbGxvY2F0ZVBvb2wgKEVmaVJ1bnRp bWVTZXJ2aWNlc0RhdGEsIFNpemUsDQogICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikmbVBs dWdnZWRBcGljSWRzKTsNCiAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCiAgICAgREVCVUcg KChERUJVR19FUlJPUiwgIiVhOiBNbUFsbG9jYXRlUG9vbCgpOiAlclxuIiwgX19GVU5DVElPTl9f LCBTdGF0dXMpKTsNCiAgICAgZ290byBGYXRhbDsNCiAgIH0NCiAgIFN0YXR1cyA9IGdNbXN0LT5N bUFsbG9jYXRlUG9vbCAoRWZpUnVudGltZVNlcnZpY2VzRGF0YSwgU2l6ZSwNCiAgICAgICAgICAg ICAgICAgICAgIChWT0lEICoqKSZtVG9VbnBsdWdBcGljSWRzKTsNCiAgIGlmIChFRklfRVJST1Ig KFN0YXR1cykpIHsNCiAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBNbUFsbG9jYXRlUG9v bCgpOiAlclxuIiwgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsNCiAgICAgZ290byBSZWxlYXNlUGx1 Z2dlZEFwaWNJZHM7DQogICB9DQogDQorICAvLw0KKyAgLy8gQWxsb2NhdGUgdGhlIFBvc3QtU01N IFBlbiBmb3IgaG90LWFkZGVkIENQVXMuDQorICAvLw0KKyAgU3RhdHVzID0gU21iYXNlQWxsb2Nh dGVQb3N0U21tUGVuICgmbVBvc3RTbW1QZW5BZGRyZXNzLA0KKyAgICAgICAgICAgICBTeXN0ZW1U YWJsZS0+Qm9vdFNlcnZpY2VzKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAg Z290byBSZWxlYXNlVG9VbnBsdWdBcGljSWRzOw0KKyAgfQ0KKw0KICAgLy8NCiAgIC8vIFNhbml0 eS1jaGVjayB0aGUgQ1BVIGhvdHBsdWcgaW50ZXJmYWNlLg0KICAgLy8NCiAgIC8vIEJvdGggb2Yg dGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgcGFydCBvZiBRRU1VIDUuMCwgaW50cm9kdWNlZCBw cmltYXJpbHkNCiAgIC8vIGluIGNvbW1pdCByYW5nZSAzZTA4YjJiOWNiNjQuLjNhNjFjOGRiOWQy NToNCiAgIC8vDQogICAvLyAoYSkgdGhlIFFFTVVfQ1BVSFBfQ01EX0dFVF9BUkNIX0lEIGNvbW1h bmQgb2YgdGhlIG1vZGVybiBDUFUgaG90cGx1Zw0KICAgLy8gICAgIGludGVyZmFjZSwNCiAgIC8v DQogICAvLyAoYikgdGhlICJTTVJBTSBhdCBkZWZhdWx0IFNNQkFTRSIgZmVhdHVyZS4NCiAgIC8v DQogICAvLyBGcm9tIHRoZXNlLCAoYikgaXMgcmVzdHJpY3RlZCB0byA1LjArIG1hY2hpbmUgdHlw ZSB2ZXJzaW9ucywgd2hpbGUgKGEpDQogICAvLyBkb2VzIG5vdCBkZXBlbmQgb24gbWFjaGluZSB0 eXBlIHZlcnNpb24uIEJlY2F1c2Ugd2UgZW5zdXJlZCB0aGUgc3RyaWN0ZXINCiAgIC8vIGNvbmRp dGlvbiAoYikgdGhyb3VnaCBQY2RRMzVTbXJhbUF0RGVmYXVsdFNtYmFzZSBhYm92ZSwgdGhlIChh KQ0KICAgLy8gUUVNVV9DUFVIUF9DTURfR0VUX0FSQ0hfSUQgY29tbWFuZCBtdXN0IG5vdyBiZSBh dmFpbGFibGUgdG9vLiBXaGlsZSB3ZQ0KICAgLy8gY2FuJ3QgdmVyaWZ5IHRoZSBwcmVzZW5jZSBv ZiBwcmVjaXNlbHkgdGhhdCBjb21tYW5kLCB3ZSBjYW4gc3RpbGwgdmVyaWZ5DQogICAvLyAoc2Fu aXR5LWNoZWNrKSB0aGF0IHRoZSBtb2Rlcm4gaW50ZXJmYWNlIGlzIGFjdGl2ZSwgYXQgbGVhc3Qu DQogICAvLw0KICAgLy8gQ29uc3VsdCB0aGUgIlR5cGljYWwgdXNlY2FzZXMgfCBEZXRlY3Rpbmcg YW5kIGVuYWJsaW5nIG1vZGVybiBDUFUgaG90cGx1Zw0KICAgLy8gaW50ZXJmYWNlIiBzZWN0aW9u IGluIFFFTVUncyAiZG9jcy9zcGVjcy9hY3BpX2NwdV9ob3RwbHVnLnR4dCIsIG9uIHRoZQ0KICAg Ly8gZm9sbG93aW5nLg0KICAgLy8NCiAgIFFlbXVDcHVocFdyaXRlQ3B1U2VsZWN0b3IgKG1NbUNw dUlvLCAwKTsNCiAgIFFlbXVDcHVocFdyaXRlQ3B1U2VsZWN0b3IgKG1NbUNwdUlvLCAwKTsNCiAg IFFlbXVDcHVocFdyaXRlQ29tbWFuZCAobU1tQ3B1SW8sIFFFTVVfQ1BVSFBfQ01EX0dFVF9QRU5E SU5HKTsNCiAgIGlmIChRZW11Q3B1aHBSZWFkQ29tbWFuZERhdGEyIChtTW1DcHVJbykgIT0gMCkg ew0KICAgICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KICAgICBERUJVRyAoKERFQlVHX0VSUk9S LCAiJWE6IG1vZGVybiBDUFUgaG90cGx1ZyBpbnRlcmZhY2U6ICVyXG4iLA0KICAgICAgIF9fRlVO Q1RJT05fXywgU3RhdHVzKSk7DQotICAgIGdvdG8gUmVsZWFzZVRvVW5wbHVnQXBpY0lkczsNCisg ICAgZ290byBSZWxlYXNlUG9zdFNtbVBlbjsNCiAgIH0NCiANCiAgIC8vDQogICAvLyBSZWdpc3Rl ciB0aGUgaGFuZGxlciBmb3IgdGhlIENQVSBIb3RwbHVnIE1NSS4NCiAgIC8vDQogICBTdGF0dXMg PSBnTW1zdC0+TW1pSGFuZGxlclJlZ2lzdGVyICgNCiAgICAgICAgICAgICAgICAgICAgIENwdUhv dHBsdWdNbWksDQogICAgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgIC8vIEhhbmRs ZXJUeXBlOiByb290IE1NSSBoYW5kbGVyDQogICAgICAgICAgICAgICAgICAgICAmbURpc3BhdGNo SGFuZGxlDQogICAgICAgICAgICAgICAgICAgICApOw0KICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE1taUhhbmRsZXJSZWdpc3Rlcigp OiAlclxuIiwgX19GVU5DVElPTl9fLA0KICAgICAgIFN0YXR1cykpOw0KLSAgICBnb3RvIFJlbGVh c2VUb1VucGx1Z0FwaWNJZHM7DQorICAgIGdvdG8gUmVsZWFzZVBvc3RTbW1QZW47DQogICB9DQog DQorICAvLw0KKyAgLy8gSW5zdGFsbCB0aGUgaGFuZGxlciBmb3IgdGhlIGhvdC1hZGRlZCBDUFVz JyBmaXJzdCBTTUkuDQorICAvLw0KKyAgU21iYXNlSW5zdGFsbEZpcnN0U21pSGFuZGxlciAoKTsN CisNCiAgIHJldHVybiBFRklfU1VDQ0VTUzsNCiANCitSZWxlYXNlUG9zdFNtbVBlbjoNCisgIFNt YmFzZVJlbGVhc2VQb3N0U21tUGVuIChtUG9zdFNtbVBlbkFkZHJlc3MsIFN5c3RlbVRhYmxlLT5C b290U2VydmljZXMpOw0KKyAgbVBvc3RTbW1QZW5BZGRyZXNzID0gMDsNCisNCiBSZWxlYXNlVG9V bnBsdWdBcGljSWRzOg0KICAgZ01tc3QtPk1tRnJlZVBvb2wgKG1Ub1VucGx1Z0FwaWNJZHMpOw0K ICAgbVRvVW5wbHVnQXBpY0lkcyA9IE5VTEw7DQogDQogUmVsZWFzZVBsdWdnZWRBcGljSWRzOg0K ICAgZ01tc3QtPk1tRnJlZVBvb2wgKG1QbHVnZ2VkQXBpY0lkcyk7DQogICBtUGx1Z2dlZEFwaWNJ ZHMgPSBOVUxMOw0KIA0KIEZhdGFsOg0KICAgQVNTRVJUIChGQUxTRSk7DQogICBDcHVEZWFkTG9v cCAoKTsNCiAgIHJldHVybiBTdGF0dXM7DQogfQ0KLS0gCjIuMTkuMS4zLmczMDI0N2FhNWQyMDEK Cgo=