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 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4491FC61DA4 for ; Tue, 14 Mar 2023 02:24:17 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pbuK7-0003yT-J5; Mon, 13 Mar 2023 22:23:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pbuK6-0003yF-4E; Mon, 13 Mar 2023 22:23:34 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pbuK2-0002NI-T1; Mon, 13 Mar 2023 22:23:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1678760610; x=1710296610; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=jVDiaJI2HdFZnMGZ6X9MBBJdI9KUThitBEp6cmppmvE=; b=QSPdh/74HBEN9jfkTsFVji71BfBqRPYnF1YxEZZSM2fSntTQLleBrn/f Nzsvlq9pupJWkGSPLpX6awWTbba4PljLqxphsn4RHwku40KKGs5W+byQ5 y9bKmqKa+86yuWaEl4hs4EoJwXNzsnOuev/zeGcgytfxBtojyAD0bN7/Y KIRfWYf5bJtAkrGMYE1yuTI42OjaMYKMPYspuduRQx++k5SD0TZcy6fUj UWBm/FE6MK3GLaGdUYKRhGs4jqxEsgqrvZdbeVjE+FW9pUtFZMkziVWtw Dbswo54UVRfTjSaTAJ47hz+4PZFBmbyks2/HlswPy93kwfINa4X3utTjm w==; X-IronPort-AV: E=Sophos;i="5.98,258,1673884800"; d="scan'208";a="223842760" Received: from mail-dm6nam10lp2107.outbound.protection.outlook.com (HELO NAM10-DM6-obe.outbound.protection.outlook.com) ([104.47.58.107]) by ob1.hgst.iphmx.com with ESMTP; 14 Mar 2023 10:23:21 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MVITVMnBfOZEo7Bn5U8Z5uoWX+CTgfY2h1XhbyDBs9QwVyOhga5PiNISz9YYybsVxc+HXdvfKgh1JMXczEwjtZ+6LfEckjecKK5b9+r96uFFlkuLum6BNSNJ+HJ5CifEJ9Ny+A+uXMfKFDz8Ac2tH+58RCAtMTYCgUk/Z9eiZHSGqSFN2UiWO4Pf6FosdtTmmdHptBd0MBQNkFL9BuFn/s+dXzWHvlRZD+QgQmKTKwowOl5DXPImbaoJb3bCVV6bCIf4ZOqsKF+2O3voU0eQHIxBKTqQG3v28/E28SvG/q8gemfyXkZCyJbyMYqYOgSVrKIDKUaL9zi7K+RIyL/d2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jVDiaJI2HdFZnMGZ6X9MBBJdI9KUThitBEp6cmppmvE=; b=eqPqWW5RsUvL/N+LlnLBbk31oBnyUCMZIMcEs3Kg5Jz/vB5qKcn6hldb1kHed79x4LYKfZ01BEAt7upP1X572GUko52pHRGLYBZ+out5HsGvJi0S6sNQ3r0Yx9FnZ/IfUGoe3hCnTS6VTYWIC6uW2YLEzkgWlV9yODLx1MaKlAcIWbNAs3YowFfzc/6FlYBjDaPuCXtV1WcvXLjq0cT1vqS1BeQ7W2QMhIjEnQMWHrnn6NXVEBAgzJ2yozC+36LhCZ8i1S5Uc3LtopFqKWAJSudsTjjQxo5JNO0tTpj+RLcXkB2yI62RqbpPqqi81THCKJHNkrhGlJgs1qXCteK2hw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jVDiaJI2HdFZnMGZ6X9MBBJdI9KUThitBEp6cmppmvE=; b=xWmBt4G8V5jIbrtyRsSc3SOxG5Mm4aal+KZmRE+FWr8C2RfYvQFXBsVnT6tqK6FK834/v+UI0qSpgHLmhR4hC+QdyoTzJOVSsiD4pB8XASxpoldADrK48pglsvr794ZGQsq3V8D527074Sskb//03mN1CZqS+JkEUe4ZN29UEFc= Received: from MN2PR04MB5951.namprd04.prod.outlook.com (2603:10b6:208:3f::13) by BYAPR04MB6022.namprd04.prod.outlook.com (2603:10b6:a03:ef::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.24; Tue, 14 Mar 2023 02:23:17 +0000 Received: from MN2PR04MB5951.namprd04.prod.outlook.com ([fe80::9171:c66e:ce90:6c24]) by MN2PR04MB5951.namprd04.prod.outlook.com ([fe80::9171:c66e:ce90:6c24%7]) with mapi id 15.20.6178.024; Tue, 14 Mar 2023 02:23:17 +0000 From: Dmitry Fomichev To: "faithilikerun@gmail.com" , "qemu-devel@nongnu.org" CC: "hreitz@redhat.com" , "hare@suse.de" , "sgarzare@redhat.com" , "mehta.aaru20@gmail.com" , "stefanha@redhat.com" , "fam@euphon.net" , "qemu-block@nongnu.org" , "kwolf@redhat.com" , "jusual@redhat.com" , "damien.lemoal@opensource.wdc.com" Subject: Re: [PATCH v6 1/4] file-posix: add tracking of the zone write pointers Thread-Topic: [PATCH v6 1/4] file-posix: add tracking of the zone write pointers Thread-Index: AQHZUzt32YN8vtG0JUWfoEqQljL5oq75kWcA Date: Tue, 14 Mar 2023 02:23:16 +0000 Message-ID: References: <20230310103106.62124-1-faithilikerun@gmail.com> <20230310103106.62124-2-faithilikerun@gmail.com> In-Reply-To: <20230310103106.62124-2-faithilikerun@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=wdc.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR04MB5951:EE_|BYAPR04MB6022:EE_ x-ms-office365-filtering-correlation-id: f80bd366-b493-4596-8ac2-08db24331232 wdcipoutbound: EOP-TRUE x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Jwi3k6o9T17Xt3w0knta/X+6a6lwUmEAWML4RsW5qsW+BVV6FP+PTK1OZnPcgQmppho7ntPCqlVP7iqpr7wfqM4qWCbKEG+dzI5dlIUkQxB0cEks9Jwh2BKQWGMWTqSzR2VqHzXL6ewaVP915Ic5pkcMv7IbortRtAHdKEc+9vIW5SCTQLdprlJ/nM6pfMuh7+vGIJI4Z956uyPmsE53evOK1SPwIs97J2/kuSZCHGy9Q8HxtrBoJvd2qJZNIoPFT41GDPCZceeCH/tm079VVAMxJM+mT9a1/gbJxg135UIYkBe6We6oEd6Lbp3CDRuPQ2gP+GJZ2rB0j8QyUU2j4Bbkcdm4t/jBr5inmW//l4smUypq6TBfKJ6A7GtZOUP4DBQJXjBrcA8254d8UizVmeGOpf3Yp6MRLRi+BwFD6V7ZNhWqhhUqMhE0CO+4kRLkbM61Hz8yxMcwHmUWcsBaKxfi5oPkaSYsdLj8LXvl/hlaz3CpVKLHmPgyip0g12nt8wOeWI+pKfRDhpPJmsnIDF47vQr0FFALcPyT9kf6BhJoK4Q+K6gdHvqaDsKv+1mC+KrFLGilfreeo60KvFffXrSPuBYmpy7G1aOtwrOESlEGgnZZK6xBwSDpvm0txPCV8Ig5EgL4w8142eiragKdBftQE1n+zv4Xo3v0JFX+nQDEaRmzrIyaYs9ldouhDIc1aARha/Z/c3WZu2mfH7dTPQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR04MB5951.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(366004)(39860400002)(346002)(136003)(396003)(376002)(451199018)(30864003)(122000001)(6486002)(38070700005)(36756003)(478600001)(86362001)(2906002)(110136005)(54906003)(316002)(2616005)(5660300002)(83380400001)(4326008)(71200400001)(66556008)(66946007)(76116006)(8676002)(66476007)(64756008)(41300700001)(6512007)(82960400001)(6506007)(186003)(26005)(38100700002)(66446008)(7416002)(8936002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dTRqZExuTFQzaWJMWi85MDRzMEp2bEdSZmd0Y2d3VkdGV1ZKOWt2WW1SR01T?= =?utf-8?B?OGU5T1ZPOGpPS2phL2lVb2tEREtvRCszZ1BYKzY3bStnQTJ0T0lsaHJCSWkv?= =?utf-8?B?T1FvSURVS1c1MFNxbm8rS29CNkhTRTF2aHJhNGFxZDh1bzZYRjNQWUlRQ1N1?= =?utf-8?B?K3FXNmNiTDhrQ2JaNm5NWlI5REU5Szlkemh0VXNSMmdPR1c5V0tobzZUUHk4?= =?utf-8?B?c015MFRMVVdaaTlmYkJETW5aalRGcEVrQTBLalJNN3JTa2Z3endoay9xSTAz?= =?utf-8?B?ZVUzNjRqenEyeVVMVVZPSE1tMUxFbmVvbnhXMXBaMHc5OHVRNms1MTNoejZr?= =?utf-8?B?anFIQzNQUHRvZzhzWkgzT3V6RzUyOHZNWHMwKzVNSTVoQXZuOC9yRTk0dC95?= =?utf-8?B?K2hmOUpHSHBCdjc4V1Rza0s0eGZJOHRzOXhETERCZ1RITVpvOWNSb0xOZXkz?= =?utf-8?B?TVExWnFpSm9uZTUwMHBzWlhMTi9YeUtTT05hNHdVQ2xLdWR4Ly9BTWU0OENt?= =?utf-8?B?dWRvNnBObUhWcjNWVVV1VDBuTkpqOExSSDg5WndJSkUzMzg5YnVuWHBnajdw?= =?utf-8?B?K0xLUHE1Ly9qcndqQnpSeG5zcFpDVFpmNXc4cjA5UFpCT0lIaktZaEJzcHlv?= =?utf-8?B?MHNQdVRHRHE1Y281MksyKzZhZHRXUVI5cnZzSmg2YWlqQzJmTGNwd3VtSmhM?= =?utf-8?B?dDN0WWhHcU1SRzUwY0lXbHdickNJemNSZi92dkYxMGtHUmF4UXd2cmhmZTBa?= =?utf-8?B?TVUzUDZRam96clZFTy9BeDQwQ216WDkydWQvWWVlbG1ERjFuc25nWnFQS2VF?= =?utf-8?B?cTRDc0ZGVS8zUG9PYVpTeGJzN29scE96c1BDbmVoSWVYYlU4ZE5RVlBZMnpp?= =?utf-8?B?YXJLT1lWR0dPNG5ncjR1eHMzYktMUUMvclhsYkF6YjY0TFl5MzVuSmVCTnoz?= =?utf-8?B?aVhDdXVhNnRnU2c4eDN4ME03RDBVMmxTcnBYcmFJTzh5c0lYWTQ4NmROQUVE?= =?utf-8?B?L0h2S2wyU29jbmJaSVJwL1dDdmFPdHV3K284d2pabGFkSzJ4aERTc1BBbVI2?= =?utf-8?B?a3JiRE9YY3V3NFV0aisyS1pLVy9LQThxa2F5ditFNjhQc2IzVmE2cVBybnND?= =?utf-8?B?dHdta2dEbFNCMGVUWXNsY21rVTNQWllGYllEenBjYmRKeVlQYmFGOUtFcndn?= =?utf-8?B?SWtGMVZLSTl5TUUxaWFkS0hCaTk3WnlBK3hHaThvZEZ1UGVmTFRKdE9rYXJF?= =?utf-8?B?OExEWDgzdVlQNWloeml6alNsTVB6Rkl1dm1DcWx1NitDTTNvQzVOY3A1MHdR?= =?utf-8?B?WVg1K1ExSVJVMytuK25LcDljbzhUejQvUlpVdWxoUXJUTEVyekNZVEVNYXlZ?= =?utf-8?B?OTRXWkYxWnZ6TVN4SHdhZ2x6L1VsbWdkeUF5c3E5M0tuamovL2luOUMrbUFr?= =?utf-8?B?eUJzVlVYbUwzQUE2cTY0SFNFTGRmMVJUYTU1aytJMGZhR0FhR0FmN1NDQ1dC?= =?utf-8?B?YUlReTZNbW9UOXBFS1BDb3VXaDFQUTlaN25RWG0rSUQ4MjAyM0F4SEtjSnJx?= =?utf-8?B?cWJJb0NVaFpuMXJta2MzMUtqVUVkckRiUm1NdVZyZ0E2Z2F5T0dCVXBMZjB5?= =?utf-8?B?Yy9xbzhPQmNBSGtuT0pvdjMydXhkQTNXclJRSkllMmtIOEsrUDlpQmFFenRO?= =?utf-8?B?eGY0SU5lK09xQXI2cW1IUER4Q3k5d1gxbUFTSnhGTUplMStlcmxKVDVmR2xC?= =?utf-8?B?LzBXcTdXWEhWNTgyUnJRdUlwSmxIbDRwQVBOdGdXbXM1S3pRTU8yMFQzQVFk?= =?utf-8?B?UGtSWWNyYkIzemMrNElpS2tvMUJmaEpuOFlic2M5eVdaNzJmamJrN3MrbzBU?= =?utf-8?B?U1lTZTN4NG16Q0pSR0QwL3ZHS0NjSWZrem4xbjVkQWtUb1Q1WEhKaFdyUi9z?= =?utf-8?B?Y1JMWFh3djV6bzI3bUVHVHpHOXNFSWlmMkpCNE5mNy9TZWQ1d2FFMURJdHV0?= =?utf-8?B?TDhOZ3dGaTlsUWMvZkdmMXc5YUhxR1RXb2FYU0RNSTljbzVLQlVRVmhPbGxx?= =?utf-8?B?RXBqejFZVDZwSXkwSEZXQTZpV2FJTjlIRlhRZTZYN0xVNkpMell0V3NmM2Vo?= =?utf-8?B?bmRYR1h0UXBOVVdrVG1kRHZpV2VwNEsvd3Y3TUxSMExMSkMxenFjQzk2cWla?= =?utf-8?B?RkE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <7B07AADC7819F24887736E563A9F0E85@namprd04.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 50w6gvG82ybj9IsEIDRSlWju+J8pIP6ejl4O1JPtXBBEGzRX12fSvmcQcfTa/D57zQDCeqR91SlPSqdXhcz9KcbWsid+5kRTyMq4zW/I5V54GkPQ72c1f9r1qz1KpbQZxmdKOZs+xnOjZeNBS7lWI5ZYNrYqWsS/gL4xc0qDoDEiuQ33wOkacTXOAzQ3VleXq8ncYhsdZGp+gpL0DLaSSCoMCzHrH2LkeV4QX3j35YG1SaInukiQuiCfOv2LKL4CNgclNrzDDxJy0u/vilxBtB8c9V9Qs6OITygxv0LmRYhYhF8HrUUdKvkRfyw4jg9I38lF1jupbBs6RJl5FWeB9I/Uz8e6cro8A7n6LmII/lbQmmcmXsJuYbGHW2XOefvcnq07OS8fcC/6f7SJe2IiybWw1YGcsy/4+AJAbKIOBnfO2W0/WjIQt+L7izDlBrA7XppbbBlJL36LnhEh3FKhTUtqEdtI+QEdYipIgKA9wYLLhNorO4pfAdqyVVyJW9IkA0GtBM62PorqNFyhRqrAucxJD2achvay+WeUt88bP4oN0bQE8z7J5Tjr7YtcyPa5cBx9v+0hJsoPgeTxKxfaZqeTpS/gPBRLl6+F5XjGO6XLXYbIJuU9Gsb8+3pN91fJVXv+Bkud2HwZ4sY0dHybokB5C5Ee72elxx7evEiAsGLracHj+NBi7Z2QHV1FDgsRmWv9bt/GkKbxtusUYYaKDJUpBFyJzxbb5pyBznL+TshGNDhtczCLYOF3A/qV/rr9qcexjbza3zSS87f/Q2FlhWgzkMZPKhsZeQZJBlTuDsm6uADTzsRqnI3Q2pZ0Vb69k7tVsFSQ7dqTwmqQXmYx7hCkUdy+T5UoiQzfja2q1ffoCexGF12MHjqn+lugQLDt X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR04MB5951.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f80bd366-b493-4596-8ac2-08db24331232 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Mar 2023 02:23:16.9822 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: cKdgwEss9ryKqYcDciXs3tcGYbDjsHvgS1ksWHvFu/Jwf8MBHvWa5fIgI+bWQn239ChsYxZ4JKdg7qPo87iQ8Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR04MB6022 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=430b82a1d=Dmitry.Fomichev@wdc.com; helo=esa4.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org T24gRnJpLCAyMDIzLTAzLTEwIGF0IDE4OjMxICswODAwLCBTYW0gTGkgd3JvdGU6Cj4gU2luY2Ug TGludXggZG9lc24ndCBoYXZlIGEgdXNlciBBUEkgdG8gaXNzdWUgem9uZSBhcHBlbmQgb3BlcmF0 aW9ucyB0bwo+IHpvbmVkIGRldmljZXMgZnJvbSB1c2VyIHNwYWNlLCB0aGUgZmlsZS1wb3NpeCBk cml2ZXIgaXMgbW9kaWZpZWQgdG8gYWRkCj4gem9uZSBhcHBlbmQgZW11bGF0aW9uIHVzaW5nIHJl Z3VsYXIgd3JpdGVzLiBUbyBkbyB0aGlzLCB0aGUgZmlsZS1wb3NpeAo+IGRyaXZlciB0cmFja3Mg dGhlIHdwIGxvY2F0aW9uIG9mIGFsbCB6b25lcyBvZiB0aGUgZGV2aWNlLiBJdCB1c2VzIGFuCj4g YXJyYXkgb2YgdWludDY0X3QuIFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBlYWNoIHdwIGxv Y2F0aW9uIGluZGljYXRlcwo+IGlmIHRoZSB6b25lIHR5cGUgaXMgY29udmVudGlvbmFsIHpvbmVz Lgo+IAo+IFRoZSB6b25lcyB3cCBjYW4gYmUgY2hhbmdlZCBkdWUgdG8gdGhlIGZvbGxvd2luZyBv cGVyYXRpb25zIGlzc3VlZDoKPiAtIHpvbmUgcmVzZXQ6IGNoYW5nZSB0aGUgd3AgdG8gdGhlIHN0 YXJ0IG9mZnNldCBvZiB0aGF0IHpvbmUKPiAtIHpvbmUgZmluaXNoOiBjaGFuZ2UgdG8gdGhlIGVu ZCBsb2NhdGlvbiBvZiB0aGF0IHpvbmUKPiAtIHdyaXRlIHRvIGEgem9uZQo+IC0gem9uZSBhcHBl bmQKPiAKPiBTaWduZWQtb2ZmLWJ5OiBTYW0gTGkgPGZhaXRoaWxpa2VydW5AZ21haWwuY29tPgo+ IC0tLQo+IMKgYmxvY2svZmlsZS1wb3NpeC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IDE1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gwqBpbmNsdWRlL2Jsb2NrL2Js b2NrLWNvbW1vbi5owqDCoMKgwqAgfMKgIDE0ICsrKwo+IMKgaW5jbHVkZS9ibG9jay9ibG9ja19p bnQtY29tbW9uLmggfMKgwqAgMyArCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDE3MiBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9ibG9jay9maWxlLXBvc2l4LmMg Yi9ibG9jay9maWxlLXBvc2l4LmMKPiBpbmRleCA1NjNhY2M3NmFlLi42MWVkNzY5YWM4IDEwMDY0 NAo+IC0tLSBhL2Jsb2NrL2ZpbGUtcG9zaXguYwo+ICsrKyBiL2Jsb2NrL2ZpbGUtcG9zaXguYwo+ IEBAIC0xMzI0LDYgKzEzMjQsNzcgQEAgc3RhdGljIGludCBoZGV2X2dldF9tYXhfc2VnbWVudHMo aW50IGZkLCBzdHJ1Y3Qgc3RhdAo+ICpzdCkKPiDCoCNlbmRpZgo+IMKgfQo+IMKgCj4gKyNpZiBk ZWZpbmVkKENPTkZJR19CTEtaT05FRCkKPiArc3RhdGljIGludCBnZXRfem9uZXNfd3AoaW50IGZk LCBCbG9ja1pvbmVXcHMgKndwcywgaW50NjRfdCBvZmZzZXQsCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IG5yeikgewo+ICvCoMKg wqAgc3RydWN0IGJsa196b25lICpibGt6Owo+ICvCoMKgwqAgc2l6ZV90IHJlcF9zaXplOwo+ICvC oMKgwqAgdWludDY0X3Qgc2VjdG9yID0gb2Zmc2V0ID4+IEJEUlZfU0VDVE9SX0JJVFM7Cj4gK8Kg wqDCoCBpbnQgcmV0LCBuID0gMCwgaSA9IDA7Cj4gK8KgwqDCoCByZXBfc2l6ZSA9IHNpemVvZihz dHJ1Y3QgYmxrX3pvbmVfcmVwb3J0KSArIG5yeiAqIHNpemVvZihzdHJ1Y3QgYmxrX3pvbmUpOwo+ ICvCoMKgwqAgZ19hdXRvZnJlZSBzdHJ1Y3QgYmxrX3pvbmVfcmVwb3J0ICpyZXAgPSBOVUxMOwo+ ICsKPiArwqDCoMKgIHJlcCA9IGdfbWFsbG9jKHJlcF9zaXplKTsKPiArwqDCoMKgIGJsa3ogPSAo c3RydWN0IGJsa196b25lICopKHJlcCArIDEpOwo+ICvCoMKgwqAgd2hpbGUgKG4gPCBucnopIHsK PiArwqDCoMKgwqDCoMKgwqAgbWVtc2V0KHJlcCwgMCwgcmVwX3NpemUpOwo+ICvCoMKgwqDCoMKg wqDCoCByZXAtPnNlY3RvciA9IHNlY3RvcjsKPiArwqDCoMKgwqDCoMKgwqAgcmVwLT5ucl96b25l cyA9IG5yeiAtIG47Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoCBkbyB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0ID0gaW9jdGwoZmQsIEJMS1JFUE9SVFpPTkUsIHJlcCk7Cj4gK8KgwqDCoMKg wqDCoMKgIH0gd2hpbGUgKHJldCAhPSAwICYmIGVycm5vID09IEVJTlRSKTsKPiArwqDCoMKgwqDC oMKgwqAgaWYgKHJldCAhPSAwKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3JfcmVw b3J0KCIlZDogaW9jdGwgQkxLUkVQT1JUWk9ORSBhdCAlIiBQUklkNjQgIiBmYWlsZWQgJWQiLAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmZCwgb2Zmc2V0LCBlcnJu byk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1lcnJubzsKPiArwqDCoMKgwqDC oMKgwqAgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqAgaWYgKCFyZXAtPm5yX3pvbmVzKSB7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4gK8KgwqDCoMKgwqDCoMKgIH0KPiArCj4gK8Kg wqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCByZXAtPm5yX3pvbmVzOyBpKyssIG4rKykgewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq IFRoZSB3cCB0cmFja2luZyBjYXJlcyBvbmx5IGFib3V0IHNlcXVlbnRpYWwgd3JpdGVzIHJlcXVp cmVkIGFuZAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzZXF1ZW50aWFsIHdyaXRlIHBy ZWZlcnJlZCB6b25lcyBzbyB0aGF0IHRoZSB3cCBjYW4gYWR2YW5jZSB0bwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiB0aGUgcmlnaHQgbG9jYXRpb24uCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIFVzZSB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIHdwIGxvY2F0aW9u IHRvIGluZGljYXRlIHRoZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB6b25lIHR5cGU6 IDAgZm9yIFNXUi9TV1Agem9uZXMgYW5kIDEgZm9yIGNvbnZlbnRpb25hbCB6b25lcy4KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGJs a3pbaV0udHlwZSA9PSBCTEtfWk9ORV9UWVBFX0NPTlZFTlRJT05BTCkgewo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgd3BzLT53cFtpXSA9IDFVTEwgPDwgNjM7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN3aXRjaChibGt6W2ldLmNvbmQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNhc2UgQkxLX1pPTkVfQ09ORF9GVUxMOgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY2FzZSBCTEtfWk9ORV9DT05EX1JFQURPTkxZOgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvKiBab25lIG5vdCB3cml0YWJsZSAqLwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cHMtPndwW2ldID0gKGJsa3pbaV0uc3RhcnQgKyBi bGt6W2ldLmxlbikgPDwKPiBCRFJWX1NFQ1RPUl9CSVRTOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNhc2UgQkxLX1pPTkVfQ09ORF9PRkZMSU5FOgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvKiBab25lIG5vdCB3cml0YWJsZSBub3IgcmVhZGFibGUgKi8KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3BzLT53cFtpXSA9IChibGt6 W2ldLnN0YXJ0KSA8PCBCRFJWX1NFQ1RPUl9CSVRTOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRlZmF1bHQ6Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdwcy0+ d3BbaV0gPSBibGt6W2ldLndwIDw8IEJEUlZfU0VDVE9SX0JJVFM7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKgwqDCoMKgwqAg fQo+ICvCoMKgwqDCoMKgwqDCoCBzZWN0b3IgPSBibGt6W2kgLSAxXS5zdGFydCArIGJsa3pbaSAt IDFdLmxlbjsKPiArwqDCoMKgIH0KPiArCj4gK8KgwqDCoCByZXR1cm4gMDsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgdXBkYXRlX3pvbmVzX3dwKGludCBmZCwgQmxvY2tab25lV3BzICp3cHMsIGlu dDY0X3Qgb2Zmc2V0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IG5yeikgewo+ICvCoMKgwqAgaWYgKGdldF96b25l c193cChmZCwgd3BzLCBvZmZzZXQsIG5yeikgPCAwKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGVycm9y X3JlcG9ydCgidXBkYXRlIHpvbmUgd3AgZmFpbGVkIik7Cj4gK8KgwqDCoCB9Cj4gK30KPiArI2Vu ZGlmCj4gKwo+IMKgc3RhdGljIHZvaWQgcmF3X3JlZnJlc2hfbGltaXRzKEJsb2NrRHJpdmVyU3Rh dGUgKmJzLCBFcnJvciAqKmVycnApCj4gwqB7Cj4gwqDCoMKgwqAgQkRSVlJhd1N0YXRlICpzID0g YnMtPm9wYXF1ZTsKPiBAQCAtMTQxMyw2ICsxNDg0LDIxIEBAIHN0YXRpYyB2b2lkIHJhd19yZWZy ZXNoX2xpbWl0cyhCbG9ja0RyaXZlclN0YXRlICpicywKPiBFcnJvciAqKmVycnApCj4gwqDCoMKg wqDCoMKgwqDCoCBpZiAocmV0ID49IDApIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnMt PmJsLm1heF9hY3RpdmVfem9uZXMgPSByZXQ7Cj4gwqDCoMKgwqDCoMKgwqDCoCB9Cj4gKwo+ICvC oMKgwqDCoMKgwqDCoCByZXQgPSBnZXRfc3lzZnNfbG9uZ192YWwoJnN0LCAicGh5c2ljYWxfYmxv Y2tfc2l6ZSIpOwo+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0ID49IDApIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBicy0+Ymwud3JpdGVfZ3JhbnVsYXJpdHkgPSByZXQ7Cj4gK8KgwqDCoMKg wqDCoMKgIH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgIGJzLT5ibC53cHMgPSBnX21hbGxvYyhzaXpl b2YoQmxvY2tab25lV3BzKSArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXpl b2YoaW50NjRfdCkgKiBicy0+YmwubnJfem9uZXMpOwo+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBn ZXRfem9uZXNfd3Aocy0+ZmQsIGJzLT5ibC53cHMsIDAsIGJzLT5ibC5ucl96b25lcyk7Cj4gK8Kg wqDCoMKgwqDCoMKgIGlmIChyZXQgPCAwKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJy b3Jfc2V0Z19lcnJubyhlcnJwLCAtcmV0LCAicmVwb3J0IHdwcyBmYWlsZWQiKTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBnX2ZyZWUoYnMtPmJsLndwcyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuOwo+ICvCoMKgwqDCoMKgwqDCoCB9Cj4gK8KgwqDCoMKgwqDCoMKgIHFlbXVf Y29fbXV0ZXhfaW5pdCgmYnMtPmJsLndwcy0+Y29sb2NrKTsKPiDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybjsKPiDCoMKgwqDCoCB9Cj4gwqBvdXQ6Cj4gQEAgLTIzMzgsOSArMjQyNCwxNSBAQCBzdGF0 aWMgaW50IGNvcm91dGluZV9mbiByYXdfY29fcHJ3KEJsb2NrRHJpdmVyU3RhdGUgKmJzLAo+IHVp bnQ2NF90IG9mZnNldCwKPiDCoHsKPiDCoMKgwqDCoCBCRFJWUmF3U3RhdGUgKnMgPSBicy0+b3Bh cXVlOwo+IMKgwqDCoMKgIFJhd1Bvc2l4QUlPRGF0YSBhY2I7Cj4gK8KgwqDCoCBpbnQgcmV0Owo+ IMKgCj4gwqDCoMKgwqAgaWYgKGZkX29wZW4oYnMpIDwgMCkKPiDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiAtRUlPOwo+ICsjaWYgZGVmaW5lZChDT05GSUdfQkxLWk9ORUQpCj4gK8KgwqDCoCBpZiAo YnMtPmJsLndwcykgewo+ICvCoMKgwqDCoMKgwqDCoCBxZW11X2NvX211dGV4X2xvY2soJmJzLT5i bC53cHMtPmNvbG9jayk7Cj4gK8KgwqDCoCB9Cj4gKyNlbmRpZgo+IMKgCj4gwqDCoMKgwqAgLyoK PiDCoMKgwqDCoMKgICogV2hlbiB1c2luZyBPX0RJUkVDVCwgdGhlIHJlcXVlc3QgbXVzdCBiZSBh bGlnbmVkIHRvIGJlIGFibGUgdG8gdXNlCj4gQEAgLTIzNTQsMTQgKzI0NDYsMTYgQEAgc3RhdGlj IGludCBjb3JvdXRpbmVfZm4gcmF3X2NvX3BydyhCbG9ja0RyaXZlclN0YXRlCj4gKmJzLCB1aW50 NjRfdCBvZmZzZXQsCj4gwqDCoMKgwqAgfSBlbHNlIGlmIChzLT51c2VfbGludXhfaW9fdXJpbmcp IHsKPiDCoMKgwqDCoMKgwqDCoMKgIEx1cmluZ1N0YXRlICphaW8gPSBhaW9fZ2V0X2xpbnV4X2lv X3VyaW5nKGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJzKSk7Cj4gwqDCoMKgwqDCoMKgwqDCoCBhc3Nl cnQocWlvdi0+c2l6ZSA9PSBieXRlcyk7Cj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBsdXJpbmdf Y29fc3VibWl0KGJzLCBhaW8sIHMtPmZkLCBvZmZzZXQsIHFpb3YsIHR5cGUpOwo+ICvCoMKgwqDC oMKgwqDCoCByZXQgPSBsdXJpbmdfY29fc3VibWl0KGJzLCBhaW8sIHMtPmZkLCBvZmZzZXQsIHFp b3YsIHR5cGUpOwo+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPiDCoCNlbmRpZgo+IMKgI2lm ZGVmIENPTkZJR19MSU5VWF9BSU8KPiDCoMKgwqDCoCB9IGVsc2UgaWYgKHMtPnVzZV9saW51eF9h aW8pIHsKPiDCoMKgwqDCoMKgwqDCoMKgIExpbnV4QWlvU3RhdGUgKmFpbyA9IGFpb19nZXRfbGlu dXhfYWlvKGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJzKSk7Cj4gwqDCoMKgwqDCoMKgwqDCoCBhc3Nl cnQocWlvdi0+c2l6ZSA9PSBieXRlcyk7Cj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBsYWlvX2Nv X3N1Ym1pdChicywgYWlvLCBzLT5mZCwgb2Zmc2V0LCBxaW92LCB0eXBlLAo+ICvCoMKgwqDCoMKg wqDCoCByZXQgPSBsYWlvX2NvX3N1Ym1pdChicywgYWlvLCBzLT5mZCwgb2Zmc2V0LCBxaW92LCB0 eXBlLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzLT5haW9fbWF4X2JhdGNoKTsKPiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7 Cj4gwqAjZW5kaWYKPiDCoMKgwqDCoCB9Cj4gwqAKPiBAQCAtMjM3OCw3ICsyNDcyLDMyIEBAIHN0 YXRpYyBpbnQgY29yb3V0aW5lX2ZuIHJhd19jb19wcncoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCj4g dWludDY0X3Qgb2Zmc2V0LAo+IMKgwqDCoMKgIH07Cj4gwqAKPiDCoMKgwqDCoCBhc3NlcnQocWlv di0+c2l6ZSA9PSBieXRlcyk7Cj4gLcKgwqDCoCByZXR1cm4gcmF3X3RocmVhZF9wb29sX3N1Ym1p dChicywgaGFuZGxlX2Fpb2NiX3J3LCAmYWNiKTsKPiArwqDCoMKgIHJldCA9IHJhd190aHJlYWRf cG9vbF9zdWJtaXQoYnMsIGhhbmRsZV9haW9jYl9ydywgJmFjYik7Cj4gKwo+ICtvdXQ6Cj4gKyNp ZiBkZWZpbmVkKENPTkZJR19CTEtaT05FRCkKPiArwqDCoMKgIEJsb2NrWm9uZVdwcyAqd3BzID0g YnMtPmJsLndwczsKPiArwqDCoMKgIGlmIChyZXQgPT0gMCkgewo+ICvCoMKgwqDCoMKgwqDCoCBp ZiAodHlwZSAmIFFFTVVfQUlPX1dSSVRFICYmIHdwcyAmJiBicy0+Ymwuem9uZV9zaXplKSB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGluZGV4ID0gb2Zmc2V0IC8gYnMtPmJsLnpvbmVf c2l6ZTsKCkl0IG1pZ2h0IGJlIGNsZWFuZXIgdG8gZGVmaW5lCmludDY0X3QgKndwID0gJndwcy0+ d3Bbb2Zmc2V0IC8gYnMtPmJsLnpvbmVfc2l6ZV07CmhlcmUgaW5zdGVhZCBvZiB0aGUgaW5kZXgg YW5kIHVzZSAqd3AgaW4gdGhlIHN1YnNlcXVlbnQgY29kZS4KCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKCFCRFJWX1pUX0lTX0NPTlYod3BzLT53cFtpbmRleF0pKSB7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBBZHZhbmNlIHRoZSB3cCBpZiBuZWVkZWQgKi8KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChvZmZzZXQgKyBieXRlcyA+IHdwcy0+ d3BbaW5kZXhdKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdw cy0+d3BbaW5kZXhdID0gb2Zmc2V0ICsgYnl0ZXM7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqDCoCB9 Cj4gK8KgwqDCoCB9IGVsc2Ugewo+ICvCoMKgwqDCoMKgwqDCoCBpZiAodHlwZSAmIFFFTVVfQUlP X1dSSVRFKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdXBkYXRlX3pvbmVzX3dwKHMtPmZk LCBicy0+Ymwud3BzLCAwLCAxKTsKPiArwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqAgfQo+ICsK PiArwqDCoMKgIGlmICh3cHMpIHsKPiArwqDCoMKgwqDCoMKgwqAgcWVtdV9jb19tdXRleF91bmxv Y2soJndwcy0+Y29sb2NrKTsKPiArwqDCoMKgIH0KPiArI2VuZGlmCj4gK8KgwqDCoCByZXR1cm4g cmV0Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50IGNvcm91dGluZV9mbiByYXdfY29fcHJlYWR2 KEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IG9mZnNldCwKPiBAQCAtMjQ4Niw2ICsyNjA1 LDExIEBAIHN0YXRpYyB2b2lkIHJhd19jbG9zZShCbG9ja0RyaXZlclN0YXRlICpicykKPiDCoMKg wqDCoCBCRFJWUmF3U3RhdGUgKnMgPSBicy0+b3BhcXVlOwo+IMKgCj4gwqDCoMKgwqAgaWYgKHMt PmZkID49IDApIHsKPiArI2lmIGRlZmluZWQoQ09ORklHX0JMS1pPTkVEKQo+ICvCoMKgwqDCoMKg wqDCoCBpZiAoYnMtPmJsLndwcykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdfZnJlZShi cy0+Ymwud3BzKTsKPiArwqDCoMKgwqDCoMKgwqAgfQo+ICsjZW5kaWYKPiDCoMKgwqDCoMKgwqDC oMKgIHFlbXVfY2xvc2Uocy0+ZmQpOwo+IMKgwqDCoMKgwqDCoMKgwqAgcy0+ZmQgPSAtMTsKPiDC oMKgwqDCoCB9Cj4gQEAgLTMyODUsNiArMzQwOSw3IEBAIHN0YXRpYyBpbnQgY29yb3V0aW5lX2Zu IHJhd19jb196b25lX21nbXQoQmxvY2tEcml2ZXJTdGF0ZQo+ICpicywgQmxvY2tab25lT3Agb3As Cj4gwqDCoMKgwqAgY29uc3QgY2hhciAqb3BfbmFtZTsKPiDCoMKgwqDCoCB1bnNpZ25lZCBsb25n IHpvOwo+IMKgwqDCoMKgIGludCByZXQ7Cj4gK8KgwqDCoCBCbG9ja1pvbmVXcHMgKndwcyA9IGJz LT5ibC53cHM7Cj4gwqDCoMKgwqAgaW50NjRfdCBjYXBhY2l0eSA9IGJzLT50b3RhbF9zZWN0b3Jz IDw8IEJEUlZfU0VDVE9SX0JJVFM7Cj4gwqAKPiDCoMKgwqDCoCB6b25lX3NpemUgPSBicy0+Ymwu em9uZV9zaXplOwo+IEBAIC0zMzAyLDYgKzM0MjcsMTQgQEAgc3RhdGljIGludCBjb3JvdXRpbmVf Zm4KPiByYXdfY29fem9uZV9tZ210KEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBCbG9ja1pvbmVPcCBv cCwKPiDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+IMKgwqDCoMKgIH0KPiDCoAo+ ICvCoMKgwqAgcWVtdV9jb19tdXRleF9sb2NrKCZ3cHMtPmNvbG9jayk7Cj4gK8KgwqDCoCB1aW50 MzJfdCBpbmRleCA9IG9mZnNldCAvIGJzLT5ibC56b25lX3NpemU7Cj4gK8KgwqDCoCBpZiAoQkRS Vl9aVF9JU19DT05WKHdwcy0+d3BbaW5kZXhdKSAmJiBsZW4gIT0gY2FwYWNpdHkpIHsKClRoZSB3 cHMtPndwW2luZGV4XSBleHByZXNzaW9uIGlzIHVzZWQgYSBsb3QgaW4gdGhpcyBmdW5jdGlvbi4g Q29uc2lkZXIgZGVmaW5pbmcKaW50NjRfdCAqd3AgPSAmd3BzLT53cFtpbmRleF07IHRvIHNpbXBs aWZ5IHRoZSBjb2RlLgoKPiArwqDCoMKgwqDCoMKgwqAgZXJyb3JfcmVwb3J0KCJ6b25lIG1nbXQg b3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgZm9yIGNvbnZlbnRpb25hbAo+IHpvbmVzIik7Cj4g K8KgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU87Cj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+ ICvCoMKgwqAgfQo+ICsKPiDCoMKgwqDCoCBzd2l0Y2ggKG9wKSB7Cj4gwqDCoMKgwqAgY2FzZSBC TEtfWk9fT1BFTjoKPiDCoMKgwqDCoMKgwqDCoMKgIG9wX25hbWUgPSAiQkxLT1BFTlpPTkUiOwo+ IEBAIC0zMzIxLDcgKzM0NTQsOCBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9mbiByYXdfY29fem9u ZV9tZ210KEJsb2NrRHJpdmVyU3RhdGUKPiAqYnMsIEJsb2NrWm9uZU9wIG9wLAo+IMKgwqDCoMKg wqDCoMKgwqAgYnJlYWs7Cj4gwqDCoMKgwqAgZGVmYXVsdDoKPiDCoMKgwqDCoMKgwqDCoMKgIGVy cm9yX3JlcG9ydCgiVW5zdXBwb3J0ZWQgem9uZSBvcDogMHgleCIsIG9wKTsKPiAtwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FTk9UU1VQOwo+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSAtRU5PVFNVUDsK PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4gwqDCoMKgwqAgfQo+IMKgCj4gwqDCoMKgwqAg YWNiID0gKFJhd1Bvc2l4QUlPRGF0YSkgewo+IEBAIC0zMzM5LDEwICszNDczLDI3IEBAIHN0YXRp YyBpbnQgY29yb3V0aW5lX2ZuCj4gcmF3X2NvX3pvbmVfbWdtdChCbG9ja0RyaXZlclN0YXRlICpi cywgQmxvY2tab25lT3Agb3AsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGxlbiA+PiBCRFJWX1NFQ1RPUl9CSVRTKTsKPiDCoMKgwqDCoCByZXQgPSBy YXdfdGhyZWFkX3Bvb2xfc3VibWl0KGJzLCBoYW5kbGVfYWlvY2Jfem9uZV9tZ210LCAmYWNiKTsK PiDCoMKgwqDCoCBpZiAocmV0ICE9IDApIHsKPiArwqDCoMKgwqDCoMKgwqAgdXBkYXRlX3pvbmVz X3dwKHMtPmZkLCB3cHMsIG9mZnNldCwgaW5kZXgpOwo+IMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0g LWVycm5vOwo+IMKgwqDCoMKgwqDCoMKgwqAgZXJyb3JfcmVwb3J0KCJpb2N0bCAlcyBmYWlsZWQg JWQiLCBvcF9uYW1lLCByZXQpOwo+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPiDCoMKgwqDC oCB9Cj4gwqAKPiArwqDCoMKgIGlmICh6byA9PSBCTEtSRVNFVFpPTkUgJiYgbGVuID09IGNhcGFj aXR5KSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGZvciAoaW50IGkgPSAwOyBpIDwgYnMtPmJsLm5yX3pv bmVzOyArK2kpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIUJEUlZfWlRfSVNfQ09O Vih3cHMtPndwW2ldKSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3BzLT53 cFtpXSA9IGkgKiBicy0+Ymwuem9uZV9zaXplOwoKVGhpcyB3aWxsIHJlc2V0IHdyaXRlIHBvaW50 ZXJzIG9mIGFsbCByZWFkLW9ubHkgem9uZXMgdGhhdCBtYXkgZXhpc3Qgb24gdGhlCmRldmljZSBh bmQgbWFrZSB0aGUgZGF0YSBzdG9yZWQgaW4gdGhvc2Ugem9uZXMgdW5yZWFkYWJsZS4gUi9PIHpv bmVzIG5lZWQgdG8gYmUKc2tpcHBlZCBpbiB0aGlzIGxvb3AuCgo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIH0KPiArwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqAgfSBlbHNlIGlmICh6byA9PSBC TEtSRVNFVFpPTkUpIHsKPiArwqDCoMKgwqDCoMKgwqAgd3BzLT53cFtpbmRleF0gPSBvZmZzZXQ7 Cj4gK8KgwqDCoCB9IGVsc2UgaWYgKHpvID09IEJMS0ZJTklTSFpPTkUpIHsKPiArwqDCoMKgwqDC oMKgwqAgLyogVGhlIHpvbmVkIGRldmljZSBhbGxvd3MgdGhlIGxhc3Qgem9uZSBzbWFsbGVyIHRo YXQgdGhlIHpvbmUgc2l6ZS4KPiAqLwo+ICvCoMKgwqDCoMKgwqDCoCB3cHMtPndwW2luZGV4XSA9 IG9mZnNldCArIGxlbjsKPiArwqDCoMKgIH0KPiArCj4gK291dDoKPiArwqDCoMKgIHFlbXVfY29f bXV0ZXhfdW5sb2NrKCZ3cHMtPmNvbG9jayk7Cj4gwqDCoMKgwqAgcmV0dXJuIHJldDsKPiDCoH0K PiDCoCNlbmRpZgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Jsb2NrL2Jsb2NrLWNvbW1vbi5oIGIv aW5jbHVkZS9ibG9jay9ibG9jay1jb21tb24uaAo+IGluZGV4IDE1NzZmY2YyZWQuLjkzMTk2MjI5 YWMgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9ibG9jay9ibG9jay1jb21tb24uaAo+ICsrKyBiL2lu Y2x1ZGUvYmxvY2svYmxvY2stY29tbW9uLmgKPiBAQCAtMTE4LDYgKzExOCwxNCBAQCB0eXBlZGVm IHN0cnVjdCBCbG9ja1pvbmVEZXNjcmlwdG9yIHsKPiDCoMKgwqDCoCBCbG9ja1pvbmVTdGF0ZSBz dGF0ZTsKPiDCoH0gQmxvY2tab25lRGVzY3JpcHRvcjsKPiDCoAo+ICsvKgo+ICsgKiBUcmFjayB3 cml0ZSBwb2ludGVycyBvZiBhIHpvbmUgaW4gYnl0ZXMuCj4gKyAqLwo+ICt0eXBlZGVmIHN0cnVj dCBCbG9ja1pvbmVXcHMgewo+ICvCoMKgwqAgQ29NdXRleCBjb2xvY2s7Cj4gK8KgwqDCoCB1aW50 NjRfdCB3cFtdOwo+ICt9IEJsb2NrWm9uZVdwczsKPiArCj4gwqB0eXBlZGVmIHN0cnVjdCBCbG9j a0RyaXZlckluZm8gewo+IMKgwqDCoMKgIC8qIGluIGJ5dGVzLCAwIGlmIGlycmVsZXZhbnQgKi8K PiDCoMKgwqDCoCBpbnQgY2x1c3Rlcl9zaXplOwo+IEBAIC0yNDAsNiArMjQ4LDEyIEBAIHR5cGVk ZWYgZW51bSB7Cj4gwqAjZGVmaW5lIEJEUlZfU0VDVE9SX0JJVFPCoMKgIDkKPiDCoCNkZWZpbmUg QkRSVl9TRUNUT1JfU0laRcKgwqAgKDFVTEwgPDwgQkRSVl9TRUNUT1JfQklUUykKPiDCoAo+ICsv Kgo+ICsgKiBHZXQgdGhlIGZpcnN0IG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHdwLiBJZiBpdCBp cyB6ZXJvLCB0aGVuCj4gKyAqIHRoZSB6b25lIHR5cGUgaXMgU1dSLgo+ICsgKi8KPiArI2RlZmlu ZSBCRFJWX1pUX0lTX0NPTlYod3ApwqDCoMKgICh3cCAmICgxVUxMIDw8IDYzKSkKPiArCj4gwqAj ZGVmaW5lIEJEUlZfUkVRVUVTVF9NQVhfU0VDVE9SUyBNSU5fQ09OU1QoU0laRV9NQVggPj4gQkRS Vl9TRUNUT1JfQklUUywgXAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElOVF9NQVgg Pj4gQkRSVl9TRUNUT1JfQklUUykKPiDCoCNkZWZpbmUgQkRSVl9SRVFVRVNUX01BWF9CWVRFUyAo QkRSVl9SRVFVRVNUX01BWF9TRUNUT1JTIDw8IEJEUlZfU0VDVE9SX0JJVFMpCj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvYmxvY2svYmxvY2tfaW50LWNvbW1vbi5oIGIvaW5jbHVkZS9ibG9jay9ibG9j a19pbnQtCj4gY29tbW9uLmgKPiBpbmRleCAxYmQyYWVmNGQ1Li4xOTkxNWIzNGFmIDEwMDY0NAo+ IC0tLSBhL2luY2x1ZGUvYmxvY2svYmxvY2tfaW50LWNvbW1vbi5oCj4gKysrIGIvaW5jbHVkZS9i bG9jay9ibG9ja19pbnQtY29tbW9uLmgKPiBAQCAtODg0LDYgKzg4NCw5IEBAIHR5cGVkZWYgc3Ry dWN0IEJsb2NrTGltaXRzIHsKPiDCoAo+IMKgwqDCoMKgIC8qIG1heGltdW0gbnVtYmVyIG9mIGFj dGl2ZSB6b25lcyAqLwo+IMKgwqDCoMKgIGludDY0X3QgbWF4X2FjdGl2ZV96b25lczsKPiArCj4g K8KgwqDCoCAvKiBhcnJheSBvZiB3cml0ZSBwb2ludGVycycgbG9jYXRpb24gb2YgZWFjaCB6b25l IGluIHRoZSB6b25lZCBkZXZpY2UuICovCj4gK8KgwqDCoCBCbG9ja1pvbmVXcHMgKndwczsKPiDC oH0gQmxvY2tMaW1pdHM7Cj4gwqAKPiDCoHR5cGVkZWYgc3RydWN0IEJkcnZPcEJsb2NrZXIgQmRy dk9wQmxvY2tlcjsKCg==