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 X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08FF5C433B4 for ; Mon, 3 May 2021 15:16:56 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0EF66611CE for ; Mon, 3 May 2021 15:16:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0EF66611CE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=basnieuwenhuizen.nl Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 269AF6E8B7; Mon, 3 May 2021 15:16:54 +0000 (UTC) Received: from mail-io1-xd2e.google.com (mail-io1-xd2e.google.com [IPv6:2607:f8b0:4864:20::d2e]) by gabe.freedesktop.org (Postfix) with ESMTPS id D67166E8B7 for ; Mon, 3 May 2021 15:16:53 +0000 (UTC) Received: by mail-io1-xd2e.google.com with SMTP id a11so4387970ioo.0 for ; Mon, 03 May 2021 08:16:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=basnieuwenhuizen.nl; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=xHWsC6KlbPJDpVyGEWi7cyBYzM/ATihty6mFuiBl8Tk=; b=Q7jkCh97VPylOYORqUeV9l8CLfEpgAJU46W286QNXoTrkMzLKLmWqE8JQrEXqMfEDM ZKaPxNcsdsuTRW7Q/r8KgNsNQq0Ii1yI1KeplmS3I/6a5xNmDGGbl88le7m8UhfIOMBs e0ABMnnCEtW/Ohi0ADojDlV8Xisvgwh2ZO4SeNz83VW7JBInypMwfZ7I+c1uQgtGTw+8 TbPMqexDE5bLXAOZBRTzFbhDy3fe+bNBntTuhOVGEfs94YI/IjMA3vZ6NncMERN5GB3H Cp2PNNfuNWEUeFIsQev4b/vdXY21p0EauxNew2XnDHJRnfSdnAVQhXzwlUtz8Q00Iyxn z3jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=xHWsC6KlbPJDpVyGEWi7cyBYzM/ATihty6mFuiBl8Tk=; b=DZHFvlnxjuwe3k9NXG6oMW0sLTwYcyj0CIbuoohKv//g4z7YvePEkHs63W28GckNcO gaIns7VXH75o1aCKJsaj2qt0DRGyjreyzamM7rE6qR/OADU3R8FRTg2kmua9PngAq2ks ALJl/4hC53n+BszVo3MstIPmfu1REvSeB74DqiVTjwyl92mcrJHNZy1lHqec58f0yK83 UaO53gdiuASDebKhmPplwL1H4q12Y7iDklQ02sl6Okv0lGvC3p5Ve19V8nMyk9sJwAiG 1D2ysn4qdJ7uhclU1KlgTEaWtVzdItwIPBsEYj39KqkUCaR3IrqvCWcUlzHG6KVqctCD gQ0w== X-Gm-Message-State: AOAM532XeIwJTKAhHjtCHM/QhPN9Ej/Z4BHwaIyCgcctcdJZKvGlzA18 R4Ej6ANIr3yk6QxVV6eBTT8c2hwuzt+rXHnQxt+LmQ== X-Google-Smtp-Source: ABdhPJyxbsjXh18JFcSDXcR4Lf/HscKt36TjRGokbg4SgTVXH4YEGUzFkRqw22JApF9vwTS8NwrW5AQt9zHnm+oFkZY= X-Received: by 2002:a05:6638:1648:: with SMTP id a8mr19346037jat.25.1620055012914; Mon, 03 May 2021 08:16:52 -0700 (PDT) MIME-Version: 1.0 References: <153487a3-082b-faf7-2a4d-ae15993b2a5d@gmail.com> In-Reply-To: From: Bas Nieuwenhuizen Date: Mon, 3 May 2021 17:16:47 +0200 Message-ID: Subject: Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal To: Jason Ekstrand X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= , =?UTF-8?Q?Christian_K=C3=B6nig?= , =?UTF-8?Q?Michel_D=C3=A4nzer?= , dri-devel , ML Mesa-dev Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gTW9uLCBNYXkgMywgMjAyMSBhdCA1OjAwIFBNIEphc29uIEVrc3RyYW5kIDxqYXNvbkBqbGVr c3RyYW5kLm5ldD4gd3JvdGU6Cj4KPiBTb3JyeSBmb3IgdGhlIHRvcC1wb3N0IGJ1dCB0aGVyZSdz IG5vIGdvb2QgdGhpbmcgdG8gcmVwbHkgdG8gaGVyZS4uLgo+Cj4gT25lIG9mIHRoZSB0aGluZ3Mg cG9pbnRlZCBvdXQgdG8gbWUgcmVjZW50bHkgYnkgRGFuaWVsIFZldHRlciB0aGF0IEkKPiBkaWRu J3QgZnVsbHkgdW5kZXJzdGFuZCBiZWZvcmUgaXMgdGhhdCBkbWFfYnVmIGhhcyBhIHZlcnkgc3Vi dGxlCj4gc2Vjb25kIHJlcXVpcmVtZW50IGJleW9uZCBmaW5pdGUgdGltZSBjb21wbGV0aW9uOiAg Tm90aGluZyByZXF1aXJlZAo+IGZvciBzaWduYWxpbmcgYSBkbWEtZmVuY2UgY2FuIGFsbG9jYXRl IG1lbW9yeS4gIFdoeT8gIEJlY2F1c2UgdGhlIGFjdAo+IG9mIGFsbG9jYXRpbmcgbWVtb3J5IG1h eSB3YWl0IG9uIHlvdXIgZG1hLWZlbmNlLiAgVGhpcywgYXMgaXQgdHVybnMKPiBvdXQsIGlzIGEg bWFzc2l2ZWx5IG1vcmUgc3RyaWN0IHJlcXVpcmVtZW50IHRoYW4gZmluaXRlIHRpbWUKPiBjb21w bGV0aW9uIGFuZCwgSSB0aGluaywgdGhyb3dzIG91dCBhbGwgb2YgdGhlIHByb3Bvc2FscyB3ZSBo YXZlIHNvCj4gZmFyLgo+Cj4gVGFrZSwgZm9yIGluc3RhbmNlLCBNYXJlaydzIHByb3Bvc2FsIGZv ciB1c2Vyc3BhY2UgaW52b2x2ZW1lbnQgd2l0aAo+IGRtYS1mZW5jZSBieSBhc2tpbmcgdGhlIGtl cm5lbCBmb3IgYSBuZXh0IHNlcmlhbCBhbmQgdGhlIGtlcm5lbAo+IHRydXN0aW5nIHVzZXJzcGFj ZSB0byBzaWduYWwgaXQuICBUaGF0IGRvZXNuJ3Qgd29yayBhdCBhbGwgaWYKPiBhbGxvY2F0aW5n IG1lbW9yeSB0byB0cmlnZ2VyIGEgZG1hLWZlbmNlIGNhbiBibG93IHVwLiAgVGhlcmUncyBzaW1w bHkKPiBubyB3YXkgZm9yIHRoZSBrZXJuZWwgdG8gdHJ1c3QgdXNlcnNwYWNlIHRvIG5vdCBkbyBB TllUSElORyB3aGljaAo+IG1pZ2h0IGFsbG9jYXRlIG1lbW9yeS4gIEkgZG9uJ3QgZXZlbiB0aGlu ayB0aGVyZSdzIGEgd2F5IHVzZXJzcGFjZSBjYW4KPiB0cnVzdCBpdHNlbGYgdGhlcmUuICBJdCBh bHNvIGJsb3dzIHVwIG15IHBsYW4gb2YgbW92aW5nIHRoZSBmZW5jZXMgdG8KPiB0cmFuc2l0aW9u IGJvdW5kYXJpZXMuCj4KPiBOb3Qgc3VyZSB3aGVyZSB0aGF0IGxlYXZlcyB1cy4KCkhvbmVzdGx5 IHRoZSBtb3JlIEkgbG9vayBhdCB0aGluZ3MgSSB0aGluayB1c2Vyc3BhY2Utc2lnbmFsYWJsZSBm ZW5jZXMKd2l0aCBhIHRpbWVvdXQgc291bmQgbGlrZSB0aGV5IGFyZSBhIHZhbGlkIHNvbHV0aW9u IGZvciB0aGVzZSBpc3N1ZXMuCkVzcGVjaWFsbHkgc2luY2UgKGFzIGhhcyBiZWVuIG1lbnRpb25l ZCBjb3VudGxlc3MgdGltZXMgaW4gdGhpcyBlbWFpbAp0aHJlYWQpIHVzZXJzcGFjZSBhbHJlYWR5 IGhhcyBhIGxvdCBvZiB3YXlzIHRvIGNhdXNlIHRpbWVvdXRzIGFuZCBvcgpHUFUgaGFuZ3MgdGhy b3VnaCBHUFUgd29yayBhbHJlYWR5LgoKQWRkaW5nIGEgdGltZW91dCBvbiB0aGUgc2lnbmFsaW5n IHNpZGUgb2YgYSBkbWFfZmVuY2Ugd291bGQgZW5zdXJlOgoKLSBUaGUgZG1hX2ZlbmNlIHNpZ25h bHMgaW4gZmluaXRlIHRpbWUKLSAgSWYgdGhlIHRpbWVvdXQgY2FzZSBkb2VzIG5vdCBhbGxvY2F0 ZSBtZW1vcnkgdGhlbiBtZW1vcnkgYWxsb2NhdGlvbgppcyBub3QgYSBibG9ja2VyIGZvciBzaWdu YWxpbmcuCgpPZiBjb3Vyc2UgeW91IGxvc2UgdGhlIGZ1bGwgZGVwZW5kZW5jeSBncmFwaCBhbmQg d2UgbmVlZCB0byBtYWtlIHN1cmUKZ2FyYmFnZSBjb2xsZWN0aW9uIG9mIGZlbmNlcyB3b3JrcyBj b3JyZWN0bHkgd2hlbiB3ZSBoYXZlIGN5Y2xlcy4KSG93ZXZlciwgdGhlIGxhdHRlciBzb3VuZHMg dmVyeSBkb2FibGUgYW5kIHRoZSBmaXJzdCBzb3VuZHMgbGlrZSBpdCBpcwp0byBzb21lIGV4dGVu dCBpbmV2aXRhYmxlLgoKSSBmZWVsIGxpa2UgSSdtIG1pc3Npbmcgc29tZSByZXF1aXJlbWVudCBo ZXJlIGdpdmVuIHRoYXQgd2UKaW1tZWRpYXRlbHkgd2VudCB0byBtdWNoIG1vcmUgY29tcGxpY2F0 ZWQgdGhpbmdzIGJ1dCBjYW4ndCBmaW5kIGl0LgpUaG91Z2h0cz8KCi0gQmFzCj4KPiAtLUphc29u Cj4KPiBPbiBNb24sIE1heSAzLCAyMDIxIGF0IDk6NDIgQU0gQWxleCBEZXVjaGVyIDxhbGV4ZGV1 Y2hlckBnbWFpbC5jb20+IHdyb3RlOgo+ID4KPiA+IE9uIFNhdCwgTWF5IDEsIDIwMjEgYXQgNjoy NyBQTSBNYXJlayBPbMWhw6FrIDxtYXJhZW9AZ21haWwuY29tPiB3cm90ZToKPiA+ID4KPiA+ID4g T24gV2VkLCBBcHIgMjgsIDIwMjEgYXQgNTowNyBBTSBNaWNoZWwgRMOkbnplciA8bWljaGVsQGRh ZW56ZXIubmV0PiB3cm90ZToKPiA+ID4+Cj4gPiA+PiBPbiAyMDIxLTA0LTI4IDg6NTkgYS5tLiwg Q2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiA+ID4+ID4gSGkgRGF2ZSwKPiA+ID4+ID4KPiA+ID4+ ID4gQW0gMjcuMDQuMjEgdW0gMjE6MjMgc2NocmllYiBNYXJlayBPbMWhw6FrOgo+ID4gPj4gPj4g U3VwcG9ydGluZyBpbnRlcm9wIHdpdGggYW55IGRldmljZSBpcyBhbHdheXMgcG9zc2libGUuIEl0 IGRlcGVuZHMgb24gd2hpY2ggZHJpdmVycyB3ZSBuZWVkIHRvIGludGVyb3BlcmF0ZSB3aXRoIGFu ZCB1cGRhdGUgdGhlbS4gV2UndmUgYWxyZWFkeSBmb3VuZCB0aGUgcGF0aCBmb3J3YXJkIGZvciBh bWRncHUuIFdlIGp1c3QgbmVlZCB0byBmaW5kIG91dCBob3cgbWFueSBvdGhlciBkcml2ZXJzIG5l ZWQgdG8gYmUgdXBkYXRlZCBhbmQgZXZhbHVhdGUgdGhlIGNvc3QvYmVuZWZpdCBhc3BlY3QuCj4g PiA+PiA+Pgo+ID4gPj4gPj4gTWFyZWsKPiA+ID4+ID4+Cj4gPiA+PiA+PiBPbiBUdWUsIEFwciAy NywgMjAyMSBhdCAyOjM4IFBNIERhdmUgQWlybGllIDxhaXJsaWVkQGdtYWlsLmNvbSA8bWFpbHRv OmFpcmxpZWRAZ21haWwuY29tPj4gd3JvdGU6Cj4gPiA+PiA+Pgo+ID4gPj4gPj4gICAgIE9uIFR1 ZSwgMjcgQXByIDIwMjEgYXQgMjI6MDYsIENocmlzdGlhbiBLw7ZuaWcKPiA+ID4+ID4+ICAgICA8 Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20gPG1haWx0bzpja29lbmlnLmxlaWNodHp1 bWVya2VuQGdtYWlsLmNvbT4+IHdyb3RlOgo+ID4gPj4gPj4gICAgID4KPiA+ID4+ID4+ICAgICA+ IENvcnJlY3QsIHdlIHdvdWxkbid0IGhhdmUgc3luY2hyb25pemF0aW9uIGJldHdlZW4gZGV2aWNl IHdpdGggYW5kIHdpdGhvdXQgdXNlciBxdWV1ZXMgYW55IG1vcmUuCj4gPiA+PiA+PiAgICAgPgo+ ID4gPj4gPj4gICAgID4gVGhhdCBjb3VsZCBvbmx5IGJlIGEgcHJvYmxlbSBmb3IgQStJIExhcHRv cHMuCj4gPiA+PiA+Pgo+ID4gPj4gPj4gICAgIFNpbmNlIEkgdGhpbmsgeW91IG1lbnRpb25lZCB5 b3UnZCBvbmx5IGJlIGVuYWJsaW5nIHRoaXMgb24gbmV3ZXIKPiA+ID4+ID4+ICAgICBjaGlwc2V0 cywgd29uJ3QgaXQgYmUgYSBwcm9ibGVtIGZvciBBK0Egd2hlcmUgb25lIEEgaXMgYSBnZW5lcmF0 aW9uCj4gPiA+PiA+PiAgICAgYmVoaW5kIHRoZSBvdGhlcj8KPiA+ID4+ID4+Cj4gPiA+PiA+Cj4g PiA+PiA+IENyYXAsIHRoYXQgaXMgYSBnb29kIHBvaW50IGFzIHdlbGwuCj4gPiA+PiA+Cj4gPiA+ PiA+Pgo+ID4gPj4gPj4gICAgIEknbSBub3QgcmVhbGx5IGxpa2luZyB3aGVyZSB0aGlzIGlzIGdv aW5nIGJ0dywgc2VlbXMgbGlrZSBhIGlsbAo+ID4gPj4gPj4gICAgIHRob3VnaHQgb3V0IGNvbmNl cHQsIGlmIEFNRCBpcyByZWFsbHkgZ29pbmcgZG93biB0aGUgcm9hZCBvZiBkZXNpZ25pbmcKPiA+ ID4+ID4+ICAgICBodyB0aGF0IGlzIGN1cnJlbnRseSBMaW51eCBpbmNvbXBhdGlibGUsIHlvdSBh cmUgZ29pbmcgdG8gaGF2ZSB0bwo+ID4gPj4gPj4gICAgIGFjY2VwdCBhIGJpZyBwYXJ0IG9mIHRo ZSBidXJkZW4gaW4gYnJpbmdpbmcgdGhpcyBzdXBwb3J0IGluIHRvIG1vcmUKPiA+ID4+ID4+ICAg ICB0aGFuIGp1c3QgYW1kIGRyaXZlcnMgZm9yIHVwY29taW5nIGdlbmVyYXRpb25zIG9mIGdwdS4K PiA+ID4+ID4+Cj4gPiA+PiA+Cj4gPiA+PiA+IFdlbGwgd2UgZG9uJ3QgcmVhbGx5IGxpa2UgdGhh dCBlaXRoZXIsIGJ1dCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbiBhcyBmYXIgYXMgSSBjYW4gc2Vl Lgo+ID4gPj4KPiA+ID4+IEkgZG9uJ3QgcmVhbGx5IHVuZGVyc3RhbmQgd2hhdCAiZnV0dXJlIGh3 IG1heSByZW1vdmUgc3VwcG9ydCBmb3Iga2VybmVsIHF1ZXVlcyIgbWVhbnMgZXhhY3RseS4gV2hp bGUgdGhlIHBlci1jb250ZXh0IHF1ZXVlcyBjYW4gYmUgbWFwcGVkIHRvIHVzZXJzcGFjZSBkaXJl Y3RseSwgdGhleSBkb24ndCAqaGF2ZSogdG8gYmUsIGRvIHRoZXk/IEkuZS4gdGhlIGtlcm5lbCBk cml2ZXIgc2hvdWxkIGJlIGFibGUgdG8gZWl0aGVyIGludGVyY2VwdCB1c2Vyc3BhY2UgYWNjZXNz IHRvIHRoZSBxdWV1ZXMsIG9yIGluIHRoZSB3b3JzdCBjYXNlIGRvIGl0IGFsbCBpdHNlbGYsIGFu ZCBwcm92aWRlIHRoZSBleGlzdGluZyBzeW5jaHJvbml6YXRpb24gc2VtYW50aWNzIGFzIG5lZWRl ZD8KPiA+ID4+Cj4gPiA+PiBTdXJlbHkgdGhlcmUgYXJlIHJlc291cmNlIGxpbWl0cyBmb3IgdGhl IHBlci1jb250ZXh0IHF1ZXVlcywgc28gdGhlIGtlcm5lbCBkcml2ZXIgbmVlZHMgdG8gZG8gc29t ZSBraW5kIG9mIHZpcnR1YWxpemF0aW9uIC8gbXVsdGktcGxleGluZyBhbnl3YXksIG9yIHdlJ2xs IGdldCBzYWQgdXNlciBmYWNlcyB3aGVuIHRoZXJlJ3Mgbm8gcXVldWUgYXZhaWxhYmxlIGZvciA8 Y3VycmVudCBob3QgZ2FtZT4uCj4gPiA+Pgo+ID4gPj4gSSdtIHByb2JhYmx5IG1pc3Npbmcgc29t ZXRoaW5nIHRob3VnaCwgYXdhaXRpbmcgZW5saWdodGVubWVudC4gOikKPiA+ID4KPiA+ID4KPiA+ ID4gVGhlIGh3IGludGVyZmFjZSBmb3IgdXNlcnNwYWNlIGlzIHRoYXQgdGhlIHJpbmcgYnVmZmVy IGlzIG1hcHBlZCB0byB0aGUgcHJvY2VzcyBhZGRyZXNzIHNwYWNlIGFsb25nc2lkZSBhIGRvb3Ji ZWxsIGFwZXJ0dXJlICg0SyBwYWdlKSB0aGF0IGlzbid0IHJlYWwgbWVtb3J5LCBidXQgd2hlbiB0 aGUgQ1BVIHdyaXRlcyBpbnRvIGl0LCBpdCB0ZWxscyB0aGUgaHcgc2NoZWR1bGVyIHRoYXQgdGhl cmUgYXJlIG5ldyBHUFUgY29tbWFuZHMgaW4gdGhlIHJpbmcgYnVmZmVyLiBVc2Vyc3BhY2UgaW5z ZXJ0cyBhbGwgdGhlIHdhaXQsIGRyYXcsIGFuZCBzaWduYWwgY29tbWFuZHMgaW50byB0aGUgcmlu ZyBidWZmZXIgYW5kIHRoZW4gInJpbmdzIiB0aGUgZG9vcmJlbGwuIEl0J3MgbXkgdW5kZXJzdGFu ZGluZyB0aGF0IHRoZSByaW5nIGJ1ZmZlciBhbmQgdGhlIGRvb3JiZWxsIGFyZSBhbHdheXMgbWFw cGVkIGluIHRoZSBzYW1lIEdQVSBhZGRyZXNzIHNwYWNlIGFzIHRoZSBwcm9jZXNzLCB3aGljaCBt YWtlcyBpdCB2ZXJ5IGRpZmZpY3VsdCB0byBlbXVsYXRlIHRoZSBjdXJyZW50IHByb3RlY3RlZCBy aW5nIGJ1ZmZlcnMgaW4gdGhlIGtlcm5lbC4gVGhlIFZNSUQgb2YgdGhlIHJpbmcgYnVmZmVyIGlz IGFsc28gbm90IGNoYW5nZWFibGUuCj4gPiA+Cj4gPgo+ID4gVGhlIGRvb3JiZWxsIGRvZXMgbm90 IGhhdmUgdG8gYmUgbWFwcGVkIGludG8gdGhlIHByb2Nlc3MncyBHUFUgdmlydHVhbAo+ID4gYWRk cmVzcyBzcGFjZS4gIFRoZSBDUFUgY291bGQgd3JpdGUgdG8gaXQgZGlyZWN0bHkuICBNYXBwaW5n IGl0IGludG8KPiA+IHRoZSBHUFUncyB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2Ugd291bGQgYWxsb3cg eW91IHRvIGhhdmUgYSBkZXZpY2Uga2ljawo+ID4gb2ZmIHdvcmsgaG93ZXZlciByYXRoZXIgdGhh biB0aGUgQ1BVLiAgRS5nLiwgdGhlIEdQVSBjb3VsZCBraWNrIG9mZgo+ID4gaXQncyBvd24gd29y ayBvciBtdWx0aXBsZSBkZXZpY2VzIGNvdWxkIGtpY2sgb2ZmIHdvcmsgd2l0aG91dCBDUFUKPiA+ IGludm9sdmVtZW50Lgo+ID4KPiA+IEFsZXgKPiA+Cj4gPgo+ID4gPiBUaGUgaHcgc2NoZWR1bGVy IGRvZXNuJ3QgZG8gYW55IHN5bmNocm9uaXphdGlvbiBhbmQgaXQgZG9lc24ndCBzZWUgYW55IGRl cGVuZGVuY2llcy4gSXQgb25seSBjaG9vc2VzIHdoaWNoIHF1ZXVlIHRvIGV4ZWN1dGUsIHNvIGl0 J3MgcmVhbGx5IGp1c3QgYSBzaW1wbGUgcXVldWUgbWFuYWdlciBoYW5kbGluZyB0aGUgdmlydHVh bGl6YXRpb24gYXNwZWN0IGFuZCBub3QgbXVjaCBlbHNlLgo+ID4gPgo+ID4gPiBNYXJlawo+ID4g PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiBk cmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gPiBtZXNhLWRldiBtYWlsaW5nIGxpc3QKPiA+IG1lc2EtZGV2QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9tZXNhLWRldgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK