Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp369715ybz; Wed, 29 Apr 2020 01:34:56 -0700 (PDT) X-Google-Smtp-Source: APiQypLH8wdQfvGDXl720LKm76wJEB9toTHnTEY1ldeFewyjj8SEBHqWIK2NmVWK/+eoHrmwDqA5 X-Received: by 2002:a17:906:6811:: with SMTP id k17mr1543040ejr.351.1588149296715; Wed, 29 Apr 2020 01:34:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588149296; cv=none; d=google.com; s=arc-20160816; b=ijz+ZkTz+tspfGkAyRJQ8i2gL6H67qrOBN8qkqIwejSFaIsL/aIKkzLZj4lT0MYuKr BdEMX8AeWrROTQOacB23ka6gm0ZwrtRmaxkHkNNpZUOjwHVNSJ1cJ6fTif5PZgheZDDV 3OX6nYIMbVHjzlLoUwySX3ojpiJzxL7xXwN73wjUN9KrQRN1t6C88nCN0kKgPsKK1DVa Ep3X7tfhBIuT0SPTHR00XsL6Y4nxrp4gzilDMf/NBOr43k4minMi0qD9Z0XkhBXGSVb9 /hmc1ipr4MNxH1kcGZv8vaHnUPYFeZ3ib3HBAcMR4XXw8Yn+gI13J6mZCSfHlO7MtR0z fm7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=qJ1jy0qwf8Wq7qUy2up8n3de2D1QB6639h3RiG9ughQ=; b=pRyNY0K4xwHAYz5AwfBI2fhV20g3x5V+hOiOFBVbkPM9IVK8BNBJgcPc8k53TIsL5l ExYZs9MnQ4tYaLO0O8G8ass8lWy+EL6KQX8EqsRToUWJdlxdp2RXSeNxDLn8mWIbP6w3 BFI0cmW2TTz3kGW2VQMa7aIdJS+bCPV0V8zjPp2sYXpYazN0f4OFla1FozhP66o28g8/ 4YLqpRHSnM3kposbwKDHVwnDqJilpCURtZsSMMU05VlUuTesKPZmBAduNuUrpE8d2Sor qdBTRfNhCg/vGTC/QfJ9xXOAyCkl5B+CzNdpYimVSy4k8RAIeuCruCkvcc2ArpTtROD4 CuGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=Sy8IBUdI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v21si3406236eja.226.2020.04.29.01.34.31; Wed, 29 Apr 2020 01:34:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=Sy8IBUdI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726561AbgD2Ic1 (ORCPT + 99 others); Wed, 29 Apr 2020 04:32:27 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:29023 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726345AbgD2Ic0 (ORCPT ); Wed, 29 Apr 2020 04:32:26 -0400 X-UUID: 7bd81211549d4ad6bda80469a11c9f7b-20200429 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=qJ1jy0qwf8Wq7qUy2up8n3de2D1QB6639h3RiG9ughQ=; b=Sy8IBUdI8omBmaONAabU7sghSCSECupNW49LapwlqWbG8yG+QUJGhV5H7/DVh2ndYfJnd3Z1tAP2QUTE8QrPbafYEJBeLkkUIBfNToass6y+dxDlVotTinG/tKQJ3asI9HvvUUCGYgGD7TKeX4TrZ9FFNLOmGD7tx69cNee6XXU=; X-UUID: 7bd81211549d4ad6bda80469a11c9f7b-20200429 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 706939796; Wed, 29 Apr 2020 16:32:12 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs01n2.mediatek.inc (172.21.101.79) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 29 Apr 2020 16:32:08 +0800 Received: from [172.21.77.33] (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 29 Apr 2020 16:32:08 +0800 Message-ID: <1588149130.25566.7.camel@mtkswgap22> Subject: Re: [PATCH v2 1/1] binder: transaction latency tracking for user build From: Frankie Chang To: Todd Kjos CC: Joel Fernandes , Greg Kroah-Hartman , Todd Kjos , Martijn Coenen , Arve =?ISO-8859-1?Q?Hj=F8nnev=E5g?= , Christian Brauner , LKML , , wsd_upstream , Jian-Min Liu Date: Wed, 29 Apr 2020 16:32:10 +0800 In-Reply-To: References: <1586759071.9539.15.camel@mtkswgap22> <1586929044-12708-1-git-send-email-Frankie.Chang@mediatek.com> <1586929044-12708-2-git-send-email-Frankie.Chang@mediatek.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-TM-SNTS-SMTP: 830316AF110234D77DF04E692EDA7246F6C3B3D407834B4A1439CFE005E961772000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIwLTA0LTE1IGF0IDE1OjI1IC0wNzAwLCBUb2RkIEtqb3Mgd3JvdGU6DQo+IE9u IFR1ZSwgQXByIDE0LCAyMDIwIGF0IDEwOjM4IFBNIEZyYW5raWUgQ2hhbmcNCj4gPEZyYW5raWUu Q2hhbmdAbWVkaWF0ZWsuY29tPiB3cm90ZToNCj4gPg0KPiA+IFJlY29yZCBzdGFydC9lbmQgdGlt ZXN0YW1wIHRvIGJpbmRlciB0cmFuc2FjdGlvbi4NCj4gDQo+IHMvdGltZXN0YW1wIHRvL3RpbWVz dGFtcHMgZm9yLw0KPiANCj4gPiBXaGVuIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlZCBvciB0cmFu c2FjdGlvbiBpcyBmcmVlLA0KPiA+IGl0IHdvdWxkIGJlIGNoZWNrZWQgaWYgdHJhbnNhY3Rpb24g bGF0ZW5jeSBvdmVyIHRocmVzaG9sZCAoMiBzZWMpLA0KPiANCj4gSXMgdGhlIDIgc2VjIGNvbmZp Z3VyYWJsZT8gV2h5IHdhcyAyIHNlYyBjaG9zZW4/DQoNClNvbWUgb2YgbW9kdWxlcyB3b3VsZCB0 cmlnZ2VyIHRpbWVvdXQgTkUgaWYgdGhlaXIgYmluZGVyIHRyYW5zYWN0aW9uDQpkb24ndCBmaW5p c2ggaW4gdGltZSwgc3VjaCBhcyBhdWRpbyB0aW1lb3V0ICg1IHNlYyksIGV2ZW4gQlQgY29tbWFu ZA0KdGltZW91dCAoMiBzZWMpLCBldGMuDQoNClRoZXJlZm9yZSwgd2Ugd2FudCB0byByZWNvcmQg dGhlc2UgdHJhbnNhY3Rpb25zIHdoaWNoIGV4Y2VlZCAyIHNlYy4gSXQNCmNvdWxkIGJlIGhlbHBm dWwgdG8gZGVidWcuDQoNCj4gPiBpZiB5ZXMsIHByaW50aW5nIHJlbGF0ZWQgaW5mb3JtYXRpb24g Zm9yIHRyYWNpbmcuDQo+ID4NCj4gPiAvKiBJbXBsZW1lbnQgZGV0YWlscyAqLw0KPiA+IC0gQWRk IHRyYWNlcG9pbnQvdHJhY2UgYXQgZnJlZSB0cmFuc2FjdGlvbi4NCj4gPiAgIFNpbmNlIHRoZSBv cmlnaW5hbCB0cmFjZV9iaW5kZXJfdHJhbnNhY3Rpb25fcmV2ZWl2ZWQgY2Fubm90DQo+IA0KPiBz L3JldmVpdmVkL3JlY2VpdmVkLw0KPiANCj4gPiAgIHByZWNpc2VseSBwcmVzZW50IHRoZSByZWFs IGZpbmlzaGVkIHRpbWUgb2YgdHJhbnNhY3Rpb24sIGFkZGluZyBhDQo+ID4gICB0cmFjZV9iaW5k ZXJfZnJlZV90cmFuc2FjdGlvbiBhdCB0aGUgcG9pbnQgb2YgZnJlZSB0cmFuc2FjdGlvbg0KPiA+ ICAgbWF5IGJlIG1vcmUgY2xvc2UgdG8gaXQuDQo+IA0KPiBDYW4gd2UganVzdCBhZGQgdGhhdCB0 cmFjZSBpbnN0ZWFkPw0KDQpUaW1lIGxpbWl0YXRpb24gb2YgcmVjb3JkaW5nIGlzIHRoZSByZWFz b24gd2h5IHdlIGRvbid0IGp1c3QgdXNlIHRyYWNlDQpoZXJlLg0KDQpJbiBzb21lIGxvbmcgdGlt ZSBzdGFiaWxpdHkgdGVzdCwgc3VjaCBhcyBNVEJGLA0KdGhlIGV4Y2VwdGlvbiBpcyBjYXVzZWQg YnkgYSBzZXJpZXMgb2YgdHJhbnNhY3Rpb25zIGludGVyYWN0aW9uLg0KU29tZSBhYm5vcm1hbCB0 cmFuc2FjdGlvbnMgbWF5IGJlIHBlbmRpbmcgZm9yIGEgbG9uZyB0aW1lIGFnbywgdGhleSANCmNv dWxkIG5vdCBiZSByZWNvcmRlZCBkdWUgdG8gYnVmZmVyIGxpbWl0ZWQuIA0KDQo+ID4NCj4gPiAt IEFkZCBsYXRlbmN5IHRyYWNlciBtb2R1bGUgdG8gbW9uaXRvciBzbG93IHRyYW5zYWN0aW9uLg0K PiA+ICAgVGhlIHRyYWNlX2JpbmRlcl9mcmVlX3RyYW5zYWN0aW9uIHdvdWxkIG5vdCBiZSBlbmFi bGVkDQo+ID4gICBieSBkZWZhdWx0LiBNb25pdG9yaW5nIHdoaWNoIHRyYW5zYWN0aW9uIGlzIHRv byBzbG93IHRvDQo+ID4gICBjYXVzZSBzb21lIG9mIGV4Y2VwdGlvbnMgaXMgaW1wb3J0YW50LiBT byB3ZSBob29rIHRoZQ0KPiA+ICAgdHJhY2Vwb2ludCB0byBjYWxsIHRoZSBtb25pdG9yIGZ1bmN0 aW9uLg0KPiA+DQo+ID4gLSBNb3ZlIHNvbWUgc3RydWN0IGZyb20gY29yZSBmaWxlIHRvIGhlYWRl ciBmaWxlLg0KPiA+ICAgTmVlZCBzb21lIHN0cnVjdCBkZWZpbmVkIGluIGNvcmUgZmlsZSBpbiBs YXRlbmN5IHRyYWNlIG1vZHVsZQ0KPiA+ICAgSW4gYWRkaXRpb24sIG1vdmluZyBzdHJ1Y3RzIHRv IGhlYWRlciBmaWxlIG1ha2VzIG1vZHVsZSBtb3JlDQo+ID4gICBleHRlbmRhYmxlLg0KPiA+DQo+ ID4gU2lnbmVkLW9mZi1ieTogRnJhbmtpZSBDaGFuZyA8RnJhbmtpZS5DaGFuZ0BtZWRpYXRlay5j b20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvYW5kcm9pZC9LY29uZmlnICAgICAgICAgICAgICAg ICB8ICAgIDggKysNCj4gPiAgZHJpdmVycy9hbmRyb2lkL01ha2VmaWxlICAgICAgICAgICAgICAg IHwgICAgMSArDQo+ID4gIGRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYyAgICAgICAgICAgICAgICB8 ICAyMzcgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICBkcml2ZXJzL2FuZHJv aWQvYmluZGVyX2ludGVybmFsLmggICAgICAgfCAgMjI3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrDQo+ID4gIGRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfbGF0ZW5jeV90cmFjZXIuYyB8ICAx MDAgKysrKysrKysrKysrKw0KPiA+ICBkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmggICAg ICAgICAgfCAgIDM2ICsrKysrDQo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgNDAwIGluc2VydGlvbnMo KyksIDIwOSBkZWxldGlvbnMoLSkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5k cm9pZC9iaW5kZXJfbGF0ZW5jeV90cmFjZXIuYw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvYW5kcm9pZC9LY29uZmlnIGIvZHJpdmVycy9hbmRyb2lkL0tjb25maWcNCj4gPiBpbmRleCA2 ZmRmMmFiLi43YmE4MGViIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvYW5kcm9pZC9LY29uZmln DQo+ID4gKysrIGIvZHJpdmVycy9hbmRyb2lkL0tjb25maWcNCj4gPiBAQCAtNTQsNiArNTQsMTQg QEAgY29uZmlnIEFORFJPSURfQklOREVSX0lQQ19TRUxGVEVTVA0KPiA+ICAgICAgICAgICBleGhh dXN0aXZlbHkgd2l0aCBjb21iaW5hdGlvbnMgb2YgdmFyaW91cyBidWZmZXIgc2l6ZXMgYW5kDQo+ ID4gICAgICAgICAgIGFsaWdubWVudHMuDQo+ID4NCj4gPiArY29uZmlnIEJJTkRFUl9VU0VSX1RS QUNLSU5HDQo+ID4gKyAgICAgICBib29sICJBbmRyb2lkIEJpbmRlciB0cmFuc2FjdGlvbiB0cmFj a2luZyINCj4gPiArICAgICAgIGhlbHANCj4gPiArICAgICAgICAgVXNlZCBmb3IgdHJhY2sgYWJu b3JtYWwgYmluZGVyIHRyYW5zYWN0aW9uIHdoaWNoIGlzIG92ZXIgMiBzZWNvbmRzLA0KPiA+ICsg ICAgICAgICB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBkb25lIG9yIGJlIGZyZWUsIHRoaXMgdHJh bnNhY3Rpb24gd291bGQgYmUNCj4gPiArICAgICAgICAgY2hlY2tlZCB3aGV0aGVyIGl0IGV4ZWN1 dGVkIG92ZXJ0aW1lLg0KPiA+ICsgICAgICAgICBJZiB5ZXMsIHByaW50aW5nIG91dCB0aGUgZGV0 YWlsIGluZm8gYWJvdXQgaXQuDQo+ID4gKw0KPiA+ICBlbmRpZiAjIGlmIEFORFJPSUQNCj4gPg0K PiA+ICBlbmRtZW51DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9NYWtlZmlsZSBi L2RyaXZlcnMvYW5kcm9pZC9NYWtlZmlsZQ0KPiA+IGluZGV4IGM5ZDNkMGM5Li41NTJlOGFjIDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvYW5kcm9pZC9NYWtlZmlsZQ0KPiA+ICsrKyBiL2RyaXZl cnMvYW5kcm9pZC9NYWtlZmlsZQ0KPiA+IEBAIC00LDMgKzQsNCBAQCBjY2ZsYWdzLXkgKz0gLUkk KHNyYykgICAgICAgICAgICAgICAgICAgIyBuZWVkZWQgZm9yIHRyYWNlIGV2ZW50cw0KPiA+ICBv YmotJChDT05GSUdfQU5EUk9JRF9CSU5ERVJGUykgICAgICAgICArPSBiaW5kZXJmcy5vDQo+ID4g IG9iai0kKENPTkZJR19BTkRST0lEX0JJTkRFUl9JUEMpICAgICAgICs9IGJpbmRlci5vIGJpbmRl cl9hbGxvYy5vDQo+ID4gIG9iai0kKENPTkZJR19BTkRST0lEX0JJTkRFUl9JUENfU0VMRlRFU1Qp ICs9IGJpbmRlcl9hbGxvY19zZWxmdGVzdC5vDQo+ID4gK29iai0kKENPTkZJR19CSU5ERVJfVVNF Ul9UUkFDS0lORykgICAgICs9IGJpbmRlcl9sYXRlbmN5X3RyYWNlci5vDQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYw0K PiA+IGluZGV4IGE2YjIwODIuLjM4MGE2OGIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9hbmRy b2lkL2JpbmRlci5jDQo+ID4gKysrIGIvZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jDQo+ID4gQEAg LTE2MCwyNCArMTYwLDYgQEAgc3RhdGljIGludCBiaW5kZXJfc2V0X3N0b3Bfb25fdXNlcl9lcnJv cihjb25zdCBjaGFyICp2YWwsDQo+ID4gICNkZWZpbmUgdG9fYmluZGVyX2ZkX2FycmF5X29iamVj dChoZHIpIFwNCj4gPiAgICAgICAgIGNvbnRhaW5lcl9vZihoZHIsIHN0cnVjdCBiaW5kZXJfZmRf YXJyYXlfb2JqZWN0LCBoZHIpDQo+ID4NCj4gPiAtZW51bSBiaW5kZXJfc3RhdF90eXBlcyB7DQo+ ID4gLSAgICAgICBCSU5ERVJfU1RBVF9QUk9DLA0KPiA+IC0gICAgICAgQklOREVSX1NUQVRfVEhS RUFELA0KPiA+IC0gICAgICAgQklOREVSX1NUQVRfTk9ERSwNCj4gPiAtICAgICAgIEJJTkRFUl9T VEFUX1JFRiwNCj4gPiAtICAgICAgIEJJTkRFUl9TVEFUX0RFQVRILA0KPiA+IC0gICAgICAgQklO REVSX1NUQVRfVFJBTlNBQ1RJT04sDQo+ID4gLSAgICAgICBCSU5ERVJfU1RBVF9UUkFOU0FDVElP Tl9DT01QTEVURSwNCj4gPiAtICAgICAgIEJJTkRFUl9TVEFUX0NPVU5UDQo+ID4gLX07DQo+ID4g LQ0KPiA+IC1zdHJ1Y3QgYmluZGVyX3N0YXRzIHsNCj4gPiAtICAgICAgIGF0b21pY190IGJyW19J T0NfTlIoQlJfRkFJTEVEX1JFUExZKSArIDFdOw0KPiA+IC0gICAgICAgYXRvbWljX3QgYmNbX0lP Q19OUihCQ19SRVBMWV9TRykgKyAxXTsNCj4gPiAtICAgICAgIGF0b21pY190IG9ial9jcmVhdGVk W0JJTkRFUl9TVEFUX0NPVU5UXTsNCj4gPiAtICAgICAgIGF0b21pY190IG9ial9kZWxldGVkW0JJ TkRFUl9TVEFUX0NPVU5UXTsNCj4gPiAtfTsNCj4gPiAtDQo+ID4gIHN0YXRpYyBzdHJ1Y3QgYmlu ZGVyX3N0YXRzIGJpbmRlcl9zdGF0czsNCj4gPg0KPiA+ICBzdGF0aWMgaW5saW5lIHZvaWQgYmlu ZGVyX3N0YXRzX2RlbGV0ZWQoZW51bSBiaW5kZXJfc3RhdF90eXBlcyB0eXBlKQ0KPiA+IEBAIC0y MTQsMzIgKzE5Niw2IEBAIHN0YXRpYyBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uX2xvZ19lbnRy eSAqYmluZGVyX3RyYW5zYWN0aW9uX2xvZ19hZGQoDQo+ID4gIH0NCj4gPg0KPiA+ICAvKioNCj4g PiAtICogc3RydWN0IGJpbmRlcl93b3JrIC0gd29yayBlbnF1ZXVlZCBvbiBhIHdvcmtsaXN0DQo+ ID4gLSAqIEBlbnRyeTogICAgICAgICAgICAgbm9kZSBlbnF1ZXVlZCBvbiBsaXN0DQo+ID4gLSAq IEB0eXBlOiAgICAgICAgICAgICAgdHlwZSBvZiB3b3JrIHRvIGJlIHBlcmZvcm1lZA0KPiA+IC0g Kg0KPiA+IC0gKiBUaGVyZSBhcmUgc2VwYXJhdGUgd29yayBsaXN0cyBmb3IgcHJvYywgdGhyZWFk LCBhbmQgbm9kZSAoYXN5bmMpLg0KPiA+IC0gKi8NCj4gPiAtc3RydWN0IGJpbmRlcl93b3JrIHsN Cj4gPiAtICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7DQo+ID4gLQ0KPiA+IC0gICAgICAg ZW51bSB7DQo+ID4gLSAgICAgICAgICAgICAgIEJJTkRFUl9XT1JLX1RSQU5TQUNUSU9OID0gMSwN Cj4gPiAtICAgICAgICAgICAgICAgQklOREVSX1dPUktfVFJBTlNBQ1RJT05fQ09NUExFVEUsDQo+ ID4gLSAgICAgICAgICAgICAgIEJJTkRFUl9XT1JLX1JFVFVSTl9FUlJPUiwNCj4gPiAtICAgICAg ICAgICAgICAgQklOREVSX1dPUktfTk9ERSwNCj4gPiAtICAgICAgICAgICAgICAgQklOREVSX1dP UktfREVBRF9CSU5ERVIsDQo+ID4gLSAgICAgICAgICAgICAgIEJJTkRFUl9XT1JLX0RFQURfQklO REVSX0FORF9DTEVBUiwNCj4gPiAtICAgICAgICAgICAgICAgQklOREVSX1dPUktfQ0xFQVJfREVB VEhfTk9USUZJQ0FUSU9OLA0KPiA+IC0gICAgICAgfSB0eXBlOw0KPiA+IC19Ow0KPiA+IC0NCj4g PiAtc3RydWN0IGJpbmRlcl9lcnJvciB7DQo+ID4gLSAgICAgICBzdHJ1Y3QgYmluZGVyX3dvcmsg d29yazsNCj4gPiAtICAgICAgIHVpbnQzMl90IGNtZDsNCj4gPiAtfTsNCj4gPiAtDQo+ID4gLS8q Kg0KPiA+ICAgKiBzdHJ1Y3QgYmluZGVyX25vZGUgLSBiaW5kZXIgbm9kZSBib29ra2VlcGluZw0K PiA+ICAgKiBAZGVidWdfaWQ6ICAgICAgICAgICAgIHVuaXF1ZSBJRCBmb3IgZGVidWdnaW5nDQo+ ID4gICAqICAgICAgICAgICAgICAgICAgICAgICAgKGludmFyaWFudCBhZnRlciBpbml0aWFsaXpl ZCkNCj4gDQo+IFBsZWFzZSwgaWYgd2UgbXVzdCBoYXZlIGEgYmluZGVyX2ludGVybmFsLmggZm9y IHRoZSBrZXkgZGF0YQ0KPiBzdHJ1Y3R1cmVzLCB0aGVuIG1vdmUgdGhlbSBhbGwuDQo+IFRoZSB1 c2Ugb2Ygc3RydWN0cyBieSB0cmFuc2FjdGlvbiBsYXRlbmN5IHN0dWZmIHNob3VsZG4ndCBiZSB0 aGUNCj4gcmF0aW9uYWxlIGZvciB3aGF0IG1vdmVzIGFuZA0KPiB3aGF0IHN0YXlzLiBiaW5kZXJf cHJvYywgYmluZGVyX25vZGUsIGJpbmRlcl90aHJlYWQgZXRjIHNob3VsZCBiZSBkZWZpbmVkDQo+ IGluIHRoZSBzYW1lIGZpbGUuDQoNCk9rYXksIHdlIHdpbGwgbW92ZSBhbGwgc3RydWN0cyB0byBi aW5kZXJfaW50ZXJuYWwuaCB0byBtYWtlIHRoZW0gZGVmaW5lZCBpbiBzYW1lIGZpbGUsIHRoYW5r cy4NCg0KPiA+IEBAIC00MDIsODkgKzM1OCw2IEBAIGVudW0gYmluZGVyX2RlZmVycmVkX3N0YXRl IHsNCj4gPiAgICAgICAgIEJJTkRFUl9ERUZFUlJFRF9SRUxFQVNFICAgICAgPSAweDAyLA0KPiA+ ICB9Ow0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gKiBzdHJ1Y3QgYmluZGVyX3Byb2MgLSBiaW5kZXIg cHJvY2VzcyBib29ra2VlcGluZw0KPiA+IC0gKiBAcHJvY19ub2RlOiAgICAgICAgICAgIGVsZW1l bnQgZm9yIGJpbmRlcl9wcm9jcyBsaXN0DQo+ID4gLSAqIEB0aHJlYWRzOiAgICAgICAgICAgICAg cmJ0cmVlIG9mIGJpbmRlcl90aHJlYWRzIGluIHRoaXMgcHJvYw0KPiA+IC0gKiAgICAgICAgICAg ICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQGlubmVyX2xvY2spDQo+ID4gLSAqIEBub2Rlczog ICAgICAgICAgICAgICAgcmJ0cmVlIG9mIGJpbmRlciBub2RlcyBhc3NvY2lhdGVkIHdpdGgNCj4g PiAtICogICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHByb2Mgb3JkZXJlZCBieSBub2RlLT5w dHINCj4gPiAtICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBpbm5lcl9s b2NrKQ0KPiA+IC0gKiBAcmVmc19ieV9kZXNjOiAgICAgICAgIHJidHJlZSBvZiByZWZzIG9yZGVy ZWQgYnkgcmVmLT5kZXNjDQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3Rl ZCBieSBAb3V0ZXJfbG9jaykNCj4gPiAtICogQHJlZnNfYnlfbm9kZTogICAgICAgICByYnRyZWUg b2YgcmVmcyBvcmRlcmVkIGJ5IHJlZi0+bm9kZQ0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAg ICAgIChwcm90ZWN0ZWQgYnkgQG91dGVyX2xvY2spDQo+ID4gLSAqIEB3YWl0aW5nX3RocmVhZHM6 ICAgICAgdGhyZWFkcyBjdXJyZW50bHkgd2FpdGluZyBmb3IgcHJvYyB3b3JrDQo+ID4gLSAqICAg ICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCj4gPiAtICog QHBpZCAgICAgICAgICAgICAgICAgICBQSUQgb2YgZ3JvdXBfbGVhZGVyIG9mIHByb2Nlc3MNCj4g PiAtICogICAgICAgICAgICAgICAgICAgICAgICAoaW52YXJpYW50IGFmdGVyIGluaXRpYWxpemVk KQ0KPiA+IC0gKiBAdHNrICAgICAgICAgICAgICAgICAgIHRhc2tfc3RydWN0IGZvciBncm91cF9s ZWFkZXIgb2YgcHJvY2Vzcw0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAgICAgIChpbnZhcmlh bnQgYWZ0ZXIgaW5pdGlhbGl6ZWQpDQo+ID4gLSAqIEBkZWZlcnJlZF93b3JrX25vZGU6ICAgZWxl bWVudCBmb3IgYmluZGVyX2RlZmVycmVkX2xpc3QNCj4gPiAtICogICAgICAgICAgICAgICAgICAg ICAgICAocHJvdGVjdGVkIGJ5IGJpbmRlcl9kZWZlcnJlZF9sb2NrKQ0KPiA+IC0gKiBAZGVmZXJy ZWRfd29yazogICAgICAgIGJpdG1hcCBvZiBkZWZlcnJlZCB3b3JrIHRvIHBlcmZvcm0NCj4gPiAt ICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IGJpbmRlcl9kZWZlcnJlZF9s b2NrKQ0KPiA+IC0gKiBAaXNfZGVhZDogICAgICAgICAgICAgIHByb2Nlc3MgaXMgZGVhZCBhbmQg YXdhaXRpbmcgZnJlZQ0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gb3V0c3Rh bmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBjbGVhbmVkIHVwDQo+ID4gLSAqICAgICAgICAgICAgICAg ICAgICAgICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCj4gPiAtICogQHRvZG86ICAgICAg ICAgICAgICAgICBsaXN0IG9mIHdvcmsgZm9yIHRoaXMgcHJvY2Vzcw0KPiA+IC0gKiAgICAgICAg ICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQGlubmVyX2xvY2spDQo+ID4gLSAqIEBzdGF0 czogICAgICAgICAgICAgICAgcGVyLXByb2Nlc3MgYmluZGVyIHN0YXRpc3RpY3MNCj4gPiAtICog ICAgICAgICAgICAgICAgICAgICAgICAoYXRvbWljcywgbm8gbG9jayBuZWVkZWQpDQo+ID4gLSAq IEBkZWxpdmVyZWRfZGVhdGg6ICAgICAgbGlzdCBvZiBkZWxpdmVyZWQgZGVhdGggbm90aWZpY2F0 aW9uDQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAaW5uZXJf bG9jaykNCj4gPiAtICogQG1heF90aHJlYWRzOiAgICAgICAgICBjYXAgb24gbnVtYmVyIG9mIGJp bmRlciB0aHJlYWRzDQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBi eSBAaW5uZXJfbG9jaykNCj4gPiAtICogQHJlcXVlc3RlZF90aHJlYWRzOiAgICBudW1iZXIgb2Yg YmluZGVyIHRocmVhZHMgcmVxdWVzdGVkIGJ1dCBub3QNCj4gPiAtICogICAgICAgICAgICAgICAg ICAgICAgICB5ZXQgc3RhcnRlZC4gSW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgY2FuDQo+ID4g LSAqICAgICAgICAgICAgICAgICAgICAgICAgb25seSBiZSAwIG9yIDEuDQo+ID4gLSAqICAgICAg ICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCj4gPiAtICogQHJl cXVlc3RlZF90aHJlYWRzX3N0YXJ0ZWQ6IG51bWJlciBiaW5kZXIgdGhyZWFkcyBzdGFydGVkDQo+ ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykN Cj4gPiAtICogQHRtcF9yZWY6ICAgICAgICAgICAgICB0ZW1wb3JhcnkgcmVmZXJlbmNlIHRvIGlu ZGljYXRlIHByb2MgaXMgaW4gdXNlDQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHBy b3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCj4gPiAtICogQGRlZmF1bHRfcHJpb3JpdHk6ICAgICBk ZWZhdWx0IHNjaGVkdWxlciBwcmlvcml0eQ0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAgICAg IChpbnZhcmlhbnQgYWZ0ZXIgaW5pdGlhbGl6ZWQpDQo+ID4gLSAqIEBkZWJ1Z2ZzX2VudHJ5OiAg ICAgICAgZGVidWdmcyBub2RlDQo+ID4gLSAqIEBhbGxvYzogICAgICAgICAgICAgICAgYmluZGVy IGFsbG9jYXRvciBib29ra2VlcGluZw0KPiA+IC0gKiBAY29udGV4dDogICAgICAgICAgICAgIGJp bmRlcl9jb250ZXh0IGZvciB0aGlzIHByb2MNCj4gPiAtICogICAgICAgICAgICAgICAgICAgICAg ICAoaW52YXJpYW50IGFmdGVyIGluaXRpYWxpemVkKQ0KPiA+IC0gKiBAaW5uZXJfbG9jazogICAg ICAgICAgIGNhbiBuZXN0IHVuZGVyIG91dGVyX2xvY2sgYW5kL29yIG5vZGUgbG9jaw0KPiA+IC0g KiBAb3V0ZXJfbG9jazogICAgICAgICAgIG5vIG5lc3RpbmcgdW5kZXIgaW5ub3Igb3Igbm9kZSBs b2NrDQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgTG9jayBvcmRlcjogMSkgb3V0ZXIs IDIpIG5vZGUsIDMpIGlubmVyDQo+ID4gLSAqIEBiaW5kZXJmc19lbnRyeTogICAgICAgcHJvY2Vz cy1zcGVjaWZpYyBiaW5kZXJmcyBsb2cgZmlsZQ0KPiA+IC0gKg0KPiA+IC0gKiBCb29ra2VlcGlu ZyBzdHJ1Y3R1cmUgZm9yIGJpbmRlciBwcm9jZXNzZXMNCj4gPiAtICovDQo+ID4gLXN0cnVjdCBi aW5kZXJfcHJvYyB7DQo+ID4gLSAgICAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSBwcm9jX25vZGU7DQo+ ID4gLSAgICAgICBzdHJ1Y3QgcmJfcm9vdCB0aHJlYWRzOw0KPiA+IC0gICAgICAgc3RydWN0IHJi X3Jvb3Qgbm9kZXM7DQo+ID4gLSAgICAgICBzdHJ1Y3QgcmJfcm9vdCByZWZzX2J5X2Rlc2M7DQo+ ID4gLSAgICAgICBzdHJ1Y3QgcmJfcm9vdCByZWZzX2J5X25vZGU7DQo+ID4gLSAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIHdhaXRpbmdfdGhyZWFkczsNCj4gPiAtICAgICAgIGludCBwaWQ7DQo+ID4g LSAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazsNCj4gPiAtICAgICAgIHN0cnVjdCBobGlz dF9ub2RlIGRlZmVycmVkX3dvcmtfbm9kZTsNCj4gPiAtICAgICAgIGludCBkZWZlcnJlZF93b3Jr Ow0KPiA+IC0gICAgICAgYm9vbCBpc19kZWFkOw0KPiA+IC0NCj4gPiAtICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgdG9kbzsNCj4gPiAtICAgICAgIHN0cnVjdCBiaW5kZXJfc3RhdHMgc3RhdHM7DQo+ ID4gLSAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRlbGl2ZXJlZF9kZWF0aDsNCj4gPiAtICAgICAg IGludCBtYXhfdGhyZWFkczsNCj4gPiAtICAgICAgIGludCByZXF1ZXN0ZWRfdGhyZWFkczsNCj4g PiAtICAgICAgIGludCByZXF1ZXN0ZWRfdGhyZWFkc19zdGFydGVkOw0KPiA+IC0gICAgICAgaW50 IHRtcF9yZWY7DQo+ID4gLSAgICAgICBsb25nIGRlZmF1bHRfcHJpb3JpdHk7DQo+ID4gLSAgICAg ICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2VudHJ5Ow0KPiA+IC0gICAgICAgc3RydWN0IGJpbmRl cl9hbGxvYyBhbGxvYzsNCj4gPiAtICAgICAgIHN0cnVjdCBiaW5kZXJfY29udGV4dCAqY29udGV4 dDsNCj4gPiAtICAgICAgIHNwaW5sb2NrX3QgaW5uZXJfbG9jazsNCj4gPiAtICAgICAgIHNwaW5s b2NrX3Qgb3V0ZXJfbG9jazsNCj4gPiAtICAgICAgIHN0cnVjdCBkZW50cnkgKmJpbmRlcmZzX2Vu dHJ5Ow0KPiA+IC19Ow0KPiA+IC0NCj4gPiAgZW51bSB7DQo+ID4gICAgICAgICBCSU5ERVJfTE9P UEVSX1NUQVRFX1JFR0lTVEVSRUQgID0gMHgwMSwNCj4gPiAgICAgICAgIEJJTkRFUl9MT09QRVJf U1RBVEVfRU5URVJFRCAgICAgPSAweDAyLA0KPiA+IEBAIC00OTUsNjAgKzM2OCw2IEBAIGVudW0g ew0KPiA+ICB9Ow0KPiA+DQo+ID4gIC8qKg0KPiA+IC0gKiBzdHJ1Y3QgYmluZGVyX3RocmVhZCAt IGJpbmRlciB0aHJlYWQgYm9va2tlZXBpbmcNCj4gPiAtICogQHByb2M6ICAgICAgICAgICAgICAg ICBiaW5kZXIgcHJvY2VzcyBmb3IgdGhpcyB0aHJlYWQNCj4gPiAtICogICAgICAgICAgICAgICAg ICAgICAgICAoaW52YXJpYW50IGFmdGVyIGluaXRpYWxpemF0aW9uKQ0KPiA+IC0gKiBAcmJfbm9k ZTogICAgICAgICAgICAgIGVsZW1lbnQgZm9yIHByb2MtPnRocmVhZHMgcmJ0cmVlDQo+ID4gLSAq ICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jaykN Cj4gPiAtICogQHdhaXRpbmdfdGhyZWFkX25vZGU6ICBlbGVtZW50IGZvciBAcHJvYy0+d2FpdGlu Z190aHJlYWRzIGxpc3QNCj4gPiAtICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVk IGJ5IEBwcm9jLT5pbm5lcl9sb2NrKQ0KPiA+IC0gKiBAcGlkOiAgICAgICAgICAgICAgICAgIFBJ RCBmb3IgdGhpcyB0aHJlYWQNCj4gPiAtICogICAgICAgICAgICAgICAgICAgICAgICAoaW52YXJp YW50IGFmdGVyIGluaXRpYWxpemF0aW9uKQ0KPiA+IC0gKiBAbG9vcGVyOiAgICAgICAgICAgICAg IGJpdG1hcCBvZiBsb29waW5nIHN0YXRlDQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAg KG9ubHkgYWNjZXNzZWQgYnkgdGhpcyB0aHJlYWQpDQo+ID4gLSAqIEBsb29wZXJfbmVlZHNfcmV0 dXJuOiAgbG9vcGluZyB0aHJlYWQgbmVlZHMgdG8gZXhpdCBkcml2ZXINCj4gPiAtICogICAgICAg ICAgICAgICAgICAgICAgICAobm8gbG9jayBuZWVkZWQpDQo+ID4gLSAqIEB0cmFuc2FjdGlvbl9z dGFjazogICAgc3RhY2sgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGZvciB0aGlzIHRocmVh ZA0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlu bmVyX2xvY2spDQo+ID4gLSAqIEB0b2RvOiAgICAgICAgICAgICAgICAgbGlzdCBvZiB3b3JrIHRv IGRvIGZvciB0aGlzIHRocmVhZA0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90 ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2spDQo+ID4gLSAqIEBwcm9jZXNzX3RvZG86ICAgICAg ICAgd2hldGhlciB3b3JrIGluIEB0b2RvIHNob3VsZCBiZSBwcm9jZXNzZWQNCj4gPiAtICogICAg ICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBwcm9jLT5pbm5lcl9sb2NrKQ0KPiA+ IC0gKiBAcmV0dXJuX2Vycm9yOiAgICAgICAgIHRyYW5zYWN0aW9uIGVycm9ycyByZXBvcnRlZCBi eSB0aGlzIHRocmVhZA0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGFjY2Vz c2VkIGJ5IHRoaXMgdGhyZWFkKQ0KPiA+IC0gKiBAcmVwbHlfZXJyb3I6ICAgICAgICAgIHRyYW5z YWN0aW9uIGVycm9ycyByZXBvcnRlZCBieSB0YXJnZXQgdGhyZWFkDQo+ID4gLSAqICAgICAgICAg ICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jaykNCj4gPiAtICog QHdhaXQ6ICAgICAgICAgICAgICAgICB3YWl0IHF1ZXVlIGZvciB0aHJlYWQgd29yaw0KPiA+IC0g KiBAc3RhdHM6ICAgICAgICAgICAgICAgIHBlci10aHJlYWQgc3RhdGlzdGljcw0KPiA+IC0gKiAg ICAgICAgICAgICAgICAgICAgICAgIChhdG9taWNzLCBubyBsb2NrIG5lZWRlZCkNCj4gPiAtICog QHRtcF9yZWY6ICAgICAgICAgICAgICB0ZW1wb3JhcnkgcmVmZXJlbmNlIHRvIGluZGljYXRlIHRo cmVhZCBpcyBpbiB1c2UNCj4gPiAtICogICAgICAgICAgICAgICAgICAgICAgICAoYXRvbWljIHNp bmNlIEBwcm9jLT5pbm5lcl9sb2NrIGNhbm5vdA0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAg ICAgIGFsd2F5cyBiZSBhY3F1aXJlZCkNCj4gPiAtICogQGlzX2RlYWQ6ICAgICAgICAgICAgICB0 aHJlYWQgaXMgZGVhZCBhbmQgYXdhaXRpbmcgZnJlZQ0KPiA+IC0gKiAgICAgICAgICAgICAgICAg ICAgICAgIHdoZW4gb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBjbGVhbmVkIHVwDQo+ID4g LSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9j aykNCj4gPiAtICoNCj4gPiAtICogQm9va2tlZXBpbmcgc3RydWN0dXJlIGZvciBiaW5kZXIgdGhy ZWFkcy4NCj4gPiAtICovDQo+ID4gLXN0cnVjdCBiaW5kZXJfdGhyZWFkIHsNCj4gPiAtICAgICAg IHN0cnVjdCBiaW5kZXJfcHJvYyAqcHJvYzsNCj4gPiAtICAgICAgIHN0cnVjdCByYl9ub2RlIHJi X25vZGU7DQo+ID4gLSAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRpbmdfdGhyZWFkX25vZGU7 DQo+ID4gLSAgICAgICBpbnQgcGlkOw0KPiA+IC0gICAgICAgaW50IGxvb3BlcjsgICAgICAgICAg ICAgIC8qIG9ubHkgbW9kaWZpZWQgYnkgdGhpcyB0aHJlYWQgKi8NCj4gPiAtICAgICAgIGJvb2wg bG9vcGVyX25lZWRfcmV0dXJuOyAvKiBjYW4gYmUgd3JpdHRlbiBieSBvdGhlciB0aHJlYWQgKi8N Cj4gPiAtICAgICAgIHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnRyYW5zYWN0aW9uX3N0YWNr Ow0KPiA+IC0gICAgICAgc3RydWN0IGxpc3RfaGVhZCB0b2RvOw0KPiA+IC0gICAgICAgYm9vbCBw cm9jZXNzX3RvZG87DQo+ID4gLSAgICAgICBzdHJ1Y3QgYmluZGVyX2Vycm9yIHJldHVybl9lcnJv cjsNCj4gPiAtICAgICAgIHN0cnVjdCBiaW5kZXJfZXJyb3IgcmVwbHlfZXJyb3I7DQo+ID4gLSAg ICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0Ow0KPiA+IC0gICAgICAgc3RydWN0IGJpbmRlcl9z dGF0cyBzdGF0czsNCj4gPiAtICAgICAgIGF0b21pY190IHRtcF9yZWY7DQo+ID4gLSAgICAgICBi b29sIGlzX2RlYWQ7DQo+ID4gLX07DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAgICogc3RydWN0IGJp bmRlcl90eG5fZmRfZml4dXAgLSB0cmFuc2FjdGlvbiBmZCBmaXh1cCBsaXN0IGVsZW1lbnQNCj4g PiAgICogQGZpeHVwX2VudHJ5OiAgICAgICAgICBsaXN0IGVudHJ5DQo+ID4gICAqIEBmaWxlOiAg ICAgICAgICAgICAgICAgc3RydWN0IGZpbGUgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIG5ldyBmZA0K PiA+IEBAIC01NjUsMzQgKzM4NCw2IEBAIHN0cnVjdCBiaW5kZXJfdHhuX2ZkX2ZpeHVwIHsNCj4g PiAgICAgICAgIHNpemVfdCBvZmZzZXQ7DQo+ID4gIH07DQo+ID4NCj4gPg0KPiANCj4gZXh0cmEg ZW1wdHkgbGluZT8NCj4gDQo+ID4gLXN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gew0KPiA+IC0g ICAgICAgaW50IGRlYnVnX2lkOw0KPiA+IC0gICAgICAgc3RydWN0IGJpbmRlcl93b3JrIHdvcms7 DQo+ID4gLSAgICAgICBzdHJ1Y3QgYmluZGVyX3RocmVhZCAqZnJvbTsNCj4gPiAtICAgICAgIHN0 cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKmZyb21fcGFyZW50Ow0KPiA+IC0gICAgICAgc3RydWN0 IGJpbmRlcl9wcm9jICp0b19wcm9jOw0KPiA+IC0gICAgICAgc3RydWN0IGJpbmRlcl90aHJlYWQg KnRvX3RocmVhZDsNCj4gPiAtICAgICAgIHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnRvX3Bh cmVudDsNCj4gPiAtICAgICAgIHVuc2lnbmVkIG5lZWRfcmVwbHk6MTsNCj4gPiAtICAgICAgIC8q IHVuc2lnbmVkIGlzX2RlYWQ6MTsgKi8gICAgICAgLyogbm90IHVzZWQgYXQgdGhlIG1vbWVudCAq Lw0KPiA+IC0NCj4gPiAtICAgICAgIHN0cnVjdCBiaW5kZXJfYnVmZmVyICpidWZmZXI7DQo+ID4g LSAgICAgICB1bnNpZ25lZCBpbnQgICAgY29kZTsNCj4gPiAtICAgICAgIHVuc2lnbmVkIGludCAg ICBmbGFnczsNCj4gPiAtICAgICAgIGxvbmcgICAgcHJpb3JpdHk7DQo+ID4gLSAgICAgICBsb25n ICAgIHNhdmVkX3ByaW9yaXR5Ow0KPiA+IC0gICAgICAga3VpZF90ICBzZW5kZXJfZXVpZDsNCj4g PiAtICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZmRfZml4dXBzOw0KPiA+IC0gICAgICAgYmluZGVy X3VpbnRwdHJfdCBzZWN1cml0eV9jdHg7DQo+ID4gLSAgICAgICAvKioNCj4gPiAtICAgICAgICAq IEBsb2NrOiAgcHJvdGVjdHMgQGZyb20sIEB0b19wcm9jLCBhbmQgQHRvX3RocmVhZA0KPiA+IC0g ICAgICAgICoNCj4gPiAtICAgICAgICAqIEBmcm9tLCBAdG9fcHJvYywgYW5kIEB0b190aHJlYWQg Y2FuIGJlIHNldCB0byBOVUxMDQo+ID4gLSAgICAgICAgKiBkdXJpbmcgdGhyZWFkIHRlYXJkb3du DQo+ID4gLSAgICAgICAgKi8NCj4gPiAtICAgICAgIHNwaW5sb2NrX3QgbG9jazsNCj4gPiAtfTsN Cj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgKiBzdHJ1Y3QgYmluZGVyX29iamVjdCAtIHVuaW9uIG9m IGZsYXQgYmluZGVyIG9iamVjdCB0eXBlcw0KPiA+ICAgKiBAaGRyOiAgIGdlbmVyaWMgb2JqZWN0 IGhlYWRlcg0KPiA+IEBAIC02MTMsNiArNDA0LDI2IEBAIHN0cnVjdCBiaW5kZXJfb2JqZWN0IHsN Cj4gPiAgICAgICAgIH07DQo+ID4gIH07DQo+ID4NCj4gPiArc3RhdGljIHZvaWQgKCpfX2JpbmRl cl91cGRhdGVfaW5mb19jYikoc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJpbmRlcl90cmFuc2Fj dGlvbl9sb2dfZW50cnkgKmUpOw0KPiA+ICsNCj4gPiArdm9pZCBzZXRfYmluZGVyX3VwZGF0ZV9p bmZvX2NiKHZvaWQgKCpmbikoc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJpbmRlcl90cmFuc2Fj dGlvbl9sb2dfZW50cnkgKmUpKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBfX2JpbmRlcl91cGRhdGVf aW5mb19jYiA9IGZuOw0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHNldF9iaW5kZXJf dXBkYXRlX2luZm9fY2IpOw0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgKCpfX3ByaW50X3RyYW5z YWN0aW9uX2V4dF9jYikoc3RydWN0IHNlcV9maWxlICptLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0KTsNCj4g PiArDQo+ID4gK3ZvaWQgc2V0X3ByaW50X3RyYW5zYWN0aW9uX2V4dF9jYih2b2lkICgqZm4pKHN0 cnVjdCBzZXFfZmlsZSAqbSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdCkpDQo+ID4gK3sNCj4gPiArICAgICAg IF9fcHJpbnRfdHJhbnNhY3Rpb25fZXh0X2NiID0gZm47DQo+ID4gK30NCj4gPiArRVhQT1JUX1NZ TUJPTF9HUEwoc2V0X3ByaW50X3RyYW5zYWN0aW9uX2V4dF9jYik7DQo+IA0KPiBXaHkgY2FuJ3Qg d2UgdXNlIHRyYWNlcG9pbnRzIChub3QgdHJhY2UgZXZlbnRzKSBmb3IgdGhpcyBpbnN0ZWFkIG9m DQo+IGN1c3RvbSByZWdpc3RyYXRpb24gZnVuY3Rpb25zPyBZb3UgY2FuIGF0dGFjaCB0byB0aGUg dHJhY2Vwb2ludCB3aXRoDQo+IHJlZ2lzdGVyX3RyYWNlXyogbGV0cyBhIG1vZHVsZSByZWdpc3Rl ciB0byBiZSBjYWxsZWQgdG8gaGFuZGxlIHRoZQ0KPiB0cmFjZXBvaW50IGFzIEpvZWwgcG9pbnRl ZCBvdXQuDQoNClllcywgd2Ugd2lsbCB1c2UgdHJhY2Vwb2ludHMgaW5zdGVhZCBvZiBjdXN0b20g cmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBpbg0KbmV4dCB2ZXJzaW9uIHBhdGNoLCB0aGFua3MuDQoN Cj4gPiArDQo+ID4gIC8qKg0KPiA+ICAgKiBiaW5kZXJfcHJvY19sb2NrKCkgLSBBY3F1aXJlIG91 dGVyIGxvY2sgZm9yIGdpdmVuIGJpbmRlcl9wcm9jDQo+ID4gICAqIEBwcm9jOiAgICAgICAgIHN0 cnVjdCBiaW5kZXJfcHJvYyB0byBhY3F1aXJlDQo+ID4gQEAgLTE5MjcsNiArMTczOCw3IEBAIHN0 YXRpYyB2b2lkIGJpbmRlcl9mcmVlX3RyYW5zYWN0aW9uKHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rp b24gKnQpDQo+ID4gICAgICAgICAgKiBJZiB0aGUgdHJhbnNhY3Rpb24gaGFzIG5vIHRhcmdldF9w cm9jLCB0aGVuDQo+ID4gICAgICAgICAgKiB0LT5idWZmZXItPnRyYW5zYWN0aW9uIGhhcyBhbHJl YWR5IGJlZW4gY2xlYXJlZC4NCj4gPiAgICAgICAgICAqLw0KPiA+ICsgICAgICAgdHJhY2VfYmlu ZGVyX2ZyZWVfdHJhbnNhY3Rpb24odCk7DQo+ID4gICAgICAgICBiaW5kZXJfZnJlZV90eG5fZml4 dXBzKHQpOw0KPiA+ICAgICAgICAga2ZyZWUodCk7DQo+ID4gICAgICAgICBiaW5kZXJfc3RhdHNf ZGVsZXRlZChCSU5ERVJfU1RBVF9UUkFOU0FDVElPTik7DQo+ID4gQEAgLTI4NzQsNiArMjY4Niw3 IEBAIHN0YXRpYyB2b2lkIGJpbmRlcl90cmFuc2FjdGlvbihzdHJ1Y3QgYmluZGVyX3Byb2MgKnBy b2MsDQo+ID4gICAgICAgICBlLT5vZmZzZXRzX3NpemUgPSB0ci0+b2Zmc2V0c19zaXplOw0KPiA+ ICAgICAgICAgc3Ryc2NweShlLT5jb250ZXh0X25hbWUsIHByb2MtPmNvbnRleHQtPm5hbWUsIEJJ TkRFUkZTX01BWF9OQU1FKTsNCj4gPg0KPiA+ICsNCj4gDQo+IHdoeSAyIGVtcHR5IGxpbmVzPw0K PiANCj4gPiAgICAgICAgIGlmIChyZXBseSkgew0KPiA+ICAgICAgICAgICAgICAgICBiaW5kZXJf aW5uZXJfcHJvY19sb2NrKHByb2MpOw0KPiA+ICAgICAgICAgICAgICAgICBpbl9yZXBseV90byA9 IHRocmVhZC0+dHJhbnNhY3Rpb25fc3RhY2s7DQo+ID4gQEAgLTMwNjAsNiArMjg3Myw5IEBAIHN0 YXRpYyB2b2lkIGJpbmRlcl90cmFuc2FjdGlvbihzdHJ1Y3QgYmluZGVyX3Byb2MgKnByb2MsDQo+ ID4gICAgICAgICAgICAgICAgIHJldHVybl9lcnJvcl9saW5lID0gX19MSU5FX187DQo+ID4gICAg ICAgICAgICAgICAgIGdvdG8gZXJyX2FsbG9jX3RfZmFpbGVkOw0KPiA+ICAgICAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICAgIGlmIChfX2JpbmRlcl91cGRhdGVfaW5mb19jYikNCj4gPiArICAgICAg ICAgICAgICAgX19iaW5kZXJfdXBkYXRlX2luZm9fY2IodCwgZSk7DQo+IA0KPiBUaGlzIHNob3Vs ZCBiZSBhIHRyYWNlcG9pbnQgdGhhdCB5b3VyIG1vZHVsZSBjYW4gYXR0YWNoIHRvIHdpdGgNCj4g cmVnaXN0ZXJfdHJhY2VfYmluZGVyX3VwZGF0ZV9pbmZvKC4uLikNCj4gDQo+ID4gICAgICAgICBJ TklUX0xJU1RfSEVBRCgmdC0+ZmRfZml4dXBzKTsNCj4gPiAgICAgICAgIGJpbmRlcl9zdGF0c19j cmVhdGVkKEJJTkRFUl9TVEFUX1RSQU5TQUNUSU9OKTsNCj4gPiAgICAgICAgIHNwaW5fbG9ja19p bml0KCZ0LT5sb2NrKTsNCj4gPiBAQCAtMzQ5OCw2ICszMzE0LDcgQEAgc3RhdGljIHZvaWQgYmlu ZGVyX3RyYW5zYWN0aW9uKHN0cnVjdCBiaW5kZXJfcHJvYyAqcHJvYywNCj4gPiAgICAgICAgIGtm cmVlKHRjb21wbGV0ZSk7DQo+ID4gICAgICAgICBiaW5kZXJfc3RhdHNfZGVsZXRlZChCSU5ERVJf U1RBVF9UUkFOU0FDVElPTl9DT01QTEVURSk7DQo+ID4gIGVycl9hbGxvY190Y29tcGxldGVfZmFp bGVkOg0KPiA+ICsgICAgICAgdHJhY2VfYmluZGVyX2ZyZWVfdHJhbnNhY3Rpb24odCk7DQo+ID4g ICAgICAgICBrZnJlZSh0KTsNCj4gPiAgICAgICAgIGJpbmRlcl9zdGF0c19kZWxldGVkKEJJTkRF Ul9TVEFUX1RSQU5TQUNUSU9OKTsNCj4gPiAgZXJyX2FsbG9jX3RfZmFpbGVkOg0KPiA+IEBAIC01 NTQ3LDYgKzUzNjQsOCBAQCBzdGF0aWMgdm9pZCBwcmludF9iaW5kZXJfdHJhbnNhY3Rpb25faWxv Y2tlZChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sDQo+ID4gICAgICAgICAgICAgICAgICAgIHQtPnRvX3Ro cmVhZCA/IHQtPnRvX3RocmVhZC0+cGlkIDogMCwNCj4gPiAgICAgICAgICAgICAgICAgICAgdC0+ Y29kZSwgdC0+ZmxhZ3MsIHQtPnByaW9yaXR5LCB0LT5uZWVkX3JlcGx5KTsNCj4gPiAgICAgICAg IHNwaW5fdW5sb2NrKCZ0LT5sb2NrKTsNCj4gPiArICAgICAgIGlmIChfX3ByaW50X3RyYW5zYWN0 aW9uX2V4dF9jYikNCj4gPiArICAgICAgICAgICAgICAgX19wcmludF90cmFuc2FjdGlvbl9leHRf Y2IobSwgdCk7DQo+IA0KPiBzYW1lIGhlcmUuDQo+IA0KPiA+DQo+ID4gICAgICAgICBpZiAocHJv YyAhPSB0b19wcm9jKSB7DQo+ID4gICAgICAgICAgICAgICAgIC8qDQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvYW5kcm9pZC9iaW5kZXJfaW50ZXJuYWwuaCBiL2RyaXZlcnMvYW5kcm9pZC9iaW5k ZXJfaW50ZXJuYWwuaA0KPiA+IGluZGV4IGFlOTkxMDkuLjg2YjQ5NjAgMTAwNjQ0DQo+ID4gLS0t IGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9pbnRlcm5hbC5oDQo+ID4gKysrIGIvZHJpdmVycy9h bmRyb2lkL2JpbmRlcl9pbnRlcm5hbC5oDQo+ID4gQEAgLTEyLDYgKzEyLDExIEBADQo+ID4gICNp bmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvdWlkZ2lkLmg+DQo+ ID4NCj4gPiArI2lmZGVmIENPTkZJR19CSU5ERVJfVVNFUl9UUkFDS0lORw0KPiA+ICsjaW5jbHVk ZSA8bGludXgvcnRjLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+DQo+ID4gKyNlbmRp Zg0KPiA+ICsNCj4gPiAgc3RydWN0IGJpbmRlcl9jb250ZXh0IHsNCj4gPiAgICAgICAgIHN0cnVj dCBiaW5kZXJfbm9kZSAqYmluZGVyX2NvbnRleHRfbWdyX25vZGU7DQo+ID4gICAgICAgICBzdHJ1 Y3QgbXV0ZXggY29udGV4dF9tZ3Jfbm9kZV9sb2NrOw0KPiA+IEBAIC0xMzEsNiArMTM2LDEwIEBA IHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb25fbG9nX2VudHJ5IHsNCj4gPiAgICAgICAgIHVpbnQz Ml90IHJldHVybl9lcnJvcjsNCj4gPiAgICAgICAgIHVpbnQzMl90IHJldHVybl9lcnJvcl9wYXJh bTsNCj4gPiAgICAgICAgIGNoYXIgY29udGV4dF9uYW1lW0JJTkRFUkZTX01BWF9OQU1FICsgMV07 DQo+ID4gKyNpZmRlZiBDT05GSUdfQklOREVSX1VTRVJfVFJBQ0tJTkcNCj4gPiArICAgICAgIHN0 cnVjdCB0aW1lc3BlYyB0aW1lc3RhbXA7DQo+ID4gKyAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsN Cj4gPiArI2VuZGlmDQo+ID4gIH07DQo+ID4NCj4gPiAgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlv bl9sb2cgew0KPiA+IEBAIC0xMzksNiArMTQ4LDIyNCBAQCBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0 aW9uX2xvZyB7DQo+ID4gICAgICAgICBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uX2xvZ19lbnRy eSBlbnRyeVszMl07DQo+ID4gIH07DQo+ID4NCj4gPiArZW51bSBiaW5kZXJfc3RhdF90eXBlcyB7 DQo+ID4gKyAgICAgICBCSU5ERVJfU1RBVF9QUk9DLA0KPiA+ICsgICAgICAgQklOREVSX1NUQVRf VEhSRUFELA0KPiA+ICsgICAgICAgQklOREVSX1NUQVRfTk9ERSwNCj4gPiArICAgICAgIEJJTkRF Ul9TVEFUX1JFRiwNCj4gPiArICAgICAgIEJJTkRFUl9TVEFUX0RFQVRILA0KPiA+ICsgICAgICAg QklOREVSX1NUQVRfVFJBTlNBQ1RJT04sDQo+ID4gKyAgICAgICBCSU5ERVJfU1RBVF9UUkFOU0FD VElPTl9DT01QTEVURSwNCj4gPiArICAgICAgIEJJTkRFUl9TVEFUX0NPVU5UDQo+ID4gK307DQo+ ID4gKw0KPiA+ICtzdHJ1Y3QgYmluZGVyX3N0YXRzIHsNCj4gPiArICAgICAgIGF0b21pY190IGJy W19JT0NfTlIoQlJfRkFJTEVEX1JFUExZKSArIDFdOw0KPiA+ICsgICAgICAgYXRvbWljX3QgYmNb X0lPQ19OUihCQ19SRVBMWV9TRykgKyAxXTsNCj4gPiArICAgICAgIGF0b21pY190IG9ial9jcmVh dGVkW0JJTkRFUl9TVEFUX0NPVU5UXTsNCj4gPiArICAgICAgIGF0b21pY190IG9ial9kZWxldGVk W0JJTkRFUl9TVEFUX0NPVU5UXTsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBz dHJ1Y3QgYmluZGVyX3dvcmsgLSB3b3JrIGVucXVldWVkIG9uIGEgd29ya2xpc3QNCj4gPiArICog QGVudHJ5OiAgICAgICAgICAgICBub2RlIGVucXVldWVkIG9uIGxpc3QNCj4gPiArICogQHR5cGU6 ICAgICAgICAgICAgICB0eXBlIG9mIHdvcmsgdG8gYmUgcGVyZm9ybWVkDQo+ID4gKyAqDQo+ID4g KyAqIFRoZXJlIGFyZSBzZXBhcmF0ZSB3b3JrIGxpc3RzIGZvciBwcm9jLCB0aHJlYWQsIGFuZCBu b2RlIChhc3luYykuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgYmluZGVyX3dvcmsgew0KPiA+ICsg ICAgICAgc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsNCj4gPiArDQo+ID4gKyAgICAgICBlbnVtIHsN Cj4gPiArICAgICAgICAgICAgICAgQklOREVSX1dPUktfVFJBTlNBQ1RJT04gPSAxLA0KPiA+ICsg ICAgICAgICAgICAgICBCSU5ERVJfV09SS19UUkFOU0FDVElPTl9DT01QTEVURSwNCj4gPiArICAg ICAgICAgICAgICAgQklOREVSX1dPUktfUkVUVVJOX0VSUk9SLA0KPiA+ICsgICAgICAgICAgICAg ICBCSU5ERVJfV09SS19OT0RFLA0KPiA+ICsgICAgICAgICAgICAgICBCSU5ERVJfV09SS19ERUFE X0JJTkRFUiwNCj4gPiArICAgICAgICAgICAgICAgQklOREVSX1dPUktfREVBRF9CSU5ERVJfQU5E X0NMRUFSLA0KPiA+ICsgICAgICAgICAgICAgICBCSU5ERVJfV09SS19DTEVBUl9ERUFUSF9OT1RJ RklDQVRJT04sDQo+ID4gKyAgICAgICB9IHR5cGU7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1 Y3QgYmluZGVyX2Vycm9yIHsNCj4gPiArICAgICAgIHN0cnVjdCBiaW5kZXJfd29yayB3b3JrOw0K PiA+ICsgICAgICAgdWludDMyX3QgY21kOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIHN0cnVjdCBiaW5kZXJfcHJvYyAtIGJpbmRlciBwcm9jZXNzIGJvb2trZWVwaW5nDQo+ID4g KyAqIEBwcm9jX25vZGU6ICAgICAgICAgICAgZWxlbWVudCBmb3IgYmluZGVyX3Byb2NzIGxpc3QN Cj4gPiArICogQHRocmVhZHM6ICAgICAgICAgICAgICByYnRyZWUgb2YgYmluZGVyX3RocmVhZHMg aW4gdGhpcyBwcm9jDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBi eSBAaW5uZXJfbG9jaykNCj4gPiArICogQG5vZGVzOiAgICAgICAgICAgICAgICByYnRyZWUgb2Yg YmluZGVyIG5vZGVzIGFzc29jaWF0ZWQgd2l0aA0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgIHRoaXMgcHJvYyBvcmRlcmVkIGJ5IG5vZGUtPnB0cg0KPiA+ICsgKiAgICAgICAgICAgICAg ICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQGlubmVyX2xvY2spDQo+ID4gKyAqIEByZWZzX2J5X2Rl c2M6ICAgICAgICAgcmJ0cmVlIG9mIHJlZnMgb3JkZXJlZCBieSByZWYtPmRlc2MNCj4gPiArICog ICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBvdXRlcl9sb2NrKQ0KPiA+ICsg KiBAcmVmc19ieV9ub2RlOiAgICAgICAgIHJidHJlZSBvZiByZWZzIG9yZGVyZWQgYnkgcmVmLT5u b2RlDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAb3V0ZXJf bG9jaykNCj4gPiArICogQHdhaXRpbmdfdGhyZWFkczogICAgICB0aHJlYWRzIGN1cnJlbnRseSB3 YWl0aW5nIGZvciBwcm9jIHdvcmsNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAocHJv dGVjdGVkIGJ5IEBpbm5lcl9sb2NrKQ0KPiA+ICsgKiBAcGlkICAgICAgICAgICAgICAgICAgIFBJ RCBvZiBncm91cF9sZWFkZXIgb2YgcHJvY2Vzcw0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgIChpbnZhcmlhbnQgYWZ0ZXIgaW5pdGlhbGl6ZWQpDQo+ID4gKyAqIEB0c2sgICAgICAgICAg ICAgICAgICAgdGFza19zdHJ1Y3QgZm9yIGdyb3VwX2xlYWRlciBvZiBwcm9jZXNzDQo+ID4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgKGludmFyaWFudCBhZnRlciBpbml0aWFsaXplZCkNCj4g PiArICogQGRlZmVycmVkX3dvcmtfbm9kZTogICBlbGVtZW50IGZvciBiaW5kZXJfZGVmZXJyZWRf bGlzdA0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgYmluZGVy X2RlZmVycmVkX2xvY2spDQo+ID4gKyAqIEBkZWZlcnJlZF93b3JrOiAgICAgICAgYml0bWFwIG9m IGRlZmVycmVkIHdvcmsgdG8gcGVyZm9ybQ0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg IChwcm90ZWN0ZWQgYnkgYmluZGVyX2RlZmVycmVkX2xvY2spDQo+ID4gKyAqIEBpc19kZWFkOiAg ICAgICAgICAgICAgcHJvY2VzcyBpcyBkZWFkIGFuZCBhd2FpdGluZyBmcmVlDQo+ID4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgd2hlbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbnMgYXJlIGNs ZWFuZWQgdXANCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBp bm5lcl9sb2NrKQ0KPiA+ICsgKiBAdG9kbzogICAgICAgICAgICAgICAgIGxpc3Qgb2Ygd29yayBm b3IgdGhpcyBwcm9jZXNzDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3Rl ZCBieSBAaW5uZXJfbG9jaykNCj4gPiArICogQHN0YXRzOiAgICAgICAgICAgICAgICBwZXItcHJv Y2VzcyBiaW5kZXIgc3RhdGlzdGljcw0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIChh dG9taWNzLCBubyBsb2NrIG5lZWRlZCkNCj4gPiArICogQGRlbGl2ZXJlZF9kZWF0aDogICAgICBs aXN0IG9mIGRlbGl2ZXJlZCBkZWF0aCBub3RpZmljYXRpb24NCj4gPiArICogICAgICAgICAgICAg ICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBpbm5lcl9sb2NrKQ0KPiA+ICsgKiBAbWF4X3RocmVh ZHM6ICAgICAgICAgIGNhcCBvbiBudW1iZXIgb2YgYmluZGVyIHRocmVhZHMNCj4gPiArICogICAg ICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBpbm5lcl9sb2NrKQ0KPiA+ICsgKiBA cmVxdWVzdGVkX3RocmVhZHM6ICAgIG51bWJlciBvZiBiaW5kZXIgdGhyZWFkcyByZXF1ZXN0ZWQg YnV0IG5vdA0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIHlldCBzdGFydGVkLiBJbiBj dXJyZW50IGltcGxlbWVudGF0aW9uLCBjYW4NCj4gPiArICogICAgICAgICAgICAgICAgICAgICAg ICBvbmx5IGJlIDAgb3IgMS4NCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVj dGVkIGJ5IEBpbm5lcl9sb2NrKQ0KPiA+ICsgKiBAcmVxdWVzdGVkX3RocmVhZHNfc3RhcnRlZDog bnVtYmVyIGJpbmRlciB0aHJlYWRzIHN0YXJ0ZWQNCj4gPiArICogICAgICAgICAgICAgICAgICAg ICAgICAocHJvdGVjdGVkIGJ5IEBpbm5lcl9sb2NrKQ0KPiA+ICsgKiBAdG1wX3JlZjogICAgICAg ICAgICAgIHRlbXBvcmFyeSByZWZlcmVuY2UgdG8gaW5kaWNhdGUgcHJvYyBpcyBpbiB1c2UNCj4g PiArICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBpbm5lcl9sb2NrKQ0K PiA+ICsgKiBAZGVmYXVsdF9wcmlvcml0eTogICAgIGRlZmF1bHQgc2NoZWR1bGVyIHByaW9yaXR5 DQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgKGludmFyaWFudCBhZnRlciBpbml0aWFs aXplZCkNCj4gPiArICogQGRlYnVnZnNfZW50cnk6ICAgICAgICBkZWJ1Z2ZzIG5vZGUNCj4gPiAr ICogQGFsbG9jOiAgICAgICAgICAgICAgICBiaW5kZXIgYWxsb2NhdG9yIGJvb2trZWVwaW5nDQo+ ID4gKyAqIEBjb250ZXh0OiAgICAgICAgICAgICAgYmluZGVyX2NvbnRleHQgZm9yIHRoaXMgcHJv Yw0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIChpbnZhcmlhbnQgYWZ0ZXIgaW5pdGlh bGl6ZWQpDQo+ID4gKyAqIEBpbm5lcl9sb2NrOiAgICAgICAgICAgY2FuIG5lc3QgdW5kZXIgb3V0 ZXJfbG9jayBhbmQvb3Igbm9kZSBsb2NrDQo+ID4gKyAqIEBvdXRlcl9sb2NrOiAgICAgICAgICAg bm8gbmVzdGluZyB1bmRlciBpbm5vciBvciBub2RlIGxvY2sNCj4gPiArICogICAgICAgICAgICAg ICAgICAgICAgICBMb2NrIG9yZGVyOiAxKSBvdXRlciwgMikgbm9kZSwgMykgaW5uZXINCj4gPiAr ICogQGJpbmRlcmZzX2VudHJ5OiAgICAgICBwcm9jZXNzLXNwZWNpZmljIGJpbmRlcmZzIGxvZyBm aWxlDQo+ID4gKyAqDQo+ID4gKyAqIEJvb2trZWVwaW5nIHN0cnVjdHVyZSBmb3IgYmluZGVyIHBy b2Nlc3Nlcw0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGJpbmRlcl9wcm9jIHsNCj4gPiArICAgICAg IHN0cnVjdCBobGlzdF9ub2RlIHByb2Nfbm9kZTsNCj4gPiArICAgICAgIHN0cnVjdCByYl9yb290 IHRocmVhZHM7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcmJfcm9vdCBub2RlczsNCj4gPiArICAgICAg IHN0cnVjdCByYl9yb290IHJlZnNfYnlfZGVzYzsNCj4gPiArICAgICAgIHN0cnVjdCByYl9yb290 IHJlZnNfYnlfbm9kZTsNCj4gPiArICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgd2FpdGluZ190aHJl YWRzOw0KPiA+ICsgICAgICAgaW50IHBpZDsNCj4gPiArICAgICAgIHN0cnVjdCB0YXNrX3N0cnVj dCAqdHNrOw0KPiA+ICsgICAgICAgc3RydWN0IGhsaXN0X25vZGUgZGVmZXJyZWRfd29ya19ub2Rl Ow0KPiA+ICsgICAgICAgaW50IGRlZmVycmVkX3dvcms7DQo+ID4gKyAgICAgICBib29sIGlzX2Rl YWQ7DQo+ID4gKw0KPiA+ICsgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0b2RvOw0KPiA+ICsgICAg ICAgc3RydWN0IGJpbmRlcl9zdGF0cyBzdGF0czsNCj4gPiArICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgZGVsaXZlcmVkX2RlYXRoOw0KPiA+ICsgICAgICAgaW50IG1heF90aHJlYWRzOw0KPiA+ICsg ICAgICAgaW50IHJlcXVlc3RlZF90aHJlYWRzOw0KPiA+ICsgICAgICAgaW50IHJlcXVlc3RlZF90 aHJlYWRzX3N0YXJ0ZWQ7DQo+ID4gKyAgICAgICBpbnQgdG1wX3JlZjsNCj4gPiArICAgICAgIGxv bmcgZGVmYXVsdF9wcmlvcml0eTsNCj4gPiArICAgICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNf ZW50cnk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgYmluZGVyX2FsbG9jIGFsbG9jOw0KPiA+ICsgICAg ICAgc3RydWN0IGJpbmRlcl9jb250ZXh0ICpjb250ZXh0Ow0KPiA+ICsgICAgICAgc3BpbmxvY2tf dCBpbm5lcl9sb2NrOw0KPiA+ICsgICAgICAgc3BpbmxvY2tfdCBvdXRlcl9sb2NrOw0KPiA+ICsg ICAgICAgc3RydWN0IGRlbnRyeSAqYmluZGVyZnNfZW50cnk7DQo+ID4gK307DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogc3RydWN0IGJpbmRlcl90aHJlYWQgLSBiaW5kZXIgdGhyZWFkIGJvb2tr ZWVwaW5nDQo+ID4gKyAqIEBwcm9jOiAgICAgICAgICAgICAgICAgYmluZGVyIHByb2Nlc3MgZm9y IHRoaXMgdGhyZWFkDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgKGludmFyaWFudCBh ZnRlciBpbml0aWFsaXphdGlvbikNCj4gPiArICogQHJiX25vZGU6ICAgICAgICAgICAgICBlbGVt ZW50IGZvciBwcm9jLT50aHJlYWRzIHJidHJlZQ0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2spDQo+ID4gKyAqIEB3YWl0aW5nX3Ro cmVhZF9ub2RlOiAgZWxlbWVudCBmb3IgQHByb2MtPndhaXRpbmdfdGhyZWFkcyBsaXN0DQo+ID4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9j aykNCj4gPiArICogQHBpZDogICAgICAgICAgICAgICAgICBQSUQgZm9yIHRoaXMgdGhyZWFkDQo+ ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgKGludmFyaWFudCBhZnRlciBpbml0aWFsaXph dGlvbikNCj4gPiArICogQGxvb3BlcjogICAgICAgICAgICAgICBiaXRtYXAgb2YgbG9vcGluZyBz dGF0ZQ0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGFjY2Vzc2VkIGJ5IHRo aXMgdGhyZWFkKQ0KPiA+ICsgKiBAbG9vcGVyX25lZWRzX3JldHVybjogIGxvb3BpbmcgdGhyZWFk IG5lZWRzIHRvIGV4aXQgZHJpdmVyDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgKG5v IGxvY2sgbmVlZGVkKQ0KPiA+ICsgKiBAdHJhbnNhY3Rpb25fc3RhY2s6ICAgIHN0YWNrIG9mIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucyBmb3IgdGhpcyB0aHJlYWQNCj4gPiArICogICAgICAgICAg ICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBwcm9jLT5pbm5lcl9sb2NrKQ0KPiA+ICsgKiBA dG9kbzogICAgICAgICAgICAgICAgIGxpc3Qgb2Ygd29yayB0byBkbyBmb3IgdGhpcyB0aHJlYWQN Cj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBwcm9jLT5pbm5l cl9sb2NrKQ0KPiA+ICsgKiBAcHJvY2Vzc190b2RvOiAgICAgICAgIHdoZXRoZXIgd29yayBpbiBA dG9kbyBzaG91bGQgYmUgcHJvY2Vzc2VkDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAg KHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jaykNCj4gPiArICogQHJldHVybl9lcnJvcjog ICAgICAgICB0cmFuc2FjdGlvbiBlcnJvcnMgcmVwb3J0ZWQgYnkgdGhpcyB0aHJlYWQNCj4gPiAr ICogICAgICAgICAgICAgICAgICAgICAgICAob25seSBhY2Nlc3NlZCBieSB0aGlzIHRocmVhZCkN Cj4gPiArICogQHJlcGx5X2Vycm9yOiAgICAgICAgICB0cmFuc2FjdGlvbiBlcnJvcnMgcmVwb3J0 ZWQgYnkgdGFyZ2V0IHRocmVhZA0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90 ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2spDQo+ID4gKyAqIEB3YWl0OiAgICAgICAgICAgICAg ICAgd2FpdCBxdWV1ZSBmb3IgdGhyZWFkIHdvcmsNCj4gPiArICogQHN0YXRzOiAgICAgICAgICAg ICAgICBwZXItdGhyZWFkIHN0YXRpc3RpY3MNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAg ICAoYXRvbWljcywgbm8gbG9jayBuZWVkZWQpDQo+ID4gKyAqIEB0bXBfcmVmOiAgICAgICAgICAg ICAgdGVtcG9yYXJ5IHJlZmVyZW5jZSB0byBpbmRpY2F0ZSB0aHJlYWQgaXMgaW4gdXNlDQo+ID4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgKGF0b21pYyBzaW5jZSBAcHJvYy0+aW5uZXJfbG9j ayBjYW5ub3QNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICBhbHdheXMgYmUgYWNxdWly ZWQpDQo+ID4gKyAqIEBpc19kZWFkOiAgICAgICAgICAgICAgdGhyZWFkIGlzIGRlYWQgYW5kIGF3 YWl0aW5nIGZyZWUNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICB3aGVuIG91dHN0YW5k aW5nIHRyYW5zYWN0aW9ucyBhcmUgY2xlYW5lZCB1cA0KPiA+ICsgKiAgICAgICAgICAgICAgICAg ICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2spDQo+ID4gKyAqDQo+ID4gKyAq IEJvb2trZWVwaW5nIHN0cnVjdHVyZSBmb3IgYmluZGVyIHRocmVhZHMuDQo+ID4gKyAqLw0KPiA+ ICtzdHJ1Y3QgYmluZGVyX3RocmVhZCB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgYmluZGVyX3Byb2Mg KnByb2M7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcmJfbm9kZSByYl9ub2RlOw0KPiA+ICsgICAgICAg c3RydWN0IGxpc3RfaGVhZCB3YWl0aW5nX3RocmVhZF9ub2RlOw0KPiA+ICsgICAgICAgaW50IHBp ZDsNCj4gPiArICAgICAgIGludCBsb29wZXI7ICAgICAgICAgICAgICAvKiBvbmx5IG1vZGlmaWVk IGJ5IHRoaXMgdGhyZWFkICovDQo+ID4gKyAgICAgICBib29sIGxvb3Blcl9uZWVkX3JldHVybjsg LyogY2FuIGJlIHdyaXR0ZW4gYnkgb3RoZXIgdGhyZWFkICovDQo+ID4gKyAgICAgICBzdHJ1Y3Qg YmluZGVyX3RyYW5zYWN0aW9uICp0cmFuc2FjdGlvbl9zdGFjazsNCj4gPiArICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgdG9kbzsNCj4gPiArICAgICAgIGJvb2wgcHJvY2Vzc190b2RvOw0KPiA+ICsg ICAgICAgc3RydWN0IGJpbmRlcl9lcnJvciByZXR1cm5fZXJyb3I7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgYmluZGVyX2Vycm9yIHJlcGx5X2Vycm9yOw0KPiA+ICsgICAgICAgd2FpdF9xdWV1ZV9oZWFk X3Qgd2FpdDsNCj4gPiArICAgICAgIHN0cnVjdCBiaW5kZXJfc3RhdHMgc3RhdHM7DQo+ID4gKyAg ICAgICBhdG9taWNfdCB0bXBfcmVmOw0KPiA+ICsgICAgICAgYm9vbCBpc19kZWFkOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiB7DQo+ID4gKyAgICAgICBp bnQgZGVidWdfaWQ7DQo+ID4gKyAgICAgICBzdHJ1Y3QgYmluZGVyX3dvcmsgd29yazsNCj4gPiAr ICAgICAgIHN0cnVjdCBiaW5kZXJfdGhyZWFkICpmcm9tOw0KPiA+ICsgICAgICAgc3RydWN0IGJp bmRlcl90cmFuc2FjdGlvbiAqZnJvbV9wYXJlbnQ7DQo+ID4gKyAgICAgICBzdHJ1Y3QgYmluZGVy X3Byb2MgKnRvX3Byb2M7DQo+ID4gKyAgICAgICBzdHJ1Y3QgYmluZGVyX3RocmVhZCAqdG9fdGhy ZWFkOw0KPiA+ICsgICAgICAgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdG9fcGFyZW50Ow0K PiA+ICsgICAgICAgdW5zaWduZWQgbmVlZF9yZXBseToxOw0KPiA+ICsgICAgICAgLyogdW5zaWdu ZWQgaXNfZGVhZDoxOyAqLyAgICAgICAvKiBub3QgdXNlZCBhdCB0aGUgbW9tZW50ICovDQo+ID4g Kw0KPiA+ICsgICAgICAgc3RydWN0IGJpbmRlcl9idWZmZXIgKmJ1ZmZlcjsNCj4gPiArICAgICAg IHVuc2lnbmVkIGludCAgICBjb2RlOw0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50ICAgIGZsYWdz Ow0KPiA+ICsgICAgICAgbG9uZyAgICBwcmlvcml0eTsNCj4gPiArICAgICAgIGxvbmcgICAgc2F2 ZWRfcHJpb3JpdHk7DQo+ID4gKyAgICAgICBrdWlkX3QgIHNlbmRlcl9ldWlkOw0KPiA+ICsgICAg ICAgc3RydWN0IGxpc3RfaGVhZCBmZF9maXh1cHM7DQo+ID4gKyAgICAgICBiaW5kZXJfdWludHB0 cl90IHNlY3VyaXR5X2N0eDsNCj4gPiArICAgICAgIC8qKg0KPiA+ICsgICAgICAgICogQGxvY2s6 ICBwcm90ZWN0cyBAZnJvbSwgQHRvX3Byb2MsIGFuZCBAdG9fdGhyZWFkDQo+ID4gKyAgICAgICAg Kg0KPiA+ICsgICAgICAgICogQGZyb20sIEB0b19wcm9jLCBhbmQgQHRvX3RocmVhZCBjYW4gYmUg c2V0IHRvIE5VTEwNCj4gPiArICAgICAgICAqIGR1cmluZyB0aHJlYWQgdGVhcmRvd24NCj4gPiAr ICAgICAgICAqLw0KPiA+ICsgICAgICAgc3BpbmxvY2tfdCBsb2NrOw0KPiA+ICsjaWZkZWYgQ09O RklHX0JJTkRFUl9VU0VSX1RSQUNLSU5HDQo+ID4gKyAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdGlt ZXN0YW1wOw0KPiA+ICsgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7DQo+ID4gKyNlbmRpZg0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiAgZXh0ZXJuIHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb25fbG9nIGJp bmRlcl90cmFuc2FjdGlvbl9sb2c7DQo+ID4gIGV4dGVybiBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0 aW9uX2xvZyBiaW5kZXJfdHJhbnNhY3Rpb25fbG9nX2ZhaWxlZDsNCj4gPiArDQo+ID4gK2V4dGVy biB2b2lkIHNldF9iaW5kZXJfdXBkYXRlX2luZm9fY2Iodm9pZCAoKmZuKShzdHJ1Y3QgYmluZGVy X3RyYW5zYWN0aW9uICp0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGJpbmRlcl90cmFuc2FjdGlvbl9sb2dfZW50cnkgKmUpKTsNCj4gPiArZXh0ZXJuIHZvaWQg c2V0X3ByaW50X3RyYW5zYWN0aW9uX2V4dF9jYih2b2lkICgqZm4pKHN0cnVjdCBzZXFfZmlsZSAq bSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJp bmRlcl90cmFuc2FjdGlvbiAqdCkpOw0KPiA+ICAjZW5kaWYgLyogX0xJTlVYX0JJTkRFUl9JTlRF Uk5BTF9IICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXJfbGF0ZW5j eV90cmFjZXIuYyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXJfbGF0ZW5jeV90cmFjZXIuYw0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uYzk2MjZmNQ0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyX2xhdGVuY3lfdHJh Y2VyLmMNCj4gPiBAQCAtMCwwICsxLDEwMCBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMA0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWVkaWFU ZWsgSW5jLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4N Cj4gPiArI2luY2x1ZGUgPHVhcGkvbGludXgvYW5kcm9pZC9iaW5kZXIuaD4NCj4gPiArI2luY2x1 ZGUgImJpbmRlcl9hbGxvYy5oIg0KPiA+ICsjaW5jbHVkZSAiYmluZGVyX2ludGVybmFsLmgiDQo+ ID4gKyNpbmNsdWRlICJiaW5kZXJfdHJhY2UuaCINCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIHBy b2JlX2JpbmRlcl9mcmVlX3RyYW5zYWN0aW9uIC0gT3V0cHV0IGluZm8gb2YgYSBkZWxheSB0cmFu c2FjdGlvbg0KPiA+ICsgKiBAdDogICAgICAgICAgcG9pbnRlciB0byB0aGUgb3Zlci10aW1lIHRy YW5zYWN0aW9uDQo+ID4gKyAqLw0KPiA+ICt2b2lkIHByb2JlX2JpbmRlcl9mcmVlX3RyYW5zYWN0 aW9uKHZvaWQgKmlnbm9yZSwgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdCkNCj4gPiArew0K PiA+ICsgICAgICAgc3RydWN0IHJ0Y190aW1lIHRtOw0KPiA+ICsgICAgICAgc3RydWN0IHRpbWVz cGVjICpzdGFydGltZTsNCj4gPiArICAgICAgIHN0cnVjdCB0aW1lc3BlYyBjdXIsIHN1Yl90Ow0K PiA+ICsNCj4gPiArICAgICAgIGt0aW1lX2dldF90cygmY3VyKTsNCj4gPiArICAgICAgIHN0YXJ0 aW1lID0gJnQtPnRpbWVzdGFtcDsNCj4gPiArICAgICAgIHN1Yl90ID0gdGltZXNwZWNfc3ViKGN1 ciwgKnN0YXJ0aW1lKTsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBpZiB0cmFuc2FjdGlvbiB0aW1l IGlzIG92ZXIgdGhhbiAyIHNlYywNCj4gPiArICAgICAgICAqIHNob3cgdGltZW91dCB3YXJuaW5n IGxvZy4NCj4gPiArICAgICAgICAqLw0KPiA+ICsgICAgICAgaWYgKHN1Yl90LnR2X3NlYyA8IDIp DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4gPiArDQo+ID4gKyAgICAgICBydGNfdGlt ZV90b190bSh0LT50di50dl9zZWMsICZ0bSk7DQo+ID4gKw0KPiA+ICsgICAgICAgc3Bpbl9sb2Nr KCZ0LT5sb2NrKTsNCj4gPiArICAgICAgIHByX2luZm9fcmF0ZWxpbWl0ZWQoIiVkOiBmcm9tICVk OiVkIHRvICVkOiVkIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB0LT5kZWJ1Z19pZCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICB0LT5mcm9tID8gdC0+ZnJvbS0+cHJvYy0+cGlk IDogMCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB0LT5mcm9tID8gdC0+ZnJvbS0+cGlk IDogMCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB0LT50b19wcm9jID8gdC0+dG9fcHJv Yy0+cGlkIDogMCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB0LT50b190aHJlYWQgPyB0 LT50b190aHJlYWQtPnBpZCA6IDApOw0KPiA+ICsgICAgICAgc3Bpbl91bmxvY2soJnQtPmxvY2sp Ow0KPiA+ICsNCj4gPiArICAgICAgIHByX2luZm9fcmF0ZWxpbWl0ZWQoIiB0b3RhbCAldS4lMDNs ZCBzIGNvZGUgJXUgc3RhcnQgJWx1LiUwM2xkIGFuZHJvaWQgJWQtJTAyZC0lMDJkICUwMmQ6JTAy ZDolMDJkLiUwM2x1XG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBp bnQpc3ViX3QudHZfc2VjLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIChzdWJfdC50dl9u c2VjIC8gTlNFQ19QRVJfTVNFQyksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdC0+Y29k ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylzdGFydGltZS0+ dHZfc2VjLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIChzdGFydGltZS0+dHZfbnNlYyAv IE5TRUNfUEVSX01TRUMpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICh0bS50bV95ZWFy ICsgMTkwMCksICh0bS50bV9tb24gKyAxKSwgdG0udG1fbWRheSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICB0bS50bV9ob3VyLCB0bS50bV9taW4sIHRtLnRtX3NlYywNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodC0+dHYudHZfdXNlYyAvIFVTRUNfUEVS X01TRUMpKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgYmluZGVyX3VwZGF0ZV9p bmZvX2NiKHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnQsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbl9sb2dfZW50cnkgKmUpDQo+ID4g K3sNCj4gPiArICAgICAgIGt0aW1lX2dldF90cygmZS0+dGltZXN0YW1wKTsNCj4gPiArICAgICAg IGRvX2dldHRpbWVvZmRheSgmZS0+dHYpOw0KPiA+ICsgICAgICAgZS0+dHYudHZfc2VjIC09IChz eXNfdHoudHpfbWludXRlc3dlc3QgKiA2MCk7DQo+ID4gKyAgICAgICBtZW1jcHkoJnQtPnRpbWVz dGFtcCwgJmUtPnRpbWVzdGFtcCwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOw0KPiA+ICsgICAg ICAgbWVtY3B5KCZ0LT50diwgJmUtPnR2LCBzaXplb2Yoc3RydWN0IHRpbWV2YWwpKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgcHJpbnRfYmluZGVyX3RyYW5zYWN0aW9uX2V4dChz dHJ1Y3Qgc2VxX2ZpbGUgKm0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0KQ0KPiA+ICt7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgcnRjX3RpbWUgdG07DQo+ID4gKw0KPiA+ICsgICAgICAgcnRjX3RpbWVfdG9fdG0o dC0+dHYudHZfc2VjLCAmdG0pOw0KPiA+ICsgICAgICAgc2VxX3ByaW50ZihtLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAiIHN0YXJ0ICVsdS4lMDZsdSBhbmRyb2lkICVkLSUwMmQtJTAyZCAlMDJk OiUwMmQ6JTAyZC4lMDNsdSIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25n KXQtPnRpbWVzdGFtcC50dl9zZWMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICh0LT50aW1lc3Rh bXAudHZfbnNlYyAvIE5TRUNfUEVSX1VTRUMpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAodG0u dG1feWVhciArIDE5MDApLCAodG0udG1fbW9uICsgMSksIHRtLnRtX21kYXksDQo+ID4gKyAgICAg ICAgICAgICAgICAgIHRtLnRtX2hvdXIsIHRtLnRtX21pbiwgdG0udG1fc2VjLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodC0+dHYudHZfdXNlYyAvIFVTRUNfUEVSX01T RUMpKTsNCj4gPiArDQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgX19pbml0IGluaXRf YmluZGVyX2xhdGVuY3lfdHJhY2VyKHZvaWQpDQo+ID4gK3sNCj4gPiArICAgICAgIHJlZ2lzdGVy X3RyYWNlX2JpbmRlcl9mcmVlX3RyYW5zYWN0aW9uKA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIHByb2JlX2JpbmRlcl9mcmVlX3RyYW5zYWN0aW9uLCBOVUxMKTsNCj4gPiArDQo+ID4gKyAg ICAgICBzZXRfYmluZGVyX3VwZGF0ZV9pbmZvX2NiKGJpbmRlcl91cGRhdGVfaW5mb19jYik7DQo+ ID4gKyAgICAgICBzZXRfcHJpbnRfdHJhbnNhY3Rpb25fZXh0X2NiKHByaW50X2JpbmRlcl90cmFu c2FjdGlvbl9leHQpOw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyB2b2lkIGV4aXRfYmluZGVyX2xhdGVuY3lfdHJhY2VyKHZvaWQpDQo+ID4gK3sNCj4g PiArICAgICAgIHVucmVnaXN0ZXJfdHJhY2VfYmluZGVyX2ZyZWVfdHJhbnNhY3Rpb24oDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgcHJvYmVfYmluZGVyX2ZyZWVfdHJhbnNhY3Rpb24sIE5V TEwpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICttb2R1bGVfaW5pdChpbml0X2JpbmRlcl9sYXRlbmN5 X3RyYWNlcik7DQo+ID4gK21vZHVsZV9leGl0KGV4aXRfYmluZGVyX2xhdGVuY3lfdHJhY2VyKTsN Cj4gPiArDQo+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4gPiArDQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaCBiL2RyaXZlcnMvYW5kcm9pZC9i aW5kZXJfdHJhY2UuaA0KPiA+IGluZGV4IDY3MzFjM2MuLmM3Yzc2YzEgMTAwNjQ0DQo+ID4gLS0t IGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oDQo+ID4gKysrIGIvZHJpdmVycy9hbmRy b2lkL2JpbmRlcl90cmFjZS5oDQo+ID4gQEAgLTk1LDYgKzk1LDQyIEBADQo+ID4gICAgICAgICAg ICAgICAgICAgX19lbnRyeS0+dGhyZWFkX3RvZG8pDQo+ID4gICk7DQo+ID4NCj4gPiArVFJBQ0Vf RVZFTlQoYmluZGVyX2ZyZWVfdHJhbnNhY3Rpb24sDQo+ID4gKyAgICAgICBUUF9QUk9UTyhzdHJ1 Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0KSwNCj4gPiArICAgICAgIFRQX0FSR1ModCksDQo+ID4g KyAgICAgICBUUF9TVFJVQ1RfX2VudHJ5KA0KPiA+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKGlu dCwgZGVidWdfaWQpDQo+ID4gKyAgICAgICAgICAgICAgIF9fZmllbGQoaW50LCBmcm9tX3Byb2Mp DQo+ID4gKyAgICAgICAgICAgICAgIF9fZmllbGQoaW50LCBmcm9tX3RocmVhZCkNCj4gPiArICAg ICAgICAgICAgICAgX19maWVsZChpbnQsIHRvX3Byb2MpDQo+ID4gKyAgICAgICAgICAgICAgIF9f ZmllbGQoaW50LCB0b190aHJlYWQpDQo+ID4gKyAgICAgICAgICAgICAgIF9fZmllbGQodW5zaWdu ZWQgaW50LCBjb2RlKQ0KPiA+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHVuc2lnbmVkIGludCwg ZmxhZ3MpDQo+ID4gKyAgICAgICAgICAgICAgIF9fZmllbGQodW5zaWduZWQgbG9uZywgc3RhcnRf c2VjKQ0KPiA+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIHN0YXJ0X25z ZWMpDQo+ID4gKyAgICAgICApLA0KPiA+ICsgICAgICAgVFBfZmFzdF9hc3NpZ24oDQo+ID4gKyAg ICAgICAgICAgICAgIF9fZW50cnktPmRlYnVnX2lkID0gdC0+ZGVidWdfaWQ7DQo+ID4gKyAgICAg ICAgICAgICAgIF9fZW50cnktPmZyb21fcHJvYyA9IHQtPmZyb20gPyB0LT5mcm9tLT5wcm9jLT5w aWQgOiAwOw0KPiA+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5mcm9tX3RocmVhZCA9IHQtPmZy b20gPyB0LT5mcm9tLT5waWQgOiAwOw0KPiA+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT50b19w cm9jID0gdC0+dG9fcHJvYyA/IHQtPnRvX3Byb2MtPnBpZCA6IDA7DQo+ID4gKyAgICAgICAgICAg ICAgIF9fZW50cnktPnRvX3RocmVhZCA9IHQtPnRvX3RocmVhZCA/IHQtPnRvX3RocmVhZC0+cGlk IDogMDsNCj4gPiArICAgICAgICAgICAgICAgX19lbnRyeS0+Y29kZSA9IHQtPmNvZGU7DQo+ID4g KyAgICAgICAgICAgICAgIF9fZW50cnktPmZsYWdzID0gdC0+ZmxhZ3M7DQo+ID4gKyNpZmRlZiBD T05GSUdfQklOREVSX1VTRVJfVFJBQ0tJTkcNCj4gPiArICAgICAgICAgICAgICAgX19lbnRyeS0+ c3RhcnRfc2VjID0gdC0+dGltZXN0YW1wLnR2X3NlYzsNCj4gPiArICAgICAgICAgICAgICAgX19l bnRyeS0+c3RhcnRfbnNlYyA9IHQtPnRpbWVzdGFtcC50dl9uc2VjIC8gTlNFQ19QRVJfTVNFQzsN Cj4gPiArI2Vsc2UNCj4gPiArICAgICAgICAgICAgICAgX19lbnRyeS0+c3RhcnRfc2VjID0gMDsN Cj4gPiArICAgICAgICAgICAgICAgX19lbnRyeS0+c3RhcnRfbnNlYyA9IDA7DQo+ID4gKyNlbmRp Zg0KPiA+ICsgICAgICAgKSwNCj4gPiArICAgICAgIFRQX3ByaW50aygidHJhbnNhY3Rpb249JWQg ZnJvbSAlZDolZCB0byAlZDolZCBmbGFncz0weCV4IGNvZGU9MHgleCBzdGFydCAlbHUuJTAzbGQi LA0KPiA+ICsgICAgICAgICAgICAgICAgIF9fZW50cnktPmRlYnVnX2lkLCBfX2VudHJ5LT5mcm9t X3Byb2MsIF9fZW50cnktPmZyb21fdGhyZWFkLA0KPiA+ICsgICAgICAgICAgICAgICAgIF9fZW50 cnktPnRvX3Byb2MsIF9fZW50cnktPnRvX3RocmVhZCwgX19lbnRyeS0+Y29kZSwNCj4gPiArICAg ICAgICAgICAgICAgICBfX2VudHJ5LT5mbGFncywgX19lbnRyeS0+c3RhcnRfc2VjLCBfX2VudHJ5 LT5zdGFydF9uc2VjKQ0KPiA+ICspOw0KPiA+ICsNCj4gPiAgVFJBQ0VfRVZFTlQoYmluZGVyX3Ry YW5zYWN0aW9uLA0KPiA+ICAgICAgICAgVFBfUFJPVE8oYm9vbCByZXBseSwgc3RydWN0IGJpbmRl cl90cmFuc2FjdGlvbiAqdCwNCj4gPiAgICAgICAgICAgICAgICAgIHN0cnVjdCBiaW5kZXJfbm9k ZSAqdGFyZ2V0X25vZGUpLA0KPiA+IC0tDQo+ID4gMS43LjkuNQ0KDQo=