SSB0YWxrZWQgdG8gVUwgdG9kYXkuCgpUaGV5IGNhbid0IGRvIG11Y2ggd2l0aG91dCBhIGNvbXBs YWludCBhbmQgSSdtIG5vdCBzdXJlIEkgc2hvdWxkIGdldAppbnZvbHZlZCB0byB0aGF0IGV4dGVu dC4gSSB3b3VsZCBob3dldmVyIGxpa2UgdGhlIHB1YmxpYyB0byBrbm93IGFib3V0CnRoZSBpc3N1 ZSBhbmQgdGhhdCB0aGUgY29tcGFueSBkZXNpZ25zIHRoZWlyIHByb2R1Y3RzIHRvIGZhaWwuCgpU aGV5IGRpZCBnaXZlIG1lIHRoZSAyIHJlbGV2YW50IHN0YW5kYXJkcyBmb3IgdGhpcyBjbGFzcyBv ZiBwcm9kdWN0LCBJCmhhdmVuJ3QgaGFkIGEgY2hhbmNlIHRvIGxvb2sgYXQgdGhlbSB5ZXQuIFRo ZSBhY3R1YWwgc3RhbmRhcmQgaXMgYQpjb21tZXJjaWFsIHByb2R1Y3QsIGhvd2V2ZXIgdGhleSBw cm92aWRlIGEgZnJlZSBzdW1tYXJ5IGRvY3VtZW50IHRoYXQgaXMKcHVibGljIGFuZCBjYW4gYmUg ZGlzdHJpYnV0ZWQgd2l0aG91dCBwZXJtaXNzaW9uLgoKVGhlIGlzc3VlIGlzIHNvIGNhbGxlZCAn YnVuY2hpbmcnLiBJZiB0aGUgYmxhbmtldCBpcyBkb3VibGVkIG92ZXIgYW5kCndpcmVzIGludGVy c2VjdCAocGh5c2ljYWxseSksIGEgaG90IHNwb3QgaXMgY3JlYXRlZCwgd2hpY2ggZXZlbnR1YWxs eQptZWx0cyB0aGUgaW5zdWxhdGlvbiBJRiB0aGUgdXNlciByb2xscyBvdmVyIG9udG8gdGhlIGJs YW5rZXQsIHdoaWNoCnB1c2hlcyB0aGUgY29uZHVjdG9ycyB0b2dldGhlciB3aXRoIHNvbWUgZm9y Y2UuIFRoZSBjb21wYW55IHJlcCB0b2xkIG1lCkkgbmVlZCB0byBiZSBzdXJlIEkgZGlkbid0IHJv bGwgb3ZlciBvbnRvIHRoZSBidW5jaGVkIGJsYW5rZXQgaW4gbXkKc2xlZXAhISEgV2hpY2ggSSB0 aGluayBpcyB1bnJlYWxpc3RpYy4gQSBoaWdoZXIgbWVsdGluZyBwb2ludCBwbGFzdGljIGluCnRo ZSBoZWF0aW5nIGVsZW1lbnQgaG93ZXZlciB3b3VsZCBuaXAgdGhpcyBwcm9ibGVtIGluIHRoZSBi dWQgaG93ZXZlcgphbmQgSSBiZWxpZXZlIHRoZSBmYWlsc2FmZSBwcm90ZWN0aW9uIHdvdWxkIHN0 aWxsIGJlIGZ1bmN0aW9uYWwgd2l0aCB0aGUKaGlnaGVyIG1lbHRpbmcgcG9pbnQgcGxhc3RpYyBp bnN1bGF0aW9uLgoKSXQgaXMgdW5rbm93biB3aHkgbXkgdW5pdCBkaWRuJ3Qgc2h1dCBkb3duLCB0 aGUgY29udHJvbGxlciBtdXN0IGhhdmUgZmFpbGVkLgoKSSBqdXN0IHdyb3RlIGEgbGV0dGVyIHRv IHRoZSBjb21wYW55IHRvZGF5LiBJIHN1Z2dlc3RlZCB0aGF0IHRoZXkgc2hvdWxkCnVzZSB0aGUg UElDIHRvIG1vbml0b3IgdGhlIGN1cnJlbnQgaW4gdGhlIGhlYXRpbmcgZWxlbWVudCwgYW5kIHRo YXQgaXQKc2hvdWxkIHNodXQgZG93biB0aGUgZHJpdmUgY3VycmVudCBpZiB0aGUgY3VycmVudCB2 YXJpZXMgYnkgbW9yZSB0aGFuIGEKZmV3IHBlcmNlbnQsIGVzcGVjaWFsbHkgaWYgdGhlIGN1cnJl bnQgaW5jcmVhc2VzLiBBbmQsIHRoYXQgdGhlIFBJQwpwcm90ZWN0aW9uIHNob3VsZCBiZSB0aGUg cHJpbWFyeSBwcm90ZWN0aW9uIG1ldGhvZC4KCkkgd2FzIGFibGUgdG8gY29uZmlybSB0aGF0IHRo ZXkgRE8gTk9UIG1lYXN1cmUgdGhlIGN1cnJlbnQgaW4gdGhlCmhlYXRpbmcgZWxlbWVudCBhdCB0 aGUgcHJlc2VudCB0aW1lLgoKSSBmdXJ0aGVyIHN1Z2dlc3RlZCB0aGF0IGhpZ2hlciB0ZW1wZXJh dHVyZSBwbGFzdGljIHdvdWxkIHN0aWxsIHByb3ZpZGUKdGhlIHNhbWUgZmFpbHNhZmUgZnVuY3Rp b24sIGFsYmlldCB0aGUgcmVzcG9uc2Ugd291bGQgYmUgYSBsaXR0bGUgc2xvd2VyLgoKWWVzLCBp dCBpcyBkaWZmaWN1bHQgdG8gZGVzaWduIGEgc2FmZSBlbGVjdHJpYyBibGFua2V0LiBUaGUgcHJp bWFyeQpkYW5nZXIgaXMgb3ZlcmhlYXRpbmcvZmlyZXMuIEVsZWN0cm9jdXRpb24gYmVpbmcgYSBz YWZldHkgaXNzdWUgYXMgd2VsbC4KCkJ1dCwgdG9kYXkgd2UgaGF2ZSBtYXR1cmUgcG93ZXIgY29u dmVyc2lvbiB0ZWNobm9sb2d5IGFuZCBJIHRoaW5rIHRoZQpibGFua2V0IHNob3VsZCBiZSBydW4g b24gbG93IHZvbHRhZ2Ugd2l0aCBmdWxsIGdhbHZhbmljIGluc3VsYXRpb24gZnJvbQpib3RoIGxp bmUgdm9sdGFnZSBwb3dlciBsZWFkcy4gQW5kIHRoYXQgdGhlIGVsZWN0cm9uaWNzIHNob3VsZCBt b25pdG9yCnRoZSBoZWF0aW5nIGVsZW1lbnQgY3VycmVudCBhcyB0aGUgcHJpbWFyeSBzYWZldHkg ZmVhdHVyZS4KCklmIEJpZGRlZm9yZCBkb2VzIG5vdCByZXNwb25kLCBpdCBtaWdodCBiZSB0aW1l IGZvciBhIG5ldyBjb21wYW55IHRvCnRha2UgdGhlIHJlaW5zIGFuZCBidWlsZCBzb21ldGhpbmcg c2FmZXI6Oj4KClJlZ2FyZHMsCgpBcnQKCgrCoApPbiAxMS8zMC8xOCAxOjA2IFBNLCBIYXJvbGQg SGFsbGlrYWluZW4gd3JvdGU6Cj4gU2luY2UgYW4gaW5zdWxhdGlvbiBmYWlsdXJlIFNIT1VMRCBy ZXN1bHQgaW4gYSBzYWZlIHNodXRkb3duLCBJIHdvbmRlciBpZgo+IHRoZSBsb3cgdGVtcGVyYXR1 cmUgaW5zdWxhdGlvbiBpcyBhY3R1YWxseSBhIHNhZmV0eSBmZWF0dXJlLiBFeGNlc3NpdmUKPiB0 ZW1wZXJhdHVyZSwgZm9yIHdoYXRldmVyIHJlYXNvbiwgc2h1dHMgdGhlIHN5c3RlbSBkb3duLiBV TCBoYXMgcmVxdWlyZWQKPiB1cyB0byBoYXZlIGVsZWN0cm9uaWNzIGluIGEgImZpcmUgZW5jbG9z dXJlIiBpZiBtb3JlIHRoYW4gMTUgd2F0dHMgaXMKPiBhdmFpbGFibGUuIEEgZmlyZSBlbmNsb3N1 cmUgZm9yIGFuIGVsZWN0cmljIGJsYW5rZXQgc2VlbXMgZGlmZmljdWx0LCBhbmQKPiBsaW1pdGlu ZyBwb3dlciB0byAxNSB3YXR0cyBzZWVtcyBhIGJpdCBsb3cgKEkgdGhpbmsgYSBwZXJzb24gYXQg cmVzdAo+IGRpc3NpcGF0ZXMgYWJvdXQgMTAwIHdhdHRzLCBzbyBhIHBlcnNvbiB3b3VsZCB3YXJt IHRoZSBiZWQgYSBsb3QgbW9yZSB0aGFuCj4gYSAxNVcgYmxhbmtldCkuCj4KPiBJIHRoaW5rIGl0 IHdvdWxkIGJlIGRpZmZpY3VsdCB0byBkZXNpZ24gYSBzYWZlIGVsZWN0cmljIGJsYW5rZXQuCj4K PiBIYXJvbGQKPgo+CgoKCi0tIApodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlz dCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlClZpZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBv cHRpb25zIGF0Cmh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0 Cg== .