Re: [libre-riscv-dev] Scoreboard vs Tomasulo
authorJeremy Singher <thejsingher@gmail.com>
Sat, 16 May 2020 20:16:23 +0000 (13:16 -0700)
committerlibre-riscv-dev <libre-riscv-dev@lists.libre-riscv.org>
Sat, 16 May 2020 20:16:36 +0000 (21:16 +0100)
47/fb8c4a46f45212cc3b616f96f2c5c51e9d3428 [new file with mode: 0644]

diff --git a/47/fb8c4a46f45212cc3b616f96f2c5c51e9d3428 b/47/fb8c4a46f45212cc3b616f96f2c5c51e9d3428
new file mode 100644 (file)
index 0000000..c959e87
--- /dev/null
@@ -0,0 +1,232 @@
+Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
+Envelope-to: publicinbox@libre-riscv.org
+Delivery-date: Sat, 16 May 2020 21:16:37 +0100
+Received: from localhost ([::1] helo=libre-riscv.org)
+       by libre-soc.org with esmtp (Exim 4.89)
+       (envelope-from <libre-riscv-dev-bounces@lists.libre-riscv.org>)
+       id 1ja3Ea-0005yr-Nc; Sat, 16 May 2020 21:16:36 +0100
+Received: from mail-lj1-f179.google.com ([209.85.208.179])
+ by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
+ (Exim 4.89) (envelope-from <thejsingher@gmail.com>)
+ id 1ja3EZ-0005yl-C9
+ for libre-riscv-dev@lists.libre-riscv.org; Sat, 16 May 2020 21:16:35 +0100
+Received: by mail-lj1-f179.google.com with SMTP id h4so5768877ljg.12
+ for <libre-riscv-dev@lists.libre-riscv.org>;
+ Sat, 16 May 2020 13:16:35 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
+ h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
+ bh=ajKTXr01cEGXByX2Mfn+2ySJf2oZlH121LBcMfjFrwg=;
+ b=GzzYqEPHwthoa8FIjxY4ZeU9wEJ6yd9K4mds7aKT/DE7C2IovF7hrSPehLChOz0/aS
+ kAJ2Zt6VNwtEtszpV7kJCOehd0CQnxRz04bsFuB6fgefVN+uZGQbFaUSsuJNCjkmpjG/
+ uAeN+NGODrJMpdVoRvtifHU/cixozJBT3BCKHQz4t4wZ+YVJmPo3QodvDwFirJQ2CSj8
+ 9DDQxUHOdEcJizvMz/UuJprjPIJ3UburmxmPTqvm0Dsk75eNHtfGMU+RAtUYicr6VCkf
+ iCdGL8RtV9ZXW1vMa7uYYmAZCli5nAhCO1oh8/T7VP/WomN0lC5ljQ5SCT8IsXjB4ghH
+ eVdA==
+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;
+ bh=ajKTXr01cEGXByX2Mfn+2ySJf2oZlH121LBcMfjFrwg=;
+ b=B1lb5ayBX0Ud6r/hBdYK31V1iAjM3eSJiLOJ7gFztZecKJEV/3KyFdcW174iSqnk6x
+ 0rve9KptoinXReA3MPsVlafW9H26T03BPd9q1t7qMSmVAMQqFB4zsapiPAckcJbQMjvi
+ j2gx7XxKus0aZmQWh/LoQT9kM6828ZoxSNLeY/HkIcsGqhrR2XRr6g1PiH3i3tuGEeHE
+ 8nD4tvSOPjtvgkH68yabL6XfhsGU7QthrVpPhvHCKE67AvBc3/pfTb4fOMqmm7Y7ZU0f
+ XyuTl1n1MuKlQ/04YNoy0yvArpf0IBEVV4OmmLZ9KNGuVSzWy6otd/FSMNiSuBMMyu1m
+ G7kw==
+X-Gm-Message-State: AOAM532g2sHSxFfTput8m1XaPVorLWcoLVJWedHNbWkhqh5NGkQylU95
+ gdnLiqdowAxBVedkFRXx08+zeRS+EQzosfR6NwteDBeR
+X-Google-Smtp-Source: ABdhPJw1nP4laMG1MvTBtQncvnNkSRNtjSuOwCGIhzosy8AifAz+VL6VMcCDbpcq3yyM2Gepq9jYCrzQNuN+aRb92TY=
+X-Received: by 2002:a05:651c:50e:: with SMTP id
+ o14mr6082865ljp.52.1589660194239; 
+ Sat, 16 May 2020 13:16:34 -0700 (PDT)
+MIME-Version: 1.0
+References: <13EDF987-9A19-4C96-89C2-6DB784CF2C96@gatech.edu>
+ <CAPweEDyDcmAJbJx+PKkL8MotPMNyHyFOEtuNOKP+V2PmmY5HvA@mail.gmail.com>
+ <CAPweEDyw+LSW2S4sKWk-V24NSHYe2qqWO+KFqikQ34Q1Guhaig@mail.gmail.com>
+ <CAPweEDweXSC5c_ROQ8a3Y4hQMaJYmD_jAriadcZk9PRrkjOXvA@mail.gmail.com>
+ <25AC8A2E-D48F-439F-AF9D-0EB3DC08D7CC@gatech.edu>
+ <CAPweEDx_TMOxQHLrhbdhnXsBE1s-u2mz3xD2DDFCMi6m9BZCZg@mail.gmail.com>
+In-Reply-To: <CAPweEDx_TMOxQHLrhbdhnXsBE1s-u2mz3xD2DDFCMi6m9BZCZg@mail.gmail.com>
+From: Jeremy Singher <thejsingher@gmail.com>
+Date: Sat, 16 May 2020 13:16:23 -0700
+Message-ID: <CAEoCstRd+hLfF5YtUbnS2gukPxVAjmheJrZ29QvJD3y4Y928JQ@mail.gmail.com>
+To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
+Subject: Re: [libre-riscv-dev] Scoreboard vs Tomasulo
+X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
+X-Mailman-Version: 2.1.23
+Precedence: list
+List-Id: Libre-RISCV General Development
+ <libre-riscv-dev.lists.libre-riscv.org>
+List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>, 
+ <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
+List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
+List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
+List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
+List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>, 
+ <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
+Reply-To: Libre-RISCV General Development
+ <libre-riscv-dev@lists.libre-riscv.org>
+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" <libre-riscv-dev-bounces@lists.libre-riscv.org>
+
+PiBIb3dldmVyLCB0aGUgc2NvcmVib2FyZCBpcyBsaW1pdGVkIGluIHRoYXQgaXQgZG9lcyBub3Qg
+aGFuZGxlIFdBUiBhbmQgV0FXCj4gaGF6YXJkcyB2ZXJ5IHdlbGwuCgo+IHRoZSBvcmlnaW5hbCA2
+NjAwIGhhbmRsZXMgV0FSIGV4dHJlbWVseSB3ZWxsLCBvbmx5IHN0YWxsaW5nIG9uIFdhVwo+IGNv
+bmRpdGlvbiwgZGV0ZWN0aW9uIHdoaWNoIGRpZCBub3QgbWF0dGVyIGdyZWF0bHkgYmVjYXVzZSB0
+aGUgcGlwZWxpbmVzCj4gd2VyZSBvbmx5IGF0IG1vc3QgMiBzdGFnZXMgbG9uZyBhbnl3YXkgKE1p
+dGNoIG9ubHkgbm90aWNlZCBhZnRlciByZXJlYWRpbmcKPiBsYXN0IHllYXIgdGhhdCB0aGUgRlAg
+QUREIG9mIHRoZSA2NjAwIHdhcyAyIHN0YWdlIHBpcGVsaW5lZC4gIG5vIGFjYWRlbWljCj4gbGl0
+ZXJhdHVyZSBoYXMgYWNrbm93bGVkZ2VkIG9yIG5vdGljZWQgdGhpcykuCgpJIHdvdWxkIGFyZ3Vl
+IHRoYXQgdGhlIENEQzY2MDAgaGFuZGxlcyBXQVIgYmV0dGVyIHRoYW4gYW4gaW4tb3JkZXIKbWFj
+aGluZSwgYnV0IG5vdCBiZXR0ZXIgdGhhbiBhIG1hY2hpbmUgd2l0aCBmdWxsIHJlbmFtaW5nLiBJ
+biB0aGUKQ0RDNjYwMCwgdGhlIHNjb3JlYm9hcmQgd291bGQgYmxvY2sgdGhlIGNvbXBsZXRpb24g
+b2YgdGhlIFcgaW5zdCB1bnRpbAp0aGUgUiBpbnN0IGhhcyByZWFkIGl0cyBvcGVyYW5kcy4gSW4g
+VG9tYXN1bG8sIHRoZSBXIGluc3QgY2FuIHByb2NlZWQKaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBS
+IGluc3QgaXMgcmVhZHksIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlcgppcyBwaHlzaWNh
+bGx5IHJlbmFtZWQuCgo+ICBST0IgaXMgYSBDQU0sCgpXaGF0PyBUaGlzIGlzIG5vdCB0cnVlLiBJ
+bnN0cnVjdGlvbnMgaW4gZmxpZ2h0IHRyYWNrIHRoZWlyIGluZGV4IGluCnRoZSBST0IsIGF0IGNv
+bXBsZXRpb24sIHRoZXkgd3JpdGUgc3VjY2VzcyBiaXQgYWNjb3JkaW5nIHRvIHRoZSBpbmRleAp0
+aGV5IGhhdmUuIE5vdCBhIENBTS4gU2ltcGxlIGFkZHJlc3NlZCB3cml0ZS4KCj4gZ2l2ZW4gdGhh
+dCBJbnRlbCBwcm9jZXNzb3JzIHVzZSBUb21hc3Vsbywgd2Ugc3RhcnQgdG8gc2VlIHdoeSBJbnRl
+bAo+IHByb2Nlc3NvcnMgc3VjayBzbyBtdWNoIHBvd2VyLgoKUG93ZXIgY29uc3VtcHRpb24gb24g
+YSBwcm9jZXNzb3IgaXMgcHJpbWFyaWx5IGZyb20gaGlnaCBzd2l0Y2hpbmcKcmF0ZXMgb24gbGFy
+Z2UgcmVnaXN0ZXIgZmlsZXMsIGFuZCBTUkFNIGxlYWthZ2UuIFRoZSBzY2hlZHVsaW5nIGxvZ2lj
+CmlzIGEgbWluaXNjdWxlIHBvcnRpb24uIEludGVsIGNvcmVzIGFyZSBwb3dlci1odW5ncnkgYmVj
+YXVzZQpoaXN0b3JpY2FsbHkgdGhleSBoYXZlIHRhcmdldGVkIHRoZSBkZXNrdG9wL3dvcmtzdGF0
+aW9uIG1hcmtldCwgYW5kIGRvCm5vdCBoYXZlIGFzIG1hbnkgZGVjYWRlcyBvZiBleHBlcmllbmNl
+IGFzIG90aGVyIGZpcm1zIG9wdGltaXppbmcgZm9yCnBvd2VyLWNvbnN0cmFpbmVkIGVudmlyb25t
+ZW50cy4KCkFsc28gYWxtb3N0IGFsbCBtb2Rlcm4gT09PIGNvcmVzIHVzZSBUb21hc3VsbyBiZWNh
+dXNlIFRvbWFzdWxvIGlzCmJldHRlciBhdCBhdm9pZGluZyBmYWxzZSBoYXphcmRzIGNvbXBhcmVk
+IHRvIHNjb3JlYm9hcmRpbmcuIFRvbWFzdWxvCmFsc28gbWFrZXMgaXQgZWFzaWVyIHRvIGltcGxl
+bWVudCBwcmVjaXNlIHRyYXBzLCBzb21ldGhpbmcgd2hpY2ggaXMKbm90b3Jpb3VzbHkgY2hhbGxl
+bmdpbmcgIHdpdGgganVzdCBhIHNjb3JlYm9hcmQuCgpMZXRzIGJlIGNsZWFyIGhlcmUuIFRoZSBD
+REM2NjAwIEFWT0lEUyBXQVIgYW5kIFdBVyBoYXphcmRzIGJ5IEJMT0NLSU5HCnlvdW5nZXIgaW5z
+dHJ1Y3Rpb25zIChTZWUgcGczIGluIE1pdGNoIEFsc3VwJ3MgdGV4dCkuIFRvbWFzdWxvJ3MKc3Vw
+cG9ydHMgT09PIGV4ZWN1dGlvbiBQQVNUIFdBUiBhbmQgV0FXIGhhemFyZHMsIGVuYWJsaW5nIHRo
+ZSBjb3JlIHRvCmV4cGxvaXQgbW9yZSBJTFAgYWNyb3NzIGl0cyBmdW5jdGlvbmFsIHVuaXRzLgoK
+THVrZSwgSSBhZ3JlZSB3aXRoIHlvdSB0aGF0IHRoZSByZXNlcnZhdGlvbiBzdGF0aW9uIHJvd3Mg
+aW4gVG9tYXN1bG8ncwpjYW4gYmUgZXF1aXZhbGVudCB0byB0aGUgb3BlcmFuZCBsYXRjaGVzIGlu
+IFNjb3JlYm9hcmRpbmcuIEhvd2V2ZXIsCmFkZGluZyBtYW55IG9wZXJhbmQtbGF0Y2hlcyAoYnkg
+aGF2aW5nIG1hbnkgZnVuY3Rpb25hbCB1bml0cykgZG9lcyBub3QKc2NhbGUgYXMgbmljZWx5IGFz
+IGp1c3QgYWRkaW5nIGEgZmV3IG1vcmUgcm93cyB0byBUb21hc3VsbydzCnJlc2VydmF0aW9uIHN0
+YXRpb25zLiBFc3BlY2lhbGx5IHNpbmNlIGRlc2lnbmluZyB0aGUgQ0FNcyBmb3IKVG9tYXN1bG8n
+cyBpcyBhIHdlbGwgc3R1ZGllZCwgYW5kIHdlbGwtdW5kZXJzdG9vZCBwcm9ibGVtCgo+IDMuIEV4
+cGFuZCB0aGUgbnVtYmVyIG9mIFJTZXMgc28gdGhhdCBpZiB5b3Ugd2VyZSB0byBjb3VudCB0aGUg
+dG90YWwgbnVtYmVyCj4gb2YgcGxhY2VzIG9wZXJhbmRzIGFyZSBzdG9yZWQsIHRoZXkgYXJlIHRo
+ZSBzYW1lLgoKPiAoYW5vdGhlciB3YXkgdG8gcHV0IHRoaXMgaXMsICJmbGF0dGVuIGFsbCAyRCBS
+U2VzIGludG8gMUQiKQoKVGhpcyBkb2VzIG5vdCBzY2FsZSB3ZWxsLiBBIDJEIENBTSBpcyBmYXIg
+bW9yZSBhcmVhIGVmZmljaWVudCB0aGFuIGEKMUQgZmxhdHRlbmVkIHZlY3Rvci4KCj4gNy4gcmVu
+YW1lIFJTZXMgdG8gIkZ1bmN0aW9uIFVuaXRzIiAoYWN0dWFsbHkgaW4gVGhvcm50b24ncyBib29r
+IHRoZSBwaHJhc2UKPiAiQ29tcHV0YXRpb24gVW5pdHMiIGlzIHVzZWQpCgpTbyBhIFRvbWFzdWxv
+J3MgZGVzaWduIHdpdGggNCByb3dzIG5vdyBiZWNvbWVzIGEgImZsYXR0ZW5lZCIgZGVzaWduCndp
+dGggNCBmdW5jdGlvbmFsIHVuaXRzPyBUaGUgYWRkaXRpb25hbCBjb3N0IG9mIHRoZSBmdW5jdGlv
+bmFsIHVuaXRzCmlzIGVub3Jtb3VzLgoKT24gU2F0LCBNYXkgMTYsIDIwMjAgYXQgMTA6MzMgQU0g
+THVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbgo8bGtjbEBsa2NsLm5ldD4gd3JvdGU6Cj4KPiBP
+biBTYXR1cmRheSwgTWF5IDE2LCAyMDIwLCBZZWhvd3NodWEgPHlpbW1hbnVlbDNAZ2F0ZWNoLmVk
+dT4gd3JvdGU6Cj4KPiA+IFRoaXMgaXMgYSB2ZXJ5IGludHJpY2F0ZSBhbmQgY29tcGxpY2F0ZWQg
+c3ViamVjdCBtYXR0ZXIgZm9yIHN1cmUuCj4KPgo+IHllcywgZXhjZXB0IGl0IGRvZXNuJ3QgaGF2
+ZSB0byBiZS4gIHRoZSBhY3R1YWwKPiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXZl
+bnNodGVpbl9kaXN0YW5jZSBiZXR3ZWVuIFRvbWFzdWxvIGFuZAo+IDY2MDAgcmVhbGx5IGlzIG5v
+dCB0aGF0IGdyZWF0Lgo+Cj4gaSB0aG91Z2h0IGl0IHdvdWxkIGJlIGZ1biB0byB1c2UgYSBuZXcg
+dW5wcm9ub3VuY2VhYmxlIHdvcmQgaSBsZWFybmVkCj4geWVzdGVyZGF5IDopCj4KPgo+ID4gQXQg
+c29tZSBwb2ludCwgaXQgYmUgZ3JlYXQgdG8gcmVhbGx5IGJyZWFrIHRoaW5ncyBkb3duIGFuZCBt
+YWtlIHRoZW0gbW9yZQo+ID4gYWNjZXNzaWJsZS4KPgo+Cj4geWVzLiBpdCBjb21lcyBkb3duIHRv
+IHRpbWUuCj4KPiBzdGFydCB3aXRoIHRoaXMuCj4KPiAxLiBCZWdpbiBmcm9tIFRvbWFzdWxvLiAg
+bmVpdGhlciBUUyBub3Igb3JpZ2luYWwgNjYwMCBoYXZlIHByZWNpc2UKPiBleGNlcHRpb25zIHNv
+IHdlIGxlYXZlIHRoYXQgb3V0IGZvciBub3cuCj4KPiAyLiBTdGFydCBieSBvbmx5IGFsbG93aW5n
+IG9uZSByb3cgcGVyIFJlc2VydmF0aW9uIFN0YXRpb24uCj4KPiAzLiBFeHBhbmQgdGhlIG51bWJl
+ciBvZiBSU2VzIHNvIHRoYXQgaWYgeW91IHdlcmUgdG8gY291bnQgdGhlIHRvdGFsIG51bWJlcgo+
+IG9mIHBsYWNlcyBvcGVyYW5kcyBhcmUgc3RvcmVkLCB0aGV5IGFyZSB0aGUgc2FtZS4KPgo+IChh
+bm90aGVyIHdheSB0byBwdXQgdGhpcyBpcywgImZsYXR0ZW4gYWxsIDJEIFJTZXMgaW50byAxRCIp
+Cj4KPiA0LiB3aGVyZSBwaXBlbGluZXMgd2VyZSBmb3JtZXJseSBjb25uZWN0ZWQgZXhjbHVzaXZl
+bHkgdG8gb25lIFJTLAo+ICpwcmVzZXJ2ZSogdGhvc2UgY29ubmVjdGlvbnMgZXZlbiB0aG91Z2gg
+dGhlIHJvd3MgYXJlIG5vdyAxRCBmbGF0dGVuZWQuCj4KPiAoYW5vdGhlciB3YXkgdG8gcHV0IHRo
+aXMgaXM6IHdlIGhhdmUgYSBnbG9iYWwgMUQgbmFtaW5nIHNjaGVtZSB0byByZWZlcmVuY2UKPiB0
+aGUgKm9wZXJhbmQgbGF0Y2hlcyogcmF0aGVyIHRoYW4gYSAyRCBzY2hlbWUgaW52b2x2aW5nIFJT
+IG51bWJlciBpbiAxCj4gZGltZW5zaW9uIGFuZCB0aGUgcm93IG51bWJlciBpbiB0aGUgMm5kKQo+
+Cj4gNS4gZ2l2ZSB0aGlzIDFEIGZsYXR0ZW5pbmcgYW4gVU5BUlkgbnVtYmVyaW5nIHNjaGVtZS4K
+Pgo+IDYuIG1ha2UgdGhlIHNpemUgb2YgdGhlIFJlb3JkZXIgQnVmZmVyIEVYQUNUTFkgZXF1YWwg
+dG8gdGhlIG51bWJlciBvZiAxRAo+IGZsYXR0ZW5lZCBSU2VzLgo+Cj4gNy4gcmVuYW1lIFJTZXMg
+dG8gIkZ1bmN0aW9uIFVuaXRzIiAoYWN0dWFsbHkgaW4gVGhvcm50b24ncyBib29rIHRoZSBwaHJh
+c2UKPiAiQ29tcHV0YXRpb24gVW5pdHMiIGlzIHVzZWQpCj4KPiB0aHVzLCBhdCB0aGlzIHBvaW50
+IGluIHRoZSB0cmFuc2Zvcm1hdGlvbiwgdGhlIFJPQiByb3cgbnVtYmVyICpJUyogdGhlCj4gRnVu
+Y3Rpb24gVW5pdCBOdW1iZXIsIHRoZSBuZWVkIHRvIGFjdHVhbGx5IHN0b3JlIHRoZSBST0IgIyBp
+biB0aGUKPiBSZXNlcnZhdGlvbiBTdGF0aW9uIFJvdyBpcyBSRU1PVkVELCBhbmQgY29uc2VxdWVu
+dGx5IHRoZSBSZXNlcnZhdGlvbgo+IFN0YXRpb25zIGFyZSBOTyBMT05HRVIgQSBDQU0uCj4KPiA4
+LiBnaXZlIGFsbCByZWdpc3RlciBmaWxlIG51bWJlcnMgKElOVCBGUCkgYW4gVU5BUlkgbnVtYmVy
+aW5nLgo+Cj4gdGhpcyBtZWFucyB0aGF0IGluIHRoZSBST0IsIHRoZSBDQU0sIHdoaWNoIGhhcyB0
+byBsb29rIHVwIHRoZSByZWdpc3Rlcgo+IG51bWJlciBieSBoaXR0aW5nIHRoZSBDQU0gb24gZXZl
+cnkgY3ljbGUsIG5vdyBvbmx5IGhhcyB0byBtYXRjaCBhIHNpbmdsZQo+IEFORCBnYXRlLgo+Cj4g
+Yml0dmVjdG9ycyB0aGVyZWZvcmUgcmVwbGFjZSBDQU1zLgo+Cj4gd2l0aCB0aGUgUk9CIG5vdyBo
+YXZpbmcgcm93cyBvZiBiaXR2ZWN0b3JzLCBpdCBpcyBub3cgdGVybWVkIGEgIk1hdHJpeCIuCj4K
+PiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBST0IsIHdoaWNoIHVzZWQgdG8gY29udGFpbiB0aGUgUlMg
+TnVtYmVyIGluIHVuYXJ5LCBub3cKPiBjb250YWlucyBhICpiaXR2ZWN0b3IqIERpcmVjdGVkIEFj
+eWNsaWMgR3JhcGggb2YgdGhlIEZVIHRvIEZVIGRlcGVuZGVuY2llcywKPiBhbmQgaXMgc3BsaXQg
+b3V0IGludG8gaXRzIG93biBNYXRyaXguCj4KPiB0aGlzIHdlIGNhbGwgdGhlIEZVLUZVIERlcGVu
+ZGVuY3kgTWF0cml4Lgo+Cj4gdGhlIHJlbWFpbmRlciBvZiB0aGUgIlJPQiIgY29udGFpbnMgdGhl
+IHJlZ2lzdGVyIG51bWJlcnMgaW4gdW5hcnkgTWF0cml4Cj4gZm9ybSwgYW5kIHdpdGggZWFjaCBy
+b3cgYmVpbmcgZGlyZWN0bHkgYXNzb2NpYXRlZCB3aXRoIGEgRnVuY3Rpb24gVW5pdCwgd2UKPiBu
+b3cgaGF2ZSBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIEZVIGFuZCBSZWdzIHdoaWNoIHByZXNlcnZl
+cyB0aGUga25vd2xlZGdlCj4gb2Ygd2hhdCBpbnN0cnVjdGlvbiByZXF1aXJlZCB3aGljaCByZWdp
+c3RlcnMsICphbmQqIHdobyB3aWxsIHByb2R1Y2UgdGhlCj4gcmVzdWx0Lgo+Cj4gdGhpcyB3ZSBj
+YWxsIHRoZSBGVS1SZWdzIERlcGVuZGVuY3kgTWF0cml4Lgo+Cj4gdGhhdCAqcmVhbGx5IGlzIGl0
+Ki4KPgo+IHRha2Ugc29tZSB0aW1lIHRvIGFic29yYiB0aGUgdHJhbnNmb3JtYXRpb24gd2hpY2gg
+bm90IG9ubHkgcHJlc2VydmVzCj4gYWJzb2x1dGVseSBldmVyeSBmdW5jdGlvbmFsIGFzcGVjdCBv
+ZiB0aGUgVG9tYXN1bG8gQWxnb3JpdGhtLCBpdAo+IGRyYXN0aWNhbGx5IHNpbXBsaWZpZXMgdGhl
+IGltcGxlbWVudGF0aW9uLCByZWR1Y2VzIGdhdGUgY291bnQsIHJlZHVjZXMKPiBwb3dlciBjb25z
+dW1wdGlvbiAqYW5kKiBwcm92aWRlcyBhIHN0cm9uZyBmb3VuZGF0aW9uIGZvciBkb2luZyBhcmJp
+dHJhcnkKPiBtdWx0aS1pc3N1ZSBleGVjdXRpb24gd2l0aCBvbmx5IGFuIE8oTikgbGluZWFyIGlu
+Y3JlYXNlIGluIGdhdGUgY291bnQgdG8gZG8KPiBzby4KPgo+Cj4gZnVydGhlciBoaWxhcmlvdXNs
+eSBzaW1wbGUgYWRkaXRpb25hbCB0cmFuc2Zvcm1hdGlvbnMgb2NjdXIgdG8gcmVwbGFjZQo+IGZv
+cm1lciBtYXNzaXZlIHJlc291cmNlIGNvbnN0cmFpbmVkIGJvdHRsZW5lY2tzLCBkdWUgdG8gdGhl
+IGJpbmFyeQo+IG51bWJlcmluZyBvbiBib3RoIFJPQiBudW1iZXJzIGFuZCBSZWcgbnVtYmVycywg
+d2l0aCBzaW1wbGUgbGFyZ2UgdW5hcnkgTk9SCj4gZ2F0ZXM6Cj4KPiAqIHRoZSBkZXRlcm1pbmF0
+aW9uIG9mIHdoZW4gaGF6YXJkcyBhcmUgY2xlYXIsIG9uIGEgcGVyIHJlZ2lzdGVyIGJhc2lzLCBp
+cwo+IGEgbGF1Z2hhYmx5IHRyaXZpYWwgTk9SIGdhdGUgYWNyb3NzIGFsbCBjb2x1bW5zIG9mIHRo
+ZSBGVS1SRUdzIG1hdHJpeCwKPiBwcm9kdWNpbmcgYSByb3cgYml0dmVjdG9yIGZvciBlYWNoIHJl
+YWQgcmVnaXN0ZXIgYW5kIGVhY2ggd3JpdGUgcmVnaXN0ZXIuCj4KPiAqIHRoZSBkZXRlcm1pbmF0
+aW9uIG9mIHdoZW4gYSBGdW5jdGlvbiBVbml0IG1heSBwcm9jZWVkIGlzIGEgbGF1Z2hhYmx5Cj4g
+dHJpdmlhbCBOT1IgZ2F0ZSBhY3Jvc3MgYWxsICpyb3dzKiBvZiB0aGUgKkZVLUZVKiBNYXRyaXgs
+IHByb2R1Y2luZyBhCj4gcm93LWJhc2VkIHZlY3RvciwgZGV0ZXJtaW5pbmcgdGhhdCBpdCBpcyAi
+cmVhZGFibGUiIGlmIHRoZXJlIGV4aXN0cyBubwo+IHdyaXRlIGhhemFyZCBhbmQgIndyaXRhYmxl
+IiBpZiB0aGVyZSBleGlzdHMgbm8gcmVhZCBoYXphcmQuCj4KPiAqIHRoZSBUb21hc3VsbyBDb21t
+b24gRGF0YSBCdXMsIGZvcm1lcmx5IGJlaW5nIGEgc2luZ2xlIGNob2tlcG9pbnQKPiBiaW5hcnkt
+YWRkcmVzc2luZyBnbG9iYWwgQnVzLCBtYXkgbm93IGJlIHVwZ3JhZGVkIHRvICpNVUxUSVBMRSog
+Q29tbW9uIERhdGEKPiBCdXNlcyB0aGF0LCBiZWNhdXNlIHRoZSBhZGRyZXNzaW5nIGluZm9ybWF0
+aW9uIGFib3V0IHJlZ2lzdGVycyBpcyBub3cgaW4KPiB1bmFyeSwgaXMgbGlrZXdpc2UgbGF1Z2hh
+Ymx5IHRyaXZpYWwgdG8gdXNlIGNhc2NhZGluZyBQcmlvcml0eSBQaWNrZXJzIChhCj4gbm1pZ2Vu
+IFByaW9yaXR5RW5jb2RlciBhbmQgRGVjb2RlciwgYmFjay10by1iYWNrKSB0byBkZXRlcm1pbmUg
+d2hpY2gKPiBGdW5jdGlvbiBVbml0IHNoYWxsIGJlIGdyYW50ZWQgYWNjZXNzIHRvIHdoaWNoIENE
+QiBpbiBvcmRlciB0byByZWNlaXZlIChvcgo+IHNlbmQpIGl0cyBvcGVyYW5kIChvciByZXN1bHQp
+Lgo+Cj4gKiBtdWx0aS1pc3N1ZSBhcyBpIG1lbnRpb25lZCBhIGZldyB0aW1lcyBpcyBhbiBlcXVh
+bGx5IGxhdWdoYWJseSB0cml2aWFsCj4gbWF0dGVyIG9mIHRyYW5zaXRpdmVseSBjYXNjYWRpbmcg
+dGhlIFJlZ2lzdGVyIERlcGVuZGVuY3kgSGF6YXJkcyAoYm90aCByZWFkCj4gYW5kIHdyaXRlKSBh
+Y3Jvc3MgZnV0dXJlIGluc3RydWN0aW9ucyBpbiB0aGUgc2FtZSBtdWx0aSBpc3N1ZSBleGVjdXRp
+b24KPiB3aW5kb3cuIGluc3RyMiBoYXMgaW5zdHIxIEFORCBpbnN0cjIncyBoYXphcmRzLiAgaW5z
+dHIzIGhhcyBpbnN0cjEgQU5ECj4gaW5zdHIyIEFORCBpbnN0cjMncyBoYXphcmRzIGFuZCBzbyBv
+bi4gIHRoaXMganVzdCBsZWF2ZXMgdGhlIG5lY2Vzc2l0eSBvZgo+IGluY3JlYXNpbmcgcmVnaXN0
+ZXIgcG9ydCBudW1iZXJzLCBudW1iZXIgb2YgQ0RCcywgYW5kIExEL1NUIG1lbW9yeQo+IGJhbmR3
+aWR0aCB0byBjb21wZW5zYXRlIGFuZCBjb3BlIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzb3VyY2Ug
+ZGVtYW5kcyB0aGF0Cj4gd2lsbCBub3cgb2NjdXIuCj4KPiB0aGUgbGF0dGVyIGlzIHBhcnRpY3Vs
+YXJseSB3aHkgd2UgaGF2ZSBhIGRlc2lnbiB0aGF0LCB1bHRpbWF0ZWx5LCB3ZSBjb3VsZAo+IHRh
+a2Ugb24gQVJNLCBJbnRlbCwgYW5kIEFNRC4KPgo+IHRoZXJlIGlzIG5vIHJlYXNvbiB0ZWNobmlj
+YWxseSB3aHkgd2UgY291bGQgbm90IGRvIGEgNCwgNiBvciA4IG11bHRpIGlzc3VlCj4gc3lzdGVt
+LCBhbmQgd2l0aCBlbm91Z2ggRnVuY3Rpb24gVW5pdHMgYW5kIHRoZSBjeWNsaWMgYnVmZmVyIHN5
+c3RlbSAoc28gYXMKPiBub3QgdG8gcmVxdWlyZSBhIGZ1bGwgY3Jvc3NiYXIgYXQgdGhlIENvbW1v
+biBEYXRhIEJ1c2VzKSwgYW5kIHByb3Blcgo+IHN0cmF0aWZpY2F0aW9uIGFuZCBkZXNpZ24gb2Yg
+dGhlIHJlZ2lzdGVyIGZpbGVzLCBtYXNzaXZlIFZlY3RvciBwYXJhbGxlbGlzbQo+IGF0IHRoZSBw
+aXBlbGluZXMgd291bGQgYmUga2VwdCBmdWxseSBvY2N1cGllZCB3aXRob3V0IGFuIG92ZXJ3aGVs
+bWluZwo+IGluY3JlYXNlIGluIGdhdGVzIG9yIHBvd2VyIGNvbnN1bXB0aW9uIHRoYXQgd291bGQg
+bm9ybWFsbHkgYmUgZXhwZWN0ZWQsIGFuZAo+IHNjYWxhciBwZXJmb3JtYW5jZSB3b3VsZCBiZSBz
+aW1pbGFybHkgaGlnaCBhcyB3ZWxsLgo+Cj4gbC4KPgo+Cj4KPgo+IC0tCj4gLS0tCj4gY3Jvd2Qt
+ZnVuZGVkIGVjby1jb25zY2lvdXMgaGFyZHdhcmU6IGh0dHBzOi8vd3d3LmNyb3dkc3VwcGx5LmNv
+bS9lb21hNjgKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
+Xwo+IGxpYnJlLXJpc2N2LWRldiBtYWlsaW5nIGxpc3QKPiBsaWJyZS1yaXNjdi1kZXZAbGlzdHMu
+bGlicmUtcmlzY3Yub3JnCj4gaHR0cDovL2xpc3RzLmxpYnJlLXJpc2N2Lm9yZy9tYWlsbWFuL2xp
+c3RpbmZvL2xpYnJlLXJpc2N2LWRldgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
+X19fX19fX19fX19fX18KbGlicmUtcmlzY3YtZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1k
+ZXZAbGlzdHMubGlicmUtcmlzY3Yub3JnCmh0dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFp
+bG1hbi9saXN0aW5mby9saWJyZS1yaXNjdi1kZXYK
+