From 3750600905b13863ae4028da4ee8e5f8b7b8ab94 Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Tue, 19 May 2020 14:47:36 +0100 Subject: [PATCH] [libre-riscv-dev] Tomasulo and Scoreboards --- 17/1721715cc7968aa3c25d43c1999f8c2b317560 | 196 ++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 17/1721715cc7968aa3c25d43c1999f8c2b317560 diff --git a/17/1721715cc7968aa3c25d43c1999f8c2b317560 b/17/1721715cc7968aa3c25d43c1999f8c2b317560 new file mode 100644 index 0000000..c1e117e --- /dev/null +++ b/17/1721715cc7968aa3c25d43c1999f8c2b317560 @@ -0,0 +1,196 @@ +Return-path: +Envelope-to: publicinbox@libre-riscv.org +Delivery-date: Tue, 19 May 2020 14:48:02 +0100 +Received: from localhost ([::1] helo=libre-riscv.org) + by libre-soc.org with esmtp (Exim 4.89) + (envelope-from ) + id 1jb2bA-0001BH-Up; Tue, 19 May 2020 14:48:00 +0100 +Received: from lkcl.net ([217.147.94.29]) + by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) + (Exim 4.89) (envelope-from ) id 1jb2b9-0001BB-F6 + for libre-riscv-dev@lists.libre-riscv.org; Tue, 19 May 2020 14:47:59 +0100 +DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lkcl.net; + s=201607131; + h=Content-Type:To:Subject:Message-ID:Date:From:MIME-Version; + bh=xsRbixC+5Oi5SDUDIMWSxVdm+u/cRB+WeGpcMG0osuM=; + b=KMvQY4YnFpEWrqLHFAVbMDm5PqW6JuaT/CnA1ZYIfCEfFj1QtsUkjL8oeGTm7ws+cm3y2Oesvs4ctKXaVZokSPmlXhzvhkhSakgpZjjCJyXJmyyzqqfpdHvEBaid9ILaxc0WJi1L7UyMX+ptUMYCDgwD+IEsZWmeZh9yzTF/PjE=; +Received: from mail-lf1-f46.google.com ([209.85.167.46]) + by lkcl.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) + (Exim 4.84_2) (envelope-from ) id 1jb2b9-0006JA-1O + for libre-riscv-dev@lists.libre-riscv.org; Tue, 19 May 2020 13:47:59 +0000 +Received: by mail-lf1-f46.google.com with SMTP id c12so7832558lfc.10 + for ; + Tue, 19 May 2020 06:47:43 -0700 (PDT) +X-Gm-Message-State: AOAM530VBOt84j4MOlNJlpZ3gSpBOJaq8xExQCILPyq3LYcVMSealsCZ + Wv5hlSCyceHpHXnv1VBbyD+PcA9OgyDM42mj57A= +X-Google-Smtp-Source: ABdhPJwth8ABBjwEJ9pkVS5hoy7sgpRfIjIYnJM7pRUkWvzFxEmEyFOZ+gYpGIzfaaNncS2sr3wAO+8duy163igjlto= +X-Received: by 2002:a19:4f46:: with SMTP id a6mr7525572lfk.107.1589896057800; + Tue, 19 May 2020 06:47:37 -0700 (PDT) +MIME-Version: 1.0 +Received: by 2002:a05:6504:31aa:0:0:0:0 with HTTP; Tue, 19 May 2020 06:47:36 + -0700 (PDT) +From: Luke Kenneth Casson Leighton +Date: Tue, 19 May 2020 14:47:36 +0100 +X-Gmail-Original-Message-ID: +Message-ID: +To: Libre-RISCV General Development +X-Content-Filtered-By: Mailman/MimeDel 2.1.23 +Subject: [libre-riscv-dev] Tomasulo and Scoreboards +X-BeenThere: libre-riscv-dev@lists.libre-riscv.org +X-Mailman-Version: 2.1.23 +Precedence: list +List-Id: Libre-RISCV General Development + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Reply-To: Libre-RISCV General Development + +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 +Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org +Sender: "libre-riscv-dev" + +T24gVHVlc2RheSwgTWF5IDE5LCAyMDIwLCBTdGFmIFZlcmhhZWdlbiA8c3RhZkBmaWJyYXNlcnZp +LmV1PiB3cm90ZToKCj4gTHVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiBzY2hyZWVmIG9wIG1h +IDE4LTA1LTIwMjAgb20gMTI6NDUgWyswMTAwXToKPiA+ICogYW5kIGhhZCBhIGZhc2NpbmF0aW5n +IGNvbnZlcnNhdGlvbiB0aGFua3MgdG8geWVob3dzaHVhIGFuZCBqZXJlbXkoYWxzbwo+IHdlbGNv +bWUhKSwgd2hpY2ggcmVzdWx0ZWQgaW4gdGhpcyhodHRwczovL2xpYnJlLXNvYy5vcmcvM2RfCj4g +Z3B1L2FyY2hpdGVjdHVyZS90b21hc3Vsb190cmFuc2Zvcm1hdGlvbi8pLgo+Cj4gSWYgSSB1bmRl +cnN0YW5kIHRoaXMgY29ycmVjdCB0aGUgYmlnIGFyY2hpdGVjdHVyYWwgZGlmZmVyZW5jZSBiZXR3 +ZWVuCj4gZXh0ZW5kZWQgc2NvcmVib2FyZGluZyBhbmQgVG9tYXN1bG8gaXMgdGhhdCBpbiB0aGUg +Zm9ybWVyIHRoZSByZWdpc3Rlcgo+IGNvbnRlbnQgaXMgc3RvcmVkIGluIGEgY2VudHJhbCByZWdp +c3RlciBmaWxlIGFuZCBmb3IgdGhlIGxhdHRlciBpdCBpcwo+IGRpc3RyaWJ1dGVkIG92ZXIgc2V2 +ZXJhbCAncmVzZXJ2YXRpb24gc3RhdGlvbnMnLgoKCm5vdCBxdWl0ZS4gdGhpcyBpcyB0aGUgbnVt +YmVyIG9uZSBtaXN1bmRlcnN0YW5kaW5nIGFib3V0IFNjb3JlYm9hcmRzLCBkdWUKdG8gdGhlIEFj +YWRlbWljIGV4Y2x1c2l2ZSBmb2N1cyBvbiB0aGUgUSBUYWJsZXMuICBpdCBpcyBzaW1pbGFyIHRv +CmZvY3Vzc2luZyBvbiB0aGUgUk9CIGFuZCBjb25jbHVkaW5nIHRoYXQgVG9tYXN1bG8gZXF1YWxz +IFJPQiB0aGVyZWZvcmUKVG9tYXN1bG8gaXMgaW5jb21wZXRlbnQgYW5kIGluY29tcGxldGUsIGlu +Y2FwYWJsZSBvZiBPdXQgb2YgT3JkZXIgZXhlY3V0aW9uLgoKIHRoZSByZWFsaXR5IGlzIHZlcnkg +ZGlmZmVyZW50OiB0aGVyZSBpcyBhY3R1YWxseSBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UuCgoq +IGJvdGggaGF2ZSBjZW50cmFsIHJlZ2lzdGVyIGZpbGVzCiogYm90aCBoYXZlICJpbiBmbGlnaHQi +IGRpc3RyaWJ1dGVkICJzdG9yYWdlIiB0aGF0IGhvbGQgcmVzdWx0cyBub3QgeWV0CmNvbW1pdHRl +ZCB0byB0aGUgcmVnZmlsZS4KCnRoZSBkaWZmZXJlbmNlIGlzOgoKKiBUb21hc3VsbyBpZGVudGlm +aWVkIGluLWZsaWdodCBhcyAiYmVpbmcgYSBwcm9ibGVtIiwgZ2F2ZSBhIG5hbWUgdG8gdGhlCmNv +bmNlcHQgKCJyZWdpc3RlciByZW5hbWluZyIpIGFuZCB1c2VkIENBTXMgaW4gdGhlIGZvcm0gb2Yg +UmVzZXJ2YXRpb24KU3RhdGlvbnMgdG8gZXhwbGljaXRseSAiaG91c2UiIHRoaXMgZGlzdHJpYnV0 +ZWQgaW4tZmxpZ2h0IGRhdGEuCgoqIFNleW1vdXIgQ3JheSBhbmQgSmFtZXMgVGhvcm50b24gc2lt +cGx5IGdvdCBvbiB3aXRoIGl0LCBjb21pbmcgdXAgd2l0aCBhbgppbi1mbGlnaHQgc29sdXRpb24g +d2hlcmUgdGhlcmUgKndhcyogbm8gbmVlZCB0byBnaXZlIHRoZSBpbi1mbGlnaHQgZGF0YQoibmFt +ZXMiLiAgdGhleSB3ZXJlIGp1c3QgIkNvbXB1dGF0aW9uIFVuaXQgb3BlcmFuZCBsYXRjaC9yZWdp +c3RlcnMiLgoKYmVjYXVzZSB0aGV5IGRpZCBub3Qgc2VlIGl0IGFzIGFuIGFjdHVhbCAicHJvYmxl +bSIsIHRoZXJlIHdhcyBub3RoaW5nIHRvCiJ0YWxrIGFib3V0Ii4gIGl0IGlzIG9ubHkgdGhyb3Vn +aCByZXRyb3NwZWN0aXZlIGFuc2x5c2lzIHRoYXQgd2UgZmluZCB0aGF0CnRoZXkgc29sdmVkIHRo +ZSAicHJvYmxlbSIuCgp3aGF0IGkgY2FuIHRlbGwgeW91IGlzOgoKKiB0aG9zZSBsYXRjaGVzIGlu +IHRoZSBDb21wdXRhdGlvbiBVbml0ICphcmUqIFJlc2VydmF0aW9uIFN0YXRpb24gbGF0Y2hlcwoq +IGEgQ0FNIGlzICpOT1QqIG5lZWRlZAoqIHRoZXkgKmFyZSogMVIxVyBhbmQgREZGcyBhcmUgcGVy +ZmVjdGx5IGFkZXF1YXRlIHRvIGNvdmVyIHRoZW0KKiBjZW50cmFsaXNpbmcgdGhlbSBpcyBOT1Qg +bmVlZGVkIGFuZCBpdCB3b3VsZCBiZSBzZXZlcmVseSBkZXRyaW1lbnRhbCB0bwp0cnkgdG8gZG8g +c28uCgoKCj4gSW4gb3JkZXIgdG8gc2NhbGUgdG8gZm9yIGV4YW1wbGUgbXVsdGktaXNzdWUgeW91 +IG5lZWQgdG8gZ28gdG8gaGlnaGVyCj4gb3JkZXIgblJtVyByZWdpc3RlciBmaWxlcyBmb3Igc2Nv +cmVib2FyZGluZwoKCnRoaXMgaXMgbmVjZXNzYXJ5IGZvciBUb21hc3VsbyBhcyB3ZWxsLiAgaSBh +bSByZWZlcnJpbmcgdG8gdGhlIElOVCBSZWdmaWxlLApub3QgdG8gdGhlIChtaXN1bmRlcnN0b29k +KSBpbmZsaWdodCBkYXRhIGxhdGNoZXMgbG9jYWwgdG8gUlNlcyAvCkNvbXB1dGF0aW9uIFVuaXRz +LgoKCj4KPiBhbmQgZm9yIFRvbWFzdWxvIHlvdSBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIHJlc2Vy +dmF0aW9uIHN0YXRpb25zCgoKbGlrZXdpc2UgeW91IGluY3JlYXNlIHRoZSBudW1iZXIgb2YgQ29t +cHV0YXRpb24gVW5pdHMgYmVjYXVzZSBkb2luZyBzbwppbmNyZWFzZXMgaW5mbGlnaHQgb3Bwb3J0 +dW5pdHkuCgoKPgo+ICB0b2dldGhlciB3aXRoIGEgbW9yZSBjb21wbGV4IHRyYWNrZXIgb2YgdGhl +IHJlZ2lzdGVyIHRhZ2dpbmcvYWxpYXNpbmcuCgoKaW4gVG9tYXN1bG8sIHllcy4gIGl0IHF1aWNr +bHkgYmVjb21lcyBhIG5pZ2h0bWFyZSwgYXQgdGhlIFJTIENBTXMsIHRoZSBDREIsCnRoZSBST0Ig +LSBpbiBmYWN0IGV2ZXJ5dGhpbmcgdG8gZG8gd2l0aCB0aGUgZW50aXJlIFRvbWFzdWxvIGFsZ29y +aXRobS4KCmZvciBTY29yZWJvYXJkcywgbm8uICB0aGUgZXhhY3Qgc2FtZSBsb2dpYywgYnkgZW5j +b2RpbmcgYWxsIEZ1bmN0aW9uIFVuaXQKYW5kIFJlZ2lzdGVyIE51bWJlcnMgaW4gVU5BUlkgbm90 +IGJpYmFyeSwgaXMgYXV0b25hdGljYWxseSBhbmQgaW5oZXJlbnRseQptdWx0aS1pc3N1ZSBjYXBh +YmxlIEJZIERFU0lHTi4KCmFsbW9zdCB6ZXJvIGV4dHJhIGxvZ2ljIGlzIHJlcXVpcmVkIHRvIG1h +a2UgVW5hcnkgKGJpdHZlY3RvcikgU2NvcmVib2FyZHMKbXVsdGkgaXNzdWUuCgoKCj4gU28gc29t +ZSAyIGNlbnRzIGZyb20gbWUuCj4gRnJvbSBwaHlzaWNhbCBpbXBsZW1lbnRhdGlvbiBwb2ludCBv +ZiB2aWV3IHRoZSBjZW50cmFsIGhpZ2ggb3JkZXIgblJtVwo+IHJlZ2lzdGVyIGZpbGUgYW5kIHNj +b3JlYm9hcmQgZG9lcyB3b3JyeSBtZS4KCgpkdWUgdG8gdGhlICh2ZXJ5IGNvbW1vbikgbWlzdW5k +ZXJzdGFuZGluZywgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBubwpjZW50cmFsaXNlZCBzY29yZWJvYXJk +IHJlZ2ZpbGUsIGdpdmVuIHRoYXQgdGhlIGluZmxpZ2h0IGRhdGEgeW91IChhbmQgYWxsCkFjYWRl +bWljIGxpdGVyYXR1cmUgbWlzbGVhZGluZ2x5IHN0YXRlcykgaXMgZGlzdHJpYnV0ZWQgbm90IGNl +bnRyYWxpc2VkLAp0aGlzIGNvbmNlcm4gaXMgbW9vdC4KCndlIHdpbGwgdXNlIHN0YW5kYXJkIERG +RnMgdG8gc3RvcmUgdGhlIGluLWZsaWdodCBkYXRhLCBhcyBhbiBhYnNvbHV0ZWx5CnN0YW5kYXJk +ICJsYXRjaC9yZWdpc3RlciIsIGF0IHRoZSBDb21wVW5pdC4gdGhpcyBoYXMgYmVlbiBpbXBsZW1l +bnRlZCBvdmVyCmEgeWVhciBhZ28gYW5kIGhhcyBiZWVuIHdvcmtpbmcgZm9yIG92ZXIgYSB5ZWFy +LgoKCj4gSGlnaGVyIG9yZGVyIG5SbVcgcmVnaXN0ZXIgZmlsZXMgd2lsbCBiZWNvbWUgcG93ZXIg +YW5kIGFyZWEgaHVuZ3J5Cj4gY29tcGFyZWQgdG8gbXVsdGlwbGUgbG93ZXIgb3JkZXIgcmVzZXJ2 +YXRpb24gc3RhdGlvbnMuCj4gSSBoYXZlIHNlZW4gbnVtYmVycyBvZiBhIGZldyB0ZW5zIG9mIGZ1 +bmN0aW9uYWwgdW5pdHMgaW4geW91ciBkZXNpZ24uIEkKPiB0aGluayBpdCB3aWxsIGJlY29tZSBh +bHNvIGEgbmlnaHRtYXJlIHRvIGNvbm5lY3QgYW5kIHJvdXRlIGFsbCB0aGUgaW5wdXQKPiBhbmQg +b3V0cHV0cyBvZiBhbGwgdGhlIGZ1bmN0aW9uYWwgdW5pdHMgdG8gdGhlIGNlbnRyYWwgcmVnaXN0 +ZXIgZmlsZSBhbmQKPiBzY29yZWJvYXJkLgoKCmkgYW0gZ29pbmcgb3ZlciB0aGlzIG5vdy4gIHRo +ZSBkaWZmZXJlbnQgcmVnZmlsZXMgKENvbmRpdGlvbiwgSU5ULCBTUFIsClhFUikgYXJlIHNlcGFy +YXRlIGFuZCBzbyBmcm9tIGEgU1JBTSBwb3J0aW5nIHBlcnNwZWN0aXZlIGFsbCBuZWVkIDFXICh3 +aXRoCnRoZSBleGNlcHRpb24gb2YgTERTVCBVcGRhdGUgd2hpY2ggY2FuIGJlIHRpbWVzbGljZWQp +Cgp0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVhZCBwb3J0cyBmb3IgYW55IG9uZSBSZWdmaWxlIFNS +QU0gaXMgMy4gIDQgd291bGQgYmUKbmljZS4KCnNvIHdlIG9ubHkgbmVlZCA0UjFXIHdoaWNoIGlz +IGRvYWJsZS4KCndoZW4gaXQgY29tZXMgdG8gbXVsdGkgaXNzdWUgdGhpcyBpcyB3aGVyZSB0aGUg +c3RyYXRpZmljYXRpb24gT0RELUVWRU4KUmVnZmlsZSBudW1iZXJpbmcgY29tZXMgaW50byBwbGF5 +LCBhbmQgd2UgKnN0aWxsKiBvbmx5IG5lZWQgNFIxVy4KCgo+ICBTbyBhdCBmaXJzdCBzaWdodCwg +ZnJvbSBwaHlzaWNhbCBpbXBsZW1lbnRhdGlvbiBwb2ludCBmb3Igc21hbGxlciBub2RlcywKPiB0 +aGUgVG9tYXN1bG8gYWxnb3JpdGhtIHNlZW1zIG1vcmUgc2NhbGFibGUgdGhhbiBleHRlbmRlZCBz +Y29yZWJvYXJkaW5nLgoKCml0IGRlZmluaXRlbHkgaXNuJ3QuCgp0byBnZXQgbXVsdGkgaXNzdWUg +aW4gVG9tYXN1bG8geW91IG5lZWQgbXVsdGlwbGUgQ29tbW9uIERhdGEgQnVzZXMsCm90aGVyd2lz +ZSBpdCBiZWNvbWVzIGV2ZW4gbW9yZSBhIGJvdHRsZW5lY2sgdGhhbiBpdCBhbHJlYWR5IGlzLiBh +c3N1bWluZyA0Cmlzc3VlLCB0byBhY2hpZXZlIHRoaXMgdGhlIFJPQiBuZWVkcyB0byBiZSBtYWRl +IGEgbXVsdGkgcG9ydGVkICg0UjRXKSBTUkFNLAphbmQsIHdvcnNlLCB0aGUgUmVzZXJ2YXRpb25T +dGF0aW9uIENBTXMgbm93IGFsc28gbmVlZCB0byBiZSA0UjRXLgoKcGx1cyBzb21lIG90aGVyIG5p +Z2h0bWFyZSBhc3BlY3RzLgoKCj4gIEkgaW5kaWNhdGVkIGJlZm9yZSB0aGF0IGluIHNtYWxsZXIg +bm9kZXMgcG93ZXIgY29uc3VtcHRpb24gYW5kIGRlbGF5IGlzCj4gbWFpbmx5IGRldGVybWluZWQg +YnkgdGhlIGxlbmd0aCBvZiB0aGUgaW50ZXJjb25uZWN0cyBhbmQgbm90IGJ5IHRoZSBpbnB1dAo+ +IGxvYWQgb2YgdGhlIGxvZ2ljIGdhdGVzIGl0c2VsZjsgaW4gMTgwbm0gaXQgd2lsbCBiZSBtb3Jl +IGZpZnR5L2ZpZnR5LgoKCmFoLCBhcHByZWNpYXRlZCB0aGUgaW5zaWdodAoKd2l0aCB0aGUgQ29t +cHV0YXRpb24gVW5pdHMgbGF0Y2hlcyBiZWluZyBkaXN0cmlidXRlZCwgbm90IGNlbnRyYWxpc2Vk +LAp0aGVzZSBsYXRjaGVzIGNhcHR1cmUgdGhlIG9wZXJhbmRzIGNsb3NlIHRvIHRoZSBwb2ludCB3 +aGVyZSB0aGV5IHdpbGwgYmUKZmVkIGludG8gdGhlIHBpcGVsaW5lcy4KCmkgcGxhbiB0byBoYXZl +IHRoZSBwaXBlbGluZXMgImRvdWJsZSBiYWNrIiBvbiB0aGVtc2VsdmVzLCBwbGFjaW5nIHRoZQpy +ZXN1bHQgKmJhY2sqIHdoZXJlIHRoZSBDb21wdXRhdGlvbiBVbml0IG1heSBsYXRjaCB0aGUgcmVz +dWx0LCBlYXNpbHksIHRoZW4Kd2FpdCBmb3IgdGhlIFJlZ2ZpbGUgQ29tbW9uIERhdGEgQnVzIGRl +ZGljYXRlZCB0byB3cml0aW5nIHRvIHRoZSByZWdmaWxlLgoKdGhlc2UgQnJvYWRjYXN0IEJ1c2Vz +IGFyZSBhbiB1bmF2b2lkYWJsZSBuZWNlc3NpdHkgYW5kIHdpbGwgbmVlZCBjYXJlZnVsCmRlc2ln +biBhbmQgbGF5b3V0LCBhbmQgYnVmZmVycyB0byBlbnN1cmUgdGhleSBjYW4gYmUgZHJpdmVuIGF0 +IHNwZWVkLgoKYm90aCBUb21hc3VsbyBhbmQgU2NvcmVib2FyZHMgcmVxdWlyZSB0aGVzZSBsYXJn +ZSBmYW5vdXQgLyBmYW5pbiBCcm9hZGNhc3QKUmVnZmlsZSBCdXNlcy4KCmV4Y2VwdCB0aGF0IGlu +IFNjb3JlYm9hcmRzLCBSRUFEIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBXUklURS4KdGhl +cmVmb3JlLCBSRUFEIGlzIGZhbm91dCBPTkxZIGFuZCBXUklURSBpcyBmYW5pbiBPTkxZLgoKdGhp +cyBtYWtlcyBhIGNydWNpYWwgZGlmZmVyZW5jZSBiZWNhdXNlIHRoZSBUb21hc3VsbyBDREIgaXMg +YSBzaW5nbGUgcGF0aApSRUFEICpBTkQqIFdSSVRFIGNvbnRlbmRlZCBnbG9iYWwgcmVzb3VyY2Uu +CgpzaW5nbGUgZm9yIGRlbGl2ZXJ5IG9mICpBTEwqIGluZmxpZ2h0IGRhdGEuCgogQXMgSmVyZW15 +IGluZGljYXRlZCB0aGlzIGlzIG5leHQgdG8gdGhlIHBvd2VyIGNvbnN1bXB0aW9uIGluIHRoZSBy +ZWdpc3Rlcgo+IGZpbGVzIGFuZCBjYWNoZSB3aGljaCBzY2FsZXMgd2l0aCB0aGUgdG90YWwgYml0 +IGNvdW50IG9mIHRoZSBibG9jayBhbmQgdGhlCj4gblJtVyBvcmRlciBvZiB0aGUgYmxvY2suCgoK +NFIxVy4KCgo+IEFsc28gdGhlIHRyYXZpYWxuZXNzIG9mIGEgYmlnIGZhbi1pbiBOT1Igb3IgTkFO +RCBnYXRlIG1heSBiZSBkZWNlcHRpdmUsCj4gdGhlc2UgZ2F0ZXMgYXJlIG5vdCBmZWFzaWJsZSBh +bmQgd2lsbCBiZSBzeW50aGVzaXplZCB0byB0cmVlcyBvZiBOQU5EL05PUgo+IGdhdGVzLgoKCnBl +cmZlY3QuICBhcyBleHBlY3RlZC4gIGRpYWdyYW1zIGluIE1pdGNoJ3MgYm9vayBjaGFwdGVycyBz +aG93IHRoaXMgYmVpbmcKZG9uZSwgZXNwZWNpYWxseSBvbiB0aGUgMzIgcmVnIHZlY3RvcnMuCgoK +Cj4KPiAgSW4gdGhhdCByZXNwZWN0IGEgaGlnaCBmYW4taW4gTk9SL05BTkQgY2FuIGhhdmUgc2lt +aWxhciB0aW1lL3Bvd2VyCj4gY29uc3VtcHRpb24gdGhhbiBhIHNlZW1pbmdseSBtb3JlIGNvbXBs +ZXggY2FzZSBvZiBpZiBzdGF0ZW1lbnQuIEluIHplcm8KPiBvcmRlciwgZm9yIHNpbmdsZSBvdXRw +dXQgYmxvY2ssIGRlbGF5IGFuZCBwb3dlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBudW1iZXIKPiBv +ZiBpbnB1dHMgaW5kZXBlbmRlbnQgb2YgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIFJUTC9IREwgY29k +ZS4gSW4gZmlyc3Qgb3JkZXIKPiBvbmUgaGFzIHRvIGFjY291bnQgdGhhdCBOQU5EL05PUiBsb2dp +YyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIFhPUi9YTk9SCj4gbG9naWMgYnV0IGZvciBiaWdnZXIg +dHJlZXMgdGhpcyBkaWZmZXJlbmNlIGlzIGxlc3MgcHJvbm91bmNlZCBhcyBYT1IvWE5PUgo+IHRy +ZWVzIHdpbGwgYmUgc3ludGhlc2l6ZWQgdG8gbW9yZSBlZmZpY2llbnQgdHJlZXMgdXNpbmcgQU9J +IChhbmQtb3ItaW52ZXJ0KQo+IGNlbGxzLgoKCmFwcHJlY2lhdGUgdGhlIGluc2lnaHRzLCBTdGFm +LgoKdG8gc3VtbWFyaXNlLCB0aGVuOgoKKiB3ZSBoYXZlIHNvbWUgY29udGludW91cyBtaXN1bmRl +cnN0YW5kaW5ncyBmcm9tIHRoZSBBY2FkZW1pYyBsaXRlcmF0dXJlCndoaWNoIHBlb3BsZSBjb250 +aW51ZSB0byBiZWxpZXZlLCBhbmQgbmVlZCB0byBiZSBzdG9tcGVkIG9uIHdoZW5ldmVyIHRoZXkK +b2NjdXIuICBuaWNlbHkuCiogd2UgaGF2ZSBzb21lIGJpZyBOT1IvTkFORCBnYXRlcyAoMzIgaW4p +IHdoaWNoIGNyZWF0ZSBhIGNhc2NhZGUuICB0aGVzZQphcmUgZXhwZWN0ZWQuCiogREZGcyBhcmUg +dXNlZCBhdCB0aGUgZGVjZW50cmFsaXNlZCBDb21wdXRhdGlvbiBVbml0cyB0byBzdG9yZQpkZWNl +bnRyYWxpc2VkIGluZmxpZ2h0IGRhdGEKKiBDZW50cmFsaXNlZCA0UjFXIFJlZ2ZpbGVzIHN0b3Jl +IGNlbnRyYWxpc2VkIHJlZ2lzdGVyIGRhdGEuCiogVW5pZGlyZWN0aW9uYWwgQnJvYWRjYXN0IEJ1 +c2VzIHRyYW5zZmVyIGRhdGEgYmV0d2VlbiBDb21wIFVuaXRzIGFuZApSZWdmaWxlcy4KCmwuCgoK +Ci0tIAotLS0KY3Jvd2QtZnVuZGVkIGVjby1jb25zY2lvdXMgaGFyZHdhcmU6IGh0dHBzOi8vd3d3 +LmNyb3dkc3VwcGx5LmNvbS9lb21hNjgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f +X19fX19fX19fX19fX18KbGlicmUtcmlzY3YtZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1k +ZXZAbGlzdHMubGlicmUtcmlzY3Yub3JnCmh0dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFp +bG1hbi9saXN0aW5mby9saWJyZS1yaXNjdi1kZXYK + -- 2.30.2