Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1140250pxb; Wed, 10 Feb 2021 00:40:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJy1Xn6fZKyVfDFeQSIRfs6ruilv39wqHDQVs+7fcoJaN4NQ3Lm2VnkuCNMrlAB3AU3yhN4y X-Received: by 2002:a17:906:15ca:: with SMTP id l10mr1860090ejd.402.1612946424475; Wed, 10 Feb 2021 00:40:24 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1612946424; cv=pass; d=google.com; s=arc-20160816; b=aWoxcrL6EJ5z9EmvR5k+QItPjjmm9zv/xjpLdpVmTnnEVRjbVzqW3MDvRVzKqAjtLx StSHCfmYgpdUr7YwLueA1+2EPuSg7eE9J6LkcHQ6HgQJq2JBHNKTJj1JlcW6XLpf2m3a M1v+SHfwGihyalMDcgic5E9YWIJCW+AWAaz1Ba0f9OBClmIck2Ui2NAZOVZqan1XKX9x QWqUTIFQtJKx/AjYNzax6xbUHZayDqTIRtDHL1X+1fRZ4Ji27YRzgwBW4sVr4KhCdYPO Ac9/j0ADl3oDcngA/O/KJN8wlfl6PUNUHQ+Rteu2pl5YSdPYq7pMH1BI2/957JezdiOD by7g== 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:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature:ironport-sdr:ironport-sdr; bh=bbs+CbGXs551REF7/IVDWHyW80l/15ph112MMU5eHXw=; b=OkfGA4A3j6+8PkoNf9ujZZnUjjEIHXarAsgD+xSyHRrIyZlYlVK0IMBWymoBi9RJMw MfdYHTUBEmvptTieQxXiQpH4mDa+3V2S1jdHRV6NmNzhT08f3BI7DP/I+4HN8e0Ap+QR 9M4GReLTI4kX+XySS9370iPpOOKJWl45lPY4/6xBLwN02RZq2lrsf/ZwkVlv1MWX+2ng qZaXDWtUwascgKgrfSs5VFb9OfYTnWxKe+rv6V4//DWtJ6cRxjfsWJvPQ1WjmOeHz+DI IBl+ifXEKzfYYhoiKujMJObSQVfR6eBeqg0WpIZByLsKBKzGf3bXOVlwsFEeSViNWtCB wQ5A== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=stvexCx1; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k27si883835eje.568.2021.02.10.00.39.58; Wed, 10 Feb 2021 00:40:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=stvexCx1; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232107AbhBJHJ3 (ORCPT + 99 others); Wed, 10 Feb 2021 02:09:29 -0500 Received: from mga06.intel.com ([134.134.136.31]:41208 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231915AbhBJHJ1 (ORCPT ); Wed, 10 Feb 2021 02:09:27 -0500 IronPort-SDR: VGKGkbdafYf1KvRfATSz6S0lPg0lG5nPZjqN1+HI+X8+yvWOYVsjkJjI9p7/h5n7dLOXDM0Rj7 o02CKYoLyu4Q== X-IronPort-AV: E=McAfee;i="6000,8403,9890"; a="243519148" X-IronPort-AV: E=Sophos;i="5.81,167,1610438400"; d="scan'208";a="243519148" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Feb 2021 23:08:40 -0800 IronPort-SDR: 45ABPnA0LjdGcj+UDgk2eAM2SngU96lZtFKlV/h6rgbVw1QvMkBDsn8RtHwmpdZT89c6SwzPLS l9h+IKe8NgWw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,167,1610438400"; d="scan'208";a="412971499" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga004.fm.intel.com with ESMTP; 09 Feb 2021 23:08:39 -0800 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 9 Feb 2021 23:08:39 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Tue, 9 Feb 2021 23:08:39 -0800 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.171) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Tue, 9 Feb 2021 23:08:36 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ix0rUAccu6cfl1a4qdLahOjQmzEipmUYbLavumpJgmuNtqaCe1hGWynQpRbuR0gs25RkvDkG3Fjv4DGXthWGvo2UwjiFsGNeqjdTDm3l1v001efh+3/53sv3tgHCE+I023BP/oftIS3ESjrTu+tE+zlgcPJ0dS/LoChT2zdIumL95Ot4Ioak19cMd9NBw2f0QzVOz9+0kMMsBxlkk875grckATVLr9jUkg+xYxH4JeOuuFKcA/YKo9u43XcW50hVlP+eRj3knXd/rP03Xnh4E1hQTX5xANNxFilGhH+XIa1IiFQLJdE4DwdOpl6sorqfL3MmPNa8cs70/DrBJ6Ynxg== 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-SenderADCheck; bh=bbs+CbGXs551REF7/IVDWHyW80l/15ph112MMU5eHXw=; b=h+jG/XuLYonTGKjwBjmMdtFHk/UU1A0qbffIwsL72H5lHmVvHgaO1bOfgzd0JNnrkoMEF2YELTQ6P3S/lefWALKZMfYlP+71q0YxUHsSNv/2zA7qxPrhQBNPsohMLECZXirx/zIv3OoCy5dhAuHZmpFY4TH1s5T+ipMOpGCaTd7HMLGR8V+RxNPqX+RFOJMrbjYkCKesZodJx8nnDKjv3rkesyTlRVoQmvjzlyJT/RbQlfYt8Us2+3fhx/JAukPpHTRICL4mKrBHDFs7RLSorDZotgrFMMRlu2M8/MYrw3pQiVdAlKqnRALu/ST5NvRg9duQ2eLXuKbZw7mQkGxowA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bbs+CbGXs551REF7/IVDWHyW80l/15ph112MMU5eHXw=; b=stvexCx1gyw1VkxNbHeiYJhw5YnVg9fyTD66r3dKBzVot7++gE5DnR7vbaykzlRB7qroKoEhTjKNG2mWQGaextV1Uo+h7UH9i/hT6eu/k6eOehyvMVa4Wd68+Z8I3uSeNEAn83aFlVhBqNHTadTfEPCI5ZaI2C0Qis8dlgrpMMc= Received: from MW3PR11MB4556.namprd11.prod.outlook.com (2603:10b6:303:5b::21) by CO1PR11MB4802.namprd11.prod.outlook.com (2603:10b6:303:96::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.27; Wed, 10 Feb 2021 07:08:35 +0000 Received: from MW3PR11MB4556.namprd11.prod.outlook.com ([fe80::6572:aed9:e470:988c]) by MW3PR11MB4556.namprd11.prod.outlook.com ([fe80::6572:aed9:e470:988c%5]) with mapi id 15.20.3825.030; Wed, 10 Feb 2021 07:08:35 +0000 From: "Stotland, Inga" To: "michal.lowas-rzechonek@silvair.com" CC: "luiz.dentz@gmail.com" , "Gix, Brian" , "linux-bluetooth@vger.kernel.org" Subject: Re: [PATCH BlueZ v3 2/3] mesh: Add unit test IO Thread-Topic: [PATCH BlueZ v3 2/3] mesh: Add unit test IO Thread-Index: AQHW/ExUENcbuN8vA0C7ruyp0ZFzuKpP3DKAgAEcmoCAAAWyAA== Date: Wed, 10 Feb 2021 07:08:35 +0000 Message-ID: References: <20210206055023.401381-1-inga.stotland@intel.com> <20210206055023.401381-3-inga.stotland@intel.com> <20210209134933.tmy6n4smpd5rkpcb@mlowasrzechonek2133> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.5 (3.36.5-2.fc32) authentication-results: silvair.com; dkim=none (message not signed) header.d=none;silvair.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [134.134.139.74] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0ef0037a-c048-4e68-e075-08d8cd92aea7 x-ms-traffictypediagnostic: CO1PR11MB4802: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:175; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZiPQSpsbvAc94QrLcArJIM1AU9aEBGqdfdvI3dadkgt7HyJ9z1A98oKJyOks6RJKAvDeUCwC4YLGuLliHAek0Z+T51xq033+Qk8oEqzc0aoCbfD7cNym02NmZW4WGmH3htnQnrxEVkW8NQ1BqsoRTd4Gwt3Tzxxv4sPUuFWFOCKLA/MDhA5QR3NGHVM9A3gLS4HNlLw+1Pz86XrMzIA0i+4ZmwekRd0I9bdqmvp1u8z/G51W+ZmNSA+EgBYtTpgFoy1sc9+NRaEKYagYz6iXZmSQTlmSwbaJdfnpzErvmR0z/RWr+XSvVNSXr65IDEpW/A3/5D+t+Sa6Q2l7nCuqEFuLWleM18i89Wm0E7S22BwtPAFsoa+0qN42+HXPRGlTLSEQ25IQLsraXFc6vu5c1LlMvhY83Dz//HlMi+GCD5+9/27ms6tztorLj367DCQWUTrGqR2P+pQfsGpRhSJDPQQNRGIQxpK7B/gKuc5cainP5oI4IJlMYllIALGSQDaa/CgHcSqI5bICU1gS/I4sGkGDsI6pawe9HqBiaNVhL+TieQ5wEDeV8QYjrlHqv6di0HvzY+UD/mlHlVNdaQ9HUjk3BieMLvwA7ee2i65VVJE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR11MB4556.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(376002)(39860400002)(396003)(136003)(346002)(366004)(26005)(83380400001)(6506007)(4326008)(966005)(186003)(6486002)(5660300002)(30864003)(316002)(36756003)(478600001)(66946007)(64756008)(66446008)(66556008)(66476007)(8936002)(76116006)(6512007)(54906003)(2906002)(8676002)(86362001)(71200400001)(6916009)(2616005)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?dno5T1JYMEwrWTRJRld0WXhQZy9ETVhCMjVtdUFHZUxlcWRaTUs5MVNmSFpy?= =?utf-8?B?K2FQZ2hXeVROa2MxWmVWcUgvTFcyQ2xiek5MampwNHdsZi9jWDZpb1YvWUla?= =?utf-8?B?RHVPMjZnaEwwREZ3cHdHd2RZRi9KRVBWKzZGOE5SYWlISUZJbnNJWGxJblBy?= =?utf-8?B?ZGxraHFKdnBzdGNJS25DQVZpQmpNUE1kcnJ4VTRzRU9QOU9XRFhBQ2NUNnFE?= =?utf-8?B?NW5sYUtBN2toR2hZTEpQaHVxMTFRVlgxZWtlWlZ3SjZuOHNVYmtlK3FvSUVZ?= =?utf-8?B?dzFIck9JRFZybWd1MnJWdHhRSEhsSzk5VHZTOG0yN3QvTExpeUtnWlZSdFY2?= =?utf-8?B?bWFNSDFtN2hvbVlTaUJyUnZ0Z0dxaVZJQXVDb2dzcmxIM2FNcE05TE92US81?= =?utf-8?B?VFN5eG84WjN2anIxVnVIenpRVkZWeEVTYi9tdlJmWDFheXFCd0pUMW9mZ0hP?= =?utf-8?B?MmNxM1MvdVVtN2N1Q2VkeUZRV0FXc1FoK0M0RGd4T3RIRHVSRlZuOWlqcmsx?= =?utf-8?B?ays5Ky80a0djVFA3NXYrR3ovdFZkT1ZUZlY1RVNtaittazhJbm5nbHVuUkVR?= =?utf-8?B?VHVhcUFxTTNhK1YrVXBFcUtqSTBtM3Y5ajcxV0g5U0orbGxMMEFNcm1rcCt5?= =?utf-8?B?N0YrK3JRRTUxMkh1YUYxR3QzSlFxVDRrWTdSYzF0VjhidXVpWmFYWWtVZk82?= =?utf-8?B?RFpTUWdtRURHWFYxWVhNUUZLMGlJUzlZeUY3VFRwbDFVYzlWdlhMWkpLY2Ji?= =?utf-8?B?eXErckQ4Ri9IMU9XNUZVRnVmTDJPQXdGSTZ1WkJ3SkM2SmdzUVJYSURpcWRR?= =?utf-8?B?RzVGdEl1QnNtcnNhZE5GdWR1VWtkNlF2aU00REx0dGJzT1F1RWFCQWJwWWd5?= =?utf-8?B?TWoxQUZuTWFWZEZmVVFJTnJ6UG1mdDdmZ3Q4cnp6anNnUUdVQnVmRmFla1Jz?= =?utf-8?B?TUNEV3RaUlV0TFBxZGlIK1VpbjQzVDRvU2E1dmZmUHZGckpPcGJzQTNIWWdF?= =?utf-8?B?RXF0aXEzdUhtNStWTWdVUXJ5N1UydkZIbFdMSk5yVWtMZFpBdE16cVpZc1BP?= =?utf-8?B?ZnFMSjZCV0Y3elRsUEwzSlBmMVZaS3JVRVhSbVh6dGJHZVpJTUxLY2VhTnpu?= =?utf-8?B?ZEFQaW5NcDFKbjJsWVlXUThYbDV2dW1VYm9jalZFRWtCdC9wc0VJZjl2NjJE?= =?utf-8?B?Y0tHMTc1R0ZRSUJyWW9nZVZxaHJVajJNQjcxTFNQS3FyQnAwNlIwYW1KQW5q?= =?utf-8?B?M2l2Nm95ZUZkbnV2UllHU01rUVR4QWMvcHhZVlozcUlMUVp4TE1kSEtNY2ZS?= =?utf-8?B?dzgxS3drZUJQeFJTQWdWNnZVb0xlUExDWlg3ZDhpZEQwaGdCNXdULy82M3lW?= =?utf-8?B?RUg1VjNneVJDT2hTMHMrQTRkNUpFT05PdGI5ODlrdVprMTdHL3NNRGhsS3Y3?= =?utf-8?B?bUV6NHNlV2praklUdWNJZTNkcWJ4SzBEczY5endxWE1NSkNiTFZZWFJuU2Ny?= =?utf-8?B?K1M4d0IzMit2UTNVSGJqbERidUdvdWxueGk5bkF3ZmUwUElJSTBXOW53R0hy?= =?utf-8?B?M1hRYmVabG04WTAzL3RHWnB1OERndHNlQkVZNUE3RkRpT3VWU2I3MDFnQVNB?= =?utf-8?B?RjNYQ2ZUZEJvTU1hd0pLQjhrcW9aYUcwbDZWcCs3NkxDU21aMUJrQWluSzVy?= =?utf-8?B?RnFkL3dZMER5bG5YYjlzWm5Hd0Y0UkpEN3BFOFVTbldsQ3piTTloem8rT2Uv?= =?utf-8?B?dWRKclJrWklyU1dvbVdYczl0em1iMXdBbk1hR0drQkdBQm9jNEwvdzFIZ010?= =?utf-8?B?UnNwdUhyVUszMkM0ZFNFdz09?= Content-Type: text/plain; charset="utf-8" Content-ID: <9042845BA882F14FA86E9294A6B88A95@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW3PR11MB4556.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ef0037a-c048-4e68-e075-08d8cd92aea7 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Feb 2021 07:08:35.1215 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: iOLhloAtwBi5p+3lJhoKUByqJ+UTeN92kTQ9/zW95QX5v4tTGB86X2iMLEqDwajenkCrsC0ykyMHkAH8GiOWQA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB4802 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org T24gVHVlLCAyMDIxLTAyLTA5IGF0IDIyOjQ4IC0wODAwLCBTdG90bGFuZCwgSW5nYSB3cm90ZToN Cj4gSGkgTWljaGFsLA0KPiANCj4gT24gVHVlLCAyMDIxLTAyLTA5IGF0IDE0OjQ5ICswMTAwLCBN aWNoYcWCIExvd2FzLVJ6ZWNob25layB3cm90ZToNCj4gPiBIaSBJbmdhLCBCcmlhbiwNCj4gPiAN Cj4gPiBXZSBlbmRlZCB1cCBpbXBsZW1lbnRpbmcgYSBUQ1Agc2VydmVyIGluc2lkZSBibHVldG9v dGgtbWVzaGQgdGhhdA0KPiA+IGNhbiBiZQ0KPiA+IHVzZWQgYnkgZXh0ZXJuYWwgcmFkaW8gYWRh cHRlcnMuDQo+ID4gDQo+ID4gVGhpcyBpcyB1c2VmdWwgbm90IG9ubHkgaW4gdGVzdHMsIGJ1dCBh bHNvIGZvciByZW1vdGUgcmFkaW9zIGluDQo+ID4gc2l0dWF0aW9ucyB3aGVyZSB0aGUgYm94IHJ1 bmluZyBibHVldG9vdGgtbWVzaGQgaXMgaW4gZS5nLiBhDQo+ID4gYmFzZW1lbnQsDQo+ID4gc28g eW91IG1pZ2h0IHdhbnQgdG8gaGF2ZSBhIHNtYWxsIGVtYmVkZGVkIGRldmljZSB0aGF0IGRvZXMg KG5vbi0NCj4gPiBIQ0kpDQo+ID4gYmx1ZXRvb3RoIGFuZCBUQ1AvSVAuDQo+ID4gDQo+ID4gRm9y IHZhcmlvdXMgcmVhc29ucyB3ZSdyZSBhdXRoZW50aWNhdGluZyBhbmQgZW5jcnlwdGluZyB0aGUg bGluaw0KPiA+IHVzaW5nDQo+ID4gVExTLVBTSywgc28gb3VyIHNldHVwIGlzIGEgYml0IGNvbXBs ZXgsIGJ1dCBJIGd1ZXNzIGl0IGNvdWxkIGJlDQo+ID4gdHJpbW1lZA0KPiA+IGRvd24uDQo+ID4g DQo+ID4gVGhlIHVuZGVybHlpbmcgcHJvdG9jb2wgaXMgYWxzbyAib3VycyIsIGJ1dCBhZ2FpbiBJ J20gb3BlbiB0bw0KPiA+IGFkanVzdGluZw0KPiA+IGl0IGlmIHRoaXMgbWVhbnMgd2UgY291bGQg aW5jbHVkZSBpdCBpbiB0aGUgb2ZmaWNpYWwgcmVsZWFzZS4NCj4gPiANCj4gPiBXb3VsZCB5b3Ug YmUgaW50ZXJlc3RlZCBpbiBzb21ldGhpbmcgbGlrZSB0aGlzPyBXZSB1c2UgaXQgZm9yIGdyZWF0 DQo+ID4gZWZmZWN0IHRvIHRlc3QgdGhlIGRhZW1vbiB1c2luZyANCj4gPiBodHRwczovL2RvY3Mu cHl0ZXN0Lm9yZy9lbi9zdGFibGUvDQo+ID4gDQo+ID4gDQo+ID4gaHR0cHM6Ly9naXRodWIuY29t L2hvbWVyc29mdC9ibHVlei9ibG9iL21hc3Rlci9tZXNoL3NpbHZhaXItaW8uYw0KPiA+IA0KPiA+ IGh0dHBzOi8vZ2l0aHViLmNvbS9ob21lcnNvZnQvYmx1ZXovYmxvYi9tYXN0ZXIvbWVzaC9tZXNo LWlvLXVhcnQuYw0KPiA+IA0KPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9ob21lcnNvZnQvYmx1ZXov YmxvYi9tYXN0ZXIvbWVzaC9tZXNoLWlvLXRjcHNlcnZlci5jDQo+ID4gDQo+IA0KPiBUaGFuayB5 b3UuIEkgd2lsbCB0YWtlIGEgbG9vay4gSWYgd2UgY291bGQgaGF2ZSBhIHZlcnNpb24gb2YgaW8g dGhhdA0KPiBpcyBhZGFwdGFibGUgZm9yIHZhcmlvdXMgdGVzdGluZyBzY2VuYXJpb3VzIHRoYXQg d291bGQgYmUgZ3JlYXQuDQo+IE9uZSB0aGluZyB0byBrZWVwIGluIG1pbmQgaXMgdGhhdCBmb3Ig Qmx1ZVogZnJhbWV3b3JrLCB0aGUgdGVzdA0KPiBzaG91bGQgYmUgYWJsZSB0byBydW4gaW4gbm9u LXN1ZG8gbW9kZS4NCg0Kb2ggeWVzLCBvbmUgbW9yZSB0aGluZzogdGhlIHRlc3Qgc2hvdWxkIGJl IHJ1bm5hYmxlIGV2ZW4gaWYgbm8NCmNvbnRyb2xsZXJzIGFyZSBhdmFpbGFibGUuIFRoZSAidW5p dCIgSU8gaXMgZXNzZW50aWFsbHkgYSBsb29wYmFjayBpbg0Kb3VyIGNhc2UuDQoNCj4gDQo+IEJl c3QgcmVnYXJkcywgDQo+IEluZ2ENCj4gDQo+ID4gT24gMDIvMDUsIEluZ2EgU3RvdGxhbmQgd3Jv dGU6DQo+ID4gPiBGcm9tOiBCcmlhbiBHaXggPA0KPiA+ID4gYnJpYW4uZ2l4QGludGVsLmNvbQ0K PiA+ID4gPg0KPiA+ID4gDQo+ID4gPiBUaGlzIGFkZHMgYSBuZXcgdHlwZSBvZiBtZXNoIElPIHRo YXQgaXMgdXNlZCBmb3Igbm9uLWludGVyYWN0aXZlDQo+ID4gPiB0ZXN0aW5nLg0KPiA+ID4gVGhl IG5ldyBpbyBvcHRpb24gY2FuIGJlIHNwZWNpZmllZCBvbiBjb21tYW5kIGxpbmUgYXM6DQo+ID4g PiAtLWlvIHVuaXQ6PHNvY2tldF9uYW1lPg0KPiA+ID4gDQo+ID4gPiBXaGVuIHRoZSBibHVldG9v dGgtbWVzaGQgZGFlbW9uIHN0YXJ0cyB3aXRoIHRoZSAidW5pdCIgSU8gdHlwZSwNCj4gPiA+IHRo ZSBkYWVtb24gb3BlbnMgYSBzb2NrZXQgKGZkIHRvIG9wZW4gaXMgcHJvdmlkZWQgYWZ0ZXIgInVu aXQ6Ig0KPiA+ID4gaW4gPHNvY2tldF9uYW1lPikuIFRoZSBjb21tdW5pY2F0aW9uIHdpdGggdGhl IGRhZW1vbiBpcyBkb25lDQo+ID4gPiBlaXRoZXINCj4gPiA+IHRocm91Z2ggdGhlIGxvb3AtYmFj ayB1c2luZyBtZXNoIERCdXMtYmFzZWQgQVBJcyBvciB0aGUgc3BlY2lmaWVkDQo+ID4gPiBuYW1l ZCBzb2NrZXQuDQo+ID4gPiAtLS0NCj4gPiA+ICBNYWtlZmlsZS5tZXNoICAgICAgIHwgICAyICsN Cj4gPiA+ICBtZXNoL21haW4uYyAgICAgICAgIHwgIDQxICsrKy0NCj4gPiA+ICBtZXNoL21lc2gt aW8tdW5pdC5jIHwgNTMzDQo+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKw0KPiA+ID4gIG1lc2gvbWVzaC1pby11bml0LmggfCAgMTEgKw0KPiA+ID4gIG1l c2gvbWVzaC1pby5jICAgICAgfCAgIDkgKy0NCj4gPiA+ICBtZXNoL21lc2gtaW8uaCAgICAgIHwg ICAzICstDQo+ID4gPiAgNiBmaWxlcyBjaGFuZ2VkLCA1ODIgaW5zZXJ0aW9ucygrKSwgMTcgZGVs ZXRpb25zKC0pDQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IG1lc2gvbWVzaC1pby11bml0LmMN Cj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbWVzaC9tZXNoLWlvLXVuaXQuaA0KPiA+ID4gDQo+ ID4gPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUubWVzaCBiL01ha2VmaWxlLm1lc2gNCj4gPiA+IGlu ZGV4IDIyOGRkMWI1Zi4uNzNlYWRlZDRhIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWFrZWZpbGUubWVz aA0KPiA+ID4gKysrIGIvTWFrZWZpbGUubWVzaA0KPiA+ID4gQEAgLTE3LDYgKzE3LDggQEAgbWVz aF9zb3VyY2VzID0gbWVzaC9tZXNoLmggbWVzaC9tZXNoLmMgXA0KPiA+ID4gIAkJCQltZXNoL2Vy cm9yLmggbWVzaC9tZXNoLWlvLWFwaS5oIFwNCj4gPiA+ICAJCQkJbWVzaC9tZXNoLWlvLWdlbmVy aWMuaCBcDQo+ID4gPiAgCQkJCW1lc2gvbWVzaC1pby1nZW5lcmljLmMgXA0KPiA+ID4gKwkJCQlt ZXNoL21lc2gtaW8tdW5pdC5oIFwNCj4gPiA+ICsJCQkJbWVzaC9tZXNoLWlvLXVuaXQuYyBcDQo+ ID4gPiAgCQkJCW1lc2gvbmV0LmggbWVzaC9uZXQuYyBcDQo+ID4gPiAgCQkJCW1lc2gvY3J5cHRv LmggbWVzaC9jcnlwdG8uYyBcDQo+ID4gPiAgCQkJCW1lc2gvZnJpZW5kLmggbWVzaC9mcmllbmQu YyBcDQo+ID4gPiBkaWZmIC0tZ2l0IGEvbWVzaC9tYWluLmMgYi9tZXNoL21haW4uYw0KPiA+ID4g aW5kZXggNDM1NmUzZjY1Li4xYjQ2NjU5OGIgMTAwNjQ0DQo+ID4gPiAtLS0gYS9tZXNoL21haW4u Yw0KPiA+ID4gKysrIGIvbWVzaC9tYWluLmMNCj4gPiA+IEBAIC02MSw3ICs2MSw3IEBAIHN0YXRp YyB2b2lkIHVzYWdlKHZvaWQpDQo+ID4gPiAgCSAgICAgICAiXHQtLWhlbHAgICAgICAgICAgICBT aG93ICVzIGluZm9ybWF0aW9uXG4iLCBfX2Z1bmNfXyk7DQo+ID4gPiAgCWZwcmludGYoc3RkZXJy LA0KPiA+ID4gIAkgICAgICAgImlvOlxuIg0KPiA+ID4gLQkgICAgICAgIlx0KFtoY2ldPGluZGV4 PiB8IGdlbmVyaWNbOltoY2ldPGluZGV4Pl0pXG4iDQo+ID4gPiArCSAgICAgICAiXHQoW2hjaV08 aW5kZXg+IHwgZ2VuZXJpY1s6W2hjaV08aW5kZXg+XSB8DQo+ID4gPiB1bml0OjxmZF9wYXRoPilc biINCj4gPiA+ICAJICAgICAgICJcdFx0VXNlIGdlbmVyaWMgSENJIGlvIG9uIGludGVyZmFjZSBo Y2k8aW5kZXg+LCBvciB0aGUNCj4gPiA+IGZpcnN0XG4iDQo+ID4gPiAgCSAgICAgICAiXHRcdGF2 YWlsYWJsZSBvbmVcbiIpOw0KPiA+ID4gIH0NCj4gPiA+IEBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRp YyB2b2lkIG1lc2hfcmVhZHlfY2FsbGJhY2sodm9pZA0KPiA+ID4gKnVzZXJfZGF0YSwgYm9vbCBz dWNjZXNzKQ0KPiA+ID4gIHsNCj4gPiA+ICAJc3RydWN0IGxfZGJ1cyAqZGJ1cyA9IHVzZXJfZGF0 YTsNCj4gPiA+ICANCj4gPiA+ICsJbF9pbmZvKCJtZXNoX3JlYWR5X2NhbGxiYWNrIik7DQo+ID4g PiAgCWlmICghc3VjY2Vzcykgew0KPiA+ID4gIAkJbF9lcnJvcigiRmFpbGVkIHRvIHN0YXJ0IG1l c2giKTsNCj4gPiA+ICAJCWxfbWFpbl9xdWl0KCk7DQo+ID4gPiBAQCAtOTIsMTAgKzkzLDggQEAg c3RhdGljIHZvaWQgbWVzaF9yZWFkeV9jYWxsYmFjayh2b2lkDQo+ID4gPiAqdXNlcl9kYXRhLCBi b29sIHN1Y2Nlc3MpDQo+ID4gPiAgc3RhdGljIHZvaWQgcmVxdWVzdF9uYW1lX2NhbGxiYWNrKHN0 cnVjdCBsX2RidXMgKmRidXMsIGJvb2wNCj4gPiA+IHN1Y2Nlc3MsDQo+ID4gPiAgCQkJCQlib29s IHF1ZXVlZCwgdm9pZCAqdXNlcl9kYXRhKQ0KPiA+ID4gIHsNCj4gPiA+IC0JbF9pbmZvKCJSZXF1 ZXN0IG5hbWUgJXMiLA0KPiA+ID4gLQkJc3VjY2VzcyA/ICJzdWNjZXNzIjogImZhaWxlZCIpOw0K PiA+ID4gLQ0KPiA+ID4gLQlpZiAoIXN1Y2Nlc3MpIHsNCj4gPiA+ICsJaWYgKCFzdWNjZXNzICYm IGlvX3R5cGUgIT0gTUVTSF9JT19UWVBFX1VOSVRfVEVTVCkgew0KPiA+ID4gKwkJbF9pbmZvKCJS ZXF1ZXN0IG5hbWUgZmFpbGVkIik7DQo+ID4gPiAgCQlsX21haW5fcXVpdCgpOw0KPiA+ID4gIAkJ cmV0dXJuOw0KPiA+ID4gIAl9DQo+ID4gPiBAQCAtMTU5LDYgKzE1OCwyMSBAQCBzdGF0aWMgYm9v bCBwYXJzZV9pbyhjb25zdCBjaGFyICpvcHRhcmcsDQo+ID4gPiBlbnVtIG1lc2hfaW9fdHlwZSAq dHlwZSwgdm9pZCAqKm9wdHMpDQo+ID4gPiAgCQkJcmV0dXJuIHRydWU7DQo+ID4gPiAgDQo+ID4g PiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4gPiArDQo+ID4gPiArCX0gZWxzZSBpZiAoc3Ryc3RyKG9w dGFyZywgInVuaXQiKSA9PSBvcHRhcmcpIHsNCj4gPiA+ICsJCWNoYXIgKnRlc3RfcGF0aDsNCj4g PiA+ICsNCj4gPiA+ICsJCSp0eXBlID0gTUVTSF9JT19UWVBFX1VOSVRfVEVTVDsNCj4gPiA+ICsN Cj4gPiA+ICsJCW9wdGFyZyArPSBzdHJsZW4oInVuaXQiKTsNCj4gPiA+ICsJCWlmICgqb3B0YXJn ICE9ICc6JykNCj4gPiA+ICsJCQlyZXR1cm4gZmFsc2U7DQo+ID4gPiArDQo+ID4gPiArCQlvcHRh cmcrKzsNCj4gPiA+ICsJCXRlc3RfcGF0aCA9IHN0cmR1cChvcHRhcmcpOw0KPiA+ID4gKw0KPiA+ ID4gKwkJKm9wdHMgPSB0ZXN0X3BhdGg7DQo+ID4gPiArCQlyZXR1cm4gdHJ1ZTsNCj4gPiA+ICAJ fQ0KPiA+ID4gIA0KPiA+ID4gIAlyZXR1cm4gZmFsc2U7DQo+ID4gPiBAQCAtMTg3LDExICsyMDEs MTkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4gPiA+ICAJZm9yICg7Oykg ew0KPiA+ID4gIAkJaW50IG9wdDsNCj4gPiA+ICANCj4gPiA+IC0JCW9wdCA9IGdldG9wdF9sb25n KGFyZ2MsIGFyZ3YsICJpOnM6YzpuZGJoIiwNCj4gPiA+IG1haW5fb3B0aW9ucywgTlVMTCk7DQo+ ID4gPiArCQlvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAidTppOnM6YzpuZGJoIiwNCj4g PiA+IG1haW5fb3B0aW9ucywNCj4gPiA+ICsJCQkJCQkJCQkNCj4gPiA+IE5VTEwpOw0KPiA+ID4g IAkJaWYgKG9wdCA8IDApDQo+ID4gPiAgCQkJYnJlYWs7DQo+ID4gPiAgDQo+ID4gPiAgCQlzd2l0 Y2ggKG9wdCkgew0KPiA+ID4gKwkJY2FzZSAndSc6DQo+ID4gPiArCQkJaWYgKHNzY2FuZihvcHRh cmcsICIlZCIsICZoY2lfaW5kZXgpID09IDEgfHwNCj4gPiA+ICsJCQkJCXNzY2FuZihvcHRhcmcs ICIlZCIsDQo+ID4gPiAmaGNpX2luZGV4KSA9PSAxKQ0KPiA+ID4gKwkJCQlpbyA9IGxfc3RyZHVw X3ByaW50ZigidW5pdDolZCIsDQo+ID4gPiBoY2lfaW5kZXgpOw0KPiA+ID4gKwkJCWVsc2UNCj4g PiA+ICsJCQkJaW8gPSBsX3N0cmR1cChvcHRhcmcpOw0KPiA+ID4gKwkJCWJyZWFrOw0KPiA+ID4g IAkJY2FzZSAnaSc6DQo+ID4gPiAgCQkJaWYgKHNzY2FuZihvcHRhcmcsICJoY2klZCIsICZoY2lf aW5kZXgpID09IDEgfHwNCj4gPiA+ICAJCQkJCXNzY2FuZihvcHRhcmcsICIlZCIsDQo+ID4gPiAm aGNpX2luZGV4KSA9PSAxKQ0KPiA+ID4gQEAgLTI2MSwxMSArMjgzLDggQEAgaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4gPiA+ICAJc3RhdHVzID0gbF9tYWluX3J1bl93aXRoX3Np Z25hbChzaWduYWxfaGFuZGxlciwgTlVMTCk7DQo+ID4gPiAgDQo+ID4gPiAgZG9uZToNCj4gPiA+ IC0JaWYgKGlvKQ0KPiA+ID4gLQkJbF9mcmVlKGlvKTsNCj4gPiA+IC0NCj4gPiA+IC0JaWYgKGlv X29wdHMpDQo+ID4gPiAtCQlsX2ZyZWUoaW9fb3B0cyk7DQo+ID4gPiArCWxfZnJlZShpbyk7DQo+ ID4gPiArCWxfZnJlZShpb19vcHRzKTsNCj4gPiA+ICANCj4gPiA+ICAJbWVzaF9jbGVhbnVwKCk7 DQo+ID4gPiAgCWxfZGJ1c19kZXN0cm95KGRidXMpOw0KPiA+ID4gZGlmZiAtLWdpdCBhL21lc2gv bWVzaC1pby11bml0LmMgYi9tZXNoL21lc2gtaW8tdW5pdC5jDQo+ID4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwLi5jNWFhZTY3NDENCj4gPiA+IC0tLSAvZGV2 L251bGwNCj4gPiA+ICsrKyBiL21lc2gvbWVzaC1pby11bml0LmMNCj4gPiA+IEBAIC0wLDAgKzEs NTMzIEBADQo+ID4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xLW9yLWxh dGVyDQo+ID4gPiArLyoNCj4gPiA+ICsgKg0KPiA+ID4gKyAqICBCbHVlWiAtIEJsdWV0b290aCBw cm90b2NvbCBzdGFjayBmb3IgTGludXgNCj4gPiA+ICsgKg0KPiA+ID4gKyAqICBDb3B5cmlnaHQg KEMpIDIwMjEgIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4g KyAqDQo+ID4gPiArICoNCj4gPiA+ICsgKi8NCj4gPiA+ICsNCj4gPiA+ICsjaWZkZWYgSEFWRV9D T05GSUdfSA0KPiA+ID4gKyNpbmNsdWRlIDxjb25maWcuaD4NCj4gPiA+ICsjZW5kaWYNCj4gPiA+ ICsNCj4gPiA+ICsjaW5jbHVkZSA8ZXJybm8uaD4NCj4gPiA+ICsjaW5jbHVkZSA8c3RyaW5nLmg+ DQo+ID4gPiArI2luY2x1ZGUgPHN5cy90aW1lLmg+DQo+ID4gPiArI2luY2x1ZGUgPHN5cy9zb2Nr ZXQuaD4NCj4gPiA+ICsjaW5jbHVkZSA8c3lzL3VuLmg+DQo+ID4gPiArI2luY2x1ZGUgPHVuaXN0 ZC5oPg0KPiA+ID4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiA+ID4gKyNpbmNsdWRlIDxlbGwvZWxs Lmg+DQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgIm1lc2gvbWVzaC1kZWZzLmgiDQo+ID4gPiAr I2luY2x1ZGUgIm1lc2gvZGJ1cy5oIg0KPiA+ID4gKyNpbmNsdWRlICJtZXNoL21lc2gtaW8uaCIN Cj4gPiA+ICsjaW5jbHVkZSAibWVzaC9tZXNoLWlvLWFwaS5oIg0KPiA+ID4gKyNpbmNsdWRlICJt ZXNoL21lc2gtaW8tZ2VuZXJpYy5oIg0KPiA+ID4gKw0KPiA+ID4gK3N0cnVjdCBtZXNoX2lvX3By aXZhdGUgew0KPiA+ID4gKwlzdHJ1Y3QgbF9pbyAqc2lvOw0KPiA+ID4gKwl2b2lkICp1c2VyX2Rh dGE7DQo+ID4gPiArCWNoYXIgKnVuaXF1ZV9uYW1lOw0KPiA+ID4gKwltZXNoX2lvX3JlYWR5X2Z1 bmNfdCByZWFkeV9jYWxsYmFjazsNCj4gPiA+ICsJc3RydWN0IGxfdGltZW91dCAqdHhfdGltZW91 dDsNCj4gPiA+ICsJc3RydWN0IGxfcXVldWUgKnJ4X3JlZ3M7DQo+ID4gPiArCXN0cnVjdCBsX3F1 ZXVlICp0eF9wa3RzOw0KPiA+ID4gKwlzdHJ1Y3Qgc29ja2FkZHJfdW4gYWRkcjsNCj4gPiA+ICsJ aW50IGZkOw0KPiA+ID4gKwl1aW50MTZfdCBpbnRlcnZhbDsNCj4gPiA+ICt9Ow0KPiA+ID4gKw0K PiA+ID4gK3N0cnVjdCBwdnRfcnhfcmVnIHsNCj4gPiA+ICsJbWVzaF9pb19yZWN2X2Z1bmNfdCBj YjsNCj4gPiA+ICsJdm9pZCAqdXNlcl9kYXRhOw0KPiA+ID4gKwl1aW50OF90IGxlbjsNCj4gPiA+ ICsJdWludDhfdCBmaWx0ZXJbMF07DQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdHJ1Y3Qg cHJvY2Vzc19kYXRhIHsNCj4gPiA+ICsJc3RydWN0IG1lc2hfaW9fcHJpdmF0ZQkJKnB2dDsNCj4g PiA+ICsJY29uc3QgdWludDhfdAkJCSpkYXRhOw0KPiA+ID4gKwl1aW50OF90CQkJCWxlbjsNCj4g PiA+ICsJc3RydWN0IG1lc2hfaW9fcmVjdl9pbmZvCWluZm87DQo+ID4gPiArfTsNCj4gPiA+ICsN Cj4gPiA+ICtzdHJ1Y3QgdHhfcGt0IHsNCj4gPiA+ICsJc3RydWN0IG1lc2hfaW9fc2VuZF9pbmZv CWluZm87DQo+ID4gPiArCWJvb2wJCQkJZGVsZXRlOw0KPiA+ID4gKwl1aW50OF90CQkJCWxlbjsN Cj4gPiA+ICsJdWludDhfdAkJCQlwa3RbMzBdOw0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiAr c3RydWN0IHR4X3BhdHRlcm4gew0KPiA+ID4gKwljb25zdCB1aW50OF90CQkJKmRhdGE7DQo+ID4g PiArCXVpbnQ4X3QJCQkJbGVuOw0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHVp bnQzMl90IGdldF9pbnN0YW50KHZvaWQpDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgdGltZXZh bCB0bTsNCj4gPiA+ICsJdWludDMyX3QgaW5zdGFudDsNCj4gPiA+ICsNCj4gPiA+ICsJZ2V0dGlt ZW9mZGF5KCZ0bSwgTlVMTCk7DQo+ID4gPiArCWluc3RhbnQgPSB0bS50dl9zZWMgKiAxMDAwOw0K PiA+ID4gKwlpbnN0YW50ICs9IHRtLnR2X3VzZWMgLyAxMDAwOw0KPiA+ID4gKw0KPiA+ID4gKwly ZXR1cm4gaW5zdGFudDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHVpbnQzMl90 IGluc3RhbnRfcmVtYWluaW5nX21zKHVpbnQzMl90IGluc3RhbnQpDQo+ID4gPiArew0KPiA+ID4g KwlpbnN0YW50IC09IGdldF9pbnN0YW50KCk7DQo+ID4gPiArCXJldHVybiBpbnN0YW50Ow0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdm9pZCBwcm9jZXNzX3J4X2NhbGxiYWNrcyh2 b2lkICp2X3JlZywgdm9pZCAqdl9yeCkNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBwdnRfcnhf cmVnICpyeF9yZWcgPSB2X3JlZzsNCj4gPiA+ICsJc3RydWN0IHByb2Nlc3NfZGF0YSAqcnggPSB2 X3J4Ow0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoIW1lbWNtcChyeC0+ZGF0YSwgcnhfcmVnLT5maWx0 ZXIsIHJ4X3JlZy0+bGVuKSkNCj4gPiA+ICsJCXJ4X3JlZy0+Y2IocnhfcmVnLT51c2VyX2RhdGEs ICZyeC0+aW5mbywgcngtPmRhdGEsIHJ4LQ0KPiA+ID4gPmxlbik7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gK3N0YXRpYyB2b2lkIHByb2Nlc3Nfcngoc3RydWN0IG1lc2hfaW9fcHJpdmF0ZSAq cHZ0LCBpbnQ4X3QgcnNzaSwNCj4gPiA+ICsJCQkJCXVpbnQzMl90IGluc3RhbnQsIGNvbnN0IHVp bnQ4X3QNCj4gPiA+ICphZGRyLA0KPiA+ID4gKwkJCQkJY29uc3QgdWludDhfdCAqZGF0YSwgdWlu dDhfdA0KPiA+ID4gbGVuKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IHByb2Nlc3NfZGF0YSBy eCA9IHsNCj4gPiA+ICsJCS5wdnQgPSBwdnQsDQo+ID4gPiArCQkuZGF0YSA9IGRhdGEsDQo+ID4g PiArCQkubGVuID0gbGVuLA0KPiA+ID4gKwkJLmluZm8uaW5zdGFudCA9IGluc3RhbnQsDQo+ID4g PiArCQkuaW5mby5hZGRyID0gYWRkciwNCj4gPiA+ICsJCS5pbmZvLmNoYW4gPSA3LA0KPiA+ID4g KwkJLmluZm8ucnNzaSA9IHJzc2ksDQo+ID4gPiArCX07DQo+ID4gPiArDQo+ID4gPiArCWxfcXVl dWVfZm9yZWFjaChwdnQtPnJ4X3JlZ3MsIHByb2Nlc3NfcnhfY2FsbGJhY2tzLCAmcngpOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgYm9vbCBpbmNvbWluZyhzdHJ1Y3QgbF9pbyAq c2lvLCB2b2lkICp1c2VyX2RhdGEpDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgbWVzaF9pb19w cml2YXRlICpwdnQgPSB1c2VyX2RhdGE7DQo+ID4gPiArCXVpbnQzMl90IGluc3RhbnQ7DQo+ID4g PiArCXVpbnQ4X3QgYnVmWzMxXTsNCj4gPiA+ICsJc2l6ZV90IHNpemU7DQo+ID4gPiArDQo+ID4g PiArCWluc3RhbnQgPSBnZXRfaW5zdGFudCgpOw0KPiA+ID4gKw0KPiA+ID4gKwlzaXplID0gcmVj dihwdnQtPmZkLCBidWYsIHNpemVvZihidWYpLCBNU0dfRE9OVFdBSVQpOw0KPiA+ID4gKw0KPiA+ ID4gKwlpZiAoc2l6ZSA+IDkgJiYgYnVmWzBdKSB7DQo+ID4gPiArCQlwcm9jZXNzX3J4KHB2dCwg LTIwLCBpbnN0YW50LCBOVUxMLCBidWYgKyAxLA0KPiA+ID4gKHVpbnQ4X3Qpc2l6ZSk7DQo+ID4g PiArCX0gZWxzZSBpZiAoc2l6ZSA9PSAxICYmICFidWZbMF0gJiYgcHZ0LT51bmlxdWVfbmFtZSkg ew0KPiA+ID4gKw0KPiA+ID4gKwkJLyogUmV0dXJuIERCVVMgdW5pcXVlIG5hbWUgKi8NCj4gPiA+ ICsJCXNpemUgPSBzdHJsZW4ocHZ0LT51bmlxdWVfbmFtZSk7DQo+ID4gPiArDQo+ID4gPiArCQlp ZiAoc2l6ZSA+IHNpemVvZihidWYpIC0gMikNCj4gPiA+ICsJCQlyZXR1cm4gdHJ1ZTsNCj4gPiA+ ICsNCj4gPiA+ICsJCWJ1ZlswXSA9IDA7DQo+ID4gPiArCQltZW1jcHkoYnVmICsgMSwgcHZ0LT51 bmlxdWVfbmFtZSwgc2l6ZSArIDEpOw0KPiA+ID4gKwkJc2VuZChwdnQtPmZkLCBidWYsIHNpemUg KyAyLCBNU0dfRE9OVFdBSVQpOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiB0 cnVlOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgYm9vbCBmaW5kX2J5X2FkX3R5 cGUoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikNCj4gPiA+ICt7DQo+ID4gPiArCWNvbnN0 IHN0cnVjdCB0eF9wa3QgKnR4ID0gYTsNCj4gPiA+ICsJdWludDhfdCBhZF90eXBlID0gTF9QVFJf VE9fVUlOVChiKTsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuICFhZF90eXBlIHx8IGFkX3R5cGUg PT0gdHgtPnBrdFswXTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGJvb2wgZmlu ZF9ieV9wYXR0ZXJuKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpDQo+ID4gPiArew0KPiA+ ID4gKwljb25zdCBzdHJ1Y3QgdHhfcGt0ICp0eCA9IGE7DQo+ID4gPiArCWNvbnN0IHN0cnVjdCB0 eF9wYXR0ZXJuICpwYXR0ZXJuID0gYjsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKHR4LT5sZW4gPCBw YXR0ZXJuLT5sZW4pDQo+ID4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ID4gPiArDQo+ID4gPiArCXJl dHVybiAoIW1lbWNtcCh0eC0+cGt0LCBwYXR0ZXJuLT5kYXRhLCBwYXR0ZXJuLT5sZW4pKTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQgZnJlZV9zb2NrZXQoc3RydWN0IG1l c2hfaW9fcHJpdmF0ZSAqcHZ0KQ0KPiA+ID4gK3sNCj4gPiA+ICsJbF9pb19kZXN0cm95KHB2dC0+ c2lvKTsNCj4gPiA+ICsJY2xvc2UocHZ0LT5mZCk7DQo+ID4gPiArCXVubGluayhwdnQtPmFkZHIu c3VuX3BhdGgpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdm9pZCBoZWxsb19j YWxsYmFjayhzdHJ1Y3QgbF9kYnVzX21lc3NhZ2UgKm1zZywgdm9pZA0KPiA+ID4gKnVzZXJfZGF0 YSkNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBtZXNoX2lvX3ByaXZhdGUgKnB2dCA9IHVzZXJf ZGF0YTsNCj4gPiA+ICsNCj4gPiA+ICsJcHZ0LT51bmlxdWVfbmFtZSA9DQo+ID4gPiBsX3N0cmR1 cChsX2RidXNfbWVzc2FnZV9nZXRfZGVzdGluYXRpb24obXNnKSk7DQo+ID4gPiArCWxfZGVidWco IlVzZXItRGFlbW9uIHVuaXF1ZSBuYW1lOiAlcyIsIHB2dC0+dW5pcXVlX25hbWUpOw0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdm9pZCBnZXRfbmFtZShzdHJ1Y3QgbF90aW1lb3V0 ICp0aW1lb3V0LCB2b2lkICp1c2VyX2RhdGEpDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgbWVz aF9pb19wcml2YXRlICpwdnQgPSB1c2VyX2RhdGE7DQo+ID4gPiArCXN0cnVjdCBsX2RidXMgKmRi dXMgPSBkYnVzX2dldF9idXMoKTsNCj4gPiA+ICsJc3RydWN0IGxfZGJ1c19tZXNzYWdlICptc2c7 DQo+ID4gPiArDQo+ID4gPiArCWxfdGltZW91dF9yZW1vdmUodGltZW91dCk7DQo+ID4gPiArCWlm ICghZGJ1cykgew0KPiA+ID4gKwkJbF90aW1lb3V0X2NyZWF0ZV9tcygyMCwgZ2V0X25hbWUsIHB2 dCwgTlVMTCk7DQo+ID4gPiArCQlyZXR1cm47DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJ LyogUmV0cmlldmUgdW5pcXVlIG5hbWUgKi8NCj4gPiA+ICsJbXNnID0gbF9kYnVzX21lc3NhZ2Vf bmV3X21ldGhvZF9jYWxsKGRidXMsDQo+ID4gPiAib3JnLmZyZWVkZXNrdG9wLkRCdXMiLA0KPiA+ ID4gKwkJCQkJCQkiL29yZy9mcmVlZGVza3QNCj4gPiA+IG9wL0RCdXMiLA0KPiA+ID4gKwkJCQkJ CQkib3JnLmZyZWVkZXNrdG8NCj4gPiA+IHAuREJ1cyIsDQo+ID4gPiArCQkJCQkJCSJHZXRJZCIp Ow0KPiA+ID4gKw0KPiA+ID4gKwlsX2RidXNfbWVzc2FnZV9zZXRfYXJndW1lbnRzKG1zZywgIiIp Ow0KPiA+ID4gKw0KPiA+ID4gKwlsX2RidXNfc2VuZF93aXRoX3JlcGx5KGRidXMsIG1zZywgaGVs bG9fY2FsbGJhY2ssIHB2dCwgTlVMTCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRp YyB2b2lkIHVuaXRfdXAodm9pZCAqdXNlcl9kYXRhKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0 IG1lc2hfaW9fcHJpdmF0ZSAqcHZ0ID0gdXNlcl9kYXRhOw0KPiA+ID4gKw0KPiA+ID4gKwlsX2Rl YnVnKCJTdGFydGVkIGlvLXVuaXQiKTsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKHB2dC0+cmVhZHlf Y2FsbGJhY2spDQo+ID4gPiArCQlwdnQtPnJlYWR5X2NhbGxiYWNrKHB2dC0+dXNlcl9kYXRhLCB0 cnVlKTsNCj4gPiA+ICsNCj4gPiA+ICsJbF90aW1lb3V0X2NyZWF0ZV9tcygxLCBnZXRfbmFtZSwg cHZ0LCBOVUxMKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGJvb2wgdW5pdF9p bml0KHN0cnVjdCBtZXNoX2lvICppbywgdm9pZCAqb3B0LA0KPiA+ID4gKwkJCQltZXNoX2lvX3Jl YWR5X2Z1bmNfdCBjYiwgdm9pZA0KPiA+ID4gKnVzZXJfZGF0YSkNCj4gPiA+ICt7DQo+ID4gPiAr CXN0cnVjdCBtZXNoX2lvX3ByaXZhdGUgKnB2dDsNCj4gPiA+ICsJY2hhciAqc2tfcGF0aDsNCj4g PiA+ICsJc2l6ZV90IHNpemU7DQo+ID4gPiArDQo+ID4gPiArCWxfZGVidWcoIlN0YXJ0aW5nIFVu aXQgdGVzdCBJTyIpOw0KPiA+ID4gKwlpZiAoIWlvIHx8IGlvLT5wdnQpDQo+ID4gPiArCQlyZXR1 cm4gZmFsc2U7DQo+ID4gPiArDQo+ID4gPiArCXNrX3BhdGggPSAoY2hhciAqKSBvcHQ7DQo+ID4g PiArDQo+ID4gPiArCXB2dCA9IGxfbmV3KHN0cnVjdCBtZXNoX2lvX3ByaXZhdGUsIDEpOw0KPiA+ ID4gKw0KPiA+ID4gKwlwdnQtPmFkZHIuc3VuX2ZhbWlseSA9IEFGX0xPQ0FMOw0KPiA+ID4gKwlz bnByaW50ZihwdnQtPmFkZHIuc3VuX3BhdGgsIHNpemVvZihwdnQtPmFkZHIuc3VuX3BhdGgpLCAi JXMiLA0KPiA+ID4gKwkJCQkJCQkJc2tfcGF0aA0KPiA+ID4gKTsNCj4gPiA+ICsNCj4gPiA+ICsJ cHZ0LT5mZCA9IHNvY2tldChQRl9MT0NBTCwgU09DS19ER1JBTSB8IFNPQ0tfQ0xPRVhFQywgMCk7 DQo+ID4gPiArCWlmIChwdnQtPmZkIDwgMCkNCj4gPiA+ICsJCWdvdG8gZmFpbDsNCj4gPiA+ICsN Cj4gPiA+ICsJdW5saW5rKHB2dC0+YWRkci5zdW5fcGF0aCk7DQo+ID4gPiArCXNpemUgPSBvZmZz ZXRvZihzdHJ1Y3Qgc29ja2FkZHJfdW4sIHN1bl9wYXRoKSArDQo+ID4gPiArCQkJCQkJc3RybGVu KHB2dC0NCj4gPiA+ID5hZGRyLnN1bl9wYXRoKTsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKGJpbmQo cHZ0LT5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmcHZ0LT5hZGRyLCBzaXplKSA8IDApDQo+ID4g PiArCQlnb3RvIGZhaWw7DQo+ID4gPiArDQo+ID4gPiArCS8qIFNldHVwIHNvY2tldCBoYW5kbGVy cyAqLw0KPiA+ID4gKwlwdnQtPnNpbyA9IGxfaW9fbmV3KHB2dC0+ZmQpOw0KPiA+ID4gKwlpZiAo IWxfaW9fc2V0X3JlYWRfaGFuZGxlcihwdnQtPnNpbywgaW5jb21pbmcsIHB2dCwgTlVMTCkpDQo+ ID4gPiArCQlnb3RvIGZhaWw7DQo+ID4gPiArDQo+ID4gPiArCXB2dC0+cnhfcmVncyA9IGxfcXVl dWVfbmV3KCk7DQo+ID4gPiArCXB2dC0+dHhfcGt0cyA9IGxfcXVldWVfbmV3KCk7DQo+ID4gPiAr DQo+ID4gPiArCXB2dC0+cmVhZHlfY2FsbGJhY2sgPSBjYjsNCj4gPiA+ICsJcHZ0LT51c2VyX2Rh dGEgPSB1c2VyX2RhdGE7DQo+ID4gPiArDQo+ID4gPiArCWlvLT5wdnQgPSBwdnQ7DQo+ID4gPiAr DQo+ID4gPiArCWxfaWRsZV9vbmVzaG90KHVuaXRfdXAsIHB2dCwgTlVMTCk7DQo+ID4gPiArDQo+ ID4gPiArCXJldHVybiB0cnVlOw0KPiA+ID4gKw0KPiA+ID4gK2ZhaWw6DQo+ID4gPiArCWxfZXJy b3IoIkZhaWxlZCB0byBiaW5kIFVuaXQgVGVzdCBzb2NrZXQiKTsNCj4gPiA+ICsJZnJlZV9zb2Nr ZXQocHZ0KTsNCj4gPiA+ICsJbF9mcmVlKHB2dCk7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiBm YWxzZTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGJvb2wgdW5pdF9kZXN0cm95 KHN0cnVjdCBtZXNoX2lvICppbykNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBtZXNoX2lvX3By aXZhdGUgKnB2dCA9IGlvLT5wdnQ7DQo+ID4gPiArDQo+ID4gPiArCWlmICghcHZ0KQ0KPiA+ID4g KwkJcmV0dXJuIHRydWU7DQo+ID4gPiArDQo+ID4gPiArCWxfZnJlZShwdnQtPnVuaXF1ZV9uYW1l KTsNCj4gPiA+ICsJbF90aW1lb3V0X3JlbW92ZShwdnQtPnR4X3RpbWVvdXQpOw0KPiA+ID4gKwls X3F1ZXVlX2Rlc3Ryb3kocHZ0LT5yeF9yZWdzLCBsX2ZyZWUpOw0KPiA+ID4gKwlsX3F1ZXVlX2Rl c3Ryb3kocHZ0LT50eF9wa3RzLCBsX2ZyZWUpOw0KPiA+ID4gKw0KPiA+ID4gKwlmcmVlX3NvY2tl dChwdnQpOw0KPiA+ID4gKw0KPiA+ID4gKwlsX2ZyZWUocHZ0KTsNCj4gPiA+ICsJaW8tPnB2dCA9 IE5VTEw7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiB0cnVlOw0KPiA+ID4gK30NCj4gPiA+ICsN Cj4gPiA+ICtzdGF0aWMgYm9vbCB1bml0X2NhcHMoc3RydWN0IG1lc2hfaW8gKmlvLCBzdHJ1Y3Qg bWVzaF9pb19jYXBzDQo+ID4gPiAqY2FwcykNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBtZXNo X2lvX3ByaXZhdGUgKnB2dCA9IGlvLT5wdnQ7DQo+ID4gPiArDQo+ID4gPiArCWlmICghcHZ0IHx8 ICFjYXBzKQ0KPiA+ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ID4gKw0KPiA+ID4gKwljYXBzLT5t YXhfbnVtX2ZpbHRlcnMgPSAyNTU7DQo+ID4gPiArCWNhcHMtPndpbmRvd19hY2N1cmFjeSA9IDUw Ow0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4gdHJ1ZTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiArc3RhdGljIGJvb2wgc2ltcGxlX21hdGNoKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIp DQo+ID4gPiArew0KPiA+ID4gKwlyZXR1cm4gYSA9PSBiOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICtzdGF0aWMgdm9pZCBzZW5kX3BrdChzdHJ1Y3QgbWVzaF9pb19wcml2YXRlICpwdnQsIHN0 cnVjdCB0eF9wa3QNCj4gPiA+ICp0eCwNCj4gPiA+ICsJCQkJCQkJdWludDE2X3QNCj4gPiA+IGlu dGVydmFsKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc2VuZChwdnQtPmZkLCB0eC0+cGt0LCB0eC0+bGVu LCBNU0dfRE9OVFdBSVQpOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAodHgtPmRlbGV0ZSkgew0KPiA+ ID4gKwkJbF9xdWV1ZV9yZW1vdmVfaWYocHZ0LT50eF9wa3RzLCBzaW1wbGVfbWF0Y2gsIHR4KTsN Cj4gPiA+ICsJCWxfZnJlZSh0eCk7DQo+ID4gPiArCX0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiArc3RhdGljIHZvaWQgdHhfdG8oc3RydWN0IGxfdGltZW91dCAqdGltZW91dCwgdm9pZCAqdXNl cl9kYXRhKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IG1lc2hfaW9fcHJpdmF0ZSAqcHZ0ID0g dXNlcl9kYXRhOw0KPiA+ID4gKwlzdHJ1Y3QgdHhfcGt0ICp0eDsNCj4gPiA+ICsJdWludDE2X3Qg bXM7DQo+ID4gPiArCXVpbnQ4X3QgY291bnQ7DQo+ID4gPiArDQo+ID4gPiArCWlmICghcHZ0KQ0K PiA+ID4gKwkJcmV0dXJuOw0KPiA+ID4gKw0KPiA+ID4gKwl0eCA9IGxfcXVldWVfcG9wX2hlYWQo cHZ0LT50eF9wa3RzKTsNCj4gPiA+ICsJaWYgKCF0eCkgew0KPiA+ID4gKwkJbF90aW1lb3V0X3Jl bW92ZSh0aW1lb3V0KTsNCj4gPiA+ICsJCXB2dC0+dHhfdGltZW91dCA9IE5VTEw7DQo+ID4gPiAr CQlyZXR1cm47DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJaWYgKHR4LT5pbmZvLnR5cGUg PT0gTUVTSF9JT19USU1JTkdfVFlQRV9HRU5FUkFMKSB7DQo+ID4gPiArCQltcyA9IHR4LT5pbmZv LnUuZ2VuLmludGVydmFsOw0KPiA+ID4gKwkJY291bnQgPSB0eC0+aW5mby51Lmdlbi5jbnQ7DQo+ ID4gPiArCQlpZiAoY291bnQgIT0gTUVTSF9JT19UWF9DT1VOVF9VTkxJTUlURUQpDQo+ID4gPiAr CQkJdHgtPmluZm8udS5nZW4uY250LS07DQo+ID4gPiArCX0gZWxzZSB7DQo+ID4gPiArCQltcyA9 IDI1Ow0KPiA+ID4gKwkJY291bnQgPSAxOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArCXR4 LT5kZWxldGUgPSAhIShjb3VudCA9PSAxKTsNCj4gPiA+ICsNCj4gPiA+ICsJc2VuZF9wa3QocHZ0 LCB0eCwgbXMpOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoY291bnQgPT0gMSkgew0KPiA+ID4gKwkJ LyogUmVjYWxjdWxhdGUgd2FrZXVwIGlmIHdlIGFyZSByZXNwb25kaW5nIHRvIFBPTEwgKi8NCj4g PiA+ICsJCXR4ID0gbF9xdWV1ZV9wZWVrX2hlYWQocHZ0LT50eF9wa3RzKTsNCj4gPiA+ICsNCj4g PiA+ICsJCWlmICh0eCAmJiB0eC0+aW5mby50eXBlID09DQo+ID4gPiBNRVNIX0lPX1RJTUlOR19U WVBFX1BPTExfUlNQKSB7DQo+ID4gPiArCQkJbXMgPSBpbnN0YW50X3JlbWFpbmluZ19tcyh0eC0N Cj4gPiA+ID5pbmZvLnUucG9sbF9yc3AuaW5zdGFudCArDQo+ID4gPiArCQkJCQkJdHgtDQo+ID4g PiA+aW5mby51LnBvbGxfcnNwLmRlbGF5KTsNCj4gPiA+ICsJCX0NCj4gPiA+ICsJfSBlbHNlDQo+ ID4gPiArCQlsX3F1ZXVlX3B1c2hfdGFpbChwdnQtPnR4X3BrdHMsIHR4KTsNCj4gPiA+ICsNCj4g PiA+ICsJaWYgKHRpbWVvdXQpIHsNCj4gPiA+ICsJCXB2dC0+dHhfdGltZW91dCA9IHRpbWVvdXQ7 DQo+ID4gPiArCQlsX3RpbWVvdXRfbW9kaWZ5X21zKHRpbWVvdXQsIG1zKTsNCj4gPiA+ICsJfSBl bHNlDQo+ID4gPiArCQlwdnQtPnR4X3RpbWVvdXQgPSBsX3RpbWVvdXRfY3JlYXRlX21zKG1zLCB0 eF90bywgcHZ0LA0KPiA+ID4gTlVMTCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRp YyB2b2lkIHR4X3dvcmtlcih2b2lkICp1c2VyX2RhdGEpDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1 Y3QgbWVzaF9pb19wcml2YXRlICpwdnQgPSB1c2VyX2RhdGE7DQo+ID4gPiArCXN0cnVjdCB0eF9w a3QgKnR4Ow0KPiA+ID4gKwl1aW50MzJfdCBkZWxheTsNCj4gPiA+ICsNCj4gPiA+ICsJdHggPSBs X3F1ZXVlX3BlZWtfaGVhZChwdnQtPnR4X3BrdHMpOw0KPiA+ID4gKwlpZiAoIXR4KQ0KPiA+ID4g KwkJcmV0dXJuOw0KPiA+ID4gKw0KPiA+ID4gKwlzd2l0Y2ggKHR4LT5pbmZvLnR5cGUpIHsNCj4g PiA+ICsJY2FzZSBNRVNIX0lPX1RJTUlOR19UWVBFX0dFTkVSQUw6DQo+ID4gPiArCQlpZiAodHgt PmluZm8udS5nZW4ubWluX2RlbGF5ID09IHR4LQ0KPiA+ID4gPmluZm8udS5nZW4ubWF4X2RlbGF5 KQ0KPiA+ID4gKwkJCWRlbGF5ID0gdHgtPmluZm8udS5nZW4ubWluX2RlbGF5Ow0KPiA+ID4gKwkJ ZWxzZSB7DQo+ID4gPiArCQkJbF9nZXRyYW5kb20oJmRlbGF5LCBzaXplb2YoZGVsYXkpKTsNCj4g PiA+ICsJCQlkZWxheSAlPSB0eC0+aW5mby51Lmdlbi5tYXhfZGVsYXkgLQ0KPiA+ID4gKwkJCQkJ CXR4LQ0KPiA+ID4gPmluZm8udS5nZW4ubWluX2RlbGF5Ow0KPiA+ID4gKwkJCWRlbGF5ICs9IHR4 LT5pbmZvLnUuZ2VuLm1pbl9kZWxheTsNCj4gPiA+ICsJCX0NCj4gPiA+ICsJCWJyZWFrOw0KPiA+ ID4gKw0KPiA+ID4gKwljYXNlIE1FU0hfSU9fVElNSU5HX1RZUEVfUE9MTDoNCj4gPiA+ICsJCWlm ICh0eC0+aW5mby51LnBvbGwubWluX2RlbGF5ID09IHR4LQ0KPiA+ID4gPmluZm8udS5wb2xsLm1h eF9kZWxheSkNCj4gPiA+ICsJCQlkZWxheSA9IHR4LT5pbmZvLnUucG9sbC5taW5fZGVsYXk7DQo+ ID4gPiArCQllbHNlIHsNCj4gPiA+ICsJCQlsX2dldHJhbmRvbSgmZGVsYXksIHNpemVvZihkZWxh eSkpOw0KPiA+ID4gKwkJCWRlbGF5ICU9IHR4LT5pbmZvLnUucG9sbC5tYXhfZGVsYXkgLQ0KPiA+ ID4gKwkJCQkJCXR4LQ0KPiA+ID4gPmluZm8udS5wb2xsLm1pbl9kZWxheTsNCj4gPiA+ICsJCQlk ZWxheSArPSB0eC0+aW5mby51LnBvbGwubWluX2RlbGF5Ow0KPiA+ID4gKwkJfQ0KPiA+ID4gKwkJ YnJlYWs7DQo+ID4gPiArDQo+ID4gPiArCWNhc2UgTUVTSF9JT19USU1JTkdfVFlQRV9QT0xMX1JT UDoNCj4gPiA+ICsJCS8qIERlbGF5IHVudGlsIEluc3RhbnQgKyBEZWxheSAqLw0KPiA+ID4gKwkJ ZGVsYXkgPSBpbnN0YW50X3JlbWFpbmluZ19tcyh0eC0NCj4gPiA+ID5pbmZvLnUucG9sbF9yc3Au aW5zdGFudCArDQo+ID4gPiArCQkJCQkJdHgtDQo+ID4gPiA+aW5mby51LnBvbGxfcnNwLmRlbGF5 KTsNCj4gPiA+ICsJCWlmIChkZWxheSA+IDI1NSkNCj4gPiA+ICsJCQlkZWxheSA9IDA7DQo+ID4g PiArCQlicmVhazsNCj4gPiA+ICsNCj4gPiA+ICsJZGVmYXVsdDoNCj4gPiA+ICsJCXJldHVybjsN Cj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoIWRlbGF5KQ0KPiA+ID4gKwkJdHhfdG8o cHZ0LT50eF90aW1lb3V0LCBwdnQpOw0KPiA+ID4gKwllbHNlIGlmIChwdnQtPnR4X3RpbWVvdXQp DQo+ID4gPiArCQlsX3RpbWVvdXRfbW9kaWZ5X21zKHB2dC0+dHhfdGltZW91dCwgZGVsYXkpOw0K PiA+ID4gKwllbHNlDQo+ID4gPiArCQlwdnQtPnR4X3RpbWVvdXQgPSBsX3RpbWVvdXRfY3JlYXRl X21zKGRlbGF5LCB0eF90bywNCj4gPiA+IHB2dCwgTlVMTCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gK3N0YXRpYyBib29sIHNlbmRfdHgoc3RydWN0IG1lc2hfaW8gKmlvLCBzdHJ1Y3QgbWVz aF9pb19zZW5kX2luZm8NCj4gPiA+ICppbmZvLA0KPiA+ID4gKwkJCQkJY29uc3QgdWludDhfdCAq ZGF0YSwgdWludDE2X3QNCj4gPiA+IGxlbikNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBtZXNo X2lvX3ByaXZhdGUgKnB2dCA9IGlvLT5wdnQ7DQo+ID4gPiArCXN0cnVjdCB0eF9wa3QgKnR4Ow0K PiA+ID4gKwlib29sIHNlbmRpbmcgPSBmYWxzZTsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKCFpbmZv IHx8ICFkYXRhIHx8ICFsZW4gfHwgbGVuID4gc2l6ZW9mKHR4LT5wa3QpKQ0KPiA+ID4gKwkJcmV0 dXJuIGZhbHNlOw0KPiA+ID4gKw0KPiA+ID4gKwl0eCA9IGxfbmV3KHN0cnVjdCB0eF9wa3QsIDEp Ow0KPiA+ID4gKw0KPiA+ID4gKwltZW1jcHkoJnR4LT5pbmZvLCBpbmZvLCBzaXplb2YodHgtPmlu Zm8pKTsNCj4gPiA+ICsJbWVtY3B5KCZ0eC0+cGt0LCBkYXRhLCBsZW4pOw0KPiA+ID4gKwl0eC0+ bGVuID0gbGVuOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoaW5mby0+dHlwZSA9PSBNRVNIX0lPX1RJ TUlOR19UWVBFX1BPTExfUlNQKQ0KPiA+ID4gKwkJbF9xdWV1ZV9wdXNoX2hlYWQocHZ0LT50eF9w a3RzLCB0eCk7DQo+ID4gPiArCWVsc2Ugew0KPiA+ID4gKwkJc2VuZGluZyA9ICFsX3F1ZXVlX2lz ZW1wdHkocHZ0LT50eF9wa3RzKTsNCj4gPiA+ICsNCj4gPiA+ICsJCWxfcXVldWVfcHVzaF90YWls KHB2dC0+dHhfcGt0cywgdHgpOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArCWlmICghc2Vu ZGluZykgew0KPiA+ID4gKwkJbF90aW1lb3V0X3JlbW92ZShwdnQtPnR4X3RpbWVvdXQpOw0KPiA+ ID4gKwkJcHZ0LT50eF90aW1lb3V0ID0gTlVMTDsNCj4gPiA+ICsJCWxfaWRsZV9vbmVzaG90KHR4 X3dvcmtlciwgcHZ0LCBOVUxMKTsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4g dHJ1ZTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGJvb2wgdHhfY2FuY2VsKHN0 cnVjdCBtZXNoX2lvICppbywgY29uc3QgdWludDhfdCAqZGF0YSwNCj4gPiA+IHVpbnQ4X3QgbGVu KQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IG1lc2hfaW9fcHJpdmF0ZSAqcHZ0ID0gaW8tPnB2 dDsNCj4gPiA+ICsJc3RydWN0IHR4X3BrdCAqdHg7DQo+ID4gPiArDQo+ID4gPiArCWlmICghZGF0 YSkNCj4gPiA+ICsJCXJldHVybiBmYWxzZTsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKGxlbiA9PSAx KSB7DQo+ID4gPiArCQlkbyB7DQo+ID4gPiArCQkJdHggPSBsX3F1ZXVlX3JlbW92ZV9pZihwdnQt PnR4X3BrdHMsDQo+ID4gPiBmaW5kX2J5X2FkX3R5cGUsDQo+ID4gPiArCQkJCQkJCUxfVUlOVF9U T19QVFIoZA0KPiA+ID4gYXRhWzBdKSk7DQo+ID4gPiArCQkJbF9mcmVlKHR4KTsNCj4gPiA+ICsN Cj4gPiA+ICsJCX0gd2hpbGUgKHR4KTsNCj4gPiA+ICsJfSBlbHNlIHsNCj4gPiA+ICsJCXN0cnVj dCB0eF9wYXR0ZXJuIHBhdHRlcm4gPSB7DQo+ID4gPiArCQkJLmRhdGEgPSBkYXRhLA0KPiA+ID4g KwkJCS5sZW4gPSBsZW4NCj4gPiA+ICsJCX07DQo+ID4gPiArDQo+ID4gPiArCQlkbyB7DQo+ID4g PiArCQkJdHggPSBsX3F1ZXVlX3JlbW92ZV9pZihwdnQtPnR4X3BrdHMsDQo+ID4gPiBmaW5kX2J5 X3BhdHRlcm4sDQo+ID4gPiArCQkJCQkJCQkmcGF0dGVyDQo+ID4gPiBuKTsNCj4gPiA+ICsJCQls X2ZyZWUodHgpOw0KPiA+ID4gKw0KPiA+ID4gKwkJfSB3aGlsZSAodHgpOw0KPiA+ID4gKwl9DQo+ ID4gPiArDQo+ID4gPiArCWlmIChsX3F1ZXVlX2lzZW1wdHkocHZ0LT50eF9wa3RzKSkgew0KPiA+ ID4gKwkJbF90aW1lb3V0X3JlbW92ZShwdnQtPnR4X3RpbWVvdXQpOw0KPiA+ID4gKwkJcHZ0LT50 eF90aW1lb3V0ID0gTlVMTDsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4gdHJ1 ZTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGJvb2wgZmluZF9ieV9maWx0ZXIo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikNCj4gPiA+ICt7DQo+ID4gPiArCWNvbnN0IHN0 cnVjdCBwdnRfcnhfcmVnICpyeF9yZWcgPSBhOw0KPiA+ID4gKwljb25zdCB1aW50OF90ICpmaWx0 ZXIgPSBiOw0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4gIW1lbWNtcChyeF9yZWctPmZpbHRlciwg ZmlsdGVyLCByeF9yZWctPmxlbik7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBi b29sIHJlY3ZfcmVnaXN0ZXIoc3RydWN0IG1lc2hfaW8gKmlvLCBjb25zdCB1aW50OF90DQo+ID4g PiAqZmlsdGVyLA0KPiA+ID4gKwkJCXVpbnQ4X3QgbGVuLCBtZXNoX2lvX3JlY3ZfZnVuY190IGNi LCB2b2lkDQo+ID4gPiAqdXNlcl9kYXRhKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IG1lc2hf aW9fcHJpdmF0ZSAqcHZ0ID0gaW8tPnB2dDsNCj4gPiA+ICsJc3RydWN0IHB2dF9yeF9yZWcgKnJ4 X3JlZzsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKCFjYiB8fCAhZmlsdGVyIHx8ICFsZW4pDQo+ID4g PiArCQlyZXR1cm4gZmFsc2U7DQo+ID4gPiArDQo+ID4gPiArCXJ4X3JlZyA9IGxfcXVldWVfcmVt b3ZlX2lmKHB2dC0+cnhfcmVncywgZmluZF9ieV9maWx0ZXIsDQo+ID4gPiBmaWx0ZXIpOw0KPiA+ ID4gKw0KPiA+ID4gKwlsX2ZyZWUocnhfcmVnKTsNCj4gPiA+ICsJcnhfcmVnID0gbF9tYWxsb2Mo c2l6ZW9mKCpyeF9yZWcpICsgbGVuKTsNCj4gPiA+ICsNCj4gPiA+ICsJbWVtY3B5KHJ4X3JlZy0+ ZmlsdGVyLCBmaWx0ZXIsIGxlbik7DQo+ID4gPiArCXJ4X3JlZy0+bGVuID0gbGVuOw0KPiA+ID4g KwlyeF9yZWctPmNiID0gY2I7DQo+ID4gPiArCXJ4X3JlZy0+dXNlcl9kYXRhID0gdXNlcl9kYXRh Ow0KPiA+ID4gKw0KPiA+ID4gKwlsX3F1ZXVlX3B1c2hfaGVhZChwdnQtPnJ4X3JlZ3MsIHJ4X3Jl Zyk7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiB0cnVlOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICtzdGF0aWMgYm9vbCByZWN2X2RlcmVnaXN0ZXIoc3RydWN0IG1lc2hfaW8gKmlvLCBjb25z dCB1aW50OF90DQo+ID4gPiAqZmlsdGVyLA0KPiA+ID4gKwkJCQkJCQkJdWludDhfdA0KPiA+ID4g bGVuKQ0KPiA+ID4gK3sNCj4gPiA+ICsJcmV0dXJuIHRydWU7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gK2NvbnN0IHN0cnVjdCBtZXNoX2lvX2FwaSBtZXNoX2lvX3VuaXQgPSB7DQo+ID4gPiAr CS5pbml0ID0gdW5pdF9pbml0LA0KPiA+ID4gKwkuZGVzdHJveSA9IHVuaXRfZGVzdHJveSwNCj4g PiA+ICsJLmNhcHMgPSB1bml0X2NhcHMsDQo+ID4gPiArCS5zZW5kID0gc2VuZF90eCwNCj4gPiA+ ICsJLnJlZyA9IHJlY3ZfcmVnaXN0ZXIsDQo+ID4gPiArCS5kZXJlZyA9IHJlY3ZfZGVyZWdpc3Rl ciwNCj4gPiA+ICsJLmNhbmNlbCA9IHR4X2NhbmNlbCwNCj4gPiA+ICt9Ow0KPiA+ID4gZGlmZiAt LWdpdCBhL21lc2gvbWVzaC1pby11bml0LmggYi9tZXNoL21lc2gtaW8tdW5pdC5oDQo+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwLi44NDZlZWE3YmMNCj4g PiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL21lc2gvbWVzaC1pby11bml0LmgNCj4gPiA+ IEBAIC0wLDAgKzEsMTEgQEANCj4gPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQ TC0yLjEtb3ItbGF0ZXINCj4gPiA+ICsvKg0KPiA+ID4gKyAqDQo+ID4gPiArICogIEJsdWVaIC0g Qmx1ZXRvb3RoIHByb3RvY29sIHN0YWNrIGZvciBMaW51eA0KPiA+ID4gKyAqDQo+ID4gPiArICog IENvcHlyaWdodCAoQykgMjAyMSAgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ID4gPiArICoNCj4gPiA+ICsgKg0KPiA+ID4gKyAqLw0KPiA+ID4gKw0KPiA+ID4gK2V4 dGVybiBjb25zdCBzdHJ1Y3QgbWVzaF9pb19hcGkgbWVzaF9pb191bml0Ow0KPiA+ID4gZGlmZiAt LWdpdCBhL21lc2gvbWVzaC1pby5jIGIvbWVzaC9tZXNoLWlvLmMNCj4gPiA+IGluZGV4IDYyZmM1 ZDEyZS4uOTY4OTEzMTNhIDEwMDY0NA0KPiA+ID4gLS0tIGEvbWVzaC9tZXNoLWlvLmMNCj4gPiA+ ICsrKyBiL21lc2gvbWVzaC1pby5jDQo+ID4gPiBAQCAtMjIsMTAgKzIyLDEyIEBADQo+ID4gPiAg DQo+ID4gPiAgLyogTGlzdCBvZiBNZXNoLUlPIFR5cGUgaGVhZGVycyAqLw0KPiA+ID4gICNpbmNs dWRlICJtZXNoL21lc2gtaW8tZ2VuZXJpYy5oIg0KPiA+ID4gKyNpbmNsdWRlICJtZXNoL21lc2gt aW8tdW5pdC5oIg0KPiA+ID4gIA0KPiA+ID4gIC8qIExpc3Qgb2YgU3VwcG9ydGVkIE1lc2gtSU8g VHlwZXMgKi8NCj4gPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG1lc2hfaW9fdGFibGUgdGFibGVb XSA9IHsNCj4gPiA+IC0Je01FU0hfSU9fVFlQRV9HRU5FUklDLAkmbWVzaF9pb19nZW5lcmljfQ0K PiA+ID4gKwl7TUVTSF9JT19UWVBFX0dFTkVSSUMsICZtZXNoX2lvX2dlbmVyaWN9LA0KPiA+ID4g Kwl7TUVTSF9JT19UWVBFX1VOSVRfVEVTVCwgJm1lc2hfaW9fdW5pdH0sDQo+ID4gPiAgfTsNCj4g PiA+ICANCj4gPiA+ICBzdGF0aWMgc3RydWN0IGxfcXVldWUgKmlvX2xpc3Q7DQo+ID4gPiBAQCAt NjQsMTIgKzY2LDkgQEAgc3RydWN0IG1lc2hfaW8gKm1lc2hfaW9fbmV3KGVudW0gbWVzaF9pb190 eXBlDQo+ID4gPiB0eXBlLCB2b2lkICpvcHRzLA0KPiA+ID4gIA0KPiA+ID4gIAlpbyA9IGxfbmV3 KHN0cnVjdCBtZXNoX2lvLCAxKTsNCj4gPiA+ICANCj4gPiA+IC0JaWYgKCFpbykNCj4gPiA+IC0J CXJldHVybiBOVUxMOw0KPiA+ID4gLQ0KPiA+ID4gIAlpby0+dHlwZSA9IHR5cGU7DQo+ID4gPiAt DQo+ID4gPiAgCWlvLT5hcGkgPSBhcGk7DQo+ID4gPiArDQo+ID4gPiAgCWlmICghYXBpLT5pbml0 KGlvLCBvcHRzLCBjYiwgdXNlcl9kYXRhKSkNCj4gPiA+ICAJCWdvdG8gZmFpbDsNCj4gPiA+ICAN Cj4gPiA+IGRpZmYgLS1naXQgYS9tZXNoL21lc2gtaW8uaCBiL21lc2gvbWVzaC1pby5oDQo+ID4g PiBpbmRleCBiMTFjNmM2ZTEuLjgwZWYzZmEzZSAxMDA2NDQNCj4gPiA+IC0tLSBhL21lc2gvbWVz aC1pby5oDQo+ID4gPiArKysgYi9tZXNoL21lc2gtaW8uaA0KPiA+ID4gQEAgLTE0LDcgKzE0LDgg QEAgc3RydWN0IG1lc2hfaW87DQo+ID4gPiAgDQo+ID4gPiAgZW51bSBtZXNoX2lvX3R5cGUgew0K PiA+ID4gIAlNRVNIX0lPX1RZUEVfTk9ORSA9IDAsDQo+ID4gPiAtCU1FU0hfSU9fVFlQRV9HRU5F UklDDQo+ID4gPiArCU1FU0hfSU9fVFlQRV9HRU5FUklDLA0KPiA+ID4gKwlNRVNIX0lPX1RZUEVf VU5JVF9URVNUDQo+ID4gPiAgfTsNCj4gPiA+ICANCj4gPiA+ICBlbnVtIG1lc2hfaW9fdGltaW5n X3R5cGUgew0KPiA+ID4gLS0gDQo+ID4gPiAyLjI2LjINCj4gPiA+IA0K