From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.120]) by mx.groups.io with SMTP id smtpd.web11.236.1582755143715540848 for ; Wed, 26 Feb 2020 14:12:23 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=euz4dSwA; spf=pass (domain: redhat.com, ip: 205.139.110.120, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582755142; 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=qvBJtWlAbN5Fjc60zxNqSGFdlQ9zvD3ohh6QoKpmAuM=; b=euz4dSwAHGCveQ+4Pz7LcXlUeqnruWSsleN+1wiCAiliEyg1lmkJINuKovQ5kKDEaGIK+1 YjZPOydf7ONVh6O4biwk9z/azpaVx86DVvGw40wWE9UwFkLbFlsqDX0jPHAVQTy0cgbRC+ 4CYZMLigD/JetAX7zxo9iHd3RKRpzso= 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-384-l4I8ghMZPrSOGS3wCH7lIw-1; Wed, 26 Feb 2020 17:12:14 -0500 X-MC-Unique: l4I8ghMZPrSOGS3wCH7lIw-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 21634800D53; Wed, 26 Feb 2020 22:12:13 +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 3B5B660BEF; Wed, 26 Feb 2020 22:12:11 +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 04/16] OvmfPkg: enable SMM Monarch Election in PiSmmCpuDxeSmm Date: Wed, 26 Feb 2020 23:11:44 +0100 Message-Id: <20200226221156.29589-5-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 V2l0aCAiUGNkQ3B1U21tRW5hYmxlQnNwRWxlY3Rpb24iIHNldCB0byBGQUxTRSwgUGlTbW1DcHVE eGVTbW0gYWx3YXlzCmNvbnNpZGVycyB0aGUgcHJvY2Vzc29yIHdpdGggaW5kZXggMCB0byBiZSB0 aGUgU01NIE1vbmFyY2ggKGEuay5hLiB0aGUgU01NCkJTUCkuIFRoZSBTTU0gTW9uYXJjaCBoYW5k bGVzIHRoZSBTTUkgZm9yIHJlYWwsIHdoaWxlIHRoZSBvdGhlciBDUFVzIHdhaXQKaW4gdGhlaXIg U01NIGxvb3BzLgoKSW4gYSBzdWJzZXF1ZW50IHBhdGNoLCB3ZSB3YW50IHRvIHNldCAiUGNkQ3B1 SG90UGx1Z1N1cHBvcnQiIHRvIFRSVUUuIEZvcgp0aGF0LCBQaUNwdVNtbUVudHJ5KCkgW1VlZmlD cHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uY10gZm9yY2VzCnVzIHdpdGggYW4g QVNTRVJUKCkgdG8gc2V0ICJQY2RDcHVTbW1FbmFibGVCc3BFbGVjdGlvbiIgdG8gVFJVRSBhcyB3 ZWxsLgpUbyBzYXRpc2Z5IHRoYXQgZXhwZWN0YXRpb24sIHdlIGNhbiBzaW1wbHkgcmVtb3ZlIG91 ciBjdXJyZW50CiJQY2RDcHVTbW1FbmFibGVCc3BFbGVjdGlvbnxGQUxTRSIgc2V0dGluZywgYW5k IGluaGVyaXQgdGhlIGRlZmF1bHQgVFJVRQp2YWx1ZSBmcm9tICJVZWZpQ3B1UGtnLmRlYyIuCgpU aGlzIGNhdXNlcyAibVNtbU1wU3luY0RhdGEtPkJzcEluZGV4IiBpbiBQaVNtbUNwdUR4ZVNtbSB0 byBsb3NlIGl0cwpzdGF0aWMgemVybyB2YWx1ZSAoc3RhbmRpbmcgZm9yIENQVSMwKTsgaW5zdGVh ZCBpdCBiZWNvbWVzICgtMSkgaW4KZ2VuZXJhbCwgYW5kIHRoZSBTTU0gTW9uYXJjaCBpcyBlbGVj dGVkIGFuZXcgb24gZXZlcnkgU01JLgoKVGhlIGRlZmF1bHQgU01NIE1vbmFyY2ggRWxlY3Rpb24g aXMgYmFzaWNhbGx5IGEgcmFjZSAtLSB3aGljaGV2ZXIgQ1BVIGNhbgpmbGlwICJtU21tTXBTeW5j RGF0YS0+QnNwSW5kZXgiIGZyb20gKC0xKSB0byBpdHMgb3duIGluZGV4LCBiZWNvbWVzIGtpbmcs CmZvciBoYW5kbGluZyB0aGF0IFNNSS4gUmVmZXIgdG8gU21pUmVuZGV6dm91cygpCltVZWZpQ3B1 UGtnL1BpU21tQ3B1RHhlU21tL01wU2VydmljZS5jXS4KCkkgY29uc2lkZXIgdGhpcyBub24tZGV0 ZXJtaW5pc20gbGVzcyB0aGFuIGlkZWFsIG9uIFFFTVUvS1ZNOyBpdCB3b3VsZCBiZQpuaWNlIHRv IHN0aWNrIHdpdGggYSAibW9zdGx5IHBlcm1hbmVudCIgU01NIE1vbmFyY2ggZXZlbiB3aXRoIHRo ZSBFbGVjdGlvbgplbmFibGVkLiBXZSBjYW4gZG8gdGhhdCBieSBpbXBsZW1lbnRpbmcgdGhlIFBs YXRmb3JtU21tQnNwRWxlY3Rpb24oKSBBUEkKaW4gdGhlIFNtbUNwdVBsYXRmb3JtSG9va0xpYlFl bXUgaW5zdGFuY2U6CgpUaGUgSUEzMiBBUElDIEJhc2UgTVNSIGNhbiBiZSByZWFkIG9uIGVhY2gg Q1BVIGNvbmN1cnJlbnRseSwgYW5kIGl0IHdpbGwKcmVwb3J0IHRoZSBCU1AgYml0IGFzIHNldCBv bmx5IG9uIHRoZSBjdXJyZW50IEJvb3QgU2VydmljZSBQcm9jZXNzb3IuIFFFTVUKbWFya3MgQ1BV IzAgYXMgdGhlIEJTUCwgYnkgZGVmYXVsdC4KCkVsZWN0IHRoZSBjdXJyZW50IEJTUCwgYXMgcmVw b3J0ZWQgYnkgUUVNVSwgZm9yIHRoZSBTTU0gTW9uYXJjaCByb2xlLgoKKE5vdGUgdGhhdCB0aGUg UUVNVSBjb21taXQgaGlzdG9yeSBpcyBub3QgZW50aXJlbHkgY29uc2lzdGVudCBvbiB3aGV0aGVy ClFFTVUvS1ZNIG1heSBtYXJrIGEgQ1BVIHdpdGggbm9uemVybyBpbmRleCBhcyB0aGUgQlNQOgoK LSBBdCB0YWcgdjQuMi4wLCAidGFyZ2V0L2kzODYvY3B1LmMiIGhhcyBhIGNvbW1lbnQgc2F5aW5n ICJXZSBoYXJkLXdpcmUKICB0aGUgQlNQIHRvIHRoZSBmaXJzdCBDUFUiLiBUaGlzIGNvbW1lbnQg Z29lcyBiYWNrIHRvIGNvbW1pdCA2Y2IyOTk2Y2VmNWUKICAoIng4NjogRXh0ZW5kIHZhbGlkaXR5 IG9mIGJzcF90b19jcHUiLCAyMDEwLTAzLTA0KS4KCi0gQ29tcGFyZSBjb21taXQgOWNiMTFmZDc1 MzliICgidGFyZ2V0LWkzODY6IGNsZWFyIGJzcCBiaXQgd2hlbgogIGRlc2lnbmF0aW5nIGJzcCIs IDIwMTUtMDQtMDIpIHRob3VnaCwgZXNwZWNpYWxseSBjb25zaWRlcmluZyBLVk0uCgpFaXRoZXIg d2F5LCB0aGlzIE92bWZQa2cgcGF0Y2ggaXMgKm5vdCogZGVwZW5kZW50IG9uIENQVSBpbmRleCAw OyBpdCBqdXN0CnRha2VzIHRoZSByYWNlIG9uIGV2ZXJ5IFNNSSBvdXQgb2YgdGhlIGdhbWUuKQoK T25lIGJlbmVmaXQgb2YgdXNpbmcgYSAibW9zdGx5IHBlcm1hbmVudCIgU01NIE1vbmFyY2ggLyBC U1AgaXMgdGhhdCB3ZSBjYW4KY29udGludWUgdGVzdGluZyB0aGUgU01NIENQVSBzeW5jaHJvbml6 YXRpb24gYnkgZGV0ZXJtaW5pc3RpY2FsbHkgZW50ZXJpbmcKdGhlIGZpcm13YXJlIG9uIHRoZSBC U1AsIHZzLiBvbiBhbiBBUCwgZnJvbSBMaW51eCBndWVzdHM6CgokIHRpbWUgdGFza3NldCAtYyAw IGVmaWJvb3RtZ3IKJCB0aW1lIHRhc2tzZXQgLWMgMSBlZmlib290bWdyCgooU2VlCjxodHRwczov L2dpdGh1Yi5jb20vdGlhbm9jb3JlL3RpYW5vY29yZS5naXRodWIuaW8vd2lraS9UZXN0aW5nLVNN TS13aXRoLVFFTVUsLUtWTS1hbmQtbGlidmlydCN1ZWZpLXZhcmlhYmxlLWFjY2Vzcy10ZXN0Pi4p CgpDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+CkNjOiBJZ29y IE1hbW1lZG92IDxpbWFtbWVkb0ByZWRoYXQuY29tPgpDYzogSmlld2VuIFlhbyA8amlld2VuLnlh b0BpbnRlbC5jb20+CkNjOiBKb3JkYW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29t PgpDYzogTWljaGFlbCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPgpDYzogUGhp bGlwcGUgTWF0aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPgpTdWdnZXN0ZWQtYnk6IEln b3IgTWFtbWVkb3YgPGltYW1tZWRvQHJlZGhhdC5jb20+ClJlZjogaHR0cHM6Ly9idWd6aWxsYS50 aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyI2M1ClNpZ25lZC1vZmYtYnk6IExhc3ps byBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+CkFja2VkLWJ5OiBBcmQgQmllc2hldXZlbCA8YXJk LmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4KLS0tCgpOb3RlczoKICAgIHYyOgogICAgCiAgICAtIFBp Y2sgdXAgQXJkJ3MgQWNrZWQtYnksIHdoaWNoIGlzIGNvbmRpdGlvbmFsIG9uIGFwcHJvdmFsIGZy b20gSW50ZWwKICAgICAgcmV2aWV3ZXJzIG9uIENjLiAoSSdkIGxpa2UgdG8gc2F2ZSBBcmQgdGhl IGNodXJuIG9mIHJlLWFja2luZwogICAgICB1bm1vZGlmaWVkIHBhdGNoZXMuKQoKIE92bWZQa2cv T3ZtZlBrZ0lhMzIuZHNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMSAtCiBPdm1mUGtnL092bWZQa2dJYTMyWDY0LmRzYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgLQogT3ZtZlBrZy9Pdm1mUGtnWDY0LmRz YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxIC0K IE92bWZQa2cvTGlicmFyeS9TbW1DcHVQbGF0Zm9ybUhvb2tMaWJRZW11L1NtbUNwdVBsYXRmb3Jt SG9va0xpYlFlbXUuaW5mIHwgMyArKysKIE92bWZQa2cvTGlicmFyeS9TbW1DcHVQbGF0Zm9ybUhv b2tMaWJRZW11L1NtbUNwdVBsYXRmb3JtSG9va0xpYlFlbXUuYyAgIHwgOSArKysrKysrKy0KIDUg ZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9Pdm1mUGtnL092bWZQa2dJYTMyLmRzYyBiL092bWZQa2cvT3ZtZlBrZ0lhMzIuZHNjCmlu ZGV4IDgxMzk5NWZlZmFkOC4uNjBkOGFmMTg1YjljIDEwMDY0NAotLS0gYS9Pdm1mUGtnL092bWZQ a2dJYTMyLmRzYworKysgYi9Pdm1mUGtnL092bWZQa2dJYTMyLmRzYwpAQCAtNDE0LDQ1ICs0MTQs NDQgQEAgW0xpYnJhcnlDbGFzc2VzLmNvbW1vbi5TTU1fQ09SRV0KICFlbmRpZg0KICAgUGNpTGli fE92bWZQa2cvTGlicmFyeS9EeGVQY2lMaWJJNDQwRnhRMzUvRHhlUGNpTGliSTQ0MEZ4UTM1Lmlu Zg0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogIw0KICMgUGNkIFNlY3Rpb24gLSBsaXN0 IG9mIGFsbCBFREsgSUkgUENEIEVudHJpZXMgZGVmaW5lZCBieSB0aGlzIFBsYXRmb3JtLg0KICMN CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIFtQY2RzRmVhdHVyZUZsYWddDQogICBnRWZpTWRl TW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkSGlpT3NSdW50aW1lU3VwcG9ydHxGQUxTRQ0KICAg Z0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFN0YXR1c0NvZGVVc2VTZXJpYWx8RkFM U0UNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RTdGF0dXNDb2RlVXNlTWVt b3J5fFRSVUUNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2REeGVJcGxTdXBw b3J0VWVmaURlY29tcHJlc3N8RkFMU0UNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2REeGVJcGxTd2l0Y2hUb0xvbmdNb2RlfEZBTFNFDQogICBnRWZpTWRlTW9kdWxlUGtnVG9r ZW5TcGFjZUd1aWQuUGNkQ29uT3V0R29wU3VwcG9ydHxUUlVFDQogICBnRWZpTWRlTW9kdWxlUGtn VG9rZW5TcGFjZUd1aWQuUGNkQ29uT3V0VWdhU3VwcG9ydHxGQUxTRQ0KICAgZ0VmaU1kZU1vZHVs ZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEluc3RhbGxBY3BpU2R0UHJvdG9jb2x8VFJVRQ0KICFpZmRl ZiAkKENTTV9FTkFCTEUpDQogICBnVWVmaU92bWZQa2dUb2tlblNwYWNlR3VpZC5QY2RDc21FbmFi bGV8VFJVRQ0KICFlbmRpZg0KICFpZiAkKFNNTV9SRVFVSVJFKSA9PSBUUlVFDQogICBnVWVmaU92 bWZQa2dUb2tlblNwYWNlR3VpZC5QY2RTbW1TbXJhbVJlcXVpcmV8VFJVRQ0KLSAgZ1VlZmlDcHVQ a2dUb2tlblNwYWNlR3VpZC5QY2RDcHVTbW1FbmFibGVCc3BFbGVjdGlvbnxGQUxTRQ0KICAgZ0Vm aU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEVuYWJsZVZhcmlhYmxlUnVudGltZUNhY2hl fEZBTFNFDQogIWVuZGlmDQogDQogW1BjZHNGaXhlZEF0QnVpbGRdDQogICBnRWZpTWRlTW9kdWxl UGtnVG9rZW5TcGFjZUd1aWQuUGNkU3RhdHVzQ29kZU1lbW9yeVNpemV8MQ0KICAgZ0VmaU1kZU1v ZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFJlc2V0T25NZW1vcnlUeXBlSW5mb3JtYXRpb25DaGFu Z2V8RkFMU0UNCiAgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhpbXVtR3VpZGVkRXh0 cmFjdEhhbmRsZXJ8MHgxMA0KICFpZiAoJChGRF9TSVpFX0lOX0tCKSA9PSAxMDI0KSB8fCAoJChG RF9TSVpFX0lOX0tCKSA9PSAyMDQ4KQ0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlk LlBjZE1heFZhcmlhYmxlU2l6ZXwweDIwMDANCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNl R3VpZC5QY2RNYXhBdXRoVmFyaWFibGVTaXplfDB4MjgwMA0KICFpZiAkKE5FVFdPUktfVExTX0VO QUJMRSkgPT0gRkFMU0UNCiAgICMgbWF0Y2ggUGNkRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZVNpemUg cHVyZWx5IGZvciBjb252ZW5pZW5jZQ0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlk LlBjZFZhcmlhYmxlU3RvcmVTaXplfDB4ZTAwMA0KICFlbmRpZg0KICFlbmRpZg0KICFpZiAkKEZE X1NJWkVfSU5fS0IpID09IDQwOTYNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5Q Y2RNYXhWYXJpYWJsZVNpemV8MHg4NDAwDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1 aWQuUGNkTWF4QXV0aFZhcmlhYmxlU2l6ZXwweDg0MDANCiAhaWYgJChORVRXT1JLX1RMU19FTkFC TEUpID09IEZBTFNFDQogICAjIG1hdGNoIFBjZEZsYXNoTnZTdG9yYWdlVmFyaWFibGVTaXplIHB1 cmVseSBmb3IgY29udmVuaWVuY2UNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5Q Y2RWYXJpYWJsZVN0b3JlU2l6ZXwweDQwMDAwDQogIWVuZGlmDQpkaWZmIC0tZ2l0IGEvT3ZtZlBr Zy9Pdm1mUGtnSWEzMlg2NC5kc2MgYi9Pdm1mUGtnL092bWZQa2dJYTMyWDY0LmRzYwppbmRleCBh MjU2YzcwODRhN2UuLmJlNmJjN2JkODhhNyAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9Pdm1mUGtnSWEz Mlg2NC5kc2MKKysrIGIvT3ZtZlBrZy9Pdm1mUGtnSWEzMlg2NC5kc2MKQEAgLTQxOSw0NSArNDE5 LDQ0IEBAIFtMaWJyYXJ5Q2xhc3Nlcy5jb21tb24uU01NX0NPUkVdCiAhZW5kaWYNCiAgIFBjaUxp YnxPdm1mUGtnL0xpYnJhcnkvRHhlUGNpTGliSTQ0MEZ4UTM1L0R4ZVBjaUxpYkk0NDBGeFEzNS5p bmYNCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICMNCiAjIFBjZCBTZWN0aW9uIC0gbGlz dCBvZiBhbGwgRURLIElJIFBDRCBFbnRyaWVzIGRlZmluZWQgYnkgdGhpcyBQbGF0Zm9ybS4NCiAj DQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiBbUGNkc0ZlYXR1cmVGbGFnXQ0KICAgZ0VmaU1k ZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEhpaU9zUnVudGltZVN1cHBvcnR8RkFMU0UNCiAg IGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RTdGF0dXNDb2RlVXNlU2VyaWFsfEZB TFNFDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkU3RhdHVzQ29kZVVzZU1l bW9yeXxUUlVFDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRHhlSXBsU3Vw cG9ydFVlZmlEZWNvbXByZXNzfEZBTFNFDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1 aWQuUGNkRHhlSXBsU3dpdGNoVG9Mb25nTW9kZXxUUlVFDQogICBnRWZpTWRlTW9kdWxlUGtnVG9r ZW5TcGFjZUd1aWQuUGNkQ29uT3V0R29wU3VwcG9ydHxUUlVFDQogICBnRWZpTWRlTW9kdWxlUGtn VG9rZW5TcGFjZUd1aWQuUGNkQ29uT3V0VWdhU3VwcG9ydHxGQUxTRQ0KICAgZ0VmaU1kZU1vZHVs ZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEluc3RhbGxBY3BpU2R0UHJvdG9jb2x8VFJVRQ0KICFpZmRl ZiAkKENTTV9FTkFCTEUpDQogICBnVWVmaU92bWZQa2dUb2tlblNwYWNlR3VpZC5QY2RDc21FbmFi bGV8VFJVRQ0KICFlbmRpZg0KICFpZiAkKFNNTV9SRVFVSVJFKSA9PSBUUlVFDQogICBnVWVmaU92 bWZQa2dUb2tlblNwYWNlR3VpZC5QY2RTbW1TbXJhbVJlcXVpcmV8VFJVRQ0KLSAgZ1VlZmlDcHVQ a2dUb2tlblNwYWNlR3VpZC5QY2RDcHVTbW1FbmFibGVCc3BFbGVjdGlvbnxGQUxTRQ0KICAgZ0Vm aU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEVuYWJsZVZhcmlhYmxlUnVudGltZUNhY2hl fEZBTFNFDQogIWVuZGlmDQogDQogW1BjZHNGaXhlZEF0QnVpbGRdDQogICBnRWZpTWRlTW9kdWxl UGtnVG9rZW5TcGFjZUd1aWQuUGNkU3RhdHVzQ29kZU1lbW9yeVNpemV8MQ0KICAgZ0VmaU1kZU1v ZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFJlc2V0T25NZW1vcnlUeXBlSW5mb3JtYXRpb25DaGFu Z2V8RkFMU0UNCiAgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhpbXVtR3VpZGVkRXh0 cmFjdEhhbmRsZXJ8MHgxMA0KICFpZiAoJChGRF9TSVpFX0lOX0tCKSA9PSAxMDI0KSB8fCAoJChG RF9TSVpFX0lOX0tCKSA9PSAyMDQ4KQ0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlk LlBjZE1heFZhcmlhYmxlU2l6ZXwweDIwMDANCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNl R3VpZC5QY2RNYXhBdXRoVmFyaWFibGVTaXplfDB4MjgwMA0KICFpZiAkKE5FVFdPUktfVExTX0VO QUJMRSkgPT0gRkFMU0UNCiAgICMgbWF0Y2ggUGNkRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZVNpemUg cHVyZWx5IGZvciBjb252ZW5pZW5jZQ0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlk LlBjZFZhcmlhYmxlU3RvcmVTaXplfDB4ZTAwMA0KICFlbmRpZg0KICFlbmRpZg0KICFpZiAkKEZE X1NJWkVfSU5fS0IpID09IDQwOTYNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5Q Y2RNYXhWYXJpYWJsZVNpemV8MHg4NDAwDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1 aWQuUGNkTWF4QXV0aFZhcmlhYmxlU2l6ZXwweDg0MDANCiAhaWYgJChORVRXT1JLX1RMU19FTkFC TEUpID09IEZBTFNFDQogICAjIG1hdGNoIFBjZEZsYXNoTnZTdG9yYWdlVmFyaWFibGVTaXplIHB1 cmVseSBmb3IgY29udmVuaWVuY2UNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5Q Y2RWYXJpYWJsZVN0b3JlU2l6ZXwweDQwMDAwDQogIWVuZGlmDQpkaWZmIC0tZ2l0IGEvT3ZtZlBr Zy9Pdm1mUGtnWDY0LmRzYyBiL092bWZQa2cvT3ZtZlBrZ1g2NC5kc2MKaW5kZXggNzgwNzliOWY4 ZTEzLi5lMjU4YzQ3NGI2MGQgMTAwNjQ0Ci0tLSBhL092bWZQa2cvT3ZtZlBrZ1g2NC5kc2MKKysr IGIvT3ZtZlBrZy9Pdm1mUGtnWDY0LmRzYwpAQCAtNDE5LDQ1ICs0MTksNDQgQEAgW0xpYnJhcnlD bGFzc2VzLmNvbW1vbi5TTU1fQ09SRV0KICFlbmRpZg0KICAgUGNpTGlifE92bWZQa2cvTGlicmFy eS9EeGVQY2lMaWJJNDQwRnhRMzUvRHhlUGNpTGliSTQ0MEZ4UTM1LmluZg0KIA0KICMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjDQogIw0KICMgUGNkIFNlY3Rpb24gLSBsaXN0IG9mIGFsbCBFREsgSUkg UENEIEVudHJpZXMgZGVmaW5lZCBieSB0aGlzIFBsYXRmb3JtLg0KICMNCiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIw0KIFtQY2RzRmVhdHVyZUZsYWddDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5T cGFjZUd1aWQuUGNkSGlpT3NSdW50aW1lU3VwcG9ydHxGQUxTRQ0KICAgZ0VmaU1kZU1vZHVsZVBr Z1Rva2VuU3BhY2VHdWlkLlBjZFN0YXR1c0NvZGVVc2VTZXJpYWx8RkFMU0UNCiAgIGdFZmlNZGVN b2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RTdGF0dXNDb2RlVXNlTWVtb3J5fFRSVUUNCiAgIGdF ZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2REeGVJcGxTdXBwb3J0VWVmaURlY29tcHJl c3N8RkFMU0UNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2REeGVJcGxTd2l0 Y2hUb0xvbmdNb2RlfEZBTFNFDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNk Q29uT3V0R29wU3VwcG9ydHxUUlVFDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQu UGNkQ29uT3V0VWdhU3VwcG9ydHxGQUxTRQ0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VH dWlkLlBjZEluc3RhbGxBY3BpU2R0UHJvdG9jb2x8VFJVRQ0KICFpZmRlZiAkKENTTV9FTkFCTEUp DQogICBnVWVmaU92bWZQa2dUb2tlblNwYWNlR3VpZC5QY2RDc21FbmFibGV8VFJVRQ0KICFlbmRp Zg0KICFpZiAkKFNNTV9SRVFVSVJFKSA9PSBUUlVFDQogICBnVWVmaU92bWZQa2dUb2tlblNwYWNl R3VpZC5QY2RTbW1TbXJhbVJlcXVpcmV8VFJVRQ0KLSAgZ1VlZmlDcHVQa2dUb2tlblNwYWNlR3Vp ZC5QY2RDcHVTbW1FbmFibGVCc3BFbGVjdGlvbnxGQUxTRQ0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rv a2VuU3BhY2VHdWlkLlBjZEVuYWJsZVZhcmlhYmxlUnVudGltZUNhY2hlfEZBTFNFDQogIWVuZGlm DQogDQogW1BjZHNGaXhlZEF0QnVpbGRdDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1 aWQuUGNkU3RhdHVzQ29kZU1lbW9yeVNpemV8MQ0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3Bh Y2VHdWlkLlBjZFJlc2V0T25NZW1vcnlUeXBlSW5mb3JtYXRpb25DaGFuZ2V8RkFMU0UNCiAgIGdF ZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhpbXVtR3VpZGVkRXh0cmFjdEhhbmRsZXJ8MHgx MA0KICFpZiAoJChGRF9TSVpFX0lOX0tCKSA9PSAxMDI0KSB8fCAoJChGRF9TSVpFX0lOX0tCKSA9 PSAyMDQ4KQ0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZE1heFZhcmlhYmxl U2l6ZXwweDIwMDANCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhBdXRo VmFyaWFibGVTaXplfDB4MjgwMA0KICFpZiAkKE5FVFdPUktfVExTX0VOQUJMRSkgPT0gRkFMU0UN CiAgICMgbWF0Y2ggUGNkRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZVNpemUgcHVyZWx5IGZvciBjb252 ZW5pZW5jZQ0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFZhcmlhYmxlU3Rv cmVTaXplfDB4ZTAwMA0KICFlbmRpZg0KICFlbmRpZg0KICFpZiAkKEZEX1NJWkVfSU5fS0IpID09 IDQwOTYNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhWYXJpYWJsZVNp emV8MHg4NDAwDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkTWF4QXV0aFZh cmlhYmxlU2l6ZXwweDg0MDANCiAhaWYgJChORVRXT1JLX1RMU19FTkFCTEUpID09IEZBTFNFDQog ICAjIG1hdGNoIFBjZEZsYXNoTnZTdG9yYWdlVmFyaWFibGVTaXplIHB1cmVseSBmb3IgY29udmVu aWVuY2UNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RWYXJpYWJsZVN0b3Jl U2l6ZXwweDQwMDAwDQogIWVuZGlmDQpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9MaWJyYXJ5L1NtbUNw dVBsYXRmb3JtSG9va0xpYlFlbXUvU21tQ3B1UGxhdGZvcm1Ib29rTGliUWVtdS5pbmYgYi9Pdm1m UGtnL0xpYnJhcnkvU21tQ3B1UGxhdGZvcm1Ib29rTGliUWVtdS9TbW1DcHVQbGF0Zm9ybUhvb2tM aWJRZW11LmluZgppbmRleCA4MmVkZWNhM2QxMmQuLjQxM2M1NmZjZTZlMSAxMDA2NDQKLS0tIGEv T3ZtZlBrZy9MaWJyYXJ5L1NtbUNwdVBsYXRmb3JtSG9va0xpYlFlbXUvU21tQ3B1UGxhdGZvcm1I b29rTGliUWVtdS5pbmYKKysrIGIvT3ZtZlBrZy9MaWJyYXJ5L1NtbUNwdVBsYXRmb3JtSG9va0xp YlFlbXUvU21tQ3B1UGxhdGZvcm1Ib29rTGliUWVtdS5pbmYKQEAgLTgsMjIgKzgsMjUgQEAKIA0K IFtEZWZpbmVzXQ0KICAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMS4yOQ0KICAg QkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gU21tQ3B1UGxhdGZvcm1Ib29rTGliUWVt dQ0KICAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gMTU0RDZEMjYtNTRCOC00NUJD LUJBM0EtQ0JBQTIwQzAyQTZBDQogICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBE WEVfRFJJVkVSDQogICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCiAgIExJ QlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IFNtbUNwdVBsYXRmb3JtSG9va0xpYg0KIA0K ICMNCiAjIFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFu ZCBub3QgcmVxdWlyZWQgYnkgdGhlIGJ1aWxkDQogIyB0b29scy4NCiAjDQogIyAgVkFMSURfQVJD SElURUNUVVJFUyAgICAgICAgICAgPSBJQTMyIFg2NA0KICMNCiANCiBbU291cmNlc10NCiAgIFNt bUNwdVBsYXRmb3JtSG9va0xpYlFlbXUuYw0KIA0KIFtQYWNrYWdlc10NCiAgIE1kZVBrZy9NZGVQ a2cuZGVjDQogICBVZWZpQ3B1UGtnL1VlZmlDcHVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFzc2Vz XQ0KKyAgQmFzZUxpYg0KZGlmZiAtLWdpdCBhL092bWZQa2cvTGlicmFyeS9TbW1DcHVQbGF0Zm9y bUhvb2tMaWJRZW11L1NtbUNwdVBsYXRmb3JtSG9va0xpYlFlbXUuYyBiL092bWZQa2cvTGlicmFy eS9TbW1DcHVQbGF0Zm9ybUhvb2tMaWJRZW11L1NtbUNwdVBsYXRmb3JtSG9va0xpYlFlbXUuYwpp bmRleCAyNTdlMWQzOTljYzYuLmM4OGE5NWM2ZGVmZiAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9MaWJy YXJ5L1NtbUNwdVBsYXRmb3JtSG9va0xpYlFlbXUvU21tQ3B1UGxhdGZvcm1Ib29rTGliUWVtdS5j CisrKyBiL092bWZQa2cvTGlicmFyeS9TbW1DcHVQbGF0Zm9ybUhvb2tMaWJRZW11L1NtbUNwdVBs YXRmb3JtSG9va0xpYlFlbXUuYwpAQCAtMSwzMSArMSwzNCBAQAogLyoqIEBmaWxlDQogU01NIENQ VSBQbGF0Zm9ybSBIb29rIGxpYnJhcnkgaW5zdGFuY2UgZm9yIFFFTVUuDQogDQogQ29weXJpZ2h0 IChjKSAyMDIwLCBSZWQgSGF0LCBJbmMuDQogQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxNSwgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQogDQogKiovDQorI2luY2x1ZGUgPExpYnJh cnkvQmFzZUxpYi5oPiAgICAgICAgICAgICAgICAgLy8gQXNtUmVhZE1zcjY0KCkNCiAjaW5jbHVk ZSA8UGlTbW0uaD4NCisjaW5jbHVkZSA8UmVnaXN0ZXIvSW50ZWwvQXJjaGl0ZWN0dXJhbE1zci5o PiAvLyBNU1JfSUEzMl9BUElDX0JBU0VfUkVHSVNURVINCisNCiAjaW5jbHVkZSA8TGlicmFyeS9T bW1DcHVQbGF0Zm9ybUhvb2tMaWIuaD4NCiANCiAvKioNCiAgIENoZWNrcyBpZiBwbGF0Zm9ybSBw cm9kdWNlcyBhIHZhbGlkIFNNSS4NCiANCiAgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHBsYXRm b3JtIHByb2R1Y2VzIGEgdmFsaWQgU01JLiBUaGlzIGZ1bmN0aW9uIGlzDQogICBjYWxsZWQgYXQg U01NIGVudHJ5IHRvIGRldGVjdCBpZiB0aGlzIGlzIGEgc3B1cmlvdXMgU01JLiBUaGlzIGZ1bmN0 aW9uDQogICBtdXN0IGJlIGltcGxlbWVudGVkIGluIGFuIE1QIHNhZmUgd2F5IGJlY2F1c2UgaXQg aXMgY2FsbGVkIGJ5IG11bHRpcGxlIENQVQ0KICAgdGhyZWFkcy4NCiANCiAgIEByZXR2YWwgVFJV RSAgICAgICAgICAgICAgVGhlcmUgaXMgYSB2YWxpZCBTTUkNCiAgIEByZXR2YWwgRkFMU0UgICAg ICAgICAgICAgVGhlcmUgaXMgbm8gdmFsaWQgU01JDQogDQogKiovDQogQk9PTEVBTg0KIEVGSUFQ SQ0KIFBsYXRmb3JtVmFsaWRTbWkgKA0KICAgVk9JRA0KICAgKQ0KIHsNCiAgIHJldHVybiBUUlVF Ow0KIH0NCkBAIC01Niw0NSArNTksNDkgQEAgQ2xlYXJUb3BMZXZlbFNtaVN0YXR1cyAoCiANCiAg IEBwYXJhbSAgSXNCc3AgICAgICAgICAgICAgT3V0cHV0IHBhcmFtZXRlci4gVFJVRTogdGhlIENQ VSB0aGlzIGZ1bmN0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVzIG9u IGlzIGVsZWN0ZWQgdG8gYmUgdGhlIFNNTSBCU1AuIEZBTFNFOg0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aGUgQ1BVIHRoaXMgZnVuY3Rpb24gZXhlY3V0ZXMgb24gaXMgdG8gYmUgU01N IEFQLg0KIA0KICAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgZnVuY3Rpb24gZXhlY3V0 ZXMgc3VjY2Vzc2Z1bGx5Lg0KICAgQHJldHZhbCBFRklfTk9UX1JFQURZICAgICBUaGUgZnVuY3Rp b24gZG9lcyBub3QgZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBDUFUNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2hvdWxkIGJlIEJTUCBvciBBUC4gVGhpcyBtYXkgb2NjdXIgaWYgaGFyZHdh cmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCBzZXF1ZW5jZSB0byBlbmFibGUg dGhlIGRldGVybWluYXRpb24gaXMgeWV0IHRvDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJlIGRvbmUsIG9yIHRoZSBmdW5jdGlvbiBjaG9vc2VzIG5vdCB0byBkbyBCU1ANCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZWxlY3Rpb24gYW5kIHdpbGwgbGV0IFNNTSBDUFUgZHJpdmVy IHRvIHVzZSBpdHMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBCU1AgZWxl Y3Rpb24gcHJvY2Vzcy4NCiAgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgVGhlIGZ1bmN0aW9u IGNhbm5vdCBkZXRlcm1pbmUgd2hldGhlciB0aGlzIENQVQ0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaG91bGQgYmUgQlNQIG9yIEFQIGR1ZSB0byBoYXJkd2FyZSBlcnJvci4NCiANCiAq Ki8NCiBFRklfU1RBVFVTDQogRUZJQVBJDQogUGxhdGZvcm1TbW1Cc3BFbGVjdGlvbiAoDQogICBP VVQgQk9PTEVBTiAgICAgKklzQnNwDQogICApDQogew0KLSAgcmV0dXJuIEVGSV9OT1RfUkVBRFk7 DQorICBNU1JfSUEzMl9BUElDX0JBU0VfUkVHSVNURVIgQXBpY0Jhc2VNc3I7DQorDQorICBBcGlj QmFzZU1zci5VaW50NjQgPSBBc21SZWFkTXNyNjQgKE1TUl9JQTMyX0FQSUNfQkFTRSk7DQorICAq SXNCc3AgPSAoQk9PTEVBTikoQXBpY0Jhc2VNc3IuQml0cy5CU1AgPT0gMSk7DQorICByZXR1cm4g RUZJX1NVQ0NFU1M7DQogfQ0KIA0KIC8qKg0KICAgR2V0IHBsYXRmb3JtIHBhZ2UgdGFibGUgYXR0 cmlidXRlLg0KIA0KICAgVGhpcyBmdW5jdGlvbiBnZXRzIHBhZ2UgdGFibGUgYXR0cmlidXRlIG9m IHBsYXRmb3JtLg0KIA0KICAgQHBhcmFtICBBZGRyZXNzICAgICAgICBJbnB1dCBwYXJhbWV0ZXIu IE9idGFpbiB0aGUgcGFnZSB0YWJsZSBlbnRyaWVzDQogICAgICAgICAgICAgICAgICAgICAgICAg IGF0dHJpYnV0ZSBvbiB0aGlzIGFkZHJlc3MuDQogICBAcGFyYW0gIFBhZ2VTaXplICAgICAgIE91 dHB1dCBwYXJhbWV0ZXIuIFRoZSBzaXplIG9mIHRoZSBwYWdlLg0KICAgQHBhcmFtICBOdW1PZlBh Z2VzICAgICBPdXRwdXQgcGFyYW1ldGVyLiBOdW1iZXIgb2YgcGFnZS4NCiAgIEBwYXJhbSAgUGFn ZUF0dHJpYnV0ZSAgT3V0cHV0IHBhcmFtZXRlci4gUGFnaW5nIEF0dHJpYnV0ZXMgKFdCLCBVQywg ZXRjKS4NCiANCiAgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICBUaGUgcGxhdGZvcm0gcGFnZSB0 YWJsZSBhdHRyaWJ1dGUgZnJvbSB0aGUgYWRkcmVzcw0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlzIGRldGVybWluZWQuDQogICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgVGhlIHBsYXRm b3JtIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyBwYWdlIHRhYmxlDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXR0cmlidXRlIGZvciB0aGUgYWRkcmVzcy4NCiANCiAqKi8NCiBFRklfU1RB VFVTDQogRUZJQVBJDQogR2V0UGxhdGZvcm1QYWdlVGFibGVBdHRyaWJ1dGUgKA0KLS0gCjIuMTku MS4zLmczMDI0N2FhNWQyMDEKCgo=