Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp4501681imw; Tue, 12 Jul 2022 09:02:43 -0700 (PDT) X-Google-Smtp-Source: AGRyM1srPqyfJ1Vod10wXirJK4w6sjv6yhi+4t0K50fIcjDRoC50fT0yHHILSvP6tqGvhBG2m5ym X-Received: by 2002:a05:6a00:179e:b0:518:9e1d:1cbd with SMTP id s30-20020a056a00179e00b005189e1d1cbdmr24338923pfg.12.1657641763268; Tue, 12 Jul 2022 09:02:43 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1657641763; cv=pass; d=google.com; s=arc-20160816; b=V0xCGUeQQsFTo+TCXG7B5aly6LJE/HpIyQzT1MVQcVwYhDwmFgEAmmMl9aiIV6BSKy Rc2oPBMgpQSNY0kcowtuq7ICRQLTKOFcR9ANWsIftFXt8plNVqfuFBr8432CJz723o/d tvnqBrasnSGMNlu/n91aJbK6braunffIFsNtjMh+kr+AN9RxtcPHGZ6aQWATVTqOPmNo d8k7OhP3UIsrZChRbkeEeFZerePW0d9ufJLQdLJwTIjvQmIbbaD6cW46y4iHgiFxVdau Xb4I0VMC2DdheehWFsDgMDLcZ7bi7PEfcgkbyh8fvo3UiXrk8DYKqEuM7wE8NPJgmnxK 2jBw== 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-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=Yxl8IBU4isRyAY5r3sX3FRLY8ufj8T9b+ebqZqutMTE=; b=Tee/69NOeEZS97jcWFiyLIpTgo3Y28vFURhdPg58hAn+QJwPPlirKYWQt21ESEr5Lk IYbQXMjEHYT07EHR/75qaMmKM1+MClYg/CWku7LaCNksP3G6AQ8iYaT3CFU5Qg+x8258 8FGjW6TecqvKMtz5IAY7RMrw4bPqxsC+EW7U03xgPwGhHJvbT0JbWTzSK1BdlwbAavcz N7Gtb9nfARcpG7a+Wq221mZNB3zRru0R9Z+2sYgxCRtODD0Tfxalro6NAOATLxmkzM4h eH/tHb5gpZMu1agBP45I83IxP/h11oAPrdN5pBtiWCMQKFTwRD3MhGhPJOlHMB+GY44V petw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=WuU0whSa; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z16-20020a170903019000b0016bda232be8si16889485plg.135.2022.07.12.09.02.27; Tue, 12 Jul 2022 09:02:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-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=@hammerspace.com header.s=selector2 header.b=WuU0whSa; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229772AbiGLQAb (ORCPT + 99 others); Tue, 12 Jul 2022 12:00:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232308AbiGLQAa (ORCPT ); Tue, 12 Jul 2022 12:00:30 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2137.outbound.protection.outlook.com [40.107.93.137]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57E1FC54AD for ; Tue, 12 Jul 2022 09:00:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a/IdX96dp6pLSgtT36JpKUjjJAdLEjlQ22+4M0xghztA0hU/reYeTudlCb0E5f8A6PuecSjIPwoseYInKJ28GUnK8MMOkI1nOpVBquQPDNjJ4Cn0SMI1bARao++2d9YgiyaMW/TS9HOAJ+WI6Q5Zk0zctJlT3LiOHF4Slh1XwxzDMRHAPYOA/c7UqQ+j+VD0CmE5VNrp/q9zgLim1KVn1NnaITjJ6pvTg1+VT09IQQ0bKuannQSaLOHKc+G9q4F8N4DF4IFf/OU/AGPK8d+4nLXMGxRHY8jvQzWtWgAkzK1iBTNqkKY5GlxzBxZS8Z4yjx9ki6TqTmqxvUHfvRMl8w== 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=Yxl8IBU4isRyAY5r3sX3FRLY8ufj8T9b+ebqZqutMTE=; b=QuFAa1P2cNywfUPQ60tS7NaOSsqdz8omocsoaJ+/CIh6EU4MjOTPbsca7TTQtBBeapAJfixyxIKvCKL0onkAXVeJn9utLO7kqhahMo4CTQU3naPGLRFHkb24dtFxXEiG/fYkxM/KxbbKGHHSdXHRx+6s/fVQwEI+I1Bl+8TZOpzKapdYQlG9TqyXdFQBJVsHPyf3uYleZ5NF4Uv3YO8CpwIroD4P3c0fKZuUd0qfe4MUYPivE2WuDG32xkjpyuPBxAsNAnFpXEfJWAY0Lcce0Kk1Y5CGL6beTzp1IbONiJ5Qy+vgYfXzhXiGp72zKAC2okR4jKrKvaXnYh3bjX9Q4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hammerspace.com; dmarc=pass action=none header.from=hammerspace.com; dkim=pass header.d=hammerspace.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hammerspace.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Yxl8IBU4isRyAY5r3sX3FRLY8ufj8T9b+ebqZqutMTE=; b=WuU0whSaFSNOzVqI3YJO/mNZJbpO4RimzgOdUJo3mNeXl3oEe67er9qsYZcXQ+KyVlh9gMUuLaxk9e2ij0XYL7vGsZx8TUA7gwRhGTms0l+UKh2M3FqRsj/TtPh1vPyB4Q76vYupg1+L6MKdV2AHd1W4enbySWiT/ZWGYglGRDM= Received: from CH0PR13MB5084.namprd13.prod.outlook.com (2603:10b6:610:111::7) by MWHPR13MB1296.namprd13.prod.outlook.com (2603:10b6:300:9e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.12; Tue, 12 Jul 2022 16:00:25 +0000 Received: from CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::88ef:2709:1cd2:50cf]) by CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::88ef:2709:1cd2:50cf%7]) with mapi id 15.20.5438.011; Tue, 12 Jul 2022 16:00:25 +0000 From: Trond Myklebust To: "anna.schumaker@netapp.com" , "olga.kornievskaia@gmail.com" CC: "linux-nfs@vger.kernel.org" Subject: Re: [PATCH v1 11/12] SUNRPC create a function that probes only offline transports Thread-Topic: [PATCH v1 11/12] SUNRPC create a function that probes only offline transports Thread-Index: AQHYhLnqhxIGoQGpRUms2j0U9dsuva17B4kA Date: Tue, 12 Jul 2022 16:00:25 +0000 Message-ID: <3a94a7a5fac98751df2f3dbfce1777c1f373f1bb.camel@hammerspace.com> References: <20220620152407.63127-1-olga.kornievskaia@gmail.com> <20220620152407.63127-12-olga.kornievskaia@gmail.com> In-Reply-To: <20220620152407.63127-12-olga.kornievskaia@gmail.com> Accept-Language: en-US, en-GB 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=hammerspace.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c30e62e4-e87d-4250-7a35-08da641fa253 x-ms-traffictypediagnostic: MWHPR13MB1296:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oIB5ZQla6WO89HkGc33QJ97IvY5eWupghdVOEWo6hjrRl+w9n57HmBmLB3ho5eQbqdi41O9oWyMI7pSHMJxBkNHMWYt8u6Wga+gn1RylLGqm6cgtGsD7Ui+rdAKppaKEGQatvfXf+VnVqIKSyrluojK0bPPKZmv8M+y9lzyMG0fdWi3XBD4q7fl8EpNvtF+Uw2fRQc4HqmO1gAvnyvyEq87DHwKKc4FOMA7E7Qk5BzvGEAUR6WArQkfaco1v4m8k2hCiwh7IGlM9TFJR6o6Vr+YdtckzeD+tqCvMkwqszdrz29ZxHGs/E9Eqlj5QCGUi//lfRbj7nVKEpLnAVVyitX2evqTS8dfgdV0p/vzEZ9vMxJUUML6PGLsNxY25EWTnpReoe4BQd+47D1nbFpuoxoz9E8LJXYEFRixdoxWmhbqFxjRhdNy6AH6oJ/kU6r8CPNjgEqUcTWj2vSJJfGfJpgEe0tniDrsrd9M9t2gs+JWE58e2gyR1P3yX0oOo/Obbn0dfBBt5qaIBc54gu/R/UaP0kLBXPIEEfi0wUDQGU7KvFuIEo7fBlCkkX1GFBAiZ1PD3IGZ6sQ7c/3mla4YsB71G9ballK/e8ILCjJrVDLOOF9bIXN1e3CJT85gstFcE4r9++frUJD515kU3Jfz0gGCQo6XZaZuqxxwEJw7c9FTbKbtbcOg+UT9WR1wxna9Y8ymBpuysomyAzvwo/KlH/82d1TODpyx2K+3UH74U1LwCbsObdTlhKdEWcJ9u+a2Q3o9q0o0KfvuIXn4xxx9wnnqR86SL60xWLX1oTrAWnZTplY65xR9YNU5uOKDWTo33 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR13MB5084.namprd13.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(346002)(376002)(136003)(396003)(366004)(39840400004)(186003)(83380400001)(76116006)(2616005)(8936002)(2906002)(6486002)(66446008)(64756008)(66556008)(66946007)(41300700001)(110136005)(66476007)(6512007)(26005)(71200400001)(316002)(5660300002)(6506007)(8676002)(4326008)(478600001)(38100700002)(38070700005)(122000001)(86362001)(36756003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UENpV215RGlvV2xCaE4rUjhQSTBjS0ZXaDRNRmxza2I1U1BPTDlNM0dKVGlu?= =?utf-8?B?eG0ybTA1Q0luWXk0dkhON2d3MWdLL0k3ZmpHYWlDNjJyUDk2MjJsejZ2M3N0?= =?utf-8?B?SmpVU0hVdzBqcHNDRnVWa0p0NXRaaUdtWnplVkRjYmlKdVd6V3dqY2Zwbyt6?= =?utf-8?B?akpyUWJOTDFWaWxRWFQ1bTdVKzhrdlNvaFVPM0J1WitwOHl4a0VjNEJHMDBO?= =?utf-8?B?UC8vZFk5aWJyRHAwUEV1cENuUVJoNlNwdjBZSHc1Tk9rOHdPd2N5NmxXSk9P?= =?utf-8?B?cDBGT1dEaVUrVzQ1eVVIaG5yWkU2eXpmbXovZWZ4SmsxeU85S2REN1lnVjU5?= =?utf-8?B?S0EySFUzT1QzNVZPU0toQ0tiS3hITEtoaWEwa0x3blRMbks0VDMzd2VuMGZL?= =?utf-8?B?Z0x3c3dlanErUWRXZ0ZlNzFkWGkwbFdtYWhvdU9NV3FHSlVqeXlJZ2U2Y2RD?= =?utf-8?B?eGZBd04rUGVrSUVvWWdNdGhPbCtuc21WS1dFOTAyc0diMjRxekZjVUJHeXVz?= =?utf-8?B?YVJPdlpYTXdyZDE5Wjg2N1BYVFl6a1JHN2tXQ1lJMmhQM09jM2lubS9Pa1lP?= =?utf-8?B?TWIrUzl4cTlUdWw5SnV1QXdHUFBDQ09WKzZ6TWhoTWxLSHZ2OXFPQVAxV25E?= =?utf-8?B?MXp6NTYreSswS2dxejhUNEwwVTcwc1NuR2NWaWhJQ0E0OGtMVXBDeDlFcXhO?= =?utf-8?B?Y0l0dEV4ZTBYRkY1cmNBRUNjU24vRkxJTUVaM0p6K0FaaVZNbEFKSHUrNlNQ?= =?utf-8?B?R1FHQjFTa1hrZGk4R1dteFRER3Y4aE5yYmJlZDFQQllnZmdQZkROYjBMNGE3?= =?utf-8?B?cTgrbTJQKys2eS9mdHFWTmdOZDR1RE53QzNmRnh3VlpqczI4QlB3SGVUUEVV?= =?utf-8?B?NnUzMHdOVmQ3NmNWT2V3MmJ6R3A0ZDZmaTdFUHdTSk5uK0xYaUxUUm1tVVNB?= =?utf-8?B?N2Izb0UxeFFXRFhHVmZwckdhM0pWU3JSRi82bDJHNWdBaHlKY3locEkwY3Fk?= =?utf-8?B?NTladDJCSmxkRzFYRTZLQmlLWGE0ZE5hVGt6SGE4ajJENGxGalBXS0lLMmlu?= =?utf-8?B?dTQxNlY4VzVoK2oyRm5sRUJxSitZSVFYSzFlUy9UZ280WTdpSWlMVm9rOVE0?= =?utf-8?B?MzY2Sm9kc1MvaGRMNzBoL21hYXc5b1lHMS9qaVNJTWsxZmQvaTFFb1Q0aVI4?= =?utf-8?B?bXVIRDMwUnVYUFBCQloyMDhUV1BPWUtIbWptUThWR3k5K01VR0xMMHo3VFhC?= =?utf-8?B?d1prMEh1SDY1K2xVSEEvR3JsMlpIeUdaVW40UXo1dUd0TEVTQVFOcGYweHZB?= =?utf-8?B?UGozQ1UrbkxnYmJIUmpkYVE5MnZXbkY3bDR6WGJLNkdXSlVWcFdMNTBVK0c4?= =?utf-8?B?OTFUYVcrVkhweFpWdUJybkxnTHVvZ1VFK0xkdTAzTzNIZEpsMnROS2hubzRz?= =?utf-8?B?TW55UzZsMXJSZ25mM3hGTFlSSEFBME9jTkkwWCtBL1FCaXZSODhFQkxYaXRj?= =?utf-8?B?SHUwcVo3NEMvZklJeWFjR0xNQXovT3J4YTVZdno3VHNjbVQrdG50MmFuR2xV?= =?utf-8?B?T0J5S0JRbzRiblhIRVQzVlNaWkdrSHZxODNqUEpBSHJkRjRuQWI2cEhuVTBG?= =?utf-8?B?NVRlN1k3VFFpaTJaRXhsNE8rdkRVdHhKVkFNNUQxbGNUOGV5ZnZVNEgyMWdV?= =?utf-8?B?UmpZRDJzZE5YMExIQm5rVi9XUExwL0R2RnRzN2hWTzNJQW5CRGk1M2Z5aDdz?= =?utf-8?B?K2N5Mk9iTFliMnlUc1ZWczZkR2Y4S3FyTURNV1V4MnNDYm9BNjFWeGlOaExs?= =?utf-8?B?cG5hRnpjRkdSZ004cXFDTXZpSlBTcGNqbTVXNlVqbCs3aFk2N3RYUVhFNzZs?= =?utf-8?B?ODc1SGFIZlF4SThVWmExdUxsVVU3cjRLa0k4d1NQSnd1bmI0WGlqSWFMM3M3?= =?utf-8?B?bGlpcEZLL3ZlY0F1SGkvNTliTGJRM0x4Q3o1NDlsZ0E1MVU2TVgybU1IY1hF?= =?utf-8?B?QkYzRUxDSk80emFwNzM5MjFuWitaMGdJR0cxRE1YaTluNlhuemh1OUlwWDlQ?= =?utf-8?B?ck1LVGU3MlhEV1RFclVuMlA3L1NvU1AzSEprNXdxSjZKejRFYnl6Rld3b2xE?= =?utf-8?B?TW9jTlA2Ym5OVFJsOWRlSVAvbStwUlBhTDdIVUFBaWZCZ3NCNzhwM3VoSUlP?= =?utf-8?B?bVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: hammerspace.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH0PR13MB5084.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c30e62e4-e87d-4250-7a35-08da641fa253 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jul 2022 16:00:25.6333 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0d4fed5c-3a70-46fe-9430-ece41741f59e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: x4MURmxydzx/NBaJmc0RugCE2QH07w/3a1hTkq1AVB8EkxX9cfDkrZSjk5MIZ2TTg5c5dzk38F7qBgDGWnT4vg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR13MB1296 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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-nfs@vger.kernel.org T24gTW9uLCAyMDIyLTA2LTIwIGF0IDExOjI0IC0wNDAwLCBPbGdhIEtvcm5pZXZza2FpYSB3cm90 ZToKPiBGcm9tOiBPbGdhIEtvcm5pZXZza2FpYSA8a29sZ2FAbmV0YXBwLmNvbT4KPiAKPiBGb3Ig b25seSBvZmZsaW5lIHRyYW5zcG9ydHMsIGF0dGVtcHQgdG8gY2hlY2sgY29ubmVjdGl2aXR5IHZp YQo+IGEgTlVMTCBjYWxsIGFuZCwgaWYgdGhhdCBzdWNjZWVkcywgY2FsbCBhIHByb3ZpZGVkIHNl c3Npb24gdHJ1bmtpbmcKPiBkZXRlY3Rpb24gZnVuY3Rpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTog T2xnYSBLb3JuaWV2c2thaWEgPGtvbGdhQG5ldGFwcC5jb20+Cj4gLS0tCj4gwqBmcy9uZnMvbmZz NHByb2MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyICstCj4gwqBpbmNsdWRlL2xpbnV4L3N1 bnJwYy9jbG50LmggfMKgIDMgKystCj4gwqBuZXQvc3VucnBjL2NsbnQuY8KgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAtLQo+IMKg bmV0L3N1bnJwYy9kZWJ1Z2ZzLmPCoMKgwqDCoMKgwqDCoCB8wqAgMyArKy0KPiDCoG5ldC9zdW5y cGMvc3RhdHMuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMiArLQo+IMKgNSBmaWxlcyBjaGFuZ2Vk LCA0OCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9mcy9u ZnMvbmZzNHByb2MuYyBiL2ZzL25mcy9uZnM0cHJvYy5jCj4gaW5kZXggMTUyZGEyYmM1MTAwLi4w MDc3OGYzNTEyODMgMTAwNjQ0Cj4gLS0tIGEvZnMvbmZzL25mczRwcm9jLmMKPiArKysgYi9mcy9u ZnMvbmZzNHByb2MuYwo+IEBAIC04NTMzLDcgKzg1MzMsNyBAQCBpbnQgbmZzNF9wcm9jX2JpbmRf Y29ubl90b19zZXNzaW9uKHN0cnVjdAo+IG5mc19jbGllbnQgKmNscCwgY29uc3Qgc3RydWN0IGNy ZWQgKmNyCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuY3JlZCA9IGNyZWQsCj4g wqDCoMKgwqDCoMKgwqDCoH07Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBycGNfY2xudF9pdGVy YXRlX2Zvcl9lYWNoX3hwcnQoY2xwLT5jbF9ycGNjbGllbnQsCj4gTlVMTCwKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5mczRfcHJvY19iaW5kX2Nvbm5f dG9fc2Vzc2lvbl9jYWxsYmFjaywKPiAmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZnM0X3Byb2NfYmluZF9jb25uX3RvX3Nlc3Npb25fY2Fs bGJhY2ssCj4gJmRhdGEsIGZhbHNlKTsKPiDCoH0KPiDCoAo+IMKgLyoKPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9zdW5ycGMvY2xudC5oCj4gYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9jbG50 LmgKPiBpbmRleCBhYzEwMjRkYTg2YzUuLmEwMTYwYjgzZDRhNCAxMDA2NDQKPiAtLS0gYS9pbmNs dWRlL2xpbnV4L3N1bnJwYy9jbG50LmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9jbG50 LmgKPiBAQCAtMjE1LDcgKzIxNSw3IEBAIGludMKgwqDCoMKgwqDCoMKgwqDCoHJwY19sb2NhbGFk ZHIoc3RydWN0IHJwY19jbG50ICosCj4gc3RydWN0IHNvY2thZGRyICosIHNpemVfdCk7Cj4gwqBp bnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBycGNfY2xudF9pdGVyYXRlX2Zvcl9lYWNoX3hwcnQo c3RydWN0IHJwY19jbG50ICpjbG50LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGludCAoKnNldHVwKShzdHJ1Y3QgcnBjX2NsbnQgKiwgc3RydWN0Cj4g cnBjX3hwcnRfaXRlciAqKSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpbnQgKCpmbikoc3RydWN0IHJwY19jbG50ICosIHN0cnVjdCBycGNfeHBydAo+ ICosIHZvaWQgKiksCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB2b2lkICpkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHZvaWQgKmRhdGEsIGJvb2wgZG9fcmV3aW5kKTsKPiDCoAo+IMKgaW50wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcnBjX2NsbnRfdGVzdF9hbmRfYWRkX3hwcnQoc3RydWN0IHJwY19j bG50ICpjbG50LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBycGNfeHBydF9zd2l0Y2ggKnhwcywKPiBAQCAtMjM2LDYgKzIzNiw3IEBACj4g aW50wqDCoMKgwqDCoMKgwqDCoMKgcnBjX2NsbnRfc2V0dXBfdGVzdF9hbmRfYWRkX3hwcnQoc3Ry dWN0IHJwY19jbG50ICosCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHJwY194cHJ0ICosCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdm9pZCAqKTsKPiDCoHZvaWTCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcnBjX2NsbnRfbWFuYWdlX3RydW5rZWRfeHBydHMoc3RydWN0IHJwY19jbG50ICosIHZvaWQK PiAqKTsKPiArdm9pZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBycGNfcHJvYmVfdHJ1bmtlZF94cHJ0 cyhzdHJ1Y3QgcnBjX2NsbnQgKiwgdm9pZCAqKTsKPiDCoAo+IMKgY29uc3QgY2hhciAqcnBjX3By b2NfbmFtZShjb25zdCBzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spOwo+IMKgCj4gZGlmZiAtLWdpdCBh L25ldC9zdW5ycGMvY2xudC5jIGIvbmV0L3N1bnJwYy9jbG50LmMKPiBpbmRleCA2YjA0YjI5YmY4 NDIuLjM0OGQwNzcyYzkxZCAxMDA2NDQKPiAtLS0gYS9uZXQvc3VucnBjL2NsbnQuYwo+ICsrKyBi L25ldC9zdW5ycGMvY2xudC5jCj4gQEAgLTgzMCw3ICs4MzAsNyBAQCBpbnQgcnBjX2NsbnRfeHBy dF9pdGVyX29mZmxpbmVfaW5pdChzdHJ1Y3QKPiBycGNfY2xudCAqY2xudCwKPiDCoGludCBycGNf Y2xudF9pdGVyYXRlX2Zvcl9lYWNoX3hwcnQoc3RydWN0IHJwY19jbG50ICpjbG50LAo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ICgqc2V0dXApKHN0cnVjdCBycGNfY2xudCAq LCBzdHJ1Y3QgcnBjX3hwcnRfaXRlcgo+ICopLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaW50ICgqZm4pKHN0cnVjdCBycGNfY2xudCAqLCBzdHJ1Y3QgcnBjX3hwcnQgKiwgdm9p ZAo+ICopLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2b2lkICpkYXRhKQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2b2lkICpkYXRhLCBib29sIGRvX3Jld2luZCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHJwY194cHJ0X2l0ZXIgeHBpOwo+IMKgwqDC oMKgwqDCoMKgwqBpbnQgcmV0Owo+IEBAIC04NTAsNiArODUwLDkgQEAgaW50IHJwY19jbG50X2l0 ZXJhdGVfZm9yX2VhY2hfeHBydChzdHJ1Y3QKPiBycGNfY2xudCAqY2xudCwKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhwcnRfcHV0KHhwcnQpOwo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKHJldCA8IDApCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoZG9fcmV3aW5kKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgeHBydF9pdGVyX3Jld2luZCgmeHBpKTsKClRoaXMgcmVhbGx5IG5lZWRz IHRvIGJlIGFub3RoZXIgc2VwYXJhdGUgZnVuY3Rpb24uIFlvdSBhcmUgbm90Cml0ZXJhdGluZyBv dmVyIGVhY2ggeHBydCBoZXJlLCB5b3UgYXJlIGFsd2F5cyBsb29raW5nIGF0IHRoZSBmaXJzdAp2 YWxpZCBlbnRyeS4KCj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgeHBydF9p dGVyX2Rlc3Ryb3koJnhwaSk7Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gQEAgLTMw MzIsNiArMzAzNSw0MCBAQCBpbnQgcnBjX2NsbnRfYWRkX3hwcnQoc3RydWN0IHJwY19jbG50ICpj bG50LAo+IMKgfQo+IMKgRVhQT1JUX1NZTUJPTF9HUEwocnBjX2NsbnRfYWRkX3hwcnQpOwo+IMKg Cj4gK3N0YXRpYyBpbnQgcnBjX3hwcnRfcHJvYmVfdHJ1bmtlZChzdHJ1Y3QgcnBjX2NsbnQgKmNs bnQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHJwY194cHJ0ICp4cHJ0LAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKmRh dGEpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcnBjX3hwcnRfc3dpdGNoICp4cHM7Cj4g K8KgwqDCoMKgwqDCoMKgc3RydWN0IHJwY194cHJ0ICptYWluX3hwcnQ7Cj4gK8KgwqDCoMKgwqDC oMKgaW50IHN0YXR1cyA9IDA7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHhwcnRfZ2V0KHhwcnQpOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqByY3VfcmVhZF9sb2NrKCk7Cj4gK8KgwqDCoMKgwqDCoMKgbWFp bl94cHJ0ID0geHBydF9nZXQocmN1X2RlcmVmZXJlbmNlKGNsbnQtPmNsX3hwcnQpKTsKPiArwqDC oMKgwqDCoMKgwqB4cHMgPSB4cHJ0X3N3aXRjaF9nZXQocmN1X2RlcmVmZXJlbmNlKGNsbnQtCj4g PmNsX3hwaS54cGlfeHBzd2l0Y2gpKTsKPiArwqDCoMKgwqDCoMKgwqBzdGF0dXMgPSBycGNfY21w X2FkZHJfcG9ydCgoc3RydWN0IHNvY2thZGRyICopJnhwcnQtPmFkZHIsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKHN0cnVj dCBzb2NrYWRkciAqKSZtYWluX3hwcnQtPmFkZHIpOwo+ICvCoMKgwqDCoMKgwqDCoHJjdV9yZWFk X3VubG9jaygpOwo+ICvCoMKgwqDCoMKgwqDCoHhwcnRfcHV0KG1haW5feHBydCk7Cj4gK8KgwqDC oMKgwqDCoMKgaWYgKHN0YXR1cyB8fCAhdGVzdF9iaXQoWFBSVF9PRkZMSU5FLCAmeHBydC0+c3Rh dGUpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dDsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgc3RhdHVzID0gcnBjX2NsbnRfYWRkX3hwcnRfaGVscGVyKGNsbnQsIHhwcnQs IGRhdGEpOwo+ICtvdXQ6Cj4gK8KgwqDCoMKgwqDCoMKgeHBydF9wdXQoeHBydCk7Cj4gK8KgwqDC oMKgwqDCoMKgeHBydF9zd2l0Y2hfcHV0KHhwcyk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHN0 YXR1czsKPiArfQo+ICsKPiArdm9pZCBycGNfcHJvYmVfdHJ1bmtlZF94cHJ0cyhzdHJ1Y3QgcnBj X2NsbnQgKmNsbnQsIHZvaWQgKmRhdGEpCgonZGF0YScgaXMgbm90IGEgJ3ZvaWQgKicuIFlvdSBw YXRjaCA0NDc1NzRhNTEwZmMgKCJTVU5SUEMgcmVzdHJ1Y3R1cmUKcnBjX2NsbnRfc2V0dXBfdGVz dF9hbmRfYWRkX3hwcnQiKSBtZWFucyB0aGF0IG9ubHkgYSAnc3RydWN0CnJwY19hZGRfeHBydF90 ZXN0JyBhcmd1bWVudCBpcyBhbGxvd2VkIGhlcmUuCgo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgcnBj X2NsbnRfaXRlcmF0ZV9mb3JfZWFjaF94cHJ0KGNsbnQsCj4gcnBjX2NsbnRfeHBydF9pdGVyX29m ZmxpbmVfaW5pdCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJwY194cHJ0X3Byb2JlX3RydW5rZWQsIGRhdGEsIHRydWUpOwo+ICt9Cj4gK0VYUE9SVF9T WU1CT0xfR1BMKHJwY19wcm9iZV90cnVua2VkX3hwcnRzKTsKPiArCj4gwqBzdGF0aWMgaW50IHJw Y194cHJ0X29mZmxpbmVfZGVzdHJveShzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQsCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgcnBjX3hwcnQgKnhwcnQsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICpkYXRhKQo+ IEBAIC0zMDcxLDcgKzMxMDgsNyBAQCBzdGF0aWMgaW50IHJwY194cHJ0X29mZmxpbmVfZGVzdHJv eShzdHJ1Y3QKPiBycGNfY2xudCAqY2xudCwKPiDCoHZvaWQgcnBjX2NsbnRfbWFuYWdlX3RydW5r ZWRfeHBydHMoc3RydWN0IHJwY19jbG50ICpjbG50LCB2b2lkCj4gKmRhdGEpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHJwY19jbG50X2l0ZXJhdGVfZm9yX2VhY2hfeHBydChjbG50LCBOVUxMLAo+ IHJwY194cHJ0X29mZmxpbmVfZGVzdHJveSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGF0YSwgZmFsc2UpOwo+IMKgfQo+IMKgRVhQT1JUX1NZTUJPTF9H UEwocnBjX2NsbnRfbWFuYWdlX3RydW5rZWRfeHBydHMpOwo+IMKgCj4gQEAgLTMxMDUsNyArMzE0 Miw3IEBAIHJwY19zZXRfY29ubmVjdF90aW1lb3V0KHN0cnVjdCBycGNfY2xudCAqY2xudCwKPiDC oMKgwqDCoMKgwqDCoMKgfTsKPiDCoMKgwqDCoMKgwqDCoMKgcnBjX2NsbnRfaXRlcmF0ZV9mb3Jf ZWFjaF94cHJ0KGNsbnQsIE5VTEwsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcnBjX3hwcnRfc2V0X2Nvbm5lY3RfdGltZW91dCwKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZ0aW1lb3V0KTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZ0aW1lb3V0LCBmYWxzZSk7 Cj4gwqB9Cj4gwqBFWFBPUlRfU1lNQk9MX0dQTChycGNfc2V0X2Nvbm5lY3RfdGltZW91dCk7Cj4g wqAKPiBAQCAtMzIyOCw3ICszMjY1LDcgQEAgcnBjX2NsbnRfc3dhcF9hY3RpdmF0ZShzdHJ1Y3Qg cnBjX2NsbnQgKmNsbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbG50ID0g Y2xudC0+Y2xfcGFyZW50Owo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoYXRvbWljX2luY19yZXR1cm4o JmNsbnQtPmNsX3N3YXBwZXIpID09IDEpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcnBjX2NsbnRfaXRlcmF0ZV9mb3JfZWFjaF94cHJ0KGNsbnQsIE5VTEwsCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcnBjX2NsbnRfc3dhcF9hY3RpdmF0ZV9jYWxsYmFjaywKPiBOVUxMKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBycGNf Y2xudF9zd2FwX2FjdGl2YXRlX2NhbGxiYWNrLAo+IE5VTEwsIGZhbHNlKTsKPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqBFWFBPUlRfU1lNQk9MX0dQTChycGNfY2xudF9zd2Fw X2FjdGl2YXRlKTsKPiBAQCAtMzI0Nyw3ICszMjg0LDcgQEAgcnBjX2NsbnRfc3dhcF9kZWFjdGl2 YXRlKHN0cnVjdCBycGNfY2xudCAqY2xudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGF0 b21pY19kZWNfaWZfcG9zaXRpdmUoJmNsbnQtPmNsX3N3YXBwZXIpID09IDApCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBycGNfY2xudF9pdGVyYXRlX2Zvcl9lYWNoX3hwcnQoY2xu dCwgTlVMTCwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBycGNfY2xudF9zd2FwX2RlYWN0aXZhdGVfY2FsbGJhY2ssCj4gTlVM TCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcnBjX2NsbnRfc3dhcF9kZWFjdGl2YXRlX2NhbGxiYWNrLAo+IE5VTEwsIGZh bHNlKTsKPiDCoH0KPiDCoEVYUE9SVF9TWU1CT0xfR1BMKHJwY19jbG50X3N3YXBfZGVhY3RpdmF0 ZSk7Cj4gwqAjZW5kaWYgLyogQ09ORklHX1NVTlJQQ19TV0FQICovCj4gZGlmZiAtLWdpdCBhL25l dC9zdW5ycGMvZGVidWdmcy5jIGIvbmV0L3N1bnJwYy9kZWJ1Z2ZzLmMKPiBpbmRleCBhYjYwYjRk M2RlYjIuLjljNzAwYmFkMWVjNSAxMDA2NDQKPiAtLS0gYS9uZXQvc3VucnBjL2RlYnVnZnMuYwo+ ICsrKyBiL25ldC9zdW5ycGMvZGVidWdmcy5jCj4gQEAgLTE2MCw3ICsxNjAsOCBAQCBycGNfY2xu dF9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBycGNfY2xudCAqY2xudCkKPiDCoMKgwqDCoMKgwqDC oMKgZGVidWdmc19jcmVhdGVfZmlsZSgidGFza3MiLCBTX0lGUkVHIHwgMDQwMCwgY2xudC0KPiA+ Y2xfZGVidWdmcywgY2xudCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgJnRhc2tzX2ZvcHMpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcnBj X2NsbnRfaXRlcmF0ZV9mb3JfZWFjaF94cHJ0KGNsbnQsIE5VTEwsIGRvX3hwcnRfZGVidWdmcywK PiAmeHBydG51bSk7Cj4gK8KgwqDCoMKgwqDCoMKgcnBjX2NsbnRfaXRlcmF0ZV9mb3JfZWFjaF94 cHJ0KGNsbnQsIE5VTEwsIGRvX3hwcnRfZGVidWdmcywKPiAmeHBydG51bSwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZhbHNlKTsKPiDCoH0KPiDCoAo+ IMKgdm9pZAo+IGRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3N0YXRzLmMgYi9uZXQvc3VucnBjL3N0 YXRzLmMKPiBpbmRleCBlNTBmNzNhNGFjYTUuLjYwZTJkNzM4YThmMSAxMDA2NDQKPiAtLS0gYS9u ZXQvc3VucnBjL3N0YXRzLmMKPiArKysgYi9uZXQvc3VucnBjL3N0YXRzLmMKPiBAQCAtMjU4LDcg KzI1OCw3IEBAIHZvaWQgcnBjX2NsbnRfc2hvd19zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwK PiBzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHNlcV9wcmludGYoc2Vx LCAicC92OiAldS8ldSAoJXMpXG4iLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNsbnQtPmNsX3Byb2csIGNsbnQtPmNsX3ZlcnMsIGNsbnQtCj4gPmNs X3Byb2dyYW0tPm5hbWUpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcnBjX2NsbnRfaXRlcmF0ZV9m b3JfZWFjaF94cHJ0KGNsbnQsIE5VTEwsIGRvX3ByaW50X3N0YXRzLAo+IHNlcSk7Cj4gK8KgwqDC oMKgwqDCoMKgcnBjX2NsbnRfaXRlcmF0ZV9mb3JfZWFjaF94cHJ0KGNsbnQsIE5VTEwsIGRvX3By aW50X3N0YXRzLAo+IHNlcSwgZmFsc2UpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHNlcV9wcmlu dGYoc2VxLCAiXHRwZXItb3Agc3RhdGlzdGljc1xuIik7Cj4gwqDCoMKgwqDCoMKgwqDCoGZvciAo b3AgPSAwOyBvcCA8IG1heHByb2M7IG9wKyspIHsKCi0tIApUcm9uZCBNeWtsZWJ1c3QKTGludXgg TkZTIGNsaWVudCBtYWludGFpbmVyLCBIYW1tZXJzcGFjZQp0cm9uZC5teWtsZWJ1c3RAaGFtbWVy c3BhY2UuY29tCgoK