Tm90IGJhZCwgdGhvdWdoIHNvbWUgeWVhcnMgYWdvIEkgZ290IG92ZXIgbXkgc2VlbWluZ2x5IG9i c2Vzc2l2ZSBuZWVkIHRvIApvcHRpbWl6ZSBwcm9jZXNzb3Igc2VsZWN0aW9uIHNvIHRoZXJlIHdh cyBubyByZXNvdXJjZXMgbGVmdCB3YXN0ZWQuICAKVG9kYXksIEkgYWxsIGZvciBzcGVuZGluZyB0 aGUgMjAgY2VudHMgYW5kIHRocm93aW5nIG1vcmUgaGFyZHdhcmUgYXQgdGhlIApwcm9ibGVtLiAg TGlmZSdzIHRvbyBzaG9ydCA7KQoKQ2hlZXJzLAotTmVpbC4KCgoKT24gMy84LzIwMTggNjoyNyBQ TSwgUnVzc2VsbE1jIHdyb3RlOgo+IE9uIDggTWFyY2ggMjAxOCBhdCAxNToyMiwgTmVpbCA8cGlj ZHVkZTNAbmFyd2FuaS5vcmc+IHdyb3RlOgo+Cj4g4oCLUGVyaXBoZXJhbCB0aG91Z2h0OiBJZiB2 aWRlbyBkYXRhIGlzIGRpZ2l0YWwgc2VyaWFsIChwcm9iYWJseSBub3Q/KSBhbmQgaWYKPiB5b3Ug bmVlZCB0byAic3RyZXRjaCB5b3VyIGF2YWlsYWJsZSBkYXRhIGhhbmRsaW5nIGJhbmR3aWR0aCIg KGFuZCBmcm9tIHRoZQo+IEFSTSBiYXNlZCBhbnN3ZXJzIHNvIGZhciBpdCBzZWVtcyB0aGF0IHlv dSBwcm9iYWJseSBkb24ndCksICB0aGVuIHRoZQo+IHRyaXZpYWwgYnV0IHVzZWZ1bCBtZXRob2Qg b2YgdXNpbmcgYW4gZXh0ZXJuYWwgc2VyaWFsIHRvIHBhcmFsbGVsIHJlZ2lzdGVyCj4gYW5kIHRo ZW4gY29weWluZyBpdCBpbiBwYXJhbGxlbCBkaXJlY3RseSB0byB5b3VyIHBhcmFsbGVsIGRhdGEg b3V0cHV0IG1heQo+IGJlIG9mIHVzZS4gVGhlIGluY29taW5nIHNlcmlhbCBjbG9jayBjYW4gYmUg c2F5IDh4IHlvdXIgYXZhaWxhYmxlIHByb2Nlc3Nvcgo+IGNsb2NrIHJhdGUgKG5vdCBuZWNlc3Nh cmlseSBjbG9jayBwZXIgc2UpIGFuZCBsb2NrZWQgdG8gaXQgaW4gc29tZSB3YXkuCj4gVGhlIHJl Z2lzdGVyIGlzCj4g4oCLc2VyaWFsIOKAiwo+IGxvYWRlZCB0aGVuIHBhcmFsbGVsIG91dHB1dChl ZCkuCj4KPiBPYnZpb3VzbHkgJ2xpdHRsZSB0aGluZ3MnIGxpa2Ugc3luY2hyb25pc2F0aW9uIGFu ZCBvdGhlciB0aW1pbmcvY29kaW5nCj4gc2lnbmFscyAnd2lsbCBuZWVkIHdvcmsnLiBJZiB5b3Ug d2FudGVkIGEgUkVBTExZIGNydWRlIGJ1dCBwb3NzaWJseQo+IHdvcmthYmxlIHN5c3RlbSB5b3Ug Y291bGQgcG9zc2libHkgc2F2ZSB0aGUgaW5jb21pbmcgZGF0YSBzaWduYWwgZGF0ZQo+IGZyYW1p bmcgYW5kIGFsbCB0byBTRCBhbmQgdGhlbiBpbnRlcnByZXQgaXQgbGF0dGVybHkgd2hlbiByZWFk aW5nIHRoZQo+IHN0b3JlZCBkYXRhLgo+Cj4gQSBtdWNoIGVhc2llciBhbmQgY29tbW9uIG9sZGUg dXNlIG9mIHRoZSBpbnZlcnNlIG9mIHRoaXMgd2FzIHVzZWQgYnkgZWcgdGhlCj4gU2luY2xhaXIg Wlg4MCAoYW5kIG51bWVyb3VzIG90aGVyIHN5c3RlbXMpIHRvIG91dHB1dCB2aWRlbyBkYXRhIGF0 IGJpdAo+IHJhdGVzIGFib3ZlIHRoZSBwcm9jZXNzb3IgY2FwYWJpbGl0eS4gKFRoZSBaODAgd2Fz IGRlc2lnbmVkIHRvIGFjaGlldmUgc3VjaAo+IG1ldGhvZHMgbWFraW5nIGxpZmUgZXZlbiBlYXNp ZXIpLgo+Cj4gUnVzc2VsbAoKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNs aXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlw IG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xp c3QK .