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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D32B3C6FA82 for ; Mon, 26 Sep 2022 21:51:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231126AbiIZVvQ (ORCPT ); Mon, 26 Sep 2022 17:51:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38138 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230463AbiIZVvD (ORCPT ); Mon, 26 Sep 2022 17:51:03 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6811BB275F for ; Mon, 26 Sep 2022 14:51:01 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28QKsBjN005461; Mon, 26 Sep 2022 21:50:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=46YR9JhHtDA27UBdvHQ3N8F1siM86BXfb/CC8/binPY=; b=Y6qRnUSZuvDHZfn4i8ZnKc2nuGSQ6GHj13DNKmy0/p/iCEWeHPNo+3O5rsNj226Z0h37 fJutBJcI/pQ/s6pPUsCB+mFGuDB7mXNtRq0ErM4xoluLQAJbwbBc/B7hO0sI9vja2YV3 sKlFrAze6eXQHBidvG+FzZ/FotU88uNpj7xcyAv6Z5riM/hNneMmoqGyiiSESe3OcCa4 XHOKYc2Ohri3dD73jwSee6Q3yCniPspXKSctfeHrYKArw491fDv5ehgTClPwv0Wh1vqc lvRA6oE1hBZNWhKMq18YoDyTtb0wsN6E+pRa6GzQPXqzjBMr/gZo55WeMq3Qe7ATrNUB 2g== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jst0kmuw1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Sep 2022 21:50:57 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 28QK3jIX027947; Mon, 26 Sep 2022 21:50:56 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2173.outbound.protection.outlook.com [104.47.57.173]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3jtps4n7s7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Sep 2022 21:50:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kqh247b72iKfgoI/msRignuQJfbrvG13RsKIukINfcAtGfLsAeqFsJAeCo4HCvo3lzPJIq7nFCQGXCXL8jZIdVbIxdEZrB5+c4MspOdklmbznLsedR3EyFoGO+y1gHY6oXOLwUxg9FJqsulpttz+SdbN3qXLUzaHUbJnBceQ6haQvkK/5mFus/4IHIpk5BJZaEMcVX/yQZAcaAf+jeu8QpkxhwgnJKTuV3TBHNwI9ifcxl2ku01ImETUdSrml4bzZoux4up5KY9SBsfOER8aaSqVWNd2AJ5GjZMcSKGocAH9ApsuesjQQA3f3oDYxgP0dMJn1TKONjJNuqxd6oTL7g== 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=46YR9JhHtDA27UBdvHQ3N8F1siM86BXfb/CC8/binPY=; b=YOc+BBwZ8xGF13vlwZcju3AGIdeqtXSD0xOjpHdohzgrTjiVA2h295rpZkn8GdtKJrFRtdPFOJjIadZL063Sg6bUSJuxrsFogwGvFye0hLjFY8j2VxxBZtzSsp4UEgQ0qct5irXkqfrCvotR+fwSVUPQN0f3Cnw+nu2H5gk9cfDMy+XxxBPir0gsZbr0pxDqupRS9W7pmrFtORDUOmJ7/GEZBMFfJwPpSk48km8lcTLreOM44sWrv5O7P77jQCEaAeED5k9ZtkeUgVRm/Pg+QZ9iVMjRNAtRO1jRfwtqxZldcAC02py2Ls+6bej1KkZfZ1KS69JyB9GzQcpWB7PSjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=46YR9JhHtDA27UBdvHQ3N8F1siM86BXfb/CC8/binPY=; b=LKsJpXFGckjjlvtebcrPl2cvHIQy0gm7HrX42pTy+g+YpbKLHi16g7kjL7myrJvYWHpd5D34vaWavYjqKDY3BuSircGzm5myly0yzdZrKavwNr+5hLrmZ1RbzouEfhMkn3jwMGHEAp3L7RYbPWwLkXNf5aPhdLIg8sldVshXH+E= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5554.namprd10.prod.outlook.com (2603:10b6:303:141::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.26; Mon, 26 Sep 2022 21:50:53 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::1c59:e718:73e3:f1f9]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::1c59:e718:73e3:f1f9%3]) with mapi id 15.20.5654.025; Mon, 26 Sep 2022 21:50:53 +0000 From: Allison Henderson To: "djwong@kernel.org" CC: "linux-xfs@vger.kernel.org" Subject: Re: [PATCH v3 24/26] xfs: Add parent pointer ioctl Thread-Topic: [PATCH v3 24/26] xfs: Add parent pointer ioctl Thread-Index: AQHYzkaI9UdFmQJv5Ui/9FriRsnn8q3tvSKAgASKaoA= Date: Mon, 26 Sep 2022 21:50:53 +0000 Message-ID: References: <20220922054458.40826-1-allison.henderson@oracle.com> <20220922054458.40826-25-allison.henderson@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.1-0ubuntu1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR10MB4306:EE_|CO6PR10MB5554:EE_ x-ms-office365-filtering-correlation-id: e27ed66b-b677-4376-461a-08daa0092f83 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: P+9PY2MopN82S/S7CDE97Hq4ClyaL5wZ0+OgAoHuFZoHWwGpYQMIMtMq9NnU4GFFW7IGbjROfb6ASLiJ2653h+cnqkoAVnBOnzWdPhN90JXa/OohPXfVJpmH09Fj0gcyw1TRN2RIJgiSkYqJdf1W/mZJwjN5FGfoIDrEBjMyS7nCS2DhS2okRGpOd+keC+zzKpq5GI1zpcrKuyIvmyI1FpGupNE1lZRsIA3yKDwZM9LW6B3aY8pOG54Qb+Fjb96nuixoIghu3XIdjn+BGSNjXwYrbUt39qAoDcBxXusZJfgREaWJgxyKok4Bz0EGMMIq5SX6N4274Uj5HNXoLnvdVUncYwCmZG6awpVm3bQu47se6ZFGSmbB3xbH7TQEQ/GesV3JtkOA06jPQAM9KXGu/bettL9FM7K2EQGhLh+43Cqutw/wbTLN9LalVLLyFQdOqrKsc7n1pkqzxUtFKi1LPmb5hlxx5ah+sc/0pC1Nrn4Ne7KhOd+CeyfijIVIB0gVrqvqCoyCwosGU77urT1d69tyasrGva3nM9ZeiZ8GzWFSON75wUQdAtGq3ctlmszWir6IU9sbqtcB8H4J2ADDHNEQOBO8XRUqjhqlMfC8kP0+YV4i3U/BJZk1AUR/Bnvh4Aq+LwKKRr8QbUF2wArLKhllf7zGOZJR2q3AYg+myJHPpkHQUtyQe7BC8j+RsCfwaQG9WfCIbldLu0IT76KqIo/MpIRBr11ugJ4GPgAxMKxgBMf+dC5zjZBD5j9rDhQDHQDejD9wm/AC5P/QHIsnFg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(366004)(346002)(396003)(39860400002)(136003)(376002)(451199015)(5660300002)(66556008)(478600001)(6512007)(44832011)(71200400001)(6486002)(26005)(8936002)(38070700005)(36756003)(38100700002)(30864003)(6506007)(66946007)(83380400001)(41300700001)(76116006)(66446008)(64756008)(8676002)(4326008)(66476007)(316002)(2616005)(186003)(6916009)(86362001)(122000001)(2906002)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WktIR29ZNkNwNzZqa3E1dDJqaC9ZbGUvREhQSFM2SDgreG9FNTMwVGI4NjFV?= =?utf-8?B?b1h6RXFiTlA3UjY0TWVRWU5SRlhEK0FKeEJxdFBIaTI0UU1mMzNxT1lxTzRF?= =?utf-8?B?VzZ0a3FFZjFPc1JsekxOYkU0MDNWTXpjdVkza0dTRHpOYlJQUDJ3Z3lybU8w?= =?utf-8?B?WGs5MHdrazlVYmphTHRGSU5zZ0dYTmZ5bUpaZHd2YmVCU05qbFZFU2srQU14?= =?utf-8?B?NThwS2tvWlRIYkVJM3htZDlWam5peUp3MmMvdmQrbHA2T1hINTJ4RkRTSHFO?= =?utf-8?B?d3pWQ0VhMGxzNENQbm9kUHR0dDM4SHFJOXBZQmJ2Q2FROWh5UnVZcE5YUi8r?= =?utf-8?B?c00wWFVKL0dkcUNFa0FESGJjYXpMSUNJbmVUYnhVZjZqYUF5ZUY0NUsvYTV6?= =?utf-8?B?REt2WGNWeDUyU2U0bURFWEcyTU9YUDBJTVRRTnlUeVk0U2pIZlJzVm9BTXdP?= =?utf-8?B?T2ZkTG9vbm9Na0JOSXk4ZkMwd3J6MnkxUmFkSXhlWkw4bmozV3hqYmVVcFk3?= =?utf-8?B?TGEydDI5U3kzeUhVcHA4MllSUlpLc3htZjFzRDJyQkg4d29Eb3pwOUdyVVVm?= =?utf-8?B?S1JSUWdyVExEU3BGM0xHdGhLbWdUdHJiSU1pRXRvZXFPZmdDNmJDNkhML3p5?= =?utf-8?B?QU42ajViY2hQcTJzWFpmV0FuOStKVURJazFKUktWaTJ1L3drbEFhV0VGWHJu?= =?utf-8?B?YXdQaW1acTIyT2pnVERrT2dUeFVLay9za1FIUEM0NE1uRlQwbTNibDU0ekNa?= =?utf-8?B?RlZENlYvcUpXN3pBYmJDYTI3d0htY05kUzhGVXlMZ3o5bTFkNFE1eE1vd0lu?= =?utf-8?B?cmhHd0ZPY3hqdzhUU1hFMzB2SzY3Q0V4NjdxaC9vVW5hZG8vSnh3NElmWUJW?= =?utf-8?B?L0JFSVVnQVVuK1UySk9Za2NNREJrNEFENEhndEtGSFRJNWwxZWdIbFlLZGZu?= =?utf-8?B?dFlkTkdFTy9nNHF6cDE1QkdTUjZVcjZDQzVYNDhacjBjUGltVkx2cWthakR2?= =?utf-8?B?c2dMRzNoVmlXSThuODE1Z29MY1BHL2Y2UjYyTU9yNnR1Y2psZkVwOEZyODVF?= =?utf-8?B?WURyRjNGdFIwNmxmN2xwR1ZwYlg0aXRnaGJrQUVqQ1djSjVPZXBMZ3JpRExt?= =?utf-8?B?TWpHdDVsWVY2VW1LR01NRmVRUmFhSTR4S1REdlJUNGNxbVJNTlBWYmdFeEcx?= =?utf-8?B?UUVSVEJpTDBNSHhSZHg4Q042MnZSVFRmd0QyTWZvSndUSEZaRy8xNzNFcUlR?= =?utf-8?B?K20wdmtUWnluMWtXRXk1UGJPQXE4c1NEU0xXQ1lSMHFYSTNEUmMxVmVjZzcw?= =?utf-8?B?VGkvQWt2MWFiZTdxZjl5cTNNTnhNLytHck1FVDdCSDE2d2FuR0pEanNsc2JL?= =?utf-8?B?VXRwdDBWdmFQNVlBMDhBU0Y2V2RVdFZRYzVEYmhrRkY3eHB4amhubXVod2dv?= =?utf-8?B?a3lOUEpKZUpTS1Z3RXREUzR4UVRnVDJYRHpoNnM2UzNwcHV0WGJOUmh5RjI1?= =?utf-8?B?M0xDK2NkOXdyYi9wZHFYMkdiRUtvOFE1QjBPMlFEZFhJSExCNGZnc050S0VY?= =?utf-8?B?UUJqMnczMU93dnZvRUJURkVjZGhXendxUmxLK2ZjVk5kUHVNUGpxMDBPM3NR?= =?utf-8?B?TVFGQ2d4UjlNZitnVDJFekVHbURUQUR3cytYUFhLRUpvajFDaG1qc2d1T1pJ?= =?utf-8?B?V1gwbUVCcE9pZGUwVGFtTDdyTjExZTNSc1BOK2R4NWdZUHVDWjVJUEh3b3lK?= =?utf-8?B?c09DRWNLeTB0UHVFYUZUM3dTU3RBRVpWalRZQXEzNXJnM1NHYXR0eDd0Zjhr?= =?utf-8?B?ZlQzQ21pNnVPcHM1eEQ3Tmk4aXBxNFlNaU15dnZlMDRlNldSaHlrQk1pdUhE?= =?utf-8?B?NVNqNTVGRFYwSEJTZ3NCUXpSM2c5elVOT1hWd0ZiMWJoUGYzSStSeU5Ecm9E?= =?utf-8?B?WTh0SkI1cmtJc2VvSDJ6eTBwbzZjZ3NFVUd4UjBRa2ZBT1RNZ0FMZzZYUXZI?= =?utf-8?B?UXJvdTJzYlI1eHFqeVgyOGM3NEd1WEt3d1g4M1ZHYTRrSXh0Y1dNOUF6djM0?= =?utf-8?B?U3ArQWpMVDdxdlNKNVl5ZVVJNUk2L2lybFR6Z2crNmtXQWx1cFdwS2N3K1lL?= =?utf-8?B?UzJONExzUkNkZUltZURGNk1RNzllSHUyaG1xUHJlVFJnTnZjWWpRRGl2QThi?= =?utf-8?B?NHc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <71142B4BAD9F9D4C851201B261E0A60B@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e27ed66b-b677-4376-461a-08daa0092f83 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Sep 2022 21:50:53.8159 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qsgHh/VW8UVTrIUYu2b20MPEbq0kiKKQgFythzr6bFXiaFDoVyEub4SMVhjWwfgfJ2jo3AFeQtvM7oqfVH4aT6ISKvF35awnj6HYcDaXIJg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5554 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-26_10,2022-09-22_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 phishscore=0 suspectscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2209260134 X-Proofpoint-GUID: Wdk2hjcq4ubr_moZIhiUum8K-SbzmMPK X-Proofpoint-ORIG-GUID: Wdk2hjcq4ubr_moZIhiUum8K-SbzmMPK Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org T24gRnJpLCAyMDIyLTA5LTIzIGF0IDE3OjMwIC0wNzAwLCBEYXJyaWNrIEouIFdvbmcgd3JvdGU6 Cj4gT24gV2VkLCBTZXAgMjEsIDIwMjIgYXQgMTA6NDQ6NTZQTSAtMDcwMCwKPiBhbGxpc29uLmhl bmRlcnNvbkBvcmFjbGUuY29twqB3cm90ZToKPiA+IEZyb206IEFsbGlzb24gSGVuZGVyc29uIDxh bGxpc29uLmhlbmRlcnNvbkBvcmFjbGUuY29tPgo+ID4gCj4gPiBUaGlzIHBhdGNoIGFkZHMgYSBu ZXcgZmlsZSBpb2N0bCB0byByZXRyaWV2ZSB0aGUgcGFyZW50IHBvaW50ZXIgb2YKPiA+IGEKPiA+ IGdpdmVuIGlub2RlCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEFsbGlzb24gSGVuZGVyc29uIDxh bGxpc29uLmhlbmRlcnNvbkBvcmFjbGUuY29tPgo+IAo+IFRvIHJlY2FwIGZyb20gdGhlIHYyIHRo cmVhZDoKPiAKPiBQYXJlbnQgcG9pbnRlcnMgYXJlIGJhY2t3YXJkcyBsaW5rcyB0aHJvdWdoIHRo ZSBkaXJlY3RvcnkgdHJlZS7CoAo+IHhmc2R1bXAKPiBhbHJlYWR5IHJlY29yZHMgdGhlIGZvcndh cmQgbGlua3MgaW4gdGhlIGR1bXAgZmlsZS7CoCB4ZnNyZXN0b3JlIHVzZXMKPiB0aG9zZSBmb3J3 YXJkIGxpbmtzIHRvIHJlYnVpbGQgdGhlIGRpcmVjdG9yeSB0cmVlLCB3aGljaCByZWNyZWF0ZXMK PiB0aGUKPiBwYXJlbnQgcG9pbnRlcnMgYXV0b21hdGljYWxseS7CoCBIZW5jZSB3ZSBkb24ndCBu ZWVkIEFUVFJNVUxUSSB0bwo+IHJldmVhbAo+IChvciByZWNyZWF0ZSkgdGhlIHBhcmVudCBwb2lu dGVyIHhhdHRyczsgdGhlIGtlcm5lbCBkb2VzIHRoYXQgd2hlbiB3ZQo+IGNyZWF0ZSB0aGUgZGly ZWN0b3J5IHRyZWUuCj4gCj4gVGhlIHNlY29uZCByZWFzb24gSSBjYW4gdGhpbmsgb2Ygd2h5IHdl IGRvbid0IHdhbnQgdG8gZXhwb3NlIHRoZQo+IHBhcmVudAo+IHBvaW50ZXJzIHRocm91Z2ggdGhl IHhhdHRyIEFQSXMgaXMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHJldmVhbAo+IG9uZGlzawo+IG1l dGFkYXRhIGRpcmVjdGx5IHRvIHVzZXJzIC0tIHNvbWUgZGF5IHdlIG1pZ2h0IHdhbnQgdG8gY2hh bmdlCj4gd3RoYXQncwo+IHN0b3JlZCBvbiBkaXNrLCBvciBzdG9yZSB0aGVtIGluIGEgdG90YWxs eSBzZXBhcmF0ZSBzdHJ1Y3R1cmUsIG9yCj4gd2hhdGV2ZXIuCj4gCj4gSWYgd2UgZm9yY2UgdGhl IGludGVyZmFjZSB0byBiZSB0aGUgR0VUUEFSRU5UUyBpb2N0bCwgdGhlbiB3ZSd2ZQo+IGRlY291 cGxlZCB0aGUgZnJvbnQgYW5kIGJhY2tlbmRzLsKgIEkgY29uY2x1ZGUgdGhhdCB0aGUgL29ubHkv Cj4gdXNlcnNwYWNlCj4gQVBJIHRoYXQgc2hvdWxkIGV2ZXIgdG91Y2ggcGFyZW50IHBvaW50ZXJz IGlzIFhGU19JT0NfR0VUUEFSRU5UUy4KPiAKPiA+IC0tLQo+ID4gwqBmcy94ZnMvTWFrZWZpbGXC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+ID4gwqBmcy94ZnMvbGlieGZzL3hmc19m cy5owqDCoMKgwqAgfMKgIDU5ICsrKysrKysrKysrKysrKysrCj4gPiDCoGZzL3hmcy9saWJ4ZnMv eGZzX3BhcmVudC5jIHzCoCAxMCArKysKPiA+IMKgZnMveGZzL2xpYnhmcy94ZnNfcGFyZW50Lmgg fMKgwqAgMiArCj4gPiDCoGZzL3hmcy94ZnNfaW9jdGwuY8KgwqDCoMKgwqDCoMKgwqAgfCAxMDYg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gwqBmcy94ZnMveGZzX29uZGlzay5o wqDCoMKgwqDCoMKgwqAgfMKgwqAgNCArKwo+ID4gwqBmcy94ZnMveGZzX3BhcmVudF91dGlscy5j wqAgfCAxMjYKPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+IMKg ZnMveGZzL3hmc19wYXJlbnRfdXRpbHMuaMKgIHzCoCAxMSArKysrCj4gPiDCoDggZmlsZXMgY2hh bmdlZCwgMzE2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1n aXQgYS9mcy94ZnMvTWFrZWZpbGUgYi9mcy94ZnMvTWFrZWZpbGUKPiA+IGluZGV4IGUyYjJjZjUw ZmZjZi4uNDJkMDQ5NmZkYWQ3IDEwMDY0NAo+ID4gLS0tIGEvZnMveGZzL01ha2VmaWxlCj4gPiAr KysgYi9mcy94ZnMvTWFrZWZpbGUKPiA+IEBAIC04Niw2ICs4Niw3IEBAIHhmcy15wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqArPSB4ZnNfYW9wcy5vIFwK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHhmc19tb3VudC5vIFwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhmc19tcnVfY2Fj aGUubyBcCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZnNfcHdvcmsubyBcCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhmc19w YXJlbnRfdXRpbHMubyBcCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZnNfcmVmbGluay5vIFwKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHhmc19zdGF0cy5vIFwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhmc19zdXBlci5vIFwKPiA+IGRp ZmYgLS1naXQgYS9mcy94ZnMvbGlieGZzL3hmc19mcy5oIGIvZnMveGZzL2xpYnhmcy94ZnNfZnMu aAo+ID4gaW5kZXggYjBiNGQ3YTNhYTE1Li40MmJiMzQzZjY5NTIgMTAwNjQ0Cj4gPiAtLS0gYS9m cy94ZnMvbGlieGZzL3hmc19mcy5oCj4gPiArKysgYi9mcy94ZnMvbGlieGZzL3hmc19mcy5oCj4g PiBAQCAtNTc0LDYgKzU3NCw3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19mc29wX2hhbmRsZXJlcSB7 Cj4gPiDCoCNkZWZpbmUgWEZTX0lPQ19BVFRSX1NFQ1VSRcKgwqDCoMKgMHgwMDA4wqDCoC8qIHVz ZSBhdHRycyBpbiBzZWN1cml0eQo+ID4gbmFtZXNwYWNlICovCj4gPiDCoCNkZWZpbmUgWEZTX0lP Q19BVFRSX0NSRUFURcKgwqDCoMKgMHgwMDEwwqDCoC8qIGZhaWwgaWYgYXR0ciBhbHJlYWR5Cj4g PiBleGlzdHMgKi8KPiA+IMKgI2RlZmluZSBYRlNfSU9DX0FUVFJfUkVQTEFDRcKgwqDCoDB4MDAy MMKgwqAvKiBmYWlsIGlmIGF0dHIgZG9lcyBub3QKPiA+IGV4aXN0ICovCj4gPiArI2RlZmluZSBY RlNfSU9DX0FUVFJfUEFSRU5UwqDCoMKgwqAweDAwNDDCoCAvKiB1c2UgYXR0cnMgaW4gcGFyZW50 Cj4gPiBuYW1lc3BhY2UgKi8KPiAKPiBXZSBkZWZpbml0ZWx5IGRvbid0IG5lZWQgdGhpcyBpbiB0 aGUgdXNlcnNwYWNlIEFQSSBhbnltb3JlLgpXZSBjYW4gdGFrZSB0aGlzIG91dCBpZiBpdCBib3Ro ZXJzIGZvbGtzLCBidXQgSSBkb250IHdvcnJ5IGFib3V0IHRoaXMKb25lIHNpbmNlIHRoZSBtdWx0 aSBsaXN0IGlvY3RscyBhY3R1YWxseSB1c2UgdGhlIGZpbHRlciBmcm9tIHRoZSB1c2VyCgo+IAo+ ID4gwqB0eXBlZGVmIHN0cnVjdCB4ZnNfYXR0cmxpc3RfY3Vyc29yIHsKPiA+IMKgwqDCoMKgwqDC oMKgwqBfX3UzMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvcGFxdWVbNF07Cj4gPiBAQCAtNzUyLDYg Kzc1Myw2MyBAQCBzdHJ1Y3QgeGZzX3NjcnViX21ldGFkYXRhIHsKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWEZTX1ND UlVCX09GTEFHX05PX1JFUEFJUl9ORUVERUQpCj4gPiDCoCNkZWZpbmUgWEZTX1NDUlVCX0ZMQUdT X0FMTMKgwqDCoMKgKFhGU19TQ1JVQl9GTEFHU19JTiB8Cj4gPiBYRlNfU0NSVUJfRkxBR1NfT1VU KQo+ID4gwqAKPiA+ICsjZGVmaW5lIFhGU19QUFRSX01BWE5BTUVMRU7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDI1Ngo+ID4gKwo+ID4gKy8q IHJldHVybiBwYXJlbnRzIG9mIHRoZSBoYW5kbGUsIG5vdCB0aGUgb3BlbiBmZCAqLwo+ID4gKyNk ZWZpbmUgWEZTX1BQVFJfSUZMQUdfSEFORExFwqAgKDFVIDw8IDApCj4gPiArCj4gPiArLyogdGFy Z2V0IHdhcyB0aGUgcm9vdCBkaXJlY3RvcnkgKi8KPiA+ICsjZGVmaW5lIFhGU19QUFRSX09GTEFH X1JPT1TCoMKgwqAgKDFVIDw8IDEpCj4gPiArCj4gPiArLyogQ3Vyc29yIGlzIGRvbmUgaXRlcmF0 aW5nIHBwdHJzICovCj4gPiArI2RlZmluZSBYRlNfUFBUUl9PRkxBR19ET05FwqDCoMKgICgxVSA8 PCAyKQo+ID4gKwo+ID4gKyAjZGVmaW5lIFhGU19QUFRSX0ZMQUdfQUxMwqDCoMKgwqAgKFhGU19Q UFRSX0lGTEFHX0hBTkRMRSB8Cj4gPiBYRlNfUFBUUl9PRkxBR19ST09UIHwgXAo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg WEZTX1BQVFJfT0ZMQUdfRE9ORSkKPiA+ICsKPiA+ICsvKiBHZXQgYW4gaW5vZGUgcGFyZW50IHBv aW50ZXIgdGhyb3VnaCBpb2N0bCAqLwo+ID4gK3N0cnVjdCB4ZnNfcGFyZW50X3B0ciB7Cj4gPiAr wqDCoMKgwqDCoMKgwqBfX3U2NMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4cHBfaW5vO8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIElub2RlICovCj4gPiAr wqDCoMKgwqDCoMKgwqBfX3UzMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4cHBfZ2VuO8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIElub2RlCj4gPiBnZW5l cmF0aW9uICovCj4gPiArwqDCoMKgwqDCoMKgwqBfX3UzMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4 cHBfZGlyb2Zmc2V0O8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiBE aXJlY3Rvcnkgb2Zmc2V0ICovCj4gPiArwqDCoMKgwqDCoMKgwqBfX3UzMsKgwqDCoMKgwqDCoMKg wqDCoMKgwqB4cHBfcnN2ZDvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogUmVzZXJ2ZWQKPiA+ICovCj4gPiArwqDCoMKgwqDCoMKgwqBfX3UzMsKgwqDCoMKg wqDCoMKgwqDCoMKgwqB4cHBfcGFkOwo+IAo+IE5vIG5lZWQgZm9yIHR3byBlbXB0eSBfX3UzMiwg cmlnaHQ/ClN1cmUsIHdpbGwgbWVyZ2UgdGhlIGZpZWxkcwoKPiAKPiDCoMKgwqDCoMKgwqDCoMKg X191NjTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeHBwX3Jlc2VydmVkOwo+IAo+ID4gK8KgwqDCoMKg wqDCoMKgX191OMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhwcF9uYW1lW1hGU19QUFRSX01BWE5B TUVMRU5dO8KgwqAvKiBGaWxlCj4gPiBuYW1lICovCj4gPiArfTsKPiA+ICsKPiA+ICsvKiBJdGVy YXRlIHRocm91Z2ggYW4gaW5vZGVzIHBhcmVudCBwb2ludGVycyAqLwo+ID4gK3N0cnVjdCB4ZnNf cHB0cl9pbmZvIHsKPiAKPiBUaGUgZmllbGRzIGluIGhlcmUgb3VnaHQgdG8gaGF2ZSBzaG9ydCBj b21tZW50czoKPiAKPiAvKiBGaWxlIGhhbmRsZSwgaWYgWEZTX1BQVFJfSUZMQUdfSEFORExFIGlz IHNldCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19oYW5kbGXCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBwaV9oYW5kbGU7Cj4gCj4gLyoKPiDCoCogU3RydWN0dXJlIHRvIHRy YWNrIHByb2dyZXNzIGluIGl0ZXJhdGluZyB0aGUgcGFyZW50IHBvaW50ZXJzLgo+IMKgKiBNdXN0 IGJlIGluaXRpYWxpemVkIHRvIHplcm9lcyBiZWZvcmUgdGhlIGZpcnN0IGlvY3RsIGNhbGwsIGFu ZAo+IMKgKiBub3QgdG91Y2hlZCBieSBjYWxsZXJzIGFmdGVyIHRoYXQuCj4gwqAqLwo+ID4gK8Kg wqDCoMKgwqDCoMKgc3RydWN0IHhmc19hdHRybGlzdF9jdXJzb3LCoMKgwqDCoMKgwqBwaV9jdXJz b3I7Cj4gCj4gLyogT3BlcmF0aW9uYWwgZmxhZ3M6IFhGU19QUFRSXypGTEFHKiAqLwo+ID4gK8Kg wqDCoMKgwqDCoMKgX191MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBwaV9mbGFnczsKPiAKPiAvKiBNdXN0IGJlIHNldCB0byB6ZXJvICovCj4g PiArwqDCoMKgwqDCoMKgwqBfX3UzMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHBpX3Jlc2VydmVkOwo+IAo+IC8qICMgb2YgZW50cmllcyBpbiBh cnJheSAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgX191MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwaV9wdHJzX3NpemU7Cj4gCj4gLyogIyBvZiBl bnRyaWVzIGZpbGxlZCBpbiAob3V0cHV0KSAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgX191MzLCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwaV9wdHJz X3VzZWQ7Cj4gCj4gLyogTXVzdCBiZSBzZXQgdG8gemVybyAqLwo+ID4gK8KgwqDCoMKgwqDCoMKg X191NjTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBwaV9yZXNlcnZlZDJbNl07Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqAvKgo+ID4gK8KgwqDC oMKgwqDCoMKgICogQW4gYXJyYXkgb2Ygc3RydWN0IHhmc19wYXJlbnRfcHRyIGZvbGxvd3MgdGhl IGhlYWRlcgo+ID4gK8KgwqDCoMKgwqDCoMKgICogaW5mb3JtYXRpb24uIFVzZSBYRlNfUFBJTkZP X1RPX1BQKCkgdG8gYWNjZXNzIHRoZQo+IAo+IHMvWEZTX1BQSU5GT19UT19QUC94ZnNfcHBpbmZv X3RvX3BwLwpTdXJlIHdpbGwgYWRkIHRoZXNlIGNvbW1lbnQgY2xlYW4gdXBzCj4gCj4gPiArwqDC oMKgwqDCoMKgwqAgKiBwYXJlbnQgcG9pbnRlciBhcnJheSBlbnRyaWVzLgo+ID4gK8KgwqDCoMKg wqDCoMKgICovCj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGZzX3BhcmVudF9wdHLCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcGlfcGFyZW50c1tdOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGlu bGluZSBzaXplX3QKPiA+ICt4ZnNfcHB0cl9pbmZvX3NpemVvZihpbnQgbnJfcHRycykKPiA+ICt7 Cj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gc2l6ZW9mKHN0cnVjdCB4ZnNfcHB0cl9pbmZvKSAr Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG5yX3B0cnMgKiBzaXplb2Yoc3RydWN0 IHhmc19wYXJlbnRfcHRyKSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IHhmc19wYXJlbnRfcHRyKgo+ID4gK3hmc19wcGluZm9fdG9fcHAoCj4gPiArwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgeGZzX3BwdHJfaW5mb8KgwqDCoMKgKmluZm8sCj4gPiArwqDCoMKgwqDCoMKgwqBp bnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZHgpCj4gPiArewo+ ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuICZpbmZvLT5waV9wYXJlbnRzW2lkeF07Cj4gPiArfQo+ ID4gKwo+ID4gwqAvKgo+ID4gwqAgKiBpb2N0bCBsaW1pdHMKPiA+IMKgICovCj4gPiBAQCAtNzk3 LDYgKzg1NSw3IEBAIHN0cnVjdCB4ZnNfc2NydWJfbWV0YWRhdGEgewo+ID4gwqAvKsKgwqDCoMKg wqBYRlNfSU9DX0dFVEZTTUFQIC0tLS0tLSBob2lzdGVkIDU5wqDCoMKgwqDCoMKgwqDCoCAqLwo+ ID4gwqAjZGVmaW5lIFhGU19JT0NfU0NSVUJfTUVUQURBVEHCoF9JT1dSKCdYJywgNjAsIHN0cnVj dAo+ID4geGZzX3NjcnViX21ldGFkYXRhKQo+ID4gwqAjZGVmaW5lIFhGU19JT0NfQUdfR0VPTUVU UlnCoMKgwqDCoF9JT1dSKCdYJywgNjEsIHN0cnVjdAo+ID4geGZzX2FnX2dlb21ldHJ5KQo+ID4g KyNkZWZpbmUgWEZTX0lPQ19HRVRQQVJFTlRTwqDCoMKgwqDCoF9JT1dSKCdYJywgNjIsIHN0cnVj dAo+ID4geGZzX3BhcmVudF9wdHIpCj4gPiDCoAo+ID4gwqAvKgo+ID4gwqAgKiBpb2N0bCBjb21t YW5kcyB0aGF0IHJlcGxhY2UgSVJJWCBzeXNzZ2koKSdzCj4gPiBkaWZmIC0tZ2l0IGEvZnMveGZz L2xpYnhmcy94ZnNfcGFyZW50LmMKPiA+IGIvZnMveGZzL2xpYnhmcy94ZnNfcGFyZW50LmMKPiA+ IGluZGV4IDdkYjE1NzBlMTg0MS4uNTgzODJhNWM0MGE2IDEwMDY0NAo+ID4gLS0tIGEvZnMveGZz L2xpYnhmcy94ZnNfcGFyZW50LmMKPiA+ICsrKyBiL2ZzL3hmcy9saWJ4ZnMveGZzX3BhcmVudC5j Cj4gPiBAQCAtMjYsNiArMjYsMTYgQEAKPiA+IMKgI2luY2x1ZGUgInhmc194YXR0ci5oIgo+ID4g wqAjaW5jbHVkZSAieGZzX3BhcmVudC5oIgo+ID4gwqAKPiA+ICsvKiBJbml0aWFsaXplcyBhIHhm c19wYXJlbnRfcHRyIGZyb20gYW4geGZzX3BhcmVudF9uYW1lX3JlYyAqLwo+ID4gK3ZvaWQKPiA+ ICt4ZnNfaW5pdF9wYXJlbnRfcHRyKHN0cnVjdCB4ZnNfcGFyZW50X3B0csKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAqeHBwLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjb25zdCBzdHJ1Y3QgeGZzX3BhcmVudF9uYW1lX3JlY8KgwqDCoMKgKnJlYykKPiA+ICt7 Cj4gPiArwqDCoMKgwqDCoMKgwqB4cHAtPnhwcF9pbm8gPSBiZTY0X3RvX2NwdShyZWMtPnBfaW5v KTsKPiA+ICvCoMKgwqDCoMKgwqDCoHhwcC0+eHBwX2dlbiA9IGJlMzJfdG9fY3B1KHJlYy0+cF9n ZW4pOwo+ID4gK8KgwqDCoMKgwqDCoMKgeHBwLT54cHBfZGlyb2Zmc2V0ID0gYmUzMl90b19jcHUo cmVjLT5wX2Rpcm9mZnNldCk7Cj4gPiArfQo+ID4gKwo+ID4gwqAvKgo+ID4gwqAgKiBQYXJlbnQg cG9pbnRlciBhdHRyaWJ1dGUgaGFuZGxpbmcuCj4gPiDCoCAqCj4gPiBkaWZmIC0tZ2l0IGEvZnMv eGZzL2xpYnhmcy94ZnNfcGFyZW50LmgKPiA+IGIvZnMveGZzL2xpYnhmcy94ZnNfcGFyZW50LmgK PiA+IGluZGV4IGIyZWQ0ZjM3Mzc5OS4uOTk3NjVlNjVhZjhkIDEwMDY0NAo+ID4gLS0tIGEvZnMv eGZzL2xpYnhmcy94ZnNfcGFyZW50LmgKPiA+ICsrKyBiL2ZzL3hmcy9saWJ4ZnMveGZzX3BhcmVu dC5oCj4gPiBAQCAtMjMsNiArMjMsOCBAQCB2b2lkIHhmc19pbml0X3BhcmVudF9uYW1lX3JlYyhz dHJ1Y3QKPiA+IHhmc19wYXJlbnRfbmFtZV9yZWMgKnJlYywKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDMyX3QgcF9kaXJv ZmZzZXQpOwo+ID4gwqB2b2lkIHhmc19pbml0X3BhcmVudF9uYW1lX2lyZWMoc3RydWN0IHhmc19w YXJlbnRfbmFtZV9pcmVjICppcmVjLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB4ZnNfcGFyZW50X25hbWVfcmVj ICpyZWMpOwo+ID4gK3ZvaWQgeGZzX2luaXRfcGFyZW50X3B0cihzdHJ1Y3QgeGZzX3BhcmVudF9w dHIgKnhwcCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNvbnN0IHN0cnVjdCB4ZnNfcGFyZW50X25hbWVfcmVjICpyZWMpOwo+ID4gwqBpbnQgeGZz X3BhcmVudF9pbml0KHhmc19tb3VudF90ICptcCwgc3RydWN0IHhmc19wYXJlbnRfZGVmZXIKPiA+ ICoqcGFyZW50cCk7Cj4gPiDCoGludCB4ZnNfcGFyZW50X2RlZmVyX2FkZChzdHJ1Y3QgeGZzX3Ry YW5zICp0cCwgc3RydWN0Cj4gPiB4ZnNfcGFyZW50X2RlZmVyICpwYXJlbnQsCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHhmc19pbm9k ZSAqZHAsIHN0cnVjdCB4ZnNfbmFtZQo+ID4gKnBhcmVudF9uYW1lLAo+ID4gZGlmZiAtLWdpdCBh L2ZzL3hmcy94ZnNfaW9jdGwuYyBiL2ZzL3hmcy94ZnNfaW9jdGwuYwo+ID4gaW5kZXggNWI2MDBk M2Y3OTgxLi43ZGM5ZjM3ZDk2Y2IgMTAwNjQ0Cj4gPiAtLS0gYS9mcy94ZnMveGZzX2lvY3RsLmMK PiA+ICsrKyBiL2ZzL3hmcy94ZnNfaW9jdGwuYwo+ID4gQEAgLTM3LDYgKzM3LDcgQEAKPiA+IMKg I2luY2x1ZGUgInhmc19oZWFsdGguaCIKPiA+IMKgI2luY2x1ZGUgInhmc19yZWZsaW5rLmgiCj4g PiDCoCNpbmNsdWRlICJ4ZnNfaW9jdGwuaCIKPiA+ICsjaW5jbHVkZSAieGZzX3BhcmVudF91dGls cy5oIgo+ID4gwqAjaW5jbHVkZSAieGZzX3hhdHRyLmgiCj4gPiDCoAo+ID4gwqAjaW5jbHVkZSA8 bGludXgvbW91bnQuaD4KPiA+IEBAIC0zNTUsNiArMzU2LDggQEAgeGZzX2F0dHJfZmlsdGVyKAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gWEZTX0FUVFJfUk9PVDsK PiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoaW9jX2ZsYWdzICYgWEZTX0lPQ19BVFRSX1NFQ1VSRSkK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIFhGU19BVFRSX1NFQ1VS RTsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChpb2NfZmxhZ3MgJiBYRlNfSU9DX0FUVFJfUEFSRU5U KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBYRlNfQVRUUl9QQVJF TlQ7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiDCoH0KPiA+IMKgCj4gPiBAQCAt NDIyLDcgKzQyNSw4IEBAIHhmc19pb2NfYXR0cl9saXN0KAo+ID4gwqDCoMKgwqDCoMKgwqDCoC8q Cj4gPiDCoMKgwqDCoMKgwqDCoMKgICogUmVqZWN0IGZsYWdzLCBvbmx5IGFsbG93IG5hbWVzcGFj ZXMuCj4gPiDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoZmxhZ3Mg JiB+KFhGU19JT0NfQVRUUl9ST09UIHwgWEZTX0lPQ19BVFRSX1NFQ1VSRSkpCj4gPiArwqDCoMKg wqDCoMKgwqBpZiAoZmxhZ3MgJiB+KFhGU19JT0NfQVRUUl9ST09UIHwgWEZTX0lPQ19BVFRSX1NF Q1VSRSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYRlNf SU9DX0FUVFJfUEFSRU5UKSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIC1FSU5WQUw7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGZsYWdzID09IChYRlNfSU9DX0FU VFJfUk9PVCB8IFhGU19JT0NfQVRUUl9TRUNVUkUpKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiA+IEBAIC01MzgsNiArNTQyLDkgQEAgeGZzX2F0 dHJtdWx0aV9hdHRyX3NldCgKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoSVNfSU1NVVRBQkxFKGlu b2RlKSB8fCBJU19BUFBFTkQoaW5vZGUpKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gLUVQRVJNOwo+ID4gwqAKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChmbGFncyAm IFhGU19JT0NfQVRUUl9QQVJFTlQpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHVidWYpIHsKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGxlbiA+IFhGU19YQVRUUl9TSVpF X01BWCkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybiAtRUlOVkFMOwo+ID4gQEAgLTU2Nyw3ICs1NzQsOSBAQCB4ZnNfaW9jX2F0dHJtdWx0 aV9vbmUoCj4gPiDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgY2hhcsKgwqDCoMKgwqDCoMKgwqDC oMKgwqAqbmFtZTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBlcnJvcjsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAo KGZsYWdzICYgWEZTX0lPQ19BVFRSX1JPT1QpICYmIChmbGFncyAmCj4gPiBYRlNfSU9DX0FUVFJf U0VDVVJFKSkKPiA+ICvCoMKgwqDCoMKgwqDCoGlmICgoKGZsYWdzICYgWEZTX0lPQ19BVFRSX1JP T1QpICYmCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKChmbGFncyAmIFhGU19JT0NfQVRUUl9T RUNVUkUpIHx8IChmbGFncyAmCj4gPiBYRlNfSU9DX0FUVFJfUEFSRU5UKSkpIHx8Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgKChmbGFncyAmIFhGU19JT0NfQVRUUl9TRUNVUkUpICYmIChmbGFn cyAmCj4gPiBYRlNfSU9DX0FUVFJfUEFSRU5UKSkpCj4gCj4gQWxsIHRoZXNlIGJpdHMgZ28gYXdh eSBzaW5jZSBYRlNfSU9DX0FUVFJfUEFSRU5UIGlzIG5vIGxvbmdlcgo+IG5lY2Vzc2FyeS4uLgo+ IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiA+ IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgbmFtZSA9IHN0cm5kdXBfdXNlcih1bmFtZSwgTUFYTkFN RUxFTik7Cj4gPiBAQCAtMTY3OSw2ICsxNjg4LDk2IEBAIHhmc19pb2Nfc2NydWJfbWV0YWRhdGEo Cj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiDCoH0KPiA+IMKgCj4gPiArLyoKPiA+ ICsgKiBJT0NUTCByb3V0aW5lIHRvIGdldCB0aGUgcGFyZW50IHBvaW50ZXJzIG9mIGFuIGlub2Rl IGFuZCByZXR1cm4KPiA+IGl0IHRvIHVzZXIKPiA+ICsgKiBzcGFjZS7CoCBDYWxsZXIgbXVzdCBw YXNzIGEgYnVmZmVyIHNwYWNlIGNvbnRhaW5pbmcgYSBzdHJ1Y3QKPiA+IHhmc19wcHRyX2luZm8s Cj4gPiArICogZm9sbG93ZWQgYnkgYSByZWdpb24gbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gYW4g YXJyYXkgb2Ygc3RydWN0Cj4gPiArICogeGZzX3BhcmVudF9wdHIgb2YgYSBzaXplIHNwZWNpZmll ZCBpbiBwaV9wdHJzX3NpemUuwqAgSWYgdGhlCj4gPiBpbm9kZSBjb250YWlucwo+ID4gKyAqIG1v cmUgcGFyZW50IHBvaW50ZXJzIHRoYW4gY2FuIGZpdCBpbiB0aGUgYnVmZmVyIHNwYWNlLCBjYWxs ZXIKPiA+IG1heSByZS1jYWxsCj4gPiArICogdGhlIGZ1bmN0aW9uIHVzaW5nIHRoZSByZXR1cm5l ZCBwaV9jdXJzb3IgdG8gcmVzdW1lIGl0ZXJhdGlvbi7CoAo+ID4gVGhlCj4gPiArICogbnVtYmVy IG9mIHhmc19wYXJlbnRfcHRyIHJldHVybmVkIHdpbGwgYmUgc3RvcmVkIGluCj4gPiBwaV9wdHJz X3VzZWQuCj4gPiArICoKPiA+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBub24temVybyBv biBmYWlsdXJlCj4gPiArICovCj4gPiArU1RBVElDIGludAo+ID4gK3hmc19pb2NfZ2V0X3BhcmVu dF9wb2ludGVyKAo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGZpbGXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqZmlscCwKPiA+ICvCoMKgwqDCoMKgwqDCoHZvaWTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9f dXNlciAqYXJnKQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfcHB0cl9pbmZv wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnBwaSA9IE5VTEw7Cj4gPiArwqDCoMKgwqDCoMKgwqBp bnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZXJyb3IgPSAwOwo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19pbm9kZcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKmlwID0KPiA+IFhGU19JKGZpbGVfaW5vZGUoZmlscCkp Owo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19tb3VudMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgKm1wID0gaXAtPmlfbW91bnQ7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBp ZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIC1FUEVSTTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoC8qIEFsbG9jYXRl IGFuIHhmc19wcHRyX2luZm8gdG8gcHV0IHRoZSB1c2VyIGRhdGEgKi8KPiA+ICvCoMKgwqDCoMKg wqDCoHBwaSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCB4ZnNfcHB0cl9pbmZvKSwgMCk7Cj4gPiAr wqDCoMKgwqDCoMKgwqBpZiAoIXBwaSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoC8qIENvcHkgdGhlIGRh dGEgZnJvbSB0aGUgdXNlciAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgZXJyb3IgPSBjb3B5X2Zyb21f dXNlcihwcGksIGFyZywgc2l6ZW9mKHN0cnVjdAo+ID4geGZzX3BwdHJfaW5mbykpOwo+ID4gK8Kg wqDCoMKgwqDCoMKgaWYgKGVycm9yKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZXJyb3IgPSAtRUZBVUxUOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdv dG8gb3V0Owo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgLyog Q2hlY2sgc2l6ZSBvZiBidWZmZXIgcmVxdWVzdGVkIGJ5IHVzZXIgKi8KPiA+ICvCoMKgwqDCoMKg wqDCoGlmICh4ZnNfcHB0cl9pbmZvX3NpemVvZihwcGktPnBpX3B0cnNfc2l6ZSkgPgo+ID4gWEZT X1hBVFRSX0xJU1RfTUFYKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJy b3IgPSAtRU5PTUVNOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0 Owo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHBwaS0+ cGlfZmxhZ3MgJiB+WEZTX1BQVFJfRkxBR19BTEwpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBlcnJvciA9IC1FSU5WQUw7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZ290byBvdXQ7Cj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqBw cGktPnBpX2ZsYWdzICY9IH4oWEZTX1BQVFJfT0ZMQUdfUk9PVCB8Cj4gPiBYRlNfUFBUUl9PRkxB R19ET05FKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoC8qCj4gPiArwqDCoMKgwqDCoMKgwqAg KiBOb3cgdGhhdCB3ZSBrbm93IGhvdyBiaWcgdGhlIHRyYWlsaW5nIGJ1ZmZlciBpcywgZXhwYW5k Cj4gPiArwqDCoMKgwqDCoMKgwqAgKiBvdXIga2VybmVsIHhmc19wcHRyX2luZm8gdG8gYmUgdGhl IHNhbWUgc2l6ZQo+ID4gK8KgwqDCoMKgwqDCoMKgICovCj4gPiArwqDCoMKgwqDCoMKgwqBwcGkg PSBrcmVhbGxvYyhwcGksIHhmc19wcHRyX2luZm9fc2l6ZW9mKHBwaS0KPiA+ID5waV9wdHJzX3Np emUpLCAwKTsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghcHBpKQo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKg aWYgKHBwaS0+cGlfZmxhZ3MgJiBYRlNfUFBUUl9JRkxBR19IQU5ETEUpIHsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnJvciA9IHhmc19pZ2V0KG1wLCBOVUxMLCBwcGktCj4g PiA+cGlfaGFuZGxlLmhhX2ZpZC5maWRfaW5vLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMCwgMCwgJmlwKTsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyb3IpCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0Owo+ID4gKwo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChWRlNfSShpcCktPmlfZ2VuZXJhdGlvbiAh PSBwcGktCj4gPiA+cGlfaGFuZGxlLmhhX2ZpZC5maWRfZ2VuKSB7Cj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVycm9yID0gLUVJTlZBTDsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXQ7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKGlwLT5pX2lubyA9PSBtcC0+bV9zYi5zYl9yb290 aW5vKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBwaS0+cGlfZmxhZ3MgfD0g WEZTX1BQVFJfT0ZMQUdfUk9PVDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoC8qIEdldCB0aGUg cGFyZW50IHBvaW50ZXJzICovCj4gPiArwqDCoMKgwqDCoMKgwqBlcnJvciA9IHhmc19hdHRyX2dl dF9wYXJlbnRfcG9pbnRlcihpcCwgcHBpKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChl cnJvcikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dDsKPiA+ICsK PiA+ICvCoMKgwqDCoMKgwqDCoC8qIENvcHkgdGhlIHBhcmVudCBwb2ludGVycyBiYWNrIHRvIHRo ZSB1c2VyICovCj4gPiArwqDCoMKgwqDCoMKgwqBlcnJvciA9IGNvcHlfdG9fdXNlcihhcmcsIHBw aSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGZz X3BwdHJfaW5mb19zaXplb2YocHBpLT5waV9wdHJzX3NpemUpKTsKPiA+ICvCoMKgwqDCoMKgwqDC oGlmIChlcnJvcikgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVycm9yID0g LUVGQVVMVDsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dDsKPiA+ ICvCoMKgwqDCoMKgwqDCoH0KPiA+ICsKPiA+ICtvdXQ6Cj4gPiArwqDCoMKgwqDCoMKgwqBrbWVt X2ZyZWUocHBpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBlcnJvcjsKPiA+ICt9Cj4gPiAr Cj4gPiDCoGludAo+ID4gwqB4ZnNfaW9jX3N3YXBleHQoCj4gPiDCoMKgwqDCoMKgwqDCoMKgeGZz X3N3YXBleHRfdMKgwqDCoCpzeHApCj4gPiBAQCAtMTk2OCw3ICsyMDY3LDggQEAgeGZzX2ZpbGVf aW9jdGwoCj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEZTX0lPQ19GU0dFVFhBVFRS QToKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHhmc19pb2NfZnNn ZXR4YXR0cmEoaXAsIGFyZyk7Cj4gPiAtCj4gPiArwqDCoMKgwqDCoMKgwqBjYXNlIFhGU19JT0Nf R0VUUEFSRU5UUzoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4geGZz X2lvY19nZXRfcGFyZW50X3BvaW50ZXIoZmlscCwgYXJnKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBj YXNlIFhGU19JT0NfR0VUQk1BUDoKPiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhGU19JT0NfR0VU Qk1BUEE6Cj4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYRlNfSU9DX0dFVEJNQVBYOgo+ID4gZGlm ZiAtLWdpdCBhL2ZzL3hmcy94ZnNfb25kaXNrLmggYi9mcy94ZnMveGZzX29uZGlzay5oCj4gPiBp bmRleCA3NTg3MDJiOTQ5NWYuLjc2NWViNTE0YTkxNyAxMDA2NDQKPiA+IC0tLSBhL2ZzL3hmcy94 ZnNfb25kaXNrLmgKPiA+ICsrKyBiL2ZzL3hmcy94ZnNfb25kaXNrLmgKPiA+IEBAIC0xMzUsNiAr MTM1LDEwIEBAIHhmc19jaGVja19vbmRpc2tfc3RydWN0cyh2b2lkKQo+ID4gwqDCoMKgwqDCoMKg wqDCoFhGU19DSEVDS19TVFJVQ1RfU0laRShzdHJ1Y3QKPiA+IHhmc19hdHRyaV9sb2dfZm9ybWF0 LMKgwqDCoMKgwqDCoDQwKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBYRlNfQ0hFQ0tfU1RSVUNUX1NJ WkUoc3RydWN0Cj4gPiB4ZnNfYXR0cmRfbG9nX2Zvcm1hdCzCoMKgwqDCoMKgwqAxNik7Cj4gPiDC oAo+ID4gK8KgwqDCoMKgwqDCoMKgLyogcGFyZW50IHBvaW50ZXIgaW9jdGxzICovCj4gPiArwqDC oMKgwqDCoMKgwqBYRlNfQ0hFQ0tfU1RSVUNUX1NJWkUoc3RydWN0IHhmc19wYXJlbnRfcHRyLMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+IDI4MCk7Cj4gPiArwqDCoMKgwqDCoMKgwqBYRlNfQ0hF Q0tfU1RSVUNUX1NJWkUoc3RydWN0IHhmc19wcHRyX2luZm8swqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgCj4gPiAxMDQpOwo+ID4gKwo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiDCoMKgwqDCoMKg wqDCoMKgICogVGhlIHY1IHN1cGVyYmxvY2sgZm9ybWF0IGV4dGVuZGVkIHNldmVyYWwgdjQgaGVh ZGVyCj4gPiBzdHJ1Y3R1cmVzIHdpdGgKPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBhZGRpdGlvbmFs IGRhdGEuIFdoaWxlIG5ldyBmaWVsZHMgYXJlIG9ubHkgYWNjZXNzaWJsZSBvbgo+ID4gdjUKPiA+ IGRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3BhcmVudF91dGlscy5jIGIvZnMveGZzL3hmc19wYXJl bnRfdXRpbHMuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAw MC4uZmQ3MTU2YWRkZDM4Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9mcy94ZnMveGZzX3Bh cmVudF91dGlscy5jCj4gPiBAQCAtMCwwICsxLDEyNiBAQAo+ID4gKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCj4gPiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjIgT3Jh Y2xlLCBJbmMuCj4gPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiA+ICsgKi8KPiA+ICsjaW5j bHVkZSAieGZzLmgiCj4gPiArI2luY2x1ZGUgInhmc19mcy5oIgo+ID4gKyNpbmNsdWRlICJ4ZnNf Zm9ybWF0LmgiCj4gPiArI2luY2x1ZGUgInhmc19sb2dfZm9ybWF0LmgiCj4gPiArI2luY2x1ZGUg Inhmc19zaGFyZWQuaCIKPiA+ICsjaW5jbHVkZSAieGZzX3RyYW5zX3Jlc3YuaCIKPiA+ICsjaW5j bHVkZSAieGZzX21vdW50LmgiCj4gPiArI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCj4gPiAr I2luY2x1ZGUgInhmc19pbm9kZS5oIgo+ID4gKyNpbmNsdWRlICJ4ZnNfZXJyb3IuaCIKPiA+ICsj aW5jbHVkZSAieGZzX3RyYWNlLmgiCj4gPiArI2luY2x1ZGUgInhmc190cmFucy5oIgo+ID4gKyNp bmNsdWRlICJ4ZnNfZGFfZm9ybWF0LmgiCj4gPiArI2luY2x1ZGUgInhmc19kYV9idHJlZS5oIgo+ ID4gKyNpbmNsdWRlICJ4ZnNfYXR0ci5oIgo+ID4gKyNpbmNsdWRlICJ4ZnNfaW9jdGwuaCIKPiA+ ICsjaW5jbHVkZSAieGZzX3BhcmVudC5oIgo+ID4gKyNpbmNsdWRlICJ4ZnNfZGFfYnRyZWUuaCIK PiA+ICsKPiA+ICsvKgo+ID4gKyAqIEdldCB0aGUgcGFyZW50IHBvaW50ZXJzIGZvciBhIGdpdmVu IGlub2RlCj4gPiArICoKPiA+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgbm9uIHplcm8g b24gZXJyb3IKPiA+ICsgKi8KPiA+ICtpbnQKPiA+ICt4ZnNfYXR0cl9nZXRfcGFyZW50X3BvaW50 ZXIoCj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGZzX2lub2RlwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAqaXAsCj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGZzX3BwdHJfaW5m b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpwcGkpCj4gPiArewo+ID4gKwo+ID4gK8KgwqDCoMKg wqDCoMKgc3RydWN0IHhmc19hdHRybGlzdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKmFsaXN0 Owo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19hdHRybGlzdF9lbnTCoMKgwqDCoMKgwqDC oMKgwqAqYWVudDsKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfcGFyZW50X3B0csKgwqDC oMKgwqDCoMKgwqDCoMKgwqAqeHBwOwo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19wYXJl bnRfbmFtZV9yZWPCoMKgwqDCoMKgwqAqeHBucjsKPiA+ICvCoMKgwqDCoMKgwqDCoGNoYXLCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpuYW1l YnVmOwo+ID4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG5hbWVidWZfc2l6ZTsKPiA+ICvCoMKgwqDCoMKgwqDCoGludMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBu YW1lX2xlbiwgaSwgZXJyb3IgPSAwOwo+ID4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlvY19mbGFncyA9Cj4gPiBYRlNf SU9DX0FUVFJfUEFSRU5UOwo+ID4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxvY2tfbW9kZSwgZmxhZ3MgPQo+ID4gWEZT X0FUVFJfUEFSRU5UOwo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19hdHRyX2xpc3RfY29u dGV4dMKgwqDCoMKgY29udGV4dDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoC8qIEFsbG9jYXRl IGEgYnVmZmVyIHRvIHN0b3JlIHRoZSBhdHRyaWJ1dGUgbmFtZXMgKi8KPiA+ICvCoMKgwqDCoMKg wqDCoG5hbWVidWZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgeGZzX2F0dHJsaXN0KSArCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChwcGktPnBpX3B0cnNfc2l6 ZSkgKiBzaXplb2Yoc3RydWN0Cj4gPiB4ZnNfYXR0cmxpc3RfZW50KTsKPiA+ICvCoMKgwqDCoMKg wqDCoG5hbWVidWYgPSBrdnphbGxvYyhuYW1lYnVmX3NpemUsIEdGUF9LRVJORUwpOwo+ID4gK8Kg wqDCoMKgwqDCoMKgaWYgKCFuYW1lYnVmKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgbWVtc2V0KCZjb250 ZXh0LCAwLCBzaXplb2Yoc3RydWN0IHhmc19hdHRyX2xpc3RfY29udGV4dCkpOwo+ID4gK8KgwqDC oMKgwqDCoMKgZXJyb3IgPSB4ZnNfaW9jX2F0dHJfbGlzdF9jb250ZXh0X2luaXQoaXAsIG5hbWVi dWYsCj4gPiBuYW1lYnVmX3NpemUsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlvY19mbGFncywgJmNvbnRleHQpOwo+ID4gK8KgwqDCoMKgwqDCoMKg aWYgKGVycm9yKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X2tm cmVlOwo+IAo+IEFuZCBub3cgdGhhdCB3ZSBkb24ndCBoYXZlIFhGU19JT0NfQVRUUl9QQVJFTlQg YW55bW9yZSwgY2hhbmdlIHRoaXMKPiB0bzoKPiAKPiDCoMKgwqDCoMKgwqDCoMKgbWVtc2V0KCZj b250ZXh0LCAwLCBzaXplb2Yoc3RydWN0IHhmc19hdHRyX2xpc3RfY29udGV4dCkpOwo+IMKgwqDC oMKgwqDCoMKgwqBlcnJvciA9IHhmc19pb2NfYXR0cl9saXN0X2NvbnRleHRfaW5pdChpcCwgbmFt ZWJ1ZiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBu YW1lYnVmX3NpemUsIDAsICZjb250ZXh0KTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycm9yKQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXRfa2ZyZWU7Cj4gwqDCoMKg wqDCoMKgwqDCoGNvbnRleHQuYXR0cl9mbGFncyA9IFhGU19BVFRSX1BBUkVOVDsKSSBkbyB0aGF0 IGEgZmV3IGxpbmVzIGRvd24gd2hlbiB3ZSBzZXQgdXAgdGhlIGN1cnNvciwgSSB0aGluayB0aGlz CnBhcnRzIG9rIHdpdGggdGhlIElPQyBmbGFnIGdvbmUKCj4gCj4gVGhpcyB3YXkgeW91IGNhbiBy ZXVzZSB0aGUgeGZzX2F0dHJfbGlzdCogaW5mcmFzdHJ1Y3R1cmUgd2l0aG91dAo+IG5lZWRpbmcK PiB0byBhZGQgZmxhZ3MgdG8gdGhlIHVzZXJzcGFjZSB4YXR0ciBBUElzIG9yIHRoZW4gaGF2ZSB0 byBmaWx0ZXIgdGhhdAo+IG91dAo+IGZyb20gYWxsIHRoZSBpbmNvbWluZyB4YXR0ciBjYWxscy4K PiAKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoC8qIENvcHkgdGhlIGN1cnNvciBwcm92aWRlZCBi eSBjYWxsZXIgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoG1lbWNweSgmY29udGV4dC5jdXJzb3IsICZw cGktPnBpX2N1cnNvciwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzaXplb2Yo c3RydWN0IHhmc19hdHRybGlzdF9jdXJzb3IpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoGNvbnRleHQu YXR0cl9maWx0ZXIgPSBYRlNfQVRUUl9QQVJFTlQ7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBs b2NrX21vZGUgPSB4ZnNfaWxvY2tfYXR0cl9tYXBfc2hhcmVkKGlwKTsKPiA+ICsKPiA+ICvCoMKg wqDCoMKgwqDCoGVycm9yID0geGZzX2F0dHJfbGlzdF9pbG9ja2VkKCZjb250ZXh0KTsKPiA+ICvC oMKgwqDCoMKgwqDCoGlmIChlcnJvcikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBnb3RvIG91dF9rZnJlZTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGFsaXN0ID0gKHN0cnVj dCB4ZnNfYXR0cmxpc3QgKiluYW1lYnVmOwo+ID4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsg aSA8IGFsaXN0LT5hbF9jb3VudDsgaSsrKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHhmc19kYV9hcmdzIGFyZ3MgPSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5nZW8gPSBpcC0+aV9tb3VudC0+bV9hdHRyX2dl bywKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLndo aWNoZm9yayA9IFhGU19BVFRSX0ZPUkssCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC5kcCA9IGlwLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAubmFtZWxlbiA9IHNpemVvZihzdHJ1Y3QKPiA+IHhmc19w YXJlbnRfbmFtZV9yZWMpLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAuYXR0cl9maWx0ZXIgPSBmbGFncywKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm9wX2ZsYWdzID0gWEZTX0RBX09QX09LTk9FTlQs Cj4gCj4gV2UgaG9sZCB0aGUgSUxPQ0sgYmV0d2VlbiB0aGUgbGlzdCBhbmQgdGhlIGF0dHIgZ2V0 dGluZywgc28gd2UKPiBzaG91bGRuJ3QKPiBuZWVkIE9LTk9FTlQgaGVyZSB0byBhdm9pZCBlcnJv ciByZXR1cm5zLCByaWdodD8KWWVzLCBpIHRoaW5rIGl0IHNob3VsZCBiZSBvayB0byBjb21lIG91 dAoKPiAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Owo+ID4gKwo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhwcCA9IHhmc19wcGluZm9fdG9fcHAocHBpLCBp KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtZW1zZXQoeHBwLCAwLCBzaXpl b2Yoc3RydWN0IHhmc19wYXJlbnRfcHRyKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYWVudCA9IChzdHJ1Y3QgeGZzX2F0dHJsaXN0X2VudCAqKQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmbmFtZWJ1ZlthbGlzdC0+YWxfb2Zm c2V0W2ldXTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4cG5yID0gKHN0cnVj dCB4ZnNfcGFyZW50X25hbWVfcmVjICopKGFlbnQtCj4gPiA+YV9uYW1lKTsKPiA+ICsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoYWVudC0+YV92YWx1ZWxlbiA+IFhGU19Q UFRSX01BWE5BTUVMRU4pIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZXJyb3IgPSAtRUZTQ09SUlVQVEVEOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dF9rZnJlZTsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbmFtZV9sZW4gPSBhZW50LT5hX3ZhbHVlbGVuOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGFyZ3MubmFtZSA9IChjaGFyICopeHBucjsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBhcmdzLmhhc2h2YWwgPSB4ZnNfZGFfaGFzaG5hbWUoYXJncy5u YW1lLAo+ID4gYXJncy5uYW1lbGVuKSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBhcmdzLnZhbHVlID0gKHVuc2lnbmVkIGNoYXIgKikoeHBwLT54cHBfbmFtZSk7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXJncy52YWx1ZWxlbiA9IG5hbWVfbGVuOwo+ID4g Kwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVycm9yID0geGZzX2F0dHJfZ2V0 X2lsb2NrZWQoJmFyZ3MpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVycm9y ID0gKGVycm9yID09IC1FRVhJU1QgPyAwIDogZXJyb3IpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmIChlcnJvcikgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBlcnJvciA9IC1FRlNDT1JSVVBURUQ7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X2tmcmVlOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB4ZnNfaW5pdF9wYXJlbnRfcHRyKHhwcCwgeHBucik7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYoIXhmc192ZXJpZnlfaW5vKGFyZ3MuZHAtPmlf bW91bnQsIHhwcC0+eHBwX2lubykpCj4gPiB7Cj4gCj4gU3BhY2UgYmVmb3JlIHRoZSAnKCcKd2ls bCBmaXgKCj4gCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGVycm9yID0gLUVGU0NPUlJVUFRFRDsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXRfa2ZyZWU7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKgwqDCoMKg cHBpLT5waV9wdHJzX3VzZWQgPSBhbGlzdC0+YWxfY291bnQ7Cj4gPiArwqDCoMKgwqDCoMKgwqBp ZiAoIWFsaXN0LT5hbF9tb3JlKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBw aS0+cGlfZmxhZ3MgfD0gWEZTX1BQVFJfT0ZMQUdfRE9ORTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKg wqDCoC8qIFVwZGF0ZSB0aGUgY2FsbGVyIHdpdGggdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9u ICovCj4gPiArwqDCoMKgwqDCoMKgwqBtZW1jcHkoJnBwaS0+cGlfY3Vyc29yLCAmY29udGV4dC5j dXJzb3IsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2l6ZW9mKHN0cnVjdCB4 ZnNfYXR0cmxpc3RfY3Vyc29yKSk7Cj4gCj4gVHdvIHRhYnMgZm9yIHRoZSBjb250aW51YXRpb24g bGluZS4KQWxyaWdodHksIHdpbGwgdXAgZGF0ZS4gIFRoYW5rcyBmb3IgdGhlIHJldmlld3MhCkFs bGlzb24KCj4gCj4gLS1ECj4gCj4gPiArCj4gPiArb3V0X2tmcmVlOgo+ID4gK8KgwqDCoMKgwqDC oMKgeGZzX2l1bmxvY2soaXAsIGxvY2tfbW9kZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBrdmZyZWUo bmFtZWJ1Zik7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyb3I7Cj4gPiArfQo+ ID4gKwo+ID4gZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfcGFyZW50X3V0aWxzLmggYi9mcy94ZnMv eGZzX3BhcmVudF91dGlscy5oCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAw MDAwMDAwMDAwLi5hZDYwYmFlZThiMmEKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2ZzL3hm cy94ZnNfcGFyZW50X3V0aWxzLmgKPiA+IEBAIC0wLDAgKzEsMTEgQEAKPiA+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ID4gKy8qCj4gPiArICogQ29weXJpZ2h0IChjKSAy MDIyIE9yYWNsZSwgSW5jLgo+ID4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gPiArICovCj4g PiArI2lmbmRlZsKgwqDCoMKgwqDCoMKgwqBfX1hGU19QQVJFTlRfVVRJTFNfSF9fCj4gPiArI2Rl ZmluZcKgwqDCoMKgwqDCoMKgwqBfX1hGU19QQVJFTlRfVVRJTFNfSF9fCj4gPiArCj4gPiAraW50 IHhmc19hdHRyX2dldF9wYXJlbnRfcG9pbnRlcihzdHJ1Y3QgeGZzX2lub2RlICppcCwKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCB4ZnNfcHB0cl9pbmZvICpwcGkpOwo+ID4gKyNlbmRpZsKgLyogX19YRlNfUEFS RU5UX1VUSUxTX0hfXyAqLwo+ID4gLS0gCj4gPiAyLjI1LjEKPiA+IAoK