SGVyZSdzIGFuIHVwZGF0ZSBvbiB0aGUgeGVub24gc3Ryb2JlIHVuaXQuCgpUaGUgdHJpZ2dlciBw dWxzZSBjb25kaXRpb25lciBjaXJjdWl0IGRpZCBub3QgbWFrZSBhbnkgbm90aWNlYWJsZSAKZGlm ZmVyZW5jZS7CoCBJdCBzdGFydHMgb2ZmIHdpdGggbm8gbWlzc2VzLCBhbmQgYWZ0ZXIgYWJvdXQg YW4gaG91ciBpdCAKc3RhcnRzIHRvIG1pc3MuLi4gdGhlbiBzbG93bHkgZ2V0cyB3b3JzZSBhbmQg d29yc2UuCgpBIGJpZyBib3ggZmFuIGJsb3dpbmcgb24gdGhlIHVuaXQgZGlkIG5vdCBtYWtlIGEg ZGlmZmVyZW5jZS4gVGhhdCdzIGEgCmJpdCBjb25mdXNpbmcsIGFzIGl0IHN1cmUgc2VlbXMgbGlr ZSBhIHRoZXJtYWwgaXNzdWUuIFRoZSB0cmlnZ2VyIG1vZHVsZSAKYW5kIGxhcmdlIGNhcGFjaXRv ciBhcmUgYm90aCBhdHRhY2hlZCBmaXJtbHkgdG8gdGhlIHVucGFpbnRlZCBtZXRhbCBjYXNlIApv ZiB0aGUgdW5pdCwgSSBndWVzcyB0aGF0J3MgaG93IHRoZXkgZGVzaWduZWQgaXQgZm9yIGhlYXQg dHJhbnNmZXIuwqAgVGhlIAp1bml0IGhhcyBhIGZhbiBpbnRlcm5hbGx5IHRvIG1vdmUgYWlyIGFy b3VuZCwgYnV0IHRoZXJlJ3Mgbm8gYWN0dWFsIAp2ZW50aWxhdGlvbiBvdXRzaWRlIHRoZSBib3gu wqAgSSBjYW4ndCBxdWl0ZSB0ZWxsIGlmIHRoYXQgZmFuIGlzIAp3b3JraW5nLsKgIEknbGwgdHJ5 IHRvIHRlc3QgaXQgc2VwYXJhdGVseS7CoCBJZiBpdCBpcyBoZWF0IGluIHNvbWUgCmNvbXBvbmVu dCAod2hpY2ggbWFrZXMgdGhlIG1vc3Qgc2Vuc2UpLCBpdCBtdXN0IGJlIGZhaXJseSB0aGVybWFs bHkgCmlzb2xhdGVkIGZyb20gdGhlIG91dHNpZGUgb2YgdGhlIGJveC7CoCBHaXZlbiB0aGF0IHRo ZSB0aGluZyB3b3JrcyBmb3IgYW4gCmhvdXIgYmVmb3JlIHN0YXJ0aW5nIHRvIGZhaWwuLi4geW91 J2QgdGhpbmsgaXQgd291bGQgbm90IGJlIGRpZmZpY3VsdCB0byAKbWFpbnRhaW4gYSB0aGVybWFs IGdyYWRpZW50IGxhcmdlIGVub3VnaCB0byBwcmV2ZW50IGEgcHJvYmxlbS4gV2VpcmQuCgpXaGVu IHRoZSB1bml0IHdhcyBmYWlsaW5nLCBhbmQgYmVmb3JlIHRoZSBib3ggZmFuIHdhcyBwdXQgaW4g cGxhY2UuLi4gaXQgCnNlZW1lZCBzbGlnaHRseSB3YXJtLi4uIGJ1dCBmYXIgZnJvbSBzb21ldGhp bmcgeW91J2QgY29uc2lkZXIgb3V0IG9mIHRoZSAKb3JkaW5hcnkuwqAgT25jZSB0aGUgYm94IGZh biB3YXMgb24gaXQgZm9yIGEgd2hpbGUgaXQgc2VlbWVkIGFib3V0IHRoZSAKc2FtZSB0ZW1wZXJh dHVyZSBhcyBiZWZvcmUgdXNlIChhbG1vc3QgY29sZCksIGJ1dCBpdCdzIHBlcmZvcm1hbmNlIApj b250aW51ZWQgdG8gZGV0ZXJpb3JhdGUuwqAgSSBmb3Jnb3QgdG8gYWN0dWFsbHkgdXNlIHRoZSB0 aGVybWFsIGNhbWVyYS7CoCAKSSdsbCB0cnkgdGhhdCBsYXRlciB0byBlc3RhYmxpc2ggYWN0dWFs IG51bWJlcnMgdGhlcmUuCgpPbmUgaW50ZXJlc3RpbmcgdGhpbmcgSSBsZWFybmVkIGlzIHRoYXQg dGhlIHN0cm9iZSB1bml0IGlzIGFjdHVhbGx5IApwb3dlcmVkIEFMTCBUSEUgVElNRSwganVzdCBs aWtlIHRoZSBQQyB0aGF0IHJ1bnMgdGhlIHBpY2sgYW5kIHBsYWNlLsKgIEkgCmFzc3VtZWQgdGhl IHN0cm9iZSB1bml0J3MgcG93ZXIgY2FtZSBvbiB3aGVuIHRoZSBwaWNrIGFuZCBwbGFjZSdzIHBv d2VyIApzd2l0Y2ggd2FzIHByZXNzZWQuLi4gd2hpY2ggaXMgd2hlbiB0aGUgdmFzdCBtYWpvcml0 eSBvZiB0aGUgdmFyaW91cyAKZW1iZWRkZWQgc3lzdGVtcyBhcmUgcG93ZXJlZC7CoCBUaGF0IHRl bGxzIG1lIGl0IGlzIHB1cmVseSB0aGUgcG93ZXIgZnJvbSAKdGhlIHN0cm9iZSBldmVudHMgdGhl bXNlbHZlcyB0aGF0IGNhdXNlIHRoZSBwcm9ibGVtLCBhbmQgdGhhdCB0aGUgc3lzdGVtIAp3aWxs IGdvIGJhY2sgdG8gYSBtb3JlIHN0YWJsZSBjb25kaXRpb24gb24gaXQncyBvd24gZXZlbiB1bmRl ciBwb3dlciBpZiAKdGhlIHN0cm9iZXMgc3RvcCBmb3IgbG9uZyBlbm91Z2guCgoKSSdtIHJlYXNv bmFibHkgY29udmluY2VkIGl0J3MgdGhlIHRyaWdnZXIgbW9kdWxlLsKgIFRoZSByYW5kb20gbWlz c2VzIGRvIApub3QgbWFrZSBzZW5zZSBhcyBhIGZhaWx1cmUgdG8gbWVldCBhIG1pbmltdW0gY2hh cmdlLCBhcyB0aGUgZmFpbHVyZSBjYW4gCmhhcHBlbiB3aXRoIGFueSBhbW91bnQgb2Ygd2FpdCBi ZWZvcmUgdGhlIHN0cm9iZSBldmVudCBvbmNlIHRoZSB1bml0IGhhcyAKc3RhcnRlZCBtaXNzaW5n LsKgIE15IGZhdm9yaXRlIG1vc3QtbGlrZWx5IGNhdXNlIGlzIGEgcmFuZG9tIGFyYy1vdmVyIGlu IAp0aGUgdHJpZ2dlciBtb2R1bGUgYXMgU2VhbiBtZW50aW9uZWQuwqAgSSBhY3R1YWxseSBoYXZl IGEgbGl0dGxlIHZhY3V1bSAKY2hhbWJlciBhbmQgc29tZSBwb3R0aW5nIGNvbXBvdW5kLsKgIFN0 aWxsLCBob3cgc21hbGwgaXMgdGhlIGFjdHVhbCAKbGVhaz/CoCBIb3cgbXVjaCB0aW1lIGluIHZh Y3V1bSB3b3VsZCBpdCBuZWVkIHRvIGNsZWFyP8KgIE1heWJlIG5vdCBsb25nLCAKYnV0IHBvc3Np Ymx5IG1vbnRocy95ZWFycy7CoCBIbW0uCgpJdCBjb3VsZCBhbHNvIGJlIHRoZSBpbnRlcm5hbCBm YW4sIHNvbWVob3cgbGVhZGluZyB0byBhcmMtb3ZlcnMgdG9vLsKgwqAgSSAKY2FuJ3QgcXVpdGUg cGljdHVyZSBob3csIGJ1dCBtYXliZS7CoCBJdCdkIGZpdCB3aXRoIHRoZSBoaWdoIGFwcGFyZW50 IAp0aGVybWFsIGlzb2xhdGlvbiBvZiB3aGF0ZXZlciBpcyBoYXBwZW5pbmcgKGlmIGl0IGlzIGlu IGZhY3QgdGhlcm1hbCBhdCAKYWxsKS7CoCBJJ2xsIHRlc3QgdGhlIGZhbiBub3cuCgoKSSd2ZSBi b3VnaHQgYSB1c2VkIHJlcGxhY2VtZW50IHVuaXQgb2ZmIGViYXkuLi4gcGVyaGFwcyBpdCB3aWxs IHdvcmsgKG9yIApkb25hdGUgYSB0cmlnZ2VyIG1vZHVsZSBhbmQgdGhhdCB3aWxsIHdvcmspLsKg IFRoYW5rcyBmb3IgdGhlIGhlbHAgCmV2ZXJ5b25lLsKgIEknbGwgd3JpdGUgZnVydGhlciB1cGRh dGVzIGFmdGVyIHJlY2VpdmluZyB0aGUgZWJheSB1bml0IGFuZCAKdGVzdGluZyBmdXJ0aGVyICh1 bmxlc3MgdGhlIGZhbiB0dXJucyBvdXQgdG8gYmUgdGhlIGN1bHByaXQpLgoKCkRhcnJvbgoKZGFy cm9uQGdyaWZmaW4ubmV0CgoKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNs aXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlw IG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xp c3QK .