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 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 8DF84C433ED for ; Tue, 20 Apr 2021 10:34:22 +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 D476C61076 for ; Tue, 20 Apr 2021 10:34:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D476C61076 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 B89226E7D2; Tue, 20 Apr 2021 10:34:17 +0000 (UTC) Received: from mail-oo1-xc2a.google.com (mail-oo1-xc2a.google.com [IPv6:2607:f8b0:4864:20::c2a]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4441E6E51B for ; Tue, 20 Apr 2021 10:34:16 +0000 (UTC) Received: by mail-oo1-xc2a.google.com with SMTP id e12-20020a056820060cb02901e94efc049dso3447851oow.9 for ; Tue, 20 Apr 2021 03:34:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=It2h0CWBk6BUTSUjofY2LycAZaOsIuSdDjAG0CpJ97k=; b=GTxmr0y7O83zeWhHbfTMKyll5e+0ctCZPg2jyoaYQkXIha8r0o6p8u9qYNH2xMl/Oi WDyyiJqNnNGOfq923n8LdmWUQs/0kvv8pB6OjfPrQIdFrQO72DZtluf9Y+wbvuextKgz 8X+2qkd7YxtNC6LVYFAnSYpzVQ0EMBpf0jU/A= 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=It2h0CWBk6BUTSUjofY2LycAZaOsIuSdDjAG0CpJ97k=; b=ENMQXg3YPzC8cRxfY54RHVXp9GfXoWNhqtZvoSsLzsBpwmiI/AI8U7taez3oq/Yfgc lH2gmIAOKbEXy9vMlC6J2gqShsdFiNzXjo9At0HyCjkfUjqq6QRN06YQE5+ozr1M6JBm qZxrU+dP+P6coelhOta7f0eX6QN0wL4/bNxmrKZkP7bxrYg30BXxFanQN/zirBQD/pUf B965i+tkpNjfSTjlAJ8yq8CcwC60LzSxeuNLaujfdInpGSn89ZTUPQxJne0A9tYUhWHP 7Ywa6z0LRQ1nFbAmHk4qz35q9aL48n2q6j0sW3PUt33f39+VOi0Go9KMBAiJq5Dp0hug nzow== X-Gm-Message-State: AOAM531VR8VgGP3GkBTHjIfRkYQcwJo1QlAa7vzHwxChNzrE/peBw1Tx XsHFJmHnA3yGBEjGJ9ZQEOeemNzYQwEVPW0cOKKF1g== X-Google-Smtp-Source: ABdhPJws64Rt8CGmsRiClLD/xaqkYoV0qLDoji2Nxs9acf4kN0XpJfWzw0ks4g5xO35T5Bc+bAybKs6/MK8Itsn5oaY= X-Received: by 2002:a4a:d553:: with SMTP id q19mr16616684oos.28.1618914855439; Tue, 20 Apr 2021 03:34:15 -0700 (PDT) MIME-Version: 1.0 References: <926b18b2-2498-9fcb-8516-fa34510fb898@gmail.com> In-Reply-To: <926b18b2-2498-9fcb-8516-fa34510fb898@gmail.com> From: Daniel Vetter Date: Tue, 20 Apr 2021 12:34:04 +0200 Message-ID: Subject: Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal To: =?UTF-8?Q?Christian_K=C3=B6nig?= 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: ML Mesa-dev , dri-devel , =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= , Jason Ekstrand Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gVHVlLCBBcHIgMjAsIDIwMjEgYXQgMTI6MTUgUE0gQ2hyaXN0aWFuIEvDtm5pZwo8Y2tvZW5p Zy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+IHdyb3RlOgo+Cj4gQW0gMTkuMDQuMjEgdW0gMTc6 NDggc2NocmllYiBKYXNvbiBFa3N0cmFuZDoKPiA+IE5vdCBnb2luZyB0byBjb21tZW50IG9uIGV2 ZXJ5dGhpbmcgb24gdGhlIGZpcnN0IHBhc3MuLi4KPiA+Cj4gPiBPbiBNb24sIEFwciAxOSwgMjAy MSBhdCA1OjQ4IEFNIE1hcmVrIE9sxaHDoWsgPG1hcmFlb0BnbWFpbC5jb20+IHdyb3RlOgo+ID4+ IEhpLAo+ID4+Cj4gPj4gVGhpcyBpcyBvdXIgaW5pdGlhbCBwcm9wb3NhbCBmb3IgZXhwbGljaXQg ZmVuY2VzIGV2ZXJ5d2hlcmUgYW5kIG5ldyBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IGRvZXNuJ3Qg dXNlIEJPIGZlbmNlcy4gSXQncyBhIHJlZGVzaWduIG9mIGhvdyBMaW51eCBncmFwaGljcyBkcml2 ZXJzIHdvcmssIGFuZCBpdCBjYW4gY29leGlzdCB3aXRoIHdoYXQgd2UgaGF2ZSBub3cuCj4gPj4K PiA+Pgo+ID4+IDEuIEludHJvZHVjdGlvbgo+ID4+IChza2lwIHRoaXMgaWYgeW91IGFyZSBhbHJl YWR5IHNvbGQgb24gZXhwbGljaXQgZmVuY2VzKQo+ID4+Cj4gPj4gVGhlIGN1cnJlbnQgTGludXgg Z3JhcGhpY3MgYXJjaGl0ZWN0dXJlIHdhcyBpbml0aWFsbHkgZGVzaWduZWQgZm9yIEdQVXMgd2l0 aCBvbmx5IG9uZSBncmFwaGljcyBxdWV1ZSB3aGVyZSBldmVyeXRoaW5nIHdhcyBleGVjdXRlZCBp biB0aGUgc3VibWlzc2lvbiBvcmRlciBhbmQgcGVyLUJPIGZlbmNlcyB3ZXJlIHVzZWQgZm9yIG1l bW9yeSBtYW5hZ2VtZW50IGFuZCBDUFUtR1BVIHN5bmNocm9uaXphdGlvbiwgbm90IEdQVS1HUFUg c3luY2hyb25pemF0aW9uLiBMYXRlciwgbXVsdGlwbGUgcXVldWVzIHdlcmUgYWRkZWQgb24gdG9w LCB3aGljaCByZXF1aXJlZCB0aGUgaW50cm9kdWN0aW9uIG9mIGltcGxpY2l0IEdQVS1HUFUgc3lu Y2hyb25pemF0aW9uIGJldHdlZW4gcXVldWVzIG9mIGRpZmZlcmVudCBwcm9jZXNzZXMgdXNpbmcg cGVyLUJPIGZlbmNlcy4gUmVjZW50bHksIGV2ZW4gcGFyYWxsZWwgZXhlY3V0aW9uIHdpdGhpbiBv bmUgcXVldWUgd2FzIGVuYWJsZWQgd2hlcmUgYSBjb21tYW5kIGJ1ZmZlciBzdGFydHMgZHJhd3Mg YW5kIGNvbXB1dGUgc2hhZGVycywgYnV0IGRvZXNuJ3Qgd2FpdCBmb3IgdGhlbSwgZW5hYmxpbmcg cGFyYWxsZWxpc20gYmV0d2VlbiBiYWNrLXRvLWJhY2sgY29tbWFuZCBidWZmZXJzLiBNb2Rlc2V0 dGluZyBhbHNvIHVzZXMgcGVyLUJPIGZlbmNlcyBmb3Igc2NoZWR1bGluZyBmbGlwcy4gT3VyIEdQ VSBzY2hlZHVsZXIgd2FzIGNyZWF0ZWQgdG8gZW5hYmxlIGFsbCB0aG9zZSB1c2UgY2FzZXMsIGFu ZCBpdCdzIHRoZSBvbmx5IHJlYXNvbiB3aHkgdGhlIHNjaGVkdWxlciBleGlzdHMuCj4gPj4KPiA+ PiBUaGUgR1BVIHNjaGVkdWxlciwgaW1wbGljaXQgc3luY2hyb25pemF0aW9uLCBCTy1mZW5jZS1i YXNlZCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIHRoZSB0cmFja2luZyBvZiBwZXItQk8gZmVuY2Vz IGluY3JlYXNlIENQVSBvdmVyaGVhZCBhbmQgbGF0ZW5jeSwgYW5kIHJlZHVjZSBwYXJhbGxlbGlz bS4gVGhlcmUgaXMgYSBkZXNpcmUgdG8gcmVwbGFjZSBhbGwgb2YgdGhlbSB3aXRoIHNvbWV0aGlu ZyBtdWNoIHNpbXBsZXIuIEJlbG93IGlzIGhvdyB3ZSBjb3VsZCBkbyBpdC4KPiA+Pgo+ID4+Cj4g Pj4gMi4gRXhwbGljaXQgc3luY2hyb25pemF0aW9uIGZvciB3aW5kb3cgc3lzdGVtcyBhbmQgbW9k ZXNldHRpbmcKPiA+Pgo+ID4+IFRoZSBwcm9kdWNlciBpcyBhbiBhcHBsaWNhdGlvbiBhbmQgdGhl IGNvbnN1bWVyIGlzIGEgY29tcG9zaXRvciBvciBhIG1vZGVzZXR0aW5nIGRyaXZlci4KPiA+Pgo+ ID4+IDIuMS4gVGhlIFByZXNlbnQgcmVxdWVzdAo+ID4+Cj4gPj4gQXMgcGFydCBvZiB0aGUgUHJl c2VudCByZXF1ZXN0LCB0aGUgcHJvZHVjZXIgd2lsbCBwYXNzIDIgZmVuY2VzIChzeW5jIG9iamVj dHMpIHRvIHRoZSBjb25zdW1lciBhbG9uZ3NpZGUgdGhlIHByZXNlbnRlZCBETUFCVUYgQk86Cj4g Pj4gLSBUaGUgc3VibWl0IGZlbmNlOiBJbml0aWFsbHkgdW5zaWduYWxsZWQsIGl0IHdpbGwgYmUg c2lnbmFsbGVkIHdoZW4gdGhlIHByb2R1Y2VyIGhhcyBmaW5pc2hlZCBkcmF3aW5nIGludG8gdGhl IHByZXNlbnRlZCBidWZmZXIuCj4gPj4gLSBUaGUgcmV0dXJuIGZlbmNlOiBJbml0aWFsbHkgdW5z aWduYWxsZWQsIGl0IHdpbGwgYmUgc2lnbmFsbGVkIHdoZW4gdGhlIGNvbnN1bWVyIGhhcyBmaW5p c2hlZCB1c2luZyB0aGUgcHJlc2VudGVkIGJ1ZmZlci4KPiA+IEknbSBub3Qgc3VyZSBzeW5jb2Jq IGlzIHdoYXQgd2Ugd2FudC4gIEluIHRoZSBJbnRlbCB3b3JsZCB3ZSdyZSB0cnlpbmcKPiA+IHRv IGdvIGV2ZW4gZnVydGhlciB0byBzb21ldGhpbmcgd2UncmUgY2FsbGluZyAidXNlcnNwYWNlIGZl bmNlcyIgd2hpY2gKPiA+IGFyZSBhIHRpbWVsaW5lIGltcGxlbWVudGVkIGFzIGEgc2luZ2xlIDY0 LWJpdCB2YWx1ZSBpbiBzb21lCj4gPiBDUFUtbWFwcGFibGUgQk8uICBUaGUgY2xpZW50IHdyaXRl cyBhIGhpZ2hlciB2YWx1ZSBpbnRvIHRoZSBCTyB0bwo+ID4gc2lnbmFsIHRoZSB0aW1lbGluZS4K Pgo+IFdlbGwgdGhhdCBpcyBleGFjdGx5IHdoYXQgb3VyIFdpbmRvd3MgZ3V5cyBoYXZlIHN1Z2dl c3RlZCBhcyB3ZWxsLCBidXQKPiBpdCBzdHJvbmdseSBsb29rcyBsaWtlIHRoYXQgdGhpcyBpc24n dCBzdWZmaWNpZW50Lgo+Cj4gRmlyc3Qgb2YgYWxsIHlvdSBydW4gaW50byBzZWN1cml0eSBwcm9i bGVtcyB3aGVuIGFueSBhcHBsaWNhdGlvbiBjYW4KPiBqdXN0IHdyaXRlIGFueSB2YWx1ZSB0byB0 aGF0IG1lbW9yeSBsb2NhdGlvbi4gSnVzdCBpbWFnaW5lIGFuCj4gYXBwbGljYXRpb24gc2V0cyB0 aGUgY291bnRlciB0byB6ZXJvIGFuZCBYIHdhaXRzIGZvcmV2ZXIgZm9yIHNvbWUKPiByZW5kZXJp bmcgdG8gZmluaXNoLgoKVGhlIHRoaW5nIGlzLCB3aXRoIHVzZXJzcGFjZSBmZW5jZXMgc2VjdXJp dHkgYm91bmRhcnkgaXNzdWUgcHJldmVudAptb3ZlcyBpbnRvIHVzZXJzcGFjZSBlbnRpcmVseS4g QW5kIGl0IHJlYWxseSBkb2Vzbid0IG1hdHRlciB3aGV0aGVyCnRoZSBldmVudCB5b3UncmUgd2Fp dGluZyBvbiBkb2Vzbid0IGNvbXBsZXRlIGJlY2F1c2UgdGhlIG90aGVyIGFwcApjcmFzaGVkIG9y IHdhcyBzdHVwaWQgb3IgaW50ZW50aW9uYWxseSBnYXZlIHlvdSBhIHdyb25nIGZlbmNlIHBvaW50 OgpZb3UgaGF2ZSB0byBzb21laG93IGhhbmRsZSB0aGF0LCBlLmcuIHBlcmhhcHMgd2l0aCBjb25k aXRpb25hbApyZW5kZXJpbmcgYW5kIGp1c3QgdXNpbmcgdGhlIG9sZCBmcmFtZSBpbiBjb21wb3Np dGluZyBpZiB0aGUgbmV3IG9uZQpkb2Vzbid0IHNob3cgdXAgaW4gdGltZS4gT3Igc29tZXRoaW5n IGxpa2UgdGhhdC4gU28gdHJ5aW5nIHRvIGdldCB0aGUKa2VybmVsIGludm9sdmVkIGJ1dCBhbHNv IG5vdCBzbyBtdWNoIGludm9sdmVkIHNvdW5kcyBsaWtlIGEgYmFkIGRlc2lnbgp0byBtZS4KCj4g QWRkaXRpb25hbCB0byB0aGF0IGluIHN1Y2ggYSBtb2RlbCB5b3UgY2FuJ3QgZGV0ZXJtaW5lIHdo byBpcyB0aGUgZ3VpbHR5Cj4gcXVldWUgaW4gY2FzZSBvZiBhIGhhbmcgYW5kIGNhbid0IHJlc2V0 IHRoZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcwo+IGluIGNhc2Ugb2YgYW4gZXJyb3IuCj4K PiBBcGFydCBmcm9tIHRoYXQgdGhpcyBpcyByYXRoZXIgaW5lZmZpY2llbnQsIGUuZy4gd2UgZG9u J3QgaGF2ZSBhbnkgd2F5Cj4gdG8gcHJldmVudCBwcmlvcml0eSBpbnZlcnNpb24gd2hlbiB1c2Vk IGFzIGEgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbQo+IGJldHdlZW4gZGlmZmVyZW50IEdQVSBx dWV1ZXMuCgpZZWFoIGJ1dCB5b3UgY2FuJ3QgaGF2ZSBpdCBib3RoIHdheXMuIEVpdGhlciBhbGwg dGhlIHNjaGVkdWxpbmcgaW4gdGhlCmtlcm5lbCBhbmQgZmVuY2UgaGFuZGxpbmcgaXMgYSBwcm9i bGVtLCBvciB5b3UgYWN0dWFsbHkgd2FudCB0bwpzY2hlZHVsZSBpbiB0aGUga2VybmVsLiBodyBz ZWVtcyB0byBkZWZpbml0ZWx5IG1vdmUgdG93YXJkcyB0aGUgbW9yZQpzdHVwaWQgc3BpbmxvY2st aW4taHcgbW9kZWwgKGFuZCBkaXJlY3Qgc3VibWl0IGZyb20gdXNlcnNwYWNlIGFuZCBhbGwKdGhh dCksIHByaW9yaXR5IGludmVyc2lvbnMgYmUgZGFtbmVkLiBJJ20gcmVhbGx5IG5vdCBzdXJlIHdl IHNob3VsZApmaWdodCB0aGF0IC0gaWYgaXQncyByZWFsbHkgdGhhdCBpbmVmZmljaWVudCB0aGVu IG1heWJlIGh3IHdpbGwgYWRkCnN1cHBvcnQgZm9yIHdhaXRpbmcgc3luYyBjb25zdHJ1Y3RzIGlu IGhhcmR3YXJlLCBvciBhdCBsZWFzdCBiZQpzbWFydGVyIGFib3V0IHNjaGVkdWxpbmcgb3RoZXIg c3R1ZmYuIEUuZy4gb24gaW50ZWwgaHcgYm90aCB0aGUga2VybmVsCnNjaGVkdWxlciBhbmQgZncg c2NoZWR1bGVyIGtub3dzIHdoZW4geW91J3JlIHNwaW5uaW5nIG9uIGEgaHcgZmVuY2UKKHdoZXRo ZXIgdXNlcnNwYWNlIG9yIGtlcm5lbCBkb2Vzbid0IG1hdHRlcikgYW5kIHBsdWdzIGluIHNvbWV0 aGluZwplbHNlLiBBZGQgaW4gYSBiaXQgb2YgaHcgc3VwcG9ydCB0byB3YXRjaCBjYWNoZWxpbmVz LCBhbmQgeW91IGhhdmUKc29tZXRoaW5nIHdoaWNoIGNhbiBoYW5kbGUgYm90aCBkaXJlY3Rpb25z IGVmZmljaWVudGx5LgoKSW1vIGdpdmVuIHdoZXJlIGh3IGlzIGdvaW5nLCB3ZSBzaG91bGRuJ3Qg dHJ5IHRvIGJlIHRvbyBjbGV2ZXIgaGVyZS4KVGhlIG9ubHkgdGhpbmcgd2UgZG8gbmVlZCB0byBw cm92aXNpb24gaXMgYmVpbmcgYWJsZSB0byBkbyBjcHUgc2lkZQp3YWl0cyB3aXRob3V0IHNwaW5u aW5nLiBBbmQgdGhhdCBzaG91bGQgcHJvYmFibHkgYmUgZG9uZSBpbiBhIGZhaXJseQpncHUgc3Bl Y2lmaWMgd2F5IHN0aWxsLgotRGFuaWVsCgo+IENocmlzdGlhbi4KPgo+ID4gICAgVGhlIGtlcm5l bCB0aGVuIHByb3ZpZGVzIHNvbWUgaGVscGVycyBmb3IKPiA+IHdhaXRpbmcgb24gdGhlbSByZWxp YWJseSBhbmQgd2l0aG91dCBzcGlubmluZy4gIEkgZG9uJ3QgZXhwZWN0Cj4gPiBldmVyeW9uZSB0 byBzdXBwb3J0IHRoZXNlIHJpZ2h0IGF3YXkgYnV0LCBJZiB3ZSdyZSBnb2luZyB0byByZS1wbHVt Ygo+ID4gdXNlcnNwYWNlIGZvciBleHBsaWNpdCBzeW5jaHJvbml6YXRpb24sIEknZCBsaWtlIHRv IG1ha2Ugc3VyZSB3ZSB0YWtlCj4gPiB0aGlzIGludG8gYWNjb3VudCBzbyB3ZSBvbmx5IGhhdmUg dG8gZG8gaXQgb25jZS4KPiA+Cj4gPgo+ID4+IERlYWRsb2NrIG1pdGlnYXRpb24gdG8gcmVjb3Zl ciBmcm9tIHNlZ2ZhdWx0czoKPiA+PiAtIFRoZSBrZXJuZWwga25vd3Mgd2hpY2ggcHJvY2VzcyBp cyBvYmxpZ2VkIHRvIHNpZ25hbCB3aGljaCBmZW5jZS4gVGhpcyBpbmZvcm1hdGlvbiBpcyBwYXJ0 IG9mIHRoZSBQcmVzZW50IHJlcXVlc3QgYW5kIHN1cHBsaWVkIGJ5IHVzZXJzcGFjZS4KPiA+IFRo aXMgaXNuJ3QgY2xlYXIgdG8gbWUuICBZZXMsIGlmIHdlJ3JlIHVzaW5nIGFueXRoaW5nIGRtYS1m ZW5jZSBiYXNlZAo+ID4gbGlrZSBzeW5jb2JqLCB0aGlzIGlzIHRydWUuICBCdXQgaXQgZG9lc24n dCBzZWVtIHRvdGFsbHkgdHJ1ZSBhcyBhCj4gPiBnZW5lcmFsIHN0YXRlbWVudC4KPiA+Cj4gPgo+ ID4+IC0gSWYgdGhlIHByb2R1Y2VyIGNyYXNoZXMsIHRoZSBrZXJuZWwgc2lnbmFscyB0aGUgc3Vi bWl0IGZlbmNlLCBzbyB0aGF0IHRoZSBjb25zdW1lciBjYW4gbWFrZSBmb3J3YXJkIHByb2dyZXNz Lgo+ID4+IC0gSWYgdGhlIGNvbnN1bWVyIGNyYXNoZXMsIHRoZSBrZXJuZWwgc2lnbmFscyB0aGUg cmV0dXJuIGZlbmNlLCBzbyB0aGF0IHRoZSBwcm9kdWNlciBjYW4gcmVjbGFpbSB0aGUgYnVmZmVy Lgo+ID4+IC0gQSBHUFUgaGFuZyBzaWduYWxzIGFsbCBmZW5jZXMuIE90aGVyIGRlYWRsb2NrcyB3 aWxsIGJlIGhhbmRsZWQgbGlrZSBHUFUgaGFuZ3MuCj4gPiBXaGF0IGRvIHlvdSBtZWFuIGJ5ICJh bGwiPyAgQWxsIGZlbmNlcyB0aGF0IHdlcmUgc3VwcG9zZWQgdG8gYmUKPiA+IHNpZ25hbGVkIGJ5 IHRoZSBodW5nIGNvbnRleHQ/Cj4gPgo+ID4KPiA+PiBPdGhlciB3aW5kb3cgc3lzdGVtIHJlcXVl c3RzIGNhbiBmb2xsb3cgdGhlIHNhbWUgaWRlYS4KPiA+Pgo+ID4+IE1lcmdlZCBmZW5jZXMgd2hl cmUgb25lIGZlbmNlIG9iamVjdCBjb250YWlucyBtdWx0aXBsZSBmZW5jZXMgd2lsbCBiZSBzdXBw b3J0ZWQuIEEgbWVyZ2VkIGZlbmNlIGlzIHNpZ25hbGxlZCBvbmx5IHdoZW4gaXRzIGZlbmNlcyBh cmUgc2lnbmFsbGVkLiBUaGUgY29uc3VtZXIgd2lsbCBoYXZlIHRoZSBvcHRpb24gdG8gcmVkZWZp bmUgdGhlIHVuc2lnbmFsbGVkIHJldHVybiBmZW5jZSB0byBhIG1lcmdlZCBmZW5jZS4KPiA+Pgo+ ID4+IDIuMi4gTW9kZXNldHRpbmcKPiA+Pgo+ID4+IFNpbmNlIGEgbW9kZXNldHRpbmcgZHJpdmVy IGNhbiBhbHNvIGJlIHRoZSBjb25zdW1lciwgdGhlIHByZXNlbnQgaW9jdGwgd2lsbCBjb250YWlu IGEgc3VibWl0IGZlbmNlIGFuZCBhIHJldHVybiBmZW5jZSB0b28uIE9uZSBzbWFsbCBwcm9ibGVt IHdpdGggdGhpcyBpcyB0aGF0IHVzZXJzcGFjZSBjYW4gaGFuZyB0aGUgbW9kZXNldHRpbmcgZHJp dmVyLCBidXQgaW4gdGhlb3J5LCBhbnkgbGF0ZXIgcHJlc2VudCBpb2N0bCBjYW4gb3ZlcnJpZGUg dGhlIHByZXZpb3VzIG9uZSwgc28gdGhlIHVuc2lnbmFsbGVkIHByZXNlbnRhdGlvbiBpcyBuZXZl ciB1c2VkLgo+ID4+Cj4gPj4KPiA+PiAzLiBOZXcgbWVtb3J5IG1hbmFnZW1lbnQKPiA+Pgo+ID4+ IFRoZSBwZXItQk8gZmVuY2VzIHdpbGwgYmUgcmVtb3ZlZCBhbmQgdGhlIGtlcm5lbCB3aWxsIG5v dCBrbm93IHdoaWNoIGJ1ZmZlcnMgYXJlIGJ1c3kuIFRoaXMgd2lsbCByZWR1Y2UgQ1BVIG92ZXJo ZWFkIGFuZCBsYXRlbmN5LiBUaGUga2VybmVsIHdpbGwgbm90IG5lZWQgcGVyLUJPIGZlbmNlcyB3 aXRoIGV4cGxpY2l0IHN5bmNocm9uaXphdGlvbiwgc28gd2UganVzdCBuZWVkIHRvIHJlbW92ZSB0 aGVpciBsYXN0IHVzZXI6IGJ1ZmZlciBldmljdGlvbnMuIEl0IGFsc28gcmVzb2x2ZXMgdGhlIGN1 cnJlbnQgT09NIGRlYWRsb2NrLgo+ID4gSXMgdGhpcyBldmVuIHJlYWxseSBwb3NzaWJsZT8gIEkn bSBubyBrZXJuZWwgTU0gZXhwZXJ0ICh0cnlpbmcgdG8KPiA+IGxlYXJuIHNvbWUpIGJ1dCBteSB1 bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIHVzZSBvZiBwZXItQk8gZG1hLWZlbmNlCj4gPiBydW5z IGRlZXAuICBJIHdvdWxkIGxpa2UgdG8gc3RvcCB1c2luZyBpdCBmb3IgaW1wbGljaXQgc3luY2hy b25pemF0aW9uCj4gPiB0byBiZSBzdXJlLCBidXQgSSdtIG5vdCBzdXJlIEkgYmVsaWV2ZSB0aGUg Y2xhaW0gdGhhdCB3ZSBjYW4gZ2V0IHJpZAo+ID4gb2YgaXQgZW50aXJlbHkuICBIYXBweSB0byBz ZWUgc29tZW9uZSB0cnksIHRob3VnaC4KPiA+Cj4gPgo+ID4+IDMuMS4gRXZpY3Rpb25zCj4gPj4K PiA+PiBJZiB0aGUga2VybmVsIHdhbnRzIHRvIG1vdmUgYSBidWZmZXIsIGl0IHdpbGwgaGF2ZSB0 byB3YWl0IGZvciBldmVyeXRoaW5nIHRvIGdvIGlkbGUsIGhhbHQgYWxsIHVzZXJzcGFjZSBjb21t YW5kIHN1Ym1pc3Npb25zLCBtb3ZlIHRoZSBidWZmZXIsIGFuZCByZXN1bWUgZXZlcnl0aGluZy4g VGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gaGFwcGVuIHdoZW4gbWVtb3J5IGlzIG5vdCBleGhhdXN0 ZWQuIE90aGVyIG1vcmUgZWZmaWNpZW50IHdheXMgb2Ygc3luY2hyb25pemF0aW9uIGFyZSBhbHNv IHBvc3NpYmxlIChlLmcuIHN5bmMgb25seSBvbmUgcHJvY2VzcyksIGJ1dCBhcmUgbm90IGRpc2N1 c3NlZCBoZXJlLgo+ID4+Cj4gPj4gMy4yLiBQZXItcHJvY2VzcyBWUkFNIHVzYWdlIHF1b3RhCj4g Pj4KPiA+PiBFYWNoIHByb2Nlc3MgY2FuIG9wdGlvbmFsbHkgYW5kIHBlcmlvZGljYWxseSBxdWVy eSBpdHMgVlJBTSB1c2FnZSBxdW90YSBhbmQgY2hhbmdlIGRvbWFpbnMgb2YgaXRzIGJ1ZmZlcnMg dG8gb2JleSB0aGF0IHF1b3RhLiBGb3IgZXhhbXBsZSwgYSBwcm9jZXNzIGFsbG9jYXRlZCAyIEdC IG9mIGJ1ZmZlcnMgaW4gVlJBTSwgYnV0IHRoZSBrZXJuZWwgZGVjcmVhc2VkIHRoZSBxdW90YSB0 byAxIEdCLiBUaGUgcHJvY2VzcyBjYW4gY2hhbmdlIHRoZSBkb21haW5zIG9mIHRoZSBsZWFzdCBp bXBvcnRhbnQgYnVmZmVycyB0byBHVFQgdG8gZ2V0IHRoZSBiZXN0IG91dGNvbWUgZm9yIGl0c2Vs Zi4gSWYgdGhlIHByb2Nlc3MgZG9lc24ndCBkbyBpdCwgdGhlIGtlcm5lbCB3aWxsIGNob29zZSB3 aGljaCBidWZmZXJzIHRvIGV2aWN0IGF0IHJhbmRvbS4gKHRoYW5rcyB0byBDaHJpc3RpYW4gS29l bmlnIGZvciB0aGlzIGlkZWEpCj4gPiBUaGlzIGlzIGdvaW5nIHRvIGJlIGRpZmZpY3VsdC4gIE9u IEludGVsLCB3ZSBoYXZlIHNvbWUgcmVzb3VyY2VzIHRoYXQKPiA+IGhhdmUgdG8gYmUgcGlubmVk IHRvIFZSQU0gYW5kIGNhbid0IGJlIGR5bmFtaWNhbGx5IHN3YXBwZWQgb3V0IGJ5IHRoZQo+ID4g a2VybmVsLiAgSW4gR0wsIHdlIHByb2JhYmx5IGNhbiBkZWFsIHdpdGggaXQgc29tZXdoYXQgZHlu YW1pY2FsbHkuICBJbgo+ID4gVnVsa2FuLCB3ZSdsbCBiZSBlbnRpcmVseSBkZXBlbmRlbnQgb24g dGhlIGFwcGxpY2F0aW9uIHRvIHVzZSB0aGUKPiA+IGFwcHJvcHJpYXRlIFZ1bGthbiBtZW1vcnkg YnVkZ2V0IEFQSXMuCj4gPgo+ID4gLS1KYXNvbgo+ID4KPiA+Cj4gPj4gMy4zLiBCdWZmZXIgZGVz dHJ1Y3Rpb24gd2l0aG91dCBwZXItQk8gZmVuY2VzCj4gPj4KPiA+PiBXaGVuIHRoZSBidWZmZXIg ZGVzdHJveSBpb2N0bCBpcyBjYWxsZWQsIGFuIG9wdGlvbmFsIGZlbmNlIGxpc3QgY2FuIGJlIHBh c3NlZCB0byB0aGUga2VybmVsIHRvIGluZGljYXRlIHdoZW4gaXQncyBzYWZlIHRvIGRlYWxsb2Nh dGUgdGhlIGJ1ZmZlci4gSWYgdGhlIGZlbmNlIGxpc3QgaXMgZW1wdHksIHRoZSBidWZmZXIgd2ls bCBiZSBkZWFsbG9jYXRlZCBpbW1lZGlhdGVseS4gU2hhcmVkIGJ1ZmZlcnMgd2lsbCBiZSBoYW5k bGVkIGJ5IG1lcmdpbmcgZmVuY2UgbGlzdHMgZnJvbSBhbGwgcHJvY2Vzc2VzIHRoYXQgZGVzdHJv eSB0aGVtLiBNaXRpZ2F0aW9uIG9mIG1hbGljaW91cyBiZWhhdmlvcjoKPiA+PiAtIElmIHVzZXJz cGFjZSBkZXN0cm95cyBhIGJ1c3kgYnVmZmVyLCBpdCB3aWxsIGdldCBhIEdQVSBwYWdlIGZhdWx0 Lgo+ID4+IC0gSWYgdXNlcnNwYWNlIHNlbmRzIGZlbmNlcyB0aGF0IG5ldmVyIHNpZ25hbCwgdGhl IGtlcm5lbCB3aWxsIGhhdmUgYSB0aW1lb3V0IHBlcmlvZCBhbmQgdGhlbiB3aWxsIHByb2NlZWQg dG8gZGVhbGxvY2F0ZSB0aGUgYnVmZmVyIGFueXdheS4KPiA+Pgo+ID4+IDMuNC4gT3RoZXIgbm90 ZXMgb24gTU0KPiA+Pgo+ID4+IE92ZXJjb21taXRtZW50IG9mIEdQVS1hY2Nlc3NpYmxlIG1lbW9y eSB3aWxsIGNhdXNlIGFuIGFsbG9jYXRpb24gZmFpbHVyZSBvciBpbnZva2UgdGhlIE9PTSBraWxs ZXIuIEV2aWN0aW9ucyB0byBHUFUtaW5hY2Nlc3NpYmxlIG1lbW9yeSBtaWdodCBub3QgYmUgc3Vw cG9ydGVkLgo+ID4+Cj4gPj4gS2VybmVsIGRyaXZlcnMgY291bGQgbW92ZSB0byB0aGlzIG5ldyBt ZW1vcnkgbWFuYWdlbWVudCB0b2RheS4gT25seSBidWZmZXIgcmVzaWRlbmN5IGFuZCBldmljdGlv bnMgd291bGQgc3RvcCB1c2luZyBwZXItQk8gZmVuY2VzLgo+ID4+Cj4gPj4KPiA+PiA0LiBEZXBy ZWNhdGluZyBpbXBsaWNpdCBzeW5jaHJvbml6YXRpb24KPiA+Pgo+ID4+IEl0IGNhbiBiZSBwaGFz ZWQgb3V0IGJ5IGludHJvZHVjaW5nIGEgbmV3IGdlbmVyYXRpb24gb2YgaGFyZHdhcmUgd2hlcmUg dGhlIGRyaXZlciBkb2Vzbid0IGFkZCBzdXBwb3J0IGZvciBpdCAobGlrZSBhIGRyaXZlciBmb3Jr IHdvdWxkIGRvKSwgYXNzdW1pbmcgdXNlcnNwYWNlIGhhcyBhbGwgdGhlIGNoYW5nZXMgZm9yIGV4 cGxpY2l0IHN5bmNocm9uaXphdGlvbi4gVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBjcmVhdGUgYW4g aXNvbGF0ZWQgcGFydCBvZiB0aGUga2VybmVsIERSTSB3aGVyZSBhbGwgZHJpdmVycyBvbmx5IHN1 cHBvcnQgZXhwbGljaXQgc3luY2hyb25pemF0aW9uLgo+ID4+Cj4gPj4gTWFyZWsKPiA+PiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+IGRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKPiA+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPj4g aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBt ZXNhLWRldiBtYWlsaW5nIGxpc3QKPiA+IG1lc2EtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9tZXNhLWRl dgo+CgoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=