From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.81]) by mx.groups.io with SMTP id smtpd.web12.233.1582755159672580431 for ; Wed, 26 Feb 2020 14:12:39 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=BIpaqr+H; spf=pass (domain: redhat.com, ip: 207.211.31.81, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582755158; 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=P/UyJ9xpfyCZ54TuEyQH8GjQXyK0tkzAZ429iNnOYbc=; b=BIpaqr+HZiwAjgIy85Vn7vDoEEqQf9ixcS3h472Bsc6Ix+IjPei6nrbM4MRuJGna8tzYvT b9QVZEne0ykrBsgVPvB1nGvmDcakQzfAUiBVgq5WTs+CdXB4Sz6uhpymSbTZslaM81DyUo jw4G85lbRcPsID+dogW76ANAK96JnO8= 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-161-4mSbdVDaPjSKG0wKMRU3bg-1; Wed, 26 Feb 2020 17:12:32 -0500 X-MC-Unique: 4mSbdVDaPjSKG0wKMRU3bg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A6A79800D50; Wed, 26 Feb 2020 22:12:31 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-185.ams2.redhat.com [10.36.116.185]) by smtp.corp.redhat.com (Postfix) with ESMTP id EE74E909E9; Wed, 26 Feb 2020 22:12:29 +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 v2 13/16] OvmfPkg/CpuHotplugSmm: complete root MMI handler for CPU hotplug Date: Wed, 26 Feb 2020 23:11:53 +0100 Message-Id: <20200226221156.29589-14-lersek@redhat.com> In-Reply-To: <20200226221156.29589-1-lersek@redhat.com> References: <20200226221156.29589-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 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 ZWsgPGxlcnNla0ByZWRoYXQuY29tPgpBY2tlZC1ieTogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVz aGV1dmVsQGxpbmFyby5vcmc+Ci0tLQoKTm90ZXM6CiAgICB2MjoKICAgIAogICAgLSBQaWNrIHVw IEFyZCdzIEFja2VkLWJ5LCB3aGljaCBpcyBjb25kaXRpb25hbCBvbiBhcHByb3ZhbCBmcm9tIElu dGVsCiAgICAgIHJldmlld2VycyBvbiBDYy4gKEknZCBsaWtlIHRvIHNhdmUgQXJkIHRoZSBjaHVy biBvZiByZS1hY2tpbmcKICAgICAgdW5tb2RpZmllZCBwYXRjaGVzLikKICAgIAogICAgLSByZXBl YXQgYWxsIHRoZSB2MSB0ZXN0cwogICAgCiAgICB2MToKICAgIAogICAgKDEpIEF0IHRoaXMgc3Rh Z2UsIENQVSBob3RwbHVnIHdpdGggU01NIHdvcmtzLgogICAgCiAgICBUZXN0IENQVSB0b3BvbG9n eSAobGlidmlydCBkb21haW4gWE1MIHNuaXBwZXQpOgogICAgCiAgICA+ICAgPHZjcHVzPgogICAg PiAgICAgPHZjcHUgaWQ9JzAnIGVuYWJsZWQ9J3llcycgaG90cGx1Z2dhYmxlPSdubycvPgogICAg PiAgICAgPHZjcHUgaWQ9JzEnIGVuYWJsZWQ9J25vJyBob3RwbHVnZ2FibGU9J3llcycvPgogICAg PiAgICAgPHZjcHUgaWQ9JzInIGVuYWJsZWQ9J3llcycgaG90cGx1Z2dhYmxlPSd5ZXMnLz4KICAg ID4gICAgIDx2Y3B1IGlkPSczJyBlbmFibGVkPSdubycgaG90cGx1Z2dhYmxlPSd5ZXMnLz4KICAg ID4gICA8L3ZjcHVzPgogICAgCiAgICBUaGUgZmlybXdhcmUgbG9ncyB0aGUgZm9sbG93aW5nIGR1 cmluZyBub3JtYWwgYm9vdDoKICAgIAogICAgPiBTbWJhc2VBbGxvY2F0ZVBvc3RTbW1QZW46IFBv c3QtU01NIFBlbiBhdCAweDlGMDAwCiAgICAKICAgIENQVSBob3RwbHVnIGNvbW1hbmQgb24gdGhl IGhvc3Qgc2lkZToKICAgIAogICAgPiB2aXJzaCBzZXR2Y3B1IG92bWYuZmVkb3JhLnEzNSAxIC0t ZW5hYmxlIC0tbGl2ZQogICAgCiAgICBGaXJtd2FyZSBsb2cgaW4gcmVzcG9uc2U6CiAgICAKICAg ID4gUWVtdUNwdWhwQ29sbGVjdEFwaWNJZHM6IEN1cnJlbnRTZWxlY3Rvcj0xOiBpbnNlcnQKICAg ID4gUWVtdUNwdWhwQ29sbGVjdEFwaWNJZHM6IEFwaWNJZD0weDAwMDAwMDAxCiAgICA+IFFlbXVD cHVocENvbGxlY3RBcGljSWRzOiBDdXJyZW50U2VsZWN0b3I9MiBQZW5kaW5nU2VsZWN0b3I9MToK ICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXAtYXJvdW5kCiAgICA+IFFlbXVDcHVo cENvbGxlY3RBcGljSWRzOiBQbHVnZ2VkQ291bnQ9MSBUb1VucGx1Z0NvdW50PTAKICAgID4gQ3B1 SG90cGx1Z01taTogaG90LWFkZGVkIEFQSUMgSUQgMHgwMDAwMDAwMSwgU01CQVNFIDB4N0QwODIw MDAsCiAgICA+ICAgICAgICAgICAgICAgIEVGSV9TTU1fQ1BVX1NFUlZJQ0VfUFJPVE9DT0wgYXNz aWduZWQgbnVtYmVyIDIKICAgIAogICAgUXVlcnkgdGhlIENQVSByZWdpc3RlciBzdGF0ZSBvbiB0 aGUgaG9zdCBzaWRlICh3aXRob3V0IG9ubGluaW5nIHRoZQogICAgaG90LWFkZGVkIENQVSBpbiB0 aGUgT1MganVzdCB5ZXQpOgogICAgCiAgICA+IHZpcnNoIHFlbXUtbW9uaXRvci1jb21tYW5kIG92 bWYuZmVkb3JhLnEzNSAtLWhtcCAnaW5mbyByZWdpc3RlcnMgLWEnCiAgICAKICAgIE91dHB1dCwg Y29uZmlybWluZyBwZW5uZWQgc3RhdHVzIChwZW4gYXQgMHg5RjAwMCk6CiAgICAKICAgID4gQ1BV IzEKICAgID4gRUFYPTAwMDA5ZjAwIEVCWD0wMDAwMDAwMCBFQ1g9MDAwMDAwMDAgRURYPTAwMDAw NjAwCiAgICA+IEVTST0wMDAwMDAwMCBFREk9MDAwMDAwMDAgRUJQPTAwMDAwMDAwIEVTUD0wMDAw MDAwMAogICAgPiBFSVA9MDAwMDAwMGMgRUZMPTAwMDAwMDAyIFstLS0tLS0tXSBDUEw9MCBJST0w IEEyMD0xIFNNTT0wIEhMVD0xCiAgICA+IEVTID0wMDAwIDAwMDAwMDAwIDAwMDBmZmZmIDAwMDA5 MzAwCiAgICA+IENTID05ZjAwIDAwMDlmMDAwIDAwMDBmZmZmIDAwMDA5YjAwCiAgICA+IFNTID0w MDAwIDAwMDAwMDAwIDAwMDBmZmZmIDAwMDA5MzAwCiAgICA+IERTID05ZjAwIDAwMDlmMDAwIDAw MDBmZmZmIDAwMDA5MzAwCiAgICA+IEZTID0wMDAwIDAwMDAwMDAwIDAwMDBmZmZmIDAwMDA5MzAw CiAgICA+IEdTID0wMDAwIDAwMDAwMDAwIDAwMDBmZmZmIDAwMDA5MzAwCiAgICA+IExEVD0wMDAw IDAwMDAwMDAwIDAwMDBmZmZmIDAwMDA4MjAwCiAgICA+IFRSID0wMDAwIDAwMDAwMDAwIDAwMDBm ZmZmIDAwMDA4YjAwCiAgICA+IEdEVD0gICAgIDAwMDAwMDAwIDAwMDBmZmZmCiAgICA+IElEVD0g ICAgIDAwMDAwMDAwIDAwMDBmZmZmCiAgICA+IENSMD02MDAwMDAxMCBDUjI9MDAwMDAwMDAgQ1Iz PTAwMDAwMDAwIENSND0wMDAwMDAwMAogICAgPiBEUjA9MDAwMDAwMDAwMDAwMDAwMCBEUjE9MDAw MDAwMDAwMDAwMDAwMCBEUjI9MDAwMDAwMDAwMDAwMDAwMAogICAgPiBEUjM9MDAwMDAwMDAwMDAw MDAwMAogICAgPiBEUjY9MDAwMDAwMDBmZmZmMGZmMCBEUjc9MDAwMDAwMDAwMDAwMDQwMAogICAg PiBFRkVSPTAwMDAwMDAwMDAwMDAwMDAKICAgID4gRkNXPTAzN2YgRlNXPTAwMDAgW1NUPTBdIEZU Vz0wMCBNWENTUj0wMDAwMWY4MAogICAgPiBGUFIwPTAwMDAwMDAwMDAwMDAwMDAgMDAwMCBGUFIx PTAwMDAwMDAwMDAwMDAwMDAgMDAwMAogICAgPiBGUFIyPTAwMDAwMDAwMDAwMDAwMDAgMDAwMCBG UFIzPTAwMDAwMDAwMDAwMDAwMDAgMDAwMAogICAgPiBGUFI0PTAwMDAwMDAwMDAwMDAwMDAgMDAw MCBGUFI1PTAwMDAwMDAwMDAwMDAwMDAgMDAwMAogICAgPiBGUFI2PTAwMDAwMDAwMDAwMDAwMDAg MDAwMCBGUFI3PTAwMDAwMDAwMDAwMDAwMDAgMDAwMAogICAgPiBYTU0wMD0wMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMAogICAgPiBYTU0wMT0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMAogICAgPiBYTU0wMj0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAg PiBYTU0wMz0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgPiBYTU0wND0wMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgPiBYTU0wNT0wMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMAogICAgPiBYTU0wNj0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMAogICAgPiBYTU0wNz0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgCiAg ICBBZGRpdGlvbmFsbHksIHRoZSBkbWVzZyBpbiB0aGUgTGludXggZ3Vlc3QgY29udGFpbnM6CiAg ICAKICAgID4gQ1BVMiBoYXMgYmVlbiBob3QtYWRkZWQKICAgIAogICAgV2UgY2FuIG5vdyBib290 IHRoZSBob3QtYWRkYWQgQ1BVIGluIHRoZSBMaW51eCBndWVzdDoKICAgIAogICAgPiBlY2hvIDEg PiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUyL29ubGluZQogICAgCiAgICBEbWVzZyBpbiBy ZXNwb25zZToKICAgIAogICAgPiBzbXBib290OiBCb290aW5nIE5vZGUgMCBQcm9jZXNzb3IgMiBB UElDIDB4MQogICAgPiBrdm0tY2xvY2s6IGNwdSAyLCBtc3IgNmUwMTA4MSwgc2Vjb25kYXJ5IGNw dSBjbG9jawogICAgPiBLVk0gc2V0dXAgYXN5bmMgUEYgZm9yIGNwdSAyCiAgICA+IGt2bS1zdGVh bHRpbWU6IGNwdSAyLCBtc3IgN2I1MmEwNDAKICAgID4gV2lsbCBvbmxpbmUgYW5kIGluaXQgaG90 cGx1Z2dlZCBDUFU6IDIKICAgIAogICAgU3RpbGwgaW4gdGhlIGd1ZXN0LCBjYWxsIFVFRkkgdmFy aWFibGUgc2VydmljZXMgb24gZWFjaCBDUFUgKGluY2x1ZGluZwogICAgdGhlIGhvdC1hZGRlZCBv bmUpLCBwZXIKICAgIDxodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL3RpYW5vY29yZS5naXRo dWIuaW8vd2lraS9UZXN0aW5nLVNNTS13aXRoLVFFTVUsLUtWTS1hbmQtbGlidmlydCN1ZWZpLXZh cmlhYmxlLWFjY2Vzcy10ZXN0PjoKICAgIAogICAgPiB0YXNrc2V0IC1jIDAgZWZpYm9vdG1ncgog ICAgPiB0YXNrc2V0IC1jIDEgZWZpYm9vdG1ncgogICAgPiB0YXNrc2V0IC1jIDIgZWZpYm9vdG1n cgogICAgCiAgICBObyBkZWxheXMsIG5vIGluc3RhYmlsaXR5LgogICAgCiAgICBIYXZpbmcgYm9v dGVkIHRoZSBob3QtYWRkZWQgQ1BVIGluIHRoZSBMaW51eCBndWVzdCwgdGhlIGhvc3Qtc2lkZQog ICAgY29tbWFuZAogICAgCiAgICA+IHZpcnNoIHFlbXUtbW9uaXRvci1jb21tYW5kIG92bWYuZmVk b3JhLnEzNSAtLWhtcCAnaW5mbyByZWdpc3RlcnMgLWEnCiAgICAKICAgIG5vdyBzaG93czoKICAg IAogICAgPiBDUFUjMQogICAgPiBSQVg9ZmZmZmZmZmZiMzllNGI1MCBSQlg9MDAwMDAwMDAwMDAw MDAwMiBSQ1g9MDAwMDAwMDAwMDAwMDAwMAogICAgPiBSRFg9MDAwMDAwMDAwMDAwMDAwMgogICAg PiBSU0k9MDAwMDAwMDAwMDAwMDAwMiBSREk9ZmZmZjkzMmNiYjUxYzUyMCBSQlA9MDAwMDAwMDAw MDAwMDAwMgogICAgPiBSU1A9ZmZmZmJjNWJjMDA4M2ViMAogICAgPiBSOCA9MDAwMDAwY2Q0MmU0 ZGZmYiBSOSA9MDAwMDAwNWEyMjUwMjU5OSBSMTA9MDAwMDAwNWEyMjUwMjU5OQogICAgPiBSMTE9 MDAwMDAwNWEyMjUwMjU5OQogICAgPiBSMTI9ZmZmZjkzMmNiYWUyNWRjMCBSMTM9MDAwMDAwMDAw MDAwMDAwMCBSMTQ9MDAwMDAwMDAwMDAwMDAwMAogICAgPiBSMTU9ZmZmZjkzMmNiYWUyNWRjMAog ICAgPiBSSVA9ZmZmZmZmZmZiMzllNGYyZSBSRkw9MDAwMDAyNDYgWy0tLVotUC1dIENQTD0wIElJ PTAgQTIwPTEgU01NPTAKICAgID4gSExUPTEKICAgID4gRVMgPTAwMDAgMDAwMDAwMDAwMDAwMDAw MCBmZmZmZmZmZiAwMGMwMDAwMAogICAgPiBDUyA9MDAxMCAwMDAwMDAwMDAwMDAwMDAwIGZmZmZm ZmZmIDAwYTA5YjAwIERQTD0wIENTNjQgWy1SQV0KICAgID4gU1MgPTAwMTggMDAwMDAwMDAwMDAw MDAwMCBmZmZmZmZmZiAwMGMwOTMwMCBEUEw9MCBEUyAgIFstV0FdCiAgICA+IERTID0wMDAwIDAw MDAwMDAwMDAwMDAwMDAgZmZmZmZmZmYgMDBjMDAwMDAKICAgID4gRlMgPTAwMDAgMDAwMDAwMDAw MDAwMDAwMCBmZmZmZmZmZiAwMGMwMDAwMAogICAgPiBHUyA9MDAwMCBmZmZmOTMyY2JiNTAwMDAw IGZmZmZmZmZmIDAwYzAwMDAwCiAgICA+IExEVD0wMDAwIDAwMDAwMDAwMDAwMDAwMDAgMDAwZmZm ZmYgMDAwMDAwMDAKICAgID4gVFIgPTAwNDAgZmZmZmZlMDAwMDA2OTAwMCAwMDAwMjA2ZiAwMDAw OGIwMCBEUEw9MCBUU1M2NC1idXN5CiAgICA+IEdEVD0gICAgIGZmZmZmZTAwMDAwNjcwMDAgMDAw MDAwN2YKICAgID4gSURUPSAgICAgZmZmZmZlMDAwMDAwMDAwMCAwMDAwMGZmZgogICAgPiBDUjA9 ODAwNTAwMzMgQ1IyPTAwMDA3ZjU0ODkzY2JmMjAgQ1IzPTAwMDAwMDAwNzg0MTgwMDEgQ1I0PTAw MTYwNmUwCiAgICA+IERSMD0wMDAwMDAwMDAwMDAwMDAwIERSMT0wMDAwMDAwMDAwMDAwMDAwIERS Mj0wMDAwMDAwMDAwMDAwMDAwCiAgICA+IERSMz0wMDAwMDAwMDAwMDAwMDAwCiAgICA+IERSNj0w MDAwMDAwMGZmZmYwZmYwIERSNz0wMDAwMDAwMDAwMDAwNDAwCiAgICA+IEVGRVI9MDAwMDAwMDAw MDAwMGQwMQogICAgPiBGQ1c9MDM3ZiBGU1c9MDAwMCBbU1Q9MF0gRlRXPTAwIE1YQ1NSPTAwMDAx ZmEwCiAgICA+IEZQUjA9MDAwMDAwMDAwMDAwMDAwMCAwMDAwIEZQUjE9MDAwMDAwMDAwMDAwMDAw MCAwMDAwCiAgICA+IEZQUjI9MDAwMDAwMDAwMDAwMDAwMCAwMDAwIEZQUjM9MDAwMDAwMDAwMDAw MDAwMCAwMDAwCiAgICA+IEZQUjQ9MDAwMDAwMDAwMDAwMDAwMCAwMDAwIEZQUjU9MDAwMDAwMDAw MDAwMDAwMCAwMDAwCiAgICA+IEZQUjY9MDAwMDAwMDAwMDAwMDAwMCAwMDAwIEZQUjc9MDAwMDAw MDAwMDAwMDAwMCAwMDAwCiAgICA+IFhNTTAwPTAwMDAwMDAwMDAwMDAwMDA0MGVkMmJlMDAwMDAw MDAwCiAgICA+IFhNTTAxPTAwMDAwMDAwMDAwMDAwMDA0MDRkZGYxYTlmYmU3NmM5CiAgICA+IFhN TTAyPTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTAzPTAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTA0PTAwMDAwMDAwMDAwMDAwMDAzZmYw MDAwMDAwMDAwMDAwCiAgICA+IFhNTTA1PTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw CiAgICA+IFhNTTA2PTAwMDAwMDAwMDAwMDAwMDA0MDc4MDAyZDBhYzQ4N2I3CiAgICA+IFhNTTA3 PTAwMDAwMDAwMDAwMDAwMDA0MDRkZGYxYTlmYmU3NmM5CiAgICA+IFhNTTA4PTcyMjIzZDQ0NDk1 NTQxMjAyMjc0NmY2ZjcyMjIzZDQ0CiAgICA+IFhNTTA5PTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwCiAgICA+IFhNTTEwPTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAg ICA+IFhNTTExPTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTEyPTAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTEzPTAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwCiAgICA+IFhNTTE0PTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwCiAgICA+IFhNTTE1PTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICAK ICAgIEhvdHBsdWcgYW5vdGhlciBDUFU6CiAgICAKICAgID4gdmlyc2ggc2V0dmNwdSBvdm1mLmZl ZG9yYS5xMzUgMyAtLWVuYWJsZSAtLWxpdmUKICAgIAogICAgRmlybXdhcmUgbG9nIGluIHJlc3Bv bnNlOgogICAgCiAgICA+IFFlbXVDcHVocENvbGxlY3RBcGljSWRzOiBDdXJyZW50U2VsZWN0b3I9 MzogaW5zZXJ0CiAgICA+IFFlbXVDcHVocENvbGxlY3RBcGljSWRzOiBBcGljSWQ9MHgwMDAwMDAw MwogICAgPiBRZW11Q3B1aHBDb2xsZWN0QXBpY0lkczogUGx1Z2dlZENvdW50PTEgVG9VbnBsdWdD b3VudD0wCiAgICA+IENwdUhvdHBsdWdNbWk6IGhvdC1hZGRlZCBBUElDIElEIDB4MDAwMDAwMDMs IFNNQkFTRSAweDdEMDg0MDAwLAogICAgPiAgICAgICAgICAgICAgICBFRklfU01NX0NQVV9TRVJW SUNFX1BST1RPQ09MIGFzc2lnbmVkIG51bWJlciAzCiAgICAKICAgIE9ubGluZSB0aGUgaG90LWFk ZGVkIENQVSBpbiB0aGUgTGludXggZ3Vlc3Q6CiAgICAKICAgID4gZWNobyAxID4gL3N5cy9kZXZp Y2VzL3N5c3RlbS9jcHUvY3B1My9vbmxpbmUKICAgIAogICAgR3Vlc3QgZG1lc2cgaW4gcmVzcG9u c2U6CiAgICAKICAgID4gc21wYm9vdDogQm9vdGluZyBOb2RlIDAgUHJvY2Vzc29yIDMgQVBJQyAw eDMKICAgID4ga3ZtLWNsb2NrOiBjcHUgMywgbXNyIDZlMDEwYzEsIHNlY29uZGFyeSBjcHUgY2xv Y2sKICAgID4gS1ZNIHNldHVwIGFzeW5jIFBGIGZvciBjcHUgMwogICAgPiBrdm0tc3RlYWx0aW1l OiBjcHUgMywgbXNyIDdiNWFhMDQwCiAgICA+IFdpbGwgb25saW5lIGFuZCBpbml0IGhvdHBsdWdn ZWQgQ1BVOiAzCiAgICAKICAgICgyKSBBbHRlcm5hdGl2ZSBvcmRlciBvZiBhY3Rpb25zOgogICAg CiAgICBIb3RwbHVnIGJvdGggQ1BVcyBmaXJzdCwgb24gdGhlIGhvc3Q6CiAgICAKICAgID4gdmly c2ggc2V0dmNwdSBvdm1mLmZlZG9yYS5xMzUgMSAtLWVuYWJsZSAtLWxpdmUKICAgID4gdmlyc2gg c2V0dmNwdSBvdm1mLmZlZG9yYS5xMzUgMyAtLWVuYWJsZSAtLWxpdmUKICAgIAogICAgKnRoZW4q IG9ubGluZSBib3RoIGhvdC1hZGRlZCBDUFVzIGluIHRoZSBMaW51eCBndWVzdDoKICAgIAogICAg PiBlY2hvIDEgPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUyL29ubGluZQogICAgPiBlY2hv IDEgPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUzL29ubGluZQogICAgCiAgICBUaGUgb25s eSBkaWZmZXJlbmNlIGhlcmUgaXMgdGhhdCB0aGUgYnJvYWRjYXN0IFNNSSBmb3IgdGhlIHNlY29u ZAogICAgaG90cGx1ZyBmaW5kcyB0aGUgZmlyc3QgaG90cGx1Z2dlZCBDUFUgc3RpbGwgaW4gdGhl IHBlbiAoaS5lLiwgbm90CiAgICBvbmxpbmVkIGJ5IExpbnV4KS4gVGhlcmUgaXMgbm8gZGlmZmVy ZW5jZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW9yIChiZXlvbmQKICAgIHRoZSBtYXRjaGluZyBsb2cg bWVzc2FnZXMgYW5kIHJlZ2lzdGVyIGR1bXBzKS4KICAgIAogICAgKDMpIFdoYXQgZG9lc24ndCB3 b3JrIHlldDoKICAgIAogICAgLSBDUFUgaG90cGx1ZyB3LyBTTU0gaW4gU0VWIGd1ZXN0cy4KICAg IAogICAgICBTZWUgPGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MTUxMiNjMTQ+LgogICAgCiAgICAgIChOQi4gSSdtIHVuY2VydGFpbiBpZiBDUFUgaG90cGx1 ZyB3b3JrcyBpbiBTRVYgZ3Vlc3RzIHdpdGhvdXQKICAgICAgU01NX1JFUVVJUkUgdG8gYmVnaW4g d2l0aC4pCiAgICAKICAgIC0gUzMgcmVzdW1lIHcvIFNNTSBhZnRlciBob3QtYWRkaW5nIGEgQ1BV LgogICAgCiAgICAgIFRoZSByZW1haW5pbmcgcGF0Y2hlcyBpbiB0aGUgc2VyaWVzIHRha2UgY2Fy ZSBvZiB0aGF0LiAoT25seSBpbiB0aGUKICAgICAgYWJzZW5jZSBvZiBTRVY7IFNFVitTMyBsb29r cyBicm9rZW4gcmVnYXJkbGVzcyBvZiBob3RwbHVnLikKICAgIAogICAgLSBDUFUgaG90LXVucGx1 ZyB3LyBTTU0uCiAgICAKICAgICAgTmVlZHMgc2VwYXJhdGUgaW52ZXN0aWdhdGlvbi4gRUZJX1NN TV9SRU1PVkVfUFJPQ0VTU09SIGluCiAgICAgICJVZWZpQ3B1UGtnL0luY2x1ZGUvUHJvdG9jb2wv U21tQ3B1U2VydmljZS5oIiBpcyBkb2N1bWVudGVkIGFzCiAgICAgIGZvbGxvd3M6ICJBZnRlciB0 aGlzIEFQSSBpcyBjYWxsZWQsIHRoZSByZW1vdmVkIHByb2Nlc3NvciBtdXN0IG5vdAogICAgICBy ZXNwb25kIHRvIFNNSXMgaW4gdGhlIGNvaGVyZW5jZSBkb21haW4iLiBUaGlzIGNvdWxkIHJhaXNl IGNoYWxsZW5naW5nCiAgICAgIG9yZGVyaW5nIHF1ZXN0aW9ucyBiZXR3ZWVuIFFFTVUsIHRoZSBm aXJtd2FyZSwgYW5kIHRoZSBPUy4KCiBPdm1mUGtnL0NwdUhvdHBsdWdTbW0vQ3B1SG90cGx1Zy5j IHwgOTcgKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA5NSBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9D cHVIb3RwbHVnLmMgYi9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0vQ3B1SG90cGx1Zy5jCmluZGV4IDQy ZTAyM2NiODVjMC4uMjBlNmJlYzA0ZjQxIDEwMDY0NAotLS0gYS9Pdm1mUGtnL0NwdUhvdHBsdWdT bW0vQ3B1SG90cGx1Zy5jCisrKyBiL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9DcHVIb3RwbHVnLmMK QEAgLTEsNzYgKzEsODIgQEAKIC8qKiBAZmlsZQ0KICAgUm9vdCBTTUkgaGFuZGxlciBmb3IgVkNQ VSBob3RwbHVnIFNNSXMuDQogDQogICBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZCBIYXQsIEluYy4N CiANCiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQogKiov DQogDQogI2luY2x1ZGUgPENwdUhvdFBsdWdEYXRhLmg+ICAgICAgICAgICAgICAgICAgLy8gQ1BV X0hPVF9QTFVHX0RBVEENCiAjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9RMzVNY2hJY2g5Lmg+ ICAgICAvLyBJQ0g5X0FQTV9DTlQNCiAjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9RZW11Q3B1 SG90cGx1Zy5oPiAvLyBRRU1VX0NQVUhQX0NNRF9HRVRfUEVORElORw0KICNpbmNsdWRlIDxMaWJy YXJ5L0Jhc2VMaWIuaD4gICAgICAgICAgICAgICAgIC8vIENwdURlYWRMb29wKCkNCiAjaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPiAgICAgICAgICAgICAgICAvLyBBU1NFUlQoKQ0KICNpbmNs dWRlIDxMaWJyYXJ5L01tU2VydmljZXNUYWJsZUxpYi5oPiAgICAgIC8vIGdNbXN0DQogI2luY2x1 ZGUgPExpYnJhcnkvUGNkTGliLmg+ICAgICAgICAgICAgICAgICAgLy8gUGNkR2V0Qm9vbCgpDQog I2luY2x1ZGUgPExpYnJhcnkvU2FmZUludExpYi5oPiAgICAgICAgICAgICAgLy8gU2FmZVVpbnRu U3ViKCkNCiAjaW5jbHVkZSA8UHJvdG9jb2wvTW1DcHVJby5oPiAgICAgICAgICAgICAgICAvLyBF RklfTU1fQ1BVX0lPX1BST1RPQ09MDQogI2luY2x1ZGUgPFByb3RvY29sL1NtbUNwdVNlcnZpY2Uu aD4gICAgICAgICAgLy8gRUZJX1NNTV9DUFVfU0VSVklDRV9QUk9UT0NPTA0KICNpbmNsdWRlIDxV ZWZpL1VlZmlCYXNlVHlwZS5oPiAgICAgICAgICAgICAgIC8vIEVGSV9TVEFUVVMNCiANCiAjaW5j bHVkZSAiQXBpY0lkLmgiICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUElDX0lEDQogI2lu Y2x1ZGUgIlFlbXVDcHVocC5oIiAgICAgICAgICAgICAgICAgICAgICAgLy8gUWVtdUNwdWhwV3Jp dGVDcHVTZWxlY3RvcigpDQorI2luY2x1ZGUgIlNtYmFzZS5oIiAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gU21iYXNlQWxsb2NhdGVQb3N0U21tUGVuKCkNCiANCiAvLw0KIC8vIFdlIHVzZSB0 aGlzIHByb3RvY29sIGZvciBhY2Nlc3NpbmcgSU8gUG9ydHMuDQogLy8NCiBTVEFUSUMgRUZJX01N X0NQVV9JT19QUk9UT0NPTCAqbU1tQ3B1SW87DQogLy8NCiAvLyBUaGUgZm9sbG93aW5nIHByb3Rv Y29sIGlzIHVzZWQgdG8gcmVwb3J0IHRoZSBhZGRpdGlvbiBvciByZW1vdmFsIG9mIGEgQ1BVIHRv DQogLy8gdGhlIFNNTSBDUFUgZHJpdmVyIChQaVNtbUNwdUR4ZVNtbSkuDQogLy8NCiBTVEFUSUMg RUZJX1NNTV9DUFVfU0VSVklDRV9QUk9UT0NPTCAqbU1tQ3B1U2VydmljZTsNCiAvLw0KIC8vIFRo aXMgc3RydWN0dXJlIGlzIGEgY29tbXVuaWNhdGlvbiBzaWRlLWNoYW5uZWwgYmV0d2VlbiB0aGUN CiAvLyBFRklfU01NX0NQVV9TRVJWSUNFX1BST1RPQ09MIGNvbnN1bWVyIChpLmUuLCB0aGlzIGRy aXZlcikgYW5kIHByb3ZpZGVyDQogLy8gKGkuZS4sIFBpU21tQ3B1RHhlU21tKS4NCiAvLw0KIFNU QVRJQyBDUFVfSE9UX1BMVUdfREFUQSAqbUNwdUhvdFBsdWdEYXRhOw0KIC8vDQogLy8gU01SQU0g YXJyYXlzIGZvciBmZXRjaGluZyB0aGUgQVBJQyBJRHMgb2YgcHJvY2Vzc29ycyB3aXRoIHBlbmRp bmcgZXZlbnRzIChvZg0KIC8vIGtub3duIGV2ZW50IHR5cGVzKSwgZm9yIHRoZSB0aW1lIG9mIGp1 c3Qgb25lIE1NSS4NCiAvLw0KIC8vIFRoZSBsaWZldGltZXMgb2YgdGhlc2UgYXJyYXlzIG1hdGNo IHRoYXQgb2YgdGhpcyBkcml2ZXIgb25seSBiZWNhdXNlIHdlDQogLy8gZG9uJ3Qgd2FudCB0byBh bGxvY2F0ZSBTTVJBTSBhdCBPUyBydW50aW1lLCBhbmQgcG90ZW50aWFsbHkgZmFpbCAob3INCiAv LyBmcmFnbWVudCB0aGUgU01SQU0gbWFwKS4NCiAvLw0KIC8vIFRoZXNlIGFycmF5cyBwcm92aWRl IHJvb20gZm9yICgicG9zc2libGUgQ1BVIGNvdW50IiBtaW51cyBvbmUpIEFQSUMgSURzDQogLy8g ZWFjaCwgYXMgd2UgZG9uJ3QgZXhwZWN0IGV2ZXJ5IHBvc3NpYmxlIENQVSB0byBhcHBlYXIsIG9y IGRpc2FwcGVhciwgaW4gYQ0KIC8vIHNpbmdsZSBNTUkuIFRoZSBudW1iZXJzIG9mIHVzZWQgKHBv cHVsYXRlZCkgZWxlbWVudHMgaW4gdGhlIGFycmF5cyBhcmUNCiAvLyBkZXRlcm1pbmVkIG9uIGV2 ZXJ5IE1NSSBzZXBhcmF0ZWx5Lg0KIC8vDQogU1RBVElDIEFQSUNfSUQgKm1QbHVnZ2VkQXBpY0lk czsNCiBTVEFUSUMgQVBJQ19JRCAqbVRvVW5wbHVnQXBpY0lkczsNCiAvLw0KKy8vIEFkZHJlc3Mg b2YgdGhlIG5vbi1TTVJBTSByZXNlcnZlZCBtZW1vcnkgcGFnZSB0aGF0IGNvbnRhaW5zIHRoZSBQ b3N0LVNNTSBQZW4NCisvLyBmb3IgaG90LWFkZGVkIENQVXMuDQorLy8NCitTVEFUSUMgVUlOVDMy IG1Qb3N0U21tUGVuQWRkcmVzczsNCisvLw0KIC8vIFJlcHJlc2VudHMgdGhlIHJlZ2lzdHJhdGlv biBvZiB0aGUgQ1BVIEhvdHBsdWcgTU1JIGhhbmRsZXIuDQogLy8NCiBTVEFUSUMgRUZJX0hBTkRM RSBtRGlzcGF0Y2hIYW5kbGU7DQogDQogDQogLyoqDQogICBDUFUgSG90cGx1ZyBNTUkgaGFuZGxl ciBmdW5jdGlvbi4NCiANCiAgIFRoaXMgaXMgYSByb290IE1NSSBoYW5kbGVyLg0KIA0KICAgQHBh cmFtW2luXSBEaXNwYXRjaEhhbmRsZSAgICAgIFRoZSB1bmlxdWUgaGFuZGxlIGFzc2lnbmVkIHRv IHRoaXMgaGFuZGxlciBieQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9N TV9TWVNURU1fVEFCTEUuTW1pSGFuZGxlclJlZ2lzdGVyKCkuDQogDQogICBAcGFyYW1baW5dIENv bnRleHQgICAgICAgICAgICAgQ29udGV4dCBwYXNzZWQgaW4gYnkNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFRklfTU1fU1lTVEVNX1RBQkxFLk1taU1hbmFnZSgpLiBEdWUgdG8N CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcHVIb3RwbHVnTW1pKCkgYmVpbmcg YSByb290IE1NSSBoYW5kbGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv bnRleHQgaXMgQVNTRVJUKCllZCB0byBiZSBOVUxMLg0KIA0KICAgQHBhcmFtW2luLG91dF0gQ29t bUJ1ZmZlciAgICAgIElnbm9yZWQsIGR1ZSB0byBDcHVIb3RwbHVnTW1pKCkgYmVpbmcgYSByb290 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTU1JIGhhbmRsZXIuDQogDQogICBA cGFyYW1baW4sb3V0XSBDb21tQnVmZmVyU2l6ZSAgSWdub3JlZCwgZHVlIHRvIENwdUhvdHBsdWdN bWkoKSBiZWluZyBhIHJvb3QNCkBAIC05Nyw0NCArMTAzLDQ2IEBAIFNUQVRJQyBFRklfSEFORExF IG1EaXNwYXRjaEhhbmRsZTsKIA0KICAgQHJldHZhbCBFRklfV0FSTl9JTlRFUlJVUFRfU09VUkNF X1BFTkRJTkcgICBUaGUgTU1JIHNvdXJjZSBpcyBzdGlsbCBwZW5kaW5nLA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgaGFuZGxlcnMgc2hv dWxkIHN0aWxsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJlIGNhbGxlZC4NCiANCiAgIEByZXR2YWwgRUZJX0lOVEVSUlVQVF9QRU5ESU5HICAgICAgICAg ICAgICAgVGhlIE1NSSBzb3VyY2UgY291bGQgbm90IGJlDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWVzY2VkLg0KICoqLw0KIFNUQVRJQw0KIEVGSV9T VEFUVVMNCiBFRklBUEkNCiBDcHVIb3RwbHVnTW1pICgNCiAgIElOIEVGSV9IQU5ETEUgRGlzcGF0 Y2hIYW5kbGUsDQogICBJTiBDT05TVCBWT0lEICpDb250ZXh0ICAgICAgICBPUFRJT05BTCwNCiAg IElOIE9VVCBWT0lEICAgKkNvbW1CdWZmZXIgICAgIE9QVElPTkFMLA0KICAgSU4gT1VUIFVJTlRO ICAqQ29tbUJ1ZmZlclNpemUgT1BUSU9OQUwNCiAgICkNCiB7DQogICBFRklfU1RBVFVTIFN0YXR1 czsNCiAgIFVJTlQ4ICAgICAgQXBtQ29udHJvbDsNCiAgIFVJTlQzMiAgICAgUGx1Z2dlZENvdW50 Ow0KICAgVUlOVDMyICAgICBUb1VucGx1Z0NvdW50Ow0KKyAgVUlOVDMyICAgICBQbHVnZ2VkSWR4 Ow0KKyAgVUlOVDMyICAgICBOZXdTbG90Ow0KIA0KICAgLy8NCiAgIC8vIEFzc2VydCB0aGF0IHdl IGFyZSBlbnRlcmluZyB0aGlzIGZ1bmN0aW9uIGR1ZSB0byBvdXIgcm9vdCBNTUkgaGFuZGxlcg0K ICAgLy8gcmVnaXN0cmF0aW9uLg0KICAgLy8NCiAgIEFTU0VSVCAoRGlzcGF0Y2hIYW5kbGUgPT0g bURpc3BhdGNoSGFuZGxlKTsNCiAgIC8vDQogICAvLyBXaGVuIE1taU1hbmFnZSgpIGlzIGludm9r ZWQgdG8gcHJvY2VzcyByb290IE1NSSBoYW5kbGVycywgdGhlIGNhbGxlciAodGhlDQogICAvLyBN TSBDb3JlKSBpcyBleHBlY3RlZCB0byBwYXNzIGluIGEgTlVMTCBDb250ZXh0LiBNbWlNYW5hZ2Uo KSB0aGVuIHBhc3Nlcw0KICAgLy8gdGhlIHNhbWUgTlVMTCBDb250ZXh0IHRvIGluZGl2aWR1YWwg aGFuZGxlcnMuDQogICAvLw0KICAgQVNTRVJUIChDb250ZXh0ID09IE5VTEwpOw0KICAgLy8NCiAg IC8vIFJlYWQgdGhlIE1NSSBjb21tYW5kIHZhbHVlIGZyb20gdGhlIEFQTSBDb250cm9sIFBvcnQs IHRvIHNlZSBpZiB0aGlzIGlzIGFuDQogICAvLyBNTUkgd2Ugc2hvdWxkIGNhcmUgYWJvdXQuDQog ICAvLw0KICAgU3RhdHVzID0gbU1tQ3B1SW8tPklvLlJlYWQgKG1NbUNwdUlvLCBNTV9JT19VSU5U OCwgSUNIOV9BUE1fQ05ULCAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgJkFwbUNvbnRy b2wpOw0KICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KICAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiJWE6IGZhaWxlZCB0byByZWFkIElDSDlfQVBNX0NOVDogJXJcbiIsIF9fRlVOQ1RJT05f XywNCiAgICAgICBTdGF0dXMpKTsNCiAgICAgLy8NCkBAIC0xNTIsNDkgKzE2MCwxMTYgQEAgQ3B1 SG90cGx1Z01taSAoCiANCiAgIC8vDQogICAvLyBDb2xsZWN0IHRoZSBDUFVzIHdpdGggcGVuZGlu ZyBldmVudHMuDQogICAvLw0KICAgU3RhdHVzID0gUWVtdUNwdWhwQ29sbGVjdEFwaWNJZHMgKA0K ICAgICAgICAgICAgICBtTW1DcHVJbywNCiAgICAgICAgICAgICAgbUNwdUhvdFBsdWdEYXRhLT5B cnJheUxlbmd0aCwgICAgIC8vIFBvc3NpYmxlQ3B1Q291bnQNCiAgICAgICAgICAgICAgbUNwdUhv dFBsdWdEYXRhLT5BcnJheUxlbmd0aCAtIDEsIC8vIEFwaWNJZENvdW50DQogICAgICAgICAgICAg IG1QbHVnZ2VkQXBpY0lkcywNCiAgICAgICAgICAgICAgJlBsdWdnZWRDb3VudCwNCiAgICAgICAg ICAgICAgbVRvVW5wbHVnQXBpY0lkcywNCiAgICAgICAgICAgICAgJlRvVW5wbHVnQ291bnQNCiAg ICAgICAgICAgICAgKTsNCiAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCiAgICAgZ290byBG YXRhbDsNCiAgIH0NCiAgIGlmIChUb1VucGx1Z0NvdW50ID4gMCkgew0KICAgICBERUJVRyAoKERF QlVHX0VSUk9SLCAiJWE6IGhvdC11bnBsdWcgaXMgbm90IHN1cHBvcnRlZCB5ZXRcbiIsDQogICAg ICAgX19GVU5DVElPTl9fKSk7DQogICAgIGdvdG8gRmF0YWw7DQogICB9DQogDQorICAvLw0KKyAg Ly8gUHJvY2VzcyBob3QtYWRkZWQgQ1BVcy4NCisgIC8vDQorICAvLyBUaGUgUG9zdC1TTU0gUGVu IG5lZWQgbm90IGJlIHJlaW5zdGFsbGVkIG11bHRpcGxlIHRpbWVzIHdpdGhpbiBhIHNpbmdsZQ0K KyAgLy8gcm9vdCBNTUkgaGFuZGxpbmcuIEV2ZW4gcmVpbnN0YWxsaW5nIG9uY2UgcGVyIHJvb3Qg TU1JIGlzIG9ubHkgcHJ1ZGVuY2U7DQorICAvLyBpbiB0aGVvcnkgaW5zdGFsbGluZyB0aGUgcGVu IGluIHRoZSBkcml2ZXIncyBlbnRyeSBwb2ludCBmdW5jdGlvbiBzaG91bGQNCisgIC8vIHN1ZmZp Y2UuDQorICAvLw0KKyAgU21iYXNlUmVpbnN0YWxsUG9zdFNtbVBlbiAobVBvc3RTbW1QZW5BZGRy ZXNzKTsNCisNCisgIFBsdWdnZWRJZHggPSAwOw0KKyAgTmV3U2xvdCA9IDA7DQorICB3aGlsZSAo UGx1Z2dlZElkeCA8IFBsdWdnZWRDb3VudCkgew0KKyAgICBBUElDX0lEIE5ld0FwaWNJZDsNCisg ICAgVUlOVE4gICBOZXdQcm9jZXNzb3JOdW1iZXJCeVByb3RvY29sOw0KKw0KKyAgICBOZXdBcGlj SWQgPSBtUGx1Z2dlZEFwaWNJZHNbUGx1Z2dlZElkeF07DQorICAgIC8vDQorICAgIC8vIEZpbmQg dGhlIGZpcnN0IGVtcHR5IHNsb3QgaW4gQ1BVX0hPVF9QTFVHX0RBVEEuDQorICAgIC8vDQorICAg IHdoaWxlIChOZXdTbG90IDwgbUNwdUhvdFBsdWdEYXRhLT5BcnJheUxlbmd0aCAmJg0KKyAgICAg ICAgICAgbUNwdUhvdFBsdWdEYXRhLT5BcGljSWRbTmV3U2xvdF0gIT0gTUFYX1VJTlQ2NCkgew0K KyAgICAgIE5ld1Nsb3QrKzsNCisgICAgfQ0KKyAgICBpZiAoTmV3U2xvdCA9PSBtQ3B1SG90UGx1 Z0RhdGEtPkFycmF5TGVuZ3RoKSB7DQorICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBu byByb29tIGZvciBBUElDIElEICIgRk1UX0FQSUNfSUQgIlxuIiwNCisgICAgICAgIF9fRlVOQ1RJ T05fXywgTmV3QXBpY0lkKSk7DQorICAgICAgZ290byBGYXRhbDsNCisgICAgfQ0KKw0KKyAgICAv Lw0KKyAgICAvLyBTdG9yZSB0aGUgQVBJQyBJRCBvZiB0aGUgbmV3IHByb2Nlc3NvciB0byB0aGUg c2xvdC4NCisgICAgLy8NCisgICAgbUNwdUhvdFBsdWdEYXRhLT5BcGljSWRbTmV3U2xvdF0gPSBO ZXdBcGljSWQ7DQorDQorICAgIC8vDQorICAgIC8vIFJlbG9jYXRlIHRoZSBTTUJBU0Ugb2YgdGhl IG5ldyBDUFUuDQorICAgIC8vDQorICAgIFN0YXR1cyA9IFNtYmFzZVJlbG9jYXRlIChOZXdBcGlj SWQsIG1DcHVIb3RQbHVnRGF0YS0+U21CYXNlW05ld1Nsb3RdLA0KKyAgICAgICAgICAgICAgIG1Q b3N0U21tUGVuQWRkcmVzcyk7DQorICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAg ICBnb3RvIFJldm9rZU5ld1Nsb3Q7DQorICAgIH0NCisNCisgICAgLy8NCisgICAgLy8gQWRkIHRo ZSBuZXcgQ1BVIHdpdGggRUZJX1NNTV9DUFVfU0VSVklDRV9QUk9UT0NPTC4NCisgICAgLy8NCisg ICAgU3RhdHVzID0gbU1tQ3B1U2VydmljZS0+QWRkUHJvY2Vzc29yIChtTW1DcHVTZXJ2aWNlLCBO ZXdBcGljSWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk5ld1Byb2Nlc3Nvck51 bWJlckJ5UHJvdG9jb2wpOw0KKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgICAg REVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBBZGRQcm9jZXNzb3IoIiBGTVRfQVBJQ19JRCAiKTog JXJcbiIsDQorICAgICAgICBfX0ZVTkNUSU9OX18sIE5ld0FwaWNJZCwgU3RhdHVzKSk7DQorICAg ICAgZ290byBSZXZva2VOZXdTbG90Ow0KKyAgICB9DQorDQorICAgIERFQlVHICgoREVCVUdfSU5G TywgIiVhOiBob3QtYWRkZWQgQVBJQyBJRCAiIEZNVF9BUElDX0lEICIsIFNNQkFTRSAweCVMeCwg Ig0KKyAgICAgICJFRklfU01NX0NQVV9TRVJWSUNFX1BST1RPQ09MIGFzc2lnbmVkIG51bWJlciAl THVcbiIsIF9fRlVOQ1RJT05fXywNCisgICAgICBOZXdBcGljSWQsIChVSU5UNjQpbUNwdUhvdFBs dWdEYXRhLT5TbUJhc2VbTmV3U2xvdF0sDQorICAgICAgKFVJTlQ2NClOZXdQcm9jZXNzb3JOdW1i ZXJCeVByb3RvY29sKSk7DQorDQorICAgIE5ld1Nsb3QrKzsNCisgICAgUGx1Z2dlZElkeCsrOw0K KyAgfQ0KKw0KICAgLy8NCiAgIC8vIFdlJ3ZlIGhhbmRsZWQgdGhpcyBNTUkuDQogICAvLw0KICAg cmV0dXJuIEVGSV9TVUNDRVNTOw0KIA0KK1Jldm9rZU5ld1Nsb3Q6DQorICBtQ3B1SG90UGx1Z0Rh dGEtPkFwaWNJZFtOZXdTbG90XSA9IE1BWF9VSU5UNjQ7DQorDQogRmF0YWw6DQogICBBU1NFUlQg KEZBTFNFKTsNCiAgIENwdURlYWRMb29wICgpOw0KICAgLy8NCiAgIC8vIFdlIGNvdWxkbid0IGhh bmRsZSB0aGlzIE1NSS4NCiAgIC8vDQogICByZXR1cm4gRUZJX0lOVEVSUlVQVF9QRU5ESU5HOw0K IH0NCiANCiANCiAvLw0KIC8vIEVudHJ5IHBvaW50IGZ1bmN0aW9uIG9mIHRoaXMgZHJpdmVyLg0K IC8vDQogRUZJX1NUQVRVUw0KIEVGSUFQSQ0KIENwdUhvdHBsdWdFbnRyeSAoDQogICBJTiBFRklf SEFORExFICAgICAgIEltYWdlSGFuZGxlLA0KICAgSU4gRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVt VGFibGUNCiAgICkNCiB7DQogICBFRklfU1RBVFVTIFN0YXR1czsNCiAgIFVJTlROICAgICAgU2l6 ZTsNCkBAIC0yNTEsODMgKzMyNiwxMDEgQEAgQ3B1SG90cGx1Z0VudHJ5ICgKICAgLy8NCiAgIC8v IEFsbG9jYXRlIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBkZXBlbmQgb24gdGhlIHBvc3NpYmxl IENQVSBjb3VudC4NCiAgIC8vDQogICBpZiAoUkVUVVJOX0VSUk9SIChTYWZlVWludG5TdWIgKG1D cHVIb3RQbHVnRGF0YS0+QXJyYXlMZW5ndGgsIDEsICZTaXplKSkgfHwNCiAgICAgICBSRVRVUk5f RVJST1IgKFNhZmVVaW50bk11bHQgKHNpemVvZiAoQVBJQ19JRCksIFNpemUsICZTaXplKSkpIHsN CiAgICAgU3RhdHVzID0gRUZJX0FCT1JURUQ7DQogICAgIERFQlVHICgoREVCVUdfRVJST1IsICIl YTogaW52YWxpZCBDUFVfSE9UX1BMVUdfREFUQVxuIiwgX19GVU5DVElPTl9fKSk7DQogICAgIGdv dG8gRmF0YWw7DQogICB9DQogICBTdGF0dXMgPSBnTW1zdC0+TW1BbGxvY2F0ZVBvb2wgKEVmaVJ1 bnRpbWVTZXJ2aWNlc0RhdGEsIFNpemUsDQogICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikm bVBsdWdnZWRBcGljSWRzKTsNCiAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCiAgICAgREVC VUcgKChERUJVR19FUlJPUiwgIiVhOiBNbUFsbG9jYXRlUG9vbCgpOiAlclxuIiwgX19GVU5DVElP Tl9fLCBTdGF0dXMpKTsNCiAgICAgZ290byBGYXRhbDsNCiAgIH0NCiAgIFN0YXR1cyA9IGdNbXN0 LT5NbUFsbG9jYXRlUG9vbCAoRWZpUnVudGltZVNlcnZpY2VzRGF0YSwgU2l6ZSwNCiAgICAgICAg ICAgICAgICAgICAgIChWT0lEICoqKSZtVG9VbnBsdWdBcGljSWRzKTsNCiAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCiAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBNbUFsbG9jYXRl UG9vbCgpOiAlclxuIiwgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsNCiAgICAgZ290byBSZWxlYXNl UGx1Z2dlZEFwaWNJZHM7DQogICB9DQogDQorICAvLw0KKyAgLy8gQWxsb2NhdGUgdGhlIFBvc3Qt U01NIFBlbiBmb3IgaG90LWFkZGVkIENQVXMuDQorICAvLw0KKyAgU3RhdHVzID0gU21iYXNlQWxs b2NhdGVQb3N0U21tUGVuICgmbVBvc3RTbW1QZW5BZGRyZXNzLA0KKyAgICAgICAgICAgICBTeXN0 ZW1UYWJsZS0+Qm9vdFNlcnZpY2VzKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisg ICAgZ290byBSZWxlYXNlVG9VbnBsdWdBcGljSWRzOw0KKyAgfQ0KKw0KICAgLy8NCiAgIC8vIFNh bml0eS1jaGVjayB0aGUgQ1BVIGhvdHBsdWcgaW50ZXJmYWNlLg0KICAgLy8NCiAgIC8vIEJvdGgg b2YgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgcGFydCBvZiBRRU1VIDUuMCwgaW50cm9kdWNl ZCBwcmltYXJpbHkNCiAgIC8vIGluIGNvbW1pdCByYW5nZSAzZTA4YjJiOWNiNjQuLjNhNjFjOGRi OWQyNToNCiAgIC8vDQogICAvLyAoYSkgdGhlIFFFTVVfQ1BVSFBfQ01EX0dFVF9BUkNIX0lEIGNv bW1hbmQgb2YgdGhlIG1vZGVybiBDUFUgaG90cGx1Zw0KICAgLy8gICAgIGludGVyZmFjZSwNCiAg IC8vDQogICAvLyAoYikgdGhlICJTTVJBTSBhdCBkZWZhdWx0IFNNQkFTRSIgZmVhdHVyZS4NCiAg IC8vDQogICAvLyBGcm9tIHRoZXNlLCAoYikgaXMgcmVzdHJpY3RlZCB0byA1LjArIG1hY2hpbmUg dHlwZSB2ZXJzaW9ucywgd2hpbGUgKGEpDQogICAvLyBkb2VzIG5vdCBkZXBlbmQgb24gbWFjaGlu ZSB0eXBlIHZlcnNpb24uIEJlY2F1c2Ugd2UgZW5zdXJlZCB0aGUgc3RyaWN0ZXINCiAgIC8vIGNv bmRpdGlvbiAoYikgdGhyb3VnaCBQY2RRMzVTbXJhbUF0RGVmYXVsdFNtYmFzZSBhYm92ZSwgdGhl IChhKQ0KICAgLy8gUUVNVV9DUFVIUF9DTURfR0VUX0FSQ0hfSUQgY29tbWFuZCBtdXN0IG5vdyBi ZSBhdmFpbGFibGUgdG9vLiBXaGlsZSB3ZQ0KICAgLy8gY2FuJ3QgdmVyaWZ5IHRoZSBwcmVzZW5j ZSBvZiBwcmVjaXNlbHkgdGhhdCBjb21tYW5kLCB3ZSBjYW4gc3RpbGwgdmVyaWZ5DQogICAvLyAo c2FuaXR5LWNoZWNrKSB0aGF0IHRoZSBtb2Rlcm4gaW50ZXJmYWNlIGlzIGFjdGl2ZSwgYXQgbGVh c3QuDQogICAvLw0KICAgLy8gQ29uc3VsdCB0aGUgIlR5cGljYWwgdXNlY2FzZXMgfCBEZXRlY3Rp bmcgYW5kIGVuYWJsaW5nIG1vZGVybiBDUFUgaG90cGx1Zw0KICAgLy8gaW50ZXJmYWNlIiBzZWN0 aW9uIGluIFFFTVUncyAiZG9jcy9zcGVjcy9hY3BpX2NwdV9ob3RwbHVnLnR4dCIsIG9uIHRoZQ0K ICAgLy8gZm9sbG93aW5nLg0KICAgLy8NCiAgIFFlbXVDcHVocFdyaXRlQ3B1U2VsZWN0b3IgKG1N bUNwdUlvLCAwKTsNCiAgIFFlbXVDcHVocFdyaXRlQ3B1U2VsZWN0b3IgKG1NbUNwdUlvLCAwKTsN CiAgIFFlbXVDcHVocFdyaXRlQ29tbWFuZCAobU1tQ3B1SW8sIFFFTVVfQ1BVSFBfQ01EX0dFVF9Q RU5ESU5HKTsNCiAgIGlmIChRZW11Q3B1aHBSZWFkQ29tbWFuZERhdGEyIChtTW1DcHVJbykgIT0g MCkgew0KICAgICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KICAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiJWE6IG1vZGVybiBDUFUgaG90cGx1ZyBpbnRlcmZhY2U6ICVyXG4iLA0KICAgICAgIF9f RlVOQ1RJT05fXywgU3RhdHVzKSk7DQotICAgIGdvdG8gUmVsZWFzZVRvVW5wbHVnQXBpY0lkczsN CisgICAgZ290byBSZWxlYXNlUG9zdFNtbVBlbjsNCiAgIH0NCiANCiAgIC8vDQogICAvLyBSZWdp c3RlciB0aGUgaGFuZGxlciBmb3IgdGhlIENQVSBIb3RwbHVnIE1NSS4NCiAgIC8vDQogICBTdGF0 dXMgPSBnTW1zdC0+TW1pSGFuZGxlclJlZ2lzdGVyICgNCiAgICAgICAgICAgICAgICAgICAgIENw dUhvdHBsdWdNbWksDQogICAgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgIC8vIEhh bmRsZXJUeXBlOiByb290IE1NSSBoYW5kbGVyDQogICAgICAgICAgICAgICAgICAgICAmbURpc3Bh dGNoSGFuZGxlDQogICAgICAgICAgICAgICAgICAgICApOw0KICAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE1taUhhbmRsZXJSZWdpc3Rl cigpOiAlclxuIiwgX19GVU5DVElPTl9fLA0KICAgICAgIFN0YXR1cykpOw0KLSAgICBnb3RvIFJl bGVhc2VUb1VucGx1Z0FwaWNJZHM7DQorICAgIGdvdG8gUmVsZWFzZVBvc3RTbW1QZW47DQogICB9 DQogDQorICAvLw0KKyAgLy8gSW5zdGFsbCB0aGUgaGFuZGxlciBmb3IgdGhlIGhvdC1hZGRlZCBD UFVzJyBmaXJzdCBTTUkuDQorICAvLw0KKyAgU21iYXNlSW5zdGFsbEZpcnN0U21pSGFuZGxlciAo KTsNCisNCiAgIHJldHVybiBFRklfU1VDQ0VTUzsNCiANCitSZWxlYXNlUG9zdFNtbVBlbjoNCisg IFNtYmFzZVJlbGVhc2VQb3N0U21tUGVuIChtUG9zdFNtbVBlbkFkZHJlc3MsIFN5c3RlbVRhYmxl LT5Cb290U2VydmljZXMpOw0KKyAgbVBvc3RTbW1QZW5BZGRyZXNzID0gMDsNCisNCiBSZWxlYXNl VG9VbnBsdWdBcGljSWRzOg0KICAgZ01tc3QtPk1tRnJlZVBvb2wgKG1Ub1VucGx1Z0FwaWNJZHMp Ow0KICAgbVRvVW5wbHVnQXBpY0lkcyA9IE5VTEw7DQogDQogUmVsZWFzZVBsdWdnZWRBcGljSWRz Og0KICAgZ01tc3QtPk1tRnJlZVBvb2wgKG1QbHVnZ2VkQXBpY0lkcyk7DQogICBtUGx1Z2dlZEFw aWNJZHMgPSBOVUxMOw0KIA0KIEZhdGFsOg0KICAgQVNTRVJUIChGQUxTRSk7DQogICBDcHVEZWFk TG9vcCAoKTsNCiAgIHJldHVybiBTdGF0dXM7DQogfQ0KLS0gCjIuMTkuMS4zLmczMDI0N2FhNWQy MDEKCgo=