Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp1867070rwd; Mon, 15 May 2023 04:20:48 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5ZRYjKyZBGP9NqrO+IZClN8f2kO2I+5Q9HfLafJie3hqyiFiKDMTMAPLMesDnXD6Km8HWm X-Received: by 2002:a05:6a00:15c3:b0:646:6e40:b421 with SMTP id o3-20020a056a0015c300b006466e40b421mr30618525pfu.1.1684149648251; Mon, 15 May 2023 04:20:48 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1684149648; cv=pass; d=google.com; s=arc-20160816; b=xs7xPX5pLqFM337Gu+it/EdiFWC6qGxa7sBQwJEgfU7PE/rx1fLnxIKPVySkH6qntg FKtQwtsIEf4Ef8tTvIdutC0mNvRWCzp8zNLK1aOpn5eSKWZFQcBurJLmMidv83kwLlLq zZ39B9aWHFTyYuB91I7VYJzcCbya4jEllN0TtQRLYE/7dswcDGY12FXIZrvJpu9xLKRW lBEx4jpM5Bf5T7KiN3qAl72pesonzx4ZeFynmXF5uZLPe83A6bypGGcQdD49ATEwQoBY /QWN57pPkpSOSAnj8pmE6jI6mRFj5556iPdq7ED1GBslvd15CQ2H6Tpmk58lEmZiujSF HqUA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=qdv45QcxL5ejcVZssolUNVdAV8m1r8gPjBb6oBZeeqg=; b=UdDb45O3mLPk13edEbN60Ml7zNizqH6rYLuY9rXDgpFhuzg2eUTylJBOvXuzDeugxP S21b8ai3iCMLx/tA4M7/I8mLW7/U5wjKQeOQrzszopSBX5i5Uvd46njNSjKYEaZgeuYk RBdM5dwktCSsm/jhtmhdgVob+yp+TtTDJRiaFoMwHY0mZKcNkLldX2WHeQJkXVm7Juap eOMHpneD7oPqSUYSxBCkkJOE+nZ2+tHExkJxKUaj3EgjVMQl7AhbSOy1HuXoMnheAPxN tZpZIXWHYcC4IQiZF2bIvii/oKvyrCplQJt8JxaopykL0iNBu5zxT1mQFOOdHBqqznmd hpZw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b="hj/TUkP0"; arc=pass (i=1 spf=pass spfdomain=nvidia.com dkim=pass dkdomain=nvidia.com dmarc=pass fromdomain=nvidia.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=nvidia.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k18-20020a637b52000000b0050300b179f3si5186979pgn.444.2023.05.15.04.20.35; Mon, 15 May 2023 04:20:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b="hj/TUkP0"; arc=pass (i=1 spf=pass spfdomain=nvidia.com dkim=pass dkdomain=nvidia.com dmarc=pass fromdomain=nvidia.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241223AbjEOLSb (ORCPT + 99 others); Mon, 15 May 2023 07:18:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241209AbjEOLS0 (ORCPT ); Mon, 15 May 2023 07:18:26 -0400 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2062.outbound.protection.outlook.com [40.107.223.62]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE4E1172D; Mon, 15 May 2023 04:18:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KHhQI8NgVWn2O/9TJmuBKVcePcTtxZp7mndVOn3s0OkaYPuLnVk4BHrmo8nJpuXZ7EnsRbVojnK916cbnc9FWNWLbO3UpzOnlvCRKwc1DDhR4BGBZAgyx1OaEpDDK3q4s64DjBQBdAgudTEYV30ROyyEKF+ptSXCi5H0AKO9UCr9mkZU2OHPbszcTZbfsymgZdqtrANPXMoeYT21nrYze2SJxgeaftMBvUloh/5oVylGLPyocksHG6rzu7klvhGEMhmKUYUCmv9TDxuwXFgRvh4kYjd0oAGr3VVIDBKUDhG+pS9J0Jf0R6XINH+uGqL5He/Bnwwv4M6RtNbGTnNtEA== 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=qdv45QcxL5ejcVZssolUNVdAV8m1r8gPjBb6oBZeeqg=; b=jXwklR2Vzl0OSxOZcxep/BIZ93f1grzl0WGlGep4AiFVq0Zi3na43hY+y+GTvuXoiEFyBX9MaL/BNYzHfvbtOBhqEcgmdsCPDWtHy6xdWtJiA2IxulGxXe5PQc3GgyYu2hhVbrqRWUSdmEIJZTqg8SPp0k7Wg0k4Ytuk3+dODH7zsQwfzUVLHAsMQeAhNmWQqqzUGoLG0O7J+QHTorS32+Tm5RvxNxe3GSugcfNIsZkvmUXaE7QtrHK3VfR3cnkWpYpdOiucTm7U+FuPNM0ov1MAruoRGf1q+Ik2/j+gp5JQPbVkFNz8D7mven+84Y3eSRJqDQScNysnibnHy5zjYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qdv45QcxL5ejcVZssolUNVdAV8m1r8gPjBb6oBZeeqg=; b=hj/TUkP0hOJAok1OAaKec+p4fRwNdQi7Ka4c0/ugsryCUYsgsC9QLxsaY8dkYEfpz0Bj9FP6bvoQG6s6rAXq4x0naFe95VpnFFmYpO2ar9FgA1bJ1+sXRYzcW6+cp0Ndqihzw8DEz8wlZtk3ynDwo/M8QFx1ruSk71QecSj03QHH/cWi6Eeh6hbq8y+AqwEyRnO+7VkkECGVmHZd/ZgvZh1+scXl1dd5DIRTeoU/m+l27pqUmmFGEE6llMwHD686jqWmpIP7V+Xcgeb6dRGrsM5PzXplHgKQvIcD3HSI05rkpxFj5634fxVRzSzLuKlYLloXgPBd+VAWSLi8HqAlIQ== Received: from BY5PR12MB3763.namprd12.prod.outlook.com (2603:10b6:a03:1a8::24) by CH0PR12MB5202.namprd12.prod.outlook.com (2603:10b6:610:b9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.30; Mon, 15 May 2023 11:18:17 +0000 Received: from BY5PR12MB3763.namprd12.prod.outlook.com ([fe80::8634:5f0e:cf09:a084]) by BY5PR12MB3763.namprd12.prod.outlook.com ([fe80::8634:5f0e:cf09:a084%6]) with mapi id 15.20.6387.030; Mon, 15 May 2023 11:18:17 +0000 From: Ankit Agrawal To: =?utf-8?B?SE9SSUdVQ0hJIE5BT1lBKOWggOWPo+OAgOebtOS5nyk=?= CC: Jason Gunthorpe , "alex.williamson@redhat.com" , "maz@kernel.org" , "oliver.upton@linux.dev" , Aniket Agashe , Neo Jia , Kirti Wankhede , "Tarun Gupta (SW-GPU)" , Vikram Sethi , Andy Currid , Alistair Popple , John Hubbard , Dan Williams , "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-mm@kvack.org" Subject: RE: [PATCH v3 3/6] mm: handle poisoning of pfn without struct pages Thread-Topic: [PATCH v3 3/6] mm: handle poisoning of pfn without struct pages Thread-Index: AQHZZ+jAHRtvAqUcxki+zdm4mfYsfa9R580AgAmA9LA= Date: Mon, 15 May 2023 11:18:16 +0000 Message-ID: References: <20230405180134.16932-1-ankita@nvidia.com> <20230405180134.16932-4-ankita@nvidia.com> <20230509095022.GA4169412@hori.linux.bs1.fc.nec.co.jp> In-Reply-To: <20230509095022.GA4169412@hori.linux.bs1.fc.nec.co.jp> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR12MB3763:EE_|CH0PR12MB5202:EE_ x-ms-office365-filtering-correlation-id: b90102ca-2ec0-47bd-bd5c-08db55361483 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nWc26cN12Vw0JMUpCggVRkypvxKRPFs0BpH593VlH22aQ+vPz4YRunqVdoG2ADwhikIiqP1cbinXYezEC8fpUr+wkHuxew30uGmMDpmU6XAGgHPVyQLu1Ag+yssiS8xZe1tS5tOErV/Qjg25mQiGUgRoZXJmHkL0NwFem+6Og7O+gqPV70MYxsQALV1BHio8sWWx6xyT3gIgIz1lPusJZGt1BqsRzlnII715L65gqlSJU7OCzKQyoV1RJ/8g6/13Bh+nZW4ULRBvJ37InQ5X5AoNG7I7FnXbdqgAbrikkckaDblSJrUO9HYHn42HK1ger6OeoMpvA9m+yzCCuE8fB8mEfohRf9U1gsWK8LZUbvG8xSukNzMI2NrfESiCBjM4QYSpsJ9xCXdXJFWd8VCz6bOnEdd6ZD11ITOcvVP2YHdmpELdwGN+4POOdZrTS5MXAvi7EVj2F6vTK5j1lrb4/73L32fsE4LAItIEXZF6zStrsHquUndJNn3a/gr+X2iKnFHpQyrA+eY1NBT/XE81AdX6TiL39s+HVH1iXaobPEKx3iqDdOT+1HzY4X/RMwhPFSZyT5hb1zezHQcY6O6xMkAHE111lz/a6NBJddmxre03wQAHTK+4oCgJHuHMd+sg x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB3763.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(396003)(366004)(376002)(136003)(346002)(39860400002)(451199021)(71200400001)(122000001)(38100700002)(55016003)(186003)(26005)(33656002)(53546011)(9686003)(83380400001)(30864003)(6506007)(2906002)(41300700001)(52536014)(5660300002)(8936002)(8676002)(478600001)(38070700005)(66446008)(7696005)(66476007)(66556008)(66946007)(76116006)(64756008)(316002)(4326008)(86362001)(6916009)(54906003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?b0dWNXI3S3QyUGtqeHJmY1kxYkd6RWd5YzFoa25oQkJOUzE3cUd4Z2l2QzVw?= =?utf-8?B?ejRtdDRETWdsV0pNVndYSm0xVzFHUWk5VFFEMkx3K0F3WEt4T1I4NHlnbW8x?= =?utf-8?B?Y3JOSGNKRnA4bHYraXRyby9Vd0FMaHQxNnAzRGxUZEYvaXkxWUIrZDBXWkdr?= =?utf-8?B?MlNuNDB4eTEzb0piNlVweldQQlVCbzFnT2k5d1d5ZFJaTTkvZFE1akxxQk9T?= =?utf-8?B?Y3lzNDlxVm5ya3NFUVhRR00xUTQzTmNtL0pyY2xVdGNjSitJa2NFc2xEUjNC?= =?utf-8?B?SmRPMWtGYmltSis4eUIyekYzTVVnRXFtZ1JMZlhYNGVLUFp5K0NDMzdJUUh5?= =?utf-8?B?U3Fibnpnd0xScVJhRi9RalphNk15ZFlESnpReWlDOVdONnZQQlV5SndNMmw1?= =?utf-8?B?anFRc2JzMy9OMktIZHBMWFM3bk1HcVhxUkFpc0Zwc2lPeC9ueFlaQ1pCaGhj?= =?utf-8?B?UjFmUXlHQ2JoSElNWEEvMjdKMEdZUkFjUm5DVUMzNnl4WWUxbjlSTVc5bFI2?= =?utf-8?B?WE4xQ0NsMzc4d0owRzQ5emljQmNwbHlLb25yWjlZaXYyS0RYNVdDc1ZPL3h6?= =?utf-8?B?Z3ZKY21DU1BJN2swNHdIeGRVVWxWN2JJa3FSVDhOeEpaTlNWaE03RGxTL0hw?= =?utf-8?B?R0FkL1JXRHJTS3FRQ3hYRFg0WkhJZURJQ21xZjJBTU1Ga2ZsMThlM1JmREZ1?= =?utf-8?B?WHhYNGJXYks0Q1h0eFVoNnZqVlhmUXRIQ0ZpMldNNmFYTWN2TjczWmV6bUdI?= =?utf-8?B?WXQ1d3MyanNFZUxsMzExQ2VCNEowRnpTcUYza1c3T2NMQlhYSTlCY2RlcERj?= =?utf-8?B?VlNOZnBmS0NYY3ZXWldjdTAxVnlBRm9OejR4VTBieDg0cUd1d1EyVVZkQ243?= =?utf-8?B?d2FORG55Um14MTNhZTU3dHRQTTY2aEROSkxLTFBkTHZuKzN0UGZJUEZWUFBu?= =?utf-8?B?M2poSStDWlFaM0RVcXRCcmdoamJ3NUdTRGFIRm1EYzIxVHRNMEdJNnZZWDVk?= =?utf-8?B?SSs2c2llaGRBTCszVW8vbXRpZUh2UUVhUWpnZTdDUm5rRHVvRVV1QWpvRi9U?= =?utf-8?B?T2xtamY4UGlQYjc5UUM4OVhzdW5vQ0lGRnlaM0dRNmdzK3ZHOVpuV1h0d09C?= =?utf-8?B?aHNaaVBNK1Fvd3VBbjdKdzZjZGJ2Tm82WTd5TzJ0MnJzQ0VwZmRhL3dZN1Vs?= =?utf-8?B?TXhQRmNPeHk0SldUVkFkRlk5SDFwa29YektiMEhZNjEzcHVrT056OUZURGM1?= =?utf-8?B?eWhOekZCU3FrK2RZUytFNmowcGR2WmVZMXhBRTY2TEdqRmtJZi9na2VWREg0?= =?utf-8?B?amE0N1RpWkx1THVWY09adEo5ZFEvelRFTDhYbjhIekhrdlVSVHI0ZUNoUzVh?= =?utf-8?B?cmE2QUMyU3l3cFFFZFZldUZpNWFjUVY3S05RNVNrTTdMZGxYV09wOHZLUk1D?= =?utf-8?B?cWwzVzBabXJSRXQ3WG9nWk4vRjJUTEVVNlJxb2pwdnptdW45VEt6ajdVT2Vk?= =?utf-8?B?Q3BhWVFyNkJsaGdnNkZhWmc2cHZHWXg2b0RQZWVxdWtqZkk2alFhaktkdlhV?= =?utf-8?B?Unp1S1FGOHIxUGsvNUltdkY3aUk1eWgycis4WFc4eVIwblRoUGlTU09UVjND?= =?utf-8?B?YWs4RlM4SW5Xb1FZOW9HUmsrZGJmWkMzN3VnQjl5Tkg3dWVVWU5lYnJFUjNO?= =?utf-8?B?a3VNRDRZTVovUll6UEZ5S1VLSmYvNjE3ZkFBSW5kWGVrWU1XemQ0WE5DK21C?= =?utf-8?B?VzlFZFdFSmQxOVVSREtKK3MwNHZiYU9FY3JDdGJmVlpPbHZOZzQxNTNXdzlQ?= =?utf-8?B?MTJlT3cxT3RiZ0pWUW5DYW0rYUhmQ3U0R3JEM3QwZm1ONWZ6WkdXYllyem5a?= =?utf-8?B?NzhXNERqSXVmM1hkWkp6enBRWVZ0ZkYzSGVYNmZjd2hlV0ZuZ3V3cEJiY0pB?= =?utf-8?B?MW5yWXRLbGJRNGxqcFhFK1dQVkJSbVF1VU5MY3IvUnYvOWFqb3F0T25kelo0?= =?utf-8?B?VHJhaXJDRXRuMzJuand1NlpEOGFCU05YSk1GdGJyMUlSaEV3ZHdQZFB5bUQ3?= =?utf-8?B?MHNRT08xdTJsSWRlZElzS0RCZG5ZU2Y2MGlWSnRPMnBaUUdjc0djSVBZNlpr?= =?utf-8?Q?JgJLlEar2UAiNjU0cnWov99Rv?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB3763.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b90102ca-2ec0-47bd-bd5c-08db55361483 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2023 11:18:16.3570 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: poSddg0REYIZsgAH5hHL1A0LkzL6AsSA0Dsmy+z+Xq1EXHnRpo0LIUAMfnpy22lfph3QKFIAdczIV18cjO6OvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5202 X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhhbmtzLCBOYW95YSBmb3IgcmV2aWV3aW5nIHRoZSBwYXRjaC4gQ29tbWVudHMgaW5saW5lLg0K DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEhPUklHVUNISSBOQU9ZQSjl oIDlj6PjgIDnm7TkuZ8pIDxuYW95YS5ob3JpZ3VjaGlAbmVjLmNvbT4NCj4gU2VudDogVHVlc2Rh eSwgTWF5IDksIDIwMjMgMjo1MSBBTQ0KPiBUbzogQW5raXQgQWdyYXdhbCA8YW5raXRhQG52aWRp YS5jb20+DQo+IENjOiBKYXNvbiBHdW50aG9ycGUgPGpnZ0BudmlkaWEuY29tPjsgYWxleC53aWxs aWFtc29uQHJlZGhhdC5jb207DQo+IG1hekBrZXJuZWwub3JnOyBvbGl2ZXIudXB0b25AbGludXgu ZGV2OyBBbmlrZXQgQWdhc2hlDQo+IDxhbmlrZXRhQG52aWRpYS5jb20+OyBOZW8gSmlhIDxjamlh QG52aWRpYS5jb20+OyBLaXJ0aSBXYW5raGVkZQ0KPiA8a3dhbmtoZWRlQG52aWRpYS5jb20+OyBU YXJ1biBHdXB0YSAoU1ctR1BVKSA8dGFyZ3VwdGFAbnZpZGlhLmNvbT47DQo+IFZpa3JhbSBTZXRo aSA8dnNldGhpQG52aWRpYS5jb20+OyBBbmR5IEN1cnJpZCA8YWN1cnJpZEBudmlkaWEuY29tPjsN Cj4gQWxpc3RhaXIgUG9wcGxlIDxhcG9wcGxlQG52aWRpYS5jb20+OyBKb2huIEh1YmJhcmQNCj4g PGpodWJiYXJkQG52aWRpYS5jb20+OyBEYW4gV2lsbGlhbXMgPGRhbndAbnZpZGlhLmNvbT47DQo+ IGt2bUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4 LWFybS0NCj4ga2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LW1tQGt2YWNrLm9yZw0K PiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDMvNl0gbW06IGhhbmRsZSBwb2lzb25pbmcgb2YgcGZu IHdpdGhvdXQgc3RydWN0IHBhZ2VzDQo+IA0KPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24g b3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiANCj4gDQo+IE9uIFdlZCwgQXByIDA1LCAy MDIzIGF0IDExOjAxOjMxQU0gLTA3MDAsIGFua2l0YUBudmlkaWEuY29tIHdyb3RlOg0KPiA+IEZy b206IEFua2l0IEFncmF3YWwgPGFua2l0YUBudmlkaWEuY29tPg0KPiA+DQo+ID4gVGhlIGtlcm5l bCBNTSBkb2VzIG5vdCBjdXJyZW50bHkgaGFuZGxlIEVDQyBlcnJvcnMgLyBwb2lzb24gb24gYQ0K PiA+IG1lbW9yeSByZWdpb24gdGhhdCBpcyBub3QgYmFja2VkIGJ5IHN0cnVjdCBwYWdlcy4gSW4g dGhpcyBzZXJpZXMsDQo+ID4gbWFwcGluZyByZXF1ZXN0IGZyb20gUUVNVSB0byB0aGUgZGV2aWNl IG1lbW9yeSBpcyBleGVjdXRlZCB1c2luZw0KPiByZW1hcF9wZm5fcmFuZ2UoKS4NCj4gPiBIZW5j ZSBhZGRlZCBhIG5ldyBtZWNoYW5pc20gdG8gaGFuZGxlIG1lbW9yeSBmYWlsdXJlIG9uIHN1Y2gg bWVtb3J5Lg0KPiA+DQo+ID4gTWFrZSBrZXJuZWwgTU0gZXhwb3NlIGEgZnVuY3Rpb24gdG8gYWxs b3cgbW9kdWxlcyBtYW5hZ2luZyB0aGUgZGV2aWNlDQo+ID4gbWVtb3J5IHRvIHJlZ2lzdGVyIGEg ZmFpbHVyZSBmdW5jdGlvbiBhbmQgdGhlIGFkZHJlc3Mgc3BhY2UgdGhhdCBpcw0KPiA+IGFzc29j aWF0ZWQgd2l0aCB0aGUgZGV2aWNlIG1lbW9yeS4gTU0gbWFpbnRhaW5zIHRoaXMgaW5mb3JtYXRp b24gYXMNCj4gPiBpbnRlcnZhbCB0cmVlLiBUaGUgcmVnaXN0ZXJlZCBtZW1vcnkgZmFpbHVyZSBm dW5jdGlvbiBpcyB1c2VkIGJ5IE1NIHRvDQo+ID4gbm90aWZ5IHRoZSBtb2R1bGUgb2YgdGhlIFBG Tiwgc28gdGhhdCB0aGUgbW9kdWxlIG1heSB0YWtlIGFueSByZXF1aXJlZA0KPiA+IGFjdGlvbi4g VGhlIG1vZHVsZSBmb3IgZXhhbXBsZSBtYXkgdXNlIHRoZSBpbmZvcm1hdGlvbiB0byB0cmFjayB0 aGUNCj4gPiBwb2lzb25lZCBwYWdlcy4NCj4gPg0KPiA+IEluIHRoaXMgaW1wbGVtZW50YXRpb24s IGtlcm5lbCBNTSBmb2xsb3dzIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2UNCj4gPiAobW9zdGx5KSBz aW1pbGFyIHRvIHRoZSBtZW1vcnlfZmFpbHVyZSgpIGhhbmRsZXIgZm9yIHN0cnVjdCBwYWdlIGJh Y2tlZA0KPiBtZW1vcnk6DQo+ID4gMS4gbWVtb3J5X2ZhaWx1cmUoKSBpcyB0cmlnZ2VyZWQgb24g cmVjZXB0aW9uIG9mIGEgcG9pc29uIGVycm9yLiBBbg0KPiA+IGFic2VuY2Ugb2Ygc3RydWN0IHBh Z2UgaXMgZGV0ZWN0ZWQgYW5kIGNvbnNlcXVlbnRseSBtZW1vcnlfZmFpbHVyZV9wZm4NCj4gPiBp cyBleGVjdXRlZC4NCj4gPiAyLiBtZW1vcnlfZmFpbHVyZV9wZm4oKSBjYWxsIHRoZSBuZXdseSBp bnRyb2R1Y2VkIGZhaWx1cmUgaGFuZGxlcg0KPiA+IGV4cG9zZWQgYnkgdGhlIG1vZHVsZSBtYW5h Z2luZyB0aGUgcG9pc29uZWQgbWVtb3J5IHRvIG5vdGlmeSBpdCBvZiB0aGUNCj4gPiBwcm9ibGVt YXRpYyBQRk4uDQo+ID4gMy4gbWVtb3J5X2ZhaWx1cmVfcGZuKCkgdW5tYXBzIHRoZSBzdGFnZS0y IG1hcHBpbmcgdG8gdGhlIFBGTi4NCj4gPiA0LiBtZW1vcnlfZmFpbHVyZV9wZm4oKSBjb2xsZWN0 cyB0aGUgcHJvY2Vzc2VzIG1hcHBlZCB0byB0aGUgUEZOLg0KPiA+IDUuIG1lbW9yeV9mYWlsdXJl X3BmbigpIHNlbmRzIFNJR0JVUyAoQlVTX01DRUVSUl9BTykgdG8gYWxsIHRoZQ0KPiA+IHByb2Nl c3NlcyBtYXBwaW5nIHRoZSBmYXVsdHkgUEZOIHVzaW5nIGtpbGxfcHJvY3MoKS4NCj4gPiA2LiBB biBhY2Nlc3MgdG8gdGhlIGZhdWx0eSBQRk4gYnkgYW4gb3BlcmF0aW9uIGluIFZNIGF0IGEgbGF0 ZXIgcG9pbnQNCj4gPiBvZiB0aW1lIGlzIHRyYXBwZWQgYW5kIHVzZXJfbWVtX2Fib3J0KCkgaXMg Y2FsbGVkLg0KPiA+IDcuIHVzZXJfbWVtX2Fib3J0KCkgY2FsbHMgX19nZm5fdG9fcGZuX21lbXNs b3QoKSBvbiB0aGUgUEZOLCBhbmQgdGhlDQo+ID4gZm9sbG93aW5nIGV4ZWN1dGlvbiBwYXRoIGlz IGZvbGxvd2VkOiBfX2dmbl90b19wZm5fbWVtc2xvdCgpIC0+DQo+ID4gaHZhX3RvX3BmbigpIC0+ IGh2YV90b19wZm5fcmVtYXBwZWQoKSAtPiBmaXh1cF91c2VyX2ZhdWx0KCkgLT4NCj4gPiBoYW5k bGVfbW1fZmF1bHQoKSAtPiBoYW5kbGVfcHRlX2ZhdWx0KCkgLT4gZG9fZmF1bHQoKS4gZG9fZmF1 bHQoKSBpcw0KPiA+IGV4cGVjdGVkIHRvIHJldHVybiBWTV9GQVVMVF9IV1BPSVNPTiBvbiB0aGUg UEZOIChpdCBjdXJyZW50bHkgZG9lcyBub3QNCj4gPiBhbmQgaXMgZml4ZWQgYXMgcGFydCBvZiBh bm90aGVyIHBhdGNoIGluIHRoZSBzZXJpZXMpLg0KPiA+IDguIF9fZ2ZuX3RvX3Bmbl9tZW1zbG90 KCkgdGhlbiByZXR1cm5zIEtWTV9QRk5fRVJSX0hXUE9JU09OLA0KPiB3aGljaA0KPiA+IGNhdXNl IHRoZSBwb2lzb24gd2l0aCBTSUdCVVMgKEJVU19NQ0VFUlJfQVIpIHRvIGJlIHNlbnQgdG8gdGhl IFFFTVUNCj4gPiBwcm9jZXNzIHRocm91Z2gga3ZtX3NlbmRfaHdwb2lzb25fc2lnbmFsKCkuDQo+ ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbmtpdCBBZ3Jhd2FsIDxhbmtpdGFAbnZpZGlhLmNvbT4N Cj4gPiAtLS0NCj4gPiAgaW5jbHVkZS9saW51eC9tZW1vcnktZmFpbHVyZS5oIHwgIDIyICsrKysr DQo+ID4gIGluY2x1ZGUvbGludXgvbW0uaCAgICAgICAgICAgICB8ICAgMSArDQo+ID4gIGluY2x1 ZGUvcmFzL3Jhc19ldmVudC5oICAgICAgICB8ICAgMSArDQo+ID4gIG1tL21lbW9yeS1mYWlsdXJl LmMgICAgICAgICAgICB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0NCj4g PiAgNCBmaWxlcyBjaGFuZ2VkLCAxNTQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pICBj cmVhdGUgbW9kZQ0KPiA+IDEwMDY0NCBpbmNsdWRlL2xpbnV4L21lbW9yeS1mYWlsdXJlLmgNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbW9yeS1mYWlsdXJlLmgNCj4gPiBi L2luY2x1ZGUvbGludXgvbWVtb3J5LWZhaWx1cmUuaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRl eA0KPiA+IDAwMDAwMDAwMDAwMC4uOWE1Nzk5NjA5NzJhDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ICsrKyBiL2luY2x1ZGUvbGludXgvbWVtb3J5LWZhaWx1cmUuaA0KPiA+IEBAIC0wLDAgKzEsMjIg QEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8gI2lmbmRlZg0K PiA+ICtfTElOVVhfTUVNT1JZX0ZBSUxVUkVfSCAjZGVmaW5lIF9MSU5VWF9NRU1PUllfRkFJTFVS RV9IDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJ2YWxfdHJlZS5oPg0KPiA+ICsN Cj4gPiArc3RydWN0IHBmbl9hZGRyZXNzX3NwYWNlOw0KPiA+ICsNCj4gPiArc3RydWN0IHBmbl9h ZGRyZXNzX3NwYWNlX29wcyB7DQo+ID4gKyAgICAgdm9pZCAoKmZhaWx1cmUpKHN0cnVjdCBwZm5f YWRkcmVzc19zcGFjZSAqcGZuX3NwYWNlLCB1bnNpZ25lZA0KPiA+ICtsb25nIHBmbik7IH07DQo+ ID4gKw0KPiA+ICtzdHJ1Y3QgcGZuX2FkZHJlc3Nfc3BhY2Ugew0KPiA+ICsgICAgIHN0cnVjdCBp bnRlcnZhbF90cmVlX25vZGUgbm9kZTsNCj4gPiArICAgICBjb25zdCBzdHJ1Y3QgcGZuX2FkZHJl c3Nfc3BhY2Vfb3BzICpvcHM7DQo+ID4gKyAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBp bmc7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtpbnQgcmVnaXN0ZXJfcGZuX2FkZHJlc3Nfc3BhY2Uo c3RydWN0IHBmbl9hZGRyZXNzX3NwYWNlICpwZm5fc3BhY2UpOw0KPiA+ICt2b2lkIHVucmVnaXN0 ZXJfcGZuX2FkZHJlc3Nfc3BhY2Uoc3RydWN0IHBmbl9hZGRyZXNzX3NwYWNlDQo+ID4gKypwZm5f c3BhY2UpOw0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9MSU5VWF9NRU1PUllfRkFJTFVSRV9IICov DQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0u aCBpbmRleA0KPiA+IDFmNzk2Njc4MjRlYi4uZTNlZjUyZDNkNDVhIDEwMDY0NA0KPiA+IC0tLSBh L2luY2x1ZGUvbGludXgvbW0uaA0KPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvbW0uaA0KPiA+IEBA IC0zNTMwLDYgKzM1MzAsNyBAQCBlbnVtIG1mX2FjdGlvbl9wYWdlX3R5cGUgew0KPiA+ICAgICAg IE1GX01TR19CVUREWSwNCj4gPiAgICAgICBNRl9NU0dfREFYLA0KPiA+ICAgICAgIE1GX01TR19V TlNQTElUX1RIUCwNCj4gPiArICAgICBNRl9NU0dfUEZOLA0KPiANCj4gUGVyc29uYWxseSwgdGhl IGtleXdvcmQgIlBGTiIgbG9va3MgdG8gbWUgYSBsaXR0bGUgdG9vIGdlbmVyaWMsIHNvIEkgcHJl ZmVyDQo+ICJQRk5NQVAiIG9yICJQRk5fTUFQIiBiZWNhdXNlIG1lbW9yeV9mYWlsdXJlKCkgaXMg YW55d2F5IGNhbGxlZCB3aXRoDQo+IHBmbiByZWdhcmRsZXNzIG9mIGJlaW5nIGJhY2tlZCBieSBz dHJ1Y3QgcGFnZS4NCj4gDQoNCk1ha2VzIHNlbnNlLiBXaWxsIGNoYW5nZSB0byBQRk5NQVAuDQoN Cj4gPiAgICAgICBNRl9NU0dfVU5LTk9XTiwNCj4gPiAgfTsNCj4gPg0KPiA+IGRpZmYgLS1naXQg YS9pbmNsdWRlL3Jhcy9yYXNfZXZlbnQuaCBiL2luY2x1ZGUvcmFzL3Jhc19ldmVudC5oIGluZGV4 DQo+ID4gY2JkM2RkZDdjMzNkLi41YzYyYTRkMTcxNzIgMTAwNjQ0DQo+ID4gLS0tIGEvaW5jbHVk ZS9yYXMvcmFzX2V2ZW50LmgNCj4gPiArKysgYi9pbmNsdWRlL3Jhcy9yYXNfZXZlbnQuaA0KPiA+ IEBAIC0zNzMsNiArMzczLDcgQEAgVFJBQ0VfRVZFTlQoYWVyX2V2ZW50LA0KPiA+ICAgICAgIEVN ICggTUZfTVNHX0JVRERZLCAiZnJlZSBidWRkeSBwYWdlIiApICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ID4gICAgICAgRU0gKCBNRl9NU0dfREFYLCAiZGF4IHBhZ2UiICkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPiAgICAgICBFTSAoIE1GX01TR19VTlNQTElU X1RIUCwgInVuc3BsaXQgdGhwIiApICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsgICAg IEVNICggTUZfTVNHX1BGTiwgIm5vbiBzdHJ1Y3QgcGFnZSBwZm4iICkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICAgICAgIEVNZSAoIE1GX01TR19VTktOT1dO LCAidW5rbm93biBwYWdlIiApDQo+ID4NCj4gPiAgLyoNCj4gPiBkaWZmIC0tZ2l0IGEvbW0vbWVt b3J5LWZhaWx1cmUuYyBiL21tL21lbW9yeS1mYWlsdXJlLmMgaW5kZXgNCj4gPiBmYWU5YmFmM2Jl MTYuLjJjMWEyZWM0MmY3YiAxMDA2NDQNCj4gPiAtLS0gYS9tbS9tZW1vcnktZmFpbHVyZS5jDQo+ ID4gKysrIGIvbW0vbWVtb3J5LWZhaWx1cmUuYw0KPiA+IEBAIC0zOCw2ICszOCw3IEBADQo+ID4N Cj4gPiAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvbW0u aD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21lbW9yeS1mYWlsdXJlLmg+DQo+ID4gICNpbmNsdWRl IDxsaW51eC9wYWdlLWZsYWdzLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9rZXJuZWwtcGFnZS1m bGFncy5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvc2NoZWQvc2lnbmFsLmg+DQo+ID4gQEAgLTYy LDYgKzYzLDcgQEANCj4gPiAgI2luY2x1ZGUgPGxpbnV4L3BhZ2UtaXNvbGF0aW9uLmg+DQo+ID4g ICNpbmNsdWRlIDxsaW51eC9wYWdld2Fsay5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvc2htZW1f ZnMuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3Bmbl90Lmg+DQo+ID4gICNpbmNsdWRlICJzd2Fw LmgiDQo+ID4gICNpbmNsdWRlICJpbnRlcm5hbC5oIg0KPiA+ICAjaW5jbHVkZSAicmFzL3Jhc19l dmVudC5oIg0KPiA+IEBAIC0xMjIsNiArMTI0LDEwIEBAIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXANCj4gbWVtb3J5X2ZhaWx1cmVfYXR0cl9ncm91cCA9IHsNCj4gPiAgICAgICAuYXR0cnMg PSBtZW1vcnlfZmFpbHVyZV9hdHRyLA0KPiA+ICB9Ow0KPiA+DQo+ID4gK3N0YXRpYyBzdHJ1Y3Qg cmJfcm9vdF9jYWNoZWQgcGZuX3NwYWNlX2l0cmVlID0gUkJfUk9PVF9DQUNIRUQ7DQo+ID4gKw0K PiA+ICtzdGF0aWMgREVGSU5FX01VVEVYKHBmbl9zcGFjZV9sb2NrKTsNCj4gPiArDQo+ID4gIC8q DQo+ID4gICAqIFJldHVybiB2YWx1ZXM6DQo+ID4gICAqICAgMTogICB0aGUgcGFnZSBpcyBkaXNz b2x2ZWQgKGlmIG5lZWRlZCkgYW5kIHRha2VuIG9mZiBmcm9tIGJ1ZGR5LA0KPiA+IEBAIC0zOTks MTUgKzQwNSwxNCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZw0KPiBkZXZfcGFnZW1hcF9tYXBwaW5n X3NoaWZ0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLA0KPiA+ICAgKiBTY2hlZHVsZSBhIHBy b2Nlc3MgZm9yIGxhdGVyIGtpbGwuDQo+ID4gICAqIFVzZXMgR0ZQX0FUT01JQyBhbGxvY2F0aW9u cyB0byBhdm9pZCBwb3RlbnRpYWwgcmVjdXJzaW9ucyBpbiB0aGUgVk0uDQo+ID4gICAqDQo+ID4g LSAqIE5vdGU6IEBmc2RheF9wZ29mZiBpcyB1c2VkIG9ubHkgd2hlbiBAcCBpcyBhIGZzZGF4IHBh Z2UgYW5kIGENCj4gPiAtICogZmlsZXN5c3RlbSB3aXRoIGEgbWVtb3J5IGZhaWx1cmUgaGFuZGxl ciBoYXMgY2xhaW1lZCB0aGUNCj4gPiAtICogbWVtb3J5X2ZhaWx1cmUgZXZlbnQuIEluIGFsbCBv dGhlciBjYXNlcywgcGFnZS0+aW5kZXggYW5kDQo+ID4gLSAqIHBhZ2UtPm1hcHBpbmcgYXJlIHN1 ZmZpY2llbnQgZm9yIG1hcHBpbmcgdGhlIHBhZ2UgYmFjayB0byBpdHMNCj4gPiArICogTm90aWNl OiBAcGdvZmYgaXMgdXNlZCBlaXRoZXIgd2hlbiBAcCBpcyBhIGZzZGF4IHBhZ2Ugb3IgYSBQRk4g aXMNCj4gPiArIG5vdA0KPiA+ICsgKiBiYWNrZWQgYnkgc3RydWN0IHBhZ2UgYW5kIGEgZmlsZXN5 c3RlbSB3aXRoIGEgbWVtb3J5IGZhaWx1cmUNCj4gPiArIGhhbmRsZXINCj4gPiArICogaGFzIGNs YWltZWQgdGhlIG1lbW9yeV9mYWlsdXJlIGV2ZW50LiBJbiBhbGwgb3RoZXIgY2FzZXMsDQo+ID4g KyBwYWdlLT5pbmRleA0KPiANCj4gWW91IGFkZCBhIG5ldyBjYXNlIHVzaW5nIEBwZ29mZiwgYW5k IG5vdyB3ZSBoYXZlIDMgc3VjaCBjYXNlcywgc28gY291bGQNCj4geW91IHVwZGF0ZSB0aGUgY29t bWVudCB0byBpdGVtaXplIHRoZW0gKHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byByZWFkIGFuZA0K PiB1cGRhdGUpPw0KPiANCg0KU3VyZSwgd2lsbCBkbyBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KDQo+ ID4gKyAqIGFuZCBwYWdlLT5tYXBwaW5nIGFyZSBzdWZmaWNpZW50IGZvciBtYXBwaW5nIHRoZSBw YWdlIGJhY2sgdG8gaXRzDQo+ID4gICAqIGNvcnJlc3BvbmRpbmcgdXNlciB2aXJ0dWFsIGFkZHJl c3MuDQo+ID4gICAqLw0KPiA+IC1zdGF0aWMgdm9pZCBhZGRfdG9fa2lsbChzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRzaywgc3RydWN0IHBhZ2UgKnAsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHBn b2ZmX3QgZnNkYXhfcGdvZmYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLA0KPiA+IC0gICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp0b19raWxsKQ0KPiA+ICtzdGF0aWMg dm9pZCBhZGRfdG9fa2lsbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IHBhZ2UgKnAs IHBnb2ZmX3QgcGdvZmYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hLCBzdHJ1Y3QgbGlzdF9oZWFkDQo+ID4gKyp0b19raWxsKQ0KPiA+ICB7DQo+ ID4gICAgICAgc3RydWN0IHRvX2tpbGwgKnRrOw0KPiA+DQo+ID4gQEAgLTQxNywxMyArNDIyLDIw IEBAIHN0YXRpYyB2b2lkIGFkZF90b19raWxsKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLA0KPiBz dHJ1Y3QgcGFnZSAqcCwNCj4gPiAgICAgICAgICAgICAgIHJldHVybjsNCj4gPiAgICAgICB9DQo+ ID4NCj4gPiAtICAgICB0ay0+YWRkciA9IHBhZ2VfYWRkcmVzc19pbl92bWEocCwgdm1hKTsNCj4g PiAtICAgICBpZiAoaXNfem9uZV9kZXZpY2VfcGFnZShwKSkgew0KPiA+IC0gICAgICAgICAgICAg aWYgKGZzZGF4X3Bnb2ZmICE9IEZTREFYX0lOVkFMSURfUEdPRkYpDQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgIHRrLT5hZGRyID0gdm1hX3Bnb2ZmX2FkZHJlc3MoZnNkYXhfcGdvZmYsIDEsIHZt YSk7DQo+ID4gKyAgICAgaWYgKHZtYS0+dm1fZmxhZ3MgfCBQRk5fTUFQKSB7DQo+ID4gKyAgICAg ICAgICAgICB0ay0+YWRkciA9DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHZtYS0+dm1fc3Rh cnQgKyAoKHBnb2ZmIC0gdm1hLT52bV9wZ29mZikgPDwgUEFHRV9TSElGVCk7DQo+ID4gKyAgICAg ICAgICAgICB0ay0+c2l6ZV9zaGlmdCA9IFBBR0VfU0hJRlQ7DQo+ID4gKyAgICAgfSBlbHNlIGlm IChpc196b25lX2RldmljZV9wYWdlKHApKSB7DQo+ID4gKyAgICAgICAgICAgICBpZiAocGdvZmYg IT0gRlNEQVhfSU5WQUxJRF9QR09GRikNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdGstPmFk ZHIgPSB2bWFfcGdvZmZfYWRkcmVzcyhwZ29mZiwgMSwgdm1hKTsNCj4gPiArICAgICAgICAgICAg IGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdGstPmFkZHIgPSBwYWdlX2FkZHJlc3Nf aW5fdm1hKHAsIHZtYSk7DQo+ID4gICAgICAgICAgICAgICB0ay0+c2l6ZV9zaGlmdCA9IGRldl9w YWdlbWFwX21hcHBpbmdfc2hpZnQodm1hLCB0ay0+YWRkcik7DQo+ID4gLSAgICAgfSBlbHNlDQo+ ID4gKyAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgIHRrLT5hZGRyID0gcGFnZV9hZGRy ZXNzX2luX3ZtYShwLCB2bWEpOw0KPiA+ICAgICAgICAgICAgICAgdGstPnNpemVfc2hpZnQgPSBw YWdlX3NoaWZ0KGNvbXBvdW5kX2hlYWQocCkpOw0KPiA+ICsgICAgIH0NCj4gPg0KPiA+ICAgICAg IC8qDQo+ID4gICAgICAgICogU2VuZCBTSUdLSUxMIGlmICJ0ay0+YWRkciA9PSAtRUZBVUxUIi4g QWxzbywgYXMgQEAgLTYxNywxMw0KPiA+ICs2MjksMTIgQEAgc3RhdGljIHZvaWQgY29sbGVjdF9w cm9jc19maWxlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkDQo+ICp0b19raWxs LA0KPiA+ICAgICAgIGlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTsNCj4gPiAgfQ0KPiA+DQo+ ID4gLSNpZmRlZiBDT05GSUdfRlNfREFYDQo+IA0KPiBJdCBzZWVtcyB0aGF0IHlvdXIgbmV3IGRy aXZlciBpcyBidWlsdCBvbmx5IGluIGxpbWl0ZWQNCj4gY29uZmlndXJhdGlvbi9hcmNoaXRlY3R1 cmUsIHNvIGxvb3NlbmluZyB0aGUgY29uZGl0aW9uIGluc3RlYWQgb2Ygc2ltcGx5DQo+IHJlbW92 aW5nIG1pZ2h0IGJlIGJldHRlci4NCj4gDQo+ID4gIC8qDQo+ID4gICAqIENvbGxlY3QgcHJvY2Vz c2VzIHdoZW4gdGhlIGVycm9yIGhpdCBhIGZzZGF4IHBhZ2UuDQo+ID4gICAqLw0KPiA+IC1zdGF0 aWMgdm9pZCBjb2xsZWN0X3Byb2NzX2ZzZGF4KHN0cnVjdCBwYWdlICpwYWdlLA0KPiA+IC0gICAg ICAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHBnb2ZmX3QgcGdvZmYsDQo+ ID4gLSAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp0b19raWxsKQ0KPiA+ICtzdGF0aWMg dm9pZCBjb2xsZWN0X3Byb2NzX3Bnb2ZmKHN0cnVjdCBwYWdlICpwYWdlLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBwZ29m Zl90IHBnb2ZmLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgKnRvX2tpbGwpDQo+ID4gIHsNCj4gPiAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYTsNCj4gPiAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazsNCj4gPiBAQCAtNjQzLDcg KzY1NCw2IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RfcHJvY3NfZnNkYXgoc3RydWN0IHBhZ2UgKnBh Z2UsDQo+ID4gICAgICAgcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOw0KPiA+ICAgICAgIGlf bW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTsNCj4gPiAgfQ0KPiA+IC0jZW5kaWYgLyogQ09ORklH X0ZTX0RBWCAqLw0KPiA+DQo+ID4gIC8qDQo+ID4gICAqIENvbGxlY3QgdGhlIHByb2Nlc3NlcyB3 aG8gaGF2ZSB0aGUgY29ycnVwdGVkIHBhZ2UgbWFwcGVkIHRvIGtpbGwuDQo+ID4gQEAgLTgzNSw2 ICs4NDUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFjdGlvbl9wYWdlX3R5cGVzW10g PSB7DQo+ID4gICAgICAgW01GX01TR19CVUREWV0gICAgICAgICAgICAgICAgICA9ICJmcmVlIGJ1 ZGR5IHBhZ2UiLA0KPiA+ICAgICAgIFtNRl9NU0dfREFYXSAgICAgICAgICAgICAgICAgICAgPSAi ZGF4IHBhZ2UiLA0KPiA+ICAgICAgIFtNRl9NU0dfVU5TUExJVF9USFBdICAgICAgICAgICAgPSAi dW5zcGxpdCB0aHAiLA0KPiA+ICsgICAgIFtNRl9NU0dfUEZOXSAgICAgICAgICAgICAgICAgICAg PSAibm9uIHN0cnVjdCBwYWdlIHBmbiIsDQo+ID4gICAgICAgW01GX01TR19VTktOT1dOXSAgICAg ICAgICAgICAgICA9ICJ1bmtub3duIHBhZ2UiLA0KPiA+ICB9Ow0KPiA+DQo+ID4gQEAgLTE3NDUs NyArMTc1Niw3IEBAIGludCBtZl9kYXhfa2lsbF9wcm9jcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZQ0K PiA+ICptYXBwaW5nLCBwZ29mZl90IGluZGV4LA0KPiA+DQo+ID4gICAgICAgICAgICAgICBTZXRQ YWdlSFdQb2lzb24ocGFnZSk7DQo+ID4NCj4gPiAtICAgICAgICAgICAgIGNvbGxlY3RfcHJvY3Nf ZnNkYXgocGFnZSwgbWFwcGluZywgaW5kZXgsICZ0b19raWxsKTsNCj4gPiArICAgICAgICAgICAg IGNvbGxlY3RfcHJvY3NfcGdvZmYocGFnZSwgbWFwcGluZywgaW5kZXgsICZ0b19raWxsKTsNCj4g PiAgICAgICAgICAgICAgIHVubWFwX2FuZF9raWxsKCZ0b19raWxsLCBwYWdlX3RvX3BmbihwYWdl KSwgbWFwcGluZywNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgbWZf ZmxhZ3MpOw0KPiA+ICB1bmxvY2s6DQo+ID4gQEAgLTIwNTIsNiArMjA2Myw5OSBAQCBzdGF0aWMg aW50DQo+IG1lbW9yeV9mYWlsdXJlX2Rldl9wYWdlbWFwKHVuc2lnbmVkIGxvbmcgcGZuLCBpbnQg ZmxhZ3MsDQo+ID4gICAgICAgcmV0dXJuIHJjOw0KPiA+ICB9DQo+ID4NCj4gPiArLyoqDQo+ID4g KyAqIHJlZ2lzdGVyX3Bmbl9hZGRyZXNzX3NwYWNlIC0gUmVnaXN0ZXIgUEEgcmVnaW9uIGZvciBw b2lzb24gbm90aWZpY2F0aW9uLg0KPiA+ICsgKiBAcGZuX3NwYWNlOiBzdHJ1Y3R1cmUgY29udGFp bmluZyByZWdpb24gcmFuZ2UgYW5kIGNhbGxiYWNrIGZ1bmN0aW9uIG9uDQo+ID4gKyAqICAgICAg ICAgICAgIHBvaXNvbiBkZXRlY3Rpb24uDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24g aXMgY2FsbGVkIGJ5IGEga2VybmVsIG1vZHVsZSB0byByZWdpc3RlciBhIFBBIHJlZ2lvbg0KPiA+ ICthbmQNCj4gPiArICogYSBjYWxsYmFjayBmdW5jdGlvbiB3aXRoIHRoZSBrZXJuZWwuIE9uIGRl dGVjdGlvbiBvZiBwb2lzb24sIHRoZQ0KPiA+ICsgKiBrZXJuZWwgY29kZSB3aWxsIGdvIHRocm91 Z2ggYWxsIHJlZ2lzdGVyZWQgcmVnaW9ucyBhbmQgY2FsbCB0aGUNCj4gPiArICogYXBwcm9wcmlh dGUgY2FsbGJhY2sgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSByYW5nZS4gVGhlDQo+ID4g K2tlcm5lbA0KPiA+ICsgKiBtb2R1bGUgaXMgcmVzcG9uc2libGUgZm9yIHRyYWNraW5nIHRoZSBw b2lzb25lZCBwYWdlcy4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3NmdWxs eSByZWdpc3RlcmVkLA0KPiA+ICsgKiAgICAgICAgIC1FQlVTWSBpZiB0aGUgcmVnaW9uIGlzIGFs cmVhZHkgcmVnaXN0ZXJlZA0KPiA+ICsgKi8NCj4gPiAraW50IHJlZ2lzdGVyX3Bmbl9hZGRyZXNz X3NwYWNlKHN0cnVjdCBwZm5fYWRkcmVzc19zcGFjZSAqcGZuX3NwYWNlKSB7DQo+ID4gKyAgICAg aWYgKCFyZXF1ZXN0X21lbV9yZWdpb24ocGZuX3NwYWNlLT5ub2RlLnN0YXJ0IDw8IFBBR0VfU0hJ RlQsDQo+ID4gKyAgICAgICAgICAgICAocGZuX3NwYWNlLT5ub2RlLmxhc3QgLSBwZm5fc3BhY2Ut Pm5vZGUuc3RhcnQgKyAxKSA8PCBQQUdFX1NISUZULA0KPiAiIikpDQo+ID4gKyAgICAgICAgICAg ICByZXR1cm4gLUVCVVNZOw0KPiA+ICsNCj4gPiArICAgICBtdXRleF9sb2NrKCZwZm5fc3BhY2Vf bG9jayk7DQo+ID4gKyAgICAgaW50ZXJ2YWxfdHJlZV9pbnNlcnQoJnBmbl9zcGFjZS0+bm9kZSwg JnBmbl9zcGFjZV9pdHJlZSk7DQo+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZwZm5fc3BhY2VfbG9j ayk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1C T0xfR1BMKHJlZ2lzdGVyX3Bmbl9hZGRyZXNzX3NwYWNlKTsNCj4gDQo+IHJlZ2lzdGVyX3Bmbl9h ZGRyZXNzX3NwYWNlIGFuZCB1bnJlZ2lzdGVyX3Bmbl9hZGRyZXNzX3NwYWNlIGFyZSBub3QNCj4g Y29tcGlsZWQgaWYgQ09ORklHX01FTU9SWV9GQUlMVVJFIGlzIG5vdCBzZXQsIHNvIG1heWJlIHlv dXIgbmV3IGRyaXZlcg0KPiBtaWdodCBuZWVkIHRvIGRlcGVuZCBvbiB0aGlzIGNvbmZpZy4NCj4g DQoNClllYWgsIHRoYXQncyByaWdodC4gU2hhbGwgSSBwdXQgcGFydHMgb2YgY29kZSBpbiB0aGUg dmZpby1wY2kgdmFyaWFudCBkcml2ZXINCnJlbGF0ZWQgdG8gcG9pc29uIGhhbmRsaW5nIGFzIHBh cnQgb2YgI2lmZGVmIENPTkZJR19NRU1PUllfRkFJTFVSRS4NCk9yIHdvdWxkIHlvdSByYXRoZXIg cHJlZmVyIEkgbWFrZSBOVkdQVV9WRklPX1BDSSBjb25maWcgZGVwZW5kZW50DQpvbiBDT05GSUdf TUVNT1JZX0ZBSUxVUkU/DQoNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB1bnJlZ2lzdGVyX3Bm bl9hZGRyZXNzX3NwYWNlIC0gVW5yZWdpc3RlciBhIFBBIHJlZ2lvbiBmcm9tIHBvaXNvbg0KPiA+ ICsgKiBub3RpZmljYXRpb24uDQo+ID4gKyAqIEBwZm5fc3BhY2U6IHN0cnVjdHVyZSBjb250YWlu aW5nIHJlZ2lvbiByYW5nZSB0byBiZSB1bnJlZ2lzdGVyZWQuDQo+ID4gKyAqDQo+ID4gKyAqIFRo aXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGEga2VybmVsIG1vZHVsZSB0byB1bnJlZ2lzdGVyIHRo ZSBQQQ0KPiA+ICtyZWdpb24NCj4gPiArICogZnJvbSB0aGUga2VybmVsIGZyb20gcG9pc29uIHRy YWNraW5nLg0KPiA+ICsgKi8NCj4gPiArdm9pZCB1bnJlZ2lzdGVyX3Bmbl9hZGRyZXNzX3NwYWNl KHN0cnVjdCBwZm5fYWRkcmVzc19zcGFjZQ0KPiA+ICsqcGZuX3NwYWNlKSB7DQo+ID4gKyAgICAg bXV0ZXhfbG9jaygmcGZuX3NwYWNlX2xvY2spOw0KPiA+ICsgICAgIGludGVydmFsX3RyZWVfcmVt b3ZlKCZwZm5fc3BhY2UtPm5vZGUsICZwZm5fc3BhY2VfaXRyZWUpOw0KPiA+ICsgICAgIG11dGV4 X3VubG9jaygmcGZuX3NwYWNlX2xvY2spOw0KPiA+ICsgICAgIHJlbGVhc2VfbWVtX3JlZ2lvbihw Zm5fc3BhY2UtPm5vZGUuc3RhcnQgPDwgUEFHRV9TSElGVCwNCj4gPiArICAgICAgICAgICAgIChw Zm5fc3BhY2UtPm5vZGUubGFzdCAtIHBmbl9zcGFjZS0+bm9kZS5zdGFydCArIDEpIDw8DQo+ID4g K1BBR0VfU0hJRlQpOyB9IEVYUE9SVF9TWU1CT0xfR1BMKHVucmVnaXN0ZXJfcGZuX2FkZHJlc3Nf c3BhY2UpOw0KPiA+ICsNCj4gPiArc3RhdGljIGludCBtZW1vcnlfZmFpbHVyZV9wZm4odW5zaWdu ZWQgbG9uZyBwZm4sIGludCBmbGFncykgew0KPiA+ICsgICAgIHN0cnVjdCBpbnRlcnZhbF90cmVl X25vZGUgKm5vZGU7DQo+ID4gKyAgICAgaW50IHJjID0gLUVCVVNZOw0KPiA+ICsgICAgIExJU1Rf SEVBRCh0b2tpbGwpOw0KPiA+ICsNCj4gPiArICAgICBtdXRleF9sb2NrKCZwZm5fc3BhY2VfbG9j ayk7DQo+ID4gKyAgICAgLyoNCj4gPiArICAgICAgKiBNb2R1bGVzIHJlZ2lzdGVycyB3aXRoIE1N IHRoZSBhZGRyZXNzIHNwYWNlIG1hcHBpbmcgdG8gdGhlIGRldmljZQ0KPiBtZW1vcnkgdGhleQ0K PiA+ICsgICAgICAqIG1hbmFnZS4gSXRlcmF0ZSB0byBpZGVudGlmeSBleGFjdGx5IHdoaWNoIGFk ZHJlc3Mgc3BhY2UgaGFzIG1hcHBlZCB0bw0KPiB0aGlzDQo+ID4gKyAgICAgICogZmFpbGluZyBQ Rk4uDQo+ID4gKyAgICAgICovDQo+ID4gKyAgICAgZm9yIChub2RlID0gaW50ZXJ2YWxfdHJlZV9p dGVyX2ZpcnN0KCZwZm5fc3BhY2VfaXRyZWUsIHBmbiwgcGZuKTsgbm9kZTsNCj4gPiArICAgICAg ICAgIG5vZGUgPSBpbnRlcnZhbF90cmVlX2l0ZXJfbmV4dChub2RlLCBwZm4sIHBmbikpIHsNCj4g PiArICAgICAgICAgICAgIHN0cnVjdCBwZm5fYWRkcmVzc19zcGFjZSAqcGZuX3NwYWNlID0NCj4g PiArICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBwZm5fYWRk cmVzc19zcGFjZSwgbm9kZSk7DQo+ID4gKyAgICAgICAgICAgICByYyA9IDA7DQo+ID4gKw0KPiA+ ICsgICAgICAgICAgICAgLyoNCj4gPiArICAgICAgICAgICAgICAqIE1vZHVsZXMgbWFuYWdpbmcg dGhlIGRldmljZSBtZW1vcnkgbmVlZHMgdG8gYmUgY29udmV5ZWQNCj4gYWJvdXQgdGhlDQo+ID4g KyAgICAgICAgICAgICAgKiBtZW1vcnkgZmFpbHVyZSBzbyB0aGF0IHRoZSBwb2lzb25lZCBQRk4g Y2FuIGJlIHRyYWNrZWQuDQo+ID4gKyAgICAgICAgICAgICAgKi8NCj4gPiArICAgICAgICAgICAg IHBmbl9zcGFjZS0+b3BzLT5mYWlsdXJlKHBmbl9zcGFjZSwgcGZuKTsNCj4gPiArDQo+ID4gKyAg ICAgICAgICAgICBjb2xsZWN0X3Byb2NzX3Bnb2ZmKE5VTEwsIHBmbl9zcGFjZS0+bWFwcGluZywg cGZuLA0KPiA+ICsgJnRva2lsbCk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgdW5tYXBfbWFw cGluZ19yYW5nZShwZm5fc3BhY2UtPm1hcHBpbmcsIHBmbiA8PCBQQUdFX1NISUZULA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX1NJWkUsIDApOw0KPiA+ICsgICAg IH0NCj4gPiArICAgICBtdXRleF91bmxvY2soJnBmbl9zcGFjZV9sb2NrKTsNCj4gDQo+IElmIHJj ID09IDAgYXQgdGhpcyBwb2ludCwgdGhlIGdpdmVuIHBmbiBzZWVtcyB0byBiZSBvdXRzaWRlIHRo ZSBHUFUgbWVtb3J5LCBzbw0KPiB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIGFzICJJbnZhbGlk IGFkZHJlc3MiIGNhc2Ugd2hvc2UgY2hlY2sgaXMgcmVtb3ZlZA0KPiBieSBwYXRjaCA1LzYuICBT byBpdCBtaWdodCBiZSBiZXR0ZXIgdG8gc3BlcmF0ZSB0aGUgY2FzZSBmcm9tICJkbyBoYW5kbGlu ZyBmb3INCj4gbm9uIHN0cnVjdCBwYWdlIHBmbiIgY2FzZS4NCj4gDQoNClNvcnJ5IGRpZCB5b3Ug bWVhbiByYyAhPTAgaGVyZT8gQnV0IHllYWgsIHlvdSBhcmUgcmlnaHQgdGhhdCBJIHNob3VsZCBh ZGQgdGhlDQpjYXNlIGZvciBjaGVjayBpbiBjYXNlIGEgcmVnaW9uIHdpdGggdGhlIGRlc2lyZWQg UEZOIGlzbid0IGZvdW5kIGFib3ZlLg0KDQo+ID4gKw0KPiA+ICsgICAgIC8qDQo+ID4gKyAgICAg ICogVW5saWtlIFN5c3RlbS1SQU0gdGhlcmUgaXMgbm8gcG9zc2liaWxpdHkgdG8gc3dhcCBpbiBh IGRpZmZlcmVudA0KPiA+ICsgICAgICAqIHBoeXNpY2FsIHBhZ2UgYXQgYSBnaXZlbiB2aXJ0dWFs IGFkZHJlc3MsIHNvIGFsbCB1c2Vyc3BhY2UNCj4gPiArICAgICAgKiBjb25zdW1wdGlvbiBvZiBk aXJlY3QgUEZOIG1lbW9yeSBuZWNlc3NpdGF0ZXMgU0lHQlVTIChpLmUuDQo+ID4gKyAgICAgICog TUZfTVVTVF9LSUxMKQ0KPiA+ICsgICAgICAqLw0KPiA+ICsgICAgIGZsYWdzIHw9IE1GX0FDVElP Tl9SRVFVSVJFRCB8IE1GX01VU1RfS0lMTDsNCj4gPiArICAgICBraWxsX3Byb2NzKCZ0b2tpbGws IHRydWUsIGZhbHNlLCBwZm4sIGZsYWdzKTsNCj4gPiArDQo+ID4gKyAgICAgcHJfZXJyKCIlI2x4 OiByZWNvdmVyeSBhY3Rpb24gZm9yICVzOiAlc1xuIiwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgcGZuLCBhY3Rpb25fcGFnZV90eXBlc1tNRl9NU0dfUEZOXSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgYWN0aW9uX25hbWVbcmMgPyBNRl9GQUlMRUQgOiBNRl9SRUNPVkVSRURdKTsNCj4g DQo+IENvdWxkIHlvdSBjYWxsIGFjdGlvbl9yZXN1bHQoKSB0byBwcmludCBvdXQgdGhlIHN1bW1h cnkgbGluZS4NCj4gSXQgaGFzIHNvbWUgb3RoZXIgY29tbW9uIHRoaW5ncyBsaWtlIGFjY291bnRp bmcgYW5kIHRyYWNlcG9pbnQuDQo+IA0KDQpBY2suDQoNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJu IHJjOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgREVGSU5FX01VVEVYKG1mX211dGV4KTsN Cj4gPg0KPiA+ICAvKioNCj4gPiBAQCAtMjA5Myw2ICsyMTk3LDExIEBAIGludCBtZW1vcnlfZmFp bHVyZSh1bnNpZ25lZCBsb25nIHBmbiwgaW50IGZsYWdzKQ0KPiA+ICAgICAgIGlmICghKGZsYWdz ICYgTUZfU1dfU0lNVUxBVEVEKSkNCj4gPiAgICAgICAgICAgICAgIGh3X21lbW9yeV9mYWlsdXJl ID0gdHJ1ZTsNCj4gPg0KPiA+ICsgICAgIGlmICghcGZuX3ZhbGlkKHBmbikgJiYgIWFyY2hfaXNf cGxhdGZvcm1fcGFnZShQRk5fUEhZUyhwZm4pKSkgew0KPiA+ICsgICAgICAgICAgICAgcmVzID0g bWVtb3J5X2ZhaWx1cmVfcGZuKHBmbiwgZmxhZ3MpOw0KPiA+ICsgICAgICAgICAgICAgZ290byB1 bmxvY2tfbXV0ZXg7DQo+ID4gKyAgICAgfQ0KPiANCj4gVGhpcyBtaWdodCBicmVhayBleGlzaXRp bmcgY29ybmVyIGNhc2UgYWJvdXQgREFYIGRldmljZSwgc28gbWF5YmUgdGhpcyBzaG91bGQNCj4g YmUgY2hlY2tlZCBhZnRlciBjb25maXJtaW5nIHRoYXQgcGZuX3RvX29ubGluZV9wYWdlIHJldHVy bnMgTlVMTC4NCj4gDQoNClNvcnJ5LCBpdCBpc24ndCBjbGVhciB0byBtZSB3aGljaCBjb3JuZXIg Y2FzZSBjb3VsZCBicmVhayBoZXJlLiBDYW4gdGhlIHBmbl92YWxpZCgpDQpiZSBmYWxzZSBvbiBh IERBWCAgZGV2aWNlIHBhZ2U/DQoNCj4gPiArDQo+ID4gICAgICAgcCA9IHBmbl90b19vbmxpbmVf cGFnZShwZm4pOw0KPiA+ICAgICAgIGlmICghcCkgew0KPiA+ICAgICAgICAgICAgICAgcmVzID0g YXJjaF9tZW1vcnlfZmFpbHVyZShwZm4sIGZsYWdzKTsgQEAgLTIxMDYsNg0KPiA+ICsyMjE1LDkg QEAgaW50IG1lbW9yeV9mYWlsdXJlKHVuc2lnbmVkIGxvbmcgcGZuLCBpbnQgZmxhZ3MpDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGdtYXApOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5s b2NrX211dGV4Ow0KPiA+ICAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICByZXMgPSBtZW1vcnlfZmFpbHVyZV9wZm4ocGZuLCBmbGFncyk7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5sb2NrX211dGV4Ow0KPiANCj4gVGhpcyBw YXRoIGlzIGNob3NlbiB3aGVuIHBmbl92YWxpZCByZXR1cm5zIHRydWUsIHdoaWNoIGNhbm5vdCBo YXBwZW4gZm9yDQo+IEdQVSBtZW1vcnkncyBjYXNlPw0KPiANCg0KR29vZCBjYXRjaC4gVGhhdCBu ZWVkcyB0byBiZSByZW1vdmVkLg0KDQo+IFRoYW5rcywNCj4gTmFveWEgSG9yaWd1Y2hpDQo+IA0K PiA+ICAgICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAgcHJfZXJyKCIlI2x4OiBtZW1v cnkgb3V0c2lkZSBrZXJuZWwgY29udHJvbFxuIiwgcGZuKTsNCj4gPiAgICAgICAgICAgICAgIHJl cyA9IC1FTlhJTzsNCj4gPiAtLQ0KPiA+IDIuMTcuMQ0KDQpPbiBhIHNlcGFyYXRlIG5vdGUsIHdv dWxkIHlvdSByYXRoZXIgcHJlZmVyIHRoYXQgSSBzZXBhcmF0ZSBvdXQgdGhlIHBvaXNvbg0KaGFu ZGxpbmcgcGFydHMgKGkuZS4gMy82IGFuZCA1LzYpIGludG8gYSBzZXBhcmF0ZSBzZXJpZXM/IE9y IHNob3VsZCBJIGp1c3Qga2VlcCB0aGUNCndob2xlIHNlcmllcyB0b2dldGhlcj8NCg0KVGhhbmtz DQpBbmtpdCBBZ3Jhd2FsDQoNCg0K