From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.120]) by mx.groups.io with SMTP id smtpd.web10.9644.1582730691902399189 for ; Wed, 26 Feb 2020 07:24:52 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=D2MSNqp8; spf=pass (domain: redhat.com, ip: 207.211.31.120, mailfrom: marcandre.lureau@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582730691; 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=LpJ39lnZgNB4PR2lLbdClnoxnUnBWvFQFrsg4RpUR5w=; b=D2MSNqp815hTqsOhUXllN7cqNpcIBmK08PEclPNpGYgzz2EGHwS6AHVNdqYdSoTLNEJfsP d3Qvs86nvebxTplrj1DDjzwU012Ba6AC89h5NOdC/vX6Rmjdjy+uIWbhsM7eaIqjCNOV6K +IDkKEXlO0n/9F6j4tqH9C6eqoV7fx4= 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-167-sO2C4lgvPyaZZ-UBuScc_w-1; Wed, 26 Feb 2020 10:24:48 -0500 X-MC-Unique: sO2C4lgvPyaZZ-UBuScc_w-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9AFE6107ACCA; Wed, 26 Feb 2020 15:24:47 +0000 (UTC) Received: from localhost (ovpn-112-28.ams2.redhat.com [10.36.112.28]) by smtp.corp.redhat.com (Postfix) with ESMTP id 78471100164D; Wed, 26 Feb 2020 15:24:44 +0000 (UTC) From: marcandre.lureau@redhat.com To: devel@edk2.groups.io Cc: lersek@redhat.com, simon.hardy@itdev.co.uk, stefanb@linux.ibm.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH v4 2/5] OvmfPkg: detect TPM 1.2 in Tcg2ConfigPei Date: Wed, 26 Feb 2020 16:24:30 +0100 Message-Id: <20200226152433.1295789-3-marcandre.lureau@redhat.com> In-Reply-To: <20200226152433.1295789-1-marcandre.lureau@redhat.com> References: <20200226152433.1295789-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 RnJvbTogTWFyYy1BbmRyw6kgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+CgpD b21wbGVtZW50IGNvbW1pdCA2Y2YxODgwZmI1YiAoIk92bWZQa2c6IGFkZCBjdXN0b21pemVkIFRj ZzJDb25maWdQZWkKY2xvbmUiLCAyMDE4LTAzLTA5KSBieSBkZXRlY3RpbmcgVFBNIDEuMiBkZXZp Y2VzLgoKU2luY2UgVHBtMTJSZXF1ZXN0VXNlVHBtKCkgcmV0dXJucyBzdWNjZXNzIG9uIGFueSBU UE0gaW50ZXJmYWNlLAooaW5jbHVkaW5nIEZJRk8gJiBDUkIgd2hpY2ggYXJlIFRQTSAyLjApLCB0 cnkgdG8gc2VuZCBhIEdldFRpY2tzIFRQTQoxLjIgY29tbWFuZCB0byBwcm9iZSB0aGUgdmVyc2lv bi4gSW4gY2FzZSBvZiBmYWlsdXJlLCBmYWxsYmFjayBvbiBUUE0KMi4wIHBhdGguCgpTaWduZWQt b2ZmLWJ5OiBNYXJjLUFuZHLDqSBMdXJlYXUgPG1hcmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNvbT4K UmV2aWV3ZWQtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5 OiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LmlibS5jb20+Ci0tLQogT3ZtZlBrZy9Pdm1m UGtnSWEzMi5kc2MgICAgICAgICAgICAgICAgICB8ICAyICsKIE92bWZQa2cvT3ZtZlBrZ0lhMzJY NjQuZHNjICAgICAgICAgICAgICAgfCAgMiArCiBPdm1mUGtnL092bWZQa2dYNjQuZHNjICAgICAg ICAgICAgICAgICAgIHwgIDIgKwogT3ZtZlBrZy9UY2cvVGNnMkNvbmZpZy9UY2cyQ29uZmlnUGVp LmluZiB8ICAzICsKIE92bWZQa2cvVGNnL1RjZzJDb25maWcvVGNnMkNvbmZpZ1BlaW0uYyAgfCA4 MiArKysrKysrKysrKysrKysrKysrLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9u cygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9Pdm1mUGtnSWEzMi5k c2MgYi9Pdm1mUGtnL092bWZQa2dJYTMyLmRzYwppbmRleCAzOGIwMTNhZDk1NDMuLjI5M2U5NWEy YWU4MSAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9Pdm1mUGtnSWEzMi5kc2MKKysrIGIvT3ZtZlBrZy9P dm1mUGtnSWEzMi5kc2MKQEAgLTIwNiw2ICsyMDYsNyBAQAogICBYZW5QbGF0Zm9ybUxpYnxPdm1m UGtnL0xpYnJhcnkvWGVuUGxhdGZvcm1MaWIvWGVuUGxhdGZvcm1MaWIuaW5mDQogDQogIWlmICQo VFBNX0VOQUJMRSkgPT0gVFJVRQ0KKyAgVHBtMTJDb21tYW5kTGlifFNlY3VyaXR5UGtnL0xpYnJh cnkvVHBtMTJDb21tYW5kTGliL1RwbTEyQ29tbWFuZExpYi5pbmYNCiAgIFRwbTJDb21tYW5kTGli fFNlY3VyaXR5UGtnL0xpYnJhcnkvVHBtMkNvbW1hbmRMaWIvVHBtMkNvbW1hbmRMaWIuaW5mDQog ICBUY2cyUGh5c2ljYWxQcmVzZW5jZUxpYnxPdm1mUGtnL0xpYnJhcnkvVGNnMlBoeXNpY2FsUHJl c2VuY2VMaWJRZW11L0R4ZVRjZzJQaHlzaWNhbFByZXNlbmNlTGliLmluZg0KICAgVGNnMlBwVmVu ZG9yTGlifFNlY3VyaXR5UGtnL0xpYnJhcnkvVGNnMlBwVmVuZG9yTGliTnVsbC9UY2cyUHBWZW5k b3JMaWJOdWxsLmluZg0KQEAgLTI4MSw2ICsyODIsNyBAQAogDQogIWlmICQoVFBNX0VOQUJMRSkg PT0gVFJVRQ0KICAgQmFzZUNyeXB0TGlifENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Q ZWlDcnlwdExpYi5pbmYNCisgIFRwbTEyRGV2aWNlTGlifFNlY3VyaXR5UGtnL0xpYnJhcnkvVHBt MTJEZXZpY2VMaWJEVHBtL1RwbTEyRGV2aWNlTGliRFRwbS5pbmYNCiAgIFRwbTJEZXZpY2VMaWJ8 U2VjdXJpdHlQa2cvTGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yRGV2aWNlTGliRFRwbS5p bmYNCiAhZW5kaWYNCiANCmRpZmYgLS1naXQgYS9Pdm1mUGtnL092bWZQa2dJYTMyWDY0LmRzYyBi L092bWZQa2cvT3ZtZlBrZ0lhMzJYNjQuZHNjCmluZGV4IGUwNzVmMDc2NjkzNS4uNWNmYTNmYzg0 OWZlIDEwMDY0NAotLS0gYS9Pdm1mUGtnL092bWZQa2dJYTMyWDY0LmRzYworKysgYi9Pdm1mUGtn L092bWZQa2dJYTMyWDY0LmRzYwpAQCAtMjExLDYgKzIxMSw3IEBACiAgIFhlblBsYXRmb3JtTGli fE92bWZQa2cvTGlicmFyeS9YZW5QbGF0Zm9ybUxpYi9YZW5QbGF0Zm9ybUxpYi5pbmYNCiANCiAh aWYgJChUUE1fRU5BQkxFKSA9PSBUUlVFDQorICBUcG0xMkNvbW1hbmRMaWJ8U2VjdXJpdHlQa2cv TGlicmFyeS9UcG0xMkNvbW1hbmRMaWIvVHBtMTJDb21tYW5kTGliLmluZg0KICAgVHBtMkNvbW1h bmRMaWJ8U2VjdXJpdHlQa2cvTGlicmFyeS9UcG0yQ29tbWFuZExpYi9UcG0yQ29tbWFuZExpYi5p bmYNCiAgIFRjZzJQaHlzaWNhbFByZXNlbmNlTGlifE92bWZQa2cvTGlicmFyeS9UY2cyUGh5c2lj YWxQcmVzZW5jZUxpYlFlbXUvRHhlVGNnMlBoeXNpY2FsUHJlc2VuY2VMaWIuaW5mDQogICBUY2cy UHBWZW5kb3JMaWJ8U2VjdXJpdHlQa2cvTGlicmFyeS9UY2cyUHBWZW5kb3JMaWJOdWxsL1RjZzJQ cFZlbmRvckxpYk51bGwuaW5mDQpAQCAtMjg2LDYgKzI4Nyw3IEBACiANCiAhaWYgJChUUE1fRU5B QkxFKSA9PSBUUlVFDQogICBCYXNlQ3J5cHRMaWJ8Q3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliL1BlaUNyeXB0TGliLmluZg0KKyAgVHBtMTJEZXZpY2VMaWJ8U2VjdXJpdHlQa2cvTGlicmFy eS9UcG0xMkRldmljZUxpYkRUcG0vVHBtMTJEZXZpY2VMaWJEVHBtLmluZg0KICAgVHBtMkRldmlj ZUxpYnxTZWN1cml0eVBrZy9MaWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJEZXZpY2VMaWJE VHBtLmluZg0KICFlbmRpZg0KIA0KZGlmZiAtLWdpdCBhL092bWZQa2cvT3ZtZlBrZ1g2NC5kc2Mg Yi9Pdm1mUGtnL092bWZQa2dYNjQuZHNjCmluZGV4IDNiMWViZjEyM2I1MS4uNzg0ODFhNjJlMDIx IDEwMDY0NAotLS0gYS9Pdm1mUGtnL092bWZQa2dYNjQuZHNjCisrKyBiL092bWZQa2cvT3ZtZlBr Z1g2NC5kc2MKQEAgLTIxMSw2ICsyMTEsNyBAQAogICBYZW5QbGF0Zm9ybUxpYnxPdm1mUGtnL0xp YnJhcnkvWGVuUGxhdGZvcm1MaWIvWGVuUGxhdGZvcm1MaWIuaW5mDQogDQogIWlmICQoVFBNX0VO QUJMRSkgPT0gVFJVRQ0KKyAgVHBtMTJDb21tYW5kTGlifFNlY3VyaXR5UGtnL0xpYnJhcnkvVHBt MTJDb21tYW5kTGliL1RwbTEyQ29tbWFuZExpYi5pbmYNCiAgIFRwbTJDb21tYW5kTGlifFNlY3Vy aXR5UGtnL0xpYnJhcnkvVHBtMkNvbW1hbmRMaWIvVHBtMkNvbW1hbmRMaWIuaW5mDQogICBUY2cy UGh5c2ljYWxQcmVzZW5jZUxpYnxPdm1mUGtnL0xpYnJhcnkvVGNnMlBoeXNpY2FsUHJlc2VuY2VM aWJRZW11L0R4ZVRjZzJQaHlzaWNhbFByZXNlbmNlTGliLmluZg0KICAgVGNnMlBwVmVuZG9yTGli fFNlY3VyaXR5UGtnL0xpYnJhcnkvVGNnMlBwVmVuZG9yTGliTnVsbC9UY2cyUHBWZW5kb3JMaWJO dWxsLmluZg0KQEAgLTI4Niw2ICsyODcsNyBAQAogDQogIWlmICQoVFBNX0VOQUJMRSkgPT0gVFJV RQ0KICAgQmFzZUNyeXB0TGlifENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlw dExpYi5pbmYNCisgIFRwbTEyRGV2aWNlTGlifFNlY3VyaXR5UGtnL0xpYnJhcnkvVHBtMTJEZXZp Y2VMaWJEVHBtL1RwbTEyRGV2aWNlTGliRFRwbS5pbmYNCiAgIFRwbTJEZXZpY2VMaWJ8U2VjdXJp dHlQa2cvTGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yRGV2aWNlTGliRFRwbS5pbmYNCiAh ZW5kaWYNCiANCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1RjZy9UY2cyQ29uZmlnL1RjZzJDb25maWdQ ZWkuaW5mIGIvT3ZtZlBrZy9UY2cvVGNnMkNvbmZpZy9UY2cyQ29uZmlnUGVpLmluZgppbmRleCBl MzRjZDYyMTA2MTEuLmYzODBiODZiNWQ4OSAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9UY2cvVGNnMkNv bmZpZy9UY2cyQ29uZmlnUGVpLmluZgorKysgYi9Pdm1mUGtnL1RjZy9UY2cyQ29uZmlnL1RjZzJD b25maWdQZWkuaW5mCkBAIC0zMSwxMSArMzEsMTQgQEAKICAgUGVpbUVudHJ5UG9pbnQNCiAgIERl YnVnTGliDQogICBQZWlTZXJ2aWNlc0xpYg0KKyAgVHBtMTJDb21tYW5kTGliDQorICBUcG0xMkRl dmljZUxpYg0KICAgVHBtMkRldmljZUxpYg0KIA0KIFtHdWlkc10NCiAgIGdFZmlUcG1EZXZpY2VT ZWxlY3RlZEd1aWQgICAgICAgICAgICMjIFBST0RVQ0VTICMjIEdVSUQgIyBVc2VkIGFzIGEgUFBJ IEdVSUQNCiAgIGdFZmlUcG1EZXZpY2VJbnN0YW5jZVRwbTIwRHRwbUd1aWQgICMjIFNPTUVUSU1F U19DT05TVU1FUw0KKyAgZ0VmaVRwbURldmljZUluc3RhbmNlVHBtMTJHdWlkICAgICAgIyMgU09N RVRJTUVTX0NPTlNVTUVTDQogDQogW1BwaXNdDQogICBnUGVpVHBtSW5pdGlhbGl6YXRpb25Eb25l UHBpR3VpZCAgICAjIyBTT01FVElNRVNfUFJPRFVDRVMNCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1Rj Zy9UY2cyQ29uZmlnL1RjZzJDb25maWdQZWltLmMgYi9Pdm1mUGtnL1RjZy9UY2cyQ29uZmlnL1Rj ZzJDb25maWdQZWltLmMKaW5kZXggOTlkNTcxZDlmYTZkLi41YjUwNzViZGVkOTIgMTAwNjQ0Ci0t LSBhL092bWZQa2cvVGNnL1RjZzJDb25maWcvVGNnMkNvbmZpZ1BlaW0uYworKysgYi9Pdm1mUGtn L1RjZy9UY2cyQ29uZmlnL1RjZzJDb25maWdQZWltLmMKQEAgLTE4LDYgKzE4LDggQEAKICNpbmNs dWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQogI2luY2x1ZGUgPExpYnJhcnkvUGVpU2VydmljZXNM aWIuaD4NCiAjaW5jbHVkZSA8TGlicmFyeS9UcG0yRGV2aWNlTGliLmg+DQorI2luY2x1ZGUgPExp YnJhcnkvVHBtMTJEZXZpY2VMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9UcG0xMkNvbW1hbmRM aWIuaD4NCiAjaW5jbHVkZSA8UHBpL1RwbUluaXRpYWxpemVkLmg+DQogDQogU1RBVElDIENPTlNU IEVGSV9QRUlfUFBJX0RFU0NSSVBUT1IgbVRwbVNlbGVjdGVkUHBpID0gew0KQEAgLTMyLDYgKzM0 LDQ0IEBAIFNUQVRJQyBDT05TVCBFRklfUEVJX1BQSV9ERVNDUklQVE9SICBtVHBtSW5pdGlhbGl6 YXRpb25Eb25lUHBpTGlzdCA9IHsKICAgTlVMTA0KIH07DQogDQorI3ByYWdtYSBwYWNrICgxKQ0K Kw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFRQTV9SU1BfQ09NTUFORF9IRFIgICBIZHI7DQorICBU UE1fQ1VSUkVOVF9USUNLUyAgICAgQ3VycmVudFRpY2tzOw0KK30gVFBNX1JTUF9HRVRfVElDS1M7 DQorDQorI3ByYWdtYSBwYWNrICgpDQorDQorLyoqDQorICBQcm9iZSBmb3IgdGhlIFRQTSBmb3Ig MS4yIHZlcnNpb24sIGJ5IHNlbmRpbmcgVFBNMS4yIEdldFRpY2tzDQorDQorICBTZW5kaW5nIGEg VFBNMS4yIGNvbW1hbmQgdG8gYSBUUE0yIHNob3VsZCByZXR1cm4gYSBUUE0xLjINCisgIGhlYWRl ciAodGFnID0gMHhjNCkgYW5kIGVycm9yIGNvZGUgKFRQTV9CQURUQUcgPSAweDFlKQ0KKyoqLw0K K3N0YXRpYw0KK0VGSV9TVEFUVVMNCitUZXN0VHBtMTIgKA0KKyAgKQ0KK3sNCisgIEVGSV9TVEFU VVMgICAgICAgICAgIFN0YXR1czsNCisgIFRQTV9SUVVfQ09NTUFORF9IRFIgIENvbW1hbmQ7DQor ICBUUE1fUlNQX0dFVF9USUNLUyAgICBSZXNwb25zZTsNCisgIFVJTlQzMiAgICAgICAgICAgICAg IExlbmd0aDsNCisNCisgIENvbW1hbmQudGFnICAgICAgID0gU3dhcEJ5dGVzMTYgKFRQTV9UQUdf UlFVX0NPTU1BTkQpOw0KKyAgQ29tbWFuZC5wYXJhbVNpemUgPSBTd2FwQnl0ZXMzMiAoc2l6ZW9m IChDb21tYW5kKSk7DQorICBDb21tYW5kLm9yZGluYWwgICA9IFN3YXBCeXRlczMyIChUUE1fT1JE X0dldFRpY2tzKTsNCisNCisgIExlbmd0aCA9IHNpemVvZiAoUmVzcG9uc2UpOw0KKyAgU3RhdHVz ID0gVHBtMTJTdWJtaXRDb21tYW5kIChzaXplb2YgKENvbW1hbmQpLCAoVUlOVDggKikmQ29tbWFu ZCwgJkxlbmd0aCwgKFVJTlQ4ICopJlJlc3BvbnNlKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIHJldHVybiBFRklfU1VDQ0VT UzsNCit9DQorDQogLyoqDQogICBUaGUgZW50cnkgcG9pbnQgZm9yIFRjZzIgY29uZmlndXJhdGlv biBkcml2ZXIuDQogDQpAQCAtNTAsMjcgKzkwLDM5IEBAIFRjZzJDb25maWdQZWltRW50cnlQb2lu dCAoCiANCiAgIERFQlVHICgoREVCVUdfSU5GTywgIiVhXG4iLCBfX0ZVTkNUSU9OX18pKTsNCiAN Ci0gIFN0YXR1cyA9IFRwbTJSZXF1ZXN0VXNlVHBtICgpOw0KLSAgaWYgKCFFRklfRVJST1IgKFN0 YXR1cykpIHsNCi0gICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IFRQTTIgZGV0ZWN0ZWRcbiIs IF9fRlVOQ1RJT05fXykpOw0KLSAgICBTaXplID0gc2l6ZW9mIChnRWZpVHBtRGV2aWNlSW5zdGFu Y2VUcG0yMER0cG1HdWlkKTsNCisgIFN0YXR1cyA9IFRwbTEyUmVxdWVzdFVzZVRwbSAoKTsNCisg IGlmICghRUZJX0VSUk9SIChTdGF0dXMpICYmICFFRklfRVJST1IgKFRlc3RUcG0xMiAoKSkpIHsN CisgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IFRQTTEuMiBkZXRlY3RlZFxuIiwgX19GVU5D VElPTl9fKSk7DQorICAgIFNpemUgPSBzaXplb2YgKGdFZmlUcG1EZXZpY2VJbnN0YW5jZVRwbTEy R3VpZCk7DQogICAgIFN0YXR1cyA9IFBjZFNldFB0clMgKA0KICAgICAgICAgICAgICAgIFBjZFRw bUluc3RhbmNlR3VpZCwNCiAgICAgICAgICAgICAgICAmU2l6ZSwNCi0gICAgICAgICAgICAgICAm Z0VmaVRwbURldmljZUluc3RhbmNlVHBtMjBEdHBtR3VpZA0KKyAgICAgICAgICAgICAgICZnRWZp VHBtRGV2aWNlSW5zdGFuY2VUcG0xMkd1aWQNCiAgICAgICAgICAgICAgICApOw0KICAgICBBU1NF UlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KICAgfSBlbHNlIHsNCi0gICAgREVCVUcgKChERUJVR19J TkZPLCAiJWE6IG5vIFRQTTIgZGV0ZWN0ZWRcbiIsIF9fRlVOQ1RJT05fXykpOw0KLSAgICAvLw0K LSAgICAvLyBJZiBubyBUUE0yIHdhcyBkZXRlY3RlZCwgd2Ugc3RpbGwgbmVlZCB0byBpbnN0YWxs DQotICAgIC8vIFRwbUluaXRpYWxpemF0aW9uRG9uZVBwaS4gTmFtZWx5LCBUY2cyUGVpIHdpbGwg ZXhpdCBlYXJseSB1cG9uIHNlZWluZw0KLSAgICAvLyB0aGUgZGVmYXVsdCAoYWxsLWJpdHMtemVy bykgY29udGVudHMgb2YgUGNkVHBtSW5zdGFuY2VHdWlkLCB0aHVzIHdlIGhhdmUNCi0gICAgLy8g dG8gaW5zdGFsbCB0aGUgUFBJIGluIGl0cyBwbGFjZSwgaW4gb3JkZXIgdG8gdW5ibG9jayBhbnkg ZGVwZW5kZW50DQotICAgIC8vIFBFSU1zLg0KLSAgICAvLw0KLSAgICBTdGF0dXMgPSBQZWlTZXJ2 aWNlc0luc3RhbGxQcGkgKCZtVHBtSW5pdGlhbGl6YXRpb25Eb25lUHBpTGlzdCk7DQotICAgIEFT U0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQorICAgIFN0YXR1cyA9IFRwbTJSZXF1ZXN0VXNlVHBt ICgpOw0KKyAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAgIERFQlVHICgoREVC VUdfSU5GTywgIiVhOiBUUE0yIGRldGVjdGVkXG4iLCBfX0ZVTkNUSU9OX18pKTsNCisgICAgICBT aXplID0gc2l6ZW9mIChnRWZpVHBtRGV2aWNlSW5zdGFuY2VUcG0yMER0cG1HdWlkKTsNCisgICAg ICBTdGF0dXMgPSBQY2RTZXRQdHJTICgNCisgICAgICAgICAgICAgICAgIFBjZFRwbUluc3RhbmNl R3VpZCwNCisgICAgICAgICAgICAgICAgICZTaXplLA0KKyAgICAgICAgICAgICAgICAgJmdFZmlU cG1EZXZpY2VJbnN0YW5jZVRwbTIwRHRwbUd1aWQNCisgICAgICAgICAgICAgICAgICk7DQorICAg ICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCisgICAgfSBlbHNlIHsNCisgICAgICBERUJV RyAoKERFQlVHX0lORk8sICIlYTogbm8gVFBNIGRldGVjdGVkXG4iLCBfX0ZVTkNUSU9OX18pKTsN CisgICAgICAvLw0KKyAgICAgIC8vIElmIG5vIFRQTTIgd2FzIGRldGVjdGVkLCB3ZSBzdGlsbCBu ZWVkIHRvIGluc3RhbGwNCisgICAgICAvLyBUcG1Jbml0aWFsaXphdGlvbkRvbmVQcGkuIE5hbWVs eSwgVGNnMlBlaSB3aWxsIGV4aXQgZWFybHkgdXBvbiBzZWVpbmcNCisgICAgICAvLyB0aGUgZGVm YXVsdCAoYWxsLWJpdHMtemVybykgY29udGVudHMgb2YgUGNkVHBtSW5zdGFuY2VHdWlkLCB0aHVz IHdlIGhhdmUNCisgICAgICAvLyB0byBpbnN0YWxsIHRoZSBQUEkgaW4gaXRzIHBsYWNlLCBpbiBv cmRlciB0byB1bmJsb2NrIGFueSBkZXBlbmRlbnQNCisgICAgICAvLyBQRUlNcy4NCisgICAgICAv Lw0KKyAgICAgIFN0YXR1cyA9IFBlaVNlcnZpY2VzSW5zdGFsbFBwaSAoJm1UcG1Jbml0aWFsaXph dGlvbkRvbmVQcGlMaXN0KTsNCisgICAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KKyAg ICB9DQogICB9DQogDQogICAvLw0KLS0gCjIuMjUuMC5yYzIuMS5nMDlhOWExYTk5NwoK