From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F1B032EAF7; Wed, 13 Mar 2024 12:58:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.199 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710334707; cv=none; b=S+zZDWNBjqP1tpaEB6EfRkgJbK3/MTdu5y/e0pn5wLNjpBHVtppAv3PRalWrXFeHsyg+ALnI7hEi2Ij7EeXmhqeHF184h0R3fK84Vp2O2ifqusuPtt2CpQcM8SwAtpCGF+J6WxVoJ15SJQS71MW7xjWyYuAtQVdHTTcMDnAzhK0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710334707; c=relaxed/simple; bh=hJh1+o838mN+1uSio3mU/BWWt88jK+qtP+0D/946Y+o=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=e2yteSmzCO+IndBv/5IGM8124tJDGCGRU8PkMff3zvMIscHfuO5+K+3DRhiz/2r2B3ap9+Vl3T/QL/vG99YT5U/+iq4+/B0OIisaAjUtu4mEMWtwxncrgmWsWVIk29JfI/san7GfPpQGxWfPOpkbCvXtB1emtcWa/0jWE/w0bAY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=WAQ7ECWm; arc=none smtp.client-ip=217.70.183.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="WAQ7ECWm" Received: by mail.gandi.net (Postfix) with ESMTPSA id BAF4DFF809; Wed, 13 Mar 2024 12:58:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1710334696; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Mx4SaTEHX/lA0NAN8GNivatQCJaMOF+1Nu2r2G9g3oU=; b=WAQ7ECWm751CFpR96kCQu3giLkwLk0GYMCLmislJIKbyIqI8bfLeEvJguzH332kax/e3nY 2RoEUHM5effPwWHiYcXsaVFN2vDKRQZu29R5B/8FFbRKNqYppToE+d2TEEeYAO/eIabFaO OV6f36jqLK+aF8vcBFNWODk0lplVIk67vwdNN6Q1E4QTNBZNsPQZLvyvVDi7Xz4Qd3Jiy4 My0mYc0b856O2d5xSX6oLJh1VMGuI8JjMWQmzrXN7TMzLremSfRiHEzitTB2eV8nCXAbpK PfcMA3L5SWlhB6i8/qHDamPjZHAQWpdrTy7kTmU4G1eh6sy0SCo1SOT44q46sw== Date: Wed, 13 Mar 2024 13:58:13 +0100 From: Alexandre Belloni To: David Woodhouse Cc: Peter Hilber , linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, virtio-dev@lists.oasis-open.org, linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, "virtio-comment@lists.oasis-open.org" , "Christopher S. Hall" , Jason Wang , John Stultz , "Michael S. Tsirkin" , netdev@vger.kernel.org, Richard Cochran , Stephen Boyd , Thomas Gleixner , Xuan Zhuo , Marc Zyngier , Mark Rutland , Daniel Lezcano , Alessandro Zummo , "Ridoux, Julien" Subject: Re: [RFC PATCH v3 0/7] Add virtio_rtc module and related changes Message-ID: <20240313125813ec78d5a9@mail.local> References: <20231218073849.35294-1-peter.hilber@opensynergy.com> <0e21e3e2be26acd70b5575b9932b3a911c9fe721.camel@infradead.org> <204c6339-e80d-4a98-8d07-a11eeb729497@opensynergy.com> <667c8d944ce9ea5c570b82b1858a70cc67b2f3e4.camel@infradead.org> <57704b2658e643fce30468dffd8c1477607f59fb.camel@infradead.org> <202403131118010e7ed5bf@mail.local> Precedence: bulk X-Mailing-List: linux-rtc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-GND-Sasl: alexandre.belloni@bootlin.com On 13/03/2024 12:29:38+0000, David Woodhouse wrote: > On Wed, 2024-03-13 at 12:18 +0100, Alexandre Belloni wrote: > > > > I still don't know anything about virtio but under Linux, an RTC is > > always UTC (or localtime when dual booting but let's not care) and never > > accounts for leap seconds. Having an RTC and RTC driver behaving > > differently would be super inconvenient. Why don't you leave this to > > userspace? > > Well yes, we don't need to expose *anything* from the hypervisor and we > can leave it all to guest userspace. We can run NTP on every single one > of *hundreds* of guests, leaving them all to duplicate the work of > calibrating the *same* underlying oscillator. > Really, I see the point of sharing the time accurately between the host and the guest and not duplicating the effort. This is not what I am objecting to. > I thought we were trying to avoid that, by having the hypervisor tell > them what the time was. If we're going to do that, we need it to be > sufficiently precise (and some clients want to *know* the precision), > and above all we need it to be *unambiguous*. > > If the hypervisor says that the time is 3692217600.001, then the guest > doesn't actually know *which* 3692217600.001 it is, and thus it still > doesn't know the time to an accuracy better than 1 second. > The RTC subsystem has a 1 second resolution and this is not going to change because there is no point doing so for the hardware, to get the time precisely, UIE MUST be used there is no vendor that will just support reading the time/date or timestamp as this is way too imprecise. > And if we start allowing the hypervisor to smear clocks in some other > underspecified ways, then we end up with errors of up to 1 second in > the clock for long periods of time *around* the leap second. > > We need to avoid that ambiguity. Exactly my point and I said, reading an RTC is always UTC and never handles leap seconds so if userspace doesn't handle the leap second and updates the RTC, too bad. There are obviously no RTC that will smear clock unless instructed to, so the hypervisor must not smear the clock. Note that this is not an issue for the subsystem because if you are not capable to track an accurate clock, the RTC itself will have drifted by much more than a second in between leap second inclusions. > > > I guess I'm still questioning whether this is the correct interface to > > expose the host system time instead of an actual RTC. > > If an RTC device is able to report '23:59:60' as the time of day, I > suppose that *could* resolve the ambiguity. But talking to a device is > slow; we want guests to be able to know the time — accurately — with a > simple counter/tsc read and some arithmetic. Which means *paired* reads > of 'RTC' and the counter, and a precise indication of the counter > frequency. 23:59:60 is not and will never be allowed in the RTC subsystem as this is an invalid value for the hardware. The TSC or whatever CPU counter/clock that is used to keep the system time is not an RTC, I don't get why it has to be exposed as such to the guests. PTP is fine and precise, RTC is not. -- Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com 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 2C326C54791 for ; Wed, 13 Mar 2024 12:58:46 +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:In-Reply-To:MIME-Version: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=imocMqtwW6iYSC9iOm0aoGGrsl5M1eDhbka/VlCSXfE=; b=PKdqMzqQtUzXc0 ZsHgGZ6jWZVKSIhZ79lfQ9i0e1PARtrW/wakfqspBbc5grlt85g3w9i4AR9W/ujwEKK7U11Gu93nm NBLTE22UAA7HWj4fmrNtWwZg8FfaztEwlAl+x5E0nbqiMs3xpnnrRp0LGfblulB9iSHIfq7OSfgnh NqvHNbIHQOPXHGjjXo44+IrHfNnbVBJE/NhT4Cm7+/DsY+0yQYWp23Jh9qVv4w+jmvjNTXzP85eF6 PJe413qKHIeql3f8eD923BVvu1c9KxDxTMgUAWYrxkt3c9gcoGxqO7TjXg/kbJgFxQnOK4LZ1khzU nrAwWPvLGohe7pc5ma/g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rkOBj-0000000A8gU-49Pp; Wed, 13 Mar 2024 12:58:31 +0000 Received: from relay9-d.mail.gandi.net ([217.70.183.199]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rkOBf-0000000A8dv-1s8Z for linux-arm-kernel@lists.infradead.org; Wed, 13 Mar 2024 12:58:29 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id BAF4DFF809; Wed, 13 Mar 2024 12:58:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1710334696; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Mx4SaTEHX/lA0NAN8GNivatQCJaMOF+1Nu2r2G9g3oU=; b=WAQ7ECWm751CFpR96kCQu3giLkwLk0GYMCLmislJIKbyIqI8bfLeEvJguzH332kax/e3nY 2RoEUHM5effPwWHiYcXsaVFN2vDKRQZu29R5B/8FFbRKNqYppToE+d2TEEeYAO/eIabFaO OV6f36jqLK+aF8vcBFNWODk0lplVIk67vwdNN6Q1E4QTNBZNsPQZLvyvVDi7Xz4Qd3Jiy4 My0mYc0b856O2d5xSX6oLJh1VMGuI8JjMWQmzrXN7TMzLremSfRiHEzitTB2eV8nCXAbpK PfcMA3L5SWlhB6i8/qHDamPjZHAQWpdrTy7kTmU4G1eh6sy0SCo1SOT44q46sw== Date: Wed, 13 Mar 2024 13:58:13 +0100 From: Alexandre Belloni To: David Woodhouse Cc: Peter Hilber , linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, virtio-dev@lists.oasis-open.org, linux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org, "virtio-comment@lists.oasis-open.org" , "Christopher S. Hall" , Jason Wang , John Stultz , "Michael S. Tsirkin" , netdev@vger.kernel.org, Richard Cochran , Stephen Boyd , Thomas Gleixner , Xuan Zhuo , Marc Zyngier , Mark Rutland , Daniel Lezcano , Alessandro Zummo , "Ridoux, Julien" Subject: Re: [RFC PATCH v3 0/7] Add virtio_rtc module and related changes Message-ID: <20240313125813ec78d5a9@mail.local> References: <20231218073849.35294-1-peter.hilber@opensynergy.com> <0e21e3e2be26acd70b5575b9932b3a911c9fe721.camel@infradead.org> <204c6339-e80d-4a98-8d07-a11eeb729497@opensynergy.com> <667c8d944ce9ea5c570b82b1858a70cc67b2f3e4.camel@infradead.org> <57704b2658e643fce30468dffd8c1477607f59fb.camel@infradead.org> <202403131118010e7ed5bf@mail.local> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-GND-Sasl: alexandre.belloni@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240313_055827_970729_0AA1751B X-CRM114-Status: GOOD ( 34.44 ) 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 T24gMTMvMDMvMjAyNCAxMjoyOTozOCswMDAwLCBEYXZpZCBXb29kaG91c2Ugd3JvdGU6Cj4gT24g V2VkLCAyMDI0LTAzLTEzIGF0IDEyOjE4ICswMTAwLCBBbGV4YW5kcmUgQmVsbG9uaSB3cm90ZToK PiA+IAo+ID4gSSBzdGlsbCBkb24ndCBrbm93IGFueXRoaW5nIGFib3V0IHZpcnRpbyBidXQgdW5k ZXIgTGludXgsIGFuIFJUQyBpcwo+ID4gYWx3YXlzIFVUQyAob3IgbG9jYWx0aW1lIHdoZW4gZHVh bCBib290aW5nIGJ1dCBsZXQncyBub3QgY2FyZSkgYW5kIG5ldmVyCj4gPiBhY2NvdW50cyBmb3Ig bGVhcCBzZWNvbmRzLiBIYXZpbmcgYW4gUlRDIGFuZCBSVEMgZHJpdmVyIGJlaGF2aW5nCj4gPiBk aWZmZXJlbnRseSB3b3VsZCBiZSBzdXBlciBpbmNvbnZlbmllbnQuIFdoeSBkb24ndCB5b3UgbGVh dmUgdGhpcyB0bwo+ID4gdXNlcnNwYWNlPwo+IAo+IFdlbGwgeWVzLCB3ZSBkb24ndCBuZWVkIHRv IGV4cG9zZSAqYW55dGhpbmcqIGZyb20gdGhlIGh5cGVydmlzb3IgYW5kIHdlCj4gY2FuIGxlYXZl IGl0IGFsbCB0byBndWVzdCB1c2Vyc3BhY2UuIFdlIGNhbiBydW4gTlRQIG9uIGV2ZXJ5IHNpbmds ZSBvbmUKPiBvZiAqaHVuZHJlZHMqIG9mIGd1ZXN0cywgbGVhdmluZyB0aGVtIGFsbCB0byBkdXBs aWNhdGUgdGhlIHdvcmsgb2YKPiBjYWxpYnJhdGluZyB0aGUgKnNhbWUqIHVuZGVybHlpbmcgb3Nj aWxsYXRvci4KPiAKClJlYWxseSwgSSBzZWUgdGhlIHBvaW50IG9mIHNoYXJpbmcgdGhlIHRpbWUg YWNjdXJhdGVseSBiZXR3ZWVuIHRoZSBob3N0CmFuZCB0aGUgZ3Vlc3QgYW5kIG5vdCBkdXBsaWNh dGluZyB0aGUgZWZmb3J0LiBUaGlzIGlzIG5vdCB3aGF0IEkgYW0Kb2JqZWN0aW5nIHRvLgoKPiBJ IHRob3VnaHQgd2Ugd2VyZSB0cnlpbmcgdG8gYXZvaWQgdGhhdCwgYnkgaGF2aW5nIHRoZSBoeXBl cnZpc29yIHRlbGwKPiB0aGVtIHdoYXQgdGhlIHRpbWUgd2FzLiBJZiB3ZSdyZSBnb2luZyB0byBk byB0aGF0LCB3ZSBuZWVkIGl0IHRvIGJlCj4gc3VmZmljaWVudGx5IHByZWNpc2UgKGFuZCBzb21l IGNsaWVudHMgd2FudCB0byAqa25vdyogdGhlIHByZWNpc2lvbiksCj4gYW5kIGFib3ZlIGFsbCB3 ZSBuZWVkIGl0IHRvIGJlICp1bmFtYmlndW91cyouCj4gCj4gSWYgdGhlIGh5cGVydmlzb3Igc2F5 cyB0aGF0IHRoZSB0aW1lIGlzIDM2OTIyMTc2MDAuMDAxLCB0aGVuIHRoZSBndWVzdAo+IGRvZXNu J3QgYWN0dWFsbHkga25vdyAqd2hpY2gqIDM2OTIyMTc2MDAuMDAxIGl0IGlzLCBhbmQgdGh1cyBp dCBzdGlsbAo+IGRvZXNuJ3Qga25vdyB0aGUgdGltZSB0byBhbiBhY2N1cmFjeSBiZXR0ZXIgdGhh biAxIHNlY29uZC4KPiAKClRoZSBSVEMgc3Vic3lzdGVtIGhhcyBhIDEgc2Vjb25kIHJlc29sdXRp b24gYW5kIHRoaXMgaXMgbm90IGdvaW5nIHRvCmNoYW5nZSBiZWNhdXNlIHRoZXJlIGlzIG5vIHBv aW50IGRvaW5nIHNvIGZvciB0aGUgaGFyZHdhcmUsIHRvIGdldCB0aGUKdGltZSBwcmVjaXNlbHks IFVJRSBNVVNUIGJlIHVzZWQgdGhlcmUgaXMgbm8gdmVuZG9yIHRoYXQgd2lsbCBqdXN0CnN1cHBv cnQgcmVhZGluZyB0aGUgdGltZS9kYXRlIG9yIHRpbWVzdGFtcCBhcyB0aGlzIGlzIHdheSB0b28g aW1wcmVjaXNlLgoKPiBBbmQgaWYgd2Ugc3RhcnQgYWxsb3dpbmcgdGhlIGh5cGVydmlzb3IgdG8g c21lYXIgY2xvY2tzIGluIHNvbWUgb3RoZXIKPiB1bmRlcnNwZWNpZmllZCB3YXlzLCB0aGVuIHdl IGVuZCB1cCB3aXRoIGVycm9ycyBvZiB1cCB0byAxIHNlY29uZCBpbgo+IHRoZSBjbG9jayBmb3Ig bG9uZyBwZXJpb2RzIG9mIHRpbWUgKmFyb3VuZCogdGhlIGxlYXAgc2Vjb25kLgo+IAo+IFdlIG5l ZWQgdG8gYXZvaWQgdGhhdCBhbWJpZ3VpdHkuCgpFeGFjdGx5IG15IHBvaW50IGFuZCBJIHNhaWQs IHJlYWRpbmcgYW4gUlRDIGlzIGFsd2F5cyBVVEMgYW5kIG5ldmVyCmhhbmRsZXMgbGVhcCBzZWNv bmRzIHNvIGlmIHVzZXJzcGFjZSBkb2Vzbid0IGhhbmRsZSB0aGUgbGVhcCBzZWNvbmQgYW5kCnVw ZGF0ZXMgdGhlIFJUQywgdG9vIGJhZC4gVGhlcmUgYXJlIG9idmlvdXNseSBubyBSVEMgdGhhdCB3 aWxsIHNtZWFyCmNsb2NrIHVubGVzcyBpbnN0cnVjdGVkIHRvLCBzbyB0aGUgaHlwZXJ2aXNvciBt dXN0IG5vdCBzbWVhciB0aGUgY2xvY2suCgpOb3RlIHRoYXQgdGhpcyBpcyBub3QgYW4gaXNzdWUg Zm9yIHRoZSBzdWJzeXN0ZW0gYmVjYXVzZSBpZiB5b3UgYXJlIG5vdApjYXBhYmxlIHRvIHRyYWNr IGFuIGFjY3VyYXRlIGNsb2NrLCB0aGUgUlRDIGl0c2VsZiB3aWxsIGhhdmUgZHJpZnRlZCBieQpt dWNoIG1vcmUgdGhhbiBhIHNlY29uZCBpbiBiZXR3ZWVuIGxlYXAgc2Vjb25kIGluY2x1c2lvbnMu Cgo+IAo+ID4gSSBndWVzcyBJJ20gc3RpbGwgcXVlc3Rpb25pbmcgd2hldGhlciB0aGlzIGlzIHRo ZSBjb3JyZWN0IGludGVyZmFjZSB0bwo+ID4gZXhwb3NlIHRoZSBob3N0IHN5c3RlbSB0aW1lIGlu c3RlYWQgb2YgYW4gYWN0dWFsIFJUQy4KPiAKPiBJZiBhbiBSVEMgZGV2aWNlIGlzIGFibGUgdG8g cmVwb3J0ICcyMzo1OTo2MCcgYXMgdGhlIHRpbWUgb2YgZGF5LCBJCj4gc3VwcG9zZSB0aGF0ICpj b3VsZCogcmVzb2x2ZSB0aGUgYW1iaWd1aXR5LiBCdXQgdGFsa2luZyB0byBhIGRldmljZSBpcwo+ IHNsb3c7IHdlIHdhbnQgZ3Vlc3RzIHRvIGJlIGFibGUgdG8ga25vdyB0aGUgdGltZSDigJQgYWNj dXJhdGVseSDigJQgd2l0aCBhCj4gc2ltcGxlIGNvdW50ZXIvdHNjIHJlYWQgYW5kIHNvbWUgYXJp dGhtZXRpYy4gV2hpY2ggbWVhbnMgKnBhaXJlZCogcmVhZHMKPiBvZiAnUlRDJyBhbmQgdGhlIGNv dW50ZXIsIGFuZCBhIHByZWNpc2UgaW5kaWNhdGlvbiBvZiB0aGUgY291bnRlcgo+IGZyZXF1ZW5j eS4KCjIzOjU5OjYwIGlzIG5vdCBhbmQgd2lsbCBuZXZlciBiZSBhbGxvd2VkIGluIHRoZSBSVEMg c3Vic3lzdGVtIGFzIHRoaXMKaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGhhcmR3YXJlLgoK VGhlIFRTQyBvciB3aGF0ZXZlciBDUFUgY291bnRlci9jbG9jayB0aGF0IGlzIHVzZWQgdG8ga2Vl cCB0aGUgc3lzdGVtCnRpbWUgaXMgbm90IGFuIFJUQywgSSBkb24ndCBnZXQgd2h5IGl0IGhhcyB0 byBiZSBleHBvc2VkIGFzIHN1Y2ggdG8gdGhlCmd1ZXN0cy4gUFRQIGlzIGZpbmUgYW5kIHByZWNp c2UsIFJUQyBpcyBub3QuCgotLSAKQWxleGFuZHJlIEJlbGxvbmksIGNvLW93bmVyIGFuZCBDT08s IEJvb3RsaW4KRW1iZWRkZWQgTGludXggYW5kIEtlcm5lbCBlbmdpbmVlcmluZwpodHRwczovL2Jv b3RsaW4uY29tCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==