From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 280C1C31E5E for ; Wed, 19 Jun 2019 16:01:32 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DCD9E21880 for ; Wed, 19 Jun 2019 16:01:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="xeAQmQgc" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DCD9E21880 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hdd1L-0006D9-GJ; Wed, 19 Jun 2019 16:01:11 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hdd1K-0006Cz-DR for xen-devel@lists.xenproject.org; Wed, 19 Jun 2019 16:01:10 +0000 X-Inumbo-ID: 72f718cb-92ab-11e9-8980-bc764e045a96 Received: from NAM01-SN1-obe.outbound.protection.outlook.com (unknown [2a01:111:f400:fe40::61b]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 72f718cb-92ab-11e9-8980-bc764e045a96; Wed, 19 Jun 2019 16:01:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K2H1/GK/RXc+e1CkBPdikCv6Tvt9t8Xh80CRPH9YrVQ=; b=xeAQmQgcCXDZ5NYxUs9c1S1cpS5175cREJBVua6Gkpd6E9NJ0Gv6l5OQ/7i7lSjU1S7zYtRK3KFAsox0uO4wHHaE0pnlab9n0dZn4lV1Vq3wPFKO1d+wNEJhlcOdoEV+03l21uJwI7AIFpyFIoW+nuhlxPN7FCu/enKuAEH+kK0= Received: from DM6PR12MB3515.namprd12.prod.outlook.com (20.179.106.151) by DM6PR12MB2633.namprd12.prod.outlook.com (20.176.116.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.15; Wed, 19 Jun 2019 16:01:04 +0000 Received: from DM6PR12MB3515.namprd12.prod.outlook.com ([fe80::9dea:57a2:93ff:57b0]) by DM6PR12MB3515.namprd12.prod.outlook.com ([fe80::9dea:57a2:93ff:57b0%3]) with mapi id 15.20.1987.014; Wed, 19 Jun 2019 16:01:04 +0000 From: "Woods, Brian" To: Roger Pau Monne Thread-Topic: [PATCH v3 09/13] pci: switch pci_conf_read32 to use pci_sbdf_t Thread-Index: AQHVHRKvKeMFRmYqgkWxxD3EF4V7K6ajNj0A Date: Wed, 19 Jun 2019 16:01:04 +0000 Message-ID: <20190619160101.GD20907@amd.com> References: <20190607092232.83179-1-roger.pau@citrix.com> <20190607092232.83179-10-roger.pau@citrix.com> In-Reply-To: <20190607092232.83179-10-roger.pau@citrix.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: DM5PR07CA0111.namprd07.prod.outlook.com (2603:10b6:4:ae::40) To DM6PR12MB3515.namprd12.prod.outlook.com (2603:10b6:5:18a::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Brian.Woods@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [165.204.77.1] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bb614c03-beef-4c6a-2f40-08d6f4cf5525 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:DM6PR12MB2633; x-ms-traffictypediagnostic: DM6PR12MB2633: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:608; x-forefront-prvs: 0073BFEF03 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(136003)(366004)(396003)(346002)(39860400002)(199004)(189003)(256004)(14444005)(71200400001)(2616005)(6436002)(81156014)(71190400001)(81166006)(66066001)(8936002)(33656002)(66556008)(14454004)(102836004)(6486002)(446003)(66446008)(64756008)(72206003)(36756003)(54906003)(66476007)(7736002)(386003)(316002)(66946007)(6506007)(229853002)(11346002)(73956011)(6512007)(478600001)(305945005)(186003)(8676002)(5660300002)(6246003)(30864003)(3846002)(1076003)(86362001)(99286004)(6116002)(2906002)(25786009)(486006)(26005)(4326008)(7416002)(53936002)(52116002)(53946003)(76176011)(68736007)(6916009)(476003)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR12MB2633; H:DM6PR12MB3515.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 9wsedg6lx3IV8LmTzR21TRC5SbdvmV0Io8cRJTjHAYyvVAAEsahZ8h0SY2KM4W8xH1fbD1EYv4zLHcmyrG8DofmTmt3c6RXx+8DYNAww7Zpg1FT9SkG9Wl3kVqoBXJ7C+En6w6fahUHX6SrmEeWoSWWXPY/N4WsWd/u7LTAzVgsjYFE2sov6lUrnvXqCQdJIqCBQzBdanC33eMZl3HwC5e3jLArduaWZzlULs3DlOXS+6ifZVjT4JlG2pYHM1ndMXEfCExlYFH4suzW3lBCSTZwmCTOmgK+sc7d7crDHoFH53Xy8zfaA0dxBgWha2BVEYTOw5GtlBwemQGzv2SsBcI90xSNcM5R60nfvKq4AVbXzGtSHV1pTOK6wFAZBb0v+/d1754Wvx4jl1SS6WH3viUCJBQS95KjSvozsVBgFtVU= Content-ID: <6A0527BFD8648D46B1E755A14FE1FBA1@namprd12.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb614c03-beef-4c6a-2f40-08d6f4cf5525 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jun 2019 16:01:04.6639 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: brwoods@amd.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB2633 Subject: Re: [Xen-devel] [PATCH v3 09/13] pci: switch pci_conf_read32 to use pci_sbdf_t X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Tian , Stefano Stabellini , "Suthikulpanit, Suravee" , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , "xen-devel@lists.xenproject.org" , "Woods, Brian" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gRnJpLCBKdW4gMDcsIDIwMTkgYXQgMTE6MjI6MjhBTSArMDIwMCwgUm9nZXIgUGF1IE1vbm5l IHdyb3RlOgo+IFRoaXMgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgb2YgdGhlIGZ1 bmN0aW9uIHRvIHR3bywgYW5kCj4gc2ltcGxpZmllcyBzb21lIG9mIHRoZSBjYWxsaW5nIHNpdGVz Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXgu Y29tPgoKQXMgZmFyIGFzIEFNRCBJT01NVQoKQWNrZWQtYnk6IEJyaWFuIFdvb2RzIDxicmlhbi53 b29kc0BhbWQuY29tCgo+IC0tLQo+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gQ2M6IFdl aSBMaXUgPHdsQHhlbi5vcmc+Cj4gQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUu Y2l0cml4LmNvbT4KPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+ Cj4gQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4gQ2M6IEtvbnJhZCBS emVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KPiBDYzogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgo+IENjOiBUaW0gRGVlZ2FuIDx0aW1AeGVu Lm9yZz4KPiBDYzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRA YW1kLmNvbT4KPiBDYzogQnJpYW4gV29vZHMgPGJyaWFuLndvb2RzQGFtZC5jb20+Cj4gQ2M6IEtl dmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgo+IC0tLQo+ICB4ZW4vYXJjaC94ODYvY3B1 L2FtZC5jICAgICAgICAgICAgICAgICAgICAgfCAgNyArKystLQo+ICB4ZW4vYXJjaC94ODYvbW0u YyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvbXNpLmMg ICAgICAgICAgICAgICAgICAgICAgICAgfCAyOCArKysrKystLS0tLS0tLS0tLQo+ICB4ZW4vYXJj aC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfYXRobG9uLmMgICAgfCAgNiArKy0tCj4gIHhlbi9hcmNo L3g4Ni94ODZfNjQvbW1jb25mLWZhbTEwaC5jICAgICAgICB8ICA4ICsrKy0tCj4gIHhlbi9hcmNo L3g4Ni94ODZfNjQvbW1jb25maWctc2hhcmVkLmMgICAgICB8IDEyICsrKystLS0tCj4gIHhlbi9h cmNoL3g4Ni94ODZfNjQvcGNpLmMgICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKystLS0tLS0t LS0KPiAgeGVuL2RyaXZlcnMvY2hhci9laGNpLWRiZ3AuYyAgICAgICAgICAgICAgIHwgMjAgKysr KysrKy0tLS0tCj4gIHhlbi9kcml2ZXJzL2NoYXIvbnMxNjU1MC5jICAgICAgICAgICAgICAgICB8 IDE4ICsrKysrKy0tLS0tCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9kZXRl Y3QuYyB8ICAyICstCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMg ICB8ICA0ICstLQo+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYyAgICAgICAgICAgICAg fCAxNSArKysrLS0tLS0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3F1aXJrcy5jICAg ICAgIHwgMzYgKysrKysrKysrKysrLS0tLS0tLS0tLQo+ICB4ZW4vZHJpdmVycy9wY2kvcGNpLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KPiAgeGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIu YyAgICAgICAgICAgICAgICAgIHwgIDYgKystLQo+ICB4ZW4vZHJpdmVycy92cGNpL21zaXguYyAg ICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCj4gIHhlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jICAg ICAgICAgICAgICAgICAgICB8ICA1ICsrLQo+ICB4ZW4vaW5jbHVkZS94ZW4vcGNpLmggICAgICAg ICAgICAgICAgICAgICAgfCAgNCArLS0KPiAgMTggZmlsZXMgY2hhbmdlZCwgMTAxIGluc2VydGlv bnMoKyksIDEwOSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Nw dS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvYW1kLmMKPiBpbmRleCAzYzA2OTM5MWY0Li4zN2Y2 MGMwODYyIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvYW1kLmMKPiArKysgYi94ZW4v YXJjaC94ODYvY3B1L2FtZC5jCj4gQEAgLTQxNyw3ICs0MTcsOCBAQCBzdGF0aWMgdm9pZCBkaXNh YmxlX2MxX3JhbXBpbmcodm9pZCkKPiAgCWludCBub2RlLCBucl9ub2RlczsKPiAgCj4gIAkvKiBS ZWFkIHRoZSBudW1iZXIgb2Ygbm9kZXMgZnJvbSB0aGUgZmlyc3QgTm9ydGhicmlkZ2UuICovCj4g LQlucl9ub2RlcyA9ICgocGNpX2NvbmZfcmVhZDMyKDAsIDAsIDB4MTgsIDB4MCwgMHg2MCk+PjQp JjB4MDcpKzE7Cj4gKwlucl9ub2RlcyA9ICgocGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAsIDAs IDB4MTgsIDApLCAweDYwKSA+PiA0KSAmCj4gKwkJICAgIDB4MDcpICsgMTsKPiAgCWZvciAobm9k ZSA9IDA7IG5vZGUgPCBucl9ub2Rlczsgbm9kZSsrKSB7Cj4gIAkJLyogUE1NNzogYnVzPTAsIGRl dj0weDE4K25vZGUsIGZ1bmN0aW9uPTB4MywgcmVnaXN0ZXI9MHg4Ny4gKi8KPiAgCQlwbW03ID0g cGNpX2NvbmZfcmVhZDgoUENJX1NCREYoMCwgMCwgMHgxOCArIG5vZGUsIDMpLCAweDg3KTsKPiBA QCAtNjk2LDggKzY5Nyw4IEBAIHN0YXRpYyB2b2lkIGluaXRfYW1kKHN0cnVjdCBjcHVpbmZvX3g4 NiAqYykKPiAgCj4gIAlpZiAoYy0+eDg2ID09IDB4MTYgJiYgYy0+eDg2X21vZGVsIDw9IDB4Zikg ewo+ICAJCWlmIChjID09ICZib290X2NwdV9kYXRhKSB7Cj4gLQkJCWwgPSBwY2lfY29uZl9yZWFk MzIoMCwgMCwgMHgxOCwgMHgzLCAweDU4KTsKPiAtCQkJaCA9IHBjaV9jb25mX3JlYWQzMigwLCAw LCAweDE4LCAweDMsIDB4NWMpOwo+ICsJCQlsID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAs IDAsIDB4MTgsIDMpLCAweDU4KTsKPiArCQkJaCA9IHBjaV9jb25mX3JlYWQzMihQQ0lfU0JERigw LCAwLCAweDE4LCAzKSwgMHg1Yyk7Cj4gIAkJCWlmICgobCAmIDB4MWYpIHwgKGggJiAweDEpKQo+ ICAJCQkJcHJpbnRrKEtFUk5fV0FSTklORwo+ICAJCQkJICAgICAgICJBcHBseWluZyB3b3JrYXJv dW5kIGZvciBlcnJhdHVtIDc5MjogJXMlcyVzXG4iLAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCj4gaW5kZXggZGYyYzAxMzBmMS4uZTY3MTE5ZGJl NiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9t bS5jCj4gQEAgLTU5NDksNyArNTk0OSw3IEBAIGNvbnN0IHN0cnVjdCBwbGF0Zm9ybV9iYWRfcGFn ZSAqX19pbml0IGdldF9wbGF0Zm9ybV9iYWRwYWdlcyh1bnNpZ25lZCBpbnQgKmFycmF5Cj4gICAg ICB9Cj4gIAo+ICAgICAgKmFycmF5X3NpemUgPSBBUlJBWV9TSVpFKHNuYl9iYWRfcGFnZXMpOwo+ IC0gICAgaWdkX2lkID0gcGNpX2NvbmZfcmVhZDMyKDAsIDAsIDIsIDAsIDApOwo+ICsgICAgaWdk X2lkID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAsIDAsIDIsIDApLCAwKTsKPiAgICAgIGlm ICggSVNfU05CX0dGWChpZ2RfaWQpICkKPiAgICAgICAgICByZXR1cm4gc25iX2JhZF9wYWdlczsK PiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tc2kuYyBiL3hlbi9hcmNoL3g4Ni9tc2ku Ywo+IGluZGV4IGVkOTg2MjYxYzMuLjM5MmNiZWNmZTQgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L21zaS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21zaS5jCj4gQEAgLTE5MSwxNiArMTkxLDEz IEBAIHN0YXRpYyBib29sIHJlYWRfbXNpX21zZyhzdHJ1Y3QgbXNpX2Rlc2MgKmVudHJ5LCBzdHJ1 Y3QgbXNpX21zZyAqbXNnKQo+ICAgICAgewo+ICAgICAgICAgIHN0cnVjdCBwY2lfZGV2ICpkZXYg PSBlbnRyeS0+ZGV2Owo+ICAgICAgICAgIGludCBwb3MgPSBlbnRyeS0+bXNpX2F0dHJpYi5wb3M7 Cj4gLSAgICAgICAgdTE2IGRhdGEsIHNlZyA9IGRldi0+c2VnOwo+IC0gICAgICAgIHU4IGJ1cyA9 IGRldi0+YnVzOwo+IC0gICAgICAgIHU4IHNsb3QgPSBQQ0lfU0xPVChkZXYtPmRldmZuKTsKPiAt ICAgICAgICB1OCBmdW5jID0gUENJX0ZVTkMoZGV2LT5kZXZmbik7Cj4gKyAgICAgICAgdWludDE2 X3QgZGF0YTsKPiAgCj4gLSAgICAgICAgbXNnLT5hZGRyZXNzX2xvID0gcGNpX2NvbmZfcmVhZDMy KHNlZywgYnVzLCBzbG90LCBmdW5jLAo+ICsgICAgICAgIG1zZy0+YWRkcmVzc19sbyA9IHBjaV9j b25mX3JlYWQzMihkZXYtPnNiZGYsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1zaV9sb3dlcl9hZGRyZXNzX3JlZyhwb3MpKTsKPiAgICAgICAgICBpZiAoIGVu dHJ5LT5tc2lfYXR0cmliLmlzXzY0ICkKPiAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIG1zZy0+ YWRkcmVzc19oaSA9IHBjaV9jb25mX3JlYWQzMihzZWcsIGJ1cywgc2xvdCwgZnVuYywKPiArICAg ICAgICAgICAgbXNnLT5hZGRyZXNzX2hpID0gcGNpX2NvbmZfcmVhZDMyKGRldi0+c2JkZiwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zaV91cHBlcl9h ZGRyZXNzX3JlZyhwb3MpKTsKPiAgICAgICAgICAgICAgZGF0YSA9IHBjaV9jb25mX3JlYWQxNihk ZXYtPnNiZGYsIG1zaV9kYXRhX3JlZyhwb3MsIDEpKTsKPiAgICAgICAgICB9Cj4gQEAgLTM5Niw3 ICszOTMsNyBAQCBzdGF0aWMgYm9vbCBtc2lfc2V0X21hc2tfYml0KHN0cnVjdCBpcnFfZGVzYyAq ZGVzYywgYm9vbCBob3N0LCBib29sIGd1ZXN0KQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAg dTMyIG1hc2tfYml0czsKPiAgCj4gLSAgICAgICAgICAgIG1hc2tfYml0cyA9IHBjaV9jb25mX3Jl YWQzMihzZWcsIGJ1cywgc2xvdCwgZnVuYywgZW50cnktPm1zaS5tcG9zKTsKPiArICAgICAgICAg ICAgbWFza19iaXRzID0gcGNpX2NvbmZfcmVhZDMyKHBkZXYtPnNiZGYsIGVudHJ5LT5tc2kubXBv cyk7Cj4gICAgICAgICAgICAgIG1hc2tfYml0cyAmPSB+KCh1MzIpMSA8PCBlbnRyeS0+bXNpX2F0 dHJpYi5lbnRyeV9ucik7Cj4gICAgICAgICAgICAgIG1hc2tfYml0cyB8PSAodTMyKWZsYWcgPDwg ZW50cnktPm1zaV9hdHRyaWIuZW50cnlfbnI7Cj4gICAgICAgICAgICAgIHBjaV9jb25mX3dyaXRl MzIoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIGVudHJ5LT5tc2kubXBvcywgbWFza19iaXRzKTsKPiBA QCAtNDY1LDEwICs0NjIsNyBAQCBzdGF0aWMgaW50IG1zaV9nZXRfbWFza19iaXQoY29uc3Qgc3Ry dWN0IG1zaV9kZXNjICplbnRyeSkKPiAgICAgIGNhc2UgUENJX0NBUF9JRF9NU0k6Cj4gICAgICAg ICAgaWYgKCAhZW50cnktPm1zaV9hdHRyaWIubWFza2JpdCApCj4gICAgICAgICAgICAgIGJyZWFr Owo+IC0gICAgICAgIHJldHVybiAocGNpX2NvbmZfcmVhZDMyKGVudHJ5LT5kZXYtPnNlZywgZW50 cnktPmRldi0+YnVzLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9TTE9U KGVudHJ5LT5kZXYtPmRldmZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ Q0lfRlVOQyhlbnRyeS0+ZGV2LT5kZXZmbiksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW50cnktPm1zaS5tcG9zKSA+Pgo+ICsgICAgICAgIHJldHVybiAocGNpX2NvbmZfcmVh ZDMyKGVudHJ5LT5kZXYtPnNiZGYsIGVudHJ5LT5tc2kubXBvcykgPj4KPiAgICAgICAgICAgICAg ICAgIGVudHJ5LT5tc2lfYXR0cmliLmVudHJ5X25yKSAmIDE7Cj4gICAgICBjYXNlIFBDSV9DQVBf SURfTVNJWDoKPiAgICAgICAgICBpZiAoIHVubGlrZWx5KCFtc2l4X21lbW9yeV9kZWNvZGVkKGVu dHJ5LT5kZXYsCj4gQEAgLTcyMyw3ICs3MTcsNyBAQCBzdGF0aWMgaW50IG1zaV9jYXBhYmlsaXR5 X2luaXQoc3RydWN0IHBjaV9kZXYgKmRldiwKPiAgICAgICAgICB1MzIgbWFza2JpdHM7Cj4gIAo+ ICAgICAgICAgIC8qIEFsbCBNU0lzIGFyZSB1bm1hc2tlZCBieSBkZWZhdWx0LCBNYXNrIHRoZW0g YWxsICovCj4gLSAgICAgICAgbWFza2JpdHMgPSBwY2lfY29uZl9yZWFkMzIoc2VnLCBidXMsIHNs b3QsIGZ1bmMsIG1wb3MpOwo+ICsgICAgICAgIG1hc2tiaXRzID0gcGNpX2NvbmZfcmVhZDMyKGRl di0+c2JkZiwgbXBvcyk7Cj4gICAgICAgICAgbWFza2JpdHMgfD0gfih1MzIpMCA+PiAoMzIgLSBt YXh2ZWMpOwo+ICAgICAgICAgIHBjaV9jb25mX3dyaXRlMzIoc2VnLCBidXMsIHNsb3QsIGZ1bmMs IG1wb3MsIG1hc2tiaXRzKTsKPiAgICAgIH0KPiBAQCAtODA4LDcgKzgwMiw3IEBAIHN0YXRpYyB1 NjQgcmVhZF9wY2lfbWVtX2Jhcih1MTYgc2VnLCB1OCBidXMsIHU4IHNsb3QsIHU4IGZ1bmMsIHU4 IGJpciwgaW50IHZmKQo+ICAKPiAgICAgIGlmICggYmlyID49IGxpbWl0ICkKPiAgICAgICAgICBy ZXR1cm4gMDsKPiAtICAgIGFkZHIgPSBwY2lfY29uZl9yZWFkMzIoc2VnLCBidXMsIHNsb3QsIGZ1 bmMsIGJhc2UgKyBiaXIgKiA0KTsKPiArICAgIGFkZHIgPSBwY2lfY29uZl9yZWFkMzIoUENJX1NC REYoc2VnLCBidXMsIHNsb3QsIGZ1bmMpLCBiYXNlICsgYmlyICogNCk7Cj4gICAgICBpZiAoIChh ZGRyICYgUENJX0JBU0VfQUREUkVTU19TUEFDRSkgPT0gUENJX0JBU0VfQUREUkVTU19TUEFDRV9J TyApCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICBpZiAoIChhZGRyICYgUENJX0JBU0VfQURE UkVTU19NRU1fVFlQRV9NQVNLKSA9PSBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0ICkKPiBA QCAtODE3LDcgKzgxMSw3IEBAIHN0YXRpYyB1NjQgcmVhZF9wY2lfbWVtX2Jhcih1MTYgc2VnLCB1 OCBidXMsIHU4IHNsb3QsIHU4IGZ1bmMsIHU4IGJpciwgaW50IHZmKQo+ICAgICAgICAgIGlmICgg KytiaXIgPj0gbGltaXQgKQo+ICAgICAgICAgICAgICByZXR1cm4gMDsKPiAgICAgICAgICByZXR1 cm4gYWRkciArIGRpc3AgKwo+IC0gICAgICAgICAgICAgICAoKHU2NClwY2lfY29uZl9yZWFkMzIo c2VnLCBidXMsIHNsb3QsIGZ1bmMsCj4gKyAgICAgICAgICAgICAgICgodTY0KXBjaV9jb25mX3Jl YWQzMihQQ0lfU0JERihzZWcsIGJ1cywgc2xvdCwgZnVuYyksCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBiYXNlICsgYmlyICogNCkgPDwgMzIpOwo+ICAgICAgfQo+ICAg ICAgcmV0dXJuIChhZGRyICYgUENJX0JBU0VfQUREUkVTU19NRU1fTUFTSykgKyBkaXNwOwo+IEBA IC04ODYsOCArODgwLDcgQEAgc3RhdGljIGludCBtc2l4X2NhcGFiaWxpdHlfaW5pdChzdHJ1Y3Qg cGNpX2RldiAqZGV2LAo+ICAgICAgfQo+ICAKPiAgICAgIC8qIExvY2F0ZSBNU0ktWCB0YWJsZSBy ZWdpb24gKi8KPiAtICAgIHRhYmxlX29mZnNldCA9IHBjaV9jb25mX3JlYWQzMihzZWcsIGJ1cywg c2xvdCwgZnVuYywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2l4X3Rh YmxlX29mZnNldF9yZWcocG9zKSk7Cj4gKyAgICB0YWJsZV9vZmZzZXQgPSBwY2lfY29uZl9yZWFk MzIoZGV2LT5zYmRmLCBtc2l4X3RhYmxlX29mZnNldF9yZWcocG9zKSk7Cj4gICAgICBiaXIgPSAo dTgpKHRhYmxlX29mZnNldCAmIFBDSV9NU0lYX0JJUk1BU0spOwo+ICAgICAgdGFibGVfb2Zmc2V0 ICY9IH5QQ0lfTVNJWF9CSVJNQVNLOwo+ICAKPiBAQCAtOTMzLDggKzkyNiw3IEBAIHN0YXRpYyBp bnQgbXNpeF9jYXBhYmlsaXR5X2luaXQoc3RydWN0IHBjaV9kZXYgKmRldiwKPiAgICAgICAgICBX QVJOX09OKHJhbmdlc2V0X292ZXJsYXBzX3JhbmdlKG1taW9fcm9fcmFuZ2VzLCBtc2l4LT50YWJs ZS5maXJzdCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zaXgt PnRhYmxlLmxhc3QpKTsKPiAgCj4gLSAgICAgICAgcGJhX29mZnNldCA9IHBjaV9jb25mX3JlYWQz MihzZWcsIGJ1cywgc2xvdCwgZnVuYywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1zaXhfcGJhX29mZnNldF9yZWcocG9zKSk7Cj4gKyAgICAgICAgcGJhX29mZnNldCA9 IHBjaV9jb25mX3JlYWQzMihkZXYtPnNiZGYsIG1zaXhfcGJhX29mZnNldF9yZWcocG9zKSk7Cj4g ICAgICAgICAgYmlyID0gKHU4KShwYmFfb2Zmc2V0ICYgUENJX01TSVhfQklSTUFTSyk7Cj4gICAg ICAgICAgcGJhX3BhZGRyID0gcmVhZF9wY2lfbWVtX2JhcihzZWcsIHBidXMsIHBzbG90LCBwZnVu YywgYmlyLCB2Zik7Cj4gICAgICAgICAgV0FSTl9PTighcGJhX3BhZGRyKTsKPiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L29wcm9maWxlL29wX21vZGVsX2F0aGxvbi5jIGIveGVuL2FyY2gveDg2 L29wcm9maWxlL29wX21vZGVsX2F0aGxvbi5jCj4gaW5kZXggM2Q2ZTI2ZjYzNi4uM2JmMGIwMjE0 ZCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfYXRobG9uLmMK PiArKysgYi94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfYXRobG9uLmMKPiBAQCAtNDYz LDcgKzQ2Myw4IEBAIHN0YXRpYyBpbnQgX19pbml0IGluaXRfaWJzX25taSh2b2lkKQo+ICAJZm9y IChidXMgPSAwOyBidXMgPCAyNTY7IGJ1cysrKSB7Cj4gIAkJZm9yIChkZXYgPSAwOyBkZXYgPCAz MjsgZGV2KyspIHsKPiAgCQkJZm9yIChmdW5jID0gMDsgZnVuYyA8IDg7IGZ1bmMrKykgewo+IC0J CQkJaWQgPSBwY2lfY29uZl9yZWFkMzIoMCwgYnVzLCBkZXYsIGZ1bmMsIFBDSV9WRU5ET1JfSUQp Owo+ICsJCQkJaWQgPSBwY2lfY29uZl9yZWFkMzIoUENJX1NCREYoMCwgYnVzLCBkZXYsIGZ1bmMp LAo+ICsJCQkJCQkgICAgIFBDSV9WRU5ET1JfSUQpOwo+ICAKPiAgCQkJCXZlbmRvcl9pZCA9IGlk ICYgMHhmZmZmOwo+ICAJCQkJZGV2X2lkID0gKGlkID4+IDE2KSAmIDB4ZmZmZjsKPiBAQCAtNDc0 LDcgKzQ3NSw4IEBAIHN0YXRpYyBpbnQgX19pbml0IGluaXRfaWJzX25taSh2b2lkKQo+ICAJCQkJ CXBjaV9jb25mX3dyaXRlMzIoMCwgYnVzLCBkZXYsIGZ1bmMsIElCU0NUTCwKPiAgCQkJCQkJSUJT Q1RMX0xWVE9GRlNFVFZBTCB8IEFQSUNfRUlMVlRfTFZUT0ZGX0lCUyk7Cj4gIAo+IC0JCQkJCXZh bHVlID0gcGNpX2NvbmZfcmVhZDMyKDAsIGJ1cywgZGV2LCBmdW5jLCBJQlNDVEwpOwo+ICsJCQkJ CXZhbHVlID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAsIGJ1cywgZGV2LCBmdW5jKSwKPiAr CQkJCQkJCQlJQlNDVEwpOwo+ICAKPiAgCQkJCQlpZiAodmFsdWUgIT0gKElCU0NUTF9MVlRPRkZT RVRWQUwgfAo+ICAJCQkJCQlBUElDX0VJTFZUX0xWVE9GRl9JQlMpKSB7Cj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni94ODZfNjQvbW1jb25mLWZhbTEwaC5jIGIveGVuL2FyY2gveDg2L3g4Nl82 NC9tbWNvbmYtZmFtMTBoLmMKPiBpbmRleCBlZDBhY2I5OTY4Li5mOTk3Njg4YWQ0IDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW1jb25mLWZhbTEwaC5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L3g4Nl82NC9tbWNvbmYtZmFtMTBoLmMKPiBAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMg dm9pZCBfX2luaXQgZ2V0X2ZhbTEwaF9wY2lfbW1jb25mX2Jhc2Uodm9pZCkKPiAgCj4gIAkJYnVz ID0gcGNpX3Byb2Jlc1tpXS5idXM7Cj4gIAkJc2xvdCA9IHBjaV9wcm9iZXNbaV0uc2xvdDsKPiAt CQlpZCA9IHBjaV9jb25mX3JlYWQzMigwLCBidXMsIHNsb3QsIDAsIFBDSV9WRU5ET1JfSUQpOwo+ ICsJCWlkID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAsIGJ1cywgc2xvdCwgMCksIFBDSV9W RU5ET1JfSUQpOwo+ICAKPiAgCQl2ZW5kb3IgPSBpZCAmIDB4ZmZmZjsKPiAgCQlkZXZpY2UgPSAo aWQ+PjE2KSAmIDB4ZmZmZjsKPiBAQCAtODMsMTIgKzgzLDE0IEBAIHN0YXRpYyB2b2lkIF9faW5p dCBnZXRfZmFtMTBoX3BjaV9tbWNvbmZfYmFzZSh2b2lkKQo+ICAJICogYWJvdmUgNEcKPiAgCSAq Lwo+ICAJZm9yIChoaV9tbWlvX251bSA9IGkgPSAwOyBpIDwgODsgaSsrKSB7Cj4gLQkJdmFsID0g cGNpX2NvbmZfcmVhZDMyKDAsIGJ1cywgc2xvdCwgMSwgMHg4MCArIChpIDw8IDMpKTsKPiArCQl2 YWwgPSBwY2lfY29uZl9yZWFkMzIoUENJX1NCREYoMCwgYnVzLCBzbG90LCAxKSwKPiArCQkJCSAg ICAgIDB4ODAgKyAoaSA8PCAzKSk7Cj4gIAkJaWYgKCEodmFsICYgMykpCj4gIAkJCWNvbnRpbnVl Owo+ICAKPiAgCQlzdGFydCA9ICh2YWwgJiAweGZmZmZmZjAwKSA8PCA4OyAvKiAzOToxNiBvbiAz MTo4Ki8KPiAtCQl2YWwgPSBwY2lfY29uZl9yZWFkMzIoMCwgYnVzLCBzbG90LCAxLCAweDg0ICsg KGkgPDwgMykpOwo+ICsJCXZhbCA9IHBjaV9jb25mX3JlYWQzMihQQ0lfU0JERigwLCBidXMsIHNs b3QsIDEpLAo+ICsJCQkJICAgICAgMHg4NCArIChpIDw8IDMpKTsKPiAgCQllbmQgPSAoKHZhbCAm IDB4ZmZmZmZmMDApIDw8IDgpIHwgMHhmZmZmOyAvKiAzOToxNiBvbiAzMTo4Ki8KPiAgCj4gIAkJ aWYgKGVuZCA8IHRvbTIpCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW1jb25m aWctc2hhcmVkLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tY29uZmlnLXNoYXJlZC5jCj4gaW5k ZXggOWQxZGI1OTBkOS4uY2MwOGI1MmEzNSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2 XzY0L21tY29uZmlnLXNoYXJlZC5jCj4gKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbWNvbmZp Zy1zaGFyZWQuYwo+IEBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIF9faW5pdCAq cGNpX21tY2ZnX2ludGVsXzk0NSh2b2lkKQo+ICAKPiAgICAgIHBjaV9tbWNmZ19jb25maWdfbnVt ID0gMTsKPiAgCj4gLSAgICBwY2lleGJhciA9IHBjaV9jb25mX3JlYWQzMigwLCAwLCAwLCAwLCAw eDQ4KTsKPiArICAgIHBjaWV4YmFyID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAsIDAsIDAs IDApLCAweDQ4KTsKPiAgCj4gICAgICAvKiBFbmFibGUgYml0ICovCj4gICAgICBpZiAoIShwY2ll eGJhciAmIDEpKQo+IEBAIC0yMTMsMTQgKzIxMywxNCBAQCBzdGF0aWMgY29uc3QgY2hhciBfX2lu aXQgKnBjaV9tbWNmZ19udmlkaWFfbWNwNTUodm9pZCkKPiAgICAgICAgICB1MzIgbCwgZXh0Y2Zn Owo+ICAgICAgICAgIHUxNiB2ZW5kb3IsIGRldmljZTsKPiAgCj4gLSAgICAgICAgbCA9IHBjaV9j b25mX3JlYWQzMigwLCBidXMsIDAsIDAsIDApOwo+ICsgICAgICAgIGwgPSBwY2lfY29uZl9yZWFk MzIoUENJX1NCREYoMCwgYnVzLCAwLCAwKSwgMCk7Cj4gICAgICAgICAgdmVuZG9yID0gbCAmIDB4 ZmZmZjsKPiAgICAgICAgICBkZXZpY2UgPSAobCA+PiAxNikgJiAweGZmZmY7Cj4gIAo+ICAgICAg ICAgIGlmIChQQ0lfVkVORE9SX0lEX05WSURJQSAhPSB2ZW5kb3IgfHwgMHgwMzY5ICE9IGRldmlj ZSkKPiAgICAgICAgICAgICAgY29udGludWU7Cj4gIAo+IC0gICAgICAgIGV4dGNmZyA9IHBjaV9j b25mX3JlYWQzMigwLCBidXMsIDAsIDAsIGV4dGNmZ19yZWdudW0pOwo+ICsgICAgICAgIGV4dGNm ZyA9IHBjaV9jb25mX3JlYWQzMihQQ0lfU0JERigwLCBidXMsIDAsIDApLCBleHRjZmdfcmVnbnVt KTsKPiAgCj4gICAgICAgICAgaWYgKGV4dGNmZyAmIGV4dGNmZ19lbmFibGVfbWFzaykKPiAgICAg ICAgICAgICAgaSsrOwo+IEBAIC0yMzksMTQgKzIzOSwxNCBAQCBzdGF0aWMgY29uc3QgY2hhciBf X2luaXQgKnBjaV9tbWNmZ19udmlkaWFfbWNwNTUodm9pZCkKPiAgICAgICAgICB1MTYgdmVuZG9y LCBkZXZpY2U7Cj4gICAgICAgICAgaW50IHNpemVfaW5kZXg7Cj4gIAo+IC0gICAgICAgIGwgPSBw Y2lfY29uZl9yZWFkMzIoMCwgYnVzLCAwLCAwLCAwKTsKPiArICAgICAgICBsID0gcGNpX2NvbmZf cmVhZDMyKFBDSV9TQkRGKDAsIGJ1cywgMCwgMCksIDApOwo+ICAgICAgICAgIHZlbmRvciA9IGwg JiAweGZmZmY7Cj4gICAgICAgICAgZGV2aWNlID0gKGwgPj4gMTYpICYgMHhmZmZmOwo+ICAKPiAg ICAgICAgICBpZiAoUENJX1ZFTkRPUl9JRF9OVklESUEgIT0gdmVuZG9yIHx8IDB4MDM2OSAhPSBk ZXZpY2UpCj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAKPiAtICAgICAgICBleHRjZmcgPSBw Y2lfY29uZl9yZWFkMzIoMCwgYnVzLCAwLCAwLCBleHRjZmdfcmVnbnVtKTsKPiArICAgICAgICBl eHRjZmcgPSBwY2lfY29uZl9yZWFkMzIoUENJX1NCREYoMCwgYnVzLCAwLCAwKSwgZXh0Y2ZnX3Jl Z251bSk7Cj4gIAo+ICAgICAgICAgIGlmICghKGV4dGNmZyAmIGV4dGNmZ19lbmFibGVfbWFzaykp Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+IEBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIGlu dCBfX2luaXQgcGNpX21tY2ZnX2NoZWNrX2hvc3RicmlkZ2Uodm9pZCkKPiAgICAgIGZvciAoaSA9 IDA7ICFuYW1lICYmIGkgPCBBUlJBWV9TSVpFKHBjaV9tbWNmZ19wcm9iZXMpOyBpKyspIHsKPiAg ICAgICAgICBidXMgPSAgcGNpX21tY2ZnX3Byb2Jlc1tpXS5idXM7Cj4gICAgICAgICAgZGV2Zm4g PSBwY2lfbW1jZmdfcHJvYmVzW2ldLmRldmZuOwo+IC0gICAgICAgIGwgPSBwY2lfY29uZl9yZWFk MzIoMCwgYnVzLCBQQ0lfU0xPVChkZXZmbiksIFBDSV9GVU5DKGRldmZuKSwgMCk7Cj4gKyAgICAg ICAgbCA9IHBjaV9jb25mX3JlYWQzMihQQ0lfU0JERjMoMCwgYnVzLCBkZXZmbiksIDApOwo+ICAg ICAgICAgIHZlbmRvciA9IGwgJiAweGZmZmY7Cj4gICAgICAgICAgZGV2aWNlID0gKGwgPj4gMTYp ICYgMHhmZmZmOwo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9wY2kuYyBi L3hlbi9hcmNoL3g4Ni94ODZfNjQvcGNpLmMKPiBpbmRleCBmZTM2YjYwYzUwLi5iOGI4MmE2ZmU3 IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvcGNpLmMKPiArKysgYi94ZW4vYXJj aC94ODYveDg2XzY0L3BjaS5jCj4gQEAgLTM3LDI4ICszNywyMyBAQCB1aW50MTZfdCBwY2lfY29u Zl9yZWFkMTYocGNpX3NiZGZfdCBzYmRmLCB1bnNpZ25lZCBpbnQgcmVnKQo+ICAgICAgcmV0dXJu IHBjaV9jb25mX3JlYWQoUENJX0NPTkZfQUREUkVTUyhzYmRmLCByZWcpLCByZWcgJiAyLCAyKTsK PiAgfQo+ICAKPiAtI3VuZGVmIFBDSV9DT05GX0FERFJFU1MKPiAtI2RlZmluZSBQQ0lfQ09ORl9B RERSRVNTKGJ1cywgZGV2LCBmdW5jLCByZWcpIFwKPiAtICAgICgweDgwMDAwMDAwIHwgKGJ1cyA8 PCAxNikgfCAoZGV2IDw8IDExKSB8IChmdW5jIDw8IDgpIHwgKHJlZyAmIH4zKSkKPiAtCj4gLXVp bnQzMl90IHBjaV9jb25mX3JlYWQzMigKPiAtICAgIHVuc2lnbmVkIGludCBzZWcsIHVuc2lnbmVk IGludCBidXMsIHVuc2lnbmVkIGludCBkZXYsIHVuc2lnbmVkIGludCBmdW5jLAo+IC0gICAgdW5z aWduZWQgaW50IHJlZykKPiArdWludDMyX3QgcGNpX2NvbmZfcmVhZDMyKHBjaV9zYmRmX3Qgc2Jk ZiwgdW5zaWduZWQgaW50IHJlZykKPiAgewo+IC0gICAgdTMyIHZhbHVlOwo+IC0KPiAtICAgIGlm ICggc2VnIHx8IHJlZyA+IDI1NSApCj4gKyAgICBpZiAoIHNiZGYuc2VnIHx8IHJlZyA+IDI1NSAp Cj4gICAgICB7Cj4gLSAgICAgICAgcGNpX21tY2ZnX3JlYWQoc2VnLCBidXMsIFBDSV9ERVZGTihk ZXYsIGZ1bmMpLCByZWcsIDQsICZ2YWx1ZSk7Cj4gKyAgICAgICAgdWludDMyX3QgdmFsdWU7Cj4g Kwo+ICsgICAgICAgIHBjaV9tbWNmZ19yZWFkKHNiZGYuc2VnLCBzYmRmLmJ1cywgc2JkZi5kZXZm biwgcmVnLCA0LCAmdmFsdWUpOwo+ICAgICAgICAgIHJldHVybiB2YWx1ZTsKPiAgICAgIH0KPiAt ICAgIGVsc2UKPiAtICAgIHsKPiAtICAgICAgICBCVUdfT04oKGJ1cyA+IDI1NSkgfHwgKGRldiA+ IDMxKSB8fCAoZnVuYyA+IDcpKTsKPiAtICAgICAgICByZXR1cm4gcGNpX2NvbmZfcmVhZChQQ0lf Q09ORl9BRERSRVNTKGJ1cywgZGV2LCBmdW5jLCByZWcpLCAwLCA0KTsKPiAtICAgIH0KPiArCj4g KyAgICByZXR1cm4gcGNpX2NvbmZfcmVhZChQQ0lfQ09ORl9BRERSRVNTKHNiZGYsIHJlZyksIDAs IDQpOwo+ICB9Cj4gIAo+ICsjdW5kZWYgUENJX0NPTkZfQUREUkVTUwo+ICsjZGVmaW5lIFBDSV9D T05GX0FERFJFU1MoYnVzLCBkZXYsIGZ1bmMsIHJlZykgXAo+ICsgICAgKDB4ODAwMDAwMDAgfCAo YnVzIDw8IDE2KSB8IChkZXYgPDwgMTEpIHwgKGZ1bmMgPDwgOCkgfCAocmVnICYgfjMpKQo+ICsK PiAgdm9pZCBwY2lfY29uZl93cml0ZTgoCj4gICAgICB1bnNpZ25lZCBpbnQgc2VnLCB1bnNpZ25l ZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2LCB1bnNpZ25lZCBpbnQgZnVuYywKPiAgICAgIHVu c2lnbmVkIGludCByZWcsIHVpbnQ4X3QgZGF0YSkKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv Y2hhci9laGNpLWRiZ3AuYyBiL3hlbi9kcml2ZXJzL2NoYXIvZWhjaS1kYmdwLmMKPiBpbmRleCA2 NDI1OGRhMmRjLi45YjkwMjVmYjMzIDEwMDY0NAo+IC0tLSBhL3hlbi9kcml2ZXJzL2NoYXIvZWhj aS1kYmdwLmMKPiArKysgYi94ZW4vZHJpdmVycy9jaGFyL2VoY2ktZGJncC5jCj4gQEAgLTY4Miw3 ICs2ODIsOCBAQCBzdGF0aWMgaW50IGRiZ3BfY29udHJvbF9tc2coc3RydWN0IGVoY2lfZGJncCAq ZGJncCwgdW5zaWduZWQgaW50IGRldm51bSwKPiAgCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19p bml0IF9fZmluZF9kYmdwKHU4IGJ1cywgdTggc2xvdCwgdTggZnVuYykKPiAgewo+IC0gICAgdTMy IGNsYXNzID0gcGNpX2NvbmZfcmVhZDMyKDAsIGJ1cywgc2xvdCwgZnVuYywgUENJX0NMQVNTX1JF VklTSU9OKTsKPiArICAgIHVpbnQzMl90IGNsYXNzID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRG KDAsIGJ1cywgc2xvdCwgZnVuYyksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQQ0lfQ0xBU1NfUkVWSVNJT04pOwo+ICAKPiAgICAgIGlmICggKGNsYXNzID4+IDgpICE9 IFBDSV9DTEFTU19TRVJJQUxfVVNCX0VIQ0kgKQo+ICAgICAgICAgIHJldHVybiAwOwo+IEBAIC0x MDA2LDcgKzEwMDcsOCBAQCBzdGF0aWMgc2V0X2RlYnVnX3BvcnRfdCBfX3JlYWRfbW9zdGx5IHNl dF9kZWJ1Z19wb3J0ID0gZGVmYXVsdF9zZXRfZGVidWdfcG9ydDsKPiAgCj4gIHN0YXRpYyB2b2lk IG52aWRpYV9zZXRfZGVidWdfcG9ydChzdHJ1Y3QgZWhjaV9kYmdwICpkYmdwLCB1bnNpZ25lZCBp bnQgcG9ydCkKPiAgewo+IC0gICAgdTMyIGR3b3JkID0gcGNpX2NvbmZfcmVhZDMyKDAsIGRiZ3At PmJ1cywgZGJncC0+c2xvdCwgZGJncC0+ZnVuYywgMHg3NCk7Cj4gKyAgICB1aW50MzJfdCBkd29y ZCA9IHBjaV9jb25mX3JlYWQzMihQQ0lfU0JERigwLCBkYmdwLT5idXMsIGRiZ3AtPnNsb3QsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYmdwLT5mdW5j KSwgMHg3NCk7Cj4gIAo+ICAgICAgZHdvcmQgJj0gfigweDBmIDw8IDEyKTsKPiAgICAgIGR3b3Jk IHw9IChwb3J0ICYgMHgwZikgPDwgMTI7Cj4gQEAgLTEwMzksNyArMTA0MSw4IEBAIHN0YXRpYyB2 b2lkIGVoY2lfZGJncF9iaW9zX2hhbmRvZmYoc3RydWN0IGVoY2lfZGJncCAqZGJncCwgdTMyIGhj Y19wYXJhbXMpCj4gICAgICBpZiAoICFvZmZzZXQgKQo+ICAgICAgICAgIHJldHVybjsKPiAgCj4g LSAgICBjYXAgPSBwY2lfY29uZl9yZWFkMzIoMCwgZGJncC0+YnVzLCBkYmdwLT5zbG90LCBkYmdw LT5mdW5jLCBvZmZzZXQpOwo+ICsgICAgY2FwID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAs IGRiZ3AtPmJ1cywgZGJncC0+c2xvdCwgZGJncC0+ZnVuYyksCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgb2Zmc2V0KTsKPiAgICAgIGRiZ3BfcHJpbnRrKCJkYmdwOiBFSENJIEJJT1Mgc3Rh dGUgJTA4eFxuIiwgY2FwKTsKPiAgCj4gICAgICBpZiAoIChjYXAgJiAweGZmKSA9PSAxICYmIChj YXAgJiBFSENJX1VTQkxFR1NVUF9CSU9TKSApCj4gQEAgLTEwNTQsNyArMTA1Nyw4IEBAIHN0YXRp YyB2b2lkIGVoY2lfZGJncF9iaW9zX2hhbmRvZmYoc3RydWN0IGVoY2lfZGJncCAqZGJncCwgdTMy IGhjY19wYXJhbXMpCj4gICAgICB7Cj4gICAgICAgICAgbWRlbGF5KDEwKTsKPiAgICAgICAgICBt c2VjIC09IDEwOwo+IC0gICAgICAgIGNhcCA9IHBjaV9jb25mX3JlYWQzMigwLCBkYmdwLT5idXMs IGRiZ3AtPnNsb3QsIGRiZ3AtPmZ1bmMsIG9mZnNldCk7Cj4gKyAgICAgICAgY2FwID0gcGNpX2Nv bmZfcmVhZDMyKFBDSV9TQkRGKDAsIGRiZ3AtPmJ1cywgZGJncC0+c2xvdCwgZGJncC0+ZnVuYyks Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCk7Cj4gICAgICB9Cj4gIAo+ ICAgICAgaWYgKCBjYXAgJiBFSENJX1VTQkxFR1NVUF9CSU9TICkKPiBAQCAtMTMwNyw3ICsxMzEx LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGVoY2lfZGJncF9pbml0X3ByZWlycShzdHJ1Y3Qgc2Vy aWFsX3BvcnQgKnBvcnQpCj4gICAgICB1MzIgZGVidWdfcG9ydCwgb2Zmc2V0Owo+ICAgICAgdm9p ZCBfX2lvbWVtICplaGNpX2JhcjsKPiAgCj4gLSAgICBkZWJ1Z19wb3J0ID0gcGNpX2NvbmZfcmVh ZDMyKDAsIGRiZ3AtPmJ1cywgZGJncC0+c2xvdCwgZGJncC0+ZnVuYywKPiArICAgIGRlYnVnX3Bv cnQgPSBwY2lfY29uZl9yZWFkMzIoUENJX1NCREYoMCwgZGJncC0+YnVzLCBkYmdwLT5zbG90LCBk YmdwLT5mdW5jKSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJncC0+Y2Fw KTsKPiAgICAgIG9mZnNldCA9IChkZWJ1Z19wb3J0ID4+IDE2KSAmIDB4ZmZmOwo+ICAKPiBAQCAt MTUwNCw3ICsxNTA4LDcgQEAgdm9pZCBfX2luaXQgZWhjaV9kYmdwX2luaXQodm9pZCkKPiAgICAg IGVsc2UKPiAgICAgICAgICByZXR1cm47Cj4gIAo+IC0gICAgZGVidWdfcG9ydCA9IHBjaV9jb25m X3JlYWQzMigwLCBkYmdwLT5idXMsIGRiZ3AtPnNsb3QsIGRiZ3AtPmZ1bmMsCj4gKyAgICBkZWJ1 Z19wb3J0ID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAsIGRiZ3AtPmJ1cywgZGJncC0+c2xv dCwgZGJncC0+ZnVuYyksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiZ3At PmNhcCk7Cj4gICAgICBkYmdwLT5iYXIgPSAoZGVidWdfcG9ydCA+PiAyOSkgJiAweDc7Cj4gICAg ICBkYmdwLT5iYXIgPSAoKGRiZ3AtPmJhciAtIDEpICogNCkgKyBQQ0lfQkFTRV9BRERSRVNTXzA7 Cj4gQEAgLTE1MTYsOCArMTUyMCw4IEBAIHZvaWQgX19pbml0IGVoY2lfZGJncF9pbml0KHZvaWQp Cj4gICAgICAgICAgcmV0dXJuOwo+ICAgICAgfQo+ICAKPiAtICAgIGRiZ3AtPmJhcl92YWwgPSBi YXJfdmFsID0gcGNpX2NvbmZfcmVhZDMyKDAsIGRiZ3AtPmJ1cywgZGJncC0+c2xvdCwKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiZ3AtPmZ1bmMsIGRi Z3AtPmJhcik7Cj4gKyAgICBkYmdwLT5iYXJfdmFsID0gYmFyX3ZhbCA9IHBjaV9jb25mX3JlYWQz MihQQ0lfU0JERigwLCBkYmdwLT5idXMsIGRiZ3AtPnNsb3QsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYmdwLT5mdW5jKSwgZGJncC0+ YmFyKTsKPiAgICAgIGRiZ3BfcHJpbnRrKCJiYXJfdmFsOiAlMDh4XG4iLCBiYXJfdmFsKTsKPiAg ICAgIGlmICggYmFyX3ZhbCAmIH5QQ0lfQkFTRV9BRERSRVNTX01FTV9NQVNLICkKPiAgICAgIHsK PiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvY2hhci9uczE2NTUwLmMgYi94ZW4vZHJpdmVycy9j aGFyL25zMTY1NTAuYwo+IGluZGV4IDk5YzEyNTRjYWMuLmZlNzE0MDZjYzEgMTAwNjQ0Cj4gLS0t IGEveGVuL2RyaXZlcnMvY2hhci9uczE2NTUwLmMKPiArKysgYi94ZW4vZHJpdmVycy9jaGFyL25z MTY1NTAuYwo+IEBAIC0xMTEyLDI3ICsxMTEyLDI4IEBAIHBjaV91YXJ0X2NvbmZpZyhzdHJ1Y3Qg bnMxNjU1MCAqdWFydCwgYm9vbF90IHNraXBfYW10LCB1bnNpZ25lZCBpbnQgaWR4KQo+ICAgICAg ICAgICAgICAgICAgfQo+ICAKPiAgICAgICAgICAgICAgICAgIHVhcnQtPmlvX2Jhc2UgPSAwOwo+ IC0gICAgICAgICAgICAgICAgYmFyID0gcGNpX2NvbmZfcmVhZDMyKDAsIGIsIGQsIGYsCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0JBU0VfQUREUkVTU18wICsg YmFyX2lkeCo0KTsKPiArICAgICAgICAgICAgICAgIGJhciA9IHBjaV9jb25mX3JlYWQzMihQQ0lf U0JERigwLCBiLCBkLCBmKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQQ0lfQkFTRV9BRERSRVNTXzAgKyBiYXJfaWR4ICogNCk7Cj4gIAo+ICAgICAgICAgICAgICAg ICAgLyogTU1JTyBiYXNlZCAqLwo+ICAgICAgICAgICAgICAgICAgaWYgKCBwYXJhbS0+bW1pbyAm JiAhKGJhciAmIFBDSV9CQVNFX0FERFJFU1NfU1BBQ0VfSU8pICkKPiAgICAgICAgICAgICAgICAg IHsKPiAgICAgICAgICAgICAgICAgICAgICBwY2lfY29uZl93cml0ZTMyKDAsIGIsIGQsIGYsCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTXzAg KyBiYXJfaWR4KjQsIH4wdSk7Cj4gLSAgICAgICAgICAgICAgICAgICAgbGVuID0gcGNpX2NvbmZf cmVhZDMyKDAsIGIsIGQsIGYsIFBDSV9CQVNFX0FERFJFU1NfMCArIGJhcl9pZHgqNCk7Cj4gKyAg ICAgICAgICAgICAgICAgICAgbGVuID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAsIGIsIGQs IGYpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFT RV9BRERSRVNTXzAgKyBiYXJfaWR4ICogNCk7Cj4gICAgICAgICAgICAgICAgICAgICAgcGNpX2Nv bmZfd3JpdGUzMigwLCBiLCBkLCBmLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUENJX0JBU0VfQUREUkVTU18wICsgYmFyX2lkeCo0LCBiYXIpOwo+ICAKPiAgICAgICAg ICAgICAgICAgICAgICAvKiBIYW5kbGUgNjQgYml0IEJBUiBpZiBmb3VuZCAqLwo+ICAgICAgICAg ICAgICAgICAgICAgIGlmICggYmFyICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCApCj4g ICAgICAgICAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICBiYXJfNjQg PSBwY2lfY29uZl9yZWFkMzIoMCwgYiwgZCwgZiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTXzAgKyAoYmFyX2lkeCsxKSo0KTsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgYmFyXzY0ID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAs IGIsIGQsIGYpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9C QVNFX0FERFJFU1NfMCArIChiYXJfaWR4ICsgMSkgKiA0KTsKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgcGNpX2NvbmZfd3JpdGUzMigwLCBiLCBkLCBmLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTXzAgKyAoYmFyX2lkeCsxKSo0LCB+MHUp Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICBsZW5fNjQgPSBwY2lfY29uZl9yZWFkMzIoMCwg YiwgZCwgZiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0JBU0Vf QUREUkVTU18wICsgKGJhcl9pZHgrMSkqNCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGxl bl82NCA9IHBjaV9jb25mX3JlYWQzMihQQ0lfU0JERigwLCBiLCBkLCBmKSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0JBU0VfQUREUkVTU18wICsgKGJhcl9pZHgg KyAxKSAqIDQpOwo+ICAgICAgICAgICAgICAgICAgICAgICAgICBwY2lfY29uZl93cml0ZTMyKDAs IGIsIGQsIGYsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9CQVNF X0FERFJFU1NfMCArIChiYXJfaWR4KzEpKjQsIGJhcl82NCk7Cj4gICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemUgID0gKCh1NjQpfjAgPDwgMzIpIHwgUENJX0JBU0VfQUREUkVTU19NRU1fTUFT SzsKPiBAQCAtMTE0OSw3ICsxMTUwLDggQEAgcGNpX3VhcnRfY29uZmlnKHN0cnVjdCBuczE2NTUw ICp1YXJ0LCBib29sX3Qgc2tpcF9hbXQsIHVuc2lnbmVkIGludCBpZHgpCj4gICAgICAgICAgICAg ICAgICB7Cj4gICAgICAgICAgICAgICAgICAgICAgcGNpX2NvbmZfd3JpdGUzMigwLCBiLCBkLCBm LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0JBU0VfQUREUkVT U18wICsgYmFyX2lkeCo0LCB+MHUpOwo+IC0gICAgICAgICAgICAgICAgICAgIGxlbiA9IHBjaV9j b25mX3JlYWQzMigwLCBiLCBkLCBmLCBQQ0lfQkFTRV9BRERSRVNTXzApOwo+ICsgICAgICAgICAg ICAgICAgICAgIGxlbiA9IHBjaV9jb25mX3JlYWQzMihQQ0lfU0JERigwLCBiLCBkLCBmKSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0JBU0VfQUREUkVT U18wKTsKPiAgICAgICAgICAgICAgICAgICAgICBwY2lfY29uZl93cml0ZTMyKDAsIGIsIGQsIGYs Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNT XzAgKyBiYXJfaWR4KjQsIGJhcik7Cj4gICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IGxlbiAm IFBDSV9CQVNFX0FERFJFU1NfSU9fTUFTSzsKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYW1kL2lvbW11X2RldGVjdC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1k L2lvbW11X2RldGVjdC5jCj4gaW5kZXggM2M1ZDRkZTFhMy4uMDY5ZGYxNTZkZSAxMDA2NDQKPiAt LS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfZGV0ZWN0LmMKPiArKysgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfZGV0ZWN0LmMKPiBAQCAtNDgsNyArNDgs NyBAQCBzdGF0aWMgaW50IF9faW5pdCBnZXRfaW9tbXVfY2FwYWJpbGl0aWVzKAo+ICB7Cj4gICAg ICB1OCB0eXBlOwo+ICAKPiAtICAgIGlvbW11LT5jYXAuaGVhZGVyID0gcGNpX2NvbmZfcmVhZDMy KHNlZywgYnVzLCBkZXYsIGZ1bmMsIGNhcF9wdHIpOwo+ICsgICAgaW9tbXUtPmNhcC5oZWFkZXIg PSBwY2lfY29uZl9yZWFkMzIoUENJX1NCREYoc2VnLCBidXMsIGRldiwgZnVuYyksIGNhcF9wdHIp Owo+ICAgICAgdHlwZSA9IGdldF9maWVsZF9mcm9tX3JlZ191MzIoaW9tbXUtPmNhcC5oZWFkZXIs IFBDSV9DQVBfVFlQRV9NQVNLLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UENJX0NBUF9UWVBFX1NISUZUKTsKPiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL2FtZC9pb21tdV9pbml0LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9t bXVfaW5pdC5jCj4gaW5kZXggMWIzZTdkZTEwZC4uNjA4M2Q1MWI5MSAxMDA2NDQKPiAtLS0gYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jCj4gKysrIGIveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2luaXQuYwo+IEBAIC04NDQsNyArODQ0LDcgQEAgc3Rh dGljIHZvaWQgYW1kX2lvbW11X2VycmF0dW1fNzQ2X3dvcmthcm91bmQoc3RydWN0IGFtZF9pb21t dSAqaW9tbXUpCj4gICAgICAgICAgcmV0dXJuOwo+ICAKPiAgICAgIHBjaV9jb25mX3dyaXRlMzIo aW9tbXUtPnNlZywgYnVzLCBkZXYsIGZ1bmMsIDB4ZjAsIDB4OTApOwo+IC0gICAgdmFsdWUgPSBw Y2lfY29uZl9yZWFkMzIoaW9tbXUtPnNlZywgYnVzLCBkZXYsIGZ1bmMsIDB4ZjQpOwo+ICsgICAg dmFsdWUgPSBwY2lfY29uZl9yZWFkMzIoUENJX1NCREYyKGlvbW11LT5zZWcsIGlvbW11LT5iZGYp LCAweGY0KTsKPiAgCj4gICAgICBpZiAoIHZhbHVlICYgKDEgPDwgMikgKQo+ICAgICAgICAgIHJl dHVybjsKPiBAQCAtMTIzMSw3ICsxMjMxLDcgQEAgc3RhdGljIGJvb2xfdCBfX2luaXQgYW1kX3Nw NTEwMF9lcnJhdHVtMjgodm9pZCkKPiAgCj4gICAgICBmb3IgKGJ1cyA9IDA7IGJ1cyA8IDI1Njsg YnVzKyspCj4gICAgICB7Cj4gLSAgICAgICAgaWQgPSBwY2lfY29uZl9yZWFkMzIoMCwgYnVzLCAw eDE0LCAwLCBQQ0lfVkVORE9SX0lEKTsKPiArICAgICAgICBpZCA9IHBjaV9jb25mX3JlYWQzMihQ Q0lfU0JERigwLCBidXMsIDB4MTQsIDApLCBQQ0lfVkVORE9SX0lEKTsKPiAgCj4gICAgICAgICAg dmVuZG9yX2lkID0gaWQgJiAweGZmZmY7Cj4gICAgICAgICAgZGV2X2lkID0gKGlkID4+IDE2KSAm IDB4ZmZmZjsKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYwo+IGluZGV4IDcwMzA1NmY3YjkuLjgwODg3YWY2 NmMgMTAwNjQ0Cj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMKPiArKysgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYwo+IEBAIC02MzIsOCArNjMyLDcgQEAgdW5zaWdu ZWQgaW50IHBjaV9zaXplX21lbV9iYXIocGNpX3NiZGZfdCBzYmRmLCB1bnNpZ25lZCBpbnQgcG9z LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqcGFkZHIsIHVpbnQ2 NF90ICpwc2l6ZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IGZsYWdzKQo+ICB7Cj4gLSAgICB1aW50MzJfdCBoaSA9IDAsIGJhciA9IHBjaV9jb25mX3JlYWQz MihzYmRmLnNlZywgc2JkZi5idXMsIHNiZGYuZGV2LAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2JkZi5mbiwgcG9zKTsKPiArICAgIHVpbnQzMl90IGhpID0g MCwgYmFyID0gcGNpX2NvbmZfcmVhZDMyKHNiZGYsIHBvcyk7Cj4gICAgICB1aW50NjRfdCBzaXpl Owo+ICAgICAgYm9vbCBpczY0Yml0cyA9ICEoZmxhZ3MgJiBQQ0lfQkFSX1JPTSkgJiYKPiAgICAg ICAgICAoYmFyICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV9NQVNLKSA9PSBQQ0lfQkFTRV9B RERSRVNTX01FTV9UWVBFXzY0Owo+IEBAIC02NTUsMTUgKzY1NCwxMyBAQCB1bnNpZ25lZCBpbnQg cGNpX3NpemVfbWVtX2JhcihwY2lfc2JkZl90IHNiZGYsIHVuc2lnbmVkIGludCBwb3MsCj4gICAg ICAgICAgICAgICpwc2l6ZSA9IDA7Cj4gICAgICAgICAgICAgIHJldHVybiAxOwo+ICAgICAgICAg IH0KPiAtICAgICAgICBoaSA9IHBjaV9jb25mX3JlYWQzMihzYmRmLnNlZywgc2JkZi5idXMsIHNi ZGYuZGV2LCBzYmRmLmZuLCBwb3MgKyA0KTsKPiArICAgICAgICBoaSA9IHBjaV9jb25mX3JlYWQz MihzYmRmLCBwb3MgKyA0KTsKPiAgICAgICAgICBwY2lfY29uZl93cml0ZTMyKHNiZGYuc2VnLCBz YmRmLmJ1cywgc2JkZi5kZXYsIHNiZGYuZm4sIHBvcyArIDQsIH4wKTsKPiAgICAgIH0KPiAtICAg IHNpemUgPSBwY2lfY29uZl9yZWFkMzIoc2JkZi5zZWcsIHNiZGYuYnVzLCBzYmRmLmRldiwgc2Jk Zi5mbiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zKSAmIG1hc2s7Cj4gKyAgICBz aXplID0gcGNpX2NvbmZfcmVhZDMyKHNiZGYsIHBvcykgJiBtYXNrOwo+ICAgICAgaWYgKCBpczY0 Yml0cyApCj4gICAgICB7Cj4gLSAgICAgICAgc2l6ZSB8PSAodWludDY0X3QpcGNpX2NvbmZfcmVh ZDMyKHNiZGYuc2VnLCBzYmRmLmJ1cywgc2JkZi5kZXYsCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNiZGYuZm4sIHBvcyArIDQpIDw8IDMyOwo+ICsgICAgICAg IHNpemUgfD0gKHVpbnQ2NF90KXBjaV9jb25mX3JlYWQzMihzYmRmLCBwb3MgKyA0KSA8PCAzMjsK PiAgICAgICAgICBwY2lfY29uZl93cml0ZTMyKHNiZGYuc2VnLCBzYmRmLmJ1cywgc2JkZi5kZXYs IHNiZGYuZm4sIHBvcyArIDQsIGhpKTsKPiAgICAgIH0KPiAgICAgIGVsc2UgaWYgKCBzaXplICkK PiBAQCAtNzUwLDcgKzc0Nyw3IEBAIGludCBwY2lfYWRkX2RldmljZSh1MTYgc2VnLCB1OCBidXMs IHU4IGRldmZuLAo+ICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IFBDSV9TUklPVl9OVU1f QkFSUzsgKQo+ICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg aWR4ID0gcG9zICsgUENJX1NSSU9WX0JBUiArIGkgKiA0Owo+IC0gICAgICAgICAgICAgICAgdTMy IGJhciA9IHBjaV9jb25mX3JlYWQzMihzZWcsIGJ1cywgc2xvdCwgZnVuYywgaWR4KTsKPiArICAg ICAgICAgICAgICAgIHUzMiBiYXIgPSBwY2lfY29uZl9yZWFkMzIocGRldi0+c2JkZiwgaWR4KTsK PiAgICAgICAgICAgICAgICAgIHBjaV9zYmRmX3Qgc2JkZiA9IFBDSV9TQkRGMyhzZWcsIGJ1cywg ZGV2Zm4pOwo+ICAKPiAgICAgICAgICAgICAgICAgIGlmICggKGJhciAmIFBDSV9CQVNFX0FERFJF U1NfU1BBQ0UpID09Cj4gQEAgLTEwMDIsNyArOTk5LDcgQEAgYm9vbF90IF9faW5pdCBwY2lfZGV2 aWNlX2RldGVjdCh1MTYgc2VnLCB1OCBidXMsIHU4IGRldiwgdTggZnVuYykKPiAgewo+ICAgICAg dTMyIHZlbmRvcjsKPiAgCj4gLSAgICB2ZW5kb3IgPSBwY2lfY29uZl9yZWFkMzIoc2VnLCBidXMs IGRldiwgZnVuYywgUENJX1ZFTkRPUl9JRCk7Cj4gKyAgICB2ZW5kb3IgPSBwY2lfY29uZl9yZWFk MzIoUENJX1NCREYoc2VnLCBidXMsIGRldiwgZnVuYyksIFBDSV9WRU5ET1JfSUQpOwo+ICAgICAg Lyogc29tZSBicm9rZW4gYm9hcmRzIHJldHVybiAwIG9yIH4wIGlmIGEgc2xvdCBpcyBlbXB0eTog Ki8KPiAgICAgIGlmICggKHZlbmRvciA9PSAweGZmZmZmZmZmKSB8fCAodmVuZG9yID09IDB4MDAw MDAwMDApIHx8Cj4gICAgICAgICAgICh2ZW5kb3IgPT0gMHgwMDAwZmZmZikgfHwgKHZlbmRvciA9 PSAweGZmZmYwMDAwKSApCj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0 ZC9xdWlya3MuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9xdWlya3MuYwo+IGluZGV4 IDQ3NTk3Yzk2MDAuLjI4ZTk1OTcwMTQgMTAwNjQ0Cj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvdnRkL3F1aXJrcy5jCj4gKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3F1 aXJrcy5jCj4gQEAgLTEyOCw5ICsxMjgsMTEgQEAgc3RhdGljIHZvaWQgX19pbml0IG1hcF9pZ2Rf cmVnKHZvaWQpCj4gICAgICBpZiAoIGlnZF9yZWdfdmEgKQo+ICAgICAgICAgIHJldHVybjsKPiAg Cj4gLSAgICBpZ2RfbW1pbyAgID0gcGNpX2NvbmZfcmVhZDMyKDAsIDAsIElHRF9ERVYsIDAsIFBD SV9CQVNFX0FERFJFU1NfMSk7Cj4gKyAgICBpZ2RfbW1pbyAgID0gcGNpX2NvbmZfcmVhZDMyKFBD SV9TQkRGKDAsIDAsIElHRF9ERVYsIDApLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQQ0lfQkFTRV9BRERSRVNTXzEpOwo+ICAgICAgaWdkX21taW8gPDw9IDMyOwo+IC0gICAg aWdkX21taW8gICs9IHBjaV9jb25mX3JlYWQzMigwLCAwLCBJR0RfREVWLCAwLCBQQ0lfQkFTRV9B RERSRVNTXzApOwo+ICsgICAgaWdkX21taW8gICs9IHBjaV9jb25mX3JlYWQzMihQQ0lfU0JERigw LCAwLCBJR0RfREVWLCAwKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJ X0JBU0VfQUREUkVTU18wKTsKPiAgICAgIGlnZF9yZWdfdmEgPSBpb3JlbWFwKGlnZF9tbWlvICYg SUdEX0JBUl9NQVNLLCAweDMwMDApOwo+ICB9Cj4gIAo+IEBAIC0yODAsNyArMjgyLDcgQEAgc3Rh dGljIHZvaWQgX19pbml0IHR5bGVyc2J1cmdfaW50cmVtYXBfcXVpcmsodm9pZCkKPiAgICAgIGZv ciAoIGJ1cyA9IDA7IGJ1cyA8IDB4MTAwOyBidXMrKyApCj4gICAgICB7Cj4gICAgICAgICAgLyog TWF0Y2ggb24gU3lzdGVtIE1hbmFnZW1lbnQgUmVnaXN0ZXJzIG9uIERldmljZSAyMCBGdW5jdGlv biAwICovCj4gLSAgICAgICAgZGV2aWNlID0gcGNpX2NvbmZfcmVhZDMyKDAsIGJ1cywgMjAsIDAs IFBDSV9WRU5ET1JfSUQpOwo+ICsgICAgICAgIGRldmljZSA9IHBjaV9jb25mX3JlYWQzMihQQ0lf U0JERigwLCBidXMsIDIwLCAwKSwgUENJX1ZFTkRPUl9JRCk7Cj4gICAgICAgICAgcmV2ID0gcGNp X2NvbmZfcmVhZDgoUENJX1NCREYoMCwgYnVzLCAyMCwgMCksIFBDSV9SRVZJU0lPTl9JRCk7Cj4g IAo+ICAgICAgICAgIGlmICggcmV2ID09IDB4MTMgJiYgZGV2aWNlID09IDB4MzQyZTgwODYgKQo+ IEBAIC0yOTYsOCArMjk4LDggQEAgc3RhdGljIHZvaWQgX19pbml0IHR5bGVyc2J1cmdfaW50cmVt YXBfcXVpcmsodm9pZCkKPiAgLyogaW5pdGlhbGl6ZSBwbGF0Zm9ybSBpZGVudGlmaWNhdGlvbiBm bGFncyAqLwo+ICB2b2lkIF9faW5pdCBwbGF0Zm9ybV9xdWlya3NfaW5pdCh2b2lkKQo+ICB7Cj4g LSAgICBpb2hfaWQgPSBwY2lfY29uZl9yZWFkMzIoMCwgMCwgSU9IX0RFViwgMCwgMCk7Cj4gLSAg ICBpZ2RfaWQgPSBwY2lfY29uZl9yZWFkMzIoMCwgMCwgSUdEX0RFViwgMCwgMCk7Cj4gKyAgICBp b2hfaWQgPSBwY2lfY29uZl9yZWFkMzIoUENJX1NCREYoMCwgMCwgSU9IX0RFViwgMCksIDApOwo+ ICsgICAgaWdkX2lkID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGKDAsIDAsIElHRF9ERVYsIDAp LCAwKTsKPiAgCj4gICAgICAvKiBNb2JpbGUgNCBTZXJpZXMgQ2hpcHNldCBuZWdsZWN0cyB0byBz ZXQgUldCRiBjYXBhYmlsaXR5LiAqLwo+ICAgICAgaWYgKCBpb2hfaWQgPT0gMHgyYTQwODA4NiAp Cj4gQEAgLTM1NiwxNSArMzU4LDE1IEBAIGludCBtZV93aWZpX3F1aXJrKHN0cnVjdCBkb21haW4g KmRvbWFpbiwgdTggYnVzLCB1OCBkZXZmbiwgaW50IG1hcCkKPiAgICAgIHUzMiBpZDsKPiAgICAg IGludCByYyA9IDA7Cj4gIAo+IC0gICAgaWQgPSBwY2lfY29uZl9yZWFkMzIoMCwgMCwgMCwgMCwg MCk7Cj4gKyAgICBpZCA9IHBjaV9jb25mX3JlYWQzMihQQ0lfU0JERigwLCAwLCAwLCAwKSwgMCk7 Cj4gICAgICBpZiAoIElTX0NURyhpZCkgKQo+ICAgICAgewo+ICAgICAgICAgIC8qIHF1aXQgaWYg TUUgZG9lcyBub3QgZXhpc3QgKi8KPiAtICAgICAgICBpZiAoIHBjaV9jb25mX3JlYWQzMigwLCAw LCAzLCAwLCAwKSA9PSAweGZmZmZmZmZmICkKPiArICAgICAgICBpZiAoIHBjaV9jb25mX3JlYWQz MihQQ0lfU0JERigwLCAwLCAzLCAwKSwgMCkgPT0gMHhmZmZmZmZmZiApCj4gICAgICAgICAgICAg IHJldHVybiAwOwo+ICAKPiAgICAgICAgICAvKiBpZiBkZXZpY2UgaXMgV0xBTiBkZXZpY2UsIG1h cCBNRSBwaGFudG9tIGRldmljZSAwOjMuNyAqLwo+IC0gICAgICAgIGlkID0gcGNpX2NvbmZfcmVh ZDMyKDAsIGJ1cywgUENJX1NMT1QoZGV2Zm4pLCBQQ0lfRlVOQyhkZXZmbiksIDApOwo+ICsgICAg ICAgIGlkID0gcGNpX2NvbmZfcmVhZDMyKFBDSV9TQkRGMygwLCBidXMsIGRldmZuKSwgMCk7Cj4g ICAgICAgICAgc3dpdGNoIChpZCkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIGNhc2UgMHg0 MjMyODA4NjoKPiBAQCAtMzg0LDExICszODYsMTEgQEAgaW50IG1lX3dpZmlfcXVpcmsoc3RydWN0 IGRvbWFpbiAqZG9tYWluLCB1OCBidXMsIHU4IGRldmZuLCBpbnQgbWFwKQo+ICAgICAgZWxzZSBp ZiAoIElTX0lMSyhpZCkgfHwgSVNfQ1BUKGlkKSApCj4gICAgICB7Cj4gICAgICAgICAgLyogcXVp dCBpZiBNRSBkb2VzIG5vdCBleGlzdCAqLwo+IC0gICAgICAgIGlmICggcGNpX2NvbmZfcmVhZDMy KDAsIDAsIDIyLCAwLCAwKSA9PSAweGZmZmZmZmZmICkKPiArICAgICAgICBpZiAoIHBjaV9jb25m X3JlYWQzMihQQ0lfU0JERigwLCAwLCAyMiwgMCksIDApID09IDB4ZmZmZmZmZmYgKQo+ICAgICAg ICAgICAgICByZXR1cm4gMDsKPiAgCj4gICAgICAgICAgLyogaWYgZGV2aWNlIGlzIFdMQU4gZGV2 aWNlLCBtYXAgTUUgcGhhbnRvbSBkZXZpY2UgMDoyMi43ICovCj4gLSAgICAgICAgaWQgPSBwY2lf Y29uZl9yZWFkMzIoMCwgYnVzLCBQQ0lfU0xPVChkZXZmbiksIFBDSV9GVU5DKGRldmZuKSwgMCk7 Cj4gKyAgICAgICAgaWQgPSBwY2lfY29uZl9yZWFkMzIoUENJX1NCREYzKDAsIGJ1cywgZGV2Zm4p LCAwKTsKPiAgICAgICAgICBzd2l0Y2ggKGlkKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAg Y2FzZSAweDAwODc4MDg2OiAgICAgICAgLyogS2lsbWVyIFBlYWsgKi8KPiBAQCAtNDM4LDcgKzQ0 MCw3IEBAIHZvaWQgcGNpX3Z0ZF9xdWlyayhjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldikKPiAg ICAgIGNhc2UgMHgzNDJlOiAvKiBUeWxlcnNidXJnIGNoaXBzZXQgKE5laGFsZW0gLyBXZXN0bWVy ZSBzeXN0ZW1zKSAqLwo+ICAgICAgY2FzZSAweDM3Mjg6IC8qIFhlb24gQzU1MDAvQzM1MDAgKEph c3BlckZvcmVzdCkgKi8KPiAgICAgIGNhc2UgMHgzYzI4OiAvKiBTYW5keWJyaWRnZSAqLwo+IC0g ICAgICAgIHZhbCA9IHBjaV9jb25mX3JlYWQzMihzZWcsIGJ1cywgZGV2LCBmdW5jLCAweDFBQyk7 Cj4gKyAgICAgICAgdmFsID0gcGNpX2NvbmZfcmVhZDMyKHBkZXYtPnNiZGYsIDB4MUFDKTsKPiAg ICAgICAgICBwY2lfY29uZl93cml0ZTMyKHNlZywgYnVzLCBkZXYsIGZ1bmMsIDB4MUFDLCB2YWwg fCAoMSA8PCAzMSkpOwo+ICAgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiTWFza2VkIFZULWQg ZXJyb3Igc2lnbmFsaW5nIG9uICUwNHg6JTAyeDolMDJ4LiV1XG4iLAo+ICAgICAgICAgICAgICAg ICBzZWcsIGJ1cywgZGV2LCBmdW5jKTsKPiBAQCAtNDYxLDcgKzQ2Myw3IEBAIHZvaWQgcGNpX3Z0 ZF9xdWlyayhjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldikKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUENJX0VYVF9DQVBfSURfVk5EUik7Cj4gICAgICAgICAg ICAgIHdoaWxlICggcG9zICkKPiAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgdmFs ID0gcGNpX2NvbmZfcmVhZDMyKHNlZywgYnVzLCBkZXYsIGZ1bmMsIHBvcyArIFBDSV9WTkRSX0hF QURFUik7Cj4gKyAgICAgICAgICAgICAgICB2YWwgPSBwY2lfY29uZl9yZWFkMzIocGRldi0+c2Jk ZiwgcG9zICsgUENJX1ZORFJfSEVBREVSKTsKPiAgICAgICAgICAgICAgICAgIGlmICggUENJX1ZO RFJfSEVBREVSX0lEKHZhbCkgPT0gNCAmJiBQQ0lfVk5EUl9IRUFERVJfUkVWKHZhbCkgPT0gMSAp Cj4gICAgICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICAgICAgcG9zICs9IFBDSV9W TkRSX0hFQURFUjsKPiBAQCAtNDgxLDggKzQ4Myw4IEBAIHZvaWQgcGNpX3Z0ZF9xdWlyayhjb25z dCBzdHJ1Y3QgcGNpX2RldiAqcGRldikKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAg fQo+ICAKPiAtICAgICAgICB2YWwgPSBwY2lfY29uZl9yZWFkMzIoc2VnLCBidXMsIGRldiwgZnVu YywgcG9zICsgUENJX0VSUl9VTkNPUl9NQVNLKTsKPiAtICAgICAgICB2YWwyID0gcGNpX2NvbmZf cmVhZDMyKHNlZywgYnVzLCBkZXYsIGZ1bmMsIHBvcyArIFBDSV9FUlJfQ09SX01BU0spOwo+ICsg ICAgICAgIHZhbCA9IHBjaV9jb25mX3JlYWQzMihwZGV2LT5zYmRmLCBwb3MgKyBQQ0lfRVJSX1VO Q09SX01BU0spOwo+ICsgICAgICAgIHZhbDIgPSBwY2lfY29uZl9yZWFkMzIocGRldi0+c2JkZiwg cG9zICsgUENJX0VSUl9DT1JfTUFTSyk7Cj4gICAgICAgICAgaWYgKCAodmFsICYgUENJX0VSUl9V TkNfVU5TVVApICYmICh2YWwyICYgUENJX0VSUl9DT1JfQURWX05GQVQpICkKPiAgICAgICAgICAg ICAgYWN0aW9uID0gIkZvdW5kIG1hc2tlZCI7Cj4gICAgICAgICAgZWxzZSBpZiAoICFmZiApCj4g QEAgLTQ5Nyw3ICs0OTksNyBAQCB2b2lkIHBjaV92dGRfcXVpcmsoY29uc3Qgc3RydWN0IHBjaV9k ZXYgKnBkZXYpCj4gICAgICAgICAgICAgIGFjdGlvbiA9ICJNdXN0IG5vdCBtYXNrIjsKPiAgCj4g ICAgICAgICAgLyogWFBVTkNFUlJNU0sgU2VuZCBDb21wbGV0aW9uIHdpdGggVW5zdXBwb3J0ZWQg UmVxdWVzdCAqLwo+IC0gICAgICAgIHZhbCA9IHBjaV9jb25mX3JlYWQzMihzZWcsIGJ1cywgZGV2 LCBmdW5jLCAweDIwYyk7Cj4gKyAgICAgICAgdmFsID0gcGNpX2NvbmZfcmVhZDMyKHBkZXYtPnNi ZGYsIDB4MjBjKTsKPiAgICAgICAgICBwY2lfY29uZl93cml0ZTMyKHNlZywgYnVzLCBkZXYsIGZ1 bmMsIDB4MjBjLCB2YWwgfCAoMSA8PCA0KSk7Cj4gIAo+ICAgICAgICAgIHByaW50ayhYRU5MT0df SU5GTyAiJXMgVVIgc2lnbmFsaW5nIG9uICUwNHg6JTAyeDolMDJ4LiV1XG4iLAo+IEBAIC01MTQs OCArNTE2LDggQEAgdm9pZCBwY2lfdnRkX3F1aXJrKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2 KQo+ICAgICAgY2FzZSAweDE2MTA6IGNhc2UgMHgxNjE0OiBjYXNlIDB4MTYxODogLyogQnJvYWR3 ZWxsICovCj4gICAgICBjYXNlIDB4MTkwMDogY2FzZSAweDE5MDQ6IGNhc2UgMHgxOTA4OiBjYXNl IDB4MTkwYzogY2FzZSAweDE5MGY6IC8qIFNreWxha2UgKi8KPiAgICAgIGNhc2UgMHgxOTEwOiBj YXNlIDB4MTkxODogY2FzZSAweDE5MWY6IC8qIFNreWxha2UgKi8KPiAtICAgICAgICBiYXIgPSBw Y2lfY29uZl9yZWFkMzIoc2VnLCBidXMsIGRldiwgZnVuYywgMHg2Yyk7Cj4gLSAgICAgICAgYmFy ID0gKGJhciA8PCAzMikgfCBwY2lfY29uZl9yZWFkMzIoc2VnLCBidXMsIGRldiwgZnVuYywgMHg2 OCk7Cj4gKyAgICAgICAgYmFyID0gcGNpX2NvbmZfcmVhZDMyKHBkZXYtPnNiZGYsIDB4NmMpOwo+ ICsgICAgICAgIGJhciA9IChiYXIgPDwgMzIpIHwgcGNpX2NvbmZfcmVhZDMyKHBkZXYtPnNiZGYs IDB4NjgpOwo+ICAgICAgICAgIHBhID0gYmFyICYgMHg3ZmZmZmZmMDAwVUw7IC8qIGJpdHMgMTIu Li4zOCAqLwo+ICAgICAgICAgIGlmICggKGJhciAmIDEpICYmIHBhICYmCj4gICAgICAgICAgICAg ICBwYWdlX2lzX3JhbV90eXBlKHBhZGRyX3RvX3BmbihwYSksIFJBTV9UWVBFX1JFU0VSVkVEKSAp Cj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3BjaS9wY2kuYyBiL3hlbi9kcml2ZXJzL3BjaS9w Y2kuYwo+IGluZGV4IDVlNWUwZjA1MzguLmIyNDcwMmUwYzMgMTAwNjQ0Cj4gLS0tIGEveGVuL2Ry aXZlcnMvcGNpL3BjaS5jCj4gKysrIGIveGVuL2RyaXZlcnMvcGNpL3BjaS5jCj4gQEAgLTkzLDcg KzkzLDcgQEAgaW50IHBjaV9maW5kX25leHRfZXh0X2NhcGFiaWxpdHkoaW50IHNlZywgaW50IGJ1 cywgaW50IGRldmZuLCBpbnQgc3RhcnQsIGludCBjYXAKPiAgICAgIGludCB0dGwgPSA0ODA7IC8q IDM4NDAgYnl0ZXMsIG1pbmltdW0gOCBieXRlcyBwZXIgY2FwYWJpbGl0eSAqLwo+ICAgICAgaW50 IHBvcyA9IG1heChzdGFydCwgMHgxMDApOwo+ICAKPiAtICAgIGhlYWRlciA9IHBjaV9jb25mX3Jl YWQzMihzZWcsIGJ1cywgUENJX1NMT1QoZGV2Zm4pLCBQQ0lfRlVOQyhkZXZmbiksIHBvcyk7Cj4g KyAgICBoZWFkZXIgPSBwY2lfY29uZl9yZWFkMzIoUENJX1NCREYzKHNlZywgYnVzLCBkZXZmbiks IHBvcyk7Cj4gIAo+ICAgICAgLyoKPiAgICAgICAqIElmIHdlIGhhdmUgbm8gY2FwYWJpbGl0aWVz LCB0aGlzIGlzIGluZGljYXRlZCBieSBjYXAgSUQsCj4gQEAgLTEwOSw3ICsxMDksNyBAQCBpbnQg cGNpX2ZpbmRfbmV4dF9leHRfY2FwYWJpbGl0eShpbnQgc2VnLCBpbnQgYnVzLCBpbnQgZGV2Zm4s IGludCBzdGFydCwgaW50IGNhcAo+ICAgICAgICAgIHBvcyA9IFBDSV9FWFRfQ0FQX05FWFQoaGVh ZGVyKTsKPiAgICAgICAgICBpZiAoIHBvcyA8IDB4MTAwICkKPiAgICAgICAgICAgICAgYnJlYWs7 Cj4gLSAgICAgICAgaGVhZGVyID0gcGNpX2NvbmZfcmVhZDMyKHNlZywgYnVzLCBQQ0lfU0xPVChk ZXZmbiksIFBDSV9GVU5DKGRldmZuKSwgcG9zKTsKPiArICAgICAgICBoZWFkZXIgPSBwY2lfY29u Zl9yZWFkMzIoUENJX1NCREYzKHNlZywgYnVzLCBkZXZmbiksIHBvcyk7Cj4gICAgICB9Cj4gICAg ICByZXR1cm4gMDsKPiAgfQo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNpL2hlYWRlci5j IGIveGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIuYwo+IGluZGV4IDBiMTc2YjQ5MGEuLjc0NzY2MzQ5 ODIgMTAwNjQ0Cj4gLS0tIGEveGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIuYwo+ICsrKyBiL3hlbi9k cml2ZXJzL3ZwY2kvaGVhZGVyLmMKPiBAQCAtNTExLDcgKzUxMSw3IEBAIHN0YXRpYyBpbnQgaW5p dF9iYXJzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQo+ICAgICAgICAgICAgICBjb250aW51ZTsKPiAg ICAgICAgICB9Cj4gIAo+IC0gICAgICAgIHZhbCA9IHBjaV9jb25mX3JlYWQzMihwZGV2LT5zZWcs IHBkZXYtPmJ1cywgc2xvdCwgZnVuYywgcmVnKTsKPiArICAgICAgICB2YWwgPSBwY2lfY29uZl9y ZWFkMzIocGRldi0+c2JkZiwgcmVnKTsKPiAgICAgICAgICBpZiAoICh2YWwgJiBQQ0lfQkFTRV9B RERSRVNTX1NQQUNFKSA9PSBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFX0lPICkKPiAgICAgICAgICB7 Cj4gICAgICAgICAgICAgIGJhcnNbaV0udHlwZSA9IFZQQ0lfQkFSX0lPOwo+IEBAIC01NjEsOCAr NTYxLDggQEAgc3RhdGljIGludCBpbml0X2JhcnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpCj4gICAg ICAgICAgcm9tLT50eXBlID0gVlBDSV9CQVJfUk9NOwo+ICAgICAgICAgIHJvbS0+c2l6ZSA9IHNp emU7Cj4gICAgICAgICAgcm9tLT5hZGRyID0gYWRkcjsKPiAtICAgICAgICBoZWFkZXItPnJvbV9l bmFibGVkID0gcGNpX2NvbmZfcmVhZDMyKHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5j LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9tX3Jl ZykgJiBQQ0lfUk9NX0FERFJFU1NfRU5BQkxFOwo+ICsgICAgICAgIGhlYWRlci0+cm9tX2VuYWJs ZWQgPSBwY2lfY29uZl9yZWFkMzIocGRldi0+c2JkZiwgcm9tX3JlZykgJgo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQQ0lfUk9NX0FERFJFU1NfRU5BQkxFOwo+ICAKPiAgICAgICAg ICByYyA9IHZwY2lfYWRkX3JlZ2lzdGVyKHBkZXYtPnZwY2ksIHZwY2lfaHdfcmVhZDMyLCByb21f d3JpdGUsIHJvbV9yZWcsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCByb20p Owo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNpL21zaXguYyBiL3hlbi9kcml2ZXJzL3Zw Y2kvbXNpeC5jCj4gaW5kZXggOGU2Y2QwNzBkMC4uYzYwY2JhMDEzNyAxMDA2NDQKPiAtLS0gYS94 ZW4vZHJpdmVycy92cGNpL21zaXguYwo+ICsrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvbXNpeC5jCj4g QEAgLTQ2OSwxMSArNDY5LDkgQEAgc3RhdGljIGludCBpbml0X21zaXgoc3RydWN0IHBjaV9kZXYg KnBkZXYpCj4gICAgICBwZGV2LT52cGNpLT5tc2l4LT5wZGV2ID0gcGRldjsKPiAgCj4gICAgICBw ZGV2LT52cGNpLT5tc2l4LT50YWJsZXNbVlBDSV9NU0lYX1RBQkxFXSA9Cj4gLSAgICAgICAgcGNp X2NvbmZfcmVhZDMyKHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICBtc2l4X3RhYmxlX29mZnNldF9yZWcobXNpeF9vZmZzZXQpKTsKPiAr ICAgICAgICBwY2lfY29uZl9yZWFkMzIocGRldi0+c2JkZiwgbXNpeF90YWJsZV9vZmZzZXRfcmVn KG1zaXhfb2Zmc2V0KSk7Cj4gICAgICBwZGV2LT52cGNpLT5tc2l4LT50YWJsZXNbVlBDSV9NU0lY X1BCQV0gPQo+IC0gICAgICAgIHBjaV9jb25mX3JlYWQzMihwZGV2LT5zZWcsIHBkZXYtPmJ1cywg c2xvdCwgZnVuYywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgbXNpeF9wYmFfb2Zmc2V0X3Jl Zyhtc2l4X29mZnNldCkpOwo+ICsgICAgICAgIHBjaV9jb25mX3JlYWQzMihwZGV2LT5zYmRmLCBt c2l4X3BiYV9vZmZzZXRfcmVnKG1zaXhfb2Zmc2V0KSk7Cj4gIAo+ICAgICAgZm9yICggaSA9IDA7 IGkgPCBwZGV2LT52cGNpLT5tc2l4LT5tYXhfZW50cmllczsgaSsrKQo+ICAgICAgewo+IGRpZmYg LS1naXQgYS94ZW4vZHJpdmVycy92cGNpL3ZwY2kuYyBiL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5j Cj4gaW5kZXggMWE0YzJlZTRmMS4uMjEwNjI1NTg2MyAxMDA2NDQKPiAtLS0gYS94ZW4vZHJpdmVy cy92cGNpL3ZwY2kuYwo+ICsrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jCj4gQEAgLTEyMCw4 ICsxMjAsNyBAQCB1aW50MzJfdCB2cGNpX2h3X3JlYWQxNihjb25zdCBzdHJ1Y3QgcGNpX2RldiAq cGRldiwgdW5zaWduZWQgaW50IHJlZywKPiAgdWludDMyX3QgdnBjaV9od19yZWFkMzIoY29uc3Qg c3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcsCj4gICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKmRhdGEpCj4gIHsKPiAtICAgIHJldHVybiBwY2lfY29uZl9yZWFkMzIo cGRldi0+c2VnLCBwZGV2LT5idXMsIFBDSV9TTE9UKHBkZXYtPmRldmZuKSwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgUENJX0ZVTkMocGRldi0+ZGV2Zm4pLCByZWcpOwo+ICsgICAgcmV0 dXJuIHBjaV9jb25mX3JlYWQzMihwZGV2LT5zYmRmLCByZWcpOwo+ICB9Cj4gIAo+ICBpbnQgdnBj aV9hZGRfcmVnaXN0ZXIoc3RydWN0IHZwY2kgKnZwY2ksIHZwY2lfcmVhZF90ICpyZWFkX2hhbmRs ZXIsCj4gQEAgLTIxMSw3ICsyMTAsNyBAQCBzdGF0aWMgdWludDMyX3QgdnBjaV9yZWFkX2h3KHBj aV9zYmRmX3Qgc2JkZiwgdW5zaWduZWQgaW50IHJlZywKPiAgICAgIHN3aXRjaCAoIHNpemUgKQo+ ICAgICAgewo+ICAgICAgY2FzZSA0Ogo+IC0gICAgICAgIGRhdGEgPSBwY2lfY29uZl9yZWFkMzIo c2JkZi5zZWcsIHNiZGYuYnVzLCBzYmRmLmRldiwgc2JkZi5mbiwgcmVnKTsKPiArICAgICAgICBk YXRhID0gcGNpX2NvbmZfcmVhZDMyKHNiZGYsIHJlZyk7Cj4gICAgICAgICAgYnJlYWs7Cj4gIAo+ ICAgICAgY2FzZSAzOgo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcGNpLmggYi94ZW4v aW5jbHVkZS94ZW4vcGNpLmgKPiBpbmRleCBjZjRjMjIzZjdjLi4yYTU3MDU1NjBlIDEwMDY0NAo+ IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9wY2ku aAo+IEBAIC0xNzQsOSArMTc0LDcgQEAgdm9pZCBwY2lfY2hlY2tfZGlzYWJsZV9kZXZpY2UodTE2 IHNlZywgdTggYnVzLCB1OCBkZXZmbik7Cj4gIAo+ICB1aW50OF90IHBjaV9jb25mX3JlYWQ4KHBj aV9zYmRmX3Qgc2JkZiwgdW5zaWduZWQgaW50IHJlZyk7Cj4gIHVpbnQxNl90IHBjaV9jb25mX3Jl YWQxNihwY2lfc2JkZl90IHNiZGYsIHVuc2lnbmVkIGludCByZWcpOwo+IC11aW50MzJfdCBwY2lf Y29uZl9yZWFkMzIoCj4gLSAgICB1bnNpZ25lZCBpbnQgc2VnLCB1bnNpZ25lZCBpbnQgYnVzLCB1 bnNpZ25lZCBpbnQgZGV2LCB1bnNpZ25lZCBpbnQgZnVuYywKPiAtICAgIHVuc2lnbmVkIGludCBy ZWcpOwo+ICt1aW50MzJfdCBwY2lfY29uZl9yZWFkMzIocGNpX3NiZGZfdCBzYmRmLCB1bnNpZ25l ZCBpbnQgcmVnKTsKPiAgdm9pZCBwY2lfY29uZl93cml0ZTgoCj4gICAgICB1bnNpZ25lZCBpbnQg c2VnLCB1bnNpZ25lZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2LCB1bnNpZ25lZCBpbnQgZnVu YywKPiAgICAgIHVuc2lnbmVkIGludCByZWcsIHVpbnQ4X3QgZGF0YSk7Cj4gLS0gCj4gMi4yMC4x IChBcHBsZSBHaXQtMTE3KQo+IAoKLS0gCkJyaWFuIFdvb2RzCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs