xattr support in NFS?
Subsystems (2)
Hi,
feature - yes, an xattr like interface (though with NFSv4, I think I've tended to somewhat conflate in my mind the notions of xattr and named attribute, sorry).
Well, that's the thing. An interface like xattr is generative. I don't think the ceiling on use cases is desktop search programs. The potential utility of the feature is something that comes to light over time, when you know you have the functionality available. For example, the Ceph developers came up recently with an algorithm to store information related to links in a special xattr. We've thought of exposing file checksum information as attributes. My sense of how many potential uses there may be is related mostly, as with Tigran's remark, to the number of times I've heard someone say, "we could solve that with an xattr/named attribute."
You've said that xattrs and named attributes are completely different, but notwithstanding that, there seems to be logically quite a bit of overlap. Clearly, the fact that the NFS protocol treats named attributes as subfiles is a detail that the client need not expose to applications. It also seems as if an xattr interface is convenient for interacting with at a subset of named attributes (ones with tractable length names/values). I mean, as I note, this is the proplist, and that has been a very successful interface in a lot of systems, going back a -long- ways.
Matt
Quoted 208 lines · ----- "Trond Myklebust
Quoted 1 line · Matt W. Benjamin
Actually, that reasoning sounds a little like a concession that the
feature should be blocked precisely because it may be tremendously popular (useful). I don't think the argument that proplists can be the building blocks for new system--but also application--functionality is a good argument against them.
What feature? The xattr interface? Before declaring it a major success
story, you might want to consider that it has been implemented on several major Linux filesystems for more that 10 years, yet is used by
only a handful of (non-portable) applications.The main use-cases that I'm aware of are:
* Storage for ACLs.
* Storage for security labels.
* Samba uses xattrs for storing various per-file control structures, when xattrs are supported by the underlying filesystem.
* Storage for file search tags for use by programs such as "beagle" and "tracker".Both ACLs and security labels are already covered by the NFS protocol.
We don't need or want an xattr protocol to solve those problems.As for Samba, it works fine on filesystems that don't have xattrs as far
as I know. Using it to re-export an NFS partition to CIFS is a dubious
practice, but is not an xattr-related problem.So that leaves the "beagle" and "tracker" use case, where the xattr usage for storing tags could easily be replaced by a database (and usually is in equivalent portable software). Most people who want to do
serious work on their systems tend to turn off beagle and tracker anyway
since they are notorious cpu hogs.Quoted 4 lines
Quoted 2 lines · ----- "Trond Myklebust
Quoted 1 line · Tigran Mkrtchyan
That's bad news.... Currently we use 'magic files' to set/get
user
Quoted 1 line
Quoted 1 line
Quoted 1 line
specific metadata like number of events, space reservation
and
Quoted 1 line
Quoted 1 line
Quoted 1 line
different file retention policies. The hope was that all could
be
Quoted 7 lines
Quoted 7 lines
done
Quoted 4 lines
with named attributes.
Tigran.
The setting and querying of retention policies is already covered
in
Quoted 8 lines
Quoted 8 lines
the
NFSv4.1 protocol without any need for any additions. Space reservation
is already covered in NFSv4.2 (as are security labels - another common
hobby-horse for xattr advocates). Why don't you implement those instead
of wishing for a completely different way of doing the samething?
Quoted 2 lines
Quoted 2 lines
Your argument demonstrates precisely why we should never do
xattrs
Quoted 2 lines
Quoted 2 lines
over
NFS. It makes it way too easy to go off and invent your ownprivate
Quoted 7 lines
Quoted 7 lines
and
non-standard protocol for doing ioctl()-like RPC calls.Quoted 4 lines
On Tue, Nov 13, 2012 at 8:54 AM, DENIEL Philippe <[email protected]> wrote:
A few years ago, SGI tried to promote "NFS3 XATTR", an extension to NFSv3 to add xattr support. It roughlyadded 3
Quoted 1 line
Quoted 1 line
Quoted 1 line
functions to the protocol (GETXATTR, SETXATTR,
LISTXATTR),
Quoted 2 lines
Quoted 2 lines
in
Quoted 1 line
a similar way as what 9p.2000L does. Nothing but IRIX
had
Quoted 2 lines
Quoted 2 lines
this
Quoted 1 line
NFSv3 feature. As far as I know, it remained quite
exotic
Quoted 8 lines
Quoted 8 lines
and
Quoted 7 lines
stayed a SGI's thing.
Philippe
Matt W. Benjamin a écrit :
Can you restate reasoning why it will never do
so,
Quoted 2 lines
Quoted 2 lines
and
Quoted 1 line
whether this is the same as saying it will
never
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
implement named attributes?
Thanks,
Quoted 8 lines
Quoted 8 lines
Quoted 3 lines
Matt ----- "Trond Myklebust"Quoted 4 lines
wrote:
No. We will never support xattrs over
NFS.
Quoted 7 lines
Quoted 7 lines
Quoted 4 lines
-----Original Message----- From:Quoted 2 lines
[mailto:linux-nfs- [email protected]] On Behalf
Of
Quoted 8 lines
Quoted 8 lines
Quoted 2 lines
Tomasz Chmielewski Sent: Monday, November 12, 201210:14
Quoted 5 lines
AM
To: [email protected]
Subject: xattr support in NFS?Does Linux support xattr in
NFS?
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
IF tries using it in both NFS3
and
Quoted 1 line
Quoted 1 line
Quoted 1 line
NFS4 under Debian Lenny
(2.6.32,
Quoted 7 lines
Quoted 7 lines
Quoted 4 lines
both
server and client), without
success.
Quoted 2 lines
# setfattr -n user.comment -v"this
Quoted 3 lines
Quoted 3 lines
is
Quoted 2 lines
a comment"
/mnt/nfs
setfattr:/mnt/nfs: Operationnot
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
supported -- Tomasz Chmielewski http://blog.wpkg.org -- To unsubscribe from this list:send
Quoted 1 line
Quoted 1 line
Quoted 1 line
the line "unsubscribe
linux-nfs"
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
in the
body of a message to [email protected] More majordomo info
Quoted 7 lines
Quoted 7 lines
Quoted 3 lines
at
http://vger.kernel.org/majordomo-info.html
Quoted 3 lines
N�����r��y���b�X��ǧv�^�){.n�
+����{���"��^n�r���z���h����&���G���h�(�階
<> > �ݢj"���m�����z�ޖ���f���h���~�m�Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
--
To unsubscribe from this list: send the line"unsubscribe
Quoted 8 lines
Quoted 8 lines
Quoted 7 lines
linux-nfs" in
the body of a message to [email protected] More majordomo info at
http://vger.kernel.org/majordomo-info.htmlQuoted 8 lines
Quoted 8 lines
Signature · 6 lines
Trond Myklebust Linux NFS client maintainer NetApp [email protected] www.netapp.comN�����r��y���b�X��ǧv�^�){.n�+����{���"��^n�r���z���h����&���G���h�(�階�ݢj"���m�����z�ޖ���f���h���~�m�
Quoted 1 line
Signature · 6 lines
Trond Myklebust Linux NFS client maintainer NetApp [email protected] www.netapp.com
Signature · 10 lines
Matt Benjamin The Linux Box 206 South Fifth Ave. Suite 150 Ann Arbor, MI 48104 http://linuxbox.com tel. 734-761-4689 fax. 734-769-8938 cel. 734-216-5309
!
T24gV2VkLCAyMDEyLTExLTE0IGF0IDE1OjEzIC0wNTAwLCBNYXR0IFcuIEJlbmphbWluIHdyb3Rl Og0KPiBIaSwNCj4gDQo+IGZlYXR1cmUgLSB5ZXMsIGFuIHhhdHRyIGxpa2UgaW50ZXJmYWNlICh0 aG91Z2ggd2l0aCBORlN2NCwgSSB0aGluayBJJ3ZlIHRlbmRlZCB0byBzb21ld2hhdCBjb25mbGF0 ZSBpbiBteSBtaW5kIHRoZSBub3Rpb25zIG9mIHhhdHRyIGFuZCBuYW1lZCBhdHRyaWJ1dGUsIHNv cnJ5KS4NCj4gDQo+IFdlbGwsIHRoYXQncyB0aGUgdGhpbmcuICBBbiBpbnRlcmZhY2UgbGlrZSB4 YXR0ciBpcyBnZW5lcmF0aXZlLiAgSSBkb24ndCB0aGluayB0aGUgY2VpbGluZyBvbiB1c2UgY2Fz ZXMgaXMgZGVza3RvcCBzZWFyY2ggcHJvZ3JhbXMuICBUaGUgcG90ZW50aWFsIHV0aWxpdHkgb2Yg dGhlIGZlYXR1cmUgaXMgc29tZXRoaW5nIHRoYXQgY29tZXMgdG8gbGlnaHQgb3ZlciB0aW1lLCB3 aGVuIHlvdSBrbm93IHlvdSBoYXZlIHRoZSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZS4gIEZvciBl eGFtcGxlLCB0aGUgQ2VwaCBkZXZlbG9wZXJzIGNhbWUgdXAgcmVjZW50bHkgd2l0aCBhbiBhbGdv cml0aG0gdG8gc3RvcmUgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBsaW5rcyBpbiBhIHNwZWNpYWwg eGF0dHIuICBXZSd2ZSB0aG91Z2h0IG9mIGV4cG9zaW5nIGZpbGUgY2hlY2tzdW0gaW5mb3JtYXRp b24gYXMgYXR0cmlidXRlcy4gIE15IHNlbnNlIG9mIGhvdyBtYW55IHBvdGVudGlhbCB1c2VzIHRo ZXJlIG1heSBiZSBpcyByZWxhdGVkIG1vc3RseSwgYXMgd2l0aCBUaWdyYW4ncyByZW1hcmssIHRv IHRoZSBudW1iZXIgb2YgdGltZXMgSSd2ZSBoZWFyZCBzb21lb25lIHNheSwgIndlIGNvdWxkIHNv bHZlIHRoYXQgd2l0aCBhbiB4YXR0ci9uYW1lZCBhdHRyaWJ1dGUuIg0KDQpJZiBpdCBpcyBhIGZl YXR1cmUgd2hpY2ggaXMgb25seSBhdmFpbGFibGUgaWYgdGhlIHVuZGVybHlpbmcgZmlsZXN5c3Rl bQ0KaGFwcGVucyB0byBiZSBDZXBoLCB0aGVuIHdoeSBleHBvc2UgaXQgb3ZlciBORlMgYXQgYWxs PyBKdXN0IGhhdmUgeW91cg0KY3VzdG9tZXIgcnVuIGEgQ2VwaCBjbGllbnQgYW5kIGJlIGhhcHB5 Lg0KDQpUaGUgcG9pbnQgb2YgdXNpbmcgTkZTIGlzIHRvIF9zdGFuZGFyZGlzZV8uDQoNCj4gWW91 J3ZlIHNhaWQgdGhhdCB4YXR0cnMgYW5kIG5hbWVkIGF0dHJpYnV0ZXMgYXJlIGNvbXBsZXRlbHkg ZGlmZmVyZW50LCBidXQgbm90d2l0aHN0YW5kaW5nIHRoYXQsIHRoZXJlIHNlZW1zIHRvIGJlIGxv Z2ljYWxseSBxdWl0ZSBhIGJpdCBvZiBvdmVybGFwLiAgQ2xlYXJseSwgdGhlIGZhY3QgdGhhdCB0 aGUgTkZTIHByb3RvY29sIHRyZWF0cyBuYW1lZCBhdHRyaWJ1dGVzIGFzIHN1YmZpbGVzIGlzIGEg ZGV0YWlsIHRoYXQgdGhlIGNsaWVudCBuZWVkIG5vdCBleHBvc2UgdG8gYXBwbGljYXRpb25zLiAg SXQgYWxzbyBzZWVtcyBhcyBpZiBhbiB4YXR0ciBpbnRlcmZhY2UgaXMgY29udmVuaWVudCBmb3Ig aW50ZXJhY3Rpbmcgd2l0aCBhdCBhIHN1YnNldCBvZiBuYW1lZCBhdHRyaWJ1dGVzIChvbmVzIHdp dGggdHJhY3RhYmxlIGxlbmd0aCBuYW1lcy92YWx1ZXMpLiAgSSBtZWFuLCBhcyBJIG5vdGUsIHRo aXMgaXMgdGhlIHByb3BsaXN0LCBhbmQgdGhhdCBoYXMgYmVlbiBhIHZlcnkgc3VjY2Vzc2Z1bCBp bnRlcmZhY2UgaW4gYSBsb3Qgb2Ygc3lzdGVtcywgZ29pbmcgYmFjayBhIC1sb25nLSB3YXlzLg0K DQpOTyEgR08gQVdBWSEhISENCg0KU2VyaW91c2x5LCBpZiB5b3UgZG9uJ3QgdW5kZXJzdGFuZCB0 aGUgY29uY2VwdCBvZiBhIHN0YW5kYXJkLCB0aGVuIGdvDQphd2F5IQ0KDQpUcm9uZA0KDQo+IE1h dHQNCj4gDQo+IC0tLS0tICJUcm9uZCBNeWtsZWJ1c3QiIDxUcm9uZC5NeWtsZWJ1c3RAbmV0YXBw LmNvbT4gd3JvdGU6DQo+IA0KPiA+IE9uIFdlZCwgMjAxMi0xMS0xNCBhdCAxMDoyMCAtMDUwMCwg TWF0dCBXLiBCZW5qYW1pbiB3cm90ZToNCj4gPiA+IEFjdHVhbGx5LCB0aGF0IHJlYXNvbmluZyBz b3VuZHMgYSBsaXR0bGUgbGlrZSBhIGNvbmNlc3Npb24gdGhhdCB0aGUNCj4gPiBmZWF0dXJlIHNo b3VsZCBiZSBibG9ja2VkIHByZWNpc2VseSBiZWNhdXNlIGl0IG1heSBiZSB0cmVtZW5kb3VzbHkN Cj4gPiBwb3B1bGFyICh1c2VmdWwpLiAgSSBkb24ndCB0aGluayB0aGUgYXJndW1lbnQgdGhhdCBw cm9wbGlzdHMgY2FuIGJlDQo+ID4gdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgbmV3IHN5c3RlbS0t YnV0IGFsc28NCj4gPiBhcHBsaWNhdGlvbi0tZnVuY3Rpb25hbGl0eSBpcyBhIGdvb2QgYXJndW1l bnQgYWdhaW5zdCB0aGVtLg0KPiA+IA0KPiA+IFdoYXQgZmVhdHVyZT8gVGhlIHhhdHRyIGludGVy ZmFjZT8gQmVmb3JlIGRlY2xhcmluZyBpdCBhIG1ham9yDQo+ID4gc3VjY2Vzcw0KPiA+IHN0b3J5 LCB5b3UgbWlnaHQgd2FudCB0byBjb25zaWRlciB0aGF0IGl0IGhhcyBiZWVuIGltcGxlbWVudGVk IG9uDQo+ID4gc2V2ZXJhbCBtYWpvciBMaW51eCBmaWxlc3lzdGVtcyBmb3IgbW9yZSB0aGF0IDEw IHllYXJzLCB5ZXQgaXMgdXNlZA0KPiA+IGJ5DQo+ID4gb25seSBhIGhhbmRmdWwgb2YgKG5vbi1w b3J0YWJsZSkgYXBwbGljYXRpb25zLg0KPiA+IA0KPiA+IFRoZSBtYWluIHVzZS1jYXNlcyB0aGF0 IEknbSBhd2FyZSBvZiBhcmU6DQo+ID4gICAgICAgKiBTdG9yYWdlIGZvciBBQ0xzLg0KPiA+ICAg ICAgICogU3RvcmFnZSBmb3Igc2VjdXJpdHkgbGFiZWxzLg0KPiA+ICAgICAgICogU2FtYmEgdXNl cyB4YXR0cnMgZm9yIHN0b3JpbmcgdmFyaW91cyBwZXItZmlsZSBjb250cm9sDQo+ID4gICAgICAg ICBzdHJ1Y3R1cmVzLCB3aGVuIHhhdHRycyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5n DQo+ID4gICAgICAgICBmaWxlc3lzdGVtLg0KPiA+ICAgICAgICogU3RvcmFnZSBmb3IgZmlsZSBz ZWFyY2ggdGFncyBmb3IgdXNlIGJ5IHByb2dyYW1zIHN1Y2ggYXMNCj4gPiAgICAgICAgICJiZWFn bGUiIGFuZCAidHJhY2tlciIuDQo+ID4gDQo+ID4gQm90aCBBQ0xzIGFuZCBzZWN1cml0eSBsYWJl bHMgYXJlIGFscmVhZHkgY292ZXJlZCBieSB0aGUgTkZTDQo+ID4gcHJvdG9jb2wuDQo+ID4gV2Ug ZG9uJ3QgbmVlZCBvciB3YW50IGFuIHhhdHRyIHByb3RvY29sIHRvIHNvbHZlIHRob3NlIHByb2Js ZW1zLg0KPiA+IA0KPiA+IEFzIGZvciBTYW1iYSwgaXQgd29ya3MgZmluZSBvbiBmaWxlc3lzdGVt cyB0aGF0IGRvbid0IGhhdmUgeGF0dHJzIGFzDQo+ID4gZmFyDQo+ID4gYXMgSSBrbm93LiBVc2lu ZyBpdCB0byByZS1leHBvcnQgYW4gTkZTIHBhcnRpdGlvbiB0byBDSUZTIGlzIGENCj4gPiBkdWJp b3VzDQo+ID4gcHJhY3RpY2UsIGJ1dCBpcyBub3QgYW4geGF0dHItcmVsYXRlZCBwcm9ibGVtLg0K PiA+IA0KPiA+IFNvIHRoYXQgbGVhdmVzIHRoZSAiYmVhZ2xlIiBhbmQgInRyYWNrZXIiIHVzZSBj YXNlLCB3aGVyZSB0aGUgeGF0dHINCj4gPiB1c2FnZSBmb3Igc3RvcmluZyB0YWdzIGNvdWxkIGVh c2lseSBiZSByZXBsYWNlZCBieSBhIGRhdGFiYXNlIChhbmQNCj4gPiB1c3VhbGx5IGlzIGluIGVx dWl2YWxlbnQgcG9ydGFibGUgc29mdHdhcmUpLiBNb3N0IHBlb3BsZSB3aG8gd2FudCB0bw0KPiA+ IGRvDQo+ID4gc2VyaW91cyB3b3JrIG9uIHRoZWlyIHN5c3RlbXMgdGVuZCB0byB0dXJuIG9mZiBi ZWFnbGUgYW5kIHRyYWNrZXINCj4gPiBhbnl3YXkNCj4gPiBzaW5jZSB0aGV5IGFyZSBub3Rvcmlv dXMgY3B1IGhvZ3MuDQo+ID4gDQo+ID4gPiAtLS0tLSAiVHJvbmQgTXlrbGVidXN0IiA8VHJvbmQu TXlrbGVidXN0QG5ldGFwcC5jb20+IHdyb3RlOg0KPiA+ID4gDQo+ID4gPiA+IE9uIFdlZCwgMjAx Mi0xMS0xNCBhdCAxMTo0NyArMDEwMCwgVGlncmFuIE1rcnRjaHlhbiB3cm90ZToNCj4gPiA+ID4g PiBUaGF0J3MgYmFkIG5ld3MuLi4uIEN1cnJlbnRseSB3ZSB1c2UgJ21hZ2ljIGZpbGVzJyB0byBz ZXQvZ2V0DQo+ID4gdXNlcg0KPiA+ID4gPiA+IHNwZWNpZmljIG1ldGFkYXRhIGxpa2UgbnVtYmVy IG9mIGV2ZW50cywgc3BhY2UgcmVzZXJ2YXRpb24gICANCj4gPiBhbmQNCj4gPiA+ID4gPiBkaWZm ZXJlbnQgZmlsZSByZXRlbnRpb24gcG9saWNpZXMuIFRoZSBob3BlIHdhcyB0aGF0IGFsbCBjb3Vs ZA0KPiA+IGJlDQo+ID4gPiA+IGRvbmUNCj4gPiA+ID4gPiB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMu DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgVGlncmFuLg0KPiA+ID4gPiA+ICANCj4gPiA+ID4gDQo+ ID4gPiA+IFRoZSBzZXR0aW5nIGFuZCBxdWVyeWluZyBvZiByZXRlbnRpb24gcG9saWNpZXMgaXMg YWxyZWFkeSBjb3ZlcmVkDQo+ID4gaW4NCj4gPiA+ID4gdGhlDQo+ID4gPiA+IE5GU3Y0LjEgcHJv dG9jb2wgd2l0aG91dCBhbnkgbmVlZCBmb3IgYW55IGFkZGl0aW9ucy4gU3BhY2UNCj4gPiA+ID4g cmVzZXJ2YXRpb24NCj4gPiA+ID4gaXMgYWxyZWFkeSBjb3ZlcmVkIGluIE5GU3Y0LjIgKGFzIGFy ZSBzZWN1cml0eSBsYWJlbHMgLSBhbm90aGVyDQo+ID4gPiA+IGNvbW1vbg0KPiA+ID4gPiBob2Ji eS1ob3JzZSBmb3IgeGF0dHIgYWR2b2NhdGVzKS4gV2h5IGRvbid0IHlvdSBpbXBsZW1lbnQgdGhv c2UNCj4gPiA+ID4gaW5zdGVhZA0KPiA+ID4gPiBvZiB3aXNoaW5nIGZvciBhIGNvbXBsZXRlbHkg ZGlmZmVyZW50IHdheSBvZiBkb2luZyB0aGUgc2FtZQ0KPiA+IHRoaW5nPw0KPiA+ID4gPiANCj4g PiA+ID4gWW91ciBhcmd1bWVudCBkZW1vbnN0cmF0ZXMgcHJlY2lzZWx5IHdoeSB3ZSBzaG91bGQg bmV2ZXIgZG8NCj4gPiB4YXR0cnMNCj4gPiA+ID4gb3Zlcg0KPiA+ID4gPiBORlMuIEl0IG1ha2Vz IGl0IHdheSB0b28gZWFzeSB0byBnbyBvZmYgYW5kIGludmVudCB5b3VyIG93bg0KPiA+IHByaXZh dGUNCj4gPiA+ID4gYW5kDQo+ID4gPiA+IG5vbi1zdGFuZGFyZCBwcm90b2NvbCBmb3IgZG9pbmcg aW9jdGwoKS1saWtlIFJQQyBjYWxscy4NCj4gPiA+ID4gDQo+ID4gPiA+ID4gT24gVHVlLCBOb3Yg MTMsIDIwMTIgYXQgODo1NCBBTSwgREVOSUVMIFBoaWxpcHBlDQo+ID4gPiA+ID4gPHBoaWxpcHBl LmRlbmllbEBjZWEuZnI+IHdyb3RlOg0KPiA+ID4gPiA+ICAgICAgICAgQSBmZXcgeWVhcnMgYWdv LCBTR0kgdHJpZWQgdG8gcHJvbW90ZSAiTkZTMyBYQVRUUiIsIGFuDQo+ID4gPiA+ID4gICAgICAg ICBleHRlbnNpb24gdG8gTkZTdjMgdG8gYWRkIHhhdHRyIHN1cHBvcnQuIEl0IHJvdWdobHkNCj4g PiBhZGRlZCAzDQo+ID4gPiA+ID4gICAgICAgICBmdW5jdGlvbnMgdG8gdGhlIHByb3RvY29sIChH RVRYQVRUUiwgU0VUWEFUVFIsDQo+ID4gTElTVFhBVFRSKSwNCj4gPiA+ID4gaW4NCj4gPiA+ID4g PiAgICAgICAgIGEgc2ltaWxhciB3YXkgYXMgd2hhdCA5cC4yMDAwTCBkb2VzLiBOb3RoaW5nIGJ1 dCBJUklYDQo+ID4gaGFkDQo+ID4gPiA+IHRoaXMNCj4gPiA+ID4gPiAgICAgICAgIE5GU3YzIGZl YXR1cmUuIEFzIGZhciBhcyBJIGtub3csIGl0IHJlbWFpbmVkIHF1aXRlDQo+ID4gZXhvdGljDQo+ ID4gPiA+IGFuZA0KPiA+ID4gPiA+ICAgICAgICAgc3RheWVkIGEgU0dJJ3MgdGhpbmcuDQo+ID4g PiA+ID4gICAgICAgICANCj4gPiA+ID4gPiAgICAgICAgICAgIFBoaWxpcHBlDQo+ID4gPiA+ID4g ICAgICAgICANCj4gPiA+ID4gPiAgICAgICAgIE1hdHQgVy4gQmVuamFtaW4gYSDDqWNyaXQgOg0K PiA+ID4gPiA+ICAgICAgICAgDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIENhbiB5b3UgcmVz dGF0ZSByZWFzb25pbmcgd2h5IGl0IHdpbGwgbmV2ZXIgZG8NCj4gPiBzbywNCj4gPiA+ID4gYW5k DQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHdoZXRoZXIgdGhpcyBpcyB0aGUgc2FtZSBhcyBz YXlpbmcgaXQgd2lsbA0KPiA+IG5ldmVyDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIGltcGxl bWVudCBuYW1lZCBhdHRyaWJ1dGVzPw0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICANCj4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgVGhhbmtzLA0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAN Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgTWF0dA0KPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICANCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgLS0tLS0gIlRyb25kIE15a2xlYnVzdCINCj4g PiA+ID4gPFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tPg0KPiA+ID4gPiA+ICAgICAgICAgICAg ICAgICB3cm90ZToNCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgDQo+ID4gPiA+ID4gICAgICAg ICAgICAgICAgICAgDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgTm8uIFdlIHdp bGwgbmV2ZXIgc3VwcG9ydCB4YXR0cnMgb3Zlcg0KPiA+IE5GUy4NCj4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgICAgICAgICANCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg DQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RnJvbToNCj4gPiA+ID4gbGludXgtbmZzLW93bmVyQHZnZXIua2VybmVsLm9yZw0KPiA+ID4gPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21haWx0bzpsaW51eC1uZnMtDQo+ID4g PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lckB2Z2VyLmtlcm5lbC5v cmddIE9uIEJlaGFsZg0KPiA+IE9mDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUb21hc3ogQ2htaWVsZXdza2kNCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgMTIsIDIwMTINCj4gPiA+ID4gMTA6 MTQNCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNDQo+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbzogbGludXgtbmZzQHZnZXIua2Vy bmVsLm9yZw0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ViamVj dDogeGF0dHIgc3VwcG9ydCBpbiBORlM/DQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICANCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERv ZXMgTGludXggc3VwcG9ydCB4YXR0ciBpbg0KPiA+IE5GUz8NCj4gPiA+ID4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIA0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSUYgdHJpZXMgdXNpbmcgaXQgaW4gYm90aCBORlMzDQo+ID4gYW5kDQo+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlM0IHVuZGVyIERlYmlhbiBMZW5u eQ0KPiA+ICgyLjYuMzIsDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICANCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBib3RoDQo+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyIGFuZCBjbGllbnQpLCB3aXRob3V0DQo+ID4gPiA+IHN1 Y2Nlc3MuDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2V0ZmF0dHIgLW4gdXNlci5j b21tZW50IC12DQo+ID4gInRoaXMNCj4gPiA+ID4gaXMNCj4gPiA+ID4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGEgY29tbWVudCIgL21udC9uZnMNCj4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNldGZhdHRyOiAvbW50L25mczogT3BlcmF0aW9uDQo+ ID4gbm90DQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0 ZWQNCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KPiA+ID4gPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+ID4gPiA+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQ0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVG9tYXN6IENobWllbGV3c2tpDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBodHRwOi8vYmxvZy53cGtnLm9yZw0KPiA+ID4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0NCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0Og0KPiA+IHNlbmQNCj4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsaW5lICJ1bnN1YnNjcmli ZQ0KPiA+IGxpbnV4LW5mcyINCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIA0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZQ0KPiA+ ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4gPiA+ID4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvZHkgb2YgYSBtZXNzYWdlIHRvDQo+ID4gPiA+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1v cmUNCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ham9yZG9tbyBp bmZvDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4g PiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBhdA0KPiA+ID4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICANCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgDQo+ID4gPiA+IGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0K PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgTu+/ve+/ve+/ve+/ve+/vXLvv73vv71577+977+9 77+9Yu+/vVjvv73vv73Hp3bvv71e77+9Kd66ey5u77+9DQo+ID4gPiA+ID4gICAgICAgICAgICAg ICAgICAgICAgICANCj4gPiAr77+977+977+977+9e++/ve+/ve+/vSLvv73vv71ebu+/vXLvv73v v73vv71677+977+977+9aO+/ve+/ve+/ve+/vSbvv73vv73vv71H77+977+977+9aO+/vSjvv73p mo4NCiA8PiAgPD4gPiAgICAgICAgICAgICAgICAgICAgICAgICDvv73domoi77+977+977+9be+/ ve+/ve+/ve+/ve+/vXrvv73elu+/ve+/ve+/vWbvv73vv73vv71o77+977+977+9fu+/vW3vv70N Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+ID4gPiA+ID4gICAgICAg ICAgICAgICAgIA0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgIA0KPiA+ID4gPiA+ICAgICAg ICAgDQo+ID4gPiA+ID4gICAgICAgICAtLQ0KPiA+ID4gPiA+ICAgICAgICAgVG8gdW5zdWJzY3Jp YmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUNCj4gPiAidW5zdWJzY3JpYmUNCj4gPiA+ ID4gPiAgICAgICAgIGxpbnV4LW5mcyIgaW4NCj4gPiA+ID4gPiAgICAgICAgIHRoZSBib2R5IG9m IGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnDQo+ID4gPiA+ID4gICAgICAg ICBNb3JlIG1ham9yZG9tbyBpbmZvIGF0DQo+ID4gPiA+ID4gICAgICAgICAgaHR0cDovL3ZnZXIu a2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sDQo+ID4gPiA+ID4gICAgICAgICANCj4gPiA+ ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gDQo+ID4gPiA+IC0tIA0KPiA+ID4gPiBUcm9uZCBN eWtsZWJ1c3QNCj4gPiA+ID4gTGludXggTkZTIGNsaWVudCBtYWludGFpbmVyDQo+ID4gPiA+IA0K PiA+ID4gPiBOZXRBcHANCj4gPiA+ID4gVHJvbmQuTXlrbGVidXN0QG5ldGFwcC5jb20NCj4gPiA+ ID4gd3d3Lm5ldGFwcC5jb20NCj4gPiA+ID4NCj4gPiBO77+977+977+977+977+9cu+/ve+/vXnv v73vv73vv71i77+9WO+/ve+/vcendu+/vV7vv70p3rp7Lm7vv70r77+977+977+977+9e++/ve+/ ve+/vSLvv73vv71ebu+/vXLvv73vv73vv71677+977+977+9aO+/ve+/ve+/ve+/vSbvv73vv73v v71H77+977+977+9aO+/vSjvv73pmo7vv73domoi77+977+977+9be+/ve+/ve+/ve+/ve+/vXrv v73elu+/ve+/ve+/vWbvv73vv73vv71o77+977+977+9fu+/vW3vv70NCj4gPiA+IA0KPiA+IA0K PiA+IC0tIA0KPiA+IFRyb25kIE15a2xlYnVzdA0KPiA+IExpbnV4IE5GUyBjbGllbnQgbWFpbnRh aW5lcg0KPiA+IA0KPiA+IE5ldEFwcA0KPiA+IFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tDQo+ ID4gd3d3Lm5ldGFwcC5jb20NCj4gDQoNCi0tIA0KVHJvbmQgTXlrbGVidXN0DQpMaW51eCBORlMg Y2xpZW50IG1haW50YWluZXINCg0KTmV0QXBwDQpUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbQ0K d3d3Lm5ldGFwcC5jb20NCg==