From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=216.205.24.162; helo=us-smtp-delivery-162.mimecast.com; envelope-from=eugene@hp.com; receiver=edk2-devel@lists.01.org Received: from us-smtp-delivery-162.mimecast.com (us-smtp-delivery-162.mimecast.com [216.205.24.162]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id F14BB2118FF00 for ; Tue, 13 Nov 2018 14:12:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hp.com; s=mimecast20180716; t=1542147168; h=from:from:sender: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: references; bh=+BREa2j69KHr+irYcndI3VFXMlBXYQXlDmIO00AYfOE=; b=jhi/4jbbCWu0bDYIWxWnLYGGdAzy/Bw5L380KUXKHgFB2HJwsvfcYbgszpPIangxSBnxO3UP1hOz1w6SoOLYOkXqhtngwKVK75cbwV3F/VvmzmbSkaEqqEUonZS3rKgYKVIn1JMA9GePbrJKxmuLLoYytYMx6Hi42Dhle3naAWw= Received: from NAM05-CO1-obe.outbound.protection.outlook.com (mail-co1nam05lp0079.outbound.protection.outlook.com [216.32.181.79]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-61-m0Sm6jw_PfGjgHB2Y-WGnQ-1; Tue, 13 Nov 2018 17:12:46 -0500 Received: from CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM (10.169.97.20) by CS1PR8401MB0485.NAMPRD84.PROD.OUTLOOK.COM (10.169.13.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1339.21; Tue, 13 Nov 2018 22:12:45 +0000 Received: from CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM ([fe80::d41f:6ad6:8b6f:26ca]) by CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM ([fe80::d41f:6ad6:8b6f:26ca%4]) with mapi id 15.20.1294.045; Tue, 13 Nov 2018 22:12:44 +0000 From: "Cohen, Eugene" To: "edk2-devel@lists.01.org" , "Yao, Jiewen" , "Zhang, Chao B" CC: =?ks_c_5601-1987?B?QmluLCBTdW5nLVVrICi687y6v+0p?= Thread-Topic: [PATCH 4/4] SecurityPkg: convert Tpm2DeviceLibDTpm to use TpmIoLib Thread-Index: AdR7nZuEnikhJzBUSvy94yMeB0x4vA== Date: Tue, 13 Nov 2018 22:12:44 +0000 Message-ID: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [15.65.252.15] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CS1PR8401MB0485; 6:26NVXW3ti/mntkx9IxPargxRkbC+VBj4J3WkQGPawkYOItmcu4niE1SLhRs3GPU6OCcPMVVMMJZ7/m6XoLjG4uiiMaBMLjIqqy93ttHwMFVpKMyMrAHibr7QmEDyuo1AHgFVw+7Fw2CaX46knqnOBhbw9WM+xay+/ySXUpAX/0bS62c8Ti8LQTxuz0bWP/BOD1Dpzavc2xVgHHgzxCQcqC5DNa0ixXsTVfIq9W4FHotfn2efJG/ioA7vHVlLOVDqCdDtIRcERJ1l1iBcgWv9UFtJlhlDeyp5DwMQgeoaDxaChZcfHxI6NyGLDFoQyftuYgdwx+k6dWXQZexBvw5vToDWqeK3qmouPYAcyrjUFiqAOc3Ooqq2pkgjEzIZjFU93eGyFpjQs/1+LPT6GvJQ6YNG5oW3izpsVJqayWeFdF1u+dy+TXRIjwsyDwn5w7YRpzPw62HtLVJsYftJQzNRSQ==; 5:g7aTDys3UGkXE5SB9xwk5q0qw8BXp8zSVu3qEUWt4CoO8Nm284l6jJItdF1tqphG5nSzuFS+LfpsBPhZrBZE23z3FRwq7HqshYKOmDoPDhf6FZZ/0Ax42+PklEL8Q/4Mmq21IEWgC0obSB0dqpagH/Z77oq94sW82K3SSdB0Aro=; 7:wStxe9+vHi03N55f2cthRAeg7+PEvU1r75oRe6HGOfahe58gCAcPuChvcCkC5BibdkamK2VWvlsNcq3BGl+cScl3L40R/htI8l4PvRRuWftblbPFQgc3ovP729PWMb5NI0v6aTHF2OQOqJbPMTpRRQ== x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10019020)(6029001)(396003)(39860400002)(136003)(376002)(366004)(346002)(6602003)(199004)(189003)(2501003)(71190400001)(97736004)(4744004)(55016002)(305945005)(2900100001)(71200400001)(7736002)(19627235002)(256004)(14444005)(102836004)(9686003)(110136005)(6506007)(478600001)(14454004)(74316002)(53936002)(86362001)(4326008)(6436002)(186003)(26005)(316002)(81166006)(105586002)(5660300001)(8936002)(2906002)(486006)(25786009)(81156014)(8676002)(106356001)(66066001)(68736007)(3846002)(476003)(15650500001)(6116002)(33656002)(99286004)(7696005); DIR:OUT; SFP:1102; SCL:1; SRVR:CS1PR8401MB0485; H:CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-ms-office365-filtering-correlation-id: fb867412-6975-464d-99ac-08d649b52305 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390060)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:CS1PR8401MB0485; x-ms-traffictypediagnostic: CS1PR8401MB0485: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231410)(944501410)(52105112)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:CS1PR8401MB0485; BCL:0; PCL:0; RULEID:; SRVR:CS1PR8401MB0485; x-forefront-prvs: 085551F5A8 x-microsoft-antispam-message-info: a0TZhmi9729FMi4BP1iIkmAyXqFHRzP9MISyYMoOMB9kZx+VTQz3KBO6Q9eakEPwToQYtysBTUEgclhUfizGXad5jiopeNJ2G0pSnPFC2gLat5fDCLXpVFzmcBj34uY43tYM3qYZTvo3HZpPbJ09BdDKiNDQrlQeWBHUjQL2XvBlNcJF7QQ8tUC2k2cN5b82dzdQ9Lp9hixN33bLu8eXpRcQgc3wdFHVAa7FxXvxC+RA1fuyy4RVu4nGt22oy8tmT0sORFt1ZO9N4MflPLnKvYqbkl8E7op+FvWa6IbcFsNdfVS0ufh0eUrYi+hDV+SuxHHaU4TrMRyFufvlo26BCJ9PlM6YvhDTj4lkisyOwM0= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb867412-6975-464d-99ac-08d649b52305 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Nov 2018 22:12:44.2989 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: ca7981a2-785a-463d-b82a-3db87dfc3ce6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0485 X-MC-Unique: m0Sm6jw_PfGjgHB2Y-WGnQ-1 Subject: [PATCH 4/4] SecurityPkg: convert Tpm2DeviceLibDTpm to use TpmIoLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Nov 2018 22:12:49 -0000 Content-Language: en-US Content-Type: text/plain; charset=KS_C_5601-1987 Content-Transfer-Encoding: base64 U2VjdXJpdHlQa2c6IGNvbnZlcnQgVHBtMkRldmljZUxpYkRUcG0gdG8gdXNlIFRwbUlvTGliDQoN CkNvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjEN CkNjOiBDaGFvIFpoYW5nIDxjaGFvLmIuemhhbmdAaW50ZWwuY29tPg0KQ2M6IEppZXdlbiBZYW8g PGppZXdlbi55YW9AaW50ZWwuY29tPg0KU2lnbmVkLW9mZi1ieTogRXVnZW5lIENvaGVuIDxldWdl bmVAaHAuY29tPg0KLS0tDQogU2VjdXJpdHlQa2cvTGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9U cG0yRGV2aWNlTGliRFRwbS5pbmYgICB8ICAyICstDQogU2VjdXJpdHlQa2cvTGlicmFyeS9UcG0y RGV2aWNlTGliRFRwbS9UcG0ySW5zdGFuY2VMaWJEVHBtLmluZiB8ICAyICstDQogU2VjdXJpdHlQ a2cvTGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yUHRwLmMgICAgICAgICAgICAgICB8IDYw ICsrKysrKysrKystLS0tLS0tLS0tDQogU2VjdXJpdHlQa2cvTGlicmFyeS9UcG0yRGV2aWNlTGli RFRwbS9UcG0yVGlzLmMgICAgICAgICAgICAgICB8IDI4ICsrKystLS0tLQ0KIDQgZmlsZXMgY2hh bmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9T ZWN1cml0eVBrZy9MaWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJEZXZpY2VMaWJEVHBtLmlu ZiBiL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkRldmljZUxpYkRU cG0uaW5mDQppbmRleCBjNmQyM2M5Li4yZGE4OTQ5IDEwMDY0NA0KLS0tIGEvU2VjdXJpdHlQa2cv TGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yRGV2aWNlTGliRFRwbS5pbmYNCisrKyBiL1Nl Y3VyaXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkRldmljZUxpYkRUcG0uaW5m DQpAQCAtNDcsNyArNDcsNyBAQA0KIFtMaWJyYXJ5Q2xhc3Nlc10NCiAgIEJhc2VMaWINCiAgIEJh c2VNZW1vcnlMaWINCi0gIElvTGliDQorICBUcG1Jb0xpYg0KICAgVGltZXJMaWINCiAgIERlYnVn TGliDQogICBQY2RMaWINCmRpZmYgLS1naXQgYS9TZWN1cml0eVBrZy9MaWJyYXJ5L1RwbTJEZXZp Y2VMaWJEVHBtL1RwbTJJbnN0YW5jZUxpYkRUcG0uaW5mIGIvU2VjdXJpdHlQa2cvTGlicmFyeS9U cG0yRGV2aWNlTGliRFRwbS9UcG0ySW5zdGFuY2VMaWJEVHBtLmluZg0KaW5kZXggMTRlNWUyZS4u NGRlNzZhMyAxMDA2NDQNCi0tLSBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRU cG0vVHBtMkluc3RhbmNlTGliRFRwbS5pbmYNCisrKyBiL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBt MkRldmljZUxpYkRUcG0vVHBtMkluc3RhbmNlTGliRFRwbS5pbmYNCkBAIC00Myw3ICs0Myw3IEBA DQogW0xpYnJhcnlDbGFzc2VzXQ0KICAgQmFzZUxpYg0KICAgQmFzZU1lbW9yeUxpYg0KLSAgSW9M aWINCisgIFRwbUlvTGliDQogICBUaW1lckxpYg0KICAgRGVidWdMaWINCiAgIFBjZExpYg0KZGlm ZiAtLWdpdCBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMlB0cC5j IGIvU2VjdXJpdHlQa2cvTGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yUHRwLmMNCmluZGV4 IGFkMmYxODguLjY1MjU0MTYgMTAwNjQ0DQotLS0gYS9TZWN1cml0eVBrZy9MaWJyYXJ5L1RwbTJE ZXZpY2VMaWJEVHBtL1RwbTJQdHAuYw0KKysrIGIvU2VjdXJpdHlQa2cvTGlicmFyeS9UcG0yRGV2 aWNlTGliRFRwbS9UcG0yUHRwLmMNCkBAIC0xNiw3ICsxNiw3IEBAIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJ RUQuDQogDQogI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KICNpbmNsdWRlIDxMaWJyYXJ5 L0Jhc2VNZW1vcnlMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0KKyNpbmNsdWRl IDxMaWJyYXJ5L1RwbUlvTGliLmg+DQogI2luY2x1ZGUgPExpYnJhcnkvVGltZXJMaWIuaD4NCiAj aW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KICNpbmNsdWRlIDxMaWJyYXJ5L1RwbTJEZXZp Y2VMaWIuaD4NCkBAIC01MSw3ICs1MSw3IEBAIFRwbTJJc1B0cFByZXNlbmNlICgNCiB7DQogICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnUmVhZDsNCiANCi0gIFJlZ1JlYWQg PSBNbWlvUmVhZDggKChVSU5UTilSZWcpOw0KKyAgUmVnUmVhZCA9IFRwbVJlYWQ4ICgoVUlOVE4p UmVnKTsNCiAgIGlmIChSZWdSZWFkID09IDB4RkYpIHsNCiAgICAgLy8NCiAgICAgLy8gTm8gVFBN IGNoaXANCkBAIC04NCw3ICs4NCw3IEBAIFB0cENyYldhaXRSZWdpc3RlckJpdHMgKA0KICAgVUlO VDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhaXRUaW1lOw0KIA0KICAgZm9yIChXYWl0 VGltZSA9IDA7IFdhaXRUaW1lIDwgVGltZU91dDsgV2FpdFRpbWUgKz0gMzApew0KLSAgICBSZWdS ZWFkID0gTW1pb1JlYWQzMiAoKFVJTlROKVJlZ2lzdGVyKTsNCisgICAgUmVnUmVhZCA9IFRwbVJl YWQzMiAoKFVJTlROKVJlZ2lzdGVyKTsNCiAgICAgaWYgKChSZWdSZWFkICYgQml0U2V0KSA9PSBC aXRTZXQgJiYgKFJlZ1JlYWQgJiBCaXRDbGVhcikgPT0gMCkgew0KICAgICAgIHJldHVybiBFRklf U1VDQ0VTUzsNCiAgICAgfQ0KQEAgLTExNCw3ICsxMTQsNyBAQCBQdHBDcmJSZXF1ZXN0VXNlVHBt ICgNCiAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQogICB9DQogDQotICBNbWlvV3JpdGUzMigo VUlOVE4pJkNyYlJlZy0+TG9jYWxpdHlDb250cm9sLCBQVFBfQ1JCX0xPQ0FMSVRZX0NPTlRST0xf UkVRVUVTVF9BQ0NFU1MpOw0KKyAgVHBtV3JpdGUzMigoVUlOVE4pJkNyYlJlZy0+TG9jYWxpdHlD b250cm9sLCBQVFBfQ1JCX0xPQ0FMSVRZX0NPTlRST0xfUkVRVUVTVF9BQ0NFU1MpOw0KICAgU3Rh dHVzID0gUHRwQ3JiV2FpdFJlZ2lzdGVyQml0cyAoDQogICAgICAgICAgICAgICZDcmJSZWctPkxv Y2FsaXR5U3RhdHVzLA0KICAgICAgICAgICAgICBQVFBfQ1JCX0xPQ0FMSVRZX1NUQVRVU19HUkFO VEVELA0KQEAgLTE4MCw3ICsxODAsNyBAQCBQdHBDcmJUcG1Db21tYW5kICgNCiAgIC8vIFNURVAg MDoNCiAgIC8vIGlmIENhcENSYklkZWxCeVBhc3MgPT0gMCwgZW5mb3JjZSBJZGxlIHN0YXRlIGJl Zm9yZSBzZW5kaW5nIGNvbW1hbmQNCiAgIC8vDQotICBpZiAoUGNkR2V0OChQY2RDUkJJZGxlQnlQ YXNzKSA9PSAwICYmIChNbWlvUmVhZDMyKChVSU5UTikmQ3JiUmVnLT5DcmJDb250cm9sU3RhdHVz KSAmIFBUUF9DUkJfQ09OVFJPTF9BUkVBX1NUQVRVU19UUE1fSURMRSkgPT0gMCl7DQorICBpZiAo UGNkR2V0OChQY2RDUkJJZGxlQnlQYXNzKSA9PSAwICYmIChUcG1SZWFkMzIoKFVJTlROKSZDcmJS ZWctPkNyYkNvbnRyb2xTdGF0dXMpICYgUFRQX0NSQl9DT05UUk9MX0FSRUFfU1RBVFVTX1RQTV9J RExFKSA9PSAwKXsNCiAgICAgU3RhdHVzID0gUHRwQ3JiV2FpdFJlZ2lzdGVyQml0cyAoDQogICAg ICAgICAgICAgICAmQ3JiUmVnLT5DcmJDb250cm9sU3RhdHVzLA0KICAgICAgICAgICAgICAgUFRQ X0NSQl9DT05UUk9MX0FSRUFfU1RBVFVTX1RQTV9JRExFLA0KQEAgLTIwMiw3ICsyMDIsNyBAQCBQ dHBDcmJUcG1Db21tYW5kICgNCiAgIC8vIG9mIDEgYnkgc29mdHdhcmUgdG8gUmVxdWVzdC5jbWRS ZWFkeSwgYXMgaW5kaWNhdGVkIGJ5IHRoZSBTdGF0dXMgZmllbGQNCiAgIC8vIGJlaW5nIGNsZWFy ZWQgdG8gMC4NCiAgIC8vDQotICBNbWlvV3JpdGUzMigoVUlOVE4pJkNyYlJlZy0+Q3JiQ29udHJv bFJlcXVlc3QsIFBUUF9DUkJfQ09OVFJPTF9BUkVBX1JFUVVFU1RfQ09NTUFORF9SRUFEWSk7DQor ICBUcG1Xcml0ZTMyKChVSU5UTikmQ3JiUmVnLT5DcmJDb250cm9sUmVxdWVzdCwgUFRQX0NSQl9D T05UUk9MX0FSRUFfUkVRVUVTVF9DT01NQU5EX1JFQURZKTsNCiAgIFN0YXR1cyA9IFB0cENyYldh aXRSZWdpc3RlckJpdHMgKA0KICAgICAgICAgICAgICAmQ3JiUmVnLT5DcmJDb250cm9sUmVxdWVz dCwNCiAgICAgICAgICAgICAgMCwNCkBAIC0yMzEsMjEgKzIzMSwyMSBAQCBQdHBDcmJUcG1Db21t YW5kICgNCiAgIC8vIG9mIDEgdG8gU3RhcnQuDQogICAvLw0KICAgZm9yIChJbmRleCA9IDA7IElu ZGV4IDwgU2l6ZUluOyBJbmRleCsrKSB7DQotICAgIE1taW9Xcml0ZTggKChVSU5UTikmQ3JiUmVn LT5DcmJEYXRhQnVmZmVyW0luZGV4XSwgQnVmZmVySW5bSW5kZXhdKTsNCisgICAgVHBtV3JpdGU4 ICgoVUlOVE4pJkNyYlJlZy0+Q3JiRGF0YUJ1ZmZlcltJbmRleF0sIEJ1ZmZlckluW0luZGV4XSk7 DQogICB9DQotICBNbWlvV3JpdGUzMiAoKFVJTlROKSZDcmJSZWctPkNyYkNvbnRyb2xDb21tYW5k QWRkcmVzc0hpZ2gsIChVSU5UMzIpUlNoaWZ0VTY0ICgoVUlOVE4pQ3JiUmVnLT5DcmJEYXRhQnVm ZmVyLCAzMikpOw0KLSAgTW1pb1dyaXRlMzIgKChVSU5UTikmQ3JiUmVnLT5DcmJDb250cm9sQ29t bWFuZEFkZHJlc3NMb3csIChVSU5UMzIpKFVJTlROKUNyYlJlZy0+Q3JiRGF0YUJ1ZmZlcik7DQot ICBNbWlvV3JpdGUzMiAoKFVJTlROKSZDcmJSZWctPkNyYkNvbnRyb2xDb21tYW5kU2l6ZSwgc2l6 ZW9mKENyYlJlZy0+Q3JiRGF0YUJ1ZmZlcikpOw0KKyAgVHBtV3JpdGUzMiAoKFVJTlROKSZDcmJS ZWctPkNyYkNvbnRyb2xDb21tYW5kQWRkcmVzc0hpZ2gsIChVSU5UMzIpUlNoaWZ0VTY0ICgoVUlO VE4pQ3JiUmVnLT5DcmJEYXRhQnVmZmVyLCAzMikpOw0KKyAgVHBtV3JpdGUzMiAoKFVJTlROKSZD cmJSZWctPkNyYkNvbnRyb2xDb21tYW5kQWRkcmVzc0xvdywgKFVJTlQzMikoVUlOVE4pQ3JiUmVn LT5DcmJEYXRhQnVmZmVyKTsNCisgIFRwbVdyaXRlMzIgKChVSU5UTikmQ3JiUmVnLT5DcmJDb250 cm9sQ29tbWFuZFNpemUsIHNpemVvZihDcmJSZWctPkNyYkRhdGFCdWZmZXIpKTsNCiANCi0gIE1t aW9Xcml0ZTY0ICgoVUlOVE4pJkNyYlJlZy0+Q3JiQ29udHJvbFJlc3BvbnNlQWRkcnNzLCAoVUlO VDMyKShVSU5UTilDcmJSZWctPkNyYkRhdGFCdWZmZXIpOw0KLSAgTW1pb1dyaXRlMzIgKChVSU5U TikmQ3JiUmVnLT5DcmJDb250cm9sUmVzcG9uc2VTaXplLCBzaXplb2YoQ3JiUmVnLT5DcmJEYXRh QnVmZmVyKSk7DQorICBUcG1Xcml0ZTY0ICgoVUlOVE4pJkNyYlJlZy0+Q3JiQ29udHJvbFJlc3Bv bnNlQWRkcnNzLCAoVUlOVDMyKShVSU5UTilDcmJSZWctPkNyYkRhdGFCdWZmZXIpOw0KKyAgVHBt V3JpdGUzMiAoKFVJTlROKSZDcmJSZWctPkNyYkNvbnRyb2xSZXNwb25zZVNpemUsIHNpemVvZihD cmJSZWctPkNyYkRhdGFCdWZmZXIpKTsNCiANCiAgIC8vDQogICAvLyBTVEVQIDM6DQogICAvLyBD b21tYW5kIEV4ZWN1dGlvbiBvY2N1cnMgYWZ0ZXIgcmVjZWlwdCBvZiBhIDEgdG8gU3RhcnQgYW5k IHRoZSBUUE0NCiAgIC8vIGNsZWFyaW5nIFN0YXJ0IHRvIDAuDQogICAvLw0KLSAgTW1pb1dyaXRl MzIoKFVJTlROKSZDcmJSZWctPkNyYkNvbnRyb2xTdGFydCwgUFRQX0NSQl9DT05UUk9MX1NUQVJU KTsNCisgIFRwbVdyaXRlMzIoKFVJTlROKSZDcmJSZWctPkNyYkNvbnRyb2xTdGFydCwgUFRQX0NS Ql9DT05UUk9MX1NUQVJUKTsNCiAgIFN0YXR1cyA9IFB0cENyYldhaXRSZWdpc3RlckJpdHMgKA0K ICAgICAgICAgICAgICAmQ3JiUmVnLT5DcmJDb250cm9sU3RhcnQsDQogICAgICAgICAgICAgIDAs DQpAQCAtMjU3LDE0ICsyNTcsMTQgQEAgUHRwQ3JiVHBtQ29tbWFuZCAoDQogICAgIC8vIENvbW1h bmQgQ29tcGxldGlvbiBjaGVjayB0aW1lb3V0LiBDYW5jZWwgdGhlIGN1cnJlbnRseSBleGVjdXRp bmcgY29tbWFuZCBieSB3cml0aW5nIFRQTV9DUkJfQ1RSTF9DQU5DRUwsDQogICAgIC8vIEV4cGVj dCBUUE1fUkNfQ0FOQ0VMTEVEIG9yIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgcmVzcG9uc2UuDQog ICAgIC8vDQotICAgIE1taW9Xcml0ZTMyKChVSU5UTikmQ3JiUmVnLT5DcmJDb250cm9sQ2FuY2Vs LCBQVFBfQ1JCX0NPTlRST0xfQ0FOQ0VMKTsNCisgICAgVHBtV3JpdGUzMigoVUlOVE4pJkNyYlJl Zy0+Q3JiQ29udHJvbENhbmNlbCwgUFRQX0NSQl9DT05UUk9MX0NBTkNFTCk7DQogICAgIFN0YXR1 cyA9IFB0cENyYldhaXRSZWdpc3RlckJpdHMgKA0KICAgICAgICAgICAgICAgICZDcmJSZWctPkNy YkNvbnRyb2xTdGFydCwNCiAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgIFBUUF9D UkJfQ09OVFJPTF9TVEFSVCwNCiAgICAgICAgICAgICAgICBQVFBfVElNRU9VVF9CDQogICAgICAg ICAgICAgICAgKTsNCi0gICAgTW1pb1dyaXRlMzIoKFVJTlROKSZDcmJSZWctPkNyYkNvbnRyb2xD YW5jZWwsIDApOw0KKyAgICBUcG1Xcml0ZTMyKChVSU5UTikmQ3JiUmVnLT5DcmJDb250cm9sQ2Fu Y2VsLCAwKTsNCiANCiAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQogICAgICAgLy8NCkBA IC0yODYsNyArMjg2LDcgQEAgUHRwQ3JiVHBtQ29tbWFuZCAoDQogICAvLyBHZXQgcmVzcG9uc2Ug ZGF0YSBoZWFkZXINCiAgIC8vDQogICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBzaXplb2YgKFRQ TTJfUkVTUE9OU0VfSEVBREVSKTsgSW5kZXgrKykgew0KLSAgICBCdWZmZXJPdXRbSW5kZXhdID0g TW1pb1JlYWQ4ICgoVUlOVE4pJkNyYlJlZy0+Q3JiRGF0YUJ1ZmZlcltJbmRleF0pOw0KKyAgICBC dWZmZXJPdXRbSW5kZXhdID0gVHBtUmVhZDggKChVSU5UTikmQ3JiUmVnLT5DcmJEYXRhQnVmZmVy W0luZGV4XSk7DQogICB9DQogICBERUJVR19DT0RFICgNCiAgICAgREVCVUcgKChFRklfRF9WRVJC T1NFLCAiUHRwQ3JiVHBtQ29tbWFuZCBSZWNlaXZlSGVhZGVyIC0gIikpOw0KQEAgLTMyMCw3ICsz MjAsNyBAQCBQdHBDcmJUcG1Db21tYW5kICgNCiAgIC8vIENvbnRpbnVlIHJlYWRpbmcgdGhlIHJl bWFpbmluZyBkYXRhDQogICAvLw0KICAgZm9yIChJbmRleCA9IHNpemVvZiAoVFBNMl9SRVNQT05T RV9IRUFERVIpOyBJbmRleCA8IFRwbU91dFNpemU7IEluZGV4KyspIHsNCi0gICAgQnVmZmVyT3V0 W0luZGV4XSA9IE1taW9SZWFkOCAoKFVJTlROKSZDcmJSZWctPkNyYkRhdGFCdWZmZXJbSW5kZXhd KTsNCisgICAgQnVmZmVyT3V0W0luZGV4XSA9IFRwbVJlYWQ4ICgoVUlOVE4pJkNyYlJlZy0+Q3Ji RGF0YUJ1ZmZlcltJbmRleF0pOw0KICAgfQ0KIA0KICAgREVCVUdfQ09ERSAoDQpAQCAtMzM3LDcg KzMzNyw3IEBAIEdvUmVhZHlfRXhpdDoNCiAgIC8vIElmIG5vdCBzdXBwb3J0ZWQuIGZsb3cgZG93 biB0byBHb0lkbGUNCiAgIC8vDQogICBpZiAoUGNkR2V0OChQY2RDUkJJZGxlQnlQYXNzKSA9PSAx KSB7DQotICAgIE1taW9Xcml0ZTMyKChVSU5UTikmQ3JiUmVnLT5DcmJDb250cm9sUmVxdWVzdCwg UFRQX0NSQl9DT05UUk9MX0FSRUFfUkVRVUVTVF9DT01NQU5EX1JFQURZKTsNCisgICAgVHBtV3Jp dGUzMigoVUlOVE4pJkNyYlJlZy0+Q3JiQ29udHJvbFJlcXVlc3QsIFBUUF9DUkJfQ09OVFJPTF9B UkVBX1JFUVVFU1RfQ09NTUFORF9SRUFEWSk7DQogICAgIHJldHVybiBTdGF0dXM7DQogICB9DQog DQpAQCAtMzUwLDcgKzM1MCw3IEBAIEdvSWRsZV9FeGl0Og0KICAgLy8NCiAgIC8vICBSZXR1cm4g dG8gSWRsZSBzdGF0ZSBieSBzZXR0aW5nIFRQTV9DUkJfQ1RSTF9TVFNfeC5TdGF0dXMuZ29JZGxl IHRvIDEuDQogICAvLw0KLSAgTW1pb1dyaXRlMzIoKFVJTlROKSZDcmJSZWctPkNyYkNvbnRyb2xS ZXF1ZXN0LCBQVFBfQ1JCX0NPTlRST0xfQVJFQV9SRVFVRVNUX0dPX0lETEUpOw0KKyAgVHBtV3Jp dGUzMigoVUlOVE4pJkNyYlJlZy0+Q3JiQ29udHJvbFJlcXVlc3QsIFBUUF9DUkJfQ09OVFJPTF9B UkVBX1JFUVVFU1RfR09fSURMRSk7DQogDQogICAvLw0KICAgLy8gT25seSBlbmZvcmNlIElkbGUg c3RhdGUgdHJhbnNpdGlvbiBpZiBleGVjdXRpb24gZmFpbHMgd2hlbiBDUkJJbmRsZUJ5cGFzcz09 MQ0KQEAgLTQyOSw4ICs0MjksOCBAQCBUcG0yR2V0UHRwSW50ZXJmYWNlICgNCiAgIC8vDQogICAv LyBDaGVjayBpbnRlcmZhY2UgaWQNCiAgIC8vDQotICBJbnRlcmZhY2VJZC5VaW50MzIgPSBNbWlv UmVhZDMyICgoVUlOVE4pJigoUFRQX0NSQl9SRUdJU1RFUlMgKilSZWdpc3RlciktPkludGVyZmFj ZUlkKTsNCi0gIEludGVyZmFjZUNhcGFiaWxpdHkuVWludDMyID0gTW1pb1JlYWQzMiAoKFVJTlRO KSYoKFBUUF9GSUZPX1JFR0lTVEVSUyAqKVJlZ2lzdGVyKS0+SW50ZXJmYWNlQ2FwYWJpbGl0eSk7 DQorICBJbnRlcmZhY2VJZC5VaW50MzIgPSBUcG1SZWFkMzIgKChVSU5UTikmKChQVFBfQ1JCX1JF R0lTVEVSUyAqKVJlZ2lzdGVyKS0+SW50ZXJmYWNlSWQpOw0KKyAgSW50ZXJmYWNlQ2FwYWJpbGl0 eS5VaW50MzIgPSBUcG1SZWFkMzIgKChVSU5UTikmKChQVFBfRklGT19SRUdJU1RFUlMgKilSZWdp c3RlciktPkludGVyZmFjZUNhcGFiaWxpdHkpOw0KIA0KICAgaWYgKChJbnRlcmZhY2VJZC5CaXRz LkludGVyZmFjZVR5cGUgPT0gUFRQX0lOVEVSRkFDRV9JREVOVElGSUVSX0lOVEVSRkFDRV9UWVBF X0NSQikgJiYNCiAgICAgICAoSW50ZXJmYWNlSWQuQml0cy5JbnRlcmZhY2VWZXJzaW9uID09IFBU UF9JTlRFUkZBQ0VfSURFTlRJRklFUl9JTlRFUkZBQ0VfVkVSU0lPTl9DUkIpICYmDQpAQCAtNDYz LDcgKzQ2Myw3IEBAIFRwbTJHZXRJZGxlQnlQYXNzICgNCiAgIC8vDQogICAvLyBDaGVjayBpbnRl cmZhY2UgaWQNCiAgIC8vDQotICBJbnRlcmZhY2VJZC5VaW50MzIgPSBNbWlvUmVhZDMyICgoVUlO VE4pJigoUFRQX0NSQl9SRUdJU1RFUlMgKilSZWdpc3RlciktPkludGVyZmFjZUlkKTsNCisgIElu dGVyZmFjZUlkLlVpbnQzMiA9IFRwbVJlYWQzMiAoKFVJTlROKSYoKFBUUF9DUkJfUkVHSVNURVJT ICopUmVnaXN0ZXIpLT5JbnRlcmZhY2VJZCk7DQogDQogICByZXR1cm4gKFVJTlQ4KShJbnRlcmZh Y2VJZC5CaXRzLkNhcENSQklkbGVCeXBhc3MpOw0KIH0NCkBAIC00OTAsOSArNDkwLDkgQEAgRHVt cFB0cEluZm8gKA0KICAgICByZXR1cm4gOw0KICAgfQ0KIA0KLSAgSW50ZXJmYWNlSWQuVWludDMy ID0gTW1pb1JlYWQzMiAoKFVJTlROKSYoKFBUUF9DUkJfUkVHSVNURVJTICopUmVnaXN0ZXIpLT5J bnRlcmZhY2VJZCk7DQotICBJbnRlcmZhY2VDYXBhYmlsaXR5LlVpbnQzMiA9IE1taW9SZWFkMzIg KChVSU5UTikmKChQVFBfRklGT19SRUdJU1RFUlMgKilSZWdpc3RlciktPkludGVyZmFjZUNhcGFi aWxpdHkpOw0KLSAgU3RhdHVzRXggPSBNbWlvUmVhZDggKChVSU5UTikmKChQVFBfRklGT19SRUdJ U1RFUlMgKilSZWdpc3RlciktPlN0YXR1c0V4KTsNCisgIEludGVyZmFjZUlkLlVpbnQzMiA9IFRw bVJlYWQzMiAoKFVJTlROKSYoKFBUUF9DUkJfUkVHSVNURVJTICopUmVnaXN0ZXIpLT5JbnRlcmZh Y2VJZCk7DQorICBJbnRlcmZhY2VDYXBhYmlsaXR5LlVpbnQzMiA9IFRwbVJlYWQzMiAoKFVJTlRO KSYoKFBUUF9GSUZPX1JFR0lTVEVSUyAqKVJlZ2lzdGVyKS0+SW50ZXJmYWNlQ2FwYWJpbGl0eSk7 DQorICBTdGF0dXNFeCA9IFRwbVJlYWQ4ICgoVUlOVE4pJigoUFRQX0ZJRk9fUkVHSVNURVJTICop UmVnaXN0ZXIpLT5TdGF0dXNFeCk7DQogDQogICAvLw0KICAgLy8gRHVtcCBJbnRlcmZhY2VJZCBS ZWdpc3RlciBmb3IgUFRQDQpAQCAtNTI5LDE1ICs1MjksMTUgQEAgRHVtcFB0cEluZm8gKA0KICAg REVCVUcgKChFRklfRF9JTkZPLCAiUHRwSW50ZXJmYWNlIC0gJXhcbiIsIFB0cEludGVyZmFjZSkp Ow0KICAgc3dpdGNoIChQdHBJbnRlcmZhY2UpIHsNCiAgIGNhc2UgVHBtMlB0cEludGVyZmFjZUNy YjoNCi0gICAgVmlkID0gTW1pb1JlYWQxNiAoKFVJTlROKSYoKFBUUF9DUkJfUkVHSVNURVJTICop UmVnaXN0ZXIpLT5WaWQpOw0KLSAgICBEaWQgPSBNbWlvUmVhZDE2ICgoVUlOVE4pJigoUFRQX0NS Ql9SRUdJU1RFUlMgKilSZWdpc3RlciktPkRpZCk7DQorICAgIFZpZCA9IFRwbVJlYWQxNiAoKFVJ TlROKSYoKFBUUF9DUkJfUkVHSVNURVJTICopUmVnaXN0ZXIpLT5WaWQpOw0KKyAgICBEaWQgPSBU cG1SZWFkMTYgKChVSU5UTikmKChQVFBfQ1JCX1JFR0lTVEVSUyAqKVJlZ2lzdGVyKS0+RGlkKTsN CiAgICAgUmlkID0gKFVJTlQ4KUludGVyZmFjZUlkLkJpdHMuUmlkOw0KICAgICBicmVhazsNCiAg IGNhc2UgVHBtMlB0cEludGVyZmFjZUZpZm86DQogICBjYXNlIFRwbTJQdHBJbnRlcmZhY2VUaXM6 DQotICAgIFZpZCA9IE1taW9SZWFkMTYgKChVSU5UTikmKChQVFBfRklGT19SRUdJU1RFUlMgKilS ZWdpc3RlciktPlZpZCk7DQotICAgIERpZCA9IE1taW9SZWFkMTYgKChVSU5UTikmKChQVFBfRklG T19SRUdJU1RFUlMgKilSZWdpc3RlciktPkRpZCk7DQotICAgIFJpZCA9IE1taW9SZWFkOCAoKFVJ TlROKSYoKFBUUF9GSUZPX1JFR0lTVEVSUyAqKVJlZ2lzdGVyKS0+UmlkKTsNCisgICAgVmlkID0g VHBtUmVhZDE2ICgoVUlOVE4pJigoUFRQX0ZJRk9fUkVHSVNURVJTICopUmVnaXN0ZXIpLT5WaWQp Ow0KKyAgICBEaWQgPSBUcG1SZWFkMTYgKChVSU5UTikmKChQVFBfRklGT19SRUdJU1RFUlMgKilS ZWdpc3RlciktPkRpZCk7DQorICAgIFJpZCA9IFRwbVJlYWQ4ICgoVUlOVE4pJigoUFRQX0ZJRk9f UkVHSVNURVJTICopUmVnaXN0ZXIpLT5SaWQpOw0KICAgICBicmVhazsNCiAgIGRlZmF1bHQ6DQog ICAgIGJyZWFrOw0KZGlmZiAtLWdpdCBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxp YkRUcG0vVHBtMlRpcy5jIGIvU2VjdXJpdHlQa2cvTGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9U cG0yVGlzLmMNCmluZGV4IDZmMzkwYmYuLjc1YTM0ODggMTAwNjQ0DQotLS0gYS9TZWN1cml0eVBr Zy9MaWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJUaXMuYw0KKysrIGIvU2VjdXJpdHlQa2cv TGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yVGlzLmMNCkBAIC0xNyw3ICsxNyw3IEBAIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBF WFBSRVNTIE9SIElNUExJRUQuDQogDQogI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KICNp bmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9Jb0xp Yi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1RwbUlvTGliLmg+DQogI2luY2x1ZGUgPExpYnJhcnkv VGltZXJMaWIuaD4NCiAjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KICNpbmNsdWRlIDxM aWJyYXJ5L1RwbTJEZXZpY2VMaWIuaD4NCkBAIC00Nyw3ICs0Nyw3IEBAIFRpc1BjUHJlc2VuY2VD aGVjayAoDQogew0KICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ1JlYWQ7 DQogDQotICBSZWdSZWFkID0gTW1pb1JlYWQ4ICgoVUlOVE4pJlRpc1JlZy0+QWNjZXNzKTsNCisg IFJlZ1JlYWQgPSBUcG1SZWFkOCAoKFVJTlROKSZUaXNSZWctPkFjY2Vzcyk7DQogICByZXR1cm4g KEJPT0xFQU4pKFJlZ1JlYWQgIT0gKFVJTlQ4KS0xKTsNCiB9DQogDQpAQCAtNzQsNyArNzQsNyBA QCBUaXNQY1dhaXRSZWdpc3RlckJpdHMgKA0KICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFdhaXRUaW1lOw0KIA0KICAgZm9yIChXYWl0VGltZSA9IDA7IFdhaXRUaW1lIDwgVGlt ZU91dDsgV2FpdFRpbWUgKz0gMzApew0KLSAgICBSZWdSZWFkID0gTW1pb1JlYWQ4ICgoVUlOVE4p UmVnaXN0ZXIpOw0KKyAgICBSZWdSZWFkID0gVHBtUmVhZDggKChVSU5UTilSZWdpc3Rlcik7DQog ICAgIGlmICgoUmVnUmVhZCAmIEJpdFNldCkgPT0gQml0U2V0ICYmIChSZWdSZWFkICYgQml0Q2xl YXIpID09IDApDQogICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KICAgICBNaWNyb1NlY29uZERl bGF5ICgzMCk7DQpAQCAtMTExLDEwICsxMTEsMTAgQEAgVGlzUGNSZWFkQnVyc3RDb3VudCAoDQog ICBkbyB7DQogICAgIC8vDQogICAgIC8vIFRJU19QQ19SRUdJU1RFUlNfUFRSLT5idXJzdENvdW50 IGlzIFVJTlQxNiwgYnV0IGl0IGlzIG5vdCAyYnl0ZXMgYWxpZ25lZCwNCi0gICAgLy8gc28gaXQg bmVlZHMgdG8gdXNlIE1taW9SZWFkOCB0byByZWFkIHR3byB0aW1lcw0KKyAgICAvLyBzbyBpdCBu ZWVkcyB0byB1c2UgVHBtUmVhZDggdG8gcmVhZCB0d28gdGltZXMNCiAgICAgLy8NCi0gICAgRGF0 YUJ5dGUwICAgPSBNbWlvUmVhZDggKChVSU5UTikmVGlzUmVnLT5CdXJzdENvdW50KTsNCi0gICAg RGF0YUJ5dGUxICAgPSBNbWlvUmVhZDggKChVSU5UTikmVGlzUmVnLT5CdXJzdENvdW50ICsgMSk7 DQorICAgIERhdGFCeXRlMCAgID0gVHBtUmVhZDggKChVSU5UTikmVGlzUmVnLT5CdXJzdENvdW50 KTsNCisgICAgRGF0YUJ5dGUxICAgPSBUcG1SZWFkOCAoKFVJTlROKSZUaXNSZWctPkJ1cnN0Q291 bnQgKyAxKTsNCiAgICAgKkJ1cnN0Q291bnQgPSAoVUlOVDE2KSgoRGF0YUJ5dGUxIDw8IDgpICsg RGF0YUJ5dGUwKTsNCiAgICAgaWYgKCpCdXJzdENvdW50ICE9IDApIHsNCiAgICAgICByZXR1cm4g RUZJX1NVQ0NFU1M7DQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIFRpc1BjUHJlcGFyZUNvbW1hbmQgKA0K ICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KICAgfQ0KIA0KLSAgTW1pb1dyaXRl OCgoVUlOVE4pJlRpc1JlZy0+U3RhdHVzLCBUSVNfUENfU1RTX1JFQURZKTsNCisgIFRwbVdyaXRl OCgoVUlOVE4pJlRpc1JlZy0+U3RhdHVzLCBUSVNfUENfU1RTX1JFQURZKTsNCiAgIFN0YXR1cyA9 IFRpc1BjV2FpdFJlZ2lzdGVyQml0cyAoDQogICAgICAgICAgICAgICZUaXNSZWctPlN0YXR1cywN CiAgICAgICAgICAgICAgVElTX1BDX1NUU19SRUFEWSwNCkBAIC0xODMsNyArMTgzLDcgQEAgVGlz UGNSZXF1ZXN0VXNlVHBtICgNCiAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQogICB9DQogDQot ICBNbWlvV3JpdGU4KChVSU5UTikmVGlzUmVnLT5BY2Nlc3MsIFRJU19QQ19BQ0NfUlFVVVNFKTsN CisgIFRwbVdyaXRlOCgoVUlOVE4pJlRpc1JlZy0+QWNjZXNzLCBUSVNfUENfQUNDX1JRVVVTRSk7 DQogICBTdGF0dXMgPSBUaXNQY1dhaXRSZWdpc3RlckJpdHMgKA0KICAgICAgICAgICAgICAmVGlz UmVnLT5BY2Nlc3MsDQogICAgICAgICAgICAgIChVSU5UOCkoVElTX1BDX0FDQ19BQ1RJVkUgfFRJ U19QQ19WQUxJRCksDQpAQCAtMjYyLDcgKzI2Miw3IEBAIFRwbTJUaXNUcG1Db21tYW5kICgNCiAg ICAgICBnb3RvIEV4aXQ7DQogICAgIH0NCiAgICAgZm9yICg7IEJ1cnN0Q291bnQgPiAwICYmIElu ZGV4IDwgU2l6ZUluOyBCdXJzdENvdW50LS0pIHsNCi0gICAgICBNbWlvV3JpdGU4KChVSU5UTikm VGlzUmVnLT5EYXRhRmlmbywgKihCdWZmZXJJbiArIEluZGV4KSk7DQorICAgICAgVHBtV3JpdGU4 KChVSU5UTikmVGlzUmVnLT5EYXRhRmlmbywgKihCdWZmZXJJbiArIEluZGV4KSk7DQogICAgICAg SW5kZXgrKzsNCiAgICAgfQ0KICAgfQ0KQEAgLTI4Myw3ICsyODMsNyBAQCBUcG0yVGlzVHBtQ29t bWFuZCAoDQogICAvLw0KICAgLy8gRXhlY3V0ZWQgdGhlIFRQTSBjb21tYW5kIGFuZCB3YWl0aW5n IGZvciB0aGUgcmVzcG9uc2UgZGF0YSByZWFkeQ0KICAgLy8NCi0gIE1taW9Xcml0ZTgoKFVJTlRO KSZUaXNSZWctPlN0YXR1cywgVElTX1BDX1NUU19HTyk7DQorICBUcG1Xcml0ZTgoKFVJTlROKSZU aXNSZWctPlN0YXR1cywgVElTX1BDX1NUU19HTyk7DQogDQogICAvLw0KICAgLy8gTk9URTogVGhh dCBtYXkgdGFrZSBtYW55IHNlY29uZHMgdG8gbWludXRlcyBmb3IgY2VydGFpbiBjb21tYW5kcywg c3VjaCBhcyBrZXkgZ2VuZXJhdGlvbi4NCkBAIC0zMDEsNyArMzAxLDcgQEAgVHBtMlRpc1RwbUNv bW1hbmQgKA0KICAgICAvLw0KICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiV2FpdCBmb3IgVHBt MiByZXNwb25zZSBkYXRhIHRpbWUgb3V0LiBUcnlpbmcgdG8gY2FuY2VsIHRoZSBjb21tYW5kISFc biIpKTsNCiANCi0gICAgTW1pb1dyaXRlMzIoKFVJTlROKSZUaXNSZWctPlN0YXR1cywgVElTX1BD X1NUU19DQU5DRUwpOw0KKyAgICBUcG1Xcml0ZTMyKChVSU5UTikmVGlzUmVnLT5TdGF0dXMsIFRJ U19QQ19TVFNfQ0FOQ0VMKTsNCiAgICAgU3RhdHVzID0gVGlzUGNXYWl0UmVnaXN0ZXJCaXRzICgN CiAgICAgICAgICAgICAgICAmVGlzUmVnLT5TdGF0dXMsDQogICAgICAgICAgICAgICAgKFVJTlQ4 KSAoVElTX1BDX1ZBTElEIHwgVElTX1BDX1NUU19EQVRBKSwNCkBAIC0zMzMsNyArMzMzLDcgQEAg VHBtMlRpc1RwbUNvbW1hbmQgKA0KICAgICAgIGdvdG8gRXhpdDsNCiAgICAgfQ0KICAgICBmb3Ig KDsgQnVyc3RDb3VudCA+IDA7IEJ1cnN0Q291bnQtLSkgew0KLSAgICAgICooQnVmZmVyT3V0ICsg SW5kZXgpID0gTW1pb1JlYWQ4ICgoVUlOVE4pJlRpc1JlZy0+RGF0YUZpZm8pOw0KKyAgICAgICoo QnVmZmVyT3V0ICsgSW5kZXgpID0gVHBtUmVhZDggKChVSU5UTikmVGlzUmVnLT5EYXRhRmlmbyk7 DQogICAgICAgSW5kZXgrKzsNCiAgICAgICBpZiAoSW5kZXggPT0gc2l6ZW9mIChUUE0yX1JFU1BP TlNFX0hFQURFUikpIGJyZWFrOw0KICAgICB9DQpAQCAtMzY4LDcgKzM2OCw3IEBAIFRwbTJUaXNU cG1Db21tYW5kICgNCiAgIC8vDQogICB3aGlsZSAoIEluZGV4IDwgVHBtT3V0U2l6ZSApIHsNCiAg ICAgZm9yICg7IEJ1cnN0Q291bnQgPiAwOyBCdXJzdENvdW50LS0pIHsNCi0gICAgICAqKEJ1ZmZl ck91dCArIEluZGV4KSA9IE1taW9SZWFkOCAoKFVJTlROKSZUaXNSZWctPkRhdGFGaWZvKTsNCisg ICAgICAqKEJ1ZmZlck91dCArIEluZGV4KSA9IFRwbVJlYWQ4ICgoVUlOVE4pJlRpc1JlZy0+RGF0 YUZpZm8pOw0KICAgICAgIEluZGV4Kys7DQogICAgICAgaWYgKEluZGV4ID09IFRwbU91dFNpemUp IHsNCiAgICAgICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KQEAgLTM4OSw3ICszODksNyBAQCBF eGl0Og0KICAgICB9DQogICAgIERFQlVHICgoRUZJX0RfVkVSQk9TRSwgIlxuIikpOw0KICAgKTsN Ci0gIE1taW9Xcml0ZTgoKFVJTlROKSZUaXNSZWctPlN0YXR1cywgVElTX1BDX1NUU19SRUFEWSk7 DQorICBUcG1Xcml0ZTgoKFVJTlROKSZUaXNSZWctPlN0YXR1cywgVElTX1BDX1NUU19SRUFEWSk7 DQogICByZXR1cm4gU3RhdHVzOw0KIH0NCiANCi0tIA0KMi43LjQNCg0K