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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 998CAC25B75 for ; Mon, 3 Jun 2024 13:51:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=u5/6XjCH1xLqBVhXogJlV2PA9UPdj+MZ4YZtiM8nUpI=; b=naUjWzUj1fNAJ+ kMTeuDD4GmHKpP1D1rP2SmoaMdL4LXf+l3hMUcxCRxDg2aQO2Fp+e+QEOK1RHt2czd7oU1ORGR2Kp xyA9B0L13nmCTcunk426gkqV2WFxqNk6A/9nQQ9Ro5OHpuXFlioSxLDNa0msYeCUXbCWDt6yRYdO9 MARNnYBQBGiuhVEDIHp8dPI1Sy0BoCJgKstNxgEkHm/h0mRvGQyNyArelvxs/DrzCFzF4UnC5C8bX fv/xJCf2rAv9bzgTSYMmKQdnUVX6/X/crvLT2HzhdjjeDHxYZLFAh3ZTek0wNL4NSriaiO0q+A7hR bs48CCF5n7/h+yynswig==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sE85l-0000000Gygu-14a7; Mon, 03 Jun 2024 13:51:17 +0000 Received: from mail-dbaeur03on20601.outbound.protection.outlook.com ([2a01:111:f403:260d::601] helo=EUR03-DBA-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sE85h-0000000Gyg9-2nV6 for linux-arm-kernel@lists.infradead.org; Mon, 03 Jun 2024 13:51:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oMBihkdL7mVEg1PCnC/hHxU+G3xbXb5sI+3a1rVgTWXdAkHUwtAsJx1XSpLF0Yb2J1IaSKUP1NPXYM13D3C+1kITcRuPVk9Qauk+5BYqu7loAHuKs6osM9ix1fTSS6HsYVNMktXKFEsdcJyXHHZGdVaHHDrB7SJDUSnPFqONZYhwU0oenNUZmjDekEYmwQDrLEa0UZuC5fL0eKmOfT0B58qpL1z5gixq7dqRtPr5IZ50LcKOWHqsDSolu7wPVHftxZXIuY8Af3mqPsS3oGevrBPTHMcj0qM6/4zDkzy45Z8+wEHc1EVRxuxLVZOvcsl4UFwBo+fyPL28qx7AeGcncw== 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=7Oj60PQoJPFJgvBGF0Gwb8i/S1BehBult6ohDT2uC/8=; b=fvrh4H0h3x0ZGtWvDmCJwOb7aoMOeGD1RQEipwofsmnwfvtF/CqfVGUGJxg/ElNj2dmSe5WLZXOC3ySybSTCsGc2dLx+VHgIbm4kGk2uofAcwJAqoLk7pMBR27xHzpyqgyP/HI620R8Cr34ZpLFbpPYjWj/4m0NCkMHZvHipeTfb7MZdxYcj5LcLU+U2/GkR0iXKx/ycTJb3mfvuER526fYoUsy3Xk2e8a1GafN/vmyQwe7sIY4WUTa2R1g1/5c/eIZndJGA+oV6BjGag4upLgcL3xPMUuOEoSZ9V3iVGBkAepg4RLKxgclYpZ4BDkRybKavNen3Y33V+LIfe6hSPA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7Oj60PQoJPFJgvBGF0Gwb8i/S1BehBult6ohDT2uC/8=; b=g2htDENFjLUZ57d0rLDbRG9DE71xbVdGQikLtpyAS7KaWU6DBAxoj2cVgH/ed8faPH19T95AVZvp+ar4Lu19hjkgFAIUKdK9WMNZOk4M/hRLMOEUNQxUEB162Km0IBvY18LcP6GRqvmsgv/qGZxB73/TBLp1tpZvkrFn0Z12EkQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4551.eurprd04.prod.outlook.com (2603:10a6:20b:1a::24) by DBAPR04MB7317.eurprd04.prod.outlook.com (2603:10a6:10:1b3::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.26; Mon, 3 Jun 2024 13:51:05 +0000 Received: from AM6PR04MB4551.eurprd04.prod.outlook.com ([fe80::5b1c:9249:b225:f6fa]) by AM6PR04MB4551.eurprd04.prod.outlook.com ([fe80::5b1c:9249:b225:f6fa%5]) with mapi id 15.20.7611.030; Mon, 3 Jun 2024 13:51:05 +0000 Date: Mon, 3 Jun 2024 16:51:00 +0300 From: Vladimir Oltean To: MD Danish Anwar Cc: Jan Kiszka , Dan Carpenter , Andrew Lunn , Simon Horman , Diogo Ivo , Wolfram Sang , Randy Dunlap , Niklas Schnelle , Vignesh Raghavendra , Richard Cochran , Roger Quadros , Paolo Abeni , Jakub Kicinski , Eric Dumazet , "David S. Miller" , linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, srk@ti.com, Jacob Keller , Roger Quadros Subject: Re: [PATCH net-next v9 2/2] net: ti: icssg_prueth: add TAPRIO offload support Message-ID: <20240603135100.t57lr4u3j6h6zszd@skbuf> References: <20240531044512.981587-3-danishanwar@ti.com> <20240531044512.981587-3-danishanwar@ti.com> <20240531135157.aaxgslyur5br6zkb@skbuf> <20240531044512.981587-1-danishanwar@ti.com> <20240531044512.981587-1-danishanwar@ti.com> <20240531044512.981587-3-danishanwar@ti.com> <20240531044512.981587-3-danishanwar@ti.com> <20240531135157.aaxgslyur5br6zkb@skbuf> <9bcc04a9-645a-4571-a679-ffe67300877a@ti.com> <9bcc04a9-645a-4571-a679-ffe67300877a@ti.com> Content-Disposition: inline In-Reply-To: <9bcc04a9-645a-4571-a679-ffe67300877a@ti.com> <9bcc04a9-645a-4571-a679-ffe67300877a@ti.com> X-ClientProxiedBy: VI1PR06CA0138.eurprd06.prod.outlook.com (2603:10a6:803:a0::31) To AM6PR04MB4551.eurprd04.prod.outlook.com (2603:10a6:20b:1a::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4551:EE_|DBAPR04MB7317:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b4b9204-a0fb-43bd-e03e-08dc83d435f8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|7416005|1800799015|376005|366007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZnpuelRWaGwvcFE1VllSUWVKeEoza2tmZXlGU3djMzI0SC9OQXdETHQxZVRY?= =?utf-8?B?VzdRRmU3c1luSFlZVDJ3T3ZxL2VtaUdEemFOOWpXUG5henlYTHQvbHdxQWtK?= =?utf-8?B?TTVvTnNtOW9sMENTUFJ6UlVGT28yTXZHaE9zbU9DNVNMRVFNZ1lOREhXcUJZ?= =?utf-8?B?Zm9tOU8rWmlTR09MUEdhZEt4WHZ2eG1WWmJwYjhTbmhKeFpaQkFkODIwUU82?= =?utf-8?B?NHova3JMbyt3UkMxekdNdUw5blV0aEQ4d2ZYczErUWpCQVlBcUFtZnZybGtS?= =?utf-8?B?aUtDWEJOTm5GU05SV1hIZTlDY1ZMdm9SRUFzZS9PeDZOcGhzbTM2dFJKeWFY?= =?utf-8?B?TjU2OWlaa1ltN3llODYrdktkY2tlQzd2Wm8veXExZDRtMlgzZFVqQVhUajlp?= =?utf-8?B?WjlRMnNGU3N0bmxMNmZKeEtaby8rMkpaZDhxaTFlMklvdzRzNCtod2txNWsz?= =?utf-8?B?Z08rUmZSeUtobFBGWndrS3dlWWwxSVVPWkwrMEpZTGVRV1BnSjhqN0JXNXBR?= =?utf-8?B?d0ZKM1VLWlVuTE5IQ0FlQitKYTR2Vi9raUZTa3g2ZTBhYlBKQXVaRGtXcjhj?= =?utf-8?B?WkxrdS9UOUxycGdSZ21TNFFPL3NHdEpNT3NSeGVlUnkxTEJBb25LQys3YnRO?= =?utf-8?B?a0JWRVpUbHI4Uk9QcHA3S1hreWZCWTNEd3JaTGxJN05ZTFEvV25wK3ZCU1Fh?= =?utf-8?B?bVlDOHN3LzdPQkpiT1hHd01uMVVQb2VzdjVZdmZQMzF1U2RBc0xPL3ZpOXdT?= =?utf-8?B?WkZvQlQ1dm5zUUxydHoxMEVMcmROeGp6d3FqY3hoK3RoVkh4VWJqRzZqVW5K?= =?utf-8?B?Q3ZjbEhPOC9rdU1vQWo5aklqT05BcitTdFFzaVJFNGhoVDE0TFF6WnhNK3Ns?= =?utf-8?B?ODI1OVdUQXhVcXdUSFBjVVhNUUNOQkdLT3pkYVg3eG1ia2g5Z1hibUVlSWhw?= =?utf-8?B?TmFTQ1E1K2ZGZGlYRUwyK1g5dC9LK3E4TnhONUlvdU5QWldhOHU1SllRVzda?= =?utf-8?B?Mk8zczNNQ0Y0TVlDSm5OQ1Y1SWFGRjRrZEJsNU9GaW9CVWp6TzlkU2ZiQUxX?= =?utf-8?B?L2pRaitudURrcGRMbVJXK3JQMGtBR3dhUi9vbGlacGZEMS9iQWVXdWFRWm5a?= =?utf-8?B?TXgza1FnSk9ZaGxUV0x5dFFFRzN0RjRnYzFlQ0hLMTdPdVZnQ0gwMUZtVFZN?= =?utf-8?B?eCtteHIxeGxwS0M3MFl5N2ZYYWN1OHphZUtmYmhyamtGSE1OK0R6MVdEUmx0?= =?utf-8?B?ZTJGVTlpcWt2UFJmUXB6bGFWblptVEdMZGlzMEw1R3VwL3NIakp6a1N2ejAr?= =?utf-8?B?MTdnNVpzQTVBczk1RElid2FreXVNcnlsTHYwUUNmRXJ3cThjcGFpR0NZamVS?= =?utf-8?B?ampTdlhIMXMvbWI1cXVBc2UwenllOXo5MUxDYWFnaCt0R1Z4MU4raVhPWUd6?= =?utf-8?B?Wk1lRkRtd3E1Mm9MVk9iYTVQZTJVUVNxOExtMkZlV2E2M0JqM0tZT1VuV3Vu?= =?utf-8?B?VUh0RFNUSjEzZzhiaS9RZlprWi9aZVJhdVNUSHkraGNUdmhGUHZWb3R1dWtJ?= =?utf-8?B?Z21PV3JoeTRQeTE3Rk9FZ0puSTV6YTZKQUltUnZTOWtiLy9NNkdTWmVPL2ts?= =?utf-8?B?eUVlN09xeHRVYW85NFUranBlaThzc2RvVWV6alZGNXN1c1g0K3hHcmxJaHQ2?= =?utf-8?B?MXFuMFMyLzdmTFBObGNLbG9hUFpYdm1TOURUbmpqNVNYQzI3WnFWOW9BPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4551.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(7416005)(1800799015)(376005)(366007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?enZrdmxsMGg1N3QyMW5JaXJ6aGE0ems0RE1xdVVJelByQStQYThBVHpjWHVI?= =?utf-8?B?SUFvV0lSdmd2Q0JvUzhIWHVlS3RxcHZocER1cmdLdkFsOE4rUFhYaTJlT0RF?= =?utf-8?B?dmx2cEFXc0gzeXpHQkxsdmh3WjVhTW5sNkNmcEFrd0pVbHpBc1RkaW5hQlVD?= =?utf-8?B?THRXZEw4NkIvc2ZyaFFjSGd4OTBlQlNOS214V3BBZ2JyZ0VsMVZKSkd4MTAv?= =?utf-8?B?d3VTczFwTkVGOW1uYkFvNjJoRk50M0JSalBBOFJ0bU04dXIxLzlvTEl3bTky?= =?utf-8?B?dmR2RXNoVGc3NTFUVWxvRjN6d2JCRGVpZjJZSUcvYzNTckdSLzRVQ04rbEkw?= =?utf-8?B?bno3cWtKVkhzYUxFZEJidjBCL2JubUFnTGFaUXBWdTVFbXgxcGpheW5Vb2dk?= =?utf-8?B?RmQ4QW1vQkUzYmJUSWJyV3A3TGROeGYwL3BYOTFYb3BZOUdNSDVNRHJMYzda?= =?utf-8?B?d1JsdzFjd1lITlZTLzhYTXhFclF0MGNrUmhhaEkzWEhZdkJSdjVrQkFRRllV?= =?utf-8?B?V08yT0xWSEpBNmYrd1lrY2Z3cGhnU3dNQ0dIaHBPTGp3UE9ibGVLZ09XZERN?= =?utf-8?B?OTM5U3JFaHE0S0FIVHh3VWRBYnNJb0lSYTd2N3dIM0gyaHN4R1lBMlJQbW1Y?= =?utf-8?B?ZThmeE9YQ3BvWXhJdkNOSXJVNDNpellONXVycDEvcXBnSXMvOG9qOVNOaDNj?= =?utf-8?B?MTBFWmNhTlFYUzJhVFlUUDNuKzZCekpkY2JDZmtPc0NEenpGTldXdXN4dlVa?= =?utf-8?B?ZXZUY0Ywbyt3VDRxVG5MbXdLU0d1WllNVkdnR1JoVFJPRE5sN1RKVGYwdFlh?= =?utf-8?B?WG1GdXJocGxsdUJCNExib2cwbGNhNWs4TmE5UmV0Q05wbnA3RHBsemRWTVNk?= =?utf-8?B?Z2hXQ042YnpXMFk0NzlTOEQrRlRyU0xIb25rU3NlWFVlT2dBSkdKMjRKdWtW?= =?utf-8?B?ZFJnVDB2SjlRNGlweGtMS1hBSHZPanp1eVYzc0FyVHJnWjFkbTFZMU15YmdV?= =?utf-8?B?QnN6VXNFR2tFSjJzL29CL2loQWE2aWFZSzRjZzRYdW45b0lzd3FTZTN1Tllh?= =?utf-8?B?cmZnY2NVWnE4ajVnTFNha2hQaDVnU2p5MU9hN1RwUU1KN0hMNEN5UTBGOC9s?= =?utf-8?B?bEFiN1pGckMwSDliNGcwbE5INEJxUmR2TE9BZmFUd2MwSzF6RGZqZllCVU1l?= =?utf-8?B?Zy8xSmVnWER4aGp2SVdLUDMxSHNKQ0tWNmFNUmlnYXFOVUEyWFc0d2gyTlNn?= =?utf-8?B?S3RQeDJ5b2VEb1BTQjhDdDZYYUpmSkdhSkNGYnFpNWJWSG5tT0RnTW5nT1hp?= =?utf-8?B?dWtrY2pKN1BQOHVyb0N0VVpWWVNPRXMxQkYxR1hQdS8xU09MOFV6RURXdmtT?= =?utf-8?B?eGFaNXRpTWt2L3llSXNCcFpGWkF1VUthekFhM05KbG1EL3ZXdUhkKzRyYi8r?= =?utf-8?B?bGRhMzhqeUpvUW5RNGxKcXRHcUVidkRodS9IeEp1Uk45alZJaGlHNURINnNh?= =?utf-8?B?bnFYRWVuL2hza1o3c3VEMm9QSXZTallhU3Axamc3M2FtYjhpZGRIRnRPeFlS?= =?utf-8?B?M2ZtRUMyNmtCL0RxdjBoMS9FUUlxV0w4ajBDWFFOTTJBL3NUdy9id2dUc0c3?= =?utf-8?B?WHhRSzlFcmZ5cGtqOFdwUU8rOVFaSFdPMVJTT3FzVnVIRWJRdjNzeVhMQU5E?= =?utf-8?B?K0w3ZmkvSm13OXFWWkVyMjlzSmxIZ0x1ZWVlNkpxQkJ3bjM5bEYyMTZncEpw?= =?utf-8?B?NlZKczM1d3RkbjVpbGpSNHQrWWNNd3dzSGx4K3hkVTA3Y2JhczJibUVudGYz?= =?utf-8?B?TjFmNFE0TFJrckRKcm85T3JKTVhEeUJSRkFZUkt1QnR0NzlqWHJTOWROSFo4?= =?utf-8?B?SjVwdy8xVkdmdkNRSTFpZVlGNk9ReG82WWpRamZmaW1QdTZ6UGU0UlUzMzVk?= =?utf-8?B?YVJ2citoaWZTWUtCWkVNR2NPd3pWVWJPUHZCbGxVRG9palhSTXZtRDA2aUY1?= =?utf-8?B?WC91eU1meDZaZmxiRTlVa1UyRytuYmRYWTlGTXQxVjdsNFJOY21Xb2pPdUpZ?= =?utf-8?B?b0lRK2daRFFNT3NmK1hoOEJ3Mm9RbHY0V3lKR3VUWUFNcXB5Zm5yaFo0U0c2?= =?utf-8?B?aERjZ3ljUTF1blRVekZaaWx1SVZhcVhYY01CWUR5Mm5ZdmcxVzlHN2VMekZC?= =?utf-8?B?cHc9PQ==?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b4b9204-a0fb-43bd-e03e-08dc83d435f8 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4551.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2024 13:51:05.7419 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xmNnbpgd9c4d1qCkBCFuoa0SqiLyZGY/yTpEVDU5MVwg4q0a0oKvpnsP+WR9uYPTZiqkCT1t5ReJHKqnQNxH8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR04MB7317 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240603_065113_931288_BBFEE808 X-CRM114-Status: GOOD ( 38.24 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgRGFuaXNoLAoKT24gTW9uLCBKdW4gMDMsIDIwMjQgYXQgMDU6NDI6MDZQTSArMDUzMCwgTUQg RGFuaXNoIEFud2FyIHdyb3RlOgo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5l dC90aS9pY3NzZy9pY3NzZ19xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2lj c3NnX3Fvcy5jCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+PiBpbmRleCAwMDAwMDAwMDAw MDAuLjVlOTNiMWI5Y2E0Mwo+ID4+IC0tLSAvZGV2L251bGwKPiA+PiArKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19xb3MuYwo+ID4+IEBAIC0wLDAgKzEsMjg4IEBACj4g Pj4gK3N0YXRpYyB2b2lkIHRhc191cGRhdGVfZndfbGlzdF9wb2ludGVycyhzdHJ1Y3QgcHJ1ZXRo X2VtYWMgKmVtYWMpCj4gPj4gK3sKPiA+PiArCXN0cnVjdCB0YXNfY29uZmlnICp0YXMgPSAmZW1h Yy0+cW9zLnRhcy5jb25maWc7Cj4gPj4gKwo+ID4+ICsJaWYgKChyZWFkYih0YXMtPmFjdGl2ZV9s aXN0KSkgPT0gVEFTX0xJU1QwKSB7Cj4gPiAKPiA+IFdobyBhbmQgd2hlbiB1cGRhdGVzIHRhcy0+ YWN0aXZlX2xpc3QgZnJvbSBUQVNfTElTVDAgdG8gVEFTX0xJU1QxPwo+ID4KPiAKPiAtPmVtYWNf dGFwcmlvX3JlcGxhY2UoKQo+IAktPiB0YXNfdXBkYXRlX29wZXJfbGlzdCgpCj4gCQktPiB0YXNf c2V0X3RyaWdnZXJfbGlzdF9jaGFuZ2UoKQo+IAo+IFRoaXMgQVBJIHNlbmQgYSByMzAgY29tbWFu ZCB0byBmaXJtd2FyZSB0byB0cmlnZ2VyIHRoZSBsaXN0IGNoYW5nZQo+IGBlbWFjX3NldF9wb3J0 X3N0YXRlKGVtYWMsIElDU1NHX0VNQUNfUE9SVF9UQVNfVFJJR0dFUik7YAo+IAo+IFRoaXMgb25j ZSBmaXJtd2FyZSByZWNpdmVzIHRoaXMgY29tbWFuZCwgaXQgc3dhcHMgdGhlIGFjdGl2ZSBhbmQg c2hhZG93Cj4gbGlzdC4KPiAKPiBlbWFjX3RhcHJpb19yZXBsYWNlKCkgY2FsbHMgdGFzX3VwZGF0 ZV9vcGVyX2xpc3QoKQo+IAo+IEluIHRhc191cGRhdGVfb3Blcl9saXN0KCkgaW4gdGhlIGJlZ2lu bmluZyBhY3RpdmVfbGlzdCBpcyAwIGkuZS4KPiBUQVNfTElTVDAsIHRhc191cGRhdGVfZndfbGlz dF9wb2ludGVycygpIGlzIGNhbGxlZCB3aGljaCBjb25maWd1cmVzIHRoZQo+IGFjdGl2ZSBhbmQg c2hhZG93IGxpc3QgcG9pbnRlcnMuIFRBU19MSVNUMCBiZWNvbWVzIHRoZSBhY3RpdmVfbGlzdCBh bmQKPiBUQVNfTElTVDEgYmVjb21lcyB0aGUgc2hhZG93IGxpc3QuCj4gCj4gTGV0J3Mgc2F5IGJl Zm9yZSB0aGlzIEFQSSB3YXMgY2FsbGVkLCBhY3RpdmVfbGlzdCBpcyBUQVNfTElTVDAgKDApIGFu ZAo+IHNoYWRvd19saXN0IGlzIFRBU19MSVNUMS4KPiAKPiBBZnRlciBnZXR0aW5nIHRoZSBzaGFk b3dfbGlzdCB3ZSBmaWxsIHRocmVlIGRpZmZlcmVudCBhcnJheXMsCj4gMS4gZ2F0ZV9tYXNrX2xp c3RbXQo+IDIuIHdpbl9lbmRfdGltZV9saXN0W10KPiAzLiBnYXRlX2Nsb3NlX3RpbWVfbGlzdFtd W10gLSAyRCBhcnJheSB3aXRoIHNpemUgPSBudW1fZW50cmllcyAqIG51bV9xdWV1ZXMKPiAKPiBE cml2ZXIgb25seSB1cGRhdGVzIHRoZSBzaGFkb3dfbGlzdC4gT25jZSBzaGFkb3cgbGlzdCBpcyBm aWxsZWQsIHdlIGNhbGwKPiB0YXNfc2V0X3RyaWdnZXJfbGlzdF9jaGFuZ2UoKSBhbmQgYXNrIGZp cm13YXJlIHRvIGNoYW5nZSB0aGUgYWN0aXZlCj4gbGlzdC4gTm93IHRoZSBzaGFkb3dfbGlzdCB0 aGF0IHdlIGhhZCBmaWxsZWQgKFRBU19MSVNUMSkgd2lsbCBiZWNvbWUKPiBhY3RpdmUgbGlzdCBh bmQgdmljZSB2ZXJzYS4gV2Ugd2lsbCBhZ2FpbiB1cGRhdGUgb3VyIHBvaW50ZXJzCj4gCj4gVGhp cyBpcyBob3cgbGlzdCBpcyBjaGFuZ2VkIGJ5IGNhbGxpbmcgdGFzX3VwZGF0ZV9md19saXN0X3Bv aW50ZXJzLgo+IAo+ID4+ICsJdGFzX3VwZGF0ZV9md19saXN0X3BvaW50ZXJzKGVtYWMpOwo+ID4g Cj4gPiBDYWxsaW5nIHRoaXMgdHdpY2UgaW4gdGhlIHNhbWUgZnVuY3Rpb24/IEV4cGxhbmF0aW9u Pwo+ID4gCj4gCj4gQXMgZXhwbGFpbmVkIGVhcmxpZXIgdGFzX3VwZGF0ZV9md19saXN0X3BvaW50 ZXJzKCkgaXMgY2FsbGVkIGluIHRoZQo+IGJlZ2lubmluZyB0byBzZXQgdGhlIGFjdGl2ZSBhbmQg c2hhZG93X2xpc3QuIEFmdGVyIHRoYXQgd2UgZmlsbCB0aGUKPiBzaGFkb3cgbGlzdCBhbmQgdGhl biBzZW5kIGNvbW1tYW5kIHRvIHN3YXAgdGhlIGFjdGl2ZSBhbmQgc2hhZG93IGxpc3QuCj4gQXMg dGhlIGxpc3QgYXJlIHN3YXBwZWQgd2Ugd2lsbCBjYWxsIHRhc191cGRhdGVfZndfbGlzdF9wb2lu dGVycygpIHRvCj4gdXBkYXRlIHRoZSBsaXN0IHBvaW50ZXJzLgoKT2ssIGJ1dCBpZiBpY3NzZ19x b3NfdGFzX2luaXQoKSBhbHJlYWR5IGNhbGxzIHRhc191cGRhdGVfZndfbGlzdF9wb2ludGVycygp CmluaXRpYWxseSwgSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB0aGUgZmlyc3QgdGFzX3VwZGF0ZV9v cGVyX2xpc3QoKSBjYWxsCm9mIHRhc191cGRhdGVfb3Blcl9saXN0KCkgaXMgbmVjZXNzYXJ5LCBp ZiBvbmx5IHRhc19zZXRfdHJpZ2dlcl9saXN0X2NoYW5nZSgpCnN3YXBzIHRoZSBhY3RpdmUgd2l0 aCB0aGUgc2hhZG93IGxpc3QuIFRoZXJlIHdhcyBubyB1bmFjY291bnRlZCBsaXN0CnN3YXAgcHJp b3IgdG8gdGhlIHRhc191cGRhdGVfb3Blcl9saXN0KCkgY2FsbCwgd2FzIHRoZXJlPwoKPiA+PiAr c3RhdGljIHZvaWQgdGFzX3Jlc2V0KHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYykKPiA+PiArewo+ ID4+ICsJc3RydWN0IHRhc19jb25maWcgKnRhcyA9ICZlbWFjLT5xb3MudGFzLmNvbmZpZzsKPiA+ PiArCWludCBpOwo+ID4+ICsKPiA+PiArCWZvciAoaSA9IDA7IGkgPCBUQVNfTUFYX05VTV9RVUVV RVM7IGkrKykKPiA+PiArCQl0YXMtPm1heF9zZHVfdGFibGUubWF4X3NkdVtpXSA9IDIwNDg7Cj4g PiAKPiA+IE1hY3JvICsgc2hvcnQgY29tbWVudCBmb3IgdGhlIG1hZ2ljIG51bWJlciwgcGxlYXNl Lgo+ID4gCj4gCj4gU3VyZSBJIHdpbGwgYWRkIGl0LiBFYWNoIGVsZW1lbnRzIGluIHRoaXMgYXJy YXkgaXMgYSAyIGJ5dGUgdmFsdWUKPiBzaG93aW5nIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBmcmFt ZSB0byBiZSBhbGxvd2VkIHRocm91Z2ggZWFjaCBnYXRlLgoKSXMgdGhlIHF1ZXVlTWF4U0RVW10g YXJyYXkgYWN0aXZlIGV2ZW4gd2l0aCB0aGUgVEFTIGJlaW5nIGluIHRoZSByZXNldApzdGF0ZT8g RG9lcyB0aGlzIGNvbmZpZ3VyYXRpb24gaGF2ZSBhbnkgaW1wYWN0IHVwb24gdGhlIGRldmljZSBN VFU/CkkgZG9uJ3Qga25vdyB3aHkgMjA0OCB3YXMgY2hvc2VuLgoKPiA+PiArc3RhdGljIGludCB0 YXNfc2V0X3N0YXRlKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgZW51bSB0YXNfc3RhdGUgc3Rh dGUpCj4gPj4gK3sKPiA+PiArCXN0cnVjdCB0YXNfY29uZmlnICp0YXMgPSAmZW1hYy0+cW9zLnRh cy5jb25maWc7Cj4gPj4gKwlpbnQgcmV0Owo+ID4+ICsKPiA+PiArCWlmICh0YXMtPnN0YXRlID09 IHN0YXRlKQo+ID4+ICsJCXJldHVybiAwOwo+ID4+ICsKPiA+PiArCXN3aXRjaCAoc3RhdGUpIHsK PiA+PiArCWNhc2UgVEFTX1NUQVRFX1JFU0VUOgo+ID4+ICsJCXRhc19yZXNldChlbWFjKTsKPiA+ PiArCQlyZXQgPSBlbWFjX3NldF9wb3J0X3N0YXRlKGVtYWMsIElDU1NHX0VNQUNfUE9SVF9UQVNf UkVTRVQpOwo+ID4+ICsJCXRhcy0+c3RhdGUgPSBUQVNfU1RBVEVfUkVTRVQ7Cj4gPj4gKwkJYnJl YWs7Cj4gPj4gKwljYXNlIFRBU19TVEFURV9FTkFCTEU6Cj4gPj4gKwkJcmV0ID0gZW1hY19zZXRf cG9ydF9zdGF0ZShlbWFjLCBJQ1NTR19FTUFDX1BPUlRfVEFTX0VOQUJMRSk7Cj4gPj4gKwkJdGFz LT5zdGF0ZSA9IFRBU19TVEFURV9FTkFCTEU7Cj4gPj4gKwkJYnJlYWs7Cj4gPj4gKwljYXNlIFRB U19TVEFURV9ESVNBQkxFOgo+ID4+ICsJCXJldCA9IGVtYWNfc2V0X3BvcnRfc3RhdGUoZW1hYywg SUNTU0dfRU1BQ19QT1JUX1RBU19ESVNBQkxFKTsKPiA+PiArCQl0YXMtPnN0YXRlID0gVEFTX1NU QVRFX0RJU0FCTEU7Cj4gPiAKPiA+IFRoaXMgY2FuIGJlIGV4cHJlc3NlZCBhcyBqdXN0ICJ0YXMt PnN0YXRlID0gc3RhdGUiIG91dHNpZGUgdGhlIHN3aXRjaCBzdGF0ZW1lbnQuCj4gPiBCdXQgcHJv YmFibHkgc2hvdWxkbid0IGJlLCBpZiAicmV0ICE9IDAiLgo+IAo+IFllcyB3ZSBzaG91bGRuJ3Qg ZG8gdGhhdCBhcyB3ZSBhcmUgc2VuZGluZyB0aGUgcjMwIGNvbW1hbmQgdG8gZmlybXdhcmUKPiBp biBlYWNoIGNhc2UuCgpJIHdhcyBzYXlpbmcgdGhhdCBpZiB0aGVyZSdzIGEgZmlybXdhcmUgZXJy b3IsIHdlIHByb2JhYmx5IHNob3VsZG4ndAp1cGRhdGUgb3VyIHRhcy0+c3RhdGUgYXMgaWYgdGhl cmUgd2Fzbid0LgoKQW5kIHRoYXQgdGhlIHRhcy0+c3RhdGUgPSBzdGF0ZSBhc3NpZ25tZW50IGlz IGNvbW1vbiBhY3Jvc3MgYWxsIHN3aXRjaApjYXNlcywgc28gaXQncyBzaW1wbGVyIHRvIG1vdmUg aXQgb3V0LgoKPiA+IAo+ID4+ICsJCWJyZWFrOwo+ID4+ICsJZGVmYXVsdDoKPiA+PiArCQluZXRk ZXZfZXJyKGVtYWMtPm5kZXYsICIlczogdW5zdXBwb3J0ZWQgc3RhdGVcbiIsIF9fZnVuY19fKTsK PiA+IAo+ID4gVGhlcmUgYXJlIHR3byBsZXZlbHMgb2YgbG9nZ2luZyBmb3IgdGhpcyBlcnJvciwg YW5kIHRoaXMgcGFydGljdWxhciBvbmUKPiA+IGlzbid0IHVzZWZ1bC4gV2UgY2FuIGluZmVyIGl0 IHdlbnQgdGhyb3VnaCB0aGUgImRlZmF1bHQiIGNhc2Ugd2hlbiB0aGUKPiA+IHByaW50ayBiZWxv dyByZXR1cm5lZCAtRUlOVkFMLCBiZWNhdXNlIGlmIHRoYXQgLUVJTlZBTCBjYW1lIGZyb20KPiA+ IGVtYWNfc2V0X3BvcnRfc3RhdGUoKSwgdGhhdCB3b3VsZCBoYXZlIHByaW50ZWQsIGluIHR1cm4s ICJpbnZhbGlkIHBvcnQgY29tbWFuZCIuCj4gPiAKPiAKPiBCdXQsIHRoZSBlbnVtIHRhc19zdGF0 ZSBhbmQgZW51bSBpY3NzZ19wb3J0X3N0YXRlX2NtZCBhcmUgbm90IDEtMSBtYXBwZWQuCgpDb3Jy ZWN0LCBidXQgeW91IGFyZW4ndCBwcmludGluZyB0aGUgdGFzX3N0YXRlIGFueXdheSwgYW5kIHRo ZXJlJ3Mgbm8KY29kZSBwYXRoIHBvc3NpYmxlIHdpdGggYSB0YXNfc3RhdGUgb3V0c2lkZSB0aGUg d2VsbC1kZWZpbmVkIHZhbHVlcy4KCj4gZW1hY19zZXRfcG9ydF9zdGF0ZSgpIHdpbGwgb25seSBy ZXR1cm4gLUVJTlZBTCB3aGVuIGBjbWQgPj0KPiBJQ1NTR19FTUFDX1BPUlRfTUFYX0NPTU1BTkRT YCB3aGljaCBpcyAxOS4gQnV0IGEgdGFzX3N0YXRlIHZhbHVlIG9mIDMgaXMKPiBhbHNvIGludmFs aWQgYXMgd2Ugb25seSBzdXBwb3J0IHZhbHVlIG9mIDAsMSBhbmQgMiBzbyBJIHRoaW5rIHRoaXMg cHJpbnQKPiBzaG91ZGwgYmUgb2theQo+IAo+IGVudW0gdGFzX3N0YXRlIHsKPiAJVEFTX1NUQVRF X0RJU0FCTEUgPSAwLAo+IAlUQVNfU1RBVEVfRU5BQkxFID0gMSwKPiAJVEFTX1NUQVRFX1JFU0VU ID0gMiwKPiB9Owo+IAo+ID4gSSBkb24ndCB0aGluayB0aGF0IGEgImRlZmF1bHQiIGNhc2UgaXMg bmVlZGVkIGhlcmUsIGFzIGxvbmcgYXMgYWxsIGVudW0KPiA+IHZhbHVlcyBhcmUgaGFuZGxlZCwg YW5kIHRoZSBpbnB1dCBpcyBzYW5pdGl6ZWQgZXZlcnl3aGVyZSAod2hpY2ggaXQgaXMpLgo+ID4g Cj4gCj4gSSB0aGluayB0aGUgZGVmYXVsdCBjYXNlIHNob3VsZCByZW1haW4uIFdpdGhvdXQgZGVm YXVsdCBjYXNlIHRoZQo+IGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDAgZXZlbiBmb3IgaW52YWxpZCBz YXRlcy4gQnkgZGVmYXVsdCByZXQgPSAwLCBpbgo+IHRoZSB0YXNfc3RhdGUgcGFzc2VkIHRvIEFQ SSBpcyBub3QgdmFsaWQsIG5vbmUgb2YgdGhlIGNhc2Ugd2lsbCBiZQo+IGNhbGxlZCwgcmV0IHdp bGwgcmVtYWluZyB6ZXJvLiBObyBlcnJvciB3aWxsIGJlIHByaW50ZWQgYW5kIHRoZSBmdW5jdGlv bgo+IHdpbGwgcmV0dXJuIDAuIEtlZXBpbmcgZGVmYXVsdCBjYXNlIG1ha2VzIHN1cmUgdGhhdCB0 aGUgd3Jvbmcgc3RhdGUgd2FzCj4gcmVxdWVzdGVkLgo+IAoKRGVhZCBjb2RlIGlzIHdoYXQgaXQg aXMuIElmIGEgbmV3IGVudW0gdGFzX3N0YXRlIHZhbHVlIGlzIGFkZGVkIGFuZCBpdCdzCm5vdCBo YW5kbGVkIHRoZXJlLCB0aGUgX2NvbXBpbGVyXyB3aWxsIHdhcm4sIHJhdGhlciB0aGFuIHRoZSBM aW51eCBydW50aW1lLgpTbyBpdCdzIGFjdHVhbGx5IGVhc2llciBmb3IgdGhlIGRldmVsb3BlciB0 byBjYXRjaCBpdCwgcmF0aGVyIHRoYW4gdGhlIHVzZXIuCllvdSBkb24ndCBuZWVkIHRvIHByb3Rl Y3QgYWdhaW5zdCB5b3VyIG93biBzaGFkb3cuCgo+ID4+ICtzdGF0aWMgaW50IHRhc19zZXRfdHJp Z2dlcl9saXN0X2NoYW5nZShzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMpCj4gPj4gK3sKPiA+PiAr CXN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICphZG1pbl9saXN0ID0gZW1hYy0+cW9zLnRh cy50YXByaW9fYWRtaW47Cj4gPj4gKwlzdHJ1Y3QgdGFzX2NvbmZpZyAqdGFzID0gJmVtYWMtPnFv cy50YXMuY29uZmlnOwo+ID4+ICsJc3RydWN0IHB0cF9zeXN0ZW1fdGltZXN0YW1wIHN0czsKPiA+ PiArCXUzMiBjaGFuZ2VfY3ljbGVfY291bnQ7Cj4gPj4gKwl1MzIgY3ljbGVfdGltZTsKPiA+PiAr CXU2NCBiYXNlX3RpbWU7Cj4gPj4gKwl1NjQgY3VyX3RpbWU7Cj4gPj4gKwo+ID4+ICsJLyogSUVQ IGNsb2NrIGhhcyBhIGhhcmR3YXJlIGVycmF0YSBkdWUgdG8gd2hpY2ggaXQgd3JhcHMgYXJvdW5k IGV4YWN0bHkKPiA+PiArCSAqIG9uY2UgZXZlcnkgdGFwcmlvIGN5Y2xlLiBUbyBjb21wZW5zYXRl IGZvciB0aGF0LCBhZGp1c3QgY3ljbGUgdGltZQo+ID4+ICsJICogYnkgdGhlIHdyYXAgYXJvdW5k IHRpbWUgd2hpY2ggaXMgc3RvcmVkIGluIGVtYWMtPmllcC0+ZGVmX2luYwo+ID4+ICsJICovCj4g Pj4gKwljeWNsZV90aW1lID0gYWRtaW5fbGlzdC0+Y3ljbGVfdGltZSAtIGVtYWMtPmllcC0+ZGVm X2luYzsKPiA+PiArCWJhc2VfdGltZSA9IGFkbWluX2xpc3QtPmJhc2VfdGltZTsKPiA+PiArCWN1 cl90aW1lID0gcHJ1ZXRoX2llcF9nZXR0aW1lKGVtYWMsICZzdHMpOwo+ID4+ICsKPiA+PiArCWlm IChiYXNlX3RpbWUgPiBjdXJfdGltZSkKPiA+PiArCQljaGFuZ2VfY3ljbGVfY291bnQgPSBESVZf Uk9VTkRfVVBfVUxMKGJhc2VfdGltZSAtIGN1cl90aW1lLCBjeWNsZV90aW1lKTsKPiA+PiArCWVs c2UKPiA+PiArCQljaGFuZ2VfY3ljbGVfY291bnQgPSAxOwo+ID4+ICsKPiA+PiArCXdyaXRlbChj eWNsZV90aW1lLCBlbWFjLT5kcmFtLnZhICsgVEFTX0FETUlOX0NZQ0xFX1RJTUUpOwo+ID4+ICsJ d3JpdGVsKGNoYW5nZV9jeWNsZV9jb3VudCwgZW1hYy0+ZHJhbS52YSArIFRBU19DT05GSUdfQ0hB TkdFX0NZQ0xFX0NPVU5UKTsKPiA+PiArCXdyaXRlYihhZG1pbl9saXN0LT5udW1fZW50cmllcywg ZW1hYy0+ZHJhbS52YSArIFRBU19BRE1JTl9MSVNUX0xFTkdUSCk7Cj4gPj4gKwo+ID4+ICsJLyog Y29uZmlnX2NoYW5nZSBjbGVhcmVkIGJ5IGYvdyB0byBhY2sgcmVjZXB0aW9uIG9mIG5ldyBzaGFk b3cgbGlzdCAqLwo+ID4+ICsJd3JpdGViKDEsICZ0YXMtPmNvbmZpZ19saXN0LT5jb25maWdfY2hh bmdlKTsKPiA+PiArCS8qIGNvbmZpZ19wZW5kaW5nIGNsZWFyZWQgYnkgZi93IHdoZW4gbmV3IHNo YWRvdyBsaXN0IGlzIGNvcGllZCB0byBhY3RpdmUgbGlzdCAqLwo+ID4+ICsJd3JpdGViKDEsICZ0 YXMtPmNvbmZpZ19saXN0LT5jb25maWdfcGVuZGluZyk7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIGVt YWNfc2V0X3BvcnRfc3RhdGUoZW1hYywgSUNTU0dfRU1BQ19QT1JUX1RBU19UUklHR0VSKTsKPiA+ IAo+ID4gVGhlIGNhbGwgcGF0aCBoZXJlIGlzOgo+ID4gCj4gPiBlbWFjX3RhcHJpb19yZXBsYWNl KCkKPiA+IC0+IHRhc191cGRhdGVfb3Blcl9saXN0KCkKPiA+ICAgIC0+IHRhc19zZXRfdHJpZ2dl cl9saXN0X2NoYW5nZSgpCj4gPiAgICAgICAtPiBlbWFjX3NldF9wb3J0X3N0YXRlKGVtYWMsIElD U1NHX0VNQUNfUE9SVF9UQVNfVFJJR0dFUik7Cj4gPiAtPiB0YXNfc2V0X3N0YXRlKGVtYWMsIFRB U19TVEFURV9FTkFCTEUpOwo+ID4gICAgLT4gZW1hY19zZXRfcG9ydF9zdGF0ZShlbWFjLCBJQ1NT R19FTUFDX1BPUlRfVEFTX0VOQUJMRSk7Cj4gPiAKPiA+IEknbSBzdXJwcmlzZWQgYnkgdGhlIGNh bGxzIHRvIGVtYWNfc2V0X3BvcnRfc3RhdGUoKSBpbiBzdWNoIGEgcXVpY2sKPiA+IHN1Y2Nlc3Np b24/IElzIHRoZXJlIGFueSBmaXJtd2FyZSByZXF1aXJlbWVudCBmb3IgaG93IG11Y2ggc2hvdWxk IHRoZQo+ID4gcG9ydCBzdGF5IGluIHRoZSBUQVNfVFJJR0dFUiBzdGF0ZT8gT3IgaXMgaXQgbm90 IHJlYWxseSBhIHN0YXRlLCBkZXNwaXRlCj4gPiBpdCBiZWluZyBhbiBhcmd1bWVudCB0byBhIGZ1 bmN0aW9uIG5hbWVkIGVtYWNfc2V0X3BvcnRfc3RhdGUoKT8KPiA+IAo+IAo+IElDU1NHX0VNQUNf UE9SVF9UQVNfVFJJR0dFUiBpcyBub3QgYSBzdGF0ZS4gZW1hY19zZXRfcG9ydF9zdGF0ZSgpIHNl bmRzCj4gYSBjb21tYW5kIHRvIGZpcm13YXJlLCB3ZSBjYWxsIGl0IHIzMCBjb21tYW5kLiBEcml2 ZXIgdGhlbiB3YWl0cyBmb3IgdGhlCj4gcmVzcG9uc2UgZm9yIHNvbWUgdGltZS4gSWYgYSBzdWNj ZXNzZnVsbCByZXNwb25zZSBpcyByZWNpdmVkIHRoZQo+IGZ1bmN0aW9uIHJldHVybiAwIG90aGVy d2lzZSBlcnJvci4KPiAKPiBIZXJlIGZpcnN0IGBlbWFjX3NldF9wb3J0X3N0YXRlKGVtYWMsIElD U1NHX0VNQUNfUE9SVF9UQVNfVFJJR0dFUilgIGlzCj4gY2FsbGVkIHdoaWNoIHdpbGwgYXNrIGZp cm13YXJlIHRvIHN3YXAgdGhlIGFjdGl2ZV9saXN0IGFuZCBzaGFkb3dfbGlzdAo+IGFzIGV4cGxh aW5lZCBhYm92ZS4KPiAKPiBBZnRlciB0aGF0IElDU1NHX0VNQUNfUE9SVF9UQVNfRU5BQkxFIGNt ZCBpcyBzZW50LiBVcG9uIHJlY2lldmluaWcgdGhpcwo+IGNvbW1hbmQgZmlybXdhcmUgd2lsbCBF bmFibGUgVEFTIGZvciB0aGUgcGFydGljdWxhciBwb3J0LiAocG9ydCBpcyBwYXJ0Cj4gb2YgZW1h YyBzdHJ1Y3R1cmUpLgo+IAo+IEkgY2FuIHNlZSBob3cgdGhhdCBjYW4gYmUgY29uZnVzaW5nIGdp dmVuIHRoZSBBUEkgbmFtZSBpcwo+IGVtYWNfc2V0X3BvcnRfc3RhdGUoKS4gU29tZSBvZiB0aGUg Y21kcyBpbmZhY3QgdHJpZ2dlcnMgYSBzdGF0ZSBjaGFuZ2UKPiBlZy4gSUNTU0dfRU1BQ19QT1JU X0RJU0FCTEUsIElDU1NHX0VNQUNfUE9SVF9CTE9DSywKPiBJQ1NTR19FTUFDX1BPUlRfRk9SV0FS RCBidXQgc29tZSBvZiB0aGUgY29tbWFuZHMganVzdCB0cmlnZ2VycyBzb21lCj4gYWN0aW9uIG9u IHRoZSBmaXJtd2FyZSBzaWRlLiBCYXNlZCBvbiB0aGUgY29tbWFuZCBmaXJtd2FyZSBkb2VzIHNv bWUKPiBhY3Rpb25zLgoKSWYgeW91J3JlIHJlcGxhY2luZyBhbiBleGlzdGluZyBhY3RpdmUgc2No ZWR1bGUgd2l0aCBhIHNoYWRvdyBvbmUsIHRoZQpJQ1NTR19FTUFDX1BPUlRfVEFTX0VOQUJMRSBj b21tYW5kIGlzbid0IG5lZWRlZCBiZWNhdXNlIHRoZSBUQVMgaXMKYWxyZWFkeSBlbmFibGVkIG9u IHRoZSBwb3J0LCByaWdodD8gSW4gZmFjdCBpdCB3aWxsIGJlIHN1cHByZXNzZWQgYnkKdGFzX3Nl dF9zdGF0ZSgpIHdpdGhvdXQgZXZlbiBnZW5lcmF0aW5nIGFuIGVtYWNfc2V0X3BvcnRfc3RhdGUo KSBjYWxsLApyaWdodD8KCj4gPj4gK30KPiA+IAo+ID4gVGhlcmUncyBzb21ldGhpbmcgZXh0cmVt ZWx5IGVsZW1lbnRhcnkgYWJvdXQgdGhpcyBmdW5jdGlvbiB3aGljaCBJIHN0aWxsCj4gPiBkb24n dCB1bmRlcnN0YW5kLgo+ID4gCj4gPiBXaGVuIGRvZXMgdGhlIHNjaGVkdWxlIGFjdHVhbGx5IF9z dGFydF8/IENhbiB0aGF0IGJlIGNvbnRyb2xsZWQgYnkgdGhlCj4gPiBkcml2ZXIgd2l0aCB0aGUg aGlnaCAobmFub3NlY29uZCkgcHJlY2lzaW9uIG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgdGhlCj4g PiBJQ1NTRyB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBzY2hlZHVsZSBvZiBvdGhlciBlcXVpcG1l bnQgaW4gdGhlIExBTj8KPiA+IAo+ID4gWW91IG5ldmVyIHBhc3MgdGhlIGJhc2UgdGltZSBwZXIg c2UgdG8gdGhlIGZpcm13YXJlLiBKdXN0IGEgbnVtYmVyIG9mCj4gPiBjeWNsZXMgZnJvbSBub3cu IEkgZ3Vlc3MgdGhhdCBudW1iZXIgb2YgY3ljbGVzIGRlY2lkZXMgd2hlbiB0aGUgc2NoZWR1bGUK PiA+IHN0YXJ0cywgYnV0IHdoYXQgYXJlIHRob3NlIGN5Y2xlcyByZWxhdGl2ZSB0bz8KPiA+Cj4g Cj4gT25jZSB0aGUgc2hhZG93IGxpc3QgaXMgdXBkYXRlZCwgdGhlIHRyaWdnZXIgaXMgc2V0IGlu IHRoZSBmaXJtd2FyZSBhbmQKPiBmb3IgdGhhdCBBUEkgdGFzX3NldF90cmlnZ2VyX2xpc3RfY2hh bmdlKCkgaXMgY2FsbGVkLgo+IAo+IFRoZSBmb2xsb3dpbmcgdGhyZWUgb2Zmc2V0cyBhcmUgY29u ZmlndXJlZCBpbiB0aGlzIGZ1bmN0aW9uLAo+IDEuIFRBU19BRE1JTl9DWUNMRV9USU1FIOKGkiBh ZG1pbiBjeWNsZSB0aW1lCj4gMi4gVEFTX0NPTkZJR19DSEFOR0VfQ1lDTEVfQ09VTlQg4oaSIG51 bWJlciBvZiBjeWNsZXMgYWZ0ZXIgd2hpY2ggdGhlCj4gYWRtaW4gbGlzdCBpcyB0YWtlbiBhcyBv cGVyYXRpbmcgbGlzdC4KPiBUaGlzIHBhcmFtZXRlciBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIHRo ZSBiYXNlX3RpbWUsIGN1cl90aW1lIGFuZAo+IGN5Y2xlX3RpbWUuIElmIHRoZSBiYXNlX3RpbWUg aXMgaW4gcGFzdCAoYWxyZWFkeSBwYXNzZWQpIHRoZQo+IFRBU19DT05GSUdfQ0hBTkdFX0NZQ0xF X0NPVU5UIGlzIHNldCB0byAxLiBJZiB0aGUgYmFzZV90aW1lIGlzIGluCj4gZnV0dXJlLCBUQVNf Q09ORklHX0NIQU5HRV9DWUNMRV9DT1VOVCBpcyBjYWxjdWxhdGVkIHVzaW5nCj4gRElWX1JPVU5E X1VQX1VMTChiYXNlX3RpbWUgLSBjdXJfdGltZSwgY3ljbGVfdGltZSkKPiAzLiBUQVNfQURNSU5f TElTVF9MRU5HVEgg4oaSIE51bWJlciBvZiB3aW5kb3cgZW50cmllcyBpbiB0aGUgYWRtaW4gbGlz dC4KPiAKPiBBZnRlciBjb25maWd1cmluZyB0aGUgYWJvdmUgdGhyZWUgcGFyYW1ldGVycywgdGhl IGRyaXZlciBnaXZlcyB0aGUKPiB0cmlnZ2VyIHNpZ25hbCB0byB0aGUgZmlybXdhcmUgdXNpbmcg dGhlIFIzMCBjb21tYW5kIGludGVyZmFjZSB3aXRoCj4gSUNTU0dfRU1BQ19QT1JUX1RBU19UUklH R0VSIGNvbW1hbmQuCj4gCj4gVGhlIHNjaGVkdWxlIHN0YXJ0cyBiYXNlZCBvbiBUQVNfQ09ORklH X0NIQU5HRV9DWUNMRV9DT1VOVC4gVGhvc2UgY3ljbGVzCj4gYXJlIHJlbGF0aXZlIHRvIHRpbWUg cmVtYWluaW5nIGluIHRoZSBiYXNlX3RpbWUgZnJvbSBub3cgaS5lLiBiYXNlX3RpbWUKPiAtIGN1 cl90aW1lLgoKU28geW91J3JlIHNheWluZyB0aGF0IHRoZSBmaXJtd2FyZSBleGVjdXRlcyB0aGUg c2NoZWR1bGUgc3dpdGNoIGF0CgoJbm93ICAgICAgICAgICAgICAgICAgKyAgICAgIFRBU19BRE1J Tl9DWUNMRV9USU1FICogVEFTX0NPTkZJR19DSEFOR0VfQ1lDTEVfQ09VTlQgbnMKCX5+fgoJdGlt ZSBvZiByZWNlcHRpb24gb2YKCUlDU1NHX0VNQUNfUE9SVF9UQVNfVFJJR0dFUgoJUjMwIGNvbW1h bmQKCj8KCkknbSBub3QgcmVhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBkcml2ZXIgY2FsY3Vs YXRlcyB0aGUgY3ljbGUgY291bnQsCmp1c3QgaW4gd2hhdCBhcmUgdGhlIHByaW1pdGl2ZXMgdGhh dCB0aGUgZmlybXdhcmUgQUJJIHdhbnRzLgoKRG9lcyB0aGUgcmVhZGJfcG9sbF90aW1lb3V0KCkg Y2FsbCBmcm9tIHRhc191cGRhdGVfb3Blcl9saXN0KCkgYWN0dWFsbHkKd2FpdCB1bnRpbCB0aGlz IHdob2xlIHRpbWUgZWxhcHNlcz8gSXQgaXMgdXNlciBzcGFjZSBpbnB1dCwgc28gaXQgY2FuCmtl ZXAgYSB0YXNrIHdhaXRpbmcgaW4gdGhlIGtlcm5lbCwgd2l0aCBydG5sX2xvY2soKSBhY3F1aXJl ZCwgZm9yIGEgdmVyeQpsb25nIHRpbWUgaWYgdGhlIGJhc2VfdGltZSBpcyBmYXIgYXdheSBpbiB0 aGUgZnV0dXJlLgoKSWYgbXkgdW5kZXJzdGFuZGluZyBpcyBjb3JyZWN0LCB0aGVuIHRoZXJlIGFy ZSAyIHRoaW5ncyB5b3UgY2Fubm90IGRvCih3aGljaCBJTU8gYXJlIHZlcnkgaW1wb3J0YW50KSB3 aXRoIHRoZSBjdXJyZW50IGZpcm13YXJlIEFCSToKCjEuIFlvdSBjYW5ub3Qgc3luY2hyb25pemUg dGhlIHNjaGVkdWxlcyBvbiB0d28gSUNTU0cgZGV2aWNlcyB0byBvbmUKYW5vdGhlci4KCllvdSBh cmUgc3VwcG9zZWQgdG8gYmUgYWJsZSB0byBydW4gdGhlIHNhbWUgdGFwcmlvIGNvbW1hbmQgb24g dGhlIGVncmVzcwpwb3J0IG9mIDIgY2hhaW5lZCBzd2l0Y2hlcyBpbiBhIExBTjoKCnRjIHFkaXNj IHJlcGxhY2UgZGV2IHN3cDAgcGFyZW50IHJvb3QgdGFwcmlvIFwKCW51bV90YyA4IFwKCW1hcCAw IDEgMiAzIDQgNSA2IDcgXAoJcXVldWVzIDFAMCAxQDEgMUAyIDFAMyAxQDQgMUA1IDFANiAxQDcg XAoJYmFzZS10aW1lIDAgXAoJc2NoZWQtZW50cnkgUyAweDgxIDEwMDAwMCBcCglzY2hlZC1lbnRy eSBTIDB4MDEgOTAwMDAwIFwKCWZsYWdzIDB4MiBcCgltYXgtc2R1IDAgMCAwIDAgMCAwIDAgNzkK CmFuZCwgYXNzdW1pbmcgdGhhdCB0aGUgc3dpdGNoZXMgYXJlIHN5bmNocm9uaXplZCBieSBQVFAs IHRoZSBnYXRlIGV2ZW50cwp3aWxsIGJlIHN5bmNocm9uaXplZCBvbiB0aGUgMiBzd2l0Y2hlcy4K CkJ1dCBpZiB0aGUgc2NoZWR1bGUgY2hhbmdlIGZvcm11bGEgaW4gdGhlIGZpcm13YXJlIGlzIGZ1 bmRhbWVudGFsbHkKZGVwZW5kYW50IG9uIGEgIm5vdyIgdGhhdCBkZXBlbmRzIG9uIHdoZW4gdGhl IExpbnV4IGRyaXZlciBwZXJmb3JtZWQgdGhlClRBU19UUklHR0VSIGFjdGlvbiwgdGhlIGdhdGUg ZXZlbnRzIHdpbGwgbmV2ZXIgYmUgcHJlY2lzZWx5IHN5bmNocm9uaXplZC4KCkhlcmUsICJiYXNl LXRpbWUgMCIgbWVhbnMgdGhhdCB0aGUgZHJpdmVyL2Zpcm13YXJlL2hhcmR3YXJlIHNob3VsZAph ZHZhbmNlIHRoZSBzY2hlZHVsZSBzdGFydCB0aW1lIGludG8gdGhlIGNsb3Nlc3QgbW9tZW50IGlu IFBUUCB0aW1lCndoaWNoIGlzIGEgbXVsdGlwbGUgb2YgdGhlIGN5Y2xlLXRpbWUgKDEwMDAwMCs5 MDAwMDA9MTAwMDAwMCkuIFNvIGZvcgpleGFtcGxlLCBpZiB0aGUgY3VycmVudCBQVFAgdGltZSBp cyAxMDAwLjEyMzQ1Njc4OSwgdGhlIGNsb3Nlc3Qgc3RhcnQKdGltZSB3b3VsZCBiZSAxMDAuMTI0 MDAwMDAwLgoKMi4gWW91IGNhbm5vdCBhcHBseSBhIHBoYXNlIG9mZnNldCBiZXR3ZWVuIHRoZSBz Y2hlZHVsZXMgb24gdHdvIElDU1NHCmRldmljZXMgaW4gdGhlIHNhbWUgbmV0d29yay4KClNpbmNl IHRoZXJlIGlzIGEgUEhZLWRlcGVuZGVudCBwcm9wYWdhdGlvbiBkZWxheSBvbiBlYWNoIGxpbmss IG5ldHdvcmsKZW5naW5lZXJzIHR5cGljYWxseSBkZWxheSB0aGUgc2NoZWR1bGVzIG9uIHN3aXRj aCBwb3J0cyBhbG9uZyB0aGUgcGF0aApvZiBhIHN0cmVhbS4KClNheSBmb3IgZXhhbXBsZSB0aGVy ZSBpcyBhIHByb3BhZ2F0aW9uIGRlbGF5IG9mIDgwMCBucyBvbiBhIHN3aXRjaCB3aXRoCmJhc2Ut dGltZSAwLiBPbiB0aGUgbmV4dCBzd2l0Y2gsIHlvdSBjb3VsZCBhZGQgdGhlIHNjaGVkdWxlIGxp a2UgdGhpczoKCnRjIHFkaXNjIHJlcGxhY2UgZGV2IHN3cDAgcGFyZW50IHJvb3QgdGFwcmlvIFwK CW51bV90YyA4IFwKCW1hcCAwIDEgMiAzIDQgNSA2IDcgXAoJcXVldWVzIDFAMCAxQDEgMUAyIDFA MyAxQDQgMUA1IDFANiAxQDcgXAoJYmFzZS10aW1lIDgwMCBcCglzY2hlZC1lbnRyeSBTIDB4ODEg MTAwMDAwIFwKCXNjaGVkLWVudHJ5IFMgMHgwMSA5MDAwMDAgXAoJZmxhZ3MgMHgyIFwKCW1heC1z ZHUgMCAwIDAgMCAwIDAgMCA3OQoKU2FtZSBzY2hlZHVsZSwgcGhhc2Utc2hpZnRlZCBieSA4MDAg bnMsIHNvIHRoYXQgaWYgdGhlIHBhY2tldCBnb2VzCnRocm91Z2ggYW4gb3BlbiBnYXRlIGluIHRo ZSBmaXJzdCBzd2l0Y2gsIGl0IHdpbGwgYWxzbyBnbyB0aHJvdWdoIGFuCm9wZW4gZ2F0ZSB0aHJv dWdoIHRoZSBzZWNvbmQuCgpBY2NvcmRpbmcgdG8geW91ciBvd24gY2FsY3VsYXRpb25zIGFuZCBl eHBsYW5hdGlvbnMsIHRoZSBmaXJtd2FyZSBBQkkKbWFrZXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVu IGJhc2UtdGltZSAwIGFuZCBiYXNlLXRpbWUgODAwLgoKSW4gdGhpcyBjYXNlIHRoZXkgYXJlIHBy b2JhYmx5IGJvdGggc21hbGxlciB0aGFuIHRoZSBjdXJyZW50IHRpbWUsIHNvClRBU19DT05GSUdf Q0hBTkdFX0NZQ0xFX0NPVU5UIHdpbGwgYmUgc2V0IHRvIHRoZSBzYW1lICIxIiBpbiBib3RoIGNh c2VzLgoKQnV0IGV2ZW4gYXNzdW1pbmcgYSBmdXR1cmUgYmFzZS10aW1lLCBpdCBzdGlsbCB3aWxs IG1ha2Ugbm8gZGlmZmVyZW5jZS4KVGhlIGZpcm13YXJlIHNlZW1zIHRvIG9wZXJhdGUgb25seSBv biBpbnRlZ2VyIG11bHRpcGxlcyBvZiBhIGN5Y2xlLXRpbWUKKGhlcmUgMTAwMDAwMCkuCgpTdW1t YXJpemVkLCB0aGUgYmxvY2tpbmcgcHJvYmxlbXMgSSBzZWUgYXJlOgoKLSBGb3IgaXNzdWUgIzIs IHRoZSBkcml2ZXIgc2hvdWxkIG5vdCBsaWUgdG8gdGhlIHVzZXIgc3BhY2UgdGhhdCBpdAogIGFw cGxpZWQgYSBzY2hlZHVsZSB3aXRoIGEgYmFzZS10aW1lIHRoYXQgaXNuJ3QgYSBwcmVjaXNlIG11 bHRpcGxlIG9mCiAgdGhlIGN5Y2xlLXRpbWUsIGJlY2F1c2UgaXQgZG9lc24ndCBkbyB0aGF0LgoK LSBGb3IgaXNzdWUgIzEsIHRoZSBiaWdnZXIgcHJvYmxlbSBpcyB0aGF0IHRoZXJlIGlzIGFsd2F5 cyBhCiAgc29mdHdhcmUtaW5kdWNlZCBqaXR0ZXIgd2hpY2ggbWFrZXMgd2hhdGV2ZXIgdGhlIHVz ZXIgc3BhY2UgaGFzCiAgcmVxdWVzdGVkIGlycmVsZXZhbnQuCgpUaGlzIGlzIHN1ZmZpY2llbnRs eSBiYWQgdGhhdCBJIGRvbid0IHRoaW5rIGl0J3Mgd29ydGggc3BlbmRpbmcgYW55IG1vcmUKdGlt ZSBvbiBhbnl0aGluZyBlbHNlIHVudGlsIGl0IGlzIGNsZWFyIGhvdyB5b3UgY2FuIG1ha2UgdGhl IGZpcm13YXJlCmFjdHVhbGx5IG9iZXkgdGhlIHJlcXVlc3RlZCBiYXNlLXRpbWUuCgo+ID4+ICtz dGF0aWMgaW50IGVtYWNfdGFwcmlvX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCj4g Pj4gKwkJCSAgICAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqdGFwcmlvKQo+ID4+ ICt7Cj4gPj4gKwlzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMgPSBuZXRkZXZfcHJpdihuZGV2KTsK PiA+PiArCWludCByZXQ7Cj4gPj4gKwo+ID4+ICsJaWYgKHRhcHJpby0+Y3ljbGVfdGltZV9leHRl bnNpb24pIHsKPiA+PiArCQlOTF9TRVRfRVJSX01TR19NT0QodGFwcmlvLT5leHRhY2ssICJDeWNs ZSB0aW1lIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIik7Cj4gPj4gKwkJcmV0dXJuIC1FT1BOT1RT VVBQOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCWlmICh0YXByaW8tPmN5Y2xlX3RpbWUgPCBUQVNf TUlOX0NZQ0xFX1RJTUUpIHsKPiA+PiArCQlOTF9TRVRfRVJSX01TR19GTVRfTU9EKHRhcHJpby0+ ZXh0YWNrLCAiY3ljbGVfdGltZSAlbGx1IGlzIGxlc3MgdGhhbiBtaW4gc3VwcG9ydGVkIGN5Y2xl X3RpbWUgJWQiLAo+ID4+ICsJCQkJICAgICAgIHRhcHJpby0+Y3ljbGVfdGltZSwgVEFTX01JTl9D WUNMRV9USU1FKTsKPiA+PiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+PiArCX0KPiA+PiArCj4gPj4g KwlpZiAodGFwcmlvLT5udW1fZW50cmllcyA+IFRBU19NQVhfQ01EX0xJU1RTKSB7Cj4gPj4gKwkJ TkxfU0VUX0VSUl9NU0dfRk1UX01PRCh0YXByaW8tPmV4dGFjaywgIm51bV9lbnRyaWVzICVsdSBp cyBtb3JlIHRoYW4gbWF4IHN1cHBvcnRlZCBlbnRyaWVzICVkIiwKPiA+PiArCQkJCSAgICAgICB0 YXByaW8tPm51bV9lbnRyaWVzLCBUQVNfTUFYX0NNRF9MSVNUUyk7Cj4gPj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJaWYgKGVtYWMtPnFvcy50YXMudGFwcmlvX2Fk bWluKQo+ID4+ICsJCXRhcHJpb19vZmZsb2FkX2ZyZWUoZW1hYy0+cW9zLnRhcy50YXByaW9fYWRt aW4pOwo+ID4+ICsKPiA+PiArCWVtYWMtPnFvcy50YXMudGFwcmlvX2FkbWluID0gdGFwcmlvX29m ZmxvYWRfZ2V0KHRhcHJpbyk7Cj4gPj4gKwlyZXQgPSB0YXNfdXBkYXRlX29wZXJfbGlzdChlbWFj KTsKPiA+IAo+ID4gSWYgdGhpcyBmYWlscyBhbmQgdGhlcmUgd2FzIGEgcHJldmlvdXMgZW1hYy0+ cW9zLnRhcy50YXByaW9fYWRtaW4KPiA+IHNjaGVkdWxlIHByZXNlbnQsIHlvdSBqdXN0IGJyb2tl IGl0LiBJbiBwYXJ0aWN1bGFyLCB0aGUKPiA+ICJpZiAoYWRtaW5fbGlzdC0+Y3ljbGVfdGltZSA+ IFRBU19NQVhfQ1lDTEVfVElNRSkiIGJvdW5kcyBjaGVjayByZWFsbHkKPiA+IGRvZXNuJ3QgYmVs b25nIHRoZXJlOyBpdCBzaG91bGQgaGF2ZSBiZWVuIGRvbmUgbXVjaCBlYXJsaWVyLCB0byBhdm9p ZCBhCj4gPiBjb21wbGV0ZSBvZmZsb2FkIGJyZWFrYWdlIGZvciBzdWNoIGEgc2lsbHkgdGhpbmcg KHJlcGxhY2luZyBhIHdvcmtpbmcKPiA+IHRhcHJpbyBzY2hlZHVsZSB3aXRoIGEgbmV3IG9uZSB0 aGF0IGhhcyB0b28gbGFyZ2UgY3ljbGUgYnJlYWtzIHRoZSBvbGQKPiA+IHNjaGVkdWxlKS4KPiA+ IAo+IAo+IFdpbGwgYWRkaW5nIHRoZSBjaGVjayAiaWYgKGFkbWluX2xpc3QtPmN5Y2xlX3RpbWUg PiBUQVNfTUFYX0NZQ0xFX1RJTUUpIgo+IGluIGVtYWNfdGFwcmlvX3JlcGxhY2UoKSBhbG9uZyB3 aXRoIHRoZSBhbGwgdGhlIGNoZWNrcyBiZSBPSz8KClllcywgYnV0ICJpdCB3aWxsIGJlIG9rIiBu ZWVkcyB0byBiZSBwdXQgaW4gcHJvcGVyIGNvbnRleHQgKHRoaXMgc21hbGwKdGhpbmcgaXMgT0sg ZG9lc24ndCBtZWFuIGV2ZXJ5dGhpbmcgaXMgT0spLgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=