From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C836D7F8A for ; Tue, 23 Feb 2016 04:58:41 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id F2734AC002 for ; Tue, 23 Feb 2016 02:58:34 -0800 (PST) Received: from mail-wm0-f43.google.com (mail-wm0-f43.google.com [74.125.82.43]) by cuda.sgi.com with ESMTP id oDGgu0kQAlxrtPvA (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for ; Tue, 23 Feb 2016 02:58:28 -0800 (PST) Received: by mail-wm0-f43.google.com with SMTP id c200so214095398wme.0 for ; Tue, 23 Feb 2016 02:58:28 -0800 (PST) Subject: Re: richacl(7) man page review comments References: <56B770B6.7040803@gmail.com> <56B77262.7090107@gmail.com> <56C0F23C.7030902@gmail.com> <56CA2EEB.9080504@gmail.com> From: "Michael Kerrisk (man-pages)" Message-ID: <56CC3B4A.7070204@gmail.com> Date: Tue, 23 Feb 2016 11:58:18 +0100 MIME-Version: 1.0 In-Reply-To: List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: Andreas Gruenbacher Cc: Andreas Dilger , linux-cifs@vger.kernel.org, Linux NFS Mailing List , Christoph Hellwig , Linux API , Trond Myklebust , lkml , XFS Developers , "J. Bruce Fields" , mtk.manpages@gmail.com, linux-fsdevel , Jeff Layton , linux-ext4 , Anna Schumaker SGkgQW5kcmVhcywKCk9uIDAyLzIyLzIwMTYgMDM6NDYgUE0sIEFuZHJlYXMgR3J1ZW5iYWNoZXIg d3JvdGU6Cj4gSGkgTWljaGFlbCwKPiAKPiBPbiBTdW4sIEZlYiAyMSwgMjAxNiBhdCAxMDo0MCBQ TSwgTWljaGFlbCBLZXJyaXNrIChtYW4tcGFnZXMpCj4gPG10ay5tYW5wYWdlc0BnbWFpbC5jb20+ IHdyb3RlOgo+PiBJJ3ZlIG9uY2UgbW9yZSBwdWxsZWQgZnJvbSB0aGUgbGF0ZXN0IGdpdDsgaGVy ZSdzIHNvbWUgbW9yZSBjb21tZW50cy4KPiAKPiB0aGFua3MgYWdhaW4uIEkndmUgdXBkYXRlZCB0 aGUgcmVwbyB3aXRoIHlvdXIgY2hhbmdlcy4KCk5leHQgcm91bmQgOi0pLiBKdXN0IGEgZmV3IHF1 aWNrIGNvbW1lbnRzIHdoaWxlIEknbSBvbiBhIHRyYWluIHJpZGUuCgo+IC5cIgo+IC5cIiBSaWNo QUNMIE1hbnVhbCBQYWdlcwo+IC5cIgo+IC5cIiBDb3B5cmlnaHQgKEMpIDIwMTUsMjAxNiAgUmVk IEhhdCwgSW5jLgo+IC5cIiBXcml0dGVuIGJ5IEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbmJh QHJlZGhhdC5jb20+Cj4gLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiAuXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKPiAuXCIgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKPiAuXCIgdGhlIExp Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gLlwiCj4gLlwi IFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBj b2RlIgo+IC5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhl IG91dHB1dCBvZiBhbnkKPiAuXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBz eXN0ZW0sIGluY2x1ZGluZwo+IC5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0Lgo+ IC5cIgo+IC5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAo+IC5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+IC5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gLlwiIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gLlwiCj4gLlwiIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwo+IC5cIiBMaWNl bnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQo+IC5cIiA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gLlwiCj4gLmRlIFVSTAo+IFxcJDIgXChsYVVSTDogXFwk MSBcKHJhXFwkMwo+IC4uCj4gLmlmIFxuWy5nXSAubXNvIHd3dy50bWFjCj4gLlRIIFJJQ0hBQ0wg NyAyMDE1LTA5LTAxICJMaW51eCIgIlJpY2ggQWNjZXNzIENvbnRyb2wgTGlzdHMiCj4gLlNIIE5B TUUKPiByaWNoYWNsIFwtIFJpY2ggQWNjZXNzIENvbnRyb2wgTGlzdHMKPiAuU0ggREVTQ1JJUFRJ T04KPiBSaWNoIEFjY2VzcyBDb250cm9sIExpc3RzIChSaWNoQUNMcykgYXJlIGFuIGV4dGVuc2lv biBvZiB0aGUgUE9TSVggZmlsZQo+IHBlcm1pc3Npb24gbW9kZWwgKHNlZQo+IC5CUiBhY2wgKDUp KQo+IHRvIHN1cHBvcnQKPiAuVVJMIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvcmZjL3JmYzU2NjEu dHh0ICJORlN2NCBBY2Nlc3MgQ29udHJvbCBMaXN0cyIKPiBvbiBsb2NhbCBhbmQgcmVtb3RlLW1v dW50ZWQgZmlsZXN5c3RlbXMuCj4gCj4gQSBSaWNoQUNMIGNhbiBhbHdheXMgYmUgdHJhbnNsYXRl ZCBpbnRvIGFuIGVxdWl2YWxlbnQgTkZTdjQgQUNMIHdoaWNoIGdyYW50cwo+IHRoZSBzYW1lIHBl cm1pc3Npb25zLgo+IAo+IFJpY2hBQ0xzIGNhbiBiZSBlbmFibGVkIG9uIHN1cHBvcnRlZCBsb2Nh bCBmaWxlc3lzdGVtcyAoY3VycmVudGx5LCBleHQ0IGFuZAo+IFhGUykuICBUaGUgaW4ta2VybmVs IE5GU3Y0IHNlcnZlciBhbmQgY2xpZW50IGFsc28gaW5jbHVkZSBSaWNoQUNMIHN1cHBvcnQuCj4g Cj4gRW5hYmxpbmcgUmljaEFDTHMgZGlzYWJsZXMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHM7 IHRoZSB0d28gQUNMIG1vZGVscwo+IGNhbm5vdCBjb2V4aXN0IG9uIHRoZSBzYW1lIGZpbGVzeXN0 ZW0uCj4gCj4gV2hlbiB1c2VkIG9uIGEgZmlsZXN5c3RlbSB0aGF0IGRvZXMgbm90IHN1cHBvcnQg UmljaEFDTHMsIHRoZQo+IC5CUiBnZXRyaWNoYWNsICgxKQo+IGFuZAo+IC5CUiBzZXRyaWNoYWNs ICgxKQo+IHV0aWxpdGllcyB3aWxsIG9wZXJhdGUgb24gdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRz IGluc3RlYWQ6Cj4gLkJSIGdldHJpY2hhY2wgKDEpCj4gd2lsbCBkaXNwbGF5IHRoZSBmaWxlIHBl cm1pc3Npb24gYml0cyBhcyBhIFJpY2hBQ0w7IHdoZW4gYSBSaWNoQUNMCj4gaXMgc2V0IHdpdGgK PiAuQlIgc2V0cmljaGFjbCAoMSkKPiB3aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgZXhhY3RseSBi eSB0aGUgZmlsZSBwZXJtaXNzaW9uIGJpdHMsCj4gLkJSIHNldHJpY2hhY2wgKDEpCj4gd2lsbCBz ZXQgdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzIGluc3RlYWQuICBBbiBhdHRlbXB0IHRvIHNldCBh IFJpY2hBQ0wgdGhhdAo+IGNhbm5vdCBiZSByZXByZXNlbnRlZCBleGFjdGx5IGJ5IHRoZSBmaWxl IHBlcm1pc3Npb24gYml0cyByZXN1bHRzIGluIGFuIGVycm9yLgo+IAo+IC5TUyBTdHJ1Y3R1cmUg b2YgUmljaEFDTHMKPiAKPiBSaWNoQUNMcyBjb25zaXN0IG9mIGEgbnVtYmVyIG9mIEFDTCBlbnRy aWVzLCB0aHJlZSBmaWxlIG1hc2tzLCBhbmQgYSBzZXQgb2YKPiBmbGFncyBzcGVjaWZ5aW5nIGF0 dHJpYnV0ZXMgb2YgdGhlIEFDTCBhcyBhIHdob2xlIChieSBjb250cmFzdCB3aXRoIHRoZQo+IHBl ci1BQ0wtZW50cnkgZmxhZ3MgZGVzY3JpYmVkIGJlbG93KS4KPiAKPiBFYWNoIG9mIHRoZSBBQ0wg ZW50cmllcyBhbGxvd3Mgb3IgZGVuaWVzIHNvbWUgcGVybWlzc2lvbnMgdG8gYSBwYXJ0aWN1bGFy IHVzZXIsCj4gZ3JvdXAsIG9yIHNwZWNpYWwgaWRlbnRpZmllci4gQW4gQUNMIGVudHJ5IGNvbnNp c3RzIG9mIGZvdXIgZmllbGRzOgo+IAo+IC5JUCBcKGJ1IDIKPiBBIHRhZyB3aGljaCBzcGVjaWZp ZXMgdGhlIHVzZXIsIGdyb3VwLCBvciBzcGVjaWFsIGlkZW50aWZpZXIgdGhlIGVudHJ5IGFwcGxp ZXMKPiB0by4gIFNwZWNpYWwgaWRlbnRpZmllcnMgY2FuIGJlIHRoZSBmaWxlIG93bmVyCj4gLlJC ICggb3duZXJAICksCj4gdGhlIG93bmluZyBncm91cAo+IC5SQiAoIGdyb3VwQCApLAo+IG9yIGV2 ZXJ5b25lCj4gLlJCICggZXZlcnlvbmVAICkuCj4gLklQIFwoYnUKPiBBIHNldCBvZiBwZXJtaXNz aW9ucyB0aGUgZW50cnkgYWxsb3dzIG9yIGRlbmllcy4KPiAuSVAgXChidQo+IEEgc2V0IG9mIGZs YWdzIHRoYXQgaW5kaWNhdGUgd2hldGhlciB0aGUgdXNlciBvciBncm91cCBpZGVudGlmaWVyIGlz IG1hcHBlZCBvcgo+IHVubWFwcGVkLCBhbmQgd2hldGhlciB0aGUgZW50cnkgaGFzIGJlZW4gYW5k IGNhbiBiZSBpbmhlcml0ZWQuCj4gLklQIFwoYnUKPiBBIHR5cGUgZmllbGQgaW5kaWNhdGluZyB3 aGV0aGVyIHRoZSBlbnRyeSBhbGxvd3Mgb3IgZGVuaWVzIHRoZSBwZXJtaXNzaW9ucwo+IHNwZWNp ZmllZCBpbiB0aGUgc2Vjb25kIGZpZWxkLgo+IC5QUAo+IFRoZSBvd25lciwgZ3JvdXAsIGFuZCBv dGhlciBmaWxlIG1hc2tzIGZ1cnRoZXIgY29udHJvbCB3aGljaCBwZXJtaXNzaW9ucyB0aGUKPiBB Q0wgZ3JhbnRzLCBzdWJqZWN0IHRvIHRoZQo+IC5CUiBtYXNrZWQgIlwgKCIgbSApCj4gYW5kCj4g LkJSIHdyaXRlX3Rocm91Z2ggIlwgKCIgdyApCj4gQUNMIGZsYWdzOiB3aGVuIHRoZSBwZXJtaXNz aW9ucyBvZiBhIGZpbGUgb3IgZGlyZWN0b3J5IGFyZSBjaGFuZ2VkIHdpdGgKPiAuQlIgY2htb2Qg KDIpLAo+IHRoZSBmaWxlIG1hc2tzIGFyZSBzZXQgYmFzZWQgb24gdGhlIG5ldyBmaWxlIG1vZGUs IGFuZCB0aGUKPiAuQiBtYXNrZWQKPiBhbmQKPiAuQiB3cml0ZV90aHJvdWdoCj4gQUNMIGZsYWdz IGFyZSBzZXQuIExpa2V3aXNlLCB3aGVuIGEgbmV3IGZpbGUgb3IgZGlyZWN0b3J5IGluaGVyaXRz IGFuIEFDTCBmcm9tCj4gaXRzIHBhcmVudCBkaXJlY3RvcnksIHRoZSBmaWxlIG1hc2tzIGFyZSBz ZXQgdG8gdGhlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHRoZQo+IHBlcm1pc3Npb25zIGdyYW50ZWQg YnkgdGhlIGluaGVyaXRlZCBBQ0wgYW5kIHRoZQo+IC5JIG1vZGUKPiBwYXJhbWV0ZXIgYXMgZ2l2 ZW4gdG8KPiAuQlIgb3BlbiAiKDIpLCAiIG1rZGlyICgyKSwKPiBhbmQgc2ltaWxhciwgYW5kIHRo ZQo+IC5CIG1hc2tlZAo+IEFDTCBmbGFnIGlzIHNldC4gSW4gYm90aCBjYXNlcywgdGhlIGZpbGUg bWFza3MgbGltaXQgdGhlIHBlcm1pc3Npb25zIHRoYXQgdGhlCj4gQUNMIHdpbGwgZ3JhbnQuCj4g Cj4gVGhlIHB1cnBvc2Ugb2YgdGhlIGZpbGUgbWFza3MgaXMgdG8gYWxsb3cgdHJhZGl0aW9uYWwg UE9TSVggYXBwbGljYXRpb25zIHdoaWNoCj4gYXJlIHVuYXdhcmUgb2YgUmljaEFDTHMgdG8gcGxh Y2UgbGltaXRzIG9uIHRoZSBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoZQo+IFJpY2hBQ0wgd2l0 aG91dCBjYXVzaW5nIHRoZSBBQ0wgZW50cmllcyB0byBiZSBtb2RpZmllZC4gIFdpdGhvdXQgdGhl IGZpbGUgbWFzaywKPiB0aGUgb25seSBhbHRlcm5hdGl2ZSB3b3VsZCBiZSBmb3IgdGhlIGtlcm5l bCB0byBkaXJlY3RseSBtb2RpZnkgdGhlIEFDTAo+IGVudHJpZXMuICBIb3dldmVyLCB0aGlzIGxh dHRlciBhcHByb2FjaCBjb3VsZCBoYXZlIGEgImh5c3RlcmVzaXMgZWZmZWN0IiwKPiB3aGVyZWJ5 IGEgUmljaEFDTC11bmF3YXJlIGFwcGxpY2F0aW9uIHRoYXQgcGVyZm9ybXMgYSB0cmFuc2l0aW9u IGZyb20gb25lIGZpbGUKPiBtb2RlIHRvIGFub3RoZXIgZmlsZSBtb2RlIGFuZCB0aGVuIGJhY2sg dG8gdGhlIG9yaWdpbmFsIGZpbGUgbW9kZSBjb3VsZCBjYXVzZQo+IGRlc3RydWN0aW9uIG9mIHRo ZSBwZXJtaXNzaW9uIGluZm9ybWF0aW9uIGluIEFDTCBlbnRyaWVzLiAgV2hlbiBjcmVhdGluZyBm aWxlcwo+IG9yIGRpcmVjdG9yaWVzLCB0aGUKPiAuSSBtb2RlCj4gcGFyYW1ldGVyIHRvCj4gLkJS IG9wZW4gIigyKSwgIiBta2RpciAoMiksCj4gYW5kIHNpbWlsYXIgd291bGQgY2F1c2UgdGhlIHNh bWUgZWZmZWN0LgoKcy9jYXVzZS9oYXZlLwoKPiAKPiBOb3RlIHRoYXQgZW50cmllcyB3aXRoIHRo ZSBpZGVudGlmaWVyCj4gLkIgZXZlcnlvbmVACj4gYXBwbHkgdG8gYWxsIHByb2Nlc3Nlcywgd2hl cmVhcyB0aGUgXChscW90aGVyXChycSBmaWxlIHBlcm1pc3Npb25zIGFuZAo+IFwobHFvdGhlclwo cnEgZW50cmllcyBpbiBQT1NJWCBBQ0xzIGFwcGx5IHRvIGFsbCBwcm9jZXNzZXMgd2hpY2ggYXJl IG5vdCB0aGUKClNvLCBJIHN0aWxsIHRoaW5rIGl0J3MgaGVscGZ1bCB0byBtZW50aW9uIEFDTF9P VEhFUiBoZXJlLiBIb3cgYWJvdXQ6CgpzL1xcKGxxb3RoZXJcXChycS9cXChscW90aGVyXFwocnEg KFxcZkJBQ0xfT1RIRVJcXGZQKS8KCj4gb3duZXIsIGFyZSBub3QgaW4gdGhlIG93bmluZyBncm91 cCwgYW5kIGRvIG5vdCBtYXRjaCBhIHVzZXIgb3IgZ3JvdXAgbWVudGlvbmVkCj4gaW4gdGhlIEFD TC4KPiAKPiBVbmxpa2UgUE9TSVggQUNMcywgUmljaEFDTHMgZG8gbm90IGhhdmUgc2VwYXJhdGUg XChscWFjY2Vzc1wocnEgQUNMcyB0aGF0Cj4gZGVmaW5lIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMg YW5kIFwobHFkZWZhdWx0XChycSBBQ0xzIHRoYXQgZGVmaW5lIHRoZQo+IGluaGVyaXRhYmxlIHBl cm1pc3Npb25zLiAgSW5zdGVhZCwgZmxhZ3Mgb24gZWFjaCBBQ0wgZW50cnkgZGV0ZXJtaW5lIHdo ZXRoZXIKPiB0aGUgZW50cnkgaXMgZWZmZWN0aXZlIGR1cmluZyBhY2Nlc3MgY2hlY2tzIGFuZC9v ciBpbmhlcml0YWJsZS4KPiAKPiAKPiAuU1MgQUNMIGZsYWdzCj4gCj4gVGhlIGZvbGxvd2luZyBB Q0wgZmxhZ3MgYXJlIGRlZmluZWQ6Cj4gCj4gLlRQCj4gLkJSIG1hc2tlZCAiXCAoIiBtICkKPiBX aGVuIHNldCwgdGhlIGZpbGUgbWFza3MgZGVmaW5lIHVwcGVyIGxpbWl0cyBvbiB0aGUgcGVybWlz c2lvbnMgdGhlIEFDTCBtYXkKPiBncmFudC4gIFdoZW4gbm90IHNldCwgdGhlIGZpbGUgbWFza3Mg YXJlIGlnbm9yZWQuCj4gLlRQCj4gLkJSIHdyaXRlX3Rocm91Z2ggIlwgKCIgdyApCj4gV2hlbiB0 aGlzIGZsYWcgYW5kIHRoZQo+IC5CIG1hc2tlZAo+IGZsYWcgYXJlIGJvdGggc2V0LCB0aGUgb3du ZXIgYW5kIG90aGVyIGZpbGUgbWFza3MgZGVmaW5lIHRoZSBhY3R1YWwgcGVybWlzc2lvbnMKPiBn cmFudGVkIHRvIHRoZSBmaWxlIG93bmVyIGFuZCB0byBvdGhlcnMgaW5zdGVhZCBvZiBkZWZpbmlu ZyBhbiB1cHBlciBsaW1pdC4KPiBXaGVuIHRoZQo+IC5CIG1hc2tlZAo+IGZsYWcgaXMgbm90IHNl dCwgdGhlCj4gLkIgd3JpdGVfdGhyb3VnaAo+IGZsYWcgaGFzIG5vIGVmZmVjdC4KPiAuVFAKPiAu QlIgYXV0b19pbmhlcml0ICJcICgiIGEgKQo+IEF1dG9tYXRpYyBJbmhlcml0YW5jZSBpcyBlbmFi bGVkLiAgU2VlCj4gLklSICJBdXRvbWF0aWMgSW5oZXJpdGFuY2UiIC4KPiAuVFAKPiAuQlIgcHJv dGVjdGVkICJcICgiIHAgKQo+IFRoZSBBQ0wgaXMgcHJvdGVjdGVkIGZyb20gbW9kaWZpY2F0aW9u IGJ5IEF1dG9tYXRpYwo+IEluaGVyaXRhbmNlLgo+IC5UUAo+IC5CUiBkZWZhdWx0ZWQgIlwgKCIg ZCApCj4gSW5kaWNhdGVzIHRoYXQgdGhlIEFDTCBoYXMgYmVlbiBhc3NpZ25lZCBpbiBhbiBhcHBs aWNhdGlvbi1kZXBlbmRlbnQgd2F5IHdoZW4KPiB0aGUgZmlsZSBvciBkaXJlY3Rvcnkgd2FzIGNy ZWF0ZWQ7IGl0IGhhcyBuZWl0aGVyIGJlZW4gaW5oZXJpdGVkIG5vciBzZXQKPiBleHBsaWNpdGx5 LiBBQ0xzIG9mIGZpbGVzIGNyZWF0ZWQgb24gTGludXggd2lsbCBuZXZlciBoYXZlIHRoZQo+IC5C IGRlZmF1bHRlZAo+IGZsYWcgc2V0LCBidXQgdGhlIGZsYWcgbWF5IGJlIHNldCBvbiBmaWxlcyBj cmVhdGVkIG9uIG9yIGNvcGllZCBvdmVyIGZyb20KPiBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcy4g IFdoZW4gdGhpcyBmbGFnIGlzIHNldCBmb3IgYW4gQUNMLCBBdXRvbWF0aWMKPiBJbmhlcml0YW5j ZSB3aWxsIGNvbXBsZXRlbHkgcmVwbGFjZSB0aGUgQUNMLgo+IAo+IC5TUyBBQ0wgZW50cnkgZmxh Z3MKPiAKPiBUaGUgZm9sbG93aW5nIGZsYWdzIG9uIEFDTCBlbnRyaWVzIGFyZSBkZWZpbmVkOgo+ IAo+IC5UUAo+IC5CUiBmaWxlX2luaGVyaXQgIlwgKCIgZiApCj4gV2hlbiB0aGlzIGZsYWcgYXBw ZWFycyBpbiB0aGUgQUNMIGVudHJ5IG9mIGEgZGlyZWN0b3J5LCB0aGVuOgo+IC5SUwo+IC5JUCBc KGJ1IDIKPiBUaGF0IGVudHJ5IGlzIGluaGVyaXRlZCBieSBuZXcgZmlsZXMgY3JlYXRlZCBpbiB0 aGUgZGlyZWN0b3J5IHN1Y2ggdGhhdCB0aGUKPiBwZXJtaXNzaW9ucyBvZiB0aGUgZW50cnkgYXBw bHkgdG8gdGhlIGZpbGUgKHRoZSBpbmhlcml0YW5jZSBmbGFncyBvZiB0aGUKPiBpbmhlcml0ZWQg ZW50cnkgYXJlIGNsZWFyZWQpLgo+IC5JUCBcKGJ1Cj4gVGhlIGVudHJ5IGlzIGlzIGluaGVyaXRl ZCBieSBuZXcgc3ViZGlyZWN0b3JpZXMgY3JlYXRlZCBpbiB0aGUgZGlyZWN0b3J5IHN1Y2gKPiB0 aGF0IHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgZW50cnkgd2lsbCBhcHBseSB0byBuZXcgZmlsZXMg Y3JlYXRlZCBpbiB0aGUKPiBzdWJkaXJlY3RvcnkuCj4gLlJFCj4gLlRQCj4gLkJSIGRpcl9pbmhl cml0ICJcICgiIGQgKQo+IFdoZW4gdGhpcyBmbGFnIGFwcGVhcnMgaW4gdGhlIEFDTCBlbnRyeSBv ZiBhIGRpcmVjdG9yeSwgdGhlbiB0aGF0IGVudHJ5IGlzCj4gaW5oZXJpdGVkIGJ5IG5ldyBzdWJk aXJlY3RvcmllcyBjcmVhdGVkIGluIHRoZSBkaXJlY3Rvcnkgc3VjaCB0aGF0IHRoZQo+IHBlcm1p c3Npb25zIG9mIHRoZSBlbnRyeSBhcHBseSB0byB0aGUgc3ViZGlyZWN0b3J5ICh0aGUKPiAuQiBp bmhlcml0X29ubHkKPiBmbGFnIGlzIGNsZWFyZWQpLgo+IC5UUAo+IC5CUiBub19wcm9wYWdhdGUg IlwgKCIgbiApCj4gSW5oZXJpdGFuY2Ugc3RvcHMgYXQgdGhlIG5leHQgc3ViZGlyZWN0b3J5IGxl dmVsLiAgV2hlbiBhIGZpbGUgb3IgZGlyZWN0b3J5Cj4gaW5oZXJpdHMgYW4gZW50cnkgdGhhdCBo YXMgdGhpcyBmbGFnIHNldCwgdGhlCj4gLkJSIGZpbGVfaW5oZXJpdCAiLCAiIGRpcl9pbmhlcml0 ICIsICIgbm9fcHJvcGFnYXRlICIsIGFuZCAiIGluaGVyaXRfb25seQo+IGZsYWdzIGFyZSBjbGVh cmVkLgo+IC5UUAo+IC5CUiBpbmhlcml0X29ubHkgIlwgKCIgaSApCj4gVGhlIGVudHJ5IGRlZmlu ZXMgaW5oZXJpdGFibGUgcGVybWlzc2lvbnMgb25seSBhbmQgaXMgaWdub3JlZCBmb3IgYWNjZXNz Cj4gY2hlY2tpbmcuICBXaGVuIGEgZmlsZSBvciBkaXJlY3RvcnkgaW5oZXJpdHMgYW4gZW50cnkg dGhhdCBoYXMgdGhpcyBmbGFnIHNldCwKPiB0aGUgZmxhZyBpcyBjbGVhcmVkLgo+IC5UUAo+IC5C UiBpbmhlcml0ZWQgIlwgKCIgYSApCj4gVGhlIGVudHJ5IGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkg aW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBkaXJlY3RvcnkuCj4gLlRQCj4gLkJSIHVubWFwcGVk ICJcICgiIHUgKQo+IFRoZSB1c2VyIG9yIGdyb3VwIGlkZW50aWZpZXIgaXMgYSB0ZXh0dWFsIHN0 cmluZyBhbmQgaXMgbm90IG1hcHBlZCB0byBhIG51bWVyaWMKPiB1c2VyIG9yIGdyb3VwIGlkZW50 aWZpZXIuICBBQ0xzIHdpdGggdW5tYXBwZWQgaWRlbnRpZmllcnMgY2FuIG9jY3VyIG9uIE5GU3Y0 Cj4gbW91bnRlZCBmaWxlc3lzdGVtcyB3aGVuIHRoZSBjbGllbnQgY2Fubm90IGRldGVybWluZSBu dW1lcmljIHVzZXIgb3IgZ3JvdXAKPiBpZGVudGlmaWVycyBmb3Igc29tZSBvZiB0aGUgTkZTdjQg dXNlckBkb21haW4gb3IgZ3JvdXBAZG9tYWluIHdobyB2YWx1ZXMuICBUaGV5Cj4gY2Fubm90IGJl IGFzc2lnbmVkIHRvIGxvY2FsIGZpbGVzIG9yIGRpcmVjdG9yaWVzLgo+IAo+IC5TUyBQZXJtaXNz aW9ucwo+IAo+IFRoZSBmb2xsb3dpbmcgcGVybWlzc2lvbnMgYXJlIGRlZmluZWQgZm9yIFJpY2hB Q0wgZW50cmllcyBhbmQgZm9yIHRoZSB0aHJlZQo+IGZpbGUgbWFza3M6Cj4gCj4gLlRQCj4gLkJS IHJlYWRfZGF0YSAiIC8gIiBsaXN0X2RpcmVjdG9yeSAiXCAoIiByICkKPiBGb3IgYSBmaWxlOiBy ZWFkIHRoZSBkYXRhIG9mIHRoZSBmaWxlLgo+IEZvciBhIGRpcmVjdG9yeTogbGlzdCB0aGUgY29u dGVudHMgb2YgdGhlIGRpcmVjdG9yeS4KPiAuVFAKPiAuQlIgd3JpdGVfZGF0YSAiIC8gIiBhZGRf ZmlsZSAiXCAoIiB3ICkKPiBGb3IgYSBmaWxlOiBtb2RpZnkgdGhlIGRhdGEgb2YgdGhlIGZpbGU7 IGRvZXMgbm90IGluY2x1ZGUgb3BlbmluZyB0aGUgZmlsZSBpbgo+IGFwcGVuZCBtb2RlLgo+IEZv ciBhIGRpcmVjdG9yeTogYWRkIGEgbmV3IGZpbGUgaW4gdGhlIGRpcmVjdG9yeS4KPiAuVFAKPiAu QlIgYXBwZW5kX2RhdGEgIiAvICIgYWRkX3N1YmRpcmVjdG9yeSAiXCAoIiBwICkKPiBGb3IgYSBm aWxlOiBvcGVuIHRoZSBmaWxlIGluIGFwcGVuZCBtb2RlLgo+IEZvciBhIGRpcmVjdG9yeTogY3Jl YXRlIGEgc3ViZGlyZWN0b3J5IGluIHRoZSBkaXJlY3RvcnkuCj4gLlRQCj4gLkJSIGV4ZWN1dGUg IlwgKCIgeCApCj4gRm9yIGEgZmlsZTogZXhlY3V0ZSB0aGUgZmlsZS4KPiBGb3IgYSBkaXJlY3Rv cnk6IHRyYXZlcnNlIChzZWFyY2gpIHRoZSBkaXJlY3RvcnkuCj4gLlRQCj4gLkJSIGRlbGV0ZV9j aGlsZCAiXCAoIiBkICkKPiBEZWxldGUgYSBmaWxlIG9yIGRpcmVjdG9yeSB3aXRoaW4gYSBkaXJl Y3RvcnkuICBUaGlzIHBlcm1pc3Npb24gaXMgbWVhbmluZ2Z1bAo+IG9ubHkgZm9yIGRpcmVjdG9y aWVzLgo+IC5UUAo+IC5CUiBkZWxldGUgIlwgKCIgRCApCj4gRGVsZXRlIHRoZSBmaWxlIG9yIGRp cmVjdG9yeS4KPiAuVFAKPiAuQlIgcmVhZF9hdHRyaWJ1dGVzICJcICgiIGEgKQo+IFJlYWQgYmFz aWMgYXR0cmlidXRlcyBvZiBhIGZpbGUgb3IgZGlyZWN0b3J5IChzZWUKPiAuQlIgc3RhdCAoMikp Lgo+IFRoaXMgcGVybWlzc2lvbiBpcyBkZWZpbmVkIGJ5IE5GU3Y0LiAgSXQgaXMgc3RvcmVkLCBi dXQgaWdub3JlZC4gIFJlYWRpbmcgYmFzaWMKPiBhdHRyaWJ1dGVzIG9mIGZpbGVzIGFuZCBkaXJl Y3RvcmllcyBpcyBhbHdheXMgYWxsb3dlZCBvbiBMaW51eC4KPiAuVFAKPiAuQlIgd3JpdGVfYXR0 cmlidXRlcyAiXCAoIiBBICkKPiBDaGFuZ2UgdGhlIHRpbWVzIGFzc29jaWF0ZWQgd2l0aCBhIGZp bGUgb3IgZGlyZWN0b3J5IHRvIGFuIGFyYml0cmFyeSB2YWx1ZS4KPiBUaGlzIHBlcm1pc3Npb24g aXMgYWx3YXlzIGltcGxpY2l0bHkgZ3JhbnRlZCB0byB0aGUgZmlsZSBvd25lci4KPiAuVFAKPiAu QlIgcmVhZF9hY2wgIlwgKCIgYyApCj4gUmVhZCB0aGUgQUNMIG9mIGEgZmlsZSBvciBkaXJlY3Rv cnkuIExpa2UgcmVhZGluZyB0aGUgYmFzaWMgZmlsZSBhdHRyaWJ1dGVzICh0aGUKPiAuQiByZWFk X2F0dHJpYnV0ZXMKPiBwZXJtaXNzaW9uKSwgcmVhZGluZyBBQ0xzIGlzIGFsd2F5cyBhbGxvd2Vk IGluIExpbnV4Lgo+IC5UUAo+IC5CUiB3cml0ZV9hY2wgIlwgKCIgQyApCj4gQ2hhbmdlIHRoZSBB Q0wgb3IgZmlsZSBtb2RlIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkuCj4gLlRQCj4gLkJSIHdyaXRl X293bmVyICJcICgiIG8gKQo+IFRha2Ugb3duZXJzaGlwIG9mIGEgZmlsZSBvciBkaXJlY3Rvcnku ICBDaGFuZ2UgdGhlIG93bmluZyBncm91cCBvZiBhIGZpbGUgb3IKPiBkaXJlY3RvcnkgdG8gYSBn cm91cCBvZiB3aGljaCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGEgbWVtYmVyLgo+IC5UUAo+IC5h ZCBsCj4gLkJSIHJlYWRfbmFtZWRfYXR0cnMgIlwgKCIgUiAiKSwgIiB3cml0ZV9uYW1lZF9hdHRy cyAiXCAoIiBXICIpLCAiIHN5bmNocm9uaXplICJcICgiIFMgIiksICIgd3JpdGVfcmV0ZW50aW9u ICJcICgiIGUgIiksICIgd3JpdGVfcmV0ZW50aW9uX2hvbGQgIlwgKCIgRSApCj4gLmFkCj4gVGhl c2UgcGVybWlzc2lvbnMgYXJlIGRlZmluZWQgYnkgTkZTdjQgYW5kIE5GU3Y0LjEuICBUaGV5IGFy ZSBzdG9yZWQsIGJ1dCBpZ25vcmVkLgo+IC5QUAo+IEZvciB0aGUKPiAuQlIgciAiLCAiIHcgIiwg YW5kICIgcAo+IHBlcm1pc3Npb25zLCB3aGljaCBoYXZlIGRpZmZlcmVudCBsb25nIGZvcm1zIGZv ciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIHRoZQo+IC5CUiBnZXRyaWNoYWNsICgxKQo+IHV0aWxp dHkgd2lsbCBvdXRwdXQgdGhlIGFwcHJvcHJpYXRlIGZvcm0ocykgZGVwZW5kaW5nIG9uIHRoZSBj b250ZXh0Lgo+IFRoZQo+IC5CUiBzZXRyaWNoYWNsICgxKQo+IHV0aWxpdHkgd2lsbCBhY2NlcHQg ZWl0aGVyIGZvcm0gZm9yIGFueSBmaWxlIHR5cGUuCj4gCj4gLlNTIFRleHQgZm9ybQo+IFRoZSBj b21tb24gdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiBhIFJpY2hBQ0wgY29uc2lzdHMgb2YgdGhl IGNvbG9uLXNlcGFyYXRlZAo+IGZpZWxkcyBvZiB0aGUgQUNMIGZsYWdzLCBmaWxlIG1hc2tzLCBh bmQgQUNMIGVudHJpZXMgaW4gdGhlIGZvbGxvd2luZwo+IGZvcm1hdDoKPiAuVFAKPiBcZkJmbGFn czpcZlJcZklhY2xfZmxhZ3NcZlIKPiBUaGUgQUNMIGZsYWdzLgo+IC5UUAo+IFxmQm93bmVyOlxm UlxmSXBlcm1cZlJcZkI6Om1hc2tcZlIsIFxmQmdyb3VwOlxmUlxmSXBlcm1cZlJcZkI6Om1hc2tc ZlIsIFxmQm90aGVyOlxmUlxmSXBlcm1cZlJcZkI6Om1hc2tcZlIKPiBUaGUgZmlsZSBtYXNrcyBh bmQgdGhlaXIgcGVybWlzc2lvbnMuCj4gLlRQCj4gXGZJd2hvXGZSXGZCOlxmUlxmSXBlcm1cZlJc ZkI6XGZSXGZJZmxhZ3NcZlJcZkI6YWxsb3dcZlIsIFxmSXdob1xmUlxmQjpcZlJcZklwZXJtXGZS XGZCOlxmUlxmSWZsYWdzXGZSXGZCOmRlbnlcZlIKPiBGb3IgZWFjaCBBQ0wgZW50cnksIHdobyB0 aGUgZW50cnkgYXBwbGllcyB0bywgdGhlIHBlcm1pc3Npb25zIG9mIHRoZSBlbnRyeSwgdGhlCj4g ZW50cnkgZmxhZ3MsIGFuZCB0aGUgZW50cnkgdHlwZS4gVGhlIFxmSXdob1xmUiBmaWVsZCBpcyBv bmUgb2YgdGhlIGZvbGxvd2luZzoKPiAuUlMKPiAuSVAgXChidSAyCj4gT25lIG9mIHRoZSBzcGVj aWFsIGlkZW50aWZpZXJzOgo+IC5CUiBvd25lckAgIiwgIiBncm91cEAgIiwgb3IgIiBldmVyeW9u ZUAgLAo+IC5JUCBcKGJ1Cj4gQQo+IC5CUiB1c2VyOiAiIG9yICIgdToKPiBwcmVmaXggZm9sbG93 ZWQgYnkgYSB1c2VyIG5hbWUgb3IgdXNlciBJRCB0aGF0IGRlc2lnbmF0ZXMgYSBzcGVjaWZpYyB1 c2VyLAo+IC5JUCBcKGJ1Cj4gQQo+IC5CUiBncm91cDogIiBvciAiIGc6Cj4gcHJlZml4IGZvbGxv d2VkIGJ5IGEgZ3JvdXAgbmFtZSBvciBncm91cCBJRCB0aGF0IGRlc2lnbmF0ZXMgYSBzcGVjaWZp YyBncm91cC4KPiAuUkUKPiAuUFAKPiBUaGUgZW50cmllcyBhcmUgY29tbWEsIHdoaXRlc3BhY2Us IG9yIG5ld2xpbmUgc2VwYXJhdGVkLgoKcy9lbnRyaWVzL2ZpZWxkcyBvZiBhbiBBQ0wgZW50cnkv ICg/KQoKPiAKPiBGbGFncyBhbmQgcGVybWlzc2lvbnMgaGF2ZSBzaW5nbGUtbGV0dGVyIGFzIHdl bGwgYXMgbG9uZyBmb3JtcywgYXMgbGlzdGVkIHVuZGVyCj4gLklSICJBQ0wgZmxhZ3MiICwKPiAu SVIgIkFDTCBlbnRyeSBmbGFncyIgLAo+IGFuZAo+IC5JUiBQZXJtaXNzaW9ucyAuCj4gV2hlbiB0 aGUgc2luZ2xlLWxldHRlciBmb3JtcyBhcmUgdXNlZCwgdGhlIGZsYWdzIG9yIHBlcm1pc3Npb25z IGFyZQo+IGNvbmNhdGVuYXRlZC4gV2hlbiB0aGUgbG9uZyBmb3JtcyBhcmUgdXNlZCwgdGhlIGZs YWdzIG9yIHBlcm1pc3Npb25zIGFyZQo+IHNlcGFyYXRlZCBieSBzbGFzaGVzLiAgVG8gYWxpZ24g cGVybWlzc2lvbnMgb3IgZmxhZ3MgdmVydGljYWxseSwgZGFzaGVzIGNhbiBiZQo+IHVzZWQgZm9y IHBhZGRpbmcuCj4gCj4gLlNTIFNldHRpbmcgYW5kIG1vZGlmeWluZyBmaWxlIHBlcm1pc3Npb25z Cj4gVGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBmb3IgYSBmaWxlIGNhbiBlaXRoZXIgYmUgc2V0IGJ5 IGFzc2lnbmluZyBhbiBBY2Nlc3MKPiBDb250cm9sIExpc3QKPiAuUkIgKCBzZXRyaWNoYWNsICgx KSkKPiBvciBieSBjaGFuZ2luZyB0aGUgZmlsZSBtb2RlIHBlcm1pc3Npb24gYml0cwo+IC5SQiAo IGNobW9kICgxKSkuCj4gSW4gYWRkaXRpb24sIGEgZmlsZSBjYW4gaW5oZXJpdCBhbiBBQ0wgZnJv bSBpdHMgcGFyZW50IGRpcmVjdG9yeSBhdCBjcmVhdGlvbgo+IHRpbWUgYXMgZGVzY3JpYmVkIHVu ZGVyCj4gLklSICJQZXJtaXNzaW9ucyBhdCBmaWxlLWNyZWF0aW9uIHRpbWUiIC4KPiAKPiAuU1Mg QXNzaWduaW5nIGFuIEFjY2VzcyBDb250cm9sIExpc3QKPiBXaGVuIGFzc2lnbmluZyBhbiBBQ0wg dG8gYSBmaWxlLCB1bmxlc3MgZXhwbGljaXRseSBzcGVjaWZpZWQsIHRoZSBvd25lciwgZ3JvdXAs Cj4gYW5kIG90aGVyIGZpbGUgbWFza3Mgd2lsbCBiZSBjb21wdXRlZCBmcm9tIHRoZSBBQ0wgZW50 cmllcyBhcyBkZXNjcmliZWQgaW4KPiB0aGUgc2VjdGlvbgo+IC5JUiAiQ29tcHV0aW5nIHRoZSBt YXhpbXVtIGZpbGUgbWFza3MiIC4KPiBUaGUgb3duZXIsIGdyb3VwLCBhbmQgb3RoZXIgZmlsZSBt b2RlIHBlcm1pc3Npb24gYml0cyBhcmUgdGhlbiBlYWNoIHNldCBmcm9tCj4gdGhlIG93bmVyLCBn cm91cCwgYW5kIG90aGVyIGZpbGUgbWFzayBhcyBmb2xsb3dzOgo+IC5JUCBcKGJ1IDIKPiBJZiB0 aGUgZmlsZSBtYXNrIGluY2x1ZGVzIHRoZQo+IC5CIHIKPiBwZXJtaXNzaW9uLCB0aGUgcmVhZAo+ IGZpbGUgbW9kZSBwZXJtaXNzaW9uIGJpdCB3aWxsIGJlIHNldC4KPiAuSVAgXChidQo+IElmIHRo ZSBmaWxlIG1hc2sgaW5jbHVkZXMgdGhlCj4gLkIgdwo+IG9yCj4gLkIgcAo+IHBlcm1pc3Npb24s IHRoZSB3cml0ZSBmaWxlIG1vZGUgcGVybWlzc2lvbiBiaXQgd2lsbCBiZSBzZXQuCj4gLklQIFwo YnUKPiBJZiB0aGUgZmlsZSBtYXNrIGluY2x1ZGVzIHRoZQo+IC5CIHgKPiBwZXJtaXNzaW9uLCB0 aGUgZXhlY3V0ZSBmaWxlIG1vZGUgcGVybWlzc2lvbiBiaXQgd2lsbCBiZSBzZXQuCj4gLlBQCj4g SWYgdGhlIEFDTCBjYW4gYmUgcmVwcmVzZW50ZWQgZXhhY3RseSBieSB0aGUgZmlsZSBtb2RlIHBl cm1pc3Npb24gYml0cywgdGhlCj4gZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXJlIHNldCB0byBtYXRj aCB0aGUgQUNMIGFuZCBubyBBQ0wgaXMgc3RvcmVkLiAgKFdoZW4gdGhlCj4gQUNMIG9mIGEgZmls ZSBpcyByZXF1ZXN0ZWQgd2hpY2ggZG9lc24ndCBoYXZlIGFuIEFDTCwgdGhlIGZpbGUgbW9kZSBw ZXJtaXNzaW9uCj4gYml0cyBhcmUgY29udmVydGVkIGludG8gYW4gZXF1aXZhbGVudCBBQ0wuKQo+ IAo+IC5TUyBDaGFuZ2luZyB0aGUgZmlsZSBtb2RlIHBlcm1pc3Npb24gYml0cwo+IFdoZW4gY2hh bmdpbmcgdGhlIGZpbGUgbW9kZSBwZXJtaXNzaW9uIGJpdHMgd2l0aAo+IC5CUiBjaG1vZCAoMSks Cj4gdGhlIG93bmVyLCBncm91cCwgYW5kIG90aGVyIGZpbGUgcGVybWlzc2lvbiBiaXRzIGFyZSBz ZXQgdG8gdGhlIHBlcm1pc3Npb24gYml0cwo+IGluIHRoZSBuZXcgbW9kZSwgYW5kIHRoZSBvd25l ciwgZ3JvdXAsIGFuZCBvdGhlciBmaWxlIG1hc2tzIGFyZSBzZXQgYmFzZWQgb24KPiB0aGUgbmV3 IG1vZGUgYml0cyBhcyBmb2xsb3dzOgo+IC5JUCBcKGJ1IDIKPiBJZiB0aGUgcmVhZCBiaXQgaW4g YSBzZXQgb2YgcGVybWlzc2lvbnMgaXMgc2V0LCB0aGUKPiAuQiByCj4gcGVybWlzc2lvbiBpbiB0 aGUgY29ycmVzcG9uZGluZyBmaWxlIG1hc2sgd2lsbCBiZSBzZXQuCj4gLklQIFwoYnUKPiBJZiB0 aGUgd3JpdGUgYml0IGluIGEgc2V0IG9mIHBlcm1pc3Npb25zIGlzIHNldCwgdGhlCj4gLkIgdwo+ IGFuZAo+IC5CIHAKPiBwZXJtaXNzaW9ucyBpbiB0aGUgY29ycmVzcG9uZGluZyBmaWxlIG1hc2sg d2lsbCBiZSBzZXQuCj4gLklQIFwoYnUKPiBJZiB0aGUgZXhlY3V0ZSBiaXQgaW4gYSBzZXQgb2Yg cGVybWlzc2lvbnMgaXMgc2V0LCB0aGUKPiAuQiB4Cj4gcGVybWlzc2lvbiBpbiB0aGUgY29ycmVz cG9uZGluZyBmaWxlIG1hc2sgd2lsbCBiZSBzZXQuCj4gLlBQCj4gSW4gYWRkaXRpb24sIHRoZQo+ IC5CIG1hc2tlZAo+IGFuZAo+IC5CIHdyaXRlX3Rocm91Z2gKPiBBQ0wgZmxhZ3MgYXJlIHNldC4g VGhpcyBoYXMgdGhlCj4gZWZmZWN0IG9mIGxpbWl0aW5nIHRoZSBwZXJtaXNzaW9ucyBncmFudGVk IGJ5IHRoZSBBQ0wgdG8gdGhlIGZpbGUgbW9kZQo+IHBlcm1pc3Npb24gYml0czsgaW4gYWRkaXRp b24sIHRoZSBvd25lciBpcyBncmFudGVkIHRoZSBvd25lciBtb2RlIGJpdHMgYW5kCj4gb3RoZXJz IGFyZSBncmFudGVkIHRoZSBvdGhlciBtb2RlIGJpdHMuIElmIHRoZQo+IC5CIGF1dG9faW5oZXJp dAo+IGZsYWcgaXMgc2V0LCB0aGUKPiAuQiBwcm90ZWN0ZWQKPiBmbGFnIGlzIGFsc28gc2V0IHRv IHByZXZlbnQgdGhlIEF1dG9tYXRpYyBJbmhlcml0YW5jZSBhbGdvcml0aG0gZnJvbSBtb2RpZnlp bmcKPiB0aGUgQUNMLgo+IAo+IC5TUyBQZXJtaXNzaW9ucyBhdCBmaWxlLWNyZWF0aW9uIHRpbWUK PiBXaGVuIGEgZGlyZWN0b3J5IGhhcyBhbnkgaW5oZXJpdGFibGUgQUNMIGVudHJpZXMsIHRoZSBm b2xsb3dpbmcKPiBoYXBwZW5zIHdoZW4gYSBmaWxlIG9yIGRpcmVjdG9yeSBpcyBjcmVhdGVkIGlu c2lkZSB0aGF0IGRpcmVjdG9yeToKPiAuUlMgNAoKUmVtb3ZlIHByZWNlZGluZyBsaW5lLgoKPiAu SVAgMS4gNAo+IEEgZmlsZSBjcmVhdGVkIGluc2lkZSB0aGF0IGRpcmVjdG9yeSB3aWxsIGluaGVy aXQgYWxsIG9mIHRoZSBBQ0wgZW50cmllcyB0aGF0Cj4gaGF2ZSB0aGUKPiAuQiBmaWxlX2luaGVy aXQKPiBmbGFnIHNldCwgYW5kIGFsbCBpbmhlcml0YW5jZS1yZWxhdGVkIGZsYWdzIGluIHRoZSBp bmhlcml0ZWQgZW50cmllcyBmbGFnIHdpbGwKPiBiZSBjbGVhcmVkLgo+IAo+IEEgc3ViZGlyZWN0 b3J5IGNyZWF0ZWQgaW5zaWRlIHRoYXQgZGlyZWN0b3J5IHdpbGwgaW5oZXJpdCBhbGwgb2YgdGhl IEFDTAo+IGVudHJpZXMgdGhhdCBlaXRoZXIgaGF2ZSB0aGUKPiAuQiBkaXJfaW5oZXJpdAo+IGZs YWcgc2V0LCBvciB0aGUKPiAuQiBmaWxlX2luaGVyaXQKPiBmbGFnIHNldCBhbmQgdGhlCj4gLkIg bm9fcHJvcGFnYXRlCj4gZmxhZyBub3Qgc2V0LiAgRW50cmllcyB3aG9zZQo+IC5CIGRpcl9pbmhl cml0Cj4gZmxhZyBpcyBzZXQgd2lsbCBoYXZlIHRoZWlyCj4gLkIgaW5oZXJpdF9vbmx5Cj4gZmxh ZyBjbGVhcmVkLCBhbmQgZW50cmllcyB3aG9zZQo+IC5CIGRpcl9pbmhlcml0Cj4gZmxhZyBpcyBu b3Qgc2V0IHdpbGwgaGF2ZSB0aGVpcgo+IC5CIGluaGVyaXRfb25seQo+IGZsYWcgc2V0LiAgRmlu YWxseSwgZW50cmllcyB3aG9zZQo+IC5CIG5vX3Byb3BhZ2F0ZQo+IGZsYWcgaXMgc2V0IHdpbGwg aGF2ZSBhbGwgaW5oZXJpdGFuY2UtcmVsYXRlZCBmbGFncyBjbGVhcmVkLgo+IC5JUCAyLgo+IElm IHRoZSBwYXJlbnQgZGlyZWN0b3J5J3MgQUNMIGhhcyB0aGUKPiAuQiBhdXRvX2luaGVyaXQKPiBm bGFnIHNldCwgdGhlIGluaGVyaXRlZCBBQ0wgd2lsbCBoYXZlIGl0cwoKcy90aGUvdGhlbiB0aGUv CihGb3IgZWFzZSBvZiBwYXJzaW5nKQoKPiAuQiBhdXRvX2luaGVyaXQKPiBmbGFnIHNldCwgYW5k IGFsbCBlbnRyaWVzIHdpbGwgaGF2ZSB0aGVpcgo+IC5CIGluaGVyaXRlZAo+IGZsYWcgc2V0LiAg T3RoZXJ3aXNlLCB0aGUKPiAuQiBhdXRvX2luaGVyaXQKPiBhbmQKPiAuQiBpbmhlcml0ZWQKPiBm bGFncyBhcmUgY2xlYXJlZC4KPiAuSVAgMy4KPiBUaGUgdGhyZWUgZmlsZSBtYXNrcyBhcmUgY29t cHV0ZWQgZnJvbSB0aGUgaW5oZXJpdGVkIEFDTCBhcyBkZXNjcmliZWQgaW4KPiB0aGUgc2VjdGlv bgo+IC5JUiAiQ29tcHV0aW5nIHRoZSBtYXhpbXVtIGZpbGUgbWFza3MiIC4KPiAuSVAgNC4KPiBU aGUgdGhyZWUgc2V0cyBvZiBwZXJtaXNzaW9ucyBmb3IgdGhlIG93bmVyLCB0aGUgZ3JvdXAsIGFu ZCBmb3Igb3RoZXJzIGluCj4gdGhlIFxmSW1vZGVcZlIgcGFyYW1ldGVyIGFzIGdpdmVuIHRvCj4g LkJSIG9wZW4gKDIpLAo+IC5CUiBta2RpciAoMiksCj4gYW5kIHNpbWlsYXIgYXJlIGNvbnZlcnRl ZCBpbnRvIHNldHMgb2YgUmljaEFDTCBwZXJtaXNzaW9ucy4gVGhlIGNvcnJlc3BvbmRlbmNlCj4g YmV0d2VlbiBtYXNrIGZsYWdzIGFuZCBSaWNoQUNMIHBlcm1pc3Npb24gYml0cyBpcyBkZXNjcmli ZWQgaW4gdGhlIHNlY3Rpb24KPiAuSVIgIkNoYW5naW5nIHRoZSBmaWxlIG1vZGUgcGVybWlzc2lv biBiaXRzIiAuCj4gQW55IFJpY2hBQ0wgcGVybWlzc2lvbnMgbm90IGluY2x1ZGVkIGluIHRob3Nl IHNldHMgYXJlCj4gcmVtb3ZlZCBmcm9tIHRoZSBvd25lciwgZ3JvdXAsIGFuZCBvdGhlciBmaWxl IG1hc2tzLiBUaGUgZmlsZSBtb2RlIHBlcm1pc3Npb24KPiBiaXRzIGFyZSB0aGVuIGNvbXB1dGVk IGZyb20gdGhlIGZpbGUgbWFza3MgYXMgZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9uCj4gLklSICJB c3NpZ25pbmcgYW4gQWNjZXNzIENvbnRyb2wgTGlzdCIgLgo+IFRoZSBwcm9jZXNzIHVtYXNrIChz ZWUKPiAuQlIgdW1hc2sgKDIpKQo+IGlzIGlnbm9yZWQuCj4gLklQIDUuCj4gVGhlCj4gLkIgbWFz a2VkCj4gQUNMIGZsYWcgaXMgc2V0LiBUaGUKPiAuQiB3cml0ZV90aHJvdWdoCj4gQUNMIGZsYWcg cmVtYWlucyBjbGVhcmVkLiBJbiBhZGRpdGlvbiwgaWYgdGhlCj4gLkIgYXV0b19pbmhlcml0Cj4g ZmxhZyBvZiB0aGUgaW5oZXJpdGVkIEFDTCBpcyBzZXQsIHRoZQo+IC5CIHByb3RlY3RlZAo+IGZs YWcgaXMgYWxzbyBzZXQgdG8gcHJldmVudCB0aGUgQXV0b21hdGljIEluaGVyaXRhbmNlIGFsZ29y aXRobSBmcm9tIG1vZGlmeWluZwo+IHRoZSBBQ0wuCj4gLlJFCgpSZW1vdmUgcHJlY2VkaW5nIGxp bmUuCgo+IC5QUAo+IFdoZW4gYSBkaXJlY3RvcnkgZG9lcyBub3QgaGF2ZSBpbmhlcml0YWJsZSBB Q0wgZW50cmllcywgZmlsZXMgYW5kIGRpcmVjdG9yaWVzCj4gY3JlYXRlZCBpbnNpZGUgdGhhdCBk aXJlY3Rvcnkgd2lsbCBub3QgYmUgYXNzaWduZWQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYW5kIHRo ZQo+IGZpbGUgbW9kZSBwZXJtaXNzaW9uIGJpdHMgd2lsbCBiZSBzZXQgdG8gKFxmSW1vZGVcZlJc ICZcIH5cZkl1bWFza1xmUikgd2hlcmUKPiBcZkltb2RlXGZSIGlzIHRoZSBtb2RlIGFyZ3VtZW50 IG9mIHRoZSByZWxldmFudCBzeXN0ZW0gY2FsbCBhbmQgXGZJdW1hc2tcZlIgaXMKPiB0aGUgcHJv Y2VzcyB1bWFzayAoc2VlCj4gLkJSIHVtYXNrICgyKSkuCj4gCj4gLlNTIEF1dG9tYXRpYyBJbmhl cml0YW5jZQo+IEF1dG9tYXRpYyBJbmhlcml0YW5jZSBpcyBhIG1lY2hhbmlzbSB0aGF0IGFsbG93 cyBwZXJtaXNzaW9uIGNoYW5nZXMgdG8KPiBwcm9wYWdhdGUgZnJvbSBhIGRpcmVjdG9yeSB0byBm aWxlcyBhbmQgc3ViZGlyZWN0b3JpZXMgaW5zaWRlIHRoYXQgZGlyZWN0b3J5LAo+IHJlY3Vyc2l2 ZWx5LiAgUHJvcGFnYXRpb24gaXMgY2FycmllZCBvdXQgYnkgdGhlIHByb2Nlc3MgY2hhbmdpbmcg dGhlIGRpcmVjdG9yeQo+IHBlcm1pc3Npb25zICh1c3VhbGx5LAo+IC5CUiBzZXRyaWNoYWNsICgx KSk7Cj4gaXQgaGFwcGVucyB3aXRob3V0IHVzZXIgaW50ZXJ2ZW50aW9uIGFsYmVpdCBub3QgZW50 aXJlbHkgYXV0b21hdGljYWxseS4KPiAKPiBBIHNpZ25pZmljYW50IGxpbWl0YXRpb24gaXMgdGhh dCB0aGlzIG1lY2hhbmlzbSB3b3JrcyBvbmx5IGFzIGxvbmcgYXMgZmlsZXMKCnMvbGltaXRhdGlv bi9saW1pdGF0aW9uIG9mIHRoZSBBdXRvbWF0aWMgSW5oZXJpdGFuY2UgZmVhdHVyZS8KCj4gYXJl IGNyZWF0ZWQgd2l0aG91dCBleHBsaWNpdGx5IHNwZWNpZnlpbmcgdGhlIGZpbGUgcGVybWlzc2lv bnMgdG8gdXNlLiBUaGUKPiBzdGFuZGFyZCBzeXN0ZW0gY2FsbHMgZm9yIGNyZWF0aW5nIGZpbGVz IGFuZCBkaXJlY3Rvcmllcwo+IC5SQiAoIGNyZWF0ICgyKSwKPiAuQlIgb3BlbiAoMiksCj4gLkJS IG1rZGlyICgyKSwKPiAuQlIgbWtub2QgKDIpKQoKcy8pJC8sXG5hbmQgc28gb24pLwoKKEFuZCwg SSdkIGRyb3AgY3JlYXQoMikgZnJvbSB0aGF0IGxpc3Qgb2YgZXhhbXBsZXMuIEl0J3MgYW5jaWVu dCBhbmQKb2Jzb2xldGU7IG5vIG5lZWQgdG8gZW5jb3VyYWdlaXRzIHVzZS4pCgo+IGFsbCBoYXZl IG1hbmRhdG9yeSBtb2RlIHBhcmFtZXRlcnMgd2hpY2ggZGVmaW5lIHRoZSBtYXhpbXVtIGFsbG93 ZWQgcGVybWlzc2lvbnMKPiBvZiB0aGUgbmV3IGZpbGVzLiBUbyB0YWtlIGFjY291bnQgb2YgdGhp cyByZXN0cmljdGlvbiwgdGhlCj4gLkIgcHJvdGVjdGVkCj4gQUNMIGZsYWcgbXVzdCBiZSBzZXQg aWYgdGhlCj4gLkIgaW5oZXJpdGVkCj4gZmxhZyBpcyBzZXQuIFRoaXMgZWZmZWN0aXZlbHkgZGlz YWJsZXMgQXV0b21hdGljIEluaGVyaXRhbmNlIGZvciB0aGF0Cj4gcGFydGljdWxhciBmaWxlLgo+ IAo+IE5vdHdpdGhzdGFuZGluZyB0aGUgYWZvcmVtZW50aW9uZWQgbGltaXRhdGlvbiwgQXV0b21h dGljIEluaGVyaXRhbmNlIHN0aWxsCj4gcmVtYWlucyB1c2VmdWwgZm9yIG5ldHdvcmsgcHJvdG9j b2xzIGxpa2UgTkZTdjQgYW5kIFNNQiwgd2hpY2ggYm90aCBzdXBwb3J0Cj4gY3JlYXRpbmcgZmls ZXMgYW5kIGRpcmVjdG9yaWVzIHdpdGhvdXQgZGVmaW5pbmcgdGhlaXIgcGVybWlzc2lvbnMuIFRo ZXNlCj4gcHJvdG9jb2xzIGNhbiBpbXBsZW1lbnQgdGhvc2Ugb3BlcmF0aW9ucyBieSB1c2luZyB0 aGUgc3RhbmRhcmQgc3lzdGVtIGNhbGxzIGFuZAo+IGJ5IHRoZW4gdW5kb2luZyB0aGUgZWZmZWN0 IG9mIGFwcGx5aW5nIHRoZSBtb2RlIHBhcmFtZXRlcnMuCj4gCj4gV2hlbiB0aGUgQUNMIG9mIGEg ZGlyZWN0b3J5IGlzIGNoYW5nZWQsIHRoZSBmb2xsb3dpbmcgaGFwcGVucyBmb3IgZWFjaCBlbnRy eQo+IChcKGxxY2hpbGRcKHJxKSBpbnNpZGUgdGhhdCBkaXJlY3Rvcnk6Cj4gLklQIDEuIDQKPiBJ ZiB0aGUgZW50cnkgaXMgYSBzeW1ib2xpYyBsaW5rLCBza2lwIHRoZSBjaGlsZC4KPiAuSVAgMi4K PiBJZiB0aGUKPiAuQiBhdXRvX2luaGVyaXQKPiBmbGFnIG9mIHRoZSBlbnRyeSdzIEFDTCBpcyBu b3Qgc2V0IG9yIHRoZQo+IC5CIHByb3RlY3RlZAo+IGZsYWcgaXMgc2V0LCBza2lwIHRoZSBjaGls ZC4KPiAuSVAgMy4KPiBXaXRoIHRoZSBjaGlsZCdzIEFDTDoKPiAuUlMgNAo+IC5JUCBhKSA0Cj4g SWYgdGhlCj4gLkIgZGVmYXVsdGVkCj4gZmxhZyBpcyBzZXQsIHJlcGxhY2UgdGhlIEFDTCB3aXRo IGFuIGVtcHR5IEFDTAo+IHdpdGggdGhlCj4gLkIgYXV0b19pbmhlcml0Cj4gZmxhZyBzZXQuCj4g LklQIGIpCj4gRGVsZXRlIGFsbCBlbnRyaWVzIHdoaWNoIGhhdmUgdGhlCj4gLkIgaW5oZXJpdGVk Cj4gZmxhZyBzZXQuCj4gLklQIGMpCj4gQXBwZW5kIGFsbCBlbnRyaWVzIGluaGVyaXRlZCBmcm9t IHRoZSBwYXJlbnQgZGlyZWN0b3J5IGFjY29yZGluZyB0byBzdGVwIDEgb2YKPiB0aGUgYWxnb3Jp dGhtIGRlc2NyaWJlZCB1bmRlcgo+IC5JUiAiUGVybWlzc2lvbnMgYXQgZmlsZS1jcmVhdGlvbiB0 aW1lIi4KPiBTZXQgdGhlCj4gLkIgaW5oZXJpdGVkCj4gZmxhZyBvZiBlYWNoIG9mIHRoZXNlIGVu dHJpZXMuCj4gLklQIGQpCj4gUmVjb21wdXRlIHRoZSBmaWxlIG1hc2tzLgoKQXQgdGggZW5kIG9m IHRoZSBsYXN0IHNlY3Rpb24sIGFkZDoKCiAgICAgICAgYXMgZGVzY2liZWQgaW4gdGhlIHNlY3Rp b24gIi4uLi4iCgo+IC5SRQo+IC5JUCA0Lgo+IElmIHRoZSBjaGlsZCBpcyBhIGRpcmVjdG9yeSwg cmVjdXJzaXZlbHkgYXBwbHkgdGhpcyBhbGdvcml0aG0uCj4gCj4gLlNTIEFjY2VzcyBjaGVjayBh bGdvcml0aG0KPiAKPiBXaGVuIGEgcHJvY2VzcyByZXF1ZXN0cyBhIHBhcnRpY3VsYXIga2luZCBv ZiBhY2Nlc3MgKGV4cHJlc3NlZCBhcyBhIHNldCBvZgo+IFJpY2hBQ0wgcGVybWlzc2lvbnMpIHRv IGEgZmlsZSwgdGhlIGZvbGxvd2luZyBhbGdvcml0aG0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZQo+ IGFjY2VzcyBpcyBncmFudGVkIG9yIGRlbmllZDoKPiAKPiAuSVAgMS4gNAo+IElmIHRoZQo+IC5C IG1hc2tlZAo+IEFDTCBmbGFnIGlzIHNldCwgdGhlbjoKPiAuUlMgNAo+IC5JUCBhKSA0Cj4gSWYg dGhlCj4gLkIgd3JpdGVfdGhyb3VnaAo+IEFDTCBmbGFnIGlzIHNldCwgdGhlbjoKPiAuUlMgNAo+ IC5JUCBcKGJ1IDIKPiBJZiB0aGUgcmVxdWVzdGluZyBwcm9jZXNzIGlzIHRoZSBmaWxlIG93bmVy LCB0aGVuIGFjY2VzcyBpcyBncmFudGVkIGlmIHRoZQo+IG93bmVyIG1hc2sgaW5jbHVkZXMgdGhl IHJlcXVlc3RlZCBwZXJtaXNzaW9ucywgYW5kIGlzIG90aGVyd2lzZSBkZW5pZWQuCj4gLklQIFwo YnUKPiBJZiB0aGUgcmVxdWVzdGluZyBwcm9jZXNzIGlzIG5vdCB0aGUgZmlsZSBvd25lciBhbmQg aXQgaXMgaW4gdGhlIG93bmluZyBncm91cCBvciBtYXRjaGVzIGFueSBBQ0wgZW50cmllcyBvdGhl ciB0aGFuCj4gLkJSIGV2ZXJ5b25lQCAsCj4gcHJvY2VlZCB0byBzdGVwIGIpLgo+IC5JUCBcKGJ1 Cj4gSWYgdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBpcyBub3QgdGhlIGZpbGUgb3duZXIsIGlzIG5v dCBpbiB0aGUgb3duaW5nIGdyb3VwLAo+IGFuZCBubyBBQ0wgZW50cmllcyBvdGhlciB0aGFuCj4g LkIgZXZlcnlvbmVACj4gbWF0Y2ggdGhlIHByb2Nlc3MsIHRoZW4gYWNjZXNzIGlzIGdyYW50ZWQg aWYgdGhlIG90aGVyIG1hc2sgaW5jbHVkZXMgdGhlCj4gcmVxdWVzdGVkIHBlcm1pc3Npb25zLCBh bmQgaXMgb3RoZXJ3aXNlIGRlbmllZC4KPiAuUkUKPiAuSVAgYikKPiBJZiBhbnkgb2YgdGhlIGZv bGxvd2luZyBpcyB0cnVlOgo+IC5SUyA0Cj4gLklQIFwoYnUgMgo+IHRoZSByZXF1ZXN0aW5nIHBy b2Nlc3MgaXMgdGhlIGZpbGUgb3duZXIgYW5kIHRoZSBvd25lciBtYXNrIGRvZXMgbm90IGluY2x1 ZGUgYWxsCj4gcmVxdWVzdGVkIHBlcm1pc3Npb25zLAo+IC5JUCBcKGJ1Cj4gdGhlIHJlcXVlc3Rp bmcgcHJvY2VzcyBpcyBub3QgdGhlIGZpbGUgb3duZXIgYW5kIGl0IGlzIGluIHRoZSBvd25pbmcg Z3JvdXAgb3IKPiBtYXRjaGVzIGFueSBBQ0wgZW50cmllcyBvdGhlciB0aGFuCj4gLkJSIGV2ZXJ5 b25lQCAsCj4gYW5kIHRoZSBncm91cCBtYXNrIGRvZXMgbm90IGluY2x1ZGUgYWxsIHJlcXVlc3Rl ZCBwZXJtaXNzaW9ucywKPiAuSVAgXChidQo+IHRoZSByZXF1ZXN0aW5nIHByb2Nlc3MgaXMgbm90 IHRoZSBmaWxlIG93bmVyLCBub3QgaW4gdGhlIG93bmluZyBncm91cCwgaXQKPiBtYXRjaGVzIG5v IEFDTCBlbnRyaWVzIG90aGVyIHRoYW4KPiAuQlIgZXZlcnlvbmVAICwKPiBhbmQgdGhlIG90aGVy IG1hc2sgZG9lcyBub3QgaW5jbHVkZSBhbGwgcmVxdWVzdGVkIHBlcm1pc3Npb25zLAo+IC5QUAo+ IHRoZW4gYWNjZXNzIGlzIGRlbmllZC4KPiAuUkUKPiAuUkUKPiAuSVAgMi4KPiBVcG9uIHJlYWNo aW5nIHRoaXMgcG9pbnQsIHRoZSBkZXRlcm1pbmF0aW9uIG9mIHdoZXRoZXIgb3Igbm90IGFjY2Vz cyBpcyBncmFudGVkCj4gaXMgbWFkZSBieSBzY2FubmluZyBhbGwgQUNMIGVudHJpZXMgdG8gc2Vl IGlmIG9uZSBvciBtb3JlIGFwcGxpY2FibGUgZW50cmllcwo+IHRvZ2V0aGVyIGdyYW50IGEgY3Vt dWxhdGl2ZSBzZXQgb2YgcGVybWlzc2lvbnMgdGhhdCBtYXRjaGVzIHRoZSByZXF1ZXN0ZWQKPiBw ZXJtaXNzaW9ucyBvciB0aGVyZSBpcyBhbiBhcHBsaWNhYmxlIGVudHJ5IHRoYXQgZXhwbGljaXRs eSBkZW5pZXMgb25lIG9yIG1vcmUKPiBvZiB0aGUgcmVxdWVzdGVkIHBlcm1pc3Npb25zLiAgVGhl IHNjYW4gb2YgYWxsIEFDTCBlbnRyaWVzIGJlZ2lucyBieSBmaXJzdAo+IGluaXRpYWxpemluZyB0 aGUgc2V0IG9mIHJlbWFpbmluZyBwZXJtaXNzaW9ucyAoaS5lLiwgdGhvc2UgdGhhdCBoYXZlIG5v dCB5ZXQKPiBiZWVuIHNhdGlzZmllZCBkdXJpbmcgdGhlIHNjYW4pIHRvIGJlIHRoZSBzZXQgb2Yg cmVxdWVzdGVkIHBlcm1pc3Npb25zLiBUaGVuCj4gdGhlIEFDTCBlbnRyaWVzIGFyZSBzY2FubmVk Cj4gLklSICJpbiBvcmRlciIgLAo+IGFuZCBmb3IgZWFjaCBlbnRyeToKPiAuUlMgNAo+IC5JUCBh KSA0Cj4gSWYgdGhlCj4gLkIgaW5oZXJpdF9vbmx5Cj4gb3IKPiAuQiB1bm1hcHBlZAo+IGZsYWdz IGFyZSBzZXQsIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgQUNMIGVudHJ5Lgo+IC5JUCBiKQo+IElm IGFueSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6Cj4gLlJTIDQKPiAuSVAgXChidSAyCj4gdGhl IGVudHJ5J3MgaWRlbnRpZmllciBpcwo+IC5CIG93bmVyQAo+IGFuZCB0aGUgcmVxdWVzdGluZyBw cm9jZXNzIGlzIHRoZSBmaWxlIG93bmVyLAo+IC5JUCBcKGJ1Cj4gdGhlIGVudHJ5J3MgaWRlbnRp ZmllciBpcwo+IC5CIGdyb3VwQAo+IGFuZCB0aGUgcmVxdWVzdGluZyBwcm9jZXNzIGlzIGluIHRo ZSBvd25pbmcgZ3JvdXAsCj4gLklQIFwoYnUKPiB0aGUgZW50cnkncyBpZGVudGlmaWVyIGlzIGEg dXNlciBhbmQgdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBpcyBvd25lZCBieSB0aGF0Cj4gdXNlciwK PiAuSVAgXChidQo+IHRoZSBlbnRyeSdzIGlkZW50aWZpZXIgaXMgYSBncm91cCBhbmQgdGhlIHJl cXVlc3RpbmcgcHJvY2VzcyBpcyBhIG1lbWJlciBpbgo+IHRoYXQgZ3JvdXAsCj4gLklQIFwoYnUK PiB0aGUgZW50cnkncyBpZGVudGlmaWVyIGlzCj4gLkJSIGV2ZXJ5b25lQCAsCj4gLlBQCj4gdGhl biB0aGUgZW50cnkgbWF0Y2hlcyB0aGUgcHJvY2VzczsgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVw LiBPdGhlcndpc2UsCj4gY29udGludWUgd2l0aCB0aGUgbmV4dCBBQ0wgZW50cnkuCj4gLlJFCj4g LklQIGMpCj4gSWYgdGhlIGVudHJ5IGRlbmllcyBhbnkgb2YgdGhlIHJlbWFpbmluZyBwZXJtaXNz aW9ucywgYWNjZXNzIGlzIGRlbmllZC4KPiAuSVAgZCkKPiBJZiB0aGUgZW50cnkgYWxsb3dzIGFu eSBvZiB0aGUgcmVtYWluaW5nIHBlcm1pc3Npb25zLCB0aGVuOgo+IC5SUyA0Cj4gLklQIFwoYnUg Mgo+IElmIHRoZQo+IC5CIG1hc2tlZAo+IEFDTCBmbGFnIGlzIHNldCBhbmQgdGhlIGVudHJ5J3Mg aWRlbnRpZmllciBpcyBub3QKPiAuQiBvd25lckAKPiBvcgo+IC5CUiBldmVyeW9uZUAKPiBvciBp cyBhIHVzZXIgZW50cnkgbWF0Y2hpbmcgdGhlIGZpbGUgb3duZXIsIHJlbW92ZSBhbGwgcGVybWlz c2lvbnMgZnJvbSB0aGUKPiByZW1haW5pbmcgcGVybWlzc2lvbnMgd2hpY2ggYXJlIGJvdGggYWxs b3dlZCBieSB0aGUgZW50cnkgYW5kIGluY2x1ZGVkIGluIHRoZQo+IGdyb3VwIG1hc2ssCj4gLklQ IFwoYnUKPiBPdGhlcndpc2UsIHJlbW92ZSBhbGwgcGVybWlzc2lvbnMgZnJvbSB0aGUgcmVtYWlu aW5nIHBlcm1pc3Npb25zIHdoaWNoIGFyZQo+IGFsbG93ZWQgYnkgdGhlIGVudHJ5Lgo+IC5SRQo+ IC5SRQo+IC5JUCAzLgo+IElmIHRoZXJlIGFyZSBubyBtb3JlIHJlbWFpbmluZyBwZXJtaXNzaW9u cywgYWNjZXNzIGlzIGFsbG93ZWQuIE90aGVyd2lzZSwKPiBhY2Nlc3MgaXMgZGVuaWVkLgo+IC5Q UAo+IEluIHRoaXMgYWxnb3JpdGhtLCBhIHByb2Nlc3MgY2FuIGdhaW4gdGhlIHBlcm1pc3Npb25z IGl0IHJlcXVpcmVzIGJ5Cj4gYWNjdW11bGF0aW5nIHRoZW0gZnJvbSBtdWx0aXBsZSBSaWNoQUNM IGVudHJpZXMuICBUaGlzIGlzIGluIGNvbnRyYXN0IHdpdGgKPiBQT1NJWCBBQ0xzLCB3aGVyZSBh Y2Nlc3MgaXMgb25seSBncmFudGVkIGlmIGFuIEFDTCBlbnRyeSBleGlzdHMgdGhhdCBtYXRjaGVz Cj4gdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBhbmQgaW5jbHVkZXMgYWxsIHRoZSByZXF1ZXN0ZWQg cGVybWlzc2lvbnMuCj4gCj4gLlNTIENvbXB1dGluZyB0aGUgbWF4aW11bSBmaWxlIG1hc2tzCj4g V2hlbiBzZXR0aW5nIGFuIEFDTCBhbmQgbm8gZmlsZSBtYXNrcyBoYXZlIGJlZW4gZXhwbGljaXRs eSBzcGVjaWZpZWQgYW5kIHdoZW4KPiBpbmhlcml0aW5nIGFuIEFDTCBmcm9tIHRoZSBwYXJlbnQg ZGlyZWN0b3J5LCB0aGUgZm9sbG93aW5nIGFsZ29yaXRobSBpcyB1c2VkCgpzL2RpcmVjdG9yeS9k aXJlY3RvcnkgKGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uICIuLi4uIikvCgo+IGZvciBjb21wdXRp bmcgdGhlIGZpbGUgbWFza3M6Cj4gCj4gLklQIDEuIDQKPiBDbGVhciB0aGUgb3duZXIsIGdyb3Vw LCBhbmQgb3RoZXIgZmlsZSBtYXNrcy4gUmVtZW1iZXIgd2hpY2ggcGVybWlzc2lvbnMgaGF2ZQo+ IGFscmVhZHkgYmVlbiBwcm9jZXNzZWQgKGluaXRpYWxseSwgdGhlIGVtcHR5IHNldCkuCj4gLklQ IDIuCj4gRm9yIGVhY2ggQUNMIGVudHJ5Ogo+IC5SUyA0Cj4gLklQIFwoYnUgMgo+IElmIHRoZQo+ IC5CIGluaGVyaXRfb25seQo+IGZsYWcgaXMgc2V0LCBza2lwIHRoZSBlbnRyeS4KPiAuSVAgXChi dQo+IE90aGVyd2lzZSwgY29tcHV0ZSB3aGljaCBwZXJtaXNzaW9ucyB0aGUgZW50cnkgYWxsb3dz IG9yIGRlbmllcyB0aGF0IGhhdmUgbm90Cj4gYmVlbiBwcm9jZXNzZWQgeWV0ICh0aGUgcmVtYWlu aW5nIHBlcm1pc3Npb25zKS4KPiAuSVAgXChidQo+IElmIHRoZSBlbnRyeSBpcyBhbgo+IC5CIG93 bmVyQAo+IGVudHJ5LCBhZGQgdGhlIHJlbWFpbmluZyBwZXJtaXNzaW9ucyB0byB0aGUgb3duZXIg bWFzayBmb3IKPiAuQiBhbGxvdwo+IGVudHJpZXMsIGFuZCByZW1vdmUgdGhlIHJlbWFpbmluZyBw ZXJtaXNzaW9ucyBmcm9tIHRoZSBvd25lciBtYXNrIGZvcgo+IC5CIGRlbnkKPiBlbnRyaWVzLgo+ IC5JUCBcKGJ1Cj4gT3RoZXJ3aXNlLCBpZiB0aGUgZW50cnkgaXMgYW4KPiAuQiBldmVyeW9uZUAK PiBlbnRyeSwgcHJvY2VlZCBhcyB3aXRoCj4gLkIgb3duZXJACj4gZW50cmllcyBidXQgYWRkIG9y IHJlbW92ZSB0aGUgcmVtYWluaW5nIHBlcm1pc3Npb25zIGZyb20gdGhlIG93bmVyLCBncm91cCwg YW5kCj4gb3RoZXIgZmlsZSBtYXNrcy4KPiAuSVAgXChidQo+IE90aGVyd2lzZSwgcHJvY2VlZCBh cyB3aXRoCj4gLkIgb3duZXJACj4gZW50cmllcyBidXQgYWRkIG9yIHJlbW92ZSB0aGUgcmVtYWlu aW5nIHBlcm1pc3Npb25zIGZyb20gdGhlIG93bmVyIGFuZCBncm91cAo+IGZpbGUgbWFza3MuCj4g LklQIFwoYnUKPiBBZGQgdGhlIGVudHJ5J3MgcGVybWlzc2lvbnMgdG8gdGhlIHByb2Nlc3NlZCBw ZXJtaXNzaW9ucy4KPiAuUkUKPiAuUFAKPiBUaGUgcmVzdWx0aW5nIGZpbGUgbWFza3MgcmVwcmVz ZW50IHRoZSBBQ0wgYXMgY2xvc2VseSBhcyBwb3NzaWJsZS4gV2l0aCB0aGVzZQo+IGZpbGUgbWFz a3MsIHRoZSBlZmZlY3RpdmUgcGVybWlzc2lvbnMgdGhhdCB0aGUgQUNMIGdyYW50cyB3aWxsIGJl IHRoZSBzYW1lIHdoZW4KPiB0aGUKPiAuQiBtYXNrZWQKPiBmbGFnIGlzIHNldCBhcyB3aGVuIGl0 IGlzIG5vdCBzZXQuCj4gCj4gLlwiIC5TSCBCVUdTCj4gLlNIIEFVVEhPUgo+IFdyaXR0ZW4gYnkg QW5kcmVhcyBHcsO8bmJhY2hlciA8YWdydWVuYmFAcmVkaGF0LmNvbT4uCj4gCj4gUGxlYXNlIHNl bmQgeW91ciBidWcgcmVwb3J0cywgc3VnZ2VzdGVkIGZlYXR1cmVzIGFuZCBjb21tZW50cyB0byB0 aGUgYWJvdmUgYWRkcmVzcy4KPiAKPiAuU0ggQ09ORk9STUlORyBUTwo+IFJpY2ggQWNjZXNzIENv bnRyb2wgTGlzdHMgYXJlIExpbnV4LXNwZWNpZmljLgo+IC5TSCBTRUUgQUxTTwo+IC5CUiBjaG1v ZCAoMSksCj4gLkJSIGdldHJpY2hhY2wgKDEpLAo+IC5CUiBscyAoMSksCj4gLkJSIHNldHJpY2hh Y2wgKDEpCj4gLkJSIHN0YXQgKDIpLAo+IC5CUiB1bWFzayAoMiksCj4gLkJSIGFjbCAoNSkKPiAu XCIgbGlicmljaGFjbAoKU28sIGluIHRlcm1zIG9mIGFjdHVhbGx5IHRlc3RpbmcgdGhpcyBzdHVm ZiwgaXMgaXQganVzdCBhIG1hdHRlciBvZgphcHBseWluZyB5b3VyIHBhdGNoIHNlcmllcyB0byB0 aGUga2VybmVsLCBidWlsZGluZyB0aGUga2VybmVsLCBwdWxsaW5nCnRoZSBSaWNoQUNMIHVzZXIt c3BhY2UgdG9vbHMgZnJvbSBHaXQsIGFuZCBtb3VudCg4KWluZyBhIGZpbGVzeXN0ZW0gd2l0aAp0 aGUgcmlnaHQgb3B0aW9uPwoKQ2hlZXJzLAoKTWljaGFlbAoKCgoKLS0gCk1pY2hhZWwgS2Vycmlz awpMaW51eCBtYW4tcGFnZXMgbWFpbnRhaW5lcjsgaHR0cDovL3d3dy5rZXJuZWwub3JnL2RvYy9t YW4tcGFnZXMvCkxpbnV4L1VOSVggU3lzdGVtIFByb2dyYW1taW5nIFRyYWluaW5nOiBodHRwOi8v bWFuNy5vcmcvdHJhaW5pbmcvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwp4ZnMgbWFpbGluZyBsaXN0Cnhmc0Bvc3Muc2dpLmNvbQpodHRwOi8vb3NzLnNn aS5jb20vbWFpbG1hbi9saXN0aW5mby94ZnMK