Re: Write-up on "tree repositories" as an alternative to conflictors
Ben Franksen <[email protected]> Sat, 19 Dec 2020 19:07:26 +0100
| Newsgroups | gmane.comp.version-control.darcs.user |
|---|---|
| Message-ID | <[email protected]> |
QW0gMTkuMTIuMjAgdW0gMDU6MDAgc2NocmllYiBKYW1lcyBDb29rOgo+PiBJbnRlcmVzdGluZyEg U28gY29ybmVycyAocG90ZW50aWFsIGNvbnRleHRzKSBoYXZlIGFuIGluaGVyZW50IHBhcnRpYWwK Pj4gb3JkZXIsIGluZGVlZCB0aGV5IGZvcm0gYSBqb2luLXNlbWlsYXR0aWNlLiBZb3UgcG9zdHVs YXRlIHRoYXQgaWYgdHdvCj4+IGNvbnRleHRzIGhhdmUgYW4gdXBwcGVyIGJvdW5kIHRoYXQgaXMg YWxzbyBhIGNvbnRleHQsIHRoZW4gdGhlIG1pbmltYWwKPj4gdXBwZXIgYm91bmQgbXVzdCBhbHNv IGJlIGEgY29udGV4dC4gSSB0aGluayB0aGUgbWF0aCB0ZXJtIHdvdWxkIGJlIHRoYXQKPj4gY29u dGV4dHMgZm9ybSBhIHN1Yi1zZW1pbGF0dGljZSBvZiB0aGUgY29ybmVycy4KPiAKPiBJIHNob3Vs ZCBjcmVkaXQgbXkgZnJpZW5kIFNyaWRoYXIgUmFtZXNoIGhlcmUuIEkgd2FzIGFza2luZyB0aGVt Cj4gd2hldGhlciB0aGVyZSdzIGEgbmFtZSBmb3Igc29tZSBwcm9wZXJ0eSBpbnZvbHZpbmcgcHVz aG91dHMsIGFuZAo+IGNhc3VhbGx5IG1lbnRpb25lZCB3ZSBtaWdodCBub3QgbmVlZCB0byBkaXN0 aW5ndWlzaCBtb3JwaGlzbXMgd2l0aCB0aGUKPiBzYW1lIGRvbWFpbiBhbmQgY29kb21haW4sIGFu ZCBTcmlkaGFyIHBvaW50ZWQgb3V0IHRoYXQncyBqdXN0IGEKPiBwcmUtb3JkZXIuCgpBYnNvbHV0 ZWx5IHJpZ2h0LiBXaHkgZGlkIEkgbm90IHNlZSB0aGlzPwoKSXQganVzdCBvY2N1cnJlZCB0byBt ZSB0aGF0IHdlIGNhbiBhbHNvIGludGVycHJldCB0aGlzIGZyb20gYSBsb2dpY2FsIC8KdHlwZSB0 aGVvcnkgUE9WLCB0aGluayBDdXJyeS1Ib3dhcmQuIEluIHRoaXMgdmlldywgYSBwYXRoIHA6cy0+ dCBpbiB0aGUKcGF0Y2ggZ3JhcGggaXMgYSBwcm9vZiBvZiB0aGUgcHJvcG9zaXRpb24gcy0+dCwg d2hpY2ggZXhwcmVzc2VzIHRoYXQgImlmCnMgaXMgYSBjb250ZXh0LCB0aGVuIHNvIGlzIHQiLCBv ciBtb3JlIGNvbmNyZXRlbHkgInMgaXMgYSBzdWJzZXQgb2YgdCIuClNlZSB0aGUgbGVtbWEgYmVs b3cuCgo+IEdvb2QgcG9pbnRzLiBTbyBub3cgd2l0aCBzb21lIHJlcGhyYXNpbmcsIHRoZSBydWxl cyBvbiB0aGUgc2V0IG9mCj4gY29udGV4dHMgYXJlOgo+IAo+IChhKSBUaGUgZW1wdHkgc2V0IGlz IGEgY29udGV4dC4KPiAKPiAoYikgSWYgYzEgYW5kIGMyIGFyZSBjb250ZXh0cywgdGhlbiBjMSDi iKkgYzIgaXMgYSBjb250ZXh0Lgo+IAo+IChjKSBJZiBjMSwgYzIsIGMzIGFyZSBjb250ZXh0cyBh bmQgYzEg4oqGIGMzIGFuZCBjMiDiioYgYzMsIHRoZW4gYzEg4oiqIGMyIGlzCj4gICAgIGEgY29u dGV4dC4KPiAKPiAoZCkgRm9yIGV2ZXJ5IG5vbi1lbXB0eSBjb250ZXh0IGMgdGhlcmUgaXMgYXQg bGVhc3Qgb25lIGVsZW1lbnQgbiBvZiBjCj4gICAgIHN1Y2ggdGhhdCBjXHtufSBpcyBhbHNvIGEg Y29udGV4dC4KClllcywgZXhhY3RseS4gV2UgdGhlbiBkZWZpbmUgYW4gL2Fic3RyYWN0IHBhdGNo LyBhcyBhIHBhaXIgKGMsbiksIHdoZXJlCmMgaXMgYSBjb250ZXh0IGFuZCBu4oiIYyBpcyBhIG5h bWU7IGFuZCB3cml0ZSAoYyxuKSA6IGNce259IC0+IGMuIENvbnRleHRzCmFuZCBwYXRjaGVzIGZv cm0gYSBjb25uZWN0ZWQgYWN5Y2xpYyBkaXJlY3RlZCBncmFwaCwgdGhlIC9wYXRjaCBncmFwaC8K b3ZlciB0aGUgc2V0IG9mIGNvbnRleHRzIEMsIGFuZCB0aGUgZmluaXRlIHBhdGhzIG9mIHN1Y2gg YSBncmFwaCBhcmUgdGhlCmFycm93cyBvZiBpdHMgZnJlZSBjYXRlZ29yeS4KCldlIGNhbiB0aGVu IHByb3ZlIGUuZy4KCkxlbW1hOiBUaGVyZSBpcyBhIHBhdGggYmV0d2VlbiB0d28gY29udGV4dHMg cyBhbmQgdCBpZiBhbmQgb25seSBpZiBzCiAgaXMgYSBzdWJzZXQgb2YgdC4gVGhlIG5hbWUgb2Yg YW55IHN1Y2ggcGF0aCBpcyB0XHMuCgogIChQcm9vZiBpcyBieSBpbmR1Y3Rpb24uIEkgY2FuIHBv c3QgdGhlIGRldGFpbHMgaWYgeW91IGFyZSBpbnRlcmVzdGVkLikKCndpdGggY29yb2xsYXJpZXMg c3VjaCBhczoKCkNvcm9sbGFyeTogRm9yIGVhY2ggY29udGV4dCBjIHRoZXJlIGlzIGEgcGF0aCBw OjAtPmMuCgpDb3JvbGxhcnk6IEZvciBhbnkgcGF0aCBwLCB8cHw9fG5hbWUocCl8LiBJbiBvdGhl ciB3b3JkcywgdGhlIG5hbWVzCiAgb2N1cnJpbmcgaW4gYSBwYXRoIGFyZSB1bmlxdWUuCgpDb3Jv bGxhcnk6IEZvciBhbnkgdHdvIGNvbnRleHRzIHMsIHQsIGFsbCBwYXRocyBwOnMtPnQgaGF2ZSB0 aGUgc2FtZQogIG5hbWUgYW5kIGxlbmd0aC4KCj4+IEFub3RoZXIgaW50ZXJlc3Rpbmcgb2JzZXJ2 YXRpb24gaXMgdGhhdCB3ZSBjYW4gcmVnYXJkIGEgbmFtZSBhcyBhCj4+IHBhcnRpYWwgYmlqZWN0 aW9uIGJldHdlZW4gY29udGV4dHMuIFRoZSBhY3Rpb24gb2YgdGhlIGZ1bmN0aW9uIGlzIHRvIGFk ZAo+PiB0aGUgbmFtZSB0byB0aGUgY29udGV4dCBhbmQgaXRzIGludmVyc2UgaXMgdG8gcmVtb3Zl IGl0LiBJdHMgZG9tYWluIGFuZAo+PiByYW5nZSBhcmUgZ2l2ZW4gYnkKPj4KPj4gICBkb21haW4o bik9e2PiiIhDfG7iiIljIGFuZCBj4oiqe2594oiIQ30sIHJhbmdlKG4pPXtj4oiIQ3xu4oiIYyBh bmQgY1x7bn3iiIhDfQo+Pgo+PiBUaGUgcmVhc29uIEkgZmluZCB0aGlzIGludGVyZXN0aW5nIGlz IHRoYXQgaXQgaGludHMgYXQgYSBwb3NzaWJpbGl0eSB0bwo+PiByZS1pbnRyb2R1Y2UgL2NvbmNy ZXRlLyBwYXRjaGVzICh0aGF0IGlzLCAvcGF0Y2ggY29udGVudC8pIGludG8gdGhlCj4+IHBpY3R1 cmUuIENvbmNyZXRlIChwcmltaXRpdmUpIHBhdGNoZXMgY2FuIGJlIHNlZW4gYXMgcGFydGlhbCBi aWplY3Rpb25zCj4+IG9uIGEgc2V0IFMgb2Ygc3RhdGVzLCByZXByZXNlbnRlZCBhcyBkYXRhLgo+ IAo+IEknbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQuIEkgZ3Vlc3MgYSBzdGF0ZSBpcyB0aGUgY29u dGVudCBvZiB0aGUgZmlsZXMKPiBpbiB0aGUgcmVwb3NpdG9yeS4KClBsdXMgdGhlIGRpcmVjdG9y eSBzdHJ1Y3R1cmUuIE9uZSBjb25jcmV0ZSByZXByZXNlbnRhdGlvbiBvZiBzdGF0ZXMgaXMKdGhl ICdUcmVlJyB0eXBlIGluIERhcmNzLCBzZWUKaHR0cHM6Ly9odWIuZGFyY3MubmV0L2RhcmNzL2Rh cmNzLXNjcmVlbmVkL2Jyb3dzZS9zcmMvRGFyY3MvVXRpbC9UcmVlLmhzIzU5CnVwIHRvIGxpbmUg ODQuCgo+IEFueSBjb25jcmV0ZSBwYXRjaCBoYXMgZXhhY3RseSBvbmUgc3RhcnQgc3RhdGUgYW5k Cj4gb25lIGVuZCBzdGF0ZS4KCk5vdCBhdCBhbGwuIFVubmFtZWQgcHJpbSBwYXRjaGVzIGNhbiBi ZSBhcHBsaWVkIHRvIG1hbnkgc3RhdGVzLCBpbmRlZWQKdGhlIGRvbWFpbiBpcyBhbHdheXMgaW5m aW5pdGUuIEZvciBpbnN0YW5jZSB0aGUgZG9tYWluIG9mICJhZGRmaWxlIC4vZiIKaXMgdGhlIHNl dCBvZiBhbGwgdHJlZXMgd2hpY2ggZG8gbm90IGhhdmUgIi4vZiIgYXMgZWl0aGVyIGZpbGUgb3IK ZGlyZWN0b3J5LiBJdHMgY29kb21haW4gaXMgdGhlIHNldCBvZiBhbGwgdHJlZXMgdGhhdCBkbyBo YXZlICIuL2YiIGFzIGEKZmlsZS4gSXRzIGludmVyc2UgaXMgInJtZmlsZSAuL2YiIHdpdGggZG9t YWluIGFuZCBjb2RvbWFpbiBzd2FwcGVkLgoKPiBEbyB5b3UgbWVhbiB0aGF0IGl0J3MgYSBwYXJ0 aWFsIGJpamVjdGlvbiB3aGVyZSB0aGUKPiBkb21haW4gYW5kIHJhbmdlIGFyZSBib3RoIHNldHMg b2Ygc2l6ZSAxPwoKTm8sIHNlZSBhYm92ZS4KCj4gRS5nLiBzdXBwb3NlIHRoZSBjb25jcmV0ZSBw YXRjaCBQIGlzOgo+IAo+IGh1bmsgLi9maWxlLnR4dCAyCj4gK3dvcmxkCj4gCj4gYW5kIGluIHRo ZSBjb250ZXh0IG9mIHAsIGZpbGUudHh0IGhhcyBqdXN0IG9uZSBsaW5lICJIZWxsbyIuCj4gSSBn dWVzcyBpdCdzIHRlbXB0aW5nIHRvIHRoaW5rIG9mIHAgYXMgdGhlIGZvbGxvd2luZyBwYXJ0aWFs IGJpamVjdGlvbgo+IGY6IGYgYWx3YXlzIGluc2VydHMgdGhlIGxpbmUgIndvcmxkIiBhZnRlciB0 aGUgZmlyc3QgbGluZSBvZiBmaWxlLnR4dC4KClRoaXMgaXMgZXhhY3RseSBob3cgdGhlIGFib3Zl IGh1bmsgaXMgaW50ZXJwcmV0ZWQgaW4gRGFyY3MuCgo+IEJ1dCB0aGF0J3Mgbm90IHJlYWxseSBh IHVzZWZ1bCByZXByZXNlbnRhdGlvbiBvZiBwOyBlLmcuIGl0IGRvZXNuJ3QKPiB3b3JrIGlmIHAg Z2V0cyBjb21tdXRlZCB0byBhIGRpZmZlcmVudCBjb250ZXh0LgoKV2h5IG5vdD8gSWYgeW91IGNv bW11dGUgdGhlIHBhdGNoIHRvIGEgZGlmZmVyZW50IGNvbnRleHQgdGhlbiBpdHMgZG9tYWluCmFu ZCBjb2RvbWFpbiB1c3VhbGx5IGNoYW5nZSwgdG9vLiBJIHdvdWxkIGV4cGVjdCBub3RoaW5nIGxl c3MuCgpCdXQgcGVyaGFwcyB3aGF0IHlvdSBtZWFuIGlzIHRoYXQgaXQgaXMgbm90IGEgdXNlZnVs IC9nZW5lcmljLwpkZXNjcmlwdGlvbiBvZiAid2hhdCB0aGUgcGF0Y2ggZG9lcyIgL2luZGVwZW5k ZW50LyBvZiBjb21tdXRhdGlvbi4gVGhpcwppcyB0cnVlLiBJZiB3ZSBoYWQgYSByZXByZXNlbnRh dGlvbiBvZiBjb25jcmV0ZSBwYXRjaGVzIHRoYXQgaXMgdHJ1bHkKY29udGV4dCBpbmRlcGVuZGVu dCwgdGhlbiBhIGxvdCBvZiBwcm9ibGVtcyBjb3VsZCBiZSBzb2x2ZWQgcXVpdGUKZWFzaWx5LCBz ZWUgUGlqdWwuIEluIHBhcnRpY3VsYXIsIEkgdGhpbmsgd2Ugd291bGQgbm90IG5lZWQgbmFtZXMg Zm9yCnBhdGNoZXMuCgo+IFNvIHRvIG1lIGl0IG1ha2VzIG1vcmUKPiBzZW5zZSB0byBqdXN0IHNh eSB0aGF0IGNvbmNyZXRlbHksIHAgaXMgdGhlIHBhaXIgKCJIZWxsb1xuIiwKPiAiSGVsbG9cbndv cmxkXG4iKS4KCkl0IGlzIGNlcnRhaW5seSBwb3NzaWJsZSB0byBkZWZpbmUgaHVua3MgaW4gdGhp cyB3YXkuIEluIERhcmNzLCBzbwpjYWxsZWQgYmluYXJ5IHBhdGNoZXMgYXJlIGRlZmluZWQgaW4g dGhpcyB3YXk6IHRoZXkgY29udGFpbiB0aGUgb2xkCmNvbnRlbnQgYW5kIHRoZSBuZXcgY29udGVu dC4KCkhvd2V2ZXIsIGV2ZW4gaWYgeW91IGRvIHRoYXQsIHlvdXIgaHVua3MgYXJlIHN0aWxsICJw b2x5bW9ycGhpYyIKcmVsYXRpdmUgdG8gdGhlICJyZXN0IG9mIHRoZSB0cmVlIi4gQW5kIGNvbW11 dGluZyBzdWNoIGEgaHVuayB3aXRoIGEKZmlsZSByZW5hbWUgcGF0Y2ggbWF5IHN0aWxsIGhhdmUg dG8gbW9kaWZ5IHRoZSBodW5rLgoKPiBJIGd1ZXNzIHRoaXMgaXMgYSBsb25nLXdpbmRlZCB3YXkg dG8ganVzdCBzYXkgSSdtIG5vdCBzdXJlIHdoYXQgeW91Cj4gbWVhbiBieSBjb25jcmV0ZSBwYXRj aGVzIGJlaW5nIGJpamVjdGlvbnMuCgpBcyBleHBsYWluZWQgYWJvdmUsIGZvciBlYWNoIGtpbmQg b2YgcHJpbSBwYXRjaCBpbiBEYXJjcyAoaHVuaywgYmluYXJ5LAphZGRmaWxlLCBldGMuLi4gYnV0 IHBsZWFzZSBpZ25vcmUgc2V0cHJlZiBwYXRjaGVzKSBvbmUgY2FuIHByZWNpc2VseQpkZWZpbmUg dGhlIHNldCBvZiB0cmVlcyB0aGF0IGFyZSB0aGVpciBkb21haW4gYW5kIGNvZG9tYWluIGFuZCB0 aGV5IGFyZQpkZXNpZ25lZCBzbyB0aGF0IHRoZSBwYXJ0aWFsIGZ1bmN0aW9uIGRlZmluZWQgYnkg YXBwbHlpbmcgdGhlIHBhdGNoIGlzCmluamVjdGl2ZSBhbmQgdGh1cyBjYW4gYmUgaW52ZXJ0ZWQu Cgo+IEkgZ3Vlc3MgeW91J2Qgd2FudCB0byBiZSBhYmxlIHRvIGNvbW11dGUgY29uY3JldGUgcGF0 Y2hlcyB3aXRob3V0Cj4gYWNjZXNzIHRvIGFueSBpbmZvcm1hdGlvbiBvdGhlciB0aGFuIHRob3Nl IHR3byBwYXRjaGVzJwo+IHJlcHJlc2VudGF0aW9ucy4gRG9lcyB5b3VyIGRlZmluaXRpb24gY2Fw dHVyZSB0aGF0PwoKQWJzb2x1dGVseS4gVGhlIGZ1bGwgY29tbXV0ZSBjb2RlIGZvciBEYXJjcycg cHJpbSBwYXRjaGVzIGlzIGhlcmU6Cmh0dHBzOi8vaHViLmRhcmNzLm5ldC9kYXJjcy9kYXJjcy1z Y3JlZW5lZC9icm93c2Uvc3JjL0RhcmNzL1BhdGNoL1ByaW0vVjEvQ29tbXV0ZS5ocy4KSXQgY291 bGQgdXNlIGEgYml0IG9mIHN0cmVhbWxpbmluZyBidXQgSSB0aGluayB0aGUgb3ZlcmFsbCBwaWN0 dXJlIG9mCmhvdyBjb21tdXRhdGlvbiB3b3JrcyBvbiBwcmltIHBhdGNoZXMgaXMgcmVjb2duaXph YmxlLgoKPj4gSGVyZSwgdG9vLCB3ZSBjYW4gZ2VuZXJhbGl6ZQo+PiB0byBmaW5pdGUgc2VxdWVu Y2VzIG9mIHBhdGNoZXMsIHdoaWNoIHRoZW4gbmF0dXJhbGx5IGZvcm0gYSBjYXRlZ29yeSwKPj4g YW5kIHRoZXJlIGlzIGEgKG5vbi1pbmplY3RpdmUpIGZ1bmN0b3IgKHRoZSAiYXBwbHkiIGZ1bmN0 b3IpIGZyb20gdGhhdAo+PiBjYXRlZ29yeSB0byB0aGUgZ3JvdXBvaWQgb2YgcGFydGlhbCBiaWpl Y3Rpb25zIG9uIHN0YXRlcyB0aGF0IG1hcHMKPj4gY29uY2F0ZW5hdGlvbiB0byBmdW5jdGlvbiBj b21wb3NpdGlvbi4KPj4KPj4gV2UgbWF5IHdhbnQgdG8gc3R1ZHkgZnVuY3RvcnMgZnJvbSBhbiBh YnN0cmFjdCBwYXRjaCB0aGVvcnkgdG8gYQo+PiBjb25jcmV0ZSBvbmUuCj4gCj4gVGhhdCdzIG5l YXQuCgpXZSdsbCBzZWUuIEkgYW0gdHJ5aW5nIHRvIG1ha2UgdGhpcyBtb3JlIGNvbmNyZXRlIGJ1 dCBpdCdzIGRpZmZpY3VsdC4KCj4+IEEgZnVuY3RvciBtYXBzIGJvdGggb2JqZWN0cyBhbmQgYXJy b3dzLiBGb3Igb2JqZWN0cywKPj4gRjpDLT5TIGFzc29jaWF0ZXMgYSBjb25jcmV0ZSBzdGF0ZSB0 byBlYWNoIGNvbnRleHQgKHRoaXMgbWFwcGluZyBpcyBhbHNvCj4+IG5vdCBuZWNlc3NhcmlseSBp bmplY3RpdmUpLiBGb3IgYXJyb3dzIGl0IGFzc29jaWF0ZXMgdG8gZWFjaCBwYXRoIHA6cy0+dAo+ PiBhIGNvbmNyZXRlIHBhdGNoIEYocCk6RihzKS0+Rih0KS4gVGhlIGZ1bmN0b3IgbGF3cyBzYXkg dGhhdAo+PiBGKGlkX2MpPWlkX0YoYykgYW5kIHRoYXQgRihwO3EpPUYocCk7RihxKS4KPiAKPiBT byB0aGUgcGF0Y2ggaXMgYW4gYXJyb3cgam9pbmluZyB0d28gc3RhdGVzPyBUaGlzIGlzIG1vcmUg aW4gbGluZSB3aXRoCj4gbXkgdmlldyBhYm92ZSB0aGF0IGEgcGF0Y2ggaXMgYSBwYWlyIG9mIHN0 YXRlcy4KClJpZ2h0LiBJIHdhcyBjb25mdXNlZCB3aGVuIEkgd3JvdGUgdGhhdC4gRm9yIGNvbmNy ZXRlIHBhdGNoZXMgKG9yCnNlcXVlbmNlcyB0aGVyZW9mKSBzb3VyY2UgYW5kIHRhcmdldCBhcmUg c2V0cyBvZiBzdGF0ZXMsIG5vdCBzdGF0ZXMuCgo+PiBUaGlzIGRvZXMgbm90IGEgcHJpb3JpIG1l YW4gdGhhdCBlYWNoIGFic3RyYWN0IC9wYXRjaC8gKHNpbmdsZXRvbiBwYXRoKQo+PiBtYXBzIHRv IGEgY29uY3JldGUgcGF0Y2gsCj4gCj4gRG9lc24ndCBpdCwgaWYgYSBjb25jcmV0ZSBwYXRjaCBp cyBqdXN0IGEgcGFpciBvZiBzdGF0ZXM/IEJ1dCBJIGd1ZXNzIEkKPiBkb24ndCByZWFsbHkga25v dyB3aGF0IHlvdSBtZWFuIGJ5IGNvbmNyZXRlIHBhdGNoLgoKSSBtZWFuIGEgY29uY3JldGUgcmVw cmVzZW50YXRpb24gYXMgZGF0YSBvZiBhIHBhcnRpYWwgYmlqZWN0aW9uIG9uCnN0YXRlcy4gTGlr ZSB0aGUgRGFyY3MgVjEgcHJpbSBwYXRjaGVzLgoKPj4gc28gSSBndWVzcyB3ZSBoYXZlIHRvIHJl cXVpcmUgdGhhdCwgaW4KPj4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIGZ1bmN0b3IgbGF3cy4gVGhl cmUgbWF5IGJlIGEgZmV3IG1vcmUgZXh0cmEKPj4gcmVxdWlyZW1lbnRzIHRoYXQgd2Ugd2FudCB0 byBpbXBvc2UuIEZvciBpbnN0YW5jZSwgSSBndWVzcyB3ZSBuZWVkIHNvbWUKPj4gc29ydCBvZiBj b25zaXN0ZW5jeSByZXF1aXJlbWVudCB0aGF0IHJlbGF0ZXMgY29tbXV0YXRpb24gaW4gdGhlIGFi c3RyYWN0Cj4+IHNldHRpbmcgdG8gdGhhdCBpbiB0aGUgY29uY3JldGUgc2V0dGluZy4gTmVlZGxl c3MgdG8gc2F5LCBJIGhhdmVuJ3QKPj4gdGhvdWdodCB0aGVzZSB0aGluZ3MgdGhyb3VnaCB0byB0 aGUgZW5kLCBzbyBJIGNhbid0IHRlbGwgeWV0IGlmIGl0IGhhcwo+PiBhbnkgcHJhY3RpY2FsIHJl bGV2YW5jZS4KPiAKPj4gVGhpcyB2YXJpYW50IG9mIGFic3RyYWN0IHBhdGNoIHRoZW9yeSBoYXMg Y2xlYW4gbWVyZ2UgYW5kIHVubWVyZ2UgKG9mCj4+IGNvbnRleHRzKSBhbHJlYWR5IGJ1aWx0LWlu LCBzbyB0byBzcGVhaywgc2luY2UgbWVyZ2luZyBpcyBqdXN0IHRha2luZwo+PiB0aGUgdW5pb24g YW5kIHVubWVyZ2luZyBpcyB0YWtpbmcgdGhlIGludGVyc2VjdGlvbi4gSSBmaW5kIGl0Cj4+IGlu dGVyZXN0aW5nIHRvIG5vdGUgdGhhdCBhZGRpbmcgY29uZmxpY3RvcnMgYSBsYSBEYXJjcyBtZWFu cyB0aGF0IHdlCj4+IGVubGFyZ2UgdGhlIHNldCBvZiBjb250ZXh0cyBieSBhZGRpbmcgL2NvbmZs aWN0ZWQgc3RhdGVzLywgd2hpY2ggYXJlCj4+IHRob3NlIGNvcm5lcnMgdGhhdCB3ZSBnZXQgKGlu IGFkZGl0aW9uIHRvIHRoZSBub3JtYWwgdW5jb25mbGljdGVkCj4+IGNvbnRleHRzKSBpZiB3ZSBh bGxvdyBhcmJpdHJhcnkgdW5pb25zIG9mIGNvbnRleHRzLiBTZWVuIGluIHRoaXMgd2F5LAo+PiBj b25mbGljdG9ycyBhcHBlYXIgcXVpdGUgbmF0dXJhbCBhbmQgc2ltcGxlLCBjb25jZXB0dWFsbHkg YXQgbGVhc3QuCj4gCj4gKFJlcGx5aW5nIHRvIHRoaXMgbGFzdCBzaW5jZSBpdCBkZXBlbmRzIG9u IG1vcmUgY29udGV4dC4pCj4gCj4gVG8gbWFrZSB0aGlzIHBvaW50IG9mIHZpZXcgd29yaywgSSBn dWVzcyB5b3Ugd291bGQgd2FudCB0byBleHRlbmQgdGhlCj4gZnVuY3RvciBzbyB0aGF0IHRoZSBj b25mbGljdGVkIGNvbnRleHRzIGFsc28gbWFwIHRvIGNvbmNyZXRlIHN0YXRlcyAtLS0KClllcywg bW9kdWxvICJzdGF0ZSAtPiBzZXRzIG9mIHN0YXRlcyIuCgo+IHRoaXMgZGV0ZXJtaW5lcyB3aGF0 IHN0YXRlIERhcmNzIGxlYXZlcyB0aGUgcmVwbyBpbiB3aGVuIHRoZXJlIGFyZQo+IGNvbmZsaWN0 aW5nIHBhdGNoZXMgKGlmIHlvdSBsZWF2ZSBvdXQgdGhlIGNvbmZsaWN0IG1hcmtlcnMpLgoKWWVz LgoKPiBBbmQKPiBzaW1pbGFybHkgeW91J2Qgd2FudCB0byBleHRlbmQgY29uY3JldGUgcmVwcmVz ZW50YXRpb25zIG9mIHBhdGNoZXMuCgpZZXMuIFRoYXQncyB0aGUgaWRlYS4KCj4gSSdtIG5vdCBz dXJlIHdoYXQgcnVsZXMgY29uc3RyYWluIHVzIGhlcmUuIEUuZy4gSSBjb3VsZCBqdXN0IGRlY2xh cmUKPiB0aGF0IGFueSAiY29uZmxpY3RlZCIgY29udGV4dCBtYXBzIHRvIHRoZSBlbXB0eSBmaWxl c2V0LCBidXQgd291bGQgdGhhdAo+IHdvcmsgb3V0PyBJIGd1ZXNzIHRoZSBoYXJkIHBhcnQgaXMg ZmlndXJpbmcgb3V0IHdoYXQgaG93IHRoZSBjb25jcmV0ZQo+IHBhdGNoZXMgd29yayAoZm9yIGV4 YW1wbGUsIGhvdyB5b3UgY2FuIGNvbW11dGUgdGhlbSB3aXRob3V0IGFjY2VzcyB0bwo+IGFueXRo aW5nIGJ1dCB0aGUgdHdvIHBhdGNoIHJlcHJlc2VudGF0aW9ucykuCgpJbmRlZWQuIFRoaXMgaXMg dGhlIHJlYXNvbiB3aHkgdGhlIGNvbmZsaWN0b3IgY29tbXV0ZSBhbmQgbWVyZ2UgY29kZSBpcwpo aWdobHkgbm9uLXRyaXZpYWwuIEEgY29tcGxpY2F0aW5nIGZhY3RvciBpcyB0aGF0IGEgY2xlYW4g ZGVmaW5pdGlvbiBvZgpjb25mbGljdG9ycyBjYW5ub3QgYmUgYmFzZWQgb24gcHJpbSBwYXRjaGVz IGFsb25lLCB0aGV5IGhhdmUgdG8gYmUKL25hbWVkLyBwcmltIHBhdGNoZXMuIEhvdyB0byByZXNv bHZlIHRoaXMgdGVuc2lvbiBpcyBzdGlsbCBsYXJnZWx5IHVuY2xlYXIuCgpJIHRoaW5rIHRoZSBj b25zdHJhaW50cyBhcmUgdGhlIHVzdWFsIG9uZXM6IHRoZSBtZXJnZSBhbmQgY29tbXV0ZSBsYXdz LAppbiBwYXJ0aWN1bGFyIHBlcm11dGl2aXR5LiBFLmcuIHRoZSBmaXJzdCB0aGluZyB5b3UgbmVl ZCB0byBlbnN1cmUgaXMKdGhhdCBpZiB5b3UgbWVyZ2UgcFwvcSB0byBxJy9ccCcsIHRoZW4gcDtx JyBjb21tdXRlcyB0byBxO3AnLCBldmVuIGlmIHAnCmFuZCBxJyBhcmUgY29uZmxpY3RlZC4KCj4g VGhpcyByZW1pbmRzIG1lIG9mIHRoZSBmdW5jdGlvbiBJIGJ1aWx0IHRoYXQgbWFwcGVkIGV2ZXJ5 Cj4gcHNldWRvLWNvbnRleHQgdG8gYSBwcmltaXRpdmUgY29udGV4dCwgd2hlbiBJIHdhcyB3b3Jr aW5nIG9uIG1ha2luZyBhbgo+IGFyYml0cmFyeSBwcmltaXRpdmUgcGF0Y2ggdGhlb3J5IGNvbW11 dGUuIElmIHRoZSBhYm92ZSBjb3VsZCBiZQo+IGV4dGVuZGVkIHRvIHRoZSBlbnRpcmUgaHlwZXJj dWJlIChyYXRoZXIgdGhhbiBqdXN0IGFyYml0cmFyeSB1bmlvbnMgb2YKPiBjb250ZXh0cykgdGhl biBJIGd1ZXNzIHdlIHdvdWxkIGhhdmUgYXJyaXZlZCBhdCBteSBvcmlnaW5hbCBnb2FsIG9mCj4g bWFraW5nIGEgcGF0Y2ggdGhlb3J5IHdoZXJlIHBhdGNoZXMgYWx3YXlzIGNvbW11dGUuIChBdCB0 aGlzIHBvaW50IEknbQo+IG5vdCBzdXJlIGhvdyB1c2VmdWwgdGhhdCBpcy4pCgpZZXMgKHRvIGFs bCB5b3Ugc2FpZCBpbiB0aGF0IHBhcmFncmFwaCkuCgpDaGVlcnMKQmVuCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkYXJjcy11c2VycyBtYWlsaW5nIGxp c3QKZGFyY3MtdXNlcnNAb3N1b3NsLm9yZwpodHRwczovL2xpc3RzLm9zdW9zbC5vcmcvbWFpbG1h bi9saXN0aW5mby9kYXJjcy11c2Vycwo=