ODQyLsKgwqDCoMKgwqDCoMKgClN1Y2ggYnJvdGhlcnMgc2hvdWxkIHJlbWVtYmVyIHRoYXQgc2VsZi1leGFtaW5hdGlvbiBtYXkgZGVnZW5lcmF0ZSBpbnRvIAptb3JiaWQgaW50cm9zcGVjdGlvbiwgYW5kIHRoYXQgdGhlIG1haW4gb2JqZWN0IGlzIHRoYXQgdGhleSBzaG91bGQgcG9pbnQgCnRoZW1zZWx2ZXMgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiBhbmQgdGhlbiBzaW1wbHkgZ28gYWhlYWQgYW5kIGRvIHRoZSBiZXN0IHRoZXkgCmNhbi0tIHRoYXQsIHRvIHF1b3RlIG91ciBDaHJpc3RpYW4gc3RvcnksIHRoZXkgc2hvdWxkIGZpcnN0IGZpbGwgdGhlaXIgaGVhcnRzIAp3aXRoIHRoZSBsb3ZlIG9mIEdvZCBhbmQgdGhlbiAod2l0aG91dCBzcGVuZGluZyBhbGwgdGhlaXIgdGltZSBpbiB3ZWlnaGluZyB0aGF0IApsb3ZlLCB0byBzZWUgd2hldGhlciBpdCBpcyBpbmNyZWFzaW5nIG9yIGRpbWluaXNoaW5nKSBzaG91bGQgdHVybiB0aGVpciB3aG9sZSAKYXR0ZW50aW9uIHRvIHRoZSBwcmFjdGljYWwgZXhwcmVzc2lvbiBvZiBpdCBpbiBsb3ZlIG9mIHRoZWlyIGZlbGxvdyBtZW4uIE5vdCAKb25seSBpcyBzdWNoIG91dHBvdXJpbmcgb2YgbG92ZSBhIGJldHRlciBkZWZlbmNlIHRoYW4gYW55IG51bWJlciBvZiBzaGVsbHMsIGJ1dCAKaXQgaXMgYWxzbyBhbiBpbnZlc3RtZW50IHByb2R1Y2luZyBzdHVwZW5kb3VzIHJlc3VsdHMuIEZvciB0aGUgbWFuIHdobyB0aGlua3MgCm5vdGhpbmcgb2YgcmVzdWx0IGlzIHByZWNpc2VseSBoZSB3aG8gaXMgcHJvZHVjaW5nIHRoZSBncmVhdGVzdCBvZiBhbGwgcmVzdWx0cy4KCgo4NDMuwqDCoMKgwqDCoMKgwqAKV2UgaGF2ZSByZWFkIG9mIHRoZSBzcGxlbmRpZCBzZWxmLXNhY3JpZmljZSBvZiB0aGUgTmlybWFuYWtheWFzLCB3aG8sIApoYXZpbmcgd29uIHRoZSByaWdodCB0byB1bnRvbGQgYWdlcyBvZiByZXN0IGluIGJsaXNzIHVuc3BlYWthYmxlLCB5ZXQgaGF2ZSAKY2hvc2VuIHRvIHJlbWFpbiB3aXRoaW4gdG91Y2ggb2YgZWFydGgsIGluIG9yZGVyIHRoYXQgdGhleSBtYXkgc3BlbmQgdGhlaXIgdGltZSAKaW4gdGhlIGdlbmVyYXRpb24gb2YgaW5jYWxjdWxhYmxlIHN0cmVhbXMgb2Ygc3Bpcml0dWFsIGZvcmNlLCB3aGljaCBhcmUgcG91cmVkIAppbnRvIGEgbWlnaHR5IHJlc2Vydm9pciwgdG8gYmUgc3BlbnQgaW4gaGVscGluZyBvbiB0aGUgZXZvbHV0aW9uIG9mIHRoZWlyIGxlc3MgCmRldmVsb3BlZCBmZWxsb3dzLiBUaGUgZ3JlYXQgSGllcmFyY2h5IG9mIEFkZXB0cyBpcyBlbnRydXN0ZWQgd2l0aCB0aGUgCmRpc3BlbnNpbmcgb2YgdGhpcyBmb3JjZSBmb3IgdGhlIGdvb2Qgb2YgdGhlIO+/vWdyZWF0IG9ycGhhbu+/vSBodW1hbml0eSwgYW5kIGl0IGlzIAp1cG9uIHRoaXMgdGhhdCBUaGV5IChhbmQgZXZlbiBUaGVpciBwdXBpbHMsIHVuZGVyIFRoZWlyIGRpcmVjdGlvbikgZHJhdyB3aGVuIApuZWNlc3NpdHkgYXJpc2VzLiAKCgo4NDQuwqDCoMKgwqDCoMKgwqAKTmVlZGxlc3MgdG8gc2F5LCBub3RoaW5nIHRoYXQgd2UgY2FuIGRvIGNhbiBjb21lIHdpdGhpbiBtZWFzdXJhYmxlIApkaXN0YW5jZSBvZiB0aGUgbWFydmVsbG91cyBhY2hpZXZlbWVudCBvZiB0aGUgTmlybWFuYWtheWE7IHlldCBpdCBpcyBpbiB0aGUgCnBvd2VyIG9mIGV2ZXJ5IG9uZSBvZiB1cyB0byBhZGQgc29tZSB0aW55IGRyb3BzIGF0IGxlYXN0IHRvIHRoZSBjb250ZW50cyBvZiB0aGF0IAptaWdodHkgcmVzZXJ2b2lyLCBmb3Igd2hlbmV2ZXIgd2UgcG91ciBvdXQgZnJvbSBvdXJzZWx2ZXMgbG92ZSBvciBkZXZvdGlvbiB3aGljaCAKaXMgdXR0ZXJseSB3aXRob3V0IHRob3VnaHQgb2Ygc2VsZiwgd2UgcHJvZHVjZSByZXN1bHRzIHdoaWNoIGxpZSBmYXIgYmV5b25kIG91ciAKa2VuLiAKCgo4NDUuwqDCoMKgwqDCoMKgwqAKQWxsIGFmZmVjdGlvbiBvciBkZXZvdGlvbiwgaG93ZXZlciBub2JsZSwgd2hpY2ggaGFzIGluIGl0IHRoZSBsZWFzdCAKdGhvdWdodCBvZiBzZWxmIChhcyBpbiB0aGUgY2FzZSBvZiBvbmUgd2hvIGRlc2lyZXMgdGhlIHJldHVybiBvZiBoaXMgYWZmZWN0aW9uLCAKb3IgYSByZXdhcmQgb2YgcHJvdGVjdGlvbiBvciBzYWx2YXRpb24gZm9yIGhpcyBkZXZvdGlvbi0tIG9uZSB3aG8gdGhpbmtzIG5vdDogCu+/vUhvdyBtdWNoIEkgbG92ZSBzby1hbmQtc28h77+9IGJ1dDog77+9SSB3b25kZXIgaG93IG11Y2ggc28tYW5kLXNvIGxvdmVzIG1lIArvv70pLS0gYWxsIHN1Y2ggYWZmZWN0aW9uIG9yIGRldm90aW9uIHNlbmRzIGl0cyBmb3JjZSBpbiBjbG9zZWQgY3VydmVzIHdoaWNoIApyZXR1cm4gdXBvbiB0aG9zZSB3aG8gZ2VuZXJhdGVkIGl0LCBhbmQgdGhlIGthcm1hIHdoaWNoIHN1Y2ggZm9yY2UgbWFrZXMgYmluZHMgYSAKbWFuIGFuZCBicmluZ3MgaGltIGJhY2sgdG8gYmlydGgsIHRoYXQgaGUgbWF5IHJlY2VpdmUgdGhlIHJlc3VsdCBvZiBpdCwganVzdCBhcyAKc3VyZWx5IGFzIGlmIHRoZSBrYXJtYSB3ZXJlIGV2aWwuIAoKCjg0Ni7CoMKgwqDCoMKgwqDCoApCdXQgd2hlbiBzZWxmIGhhcyBiZWVuIGFic29sdXRlbHkgZm9yZ290dGVuLCB3aGVuIHN1Y2ggdGhvdWdodCBoYXMgCm5laXRoZXIgcGFydCBub3IgbG90IGluIHRoZSBzdHJlYW0gd2hpY2ggaXMgb3V0cG91cmVkLCB3aGVuIHRoZSBjdXJ2ZSBpcyBubyAKbG9uZ2VyIGNsb3NlZCBidXQgb3BlbiwgdGhlbiB0aGUga2FybWEgZG9lcyBub3QgYmluZCB0aGUgbWFuIG5vciBicmluZyAKaGltIGJhY2sgdG8gZWFydGguIFlldCB0aGUgZWZmZWN0IGlzIHByb2R1Y2VkLS0gYW4gZWZmZWN0IGZhciB0cmFuc2NlbmRpbmcgYW55IAppbWFnaW5hdGlvbiBvZiBvdXJzLCBmb3IgdGhhdCBvcGVuIGN1cnZlIHJlYWNoZXMgdXAgdG8gdGhlIFNvbGFyIERlaXR5IEhpbXNlbGYsIAphbmQgaXQgaXMgZnJvbSBIaW0gdGhhdCB0aGUgcmVzcG9uc2UgY29tZXM7IGFuZCB0aG91Z2ggdGhhdCByZXNwb25zZSBpbmV2aXRhYmx5IApicmluZ3MgYXMgaXRzIHJlc3VsdCBzb21ldGhpbmcgb2YgYWR2YW5jZW1lbnQgdG8gdGhlIG1hbiB3aG9zZSBsb3ZlIGFuZCBkZXZvdGlvbiAKaGF2ZSBjYWxsZWQgaXQgaW50byBleGlzdGVuY2UsIHlldCBpdCBhbHNvIGF0IHRoZSBzYW1lIHRpbWUgcG91cnMgc3Bpcml0dWFsIApmb3JjZSBpbnRvIHRoZSBncmVhdCByZXNlcnZvaXIgb2YgdGhlIEFkZXB0cy4gU28gaXQgY29tZXMgdG8gcGFzcyB0aGF0IGV2ZXJ5IAp0aG91Z2h0LCB3aGljaCBoYXMgbm8gc2xpZ2h0ZXN0IHRhaW50IG9mIHNlbGYgaW4gaXQsIGlzIGEgdGhvdWdodCB3aGljaCBkaXJlY3RseSAKaGVscHMgdGhlIHdvcmxkLCBhbmQgdGh1cyB0aGUgb3V0cG91cmluZyBvZiBsb3ZlIGlzIGEgYmV0dGVyIGRlZmVuY2UgdGhhbiB0aGUgCnN0cm9uZ2VzdCBvZiBzaGVsbHMsIGFuZCB0aGUgbWFuIHdobyBpcyBmaWxsZWQgd2l0aCB0aGUgcG93ZXJzIG9mIHRoYXQgRGl2aW5lIApMb3ZlIG5lZWRzIG5vIHByb3RlY3Rpb24sIGJlY2F1c2UgaGUgbGl2ZXMgd2l0aGluIHRoZSBoZWFydCBvZiBHb2QgSGltc2VsZi4gCgoKODQ3LsKgwqDCoMKgwqDCoMKgClRISVJEIFNFQ1RJT04gCgoKODQ4LsKgwqDCoMKgwqDCoMKgCkhPVyBXRSBJTkZMVUVOQ0UgT1VSU0VMVkVTIAoKCjg0OS7CoMKgwqDCoMKgwqDCoApDSEFQVEVSIFhJViAKCgo4NTAuwqDCoMKgwqDCoMKgwqAKQlkgT1VSIEhBQklUUyAKCgo4NTEuwqDCoMKgwqDCoMKgwqAKRk9PRCAKCgo4NTIuwqDCoMKgwqDCoMKgwqAKQSBTQVlJTkcgaXMgYXR0cmlidXRlZCB0byB0aGUgQ2hyaXN0IHRvIHRoZSBlZmZlY3QgdGhhdCBub3Qgd2hhdCBpcyBwdXQgCmludG8gdGhlIG1vdXRoIGJ1dCB3aGF0IGNvbWVzIG91dCBvZiB0aGUgbW91dGggcmVhbGx5IGRlZmlsZXMgYSBtYW4uIFdoZXRoZXIgSGUgCmV2ZXIgbWFkZSB0aGF0IHJlbWFyayBvciBub3QsIHRoZXJlIGNhbiBiZSBubyBwb3NzaWJsZSBxdWVzdGlvbiB0aGF0IGEgbWFuIG1heSAKYmUgbW9zdCBkZWNpZGVkbHkgZGVmaWxlZCBieSB3aGF0IGhlIHB1dHMgaW50byBoaXMgbW91dGguIAoKCjg1My7CoMKgwqDCoMKgwqDCoApUaGUgZm9vZCB3aGljaCB3ZSBlYXQgaXMgdGFrZW4gaW50byB0aGUgYm9keSBhbmQgd2UgYWN0dWFsbHkgbWFrZSBpdCBwYXJ0IApvZiBvdXJzZWx2ZXMsIHNvIGl0IGlzIGNsZWFybHkgZXZpZGVudCB0aGF0IHRoZSBtYWduZXRpc20gd2l0aCB3aGljaCBpdCBpcyAKY2hhcmdlZCBpcyBhIG1hdHRlciBvZiBncmVhdCBtb21lbnQgdG8gdXMuIEJvdGggaXRzIHBoeXNpY2FsIGFuZCBpdHMgbWFnbmV0aWMgCnB1cml0eSBhcmUgaW1wb3J0YW50LCB5ZXQgc29tZSBwZW9wbGUgbmVnbGVjdCBvbmUgYW5kIHNvbWUgdGhlIG90aGVyLiBJbiBJbmRpYSwgCmZvciBleGFtcGxlLCBncmVhdCB3ZWlnaHQgaXMgYXR0YWNoZWQgdG8gbWFnbmV0aWMgcHVyaXR5LCBhbmQgYSBtYW4gd2lsbCBub3QgZWF0IApmb29kIHdoaWNoIGhhcyBiZWVuIHN1YmplY3RlZCB0byB0aGUgbWFnbmV0aXNtIG9mIHNvbWUgb25lIG9mIGxvd2VyIGNhc3RlLiBPbiAKdGhlIG90aGVyIGhhbmQgaGUgaXMgbXVjaCBsZXNzIGNhcmVmdWwgdGhhbiB3ZSBhcmUgaW4gdGhlIFdlc3QgYXMgdG8gdGhlIApwaHlzaWNhbCBjbGVhbmxpbmVzcyBvZiB0aGUgcHJlcGFyYXRpb25zLCBmb3JnZXR0aW5nIHRoYXQgbm90aGluZyB3aGljaCBpcyAKcGh5c2ljYWxseSBkaXJ0eSBjYW4gZXZlciBiZSBtYWduZXRpY2FsbHkgcHVyZS4gV2UgYXJlIHVzdWFsbHkgcGFydGljdWxhciBhcyB0byAKdGhlIHBoeXNpY2FsIGNsZWFubGluZXNzLCBidXQgd2UgbmV2ZXIgdGhpbmsgb2YgdGhlIHF1ZXN0aW9uIG9mIG1hZ25ldGljIHB1cml0eS4KCgo4NTQuwqDCoMKgwqDCoMKgwqAKVGhlIGZhY3Qgd2hpY2ggbW9zdCBzZXJpb3VzbHkgYWZmZWN0cyB0aGUgbWFnbmV0aXNtIG9mIGZvb2QgaXMgdGhhdCBpdCBpcyAKdG91Y2hlZCBzbyBtdWNoIGJ5IHRoZSBoYW5kcyBvZiB0aGUgY29vayBpbiB0aGUgY291cnNlIG9mIGl0cyBwcmVwYXJhdGlvbi4gTm93IAp0aGUgc3BlY2lhbCBtYWduZXRpc20gb2YgYSBwZXJzb24gZmxvd3Mgb3V0IG1vc3Qgc3Ryb25nbHkgdGhyb3VnaCB0aGUgaGFuZHMsIGFuZCAKY29uc2VxdWVudGx5IGZvb2Qgd2hpY2ggaXMgdG91Y2hlZCBieSB0aGUgaGFuZHMgY2Fubm90IGJ1dCBiZSBoaWdobHkgY2hhcmdlZCAKd2l0aCB0aGF0IG1hZ25ldGlzbS4gVGhpcyBpcyBzcGVjaWFsbHkgdHJ1ZSBpbiB0aGUgY2FzZSBvZiBwYXN0cnkgYW5kIGJyZWFkLCAKd2hpY2ggYXJlIGtuZWFkZWQgYnkgaGFuZCBpbiBjb3VudHJpZXMgd2hpY2ggYXJlIHRvbyBiYWNrd2FyZCB0byBoYXZlIGxlYXJudCB0aGUgCnVzZSBvZiBtYWNoaW5lcnkgZm9yIHRoZXNlIHB1cnBvc2VzLiBBbGwgZm9vZCBtYWRlIGluIHRoYXQgd2F5IHdvdWxkIGJlIAphYnNvbHV0ZWx5IHVuZml0IHRvIGJlIGVhdGVuIGF0IGFsbCwgd2VyZSBpdCBub3QgZm9yIHRoZSBmYWN0IHRoYXQgZm9ydHVuYXRlbHkgCnRoZSBhY3Rpb24gb2YgZmlyZSBpbiB0aGUgYmFraW5nIG9yIHRoZSBjb29raW5nIHJlbW92ZXMgdGhlIHRyYWNlcyBvZiBtb3N0IGtpbmRzIApvZiBwaHlzaWNhbCBtYWduZXRpc20uIFN0aWxsIGl0IGlzIGVtaW5lbnRseSBkZXNpcmFibGUgdGhhdCB0aGUgY29vayBzaG91bGQgCnRvdWNoIHRoZSBmb29kIGFzIGxpdHRsZSBhcyBwb3NzaWJsZSwgYW5kIHNvIGxhZGxlcyBhbmQgc3Bvb25zLCB3aGljaCBjYW4gCnJlYWRpbHkgYmUgZGVtYWduZXRpc2VkLCBzaG91bGQgYWx3YXlzIGJlIHVzZWQgaW4gY29va2luZyBhbmQgc2VydmluZyAKZXZlcnl0aGluZzsgYW5kIHRoZXkgc2hvdWxkIGJlIGtlcHQgcmlnb3JvdXNseSBjbGVhbi4gCgoKODU1LsKgwqDCoMKgwqDCoMKgCkluIG9yZGVyIHRvIHByZXZlbnQgYW55IGF2b2lkYWJsZSBtaXh0dXJlIG9mIG1hZ25ldGlzbSBtYW55IGFuIG9jY3VsdCAKc3R1ZGVudCBpbnNpc3RzIHVwb24gYWx3YXlzIHVzaW5nIGhpcyBvd24gcHJpdmF0ZSBjdXAgYW5kIHNwb29uLiBNYWRhbWUgCkJsYXZhdHNreSBzdHJvbmdseSBhZHZpc2VkIHRoaXMsIGFuZCBzYWlkIHRoYXQgd2hlbiBpdCBjb3VsZCBub3QgYmUgZG9uZSB0aGUgY3VwIAphbmQgdGhlIHNwb29uIHRoYXQgd2VyZSB1c2VkIHNob3VsZCBiZSBkZW1hZ25ldGlzZWQgYmVmb3JlIGVhY2ggbWVhbC4gVGhlIApvcmRpbmFyeSBtYW4gcGF5cyBubyBhdHRlbnRpb24gd2hhdGV2ZXIgdG8gbWF0dGVycyBzdWNoIGFzIHRoZXNlLCBidXQgdGhlIApzdHVkZW50IG9mIG9jY3VsdGlzbSB3aG8gaXMgdHJ5aW5nIHRvIGVudGVyIHVwb24gdGhlIFBhdGggbXVzdCBiZSBtb3JlIGNhcmVmdWwuIApJdCBpcyBwb3NzaWJsZSB0byBkZW1hZ25ldGlzZSBmb29kIGJ5IGEgZmlybSBlZmZvcnQgb2YgdGhlIHdpbGwsIGFuZCB3aXRoIGEgCmxpdHRsZSBwcmFjdGljZSBhIG1lcmUgd2F2ZSBvZiB0aGUgaGFuZCBjb3VwbGVkIHdpdGggYSBzdHJvbmcgdGhvdWdodCB3aWxsIGRvIAp0aGUgdGhpbmcgYWxtb3N0IGluc3RhbnRhbmVvdXNseS4gQnV0IGl0IG11c3QgYmUgcmVtZW1iZXJlZCB0aGF0IGRlbWFnbmV0aXNhdGlvbiAKcmVtb3ZlcyBuZWl0aGVyIHBoeXNpY2FsIGRpcnQgbm9yIGl0cyBhc3RyYWwgY291bnRlcnBhcnQsIHRob3VnaCBpdCBtYXkgdGFrZSAKYXdheSBvdGhlciBhc3RyYWwgaW5mbHVlbmNlOyBhbmQgdGhlcmVmb3JlIGV2ZXJ5IHByZWNhdXRpb24gbXVzdCBiZSB0YWtlbiB0byBzZWUgCnRoYXQgY2xlYW5saW5lc3MgaXMgcGVyZmVjdCBpbiBhbGwgY3VsaW5hcnkgYXJyYW5nZW1lbnRzLiAKCgo4NTYuwqDCoMKgwqDCoMKgwqAKRm9vZCBhbHNvIGFic29yYnMgdGhlIG1hZ25ldGlzbSBvZiB0aG9zZSB3aG8gYXJlIGluIGNsb3NlIHByb3hpbWl0eSB0byB1cyAKd2hlbiB3ZSBhcmUgZWF0aW5nLiBJdCBpcyBmb3IgdGhhdCByZWFzb24gdGhhdCBpbiBJbmRpYSBhIG1hbiBwcmVmZXJzIHRvIGVhdCAKYWxvbmUsIGFuZCBtdXN0IG5vdCBiZSBzZWVuIGVhdGluZyBieSBvbmUgb2YgbG93ZXIgY2FzdGUuIFRoZSBtaXh0dXJlIHdoaWNoIAphcmlzZXMgZnJvbSBlYXRpbmcgaW4gcHVibGljIGFtaWRzdCBhIGNyb3dkIG9mIHN0cmFuZ2VycywgYXMgaW4gYSByZXN0YXVyYW50LCBpcyAKYWx3YXlzIHVuZGVzaXJhYmxlLCBhbmQgc2hvdWxkIGJlIGF2b2lkZWQgYXMgbXVjaCBhcyBwb3NzaWJsZS4gVGhlIG1hZ25ldGlzbSBvZiAKb25lJyBzIG93biBmYW1pbHkgaXMgdXN1YWxseSBtb3JlIHN5bXBhdGhldGljLCBhbmQgYXQgYW55IHJhdGUgb25lIGlzIGFjY3VzdG9tZWQgCnRvIGl0LCBzbyB0aGF0IGl0IGlzIG11Y2ggbGVzcyBsaWtlbHkgdG8gYmUgaGFybWZ1bCB0aGFuIHRoZSBzdWRkZW4gaW50cm9kdWN0aW9uIApvZiBhIGNvbWJpbmF0aW9uIG9mIGVudGlyZWx5IHN0cmFuZ2UgdmlicmF0aW9ucywgbWFueSBvZiB3aGljaCBhcmUgbW9zdCBsaWtlbHkgCnF1aXRlIG91dCBvZiBoYXJtb255IHdpdGggb3VyIG93bi4gCgoKODU3LsKgwqDCoMKgwqDCoMKgClRoZXJlIGFyZSwgaG93ZXZlciwgYWx3YXlzIHR3byBraW5kcyBvZiBtYWduZXRpc20gaW4gZXZlcnkgYXJ0aWNsZSBvZiAKZm9vZC0tIHRoZSBpbnRlcm5hbCBhbmQgdGhlIGV4dGVybmFsLS0gdGhlIGZvcm1lciBiZWxvbmdpbmcgdG8gaXRzIG93biAKY2hhcmFjdGVyLCB0aGUgbGF0dGVyIGltcHJlc3NlZCB1cG9uIGl0IGZyb20gd2l0aG91dC4gVGhlIG1hZ25ldGlzbSBvZiB0aGUgCm1lcmNoYW50IHdobyBzZWxscyBpdCBhbmQgb2YgdGhlIGNvb2sgYXJlIGJvdGggb2YgdGhlIGxhdHRlciBraW5kLCBhbmQgY2FuIAp0aGVyZWZvcmUgYmUgcmVtb3ZlZCBieSB0aGUgYWN0aW9uIG9mIHRoZSBmaXJlOyBidXQgdGhlIG1hZ25ldGlzbSB3aGljaCBpcyAKaW5oZXJlbnQgaW4gaXQgaXMgbm90IGF0IGFsbCBhZmZlY3RlZCBieSB0aGF0IGFjdGlvbi4gTm8gYW1vdW50IG9mIGNvb2tpbmcgb2YgCmRlYWQgZmxlc2gsIGZvciBleGFtcGxlLCBjYW4gdGFrZSBhd2F5IGZyb20gaXQgaXRzIGluaGVyZW50bHkgb2JqZWN0aW9uYWJsZSAKY2hhcmFjdGVyLCBub3IgYWxsIHRoZSBmZWVsaW5ncyBvZiBwYWluIGFuZCBob3Jyb3IgYW5kIGhhdHJlZCB3aXRoIHdoaWNoIGl0IGlzIApzYXR1cmF0ZWQuIE5vIHBlcnNvbiB3aG8gY2FuIHNlZSB0aGF0IG1hZ25ldGlzbSBhbmQgdGhlIHZpYnJhdGlvbnMgd2hpY2ggaXQgc2V0cyAKdXAgY2FuIHBvc3NpYmx5IGVhdCBtZWF0LiAKCgo4NTguwqDCoMKgwqDCoMKgwqAKSU5UT1hJQ0FUSU5HIExJUVVPUlMgCgoKODU5LsKgwqDCoMKgwqDCoMKgCkluZGVlZCwgbWFueSBvZiB0aGUgcGVybmljaW91cyBoYWJpdHMgb2YgbGlmZSBvZiB0aGUgaWdub3JhbnQgd291bGQgCmJlY29tZSBpbnN0YW50bHkgaW1wb3NzaWJsZSBmb3IgdGhlbSBpZiB0aGV5IGNvdWxkIHNlZSB0aGUgaGlkZGVuIHNpZGUgb2YgdGhlaXIgCnNlbGZpc2ggaW5kdWxnZW5jZXMuIEV2ZW4gdGhlIHVuZGV2ZWxvcGVkIHNwZWNpbWVucyBvZiBodW1hbml0eSB3aG8gY2x1c3RlciAKcm91bmQgdGhlIGJhciBvZiBhIHB1YmxpYy1ob3VzZSB3b3VsZCBzdXJlbHkgc2hyaW5rIGJhY2sgd2l0aCB0ZXJyb3IsIGlmIHRoZXkgCmNvdWxkIHNlZSB0aGUgY2xhc3Mgb2YgZW50aXRpZXMgYnkgd2hpY2ggdGhleSBhcmUgc3Vycm91bmRlZC0tIHRoZSBsb3dlc3QgYW5kIAptb3N0IGJydXRhbCB0eXBlcyBvZiBhIHJ1ZGltZW50YXJ5IGV2b2x1dGlvbiwgYSBibG9hdGVkLCBsaXZpZCBmdW5ndXMgZ3Jvd3RoIG9mIAppbmRlc2NyaWJhYmxlIGhvcnJvcjsgYW5kIGZhciB3b3JzZSBldmVuIHRoYW4gdGhleSwgYmVjYXVzZSB0aGV5IGFyZSBkZWdyYWRlZCAKZnJvbSBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgc28gbXVjaCBiZXR0ZXIsIGFyZSB0aGUgZ2hhc3RseSBjcm93ZHMgb2YgZGVhZCAKZHJ1bmthcmRzLS0gZHJpbmstc29kZGVuIGRyZWdzIG9mIGh1bWFuaXR5LCB3aG8gaGF2ZSBkcm93bmVkIHRoZSBkaXZpbmUgaW1hZ2UgaW4gCmRlcHRocyBvZiBkaXJlZnVsIGRlYmF1Y2hlcnkgYW5kIG5vdyBjbHVzdGVyIHJvdW5kIHRoZWlyIHN1Y2Nlc3NvcnMsIHVyZ2luZyB0aGVtIApvbiB0byB3aWxkZXIgY2Fyb3VzYWxzIHdpdGggaGlkZW91cyBsZWVycyBhbmQgbW9ja2luZyBsYXVnaHRlciwgeWV0IHdpdGggYSAKbG9hdGhseSBsdXN0IGF3ZnVsIHRvIGJlaG9sZC4gCgoKODYwLsKgwqDCoMKgwqDCoMKgCkFsbCB0aGlzIGlzIGVudGlyZWx5IGFwYXJ0IGZyb20gdGhlIHVucXVlc3Rpb25hYmxlIGRldGVyaW9yYXRpb24gd2hpY2ggaXMgCmJyb3VnaHQgYWJvdXQgaW4gYm90aCBhc3RyYWwgYW5kIG1lbnRhbCBib2RpZXMgYnkgdGhlIGluZHVsZ2VuY2UgaW4gaW50b3hpY2F0aW5nIApsaXF1b3JzLiBUaGUgbWFuIHdobyBpcyBlYWdlcmx5IHNlZWtpbmcgZm9yIGV4Y3VzZXMgZm9yIHRoZSBncmF0aWZpY2F0aW9uIG9mIAppZ25vYmxlIGNyYXZpbmdzIGZyZXF1ZW50bHkgYXNzZXJ0cyB0aGF0IGZvb2QgYW5kIGRyaW5rLCBiZWxvbmdpbmcgYXMgdGhleSBkbyAKcHVyZWx5IHRvIHRoZSBwaHlzaWNhbCB3b3JsZCwgY2FuIGhhdmUgYnV0IGxpdHRsZSBlZmZlY3QgdXBvbiBhIG1hbicgcyBpbm5lciAKZGV2ZWxvcG1lbnQuIFRoaXMgc3RhdGVtZW50IGlzIG9idmlvdXNseSBub3QgaW4gYWNjb3JkYW5jZSB3aXRoIGNvbW1vbiBzZW5zZSwgCmZvciB0aGUgcGh5c2ljYWwgbWF0dGVyIGluIG1hbiBpcyBpbiBleGNlZWRpbmdseSBjbG9zZSB0b3VjaCB3aXRoIHRoZSBhc3RyYWwgYW5kIAptZW50YWwtLSBzbyBtdWNoIHNvLCB0aGF0IGVhY2ggaXMgdG8gYSBncmVhdCBleHRlbnQgYSBjb3VudGVycGFydCBvZiB0aGUgb3RoZXIsIAphbmQgY29hcnNlbmVzcyBhbmQgZ3Jvc3NuZXNzIGluIHRoZSBwaHlzaWNhbCBib2R5IGltcGx5IGEgc2ltaWxhciBjb25kaXRpb24gaW4gCnRoZSBoaWdoZXIgdmVoaWNsZXMuIAoKCjg2MS7CoMKgwqDCoMKgwqDCoApUaGVyZSBhcmUgbWFueSB0eXBlcyBhbmQgZGVncmVlcyBvZiBkZW5zaXR5IG9mIGFzdHJhbCBtYXR0ZXIsIHNvIHRoYXQgaXQgCmlzIHBvc3NpYmxlIGZvciBvbmUgbWFuIHRvIGhhdmUgYW4gYXN0cmFsIGJvZHkgYnVpbHQgb2YgZXhjZWVkaW5nbHkgY29hcnNlIGFuZCAKZ3Jvc3MgcGFydGljbGVzLCB3aGlsZSBhbm90aGVyIG1heSBoYXZlIG9uZSB3aGljaCBpcyBtdWNoIG1vcmUgZGVsaWNhdGUgYW5kIApyZWZpbmVkLiBBcyB0aGUgYXN0cmFsIGJvZHkgaXMgdGhlIHZlaGljbGUgb2YgdGhlIGVtb3Rpb25zIGFuZCBwYXNzaW9ucywgaXQgCmZvbGxvd3MgdGhhdCBhIG1hbiB3aG9zZSBhc3RyYWwgYm9keSBpcyBvZiB0aGUgcnVkZXIgdHlwZSB3aWxsIGJlIGNoaWVmbHkgCmFtZW5hYmxlIHRvIHRoZSBsb3dlciBhbmQgcm91Z2hlciB2YXJpZXRpZXMgb2YgcGFzc2lvbiBhbmQgZW1vdGlvbjsgd2hlcmVhcyBhIAptYW4gd2hvIGhhcyBhIGZpbmVyIGFzdHJhbCBib2R5IHdpbGwgZmluZCB0aGF0IGl0cyBwYXJ0aWNsZXMgbW9zdCByZWFkaWx5IAp2aWJyYXRlIGluIHJlc3BvbnNlIHRvIGhpZ2hlciBhbmQgbW9yZSByZWZpbmVkIGVtb3Rpb25zIGFuZCBhc3BpcmF0aW9ucy4gVGh1cyBhIAptYW4gd2hvIGlzIGJ1aWxkaW5nIGZvciBoaW1zZWxmIGEgZ3Jvc3MgYW5kIGltcHVyZSBwaHlzaWNhbCBib2R5IGlzIGJ1aWxkaW5nIGZvciAKaGltc2VsZiBhdCB0aGUgc2FtZSB0aW1lIGNvYXJzZSBhbmQgdW5jbGVhbiBhc3RyYWwgYW5kIG1lbnRhbCBib2RpZXMgYXMgd2VsbC4gClRoaXMgZWZmZWN0IGlzIHZpc2libGUgYXQgb25jZSB0byB0aGUgZXllIG9mIHRoZSB0cmFpbmVkIGNsYWlydm95YW50LCBhbmQgaGUgCndpbGwgcmVhZGlseSBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWFuIHdobyBmZWVkcyBoaXMgcGh5c2ljYWwgdmVoaWNsZSB3aXRoIHB1cmUgCmZvb2QgYW5kIGFub3RoZXIgd2hvIGNvbnRhbWluYXRlcyBpdCBieSBpbnRveGljYXRpbmcgZHJpbmsgb3IgZGVjYXlpbmcgZmxlc2guCgoKODYyLsKgwqDCoMKgwqDCoMKgClRoZXJlIGNhbiBiZSBubyBxdWVzdGlvbiB0aGF0IGl0IGlzIHRoZSBkdXR5IG9mIGV2ZXJ5IG1hbiB0byBkZXZlbG9wIGFsbCAKaGlzIHZlaGljbGVzIGFzIGZhciBhcyBwb3NzaWJsZSBpbiBvcmRlciB0byBtYWtlIHRoZW0gcGVyZmVjdCBpbnN0cnVtZW50cyBmb3IgCnRoZSB1c2Ugb2YgdGhlIHNvdWwsIHdoaWNoIGluIGl0c2VsZiBpcyBiZWluZyB0cmFpbmVkIHRvIGJlIGEgZml0IGluc3RydW1lbnQgaW4gCnRoZSBoYW5kcyBvZiB0aGUgU29sYXIgRGVpdHksIGFuZCBhIHBlcmZlY3QgY2hhbm5lbCBmb3IgdGhlIGRpdmluZSBsb3ZlLiBUaGUgCmZpcnN0IHN0ZXAgdG93YXJkcyB0aGlzIGlzIHRoYXQgdGhlIG1hbiBoaW1zZWxmIHNob3VsZCBsZWFybiB0aG9yb3VnaGx5IHRvIApjb250cm9sIHRoZSBsb3dlciBib2RpZXMsIHNvIHRoYXQgdGhlcmUgc2hhbGwgYmUgaW4gdGhlbSBubyB0aG91Z2h0IG9yIGZlZWxpbmcgCmV4Y2VwdCB0aG9zZSBoZSBhcHByb3Zlcy4gCgoKODYzLsKgwqDCoMKgwqDCoMKgCkFsbCB0aGVzZSB2ZWhpY2xlcywgdGhlcmVmb3JlLCBtdXN0IGJlIGluIHRoZSBoaWdoZXN0IHBvc3NpYmxlIGNvbmRpdGlvbiAKb2YgZWZmaWNpZW5jeTsgdGhleSBtdXN0IGJlIHB1cmUgYW5kIGNsZWFuIGFuZCBmcmVlIGZyb20gdGFpbnQ7IGFuZCBpdCBpcyAKb2J2aW91cyB0aGF0IHRoaXMgY2FuIG5ldmVyIGJlLCBzbyBsb25nIGFzIHRoZSBtYW4gcHV0cyBpbnRvIHRoZSBwaHlzaWNhbCBib2R5IAp1bmRlc2lyYWJsZSBjb25zdGl0dWVudHMuIEV2ZW4gdGhlIHBoeXNpY2FsIHZlaGljbGUgYW5kIGl0cyBzZW5zZSBwZXJjZXB0aW9ucyAKY2FuIG5ldmVyIGJlIGF0IHRoZWlyIGJlc3QgdW5sZXNzIHRoZSBmb29kIGlzIHB1cmUsIGFuZCB0aGUgc2FtZSB0aGluZyBpcyB0cnVlIAp0byBhIG11Y2ggZ3JlYXRlciBleHRlbnQgd2l0aCByZWdhcmQgdG8gdGhlIGhpZ2hlciBib2RpZXMuIFRoZWlyIHNlbnNlcyBhbHNvIApjYW5ub3QgYmUgY2xlYXIgaWYgaW1wdXJlIG9yIGNvYXJzZSBtYXR0ZXIgaXMgZHJhd24gaW50byB0aGVtOyBhbnl0aGluZyBvZiB0aGlzIApuYXR1cmUgY2xvZ3MgYW5kIGR1bGxzIHRoZW0sIHNvIHRoYXQgaXQgYmVjb21lcyBmYXIgbW9yZSBkaWZmaWN1bHQgZm9yIHRoZSBzb3VsIAp0byB1c2UgdGhlbS4gSW5kdWxnZW5jZSBpbiBhbGNvaG9sIG9yIGNhcm5pdm9yb3VzIGRpZXQgaXMgYWJzb2x1dGVseSBmYXRhbCB0byAKYW55dGhpbmcgbGlrZSByZWFsIGRldmVsb3BtZW50LCBhbmQgdGhvc2Ugd2hvIGFkb3B0IHRoZXNlIGhhYml0cyBhcmUgcHV0dGluZyAKc2VyaW91cyBhbmQgdXR0ZXJseSB1bm5lY2Vzc2FyeSBkaWZmaWN1bHRpZXMgaW4gdGhlaXIgb3duIHdheS4gCgoKODY0LsKgwqDCoMKgwqDCoMKgCk5vciBpcyB0aGUgZWZmZWN0IGR1cmluZyBwaHlzaWNhbCBsaWZlIHRoZSBvbmx5IHBvaW50IHdoaWNoIGlzIHRvIGJlIApib3JuZSBpbiBtaW5kIGluIGNvbm5lY3Rpb24gd2l0aCB0aGlzIG1hdHRlci4gSWYsIHRocm91Z2ggaW50cm9kdWNpbmcgaW1wdXJlIApwYXJ0aWNsZXMgaW50byBoaXMgcGh5c2ljYWwgYm9keSwgdGhlIG1hbiBidWlsZHMgaGltc2VsZiBhbiB1bnNlZW1seSBhbmQgdW5jbGVhbiAKYXN0cmFsIGJvZHksIHdlIG11c3Qgbm90IGZvcmdldCB0aGF0IGl0IGlzIGluIHRoaXMgZGVncmFkZWQgdmVoaWNsZSB0aGF0IGhlIHdpbGwgCmhhdmUgdG8gc3BlbmQgdGhlIGZpcnN0IHBhcnQgb2YgaGlzIGxpZmUgYWZ0ZXIgZGVhdGguIEp1c3QgYXMsIGhlcmUgaW4gdGhlIApwaHlzaWNhbCB3b3JsZCwgaGlzIGNvYXJzZW5lc3MgZHJhd3MgaW50byBhc3NvY2lhdGlvbiB3aXRoIGhpbSBhbGwgc29ydHMgb2YgCnVuZGVzaXJhYmxlIGVudGl0aWVzIHdobywgbGlrZSBwYXJhc2l0ZXMsIG1ha2UgaGlzIHZlaGljbGVzIHRoZWlyIGhvbWUsIGFuZCBmaW5kIAphIHJlYWR5IHJlc3BvbnNlIHdpdGhpbiBoaW0gdG8gdGhlaXIgbG93ZXIgcGFzc2lvbnMsIHNvIGFsc28gd2lsbCBoZSBzdWZmZXIgCmFjdXRlbHkgZnJvbSBzaW1pbGFyIGNvbXBhbmlvbnNoaXAgYWZ0ZXIgZGVhdGgsIGFuZCBmcm9tIHRoZSB3b3JraW5nIG91dCBpbiAKYXN0cmFsIGxpZmUgb2YgdGhlIGNvbmRpdGlvbnMgd2hpY2ggaGUgaGFzIGhlcmUgc2V0IGluIG1vdGlvbi4gCgoKODY1LsKgwqDCoMKgwqDCoMKgCkZMRVNILUVBVElORyAKCgo4NjYuwqDCoMKgwqDCoMKgwqAKQWxsIHRoaXMgYXBwbGllcyBub3Qgb25seSB0byBpbmR1bGdlbmNlIGluIGludG94aWNhdGluZyBsaXF1b3IsIGJ1dCBhbHNvIAp0byB0aGUgcHJldmFsZW50IHByYWN0aWNlIG9mIGZlZWRpbmcgdXBvbiBjb3Jwc2VzLiBUaGlzIGhhYml0IGFsc28sIGxpa2UgdGhlIApvdGhlciwgcHJvZHVjZXMgYSBjb25zaXN0ZW50IGVmZmVjdDsgdGhpcyBhbHNvLCBsaWtlIHRoZSBvdGhlciwgZHJhd3Mgcm91bmQgaXRzIAp2b3RhcmllcyBhbGwga2luZHMgb2YgdW5kZXNpcmFibGUgZW50aXRpZXMtLSBob3JyaWJsZSBnYXBpbmcgcmVkIG1vdXRocywgc3VjaCBhcyAKdGhvc2UgdGhhdCBnYXRoZXIgcm91bmQgdGhlIHNoYW1ibGVzIHRvIGFic29yYiB0aGUgYXJvbWEgb2YgYmxvb2QuIEl0IGlzIGluZGVlZCAKc3RyYW5nZSBhbmQgcGl0aWFibGUgdG8gYSBjbGFpcnZveWFudCB0byBzZWUgYSBsYWR5LCB0aGlua2luZyBoZXJzZWxmIGRhaW50eSBhbmQgCnJlZmluZWQgKHRydWx5IHJlZmluZWQgYW5kIGRhaW50eSBzaGUgY2Fubm90IGJlLCBvciBzaGUgd291bGQgbm90IGJlIAp0aGVyZSkgc3Vycm91bmRlZCBieSBhbiBpbmNvbmdydW91cyBuaWdodG1hcmUgb2Ygc3VjaCBzdHJhbmdlIGZvcm1zIGluIGEgCmJ1dGNoZXInIHMgc2hvcCwgd2hlcmUgc2hlIGdvZXMgdG8gZXhhbWluZSB0aGUgY29ycHNlcyBsZWZ0IGJ5IHRoZSBncmltLCAKY2Vhc2VsZXNzIHNsYXVnaHRlciBvbiB0aGUgYmF0dGxlLWZpZWxkIGJldHdlZW4gbWFuJyBzIGJlc3RpYWwsIHRpZ2VyaXNoIGx1c3QgCmZvciBibG9vZCBhbmQgdGhlIGRpdmluZSBMaWZlIGluY2FybmF0ZWQgaW4gdGhlIGFuaW1hbCBraW5nZG9tLiBMaXR0bGUgc2hlIApyZWFsaXNlcyB0aGF0IHRoZXJlIHdpbGwgY29tZSBhIHRpbWUgd2hlbiB0aG9zZSB3aG8gYnkgdGhlaXIgc3VwcG9ydCBtYWtlIApwb3NzaWJsZSB0aGlzIGdoYXN0bHkgYmxvdCBvbiB0aGUgcmVjb3JkIG9mIGh1bWFuaXR5LCB0aGlzIGRhaWx5IGhlY2F0b21iIG9mIApzYXZhZ2UsIHVzZWxlc3MgbXVyZGVyIG9mIHRoZSBmb3JtcyB0aHJvdWdoIHdoaWNoIHRoZSBEZWl0eSBpcyBwYXRpZW50bHkgdHJ5aW5nIAp0byBtYW5pZmVzdCwgd2lsbCBmaW5kIHRoZW1zZWx2ZXMgZmFjZSB0byBmYWNlIHdpdGggSGlzIGluZWZmYWJsZSBNYWplc3R5LCBhbmQgCmhlYXIgZnJvbSB0aGUgVm9pY2UgdGhhdCBjYWxsZWQgdGhlIHdvcmxkcyBpbnRvIGV4aXN0ZW5jZSB0aGUgYXBwYWxsaW5nIHRydXRoOiAK77+9SW5hc211Y2ggYXMgeW91IGhhdmUgZG9uZSB0aGlzIHVudG8gb25lIG9mIHRoZSBsZWFzdCBvZiB0aGVzZSBNeSBsaXR0bGUgb25lcywgCnlvdSBoYXZlIGRvbmUgaXQgdW50byBNZS7vv70gCgoKODY3LsKgwqDCoMKgwqDCoMKgClN1cmVseSBpdCBpcyB0aW1lLCB3aXRoIGFsbCBvdXIgYm9hc3RlZCBhZHZhbmNlLCB0aGF0IHRoaXMgZm91bCBzdGFpbiAKdXBvbiBvdXIgc28tY2FsbGVkIGNpdmlsaXNhdGlvbiBzaG91bGQgYmUgcmVtb3ZlZC4gRXZlbiBpZiBpdCB3ZXJlIG9ubHkgZm9yIApzZWxmaXNoIHJlYXNvbnMsIGZvciB0aGUgc2FrZSBvZiBvdXIgb3duIGludGVyZXN0cywgdGhpcyBzaG91bGQgYmUgc28uIFJlbWVtYmVyIAp0aGF0IGV2ZXJ5IG9uZSBvZiB0aGVzZSBtdXJkZXJlZCBjcmVhdHVyZXMgaXMgYSBkZWZpbml0ZSBlbnRpdHktLSBub3QgYSAKcGVybWFuZW50IHJlaW5jYXJuYXRpbmcgaW5kaXZpZHVhbCwgYnV0IHN0aWxsIGFuIGVudGl0eSB0aGF0IGhhcyBpdHMgbGlmZSBpbiB0aGUgCmFzdHJhbCB3b3JsZC4gUmVtZW1iZXIgdGhhdCBldmVyeSBvbmUgb2YgdGhlc2UgcmVtYWlucyB0aGVyZSBmb3IgYSBjb25zaWRlcmFibGUgCnRpbWUsIHRvIHBvdXIgb3V0IGEgZmVlbGluZyBvZiBpbmRpZ25hdGlvbiBhbmQgaG9ycm9yIGF0IGFsbCB0aGUgaW5qdXN0aWNlIGFuZCAKdG9ybWVudCB3aGljaCBoYXZlIGJlZW4gaW5mbGljdGVkOyBhbmQgcGVyaGFwcyBpbiB0aGF0IHdheSBpdCBtYXkgYmUgcG9zc2libGUgCmZhaW50bHkgdG8gcmVhbGlzZSBzb21ldGhpbmcgb2YgdGhlIHRlcnJpYmxlIGF0bW9zcGhlcmUgd2hpY2ggaGFuZ3Mgb3ZlciBhIApzbGF1Z2h0ZXItaG91c2UgYW5kIGEgYnV0Y2hlcicgcyBzaG9wLCBhbmQgaG93IGl0IGFsbCByZWFjdHMgYXQgbWFueSBwb2ludHMgdXBvbiAKdGhlIGh1bWFuIHJhY2UuIAoKCjg2OC7CoMKgwqDCoMKgwqDCoApNb3N0IG9mIGFsbCwgdGhlc2UgaG9ycm9ycyByZWFjdCB1cG9uIHRob3NlIHdobyBhcmUgbGVhc3QgYWJsZSB0byByZXNpc3QgCnRoZW0tLSB1cG9uIHRoZSBjaGlsZHJlbiwgd2hvIGFyZSBtb3JlIGRlbGljYXRlIGFuZCBzZW5zaXRpdmUgdGhhbiB0aGUgaGFyZGVuZWQgCmFkdWx0OyBhbmQgc28gZm9yIHRoZW0gdGhlcmUgYXJlIGNvbnN0YW50IGZlZWxpbmdzIG9mIGNhdXNlbGVzcyB0ZXJyb3IgaW4gdGhlIAphaXItLSB0ZXJyb3Igb2YgdGhlIGRhcmssIG9yIG9mIGJlaW5nIGFsb25lIGZvciBhIGZldyBtb21lbnRzLiBBbGwgdGhlIHRpbWUgCnRoZXJlIGFyZSBwbGF5aW5nIGFib3V0IHVzIHRyZW1lbmRvdXMgZm9yY2VzIG9mIGF3ZnVsIHN0cmVuZ3RoLCB3aGljaCBvbmx5IHRoZSAKb2NjdWx0IHN0dWRlbnQgY2FuIHVuZGVyc3RhbmQuIFRoZSB3aG9sZSBjcmVhdGlvbiBpcyBzbyBjbG9zZWx5IGludGVycmVsYXRlZCAKdGhhdCB3ZSBjYW5ub3QgZG8gaG9ycmlibGUgbXVyZGVyIGluIHRoaXMgd2F5IHVwb24gb3VyIHlvdW5nZXIgYnJvdGhlcnMgd2l0aG91dCAKZmVlbGluZyB0aGUgZWZmZWN0IHVwb24gb3VyIG93biBpbm5vY2VudCBjaGlsZHJlbi4gCgoKODY5LsKgwqDCoMKgwqDCoMKgClRoZSBwaXRpYWJsZSB0aGluZyBhYm91dCBpdCBpcyB0aGF0IGEgbGFkeSBpcyBhY3R1YWxseSBhYmxlIHRvIAplbnRlciBhIGJ1dGNoZXInIHMgc2hvcC0tIHRoYXQgYmVjYXVzZSBvZiB0aGUgaW5kdWxnZW5jZSBvZiBoZXIgZm9yZWZhdGhlcnMgaW4gCnRoaXMgc2hvY2tpbmcgZm9ybSBvZiBmb29kLCBoZXIgdmFyaW91cyB2ZWhpY2xlcyBoYXZlIGJlY29tZSBzbyBjb2Fyc2VuZWQgdGhhdCAKc2hlIGNhbiBzdGFuZCBhbWlkc3QgdGhvc2UgYmxlZWRpbmcgY2FyY2Fzc2VzIHdpdGhvdXQgYmVpbmcgb3ZlcmNvbWUgYnkgbG9hdGhpbmcgCmFuZCByZXB1bHNpb24sIGFuZCBjYW4gYmUgaW4gdGhlIG1pZHN0IG9mIHRoZSBtb3N0IGdoYXN0bHkgYXN0cmFsIGFib21pbmF0aW9ucyAKd2l0aG91dCBiZWluZyBpbiB0aGUgc2xpZ2h0ZXN0IGRlZ3JlZSBjb25zY2lvdXMgb2YgaXQuIElmIHdlIHRha2UgaW50byBzdWNoIGEgCnBsYWNlIGFueSBwZXJzb24gd2hvIGhhcyBuZXZlciBjb3JydXB0ZWQgaGltc2VsZiB3aXRoIHN1Y2ggY2FycmlvbiwgdGhlcmUgaXMgbm8gCmRvdWJ0IHRoYXQgaGUgd2lsbCBzaHJpbmsgaW4gZGlzZ3VzdCBmcm9tIHRoZSBsb2F0aHNvbWUsIGJsZWVkaW5nIG1hc3NlcyBvZiAKcGh5c2ljYWwgZmxlc2gsIGFuZCB3aWxsIGFsc28gZmVlbCBzdGlmbGVkIGJ5IHRoZSBhY3RpdmVseSBhbmQgbWlsaXRhbnRseS1ldmlsIAphc3RyYWwgZW50aXRpZXMgd2hpY2ggc3dhcm0gdGhlcmUuIFlldCBoZXJlIHdlIGhhdmUgdGhlIHNhZCBzcGVjdGFjbGUgb2YgYSBsYWR5IAp3aG8gb3VnaHQsIGJ5IGhlciB2ZXJ5IGJpcnRocmlnaHQsIHRvIGJlIGRlbGljYXRlIGFuZCBzZW5zaXRpdmUsIHdob3NlIHBoeXNpY2FsIAphbmQgYXN0cmFsIGZpYnJlIGlzIHNvIGNvYXJzZW5lZCB0aGF0IHNoZSBuZWl0aGVyIG9ic2VydmVzIHRoZSB2aXNpYmxlIG5vciAKc2Vuc2VzIHRoZSBpbnZpc2libGUgaG9ycm9ycyB3aGljaCBzdXJyb3VuZCBoZXIuIAoKCjg3MC7CoMKgwqDCoMKgwqDCoApUaGUgcGl0eSBvZiBpdCBpcywgdG9vLCB0aGF0IGFsbCB0aGUgdmFzdCBhbW91bnQgb2YgZXZpbCB3aGljaCBwZW9wbGUgCmJyaW5nIHVwb24gdGhlbXNlbHZlcyBieSB0aGVzZSBwZXJuaWNpb3VzIGhhYml0cyBtaWdodCBzbyBlYXNpbHkgYmUgYXZvaWRlZC4gTm8gCm1hbiBuZWVkcyBlaXRoZXIgZmxlc2ggb3IgYWxjb2hvbC4gSXQgaGFzIGJlZW4gZGVtb25zdHJhdGVkIG92ZXIgYW5kIGFnYWluIHRoYXQgCmhlIGlzIGJldHRlciB3aXRob3V0IHRoZW0uIFRoaXMgaXMgYSBjYXNlIGluIHdoaWNoIGFjdHVhbGx5IGFsbCB0aGUgYXJndW1lbnRzIAphcmUgb24gb25lIHNpZGUgYW5kIHRoZXJlIGlzIG5vdGhpbmcgd2hhdGV2ZXIgdG8gYmUgc2FpZCBvbiB0aGUgb3RoZXIsIGV4Y2VwdCAKdGhlIG1hbicgcyBhc3NlcnRpb246IO+/vUkgd2lsbCBkbyB0aGVzZSBob3JyaWJsZSB0aGluZ3MsIGJlY2F1c2UgSSBsaWtlIHRoZW0u77+9CgoKODcxLsKgwqDCoMKgwqDCoMKgCldpdGggcmVnYXJkIHRvIGZsZXNoLWVhdGluZywgZm9yIGV4YW1wbGUsIGl0IGNhbm5vdCBiZSBxdWVzdGlvbmVkIHRoYXQ6IAooMSkgdGhlIHJpZ2h0IGtpbmQgb2YgdmVnZXRhYmxlcyBjb250YWluIG1vcmUgbnV0cmltZW50IHRoYW4gYW4gZXF1YWwgYW1vdW50IG9mIApkZWFkIGZsZXNoOyAoMikgbWFueSBzZXJpb3VzIGRpc2Vhc2VzIGNvbWUgZnJvbSB0aGlzIGxvYXRoc29tZSBoYWJpdCBvZiAKZGV2b3VyaW5nIGRlYWQgYm9kaWVzOyAoMykgbWFuIGlzIG5vdCBuYXR1cmFsbHkgbWFkZSB0byBiZSBjYXJuaXZvcm91cyBhbmQgCnRoZXJlZm9yZSB0aGlzIGFib21pbmFibGUgZm9vZCBpcyBub3Qgc3VpdGVkIHRvIGhpbTsgKDQpIG1lbiBhcmUgc3Ryb25nZXIgYW5kIApiZXR0ZXIgb24gYSB2ZWdldGFibGUgZGlldDsgKDUpIHRoZSBlYXRpbmcgb2YgZGVhZCBib2RpZXMgbGVhZHMgdG8gaW5kdWxnZW5jZSBpbiAKZHJpbmsgYW5kIGluY3JlYXNlcyBhbmltYWwgcGFzc2lvbnMgaW4gbWFuOyAoNikgdGhlIHZlZ2V0YWJsZSBkaWV0IGlzIGluIGV2ZXJ5IAp3YXkgY2hlYXBlciBhcyB3ZWxsIGFzIGJldHRlciB0aGFuIGZsZXNoOyAoNykgbWFueSBtb3JlIG1lbiBjYW4gYmUgc3VwcG9ydGVkIGJ5IAphIGNlcnRhaW4gbnVtYmVyIG9mIGFjcmVzIG9mIGxhbmQgd2hpY2ggYXJlIGRldm90ZWQgdG8gdGhlIGdyb3dpbmcgb2Ygd2hlYXQgdGhhbiAKYnkgdGhlIHNhbWUgYW1vdW50IG9mIGxhbmQgd2hpY2ggaXMgbGFpZCBvdXQgaW4gcGFzdHVyZTsgKDgpIGluIHRoZSBmb3JtZXIgY2FzZSAKaGVhbHRoeSB3b3JrIHVwb24gdGhlIGxhbmQgY2FuIGJlIGZvdW5kIGZvciBtYW55IG1vcmUgbWVuIHRoYW4gaW4gdGhlIGxhdHRlcjsgCig5KSBtZW4gd2hvIGVhdCBmbGVzaCBhcmUgcmVzcG9uc2libGUgZm9yIHRoZSBzaW4gYW5kIGRlZ3JhZGF0aW9uIGNhdXNlZCBpbiB0aGUgCnNsYXVnaHRlci1tZW47ICgxMCkgY2Fybml2b3JvdXMgZGlldCBpcyBmYXRhbCB0byByZWFsIGRldmVsb3BtZW50LCBhbmQgcHJvZHVjZXMgCnRoZSBtb3N0IHVuZGVzaXJhYmxlIHJlc3VsdHMgb24gYm90aCBhc3RyYWwgYW5kIG1lbnRhbCBib2RpZXM7ICgxMSkgbWFuJyBzIGR1dHkgCnRvd2FyZHMgdGhlIGFuaW1hbCBraW5nZG9tIGlzIG5vdCB0byBzbGF1Z2h0ZXIgaXQgcmVja2xlc3NseSwgYnV0IHRvIGFzc2lzdCBpbiAKaXRzIGV2b2x1dGlvbi4gCgoKODcyLsKgwqDCoMKgwqDCoMKgClRoZXNlIGFyZSBub3QgcG9pbnRzIGFib3V0IHdoaWNoIHRoZXJlIGNhbiBiZSBhbnkgcXVlc3Rpb247IHRoZSBmdWxsZXN0IApldmlkZW5jZSBpbiBzdXBwb3J0IG9mIGVhY2ggb2YgdGhlbSB3aWxsIGJlIGZvdW5kIGluIG15IGJvb2ssIFNvbWUgR2xpbXBzZXMgCm9mIE9jY3VsdGlzbS4gTm8gbWFuIG5lZWRzIHRoZXNlIHRoaW5ncywgYW5kIHRvIHRha2UgdGhlbSBpcyBqdXN0IGEgbWF0dGVyIApvZiBzZWxmaXNoIGluZHVsZ2VuY2UuIE1vc3QgbWVuIGNvbW1pdCB0aGlzIGFjdCBpbiBpZ25vcmFuY2Ugb2YgdGhlIGhhcm0gdGhhdCBpdCAKaXMgZG9pbmc7IGJ1dCByZW1lbWJlciwgdG8gY29udGludWUgdG8gY29tbWl0IGl0IHdoZW4gdGhlIHRydXRoIGlzIGtub3duIGlzIGEgCmNyaW1lLiBXaWRlbHkgc3ByZWFkIGFzIHRoZXkgYXJlLCB0aGVzZSBhcmUgbm90aGluZyBidXQgZXZpbCBoYWJpdHMsIGFuZCB3aXRoIGEgCmxpdHRsZSBlZmZvcnQgdGhleSBjYW4gYmUgbGFpZCBhc2lkZSBsaWtlIGFueSBvdGhlciBoYWJpdC4gCgoKODczLsKgwqDCoMKgwqDCoMKgClNNT0tJTkcgCgoKODc0LsKgwqDCoMKgwqDCoMKgCkFub3RoZXIgY3VzdG9tLCBhbHNvIHBlcm5pY2lvdXMgYW5kIGVxdWFsbHkgd2lkZWx5IHNwcmVhZCwgaXMgdGhhdCBvZiAKc21va2luZy4gSW4gdGhpcywgYXMgaW4gc28gbWFueSBvdGhlciBjYXNlcywgYSBtYW4gYXQgb25jZSByZXNlbnRzIGFueSAKc3VnZ2VzdGlvbnMgdGhhdCBoZSBzaG91bGQgZ2l2ZSB1cCBoaXMgYmFkIGhhYml0cywgYW5kIHNheXM6IO+/vVdoeSBzaG91bGQgSSBub3QgCmRvIGFzIEkgbGlrZSBpbiB0aGVzZSBtYXR0ZXJzP++/vSBXaXRoIHJlZ2FyZCB0byBmbGVzaC1kaWV0IHRoZSBhbnN3ZXIgdG8gdGhpcyBpcyAKcGVyZmVjdGx5IGNsZWFyLCBmb3IgdGhhdCBpcyBhIHByYWN0aWNlIHdoaWNoIG5vdCBvbmx5IHNlcmlvdXNseSBpbmp1cmVzIHRoZSBtYW4gCndobyBhZG9wdHMgaXQsIGJ1dCBhbHNvIGludm9sdmVzIHRlcnJpYmxlIGNyaW1lIGFuZCBjcnVlbHR5IGluIHRoZSBwcm92aXNpb24gb2YgCnRoZSBmb29kLiBJbiB0aGUgY2FzZSBvZiBhbGNvaG9sIGFsc28gYSBjbGVhciBhbnN3ZXIgY2FuIGJlIGdpdmVuLCBxdWl0ZSBhcGFydCAKZnJvbSB0aGUgZWZmZWN0IHVwb24gdGhlIGRyaW5rZXIgaGltc2VsZiwgZm9yIGJ5IGJ1eWluZyB0aGlzIG5veGlvdXMgZmx1aWQgaGUgaXMgCmVuY291cmFnaW5nIGEgcGVybmljaW91cyB0cmFkZSwgaGVscGluZyB0byBjcmVhdGUgYSBkZW1hbmQgZm9yIGEgbGlxdW9yIHdoaWNoIAp0ZW1wdHMgdGhvdXNhbmRzIG9mIGhpcyBmZWxsb3ctY3JlYXR1cmVzIHRvIGV4Y2VzcyBhbmQgbHVyZXMgdGhlbSB0byB0aGVpciBvd24gCmRlc3RydWN0aW9uLiBObyBtYW4gd2hvIGJ1eXMgYWxjb2hvbCBmb3IgZHJpbmtpbmcgcHVycG9zZXMgY2FuIGVzY2FwZSBoaXMgc2hhcmUgCmluIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGF0LiAKCgo4NzUuwqDCoMKgwqDCoMKgwqAKSXQgbWF5IGJlIHNhaWQgdGhhdCB3aXRoIHJlZ2FyZCB0byBzbW9raW5nIHRoZSBwb3NpdGlvbiBpcyBzb21ld2hhdCAKZGlmZmVyZW50LCBzaW5jZSBubyBjcnVlbHR5IGlzIG5lY2Vzc2FyeSBpbiBvYnRhaW5pbmcgdG9iYWNjbywgbm9yIGFyZSBsaXZlcyAKZGVzdHJveWVkIGJ5IGl0IGFzIGJ5IGFsY29ob2wuIFRoaXMgaXMgdHJ1ZSwgYW5kIGlmIHRoZSBzbW9rZXIgY2FuIGVudGlyZWx5IHNodXQgCmhpbXNlbGYgYXdheSBmcm9tIGFueSBjb250YWN0IHdpdGggaGlzIGZlbGxvdy1tZW4sIGFuZCBpZiBoZSBoYXMgbm8gZGVzaXJlIHRvIAptYWtlIGFueXRoaW5nIGluIHRoZSBuYXR1cmUgb2Ygb2NjdWx0IHByb2dyZXNzLCBoaXMgYXJndW1lbnQgbWF5LCBzbywgZmFyLCBob2xkIApnb29kLiBJZiwgbm90IGJlaW5nIGFjdHVhbGx5IGEgaGVybWl0LCBoZSBoYXMgc29tZXRpbWVzIGF0IGxlYXN0IHRvIGNvbWUgaW50byAKdG91Y2ggd2l0aCBoaXMgZmVsbG93bWVuLCBoZSBjYW4gaGF2ZSBubyBwb3NzaWJsZSByaWdodCB0byBtYWtlIGhpbXNlbGYgYSAKbnVpc2FuY2UgdG8gdGhlbS4gVGhlcmUgYXJlIG1hbnkgcGVvcGxlIHdobywgYmVpbmcgZGVlcGx5IHN0ZWVwZWQgaW4gdGhlIHNhbWUgCnBvbGx1dGlvbiB0aGVtc2VsdmVzLCBoYXZlIG5vIG9iamVjdGlvbiB0byB0aGUgbmF1c2VhdGluZyBvZG91ciBvZiB0b2JhY2NvOyBidXQgCmFsbCB3aG8gaGF2ZSBrZXB0IHRoZW1zZWx2ZXMgcHVyZSBmcm9tIHRoaXMgdGhpbmcga25vdyBob3cgc3Ryb25nIGlzIHRoZSBkaXNndXN0IAp3aGljaCBpdHMgY29hcnNlIGFuZCBmZXRpZCBlbWFuYXRpb25zIGluZXZpdGFibHkgYXJvdXNlLiBZZXQgdGhlIHNtb2tlciBjYXJlcyAKbGl0dGxlIGZvciB0aGF0LiBBcyBJIGhhdmUgc2FpZCBlbHNld2hlcmUsIHRoaXMgaXMgdGhlIG9ubHkgdGhpbmcgdGhhdCBhIApnZW50bGVtYW4gd2lsbCBkZWxpYmVyYXRlbHkgZG8gd2hlbiBoZSBrbm93cyBpdCB0byBiZSBvZmZlbnNpdmUgdG8gb3RoZXJzOyBidXQgCnRoZSBob2xkIHdoaWNoIHRoaXMgbm94aW91cyBoYWJpdCBnYWlucyB1cG9uIGl0cyBzbGF2ZXMgYXBwZWFycyB0byBiZSBzbyBncmVhdCAKdGhhdCB0aGV5IGFyZSB1dHRlcmx5IGluY2FwYWJsZSBvZiByZXNpc3RpbmcgaXQsIGFuZCBhbGwgdGhlaXIgZ2VudGxlbWFubHkgCmluc3RpbmN0cyBhcmUgZm9yZ290dGVuIGluIHRoaXMgbWFkIGFuZCBoYXRlZnVsIHNlbGZpc2huZXNzLiAKCgo4NzYuwqDCoMKgwqDCoMKgwqAKQW55dGhpbmcgd2hpY2ggY2FuIHByb2R1Y2Ugc3VjaCBhbiBlZmZlY3QgYXMgdGhhdCB1cG9uIGEgbWFuJyBzIGNoYXJhY3RlciAKaXMgYSB0aGluZyB0aGF0IGFsbCB3aXNlIG1lbiB3aWxsIGF2b2lkLiBUaGUgaW1wdXJpdHkgb2YgaXQgaXMgc28gZ3JlYXQgYW5kIHNvIApwZW5ldHJhdGluZyB0aGF0IHRoZSBtYW4gd2hvIGhhYml0dWFsbHkgdXNlcyBpdCBpcyBhYnNvbHV0ZWx5IHNvYWtlZCBpbiBpdCwgYW5kIAppcyBtb3N0IG9mZmVuc2l2ZSB0byB0aGUgc2Vuc2Ugb2Ygc21lbGwgb2YgdGhlIHB1cmVyIHBlcnNvbi4gRm9yIHRoaXMgcHVyZWx5IApwaHlzaWNhbCByZWFzb24gbm8gb25lIHdobyBjb21lcyBpbnRvIGNvbnRhY3Qgd2l0aCBoaXMgZmVsbG93cyBzaG91bGQgaW5kdWxnZSBpbiAKdGhpcyBtb3N0IG9iamVjdGlvbmFibGUgcHJhY3RpY2UsIGFuZCwgaWYgaGUgZG9lcywgaGUgdGhlcmVieSBicmFuZHMgaGltc2VsZiBhcyAKb25lIHdobyB0aGlua3Mgb25seSBvZiBoaXMgb3duIHNlbGZpc2ggZW5qb3ltZW50IGFuZCBpcyB3aWxsaW5nIGluIHRha2luZyBpdCB0byAKaW5mbGljdCBtdWNoIHN1ZmZlcmluZyB1cG9uIGhpcyBmZWxsb3ctY3JlYXR1cmVzLiBBbmQgYWxsIHRoaXMgaXMgcXVpdGUgYXBhcnQgCmZyb20gdGhlIGRlYWRlbmluZyBlZmZlY3Qgd2hpY2ggaXQgcHJvZHVjZXMsIGFuZCBmcm9tIHRoZSB2YXJpb3VzIGRpc2Vhc2VzLS0gCnNtb2tlcicgcyB0aHJvYXQsIHNtb2tlcicgcyBoZWFydCwgY2FuY2VyIGluIHRoZSBtb3V0aCwgaW5kaWdlc3Rpb24gYW5kIG90aGVycy0tIAp3aGljaCBpdCBicmluZ3MgaW4gaXRzIHRyYWluLiBGb3Igbmljb3RpbmUsIGFzIGlzIHdlbGwga25vd24sIGlzIGEgZGVhZGx5IApwb2lzb24sIGFuZCB0aGUgZWZmZWN0IG9mIGV2ZW4gc21hbGwgcXVhbnRpdGllcyBvZiBpdCBjYW4gbmV2ZXIgYmUgZ29vZC4gCgoKODc3LsKgwqDCoMKgwqDCoMKgCldoeSBzaG91bGQgYW55IG1hbiBhZG9wdCBhIGN1c3RvbSB3aGljaCBwcm9kdWNlcyBhbGwgdGhlc2UgdW5wbGVhc2FudCAKcmVzdWx0cz8gVG8gdGhpcyB0aGVyZSBpcyBhYnNvbHV0ZWx5IG5vIGFuc3dlciBleGNlcHQgdGhhdCBoZSBoYXMgdGF1Z2h0IGhpbXNlbGYgCnRvIGxpa2UgaXQ7IGZvciBpdCBjYW5ub3QgYmUgcHJldGVuZGVkIHRoYXQgaXQgaXMgaW4gYW55IHdheSBuZWNlc3Nhcnkgb3IgCnVzZWZ1bC4gSSBiZWxpZXZlIGl0IHRvIGJlIHF1aXRlIHRydWUgdGhhdCBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgaXQgc29vdGhlcyAKdGhlIG5lcnZlczsgdGhhdCBpcyBwYXJ0IG9mIGl0cyBkZWFkZW5pbmcgZWZmZWN0IGFzIGEgcG9pc29uLCBidXQgdGhhdCByZXN1bHQgCmNhbiBiZSBlcXVhbGx5IHdlbGwgYWNoaWV2ZWQgYnkgb3RoZXIgYW5kIGZhciBsZXNzIG9iamVjdGlvbmFibGUgbWVhbnMuIEl0IGlzIAphbHdheXMgZXZpbCBmb3IgYSBtYW4gdG8gYWRvcHQgYSBoYWJpdCB0byB3aGljaCBoZSBiZWNvbWVzIGEgc2xhdmUtLSBldmlsIGZvciAKaGltc2VsZiwgSSBtZWFuOyBpdCBpcyBkb3VibHkgZXZpbCB3aGVuIHRoYXQgaGFiaXQgYnJpbmdzIHdpdGggaXQgdGhlIGJhZCBrYXJtYSAKb2YgaW5mbGljdGluZyBjb25zdGFudCBhbm5veWFuY2UgdXBvbiBvdGhlcnMuIAoKCjg3OC7CoMKgwqDCoMKgwqDCoApObyBjaGlsZCBieSBuYXR1cmUgbGlrZXMgdGhlIGxvYXRoc29tZSB0YXN0ZSBvZiB0aGlzIGV2aWwgd2VlZCBidXQsIApiZWNhdXNlIG90aGVycyBvbGRlciB0aGFuIGhpbXNlbGYgaW5kdWxnZSBpbiBpdCwgaGUgc3RydWdnbGVzIHBhaW5mdWxseSB0aHJvdWdoIAp0aGUgbmF0dXJhbCBuYXVzZWEgd2hpY2ggaXQgY2F1c2VzIGhpbSBhdCBmaXJzdC0tIHRoZSBwcm90ZXN0IG9mIGhpcyBoZWFsdGh5IAp5b3VuZyBib2R5IGFnYWluc3QgdGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIHBvbGx1dGluZyBtYXR0ZXItLSBhbmQgc28gZ3JhZHVhbGx5IApoZSBmb3JjZXMgaGltc2VsZiB0byBlbmR1cmUgaXQsIGFuZCBldmVudHVhbGx5IGJlY29tZXMgYSBzbGF2ZSB0byBpdCwgbGlrZSBoaXMgCmVsZGVycy4gSXQgc3R1bnRzIGhpcyBncm93dGg7IGl0IGxlYWRzIGhpbSBpbnRvIGJhZCBjb21wYW55OyBidXQgd2hhdCBvZiB0aGF0PyAKSGUgaGFzIGFzc2VydGVkIGhpcyBkYXduaW5nIG1hbmhvb2QgYnkgcHJvdmluZyBoaW1zZWxmIGNhcGFibGUgb2YgYSBgIG1hbmx5JyAKdmljZS4gSSBrbm93IHRoYXQgcGFyZW50cyBmcmVxdWVudGx5IGFkdmlzZSB0aGVpciBjaGlsZHJlbiBub3QgdG8gc21va2U7IHBlcmhhcHMgCmlmIHRoZXkgc2V0IHRoZW0gdGhlIGV4YW1wbGUgb2YgYWJzdGVudGlvbiwgdGhlaXIgc2FnZSBjb3Vuc2VscyB3b3VsZCBwcm9kdWNlIGEgCmdyZWF0ZXIgZWZmZWN0LiBUaGlzIGlzIGFub3RoZXIgaGFiaXQgd2l0aCBldmlsIHJlc3VsdHMgd2hpY2ggY291bGQgc28gZWFzaWx5IGJlIAphdm9pZGVkLS0gYWxsIHRoYXQgaXMgbmVlZGVkIGJlaW5nIHNpbXBseSBub3QgdG8gZG8gaXQuIAoKCjg3OS7CoMKgwqDCoMKgwqDCoApUaGUgaW1wdXJpdHkgcHJvZHVjZWQgYnkgdGhpcyBvYnNjZW5lIHByYWN0aWNlIGlzIG5vdCBvbmx5IHBoeXNpY2FsLiBJdCAKbWF5IGJlIHRha2VuIGFzIGFuIGF4aW9tIHRoYXQgcGh5c2ljYWwgZmlsdGggb2YgYW55IHNvcnQgYWx3YXlzIGltcGxpZXMgYXN0cmFsIApmaWx0aCBhcyB3ZWxsLCBmb3IgdGhlIGNvdW50ZXJwYXJ0IG9mIHRoYXQgd2hpY2ggaXMgaW1wdXJlIGNhbm5vdCBpdHNlbGYgYmUgCnB1cmUuIEp1c3QgYXMgdGhlIHBoeXNpY2FsIG5lcnZlLXZpYnJhdGlvbnMgYXJlIGRlYWRlbmVkIGJ5IHRoZSBwb2lzb24sIHNvIGFyZSAKYm90aCBhc3RyYWwgYW5kIG1lbnRhbCB1bmR1bGF0aW9ucy4gRm9yIG9jY3VsdCBwcm9ncmVzcyBhIG1hbiBuZWVkcyB0byBoYXZlIGhpcyAKdmVoaWNsZXMgYXMgZmluZWx5IHN0cnVuZyBhcyBwb3NzaWJsZSwgc28gdGhhdCB0aGV5IG1heSBiZSByZWFkeSBhdCBhbnkgbW9tZW50IAp0byByZXNwb25kIGluIHN5bXBhdGh5IHRvIGFueSBraW5kIG9mIHZpYnJhdGlvbi4gVGhlcmVmb3JlIGhlIGRvZXMgbm90IHdhbnQgdG8gCmhhdmUgaGlzIHRob3VnaHQtd2F2ZXMgZGVhZGVuZWQgYW5kIGhpcyBhc3RyYWwgYm9keSB3ZWlnaGVkIGRvd24gd2l0aCBmb3VsIGFuZCAKcG9pc29ub3VzIHBhcnRpY2xlcy4gTWFueSB3aG8gY2FsbCB0aGVtc2VsdmVzIHN0dWRlbnRzIHN0aWxsIGNsaW5nIHRvIHRoaXMgCnVucGxlYXNhbnQgaGFiaXQsIGFuZCB0cnkgdG8gZmluZCBhbGwgc29ydHMgb2Ygd2VhayBleGN1c2VzIHRvIGNvdmVyIHRoZSBmYWN0IAp0aGF0IHRoZXkgaGF2ZSBub3QgdGhlIHN0cmVuZ3RoIHRvIGJyZWFrIGF3YXkgZnJvbSBpdHMgdHlyYW5ueTsgYnV0IGZhY3RzIHJlbWFpbiAKZmFjdHMsIGZvciBhbGwgdGhhdCwgYW5kIG5vIG9uZSB3aG8gY2FuIHNlZSB0aGUgZWZmZWN0cyBvbiB0aGUgaGlnaGVyIHZlaGljbGVzIApvZiB0aGlzIGRpc2FzdHJvdXMgY3VzdG9tIGNhbiBhdm9pZCB0aGUgcmVhbGlzYXRpb24gdGhhdCBpdCBkb2VzIHNlcmlvdXMgaGFybS4KCgo4ODAuwqDCoMKgwqDCoMKgwqAKSXRzIGVmZmVjdCBpbiB0aGUgYXN0cmFsIHdvcmxkIGFmdGVyIGRlYXRoIGlzIGEgcmVtYXJrYWJsZSBvbmUuIFRoZSBtYW4gCmhhcyBzbyBmaWxsZWQgaGlzIGFzdHJhbCBib2R5IHdpdGggcG9pc29uIHRoYXQgaXQgaGFzIHN0aWZmZW5lZCB1bmRlciBpdHMgCmluZmx1ZW5jZSwgYW5kIGhhcyBiZWNvbWUgdW5hYmxlIHRvIHdvcmsgcHJvcGVybHkgb3IgdG8gbW92ZSBmcmVlbHkuIEZvciBhIGxvbmcgCnBlcmlvZCB0aGUgbWFuIGlzIGFzIHRob3VnaCBoZSB3ZXJlIHBhcmFseXNlZC0tIGFibGUgdG8gc3BlYWssIHlldCBkZWJhcnJlZCBmcm9tIAptb3ZlbWVudCwgYW5kIGFsbW9zdCBlbnRpcmVseSBjdXQgb2ZmIGZyb20gYWxsIGhpZ2hlciBpbmZsdWVuY2VzLiBJbiBwcm9jZXNzIG9mIAp0aW1lIGhlIGVtZXJnZXMgZnJvbSB0aGlzIHVucGxlYXNhbnQgcHJlZGljYW1lbnQsIHdoZW4gdGhlIHBhcnQgb2YgaGlzIGFzdHJhbCAKYm9keSB3aGljaCBpcyBhZmZlY3RlZCBieSB0aGlzIHBvaXNvbiBoYXMgZ3JhZHVhbGx5IHdvcm4gYXdheS4gCgoKODgxLsKgwqDCoMKgwqDCoMKgCkRSVUdTIAoKCjg4Mi7CoMKgwqDCoMKgwqDCoApUaGUgdGFraW5nIG9mIG9waXVtIG9yIGNvY2FpbmUsIHRob3VnaCBoYXBwaWx5IGxlc3MgY29tbW9uLCBpcyBlcXVhbGx5IApkaXNhc3Ryb3VzLCBmb3IgZnJvbSB0aGUgb2NjdWx0IHBvaW50IG9mIHZpZXcgaXQgaXMgZW50aXJlbHkgcnVpbm91cyBhbmQgZmF0YWwgCnRvIHByb2dyZXNzLiBUaGVzZSBkcnVncyBhcmUgc29tZXRpbWVzIGEgbmVjZXNzaXR5IGluIG9yZGVyIHRvIHJlbGlldmUgZ3JlYXQgCnBhaW47IGJ1dCB0aGV5IHNob3VsZCBiZSB0YWtlbiBhcyBzcGFyaW5nbHkgYXMgcG9zc2libGUsIGFuZCBvbiBubyBhY2NvdW50IGJlIAphbGxvd2VkIHRvIGRlZ2VuZXJhdGUgaW50byBhIGhhYml0LiBPbmUgd2hvIGtub3dzIGhvdyB0byBkbyBpdCwgaG93ZXZlciwgY2FuIApyZW1vdmUgdGhlIGV2aWwgZWZmZWN0IG9mIHRoZSBvcGl1bSBmcm9tIHRoZSBhc3RyYWwgYW5kIG1lbnRhbCBib2RpZXMgYWZ0ZXIgaXQgCmhhcyBkb25lIGl0cyB3b3JrIHVwb24gdGhlIHBoeXNpY2FsLiAKCgo4ODMuwqDCoMKgwqDCoMKgwqAKTmVhcmx5IGFsbCBkcnVncyBwcm9kdWNlIGEgZGVsZXRlcmlvdXMgZWZmZWN0IHVwb24gdGhlIGhpZ2hlciB2ZWhpY2xlcywgCmFuZCB0aGV5IGFyZSB0aGVyZWZvcmUgdG8gYmUgYXZvaWRlZCBhcyBtdWNoIGFzIHBvc3NpYmxlLiBUaGVyZSBhcmUgZGVmaW5pdGUgCmNhc2VzIGluIHdoaWNoIHRoZXkgYXJlIGNsZWFybHkgcmVxdWlyZWQsIHdoZW4gdGhleSBhcmUgcmVhbGx5IHNwZWNpZmljcyBmb3IgCmNlcnRhaW4gZGlzZWFzZXM7IGJ1dCB0aGVzZSBhcmUgZmV3LCBhbmQgaW4gZmFyIHRoZSBncmVhdGVyIG51bWJlciBvZiBjYXNlcyAKbmF0dXJlIGhlcnNlbGYgd2lsbCB3b3JrIGEgcmFwaWQgY3VyZSBpZiB0aGUgc3Vycm91bmRpbmdzIGFyZSBwdXJlIGFuZCBoZWFsdGh5LgoKCjg4NC7CoMKgwqDCoMKgwqDCoApXaXRoIHJlZ2FyZCB0byB0aGUgdHJlYXRtZW50IG9mIHRoZSBib2R5LCBwcmV2ZW50aW9uIGVtcGhhdGljYWxseSBiZXR0ZXIgCnRoYW4gY3VyZSwgYW5kIHRob3NlIHdobyBsaXZlIHJhdGlvbmFsbHkgd2lsbCByYXJlbHkgbmVlZCB0aGUgc2VydmljZXMgb2YgYSAKZG9jdG9yLiBVbmRlciBhbGwgY2lyY3Vtc3RhbmNlcyBhbmltYWwgc2VydW1zIGFuZCBwcm9kdWN0cyBpbiBhbnkgd2F5IGNvbm5lY3RlZCAKd2l0aCBvciBvYnRhaW5lZCBieSBtZWFucyBvZiB2aXZpc2VjdGlvbiBzaG91bGQgYmUgYWJzb2x1dGVseSBhdm9pZGVkLiBJdCBzaG91bGQgCmJlIHJlbWVtYmVyZWQgdGhhdCB0ZWEgYW5kIGNvZmZlZSBjb250YWluIGFzIHRoZWlyIGVzc2VuY2UgZHJ1Z3MgY2FsbGVkIApyZXNwZWN0aXZlbHkgdGhlaW5lIGFuZCBjYWZmZWluZSwgd2hpY2ggYXJlIHBvaXNvbm91cywgc28gdGhhdCBhbiBleGNlc3Mgb2YgCnRoZXNlIGJldmVyYWdlcyBpcyBhIGJhZCB0aGluZywgZXNwZWNpYWxseSBmb3IgZ3Jvd2luZyBjaGlsZHJlbjsgaW5kZWVkLCBJIAppbmNsaW5lIHRvIHRoZSBvcGluaW9uIHRoYXQsIHdoaWxlIGluIG1vZGVyYXRpb24gdGhleSBkbyBubyBzZXJpb3VzIGhhcm0sIHRob3NlIAp3aG8gZmluZCB0aGVtc2VsdmVzIGFibGUgdG8gYXZvaWQgdGhlbSBhcmUgYWxsIHRoZSBiZXR0ZXIgZm9yIGl0LiAKCgo4ODUuwqDCoMKgwqDCoMKgwqAKQ0xFQU5MSU5FU1MgCgoKODg2LsKgwqDCoMKgwqDCoMKgCkRvY3RvcnMgYXJlIHVzdWFsbHkgYWdyZWVkIGFzIHRvIHRoZSBuZWNlc3NpdHkgZm9yIHBoeXNpY2FsIGNsZWFubGluZXNzLCAKYnV0IHRoZSByZXF1aXJlbWVudHMgb2Ygb2NjdWx0aXNtIGFyZSBmYXIgbW9yZSBzdHJpbmdlbnQgdGhhbiB0aGVpcnMuIFRoZSB3YXN0ZSAKbWF0dGVyIHdoaWNoIGlzIGNvbnN0YW50bHkgYmVpbmcgdGhyb3duIG9mZiBieSB0aGUgYm9keSBpbiB0aGUgc2hhcGUgb2YgCmltcGVyY2VwdGlibGUgcGVyc3BpcmF0aW9uIGlzIHJlamVjdGVkIGJlY2F1c2UgaXQgaXMgcG9pc29ub3VzIGFuZCBkZWNheWluZyAKcmVmdXNlLCBhbmQgdGhlIGFzdHJhbCBhbmQgbWVudGFsIGNvdW50ZXJwYXJ0cyBvZiBpdHMgcGFydGljbGVzIGFyZSBvZiB0aGUgbW9zdCAKdW5kZXNpcmFibGUgY2hhcmFjdGVyLiBEaXJ0IGlzIG9mdGVuIG1vcmUgb2JqZWN0aW9uYWJsZSBpbiB0aGUgaGlnaGVyIHdvcmxkcyAKdGhhbiBpbiB0aGUgcGh5c2ljYWwsIGFuZCwganVzdCBhcyBpbiB0aGUgcGh5c2ljYWwgd29ybGQsIGl0IGlzIG5vdCBvbmx5IGZvdWwgCmFuZCBwb2lzb25vdXMgaW4gaXRzZWxmIGJ1dCBpdCBhbHNvIGluZXZpdGFibHkgYnJlZWRzIGRhbmdlcm91cyBtaWNyb2Jlcywgc28gaW4gCnRoZXNlIGhpZ2hlciB3b3JsZHMgaXQgYXR0cmFjdHMgbG93LWNsYXNzIG5hdHVyZS1zcGlyaXRzIG9mIGEga2luZCBkaXN0aW5jdGx5IApwcmVqdWRpY2lhbCB0byBtYW4uIFlldCBtYW55IHBlb3BsZSBoYWJpdHVhbGx5IGNhcnJ5IGEgY29hdGluZyBvZiBmaWx0aCBhYm91dCAKd2l0aCB0aGVtLCBhbmQgc28gZW5zdXJlIGZvciB0aGVtc2VsdmVzIHRoZSBwb3NzZXNzaW9uIG9mIGFuIHVucGxlYXNhbnQgcmV0aW51ZSAKb2YgYXN0cmFsIGFuZCBldGhlcmljIGNyZWF0dXJlcy4gCgoKODg3LsKgwqDCoMKgwqDCoMKgClRoZSB0aG9yb3VnaCBkYWlseSBiYXRoLCB0aGVyZWZvcmUsIGlzIGV2ZW4gbW9yZSBhbiBvY2N1bHQgdGhhbiBhIApoeWdpZW5pYyBuZWNlc3NpdHksIGFuZCBwdXJpdHkgb2YgbWluZCBhbmQgZmVlbGluZyBjYW5ub3QgZXhpc3Qgd2l0aG91dCBwdXJpdHkgCm9mIGJvZHkgYWxzby4gVGhlIHBoeXNpY2FsIGVtYW5hdGlvbnMgb2YgZGlydCBhcmUgdW5wbGVhc2FudCwgYnV0IHRob3NlIGluIHRoZSAKYXN0cmFsIGFuZCBtZW50YWwgd29ybGRzIGFyZSBtdWNoIG1vcmUgdGhhbiBtZXJlbHkgdW5wbGVhc2FudDsgdGhleSBhcmUgCmRlbGV0ZXJpb3VzIHRvIHRoZSBsYXN0IGRlZ3JlZSwgYW5kIGRhbmdlcm91cyBub3Qgb25seSB0byB0aGUgbWFuIGhpbXNlbGYsIGJ1dCAKdG8gb3RoZXJzLiBJdCBpcyB0aHJvdWdoIHRoZSBwb3JlcyBvZiB0aGUgYm9keSB0aGF0IHRoZSBtYWduZXRpc20gb2YgdGhlIHBlcnNvbiAKcnVzaGVzIG91dCwgYmVhcmluZyB3aXRoIGl0IHdoYXQgcmVtYWlucyBvZiB0aGUgdml0YWwgZm9yY2UuIElmIHRoZXJlZm9yZSB0aGVzZSAKcG9yZXMgYXJlIGNsb2dnZWQgd2l0aCBmaWx0aCwgdGhlIG1hZ25ldGlzbSBpcyBwb2lzb25lZCBvbiBpdHMgd2F5IG91dCwgYW5kIHdpbGwgCnByb2R1Y2UgYSBwZXJuaWNpb3VzIGVmZmVjdCB1cG9uIGFsbCB0aG9zZSBhcm91bmQuIAoKCjg4OC7CoMKgwqDCoMKgwqDCoApXZSBtdXN0IHJlbWVtYmVyIHRoYXQgd2UgYXJlIGNvbnN0YW50bHkgaW50ZXJjaGFuZ2luZyB0aGUgcGFydGljbGVzIG9mIApvdXIgYm9kaWVzIHdpdGggdGhvc2UgYWJvdXQgdXMsIGFuZCB0aGF0IG91ciBib2RpZXMgdGhlcmVmb3JlIGFyZSBub3Qgd2hvbGx5IG91ciAKb3duOyB3ZSBjYW5ub3QgZG8ganVzdCBhcyB3ZSBsaWtlIHdpdGggdGhlbSwgYmVjYXVzZSBvZiB0aGUgZmFjdCB0aGF0IHRoZXkgdGh1cyAKY29uc3RhbnRseSBpbmZsdWVuY2UgdGhvc2Ugb2Ygb3VyIGJyb3RoZXJzLCB0aGUgY2hpbGRyZW4gb2Ygb3VyIGNvbW1vbiBGYXRoZXIuIEEgCmNvbXByZWhlbnNpb24gb2YgdGhlIG1vc3QgcnVkaW1lbnRhcnkgaWRlYSBvZiBicm90aGVyaG9vZCBzaG93cyB1cyB0aGF0IGl0IGlzIGFuIAphYnNvbHV0ZSBkdXR5IHRvIG90aGVycyB0byBrZWVwIG91ciBib2RpZXMgaGVhbHRoeSwgcHVyZSBhbmQgY2xlYW4uIElmIHRoZSAKcGVyc29uIGJlIHBlcmZlY3RseSBjbGVhbiwgaGlzIGVtYW5hdGlvbnMgd2lsbCBjYXJyeSBoZWFsdGggYW5kIHN0cmVuZ3RoLCBhbmQgc28gCndoZW4gd2UgbWFrZSBvdXJzZWx2ZXMgcHVyZXIgd2UgYXJlIGhlbHBpbmcgb3RoZXJzIGFsc28uIAoKCjg4OS7CoMKgwqDCoMKgwqDCoApPQ0NVTFQgSFlHSUVORSAKCgo4OTAuwqDCoMKgwqDCoMKgwqAKVGhpcyByYWRpYXRpb24gaXMgc3Ryb25nZXN0IG9mIGFsbCBmcm9tIHRoZSBlbmRzIG9mIHRoZSBmaW5nZXJzIGFuZCB0b2VzLCAKc28gdGhhdCBldmVuIG1vcmUgdGhhbiB1c3VhbCBjYXJlIHNob3VsZCBjb25zdGFudGx5IGJlIGxhdmlzaGVkIHVwb24gdGhlIApzdHJpY3Rlc3QgY2xlYW5saW5lc3MgaW4gdGhlIGNhc2Ugb2YgdGhlc2UgY2hhbm5lbHMgb2YgaW5mbHVlbmNlLiBBIGNhcmVsZXNzIApwZXJzb24gd2hvIGFsbG93cyBmaWx0aCB0byBhY2N1bXVsYXRlIHVuZGVyIGhpcyBmaW5nZXItbmFpbHMgaXMgYWxsIHRoZSB0aW1lIApwb3VyaW5nIGZvcnRoIGZyb20gdGhlIGVuZHMgb2YgaGlzIGZpbmdlcnMgd2hhdCBpbiB0aGUgYXN0cmFsIHdvcmxkIGV4YWN0bHkgCmNvcnJlc3BvbmRzIHRvIGEgdG9ycmVudCBvZiBwZWN1bGlhcmx5IG5vaXNvbWUgc2V3YWdlIGluIHRoZSBwaHlzaWNhbC0tIGFuIAplZmZlY3Qgd2hpY2ggbWFrZXMgaGlzIG5laWdoYm91cmhvb2QgZXhjZWVkaW5nbHkgdW5wbGVhc2FudCB0byBhbnkgc2Vuc2l0aXZlIApwZXJzb24sIGFuZCBjYXVzZXMgaGltIHRvIGRvIGhhcm0gaW4gbWFueSBjYXNlcyB3aGVyZSwgYnV0IGZvciB0aGF0LCBoZSBtaWdodCBiZSAKZG9pbmcgZ29vZC4gCgoKODkxLsKgwqDCoMKgwqDCoMKgCkZvciBhIHNpbWlsYXIgcmVhc29uIHNwZWNpYWwgY2FyZSBvZiB0aGUgZmVldCBpcyBkZXNpcmFibGUuIFRoZXkgc2hvdWxkIApuZXZlciBiZSBlbmNhc2VkIGluIGJvb3RzIHRvbyB0aWdodCBmb3IgdGhlbSwgYW5kIHRoaWNrLCBoZWF2eSB3YWxraW5nIGJvb3RzIApzaG91bGQgbmV2ZXIgYmUgd29ybiBhbiBpbnN0YW50IGxvbmdlciB0aGFuIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5LCBidXQgc2hvdWxkIApiZSByZXBsYWNlZCBieSBzb21ldGhpbmcgc29mdCwgbG9vc2UgYW5kIGVhc3kuIEluZGVlZCBpdCBpcyBmYXIgYmV0dGVyIHRoYXQgCndoZW5ldmVyIHBvc3NpYmxlIHRoZSBmZWV0IHNob3VsZCBiZSBsZWZ0IHVuY292ZXJlZCBhbHRvZ2V0aGVyLCBvciB3aGVuIHRoYXQgaXMgCmNvbnNpZGVyZWQgaW1wb3NzaWJsZSwgdGhhdCBhIGxpZ2h0IHNhbmRhbCBzaG91bGQgYmUgdXNlZCB3aXRob3V0IHN0b2NraW5ncyBvciAKc29ja3MuIFRoaXMgcGxhbiBjb3VsZCBoYXJkbHkgYmUgYWRvcHRlZCBvdXQtb2YtZG9vcnMgYW1pZHN0IHRoZSBob3JyaWJsZSBmaWx0aCAKb2Ygb3VyIGxhcmdlIHRvd25zLCBidXQgaXQgc3VyZWx5IG91Z2h0IHRvIGJlIHBvc3NpYmxlIGluIGNvdW50cnkgaG91c2VzIGFuZCBhdCAKdGhlIHNlYXNpZGUuIEl0IGNvdWxkIGJlIGRvbmUgaW5kb29ycyBldmVyeXdoZXJlLCBhbmQgd291bGQgYmUgaGVhbHRoaWVyIGFuZCAKbW9yZSBjb21mb3J0YWJsZSBwaHlzaWNhbGx5LCBhcyB3ZWxsIGFzIGNvcnJlY3QgZnJvbSB0aGUgb2NjdWx0IHBvaW50IG9mIHZpZXcuIApCdXQgd2hpbGUgd2UgYXJlIGFsbCBzdWNoIHNsYXZlcyBvZiBmYXNoaW9uIHRoYXQgYW55IG1hbiB3aG8gbGl2ZWQgYW5kIGRyZXNzZWQgCnJhdGlvbmFsbHkgd291bGQgcHJvYmFibHkgYmUgcmVnYXJkZWQgYXMgaW5zYW5lLCBJIHN1cHBvc2UgdGhhdCBpdCBpcyBob3BlbGVzcyAKdG8gZXhwZWN0IHBlb3BsZSB0byBoYXZlIHN1ZmZpY2llbnQgc3RyZW5ndGggb2YgbWluZCB0byBkbyB3aGF0IGlzIG9idmlvdXNseSAKYmVzdCBmb3IgdGhlbS4gCgoKODkyLsKgwqDCoMKgwqDCoMKgCkZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2Ygb2NjdWx0IGh5Z2llbmUgZ3JlYXQgY2FyZSBzaG91bGQgYmUgdGFrZW4gYWxzbyAKd2l0aCByZWdhcmQgdG8gdGhlIGhlYWQsIHdoaWNoIHNob3VsZCBiZSBsZWZ0IHVuY292ZXJlZCB3aGVuZXZlciBwb3NzaWJsZSwgYW5kIApuZXZlciBhbGxvd2VkIHRvIGdldCBob3QuIEEgaGF0IGlzIGFuIHV0dGVybHkgdW5uZWNlc3NhcnkgYXJ0aWNsZSBvZiBjbG90aGluZywgCmFuZCBwZW9wbGUgd291bGQgYmUgbXVjaCBiZXR0ZXIgaW4gZXZlcnkgd2F5IHdpdGhvdXQgaXQ7IGJ1dCBoZXJlIGFnYWluIHByb2JhYmx5IAp0aGUgZm9vbGlzaG5lc3Mgb2YgZmFzaGlvbiB3aWxsLCBhcyB1c3VhbCwgc3RhbmQgaW4gdGhlIHdheSBvZiBjb21tb24gc2Vuc2UuIFRoZSAKZm9sbHkgb2Ygd2VhcmluZyBhIGhhdCBiZWNvbWVzIGltbWVkaWF0ZWx5IG9idmlvdXMgd2hlbiB3ZSByZW1lbWJlciB0aGF0IGV2ZW4gaW4gCnRoZSBjb2xkZXN0IHdlYXRoZXIgd2UgaGFiaXR1YWxseSBsZWF2ZSB0aGUgZmFjZSBlbnRpcmVseSB1bmNvdmVyZWQsIGV2ZW4gdGhvdWdoIAp0aGVyZSBpcyB1c3VhbGx5IGJ1dCBsaXR0bGUgaGFpciBvbiBpdCwgd2hlcmVhcyB3ZSBhcmUgY2FyZWZ1bCB0byBwdXQgYSAKY29uc2lkZXJhYmxlIGFuZCBtb3N0IGluc2FuaXRhcnkgd2VpZ2h0IHVwb24gdGhlIHVwcGVyIHBhcnQgb2YgdGhlIGhlYWQsIHdoaWNoIApuYXR1cmUgaGFzIGFscmVhZHkgYWJ1bmRhbnRseSBjb3ZlcmVkIHdpdGggaGFpciEgVGhpbmssIHRvbywgaG93IG11Y2ggbW9uZXkgCm1pZ2h0IGJlIHNhdmVkIGJ5IGRpc2NhcmRpbmcgYWxsIHVubmVjZXNzYXJ5IGFuZCBwb3NpdGl2ZWx5IGhhcm1mdWwgYXJ0aWNsZXMgb2YgCmRyZXNzLS0gaGF0cywgYm9vdHMsIHN0b2NraW5ncywgY29sbGFycywgY3VmZnMsIGNvcnNldHMuIAoKCjg5My7CoMKgwqDCoMKgwqDCoApCdXQgcGVvcGxlIG5ldmVyIHVzZSB0aGVpciBvd24gYnJhaW5zIHdpdGggcmVnYXJkIHRvIHN1Y2ggbWF0dGVyczsgdGhleSAKdGhpbmsgb25seSBvZiB3aGF0IHNvbWUgb25lIGVsc2UgaXMgZG9pbmcsIGFuZCB0aGV5IG5ldmVyIHJlYWxpc2UgdGhhdCB0aGVpciAKYm9hc3RlZCBsaWJlcnR5IGlzIHRoZSBtZXJlc3Qgc2hhbSwgc2luY2UgdGhleSBkbyBub3QgZmVlbCB0aGVtc2VsdmVzIGZyZWUgdG8gCmZvbGxvdyB0aGUgcGxhaW5lc3QgZGljdGF0ZXMgb2YgdGhlaXIgcmVhc29uLCBldmVuIHdpdGggcmVnYXJkIHRvIGEgbWF0dGVyIHdoaWNoIAppcyBzbyBjbGVhcmx5IHRoZWlyIG93biBwcml2YXRlIGJ1c2luZXNzIGFzIHRoZSBjbG90aGluZyB0aGF0IHRoZXkgc2hhbGwgd2Vhci4gCkZ1dHVyZSBhbmQgbW9yZSBlbmxpZ2h0ZW5lZCBnZW5lcmF0aW9ucyB3aWxsIGxvb2sgYmFjayB3aXRoIHdvbmRlciBhbmQgcGl0eSB1cG9uIAp0aGUgZHJlYXJ5IG1vbm90b255IG9mIHVnbGluZXNzIHRvIHdoaWNoIHRoaXMgc2Vuc2VsZXNzIHRocmFsZG9tIGNvbmRlbW5zIHVzLgoKCjg5NC7CoMKgwqDCoMKgwqDCoApBbm90aGVyIG9mIHRoZSBvYmplY3Rpb25hYmxlIGN1c3RvbXMgb2Ygb3VyIG1vZGVybiBjaXZpbGlzYXRpb24gaXMgdGhhdCAKb2YgaGFpci1jdXR0aW5nLiBJdCBpcyBvdXRyYWdlb3VzIHRoYXQgd2Ugc2hvdWxkIGJlIGV4cGVjdGVkIHRvIHN1Ym1pdCB0byBoYXZlIApvdXIgaGVhZHMgcGF3ZWQgYWJvdXQgZm9yIGEgcXVhcnRlciBvZiBhbiBob3VyIG9yIHNvIGJ5IGEgcGVyc29uIHdobyBpcyBub3QgCnVzdWFsbHkgb2YgdGhlIGhpZ2hlciBjbGFzc2VzLCB3aG8gZ2VuZXJhbGx5IHNtZWxscyBvZmZlbnNpdmVseSBvZiB0b2JhY2NvIG9yIApvbmlvbnMgb3IgcG9tYXR1bSwgd2hvIGJyZWF0aGVzIGluIG91ciBmYWNlcyBhbmQgd29ycmllcyB1cyB3aXRoIGEgc3RyZWFtIG9mIAppbmFuZSBjaGF0dGVyLS0gYW5kIGluIGFueSBjYXNlIGhhcyBiZWVuIHByb21pc2N1b3VzbHkgcGF3aW5nIHRoZSBoZWFkcyBvZiBhIApzY29yZSBvZiBvdGhlcnMgb2YgSGlzIE1hamVzdHknIHMgbGllZ2VzIHdpdGhvdXQgYW55IGludGVybWVkaWF0ZSBwcm9jZXNzIG9mIApwdXJpZmljYXRpb24uIENvbnNpZGVyaW5nIHRoZSBmYWN0IHRoYXQgdGhlIGhlYWQgaXMgcHJlY2lzZWx5IHRoZSBwYXJ0IG9mIHRoZSAKaHVtYW4gYm9keSB3aGVyZSB1bnBsZWFzYW50IGFsaWVuIG1hZ25ldGlzbSB3aWxsIHByb2R1Y2UgdGhlIGdyZWF0ZXN0IGVmZmVjdCwgCmFuZCB0aGF0IGl0IGlzIHRocm91Z2ggdGhlIGhhbmRzIHRoYXQgbWFnbmV0aXNtIGZsb3dzIG1vc3QgZWFzaWx5LCBvbmUgc2VlcyBhdCAKb25jZSB3aGF0IGEgcGVjdWxpYXJseSB1bnNjaWVudGlmaWMgYWJvbWluYXRpb24gdGhpcyBpcy4gSSBkbyBub3Qgc3VnZ2VzdCB0aGF0IApldmVyeSBtYW4gc2hvdWxkIGxldCBoaXMgaGFpciBncm93IHRvIGl0cyBmdWxsIGxlbmd0aDsgdGhhdCBpcyBhIG1hdHRlciBlbnRpcmVseSAKZm9yIGhpcyBwcml2YXRlIHRhc3RlOyBidXQgSSBkbyBzYXkgdGhhdCB0aGUgcGVyc29uIHdobyBjdXRzIGl0IHNob3VsZCBiZSBoaXMgCndpZmUgb3IgaGlzIG1vdGhlciwgaGlzIGJyb3RoZXIgb3IgaGlzIHNpc3Rlciwgb3IgYXQgbGVhc3Qgc29tZWJvZHkgb2YgdGhlIHNhbWUgCmZhbWlseSBvciBpbiBjbG9zZSBmcmllbmRzaGlwLCB3aG9zZSBtYWduZXRpc20gaXMgbGlrZWx5IHRvIGJlIG9uIHRoZSB3aG9sZSAKaGFybW9uaW91cyBhbmQgcmVhc29uYWJseSBwdXJlLiBJdCBtYXkgYmUgdGhhdCB1bnRpbCB3ZSBhbGwgaGF2ZSBoYWQgYSBjZXJ0YWluIAphbW91bnQgb2YgcHJhY3RpY2UsIHRoZSBoYWlyIHdvdWxkIG5vdCBiZSBxdWl0ZSBzbyB3ZWxsIGN1dCBhcyBieSB0aGUgCnByb2Zlc3Npb25hbCBwZXJzb247IGJ1dCB3ZSBzaG91bGQgYmUgZmFyIG1vcmUgdGhhbiBjb21wZW5zYXRlZCBieSBmcmVlZG9tIGZyb20gCmhlYWRhY2hlLCBmcm9tIHVucGxlYXNhbnQgc21lbGxzIGFuZCBmcm9tIGZvcmVpZ24gaW5mbHVlbmNlcy4gCgoKODk1LsKgwqDCoMKgwqDCoMKgClBIWVNJQ0FMIEVYSVNURU5DRSAKCgo4OTYuwqDCoMKgwqDCoMKgwqAKSW4gb3JkZXIgdGhhdCBpdHMgcmVhY3Rpb24gdXBvbiBoaWdoZXIgdmVoaWNsZXMgc2hvdWxkIGJlIHNhdGlzZmFjdG9yeSwgCml0IGlzIG5lY2Vzc2FyeSB0aGF0IHRoZSBwaHlzaWNhbCBib2R5IHNob3VsZCBiZSByZWd1bGFybHkgZXhlcmNpc2VkLiBUaGlzLCAKd2hpY2ggZG9jdG9ycyB0ZWxsIHVzIGlzIHNvIGRlc2lyYWJsZSBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHBoeXNpY2FsIGhlYWx0aCwgCmlzIHN0aWxsIG1vcmUgZGVzaXJhYmxlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgaGVhbHRoIGluIG90aGVyIHdvcmxkcy4gTm90IApvbmx5IGRvIHVudXNlZCBtdXNjbGVzIGRldGVyaW9yYXRlIGFuZCBiZWNvbWUgZmVlYmxlLCBidXQgdGhlaXIgY29uZGl0aW9uIApwcm9kdWNlcyBhIGNvbmdlc3Rpb24gb2YgbWFnbmV0aXNtLCBhIGNoZWNrIHRvIGl0cyBwcm9wZXIgYW5kIGhlYWx0aHkgZmxvdzsgYW5kIAp0aGF0IG1lYW5zIGEgd2VhayBzcG90IGluIHRoZSBldGhlcmljIGRvdWJsZSwgdGhyb3VnaCB3aGljaCBhIGhvc3RpbGUgaW5mbHVlbmNlIApjYW4gZWFzaWx5IHBlbmV0cmF0ZS4gQSBtYW4gd2hvIGtlZXBzIGhpcyBwaHlzaWNhbCBib2R5IHRob3JvdWdobHkgd2VsbCAKZXhlcmNpc2VkIGFsc28ga2VlcHMgaGlzIGV0aGVyaWMgYm9keSBpbiBnb29kIG9yZGVyLCB3aGljaCBtZWFucyBpbiB0aGUgZmlyc3QgCnBsYWNlIHRoYXQgaGUgaXMgZmFyIGxlc3MgbGlhYmxlIHRvIHRoZSBwZW5ldHJhdGlvbiBvZiB1bnBsZWFzYW50IHBoeXNpY2FsIApnZXJtcywgc3VjaCBhcyB0aG9zZSBvZiBpbmZlY3Rpb24sIGZvciBleGFtcGxlLiBBbmQgaW4gdGhlIHNlY29uZCwgYmVjYXVzZSBvZiAKdGhlIHJlYWN0aW9uIG9mIHRoaXMgdXBvbiB0aGUgYXN0cmFsIGFuZCBtZW50YWwgYm9kaWVzLCB0aG91Z2h0cyBvZiBkZXByZXNzaW9uIApvciBvZiBhbmltYWwgcGFzc2lvbiB3aWxsIGZpbmQgaXQgYWxtb3N0IGltcG9zc2libGUgdG8gc2VpemUgdXBvbiBoaW0uIFRoZXJlZm9yZSAKd2Ugc2VlIHRoYXQgZHVlIGFuZCByZWd1bGFyIHBoeXNpY2FsIGV4ZXJjaXNlIGhhcyBncmVhdCBpbXBvcnRhbmNlIGZyb20gdGhlIApvY2N1bHQgc3RhbmRwb2ludDsgaW5kZWVkIHdlIG1heSBzYXkgdGhhdCBhbGwgc3VjaCBwcmFjdGljZXMgYXMgaGF2ZSBiZWVuIGZvdW5kIApieSBleHBlcmltZW50IHRvIHByb21vdGUgdGhlIGhlYWx0aCBvZiB0aGUgcGh5c2ljYWwgYm9keSBhcmUgYWxzbyBmb3VuZCB0byByZWFjdCAKZmF2b3VyYWJseSB1cG9uIHRoZSBoaWdoZXIgdmVoaWNsZXMuIAoKCjg5Ny7CoMKgwqDCoMKgwqDCoApSRUFESU5HIEFORCBTVFVEWSAKCgo4OTguwqDCoMKgwqDCoMKgwqAKVGhlcmUgaXMgYW4gb2NjdWx0IHNpZGUgdG8gZXZlciBhY3Qgb2YgZGFpbHkgbGlmZSwgYW5kIGl0IG9mdGVuIGhhcHBlbnMgCnRoYXQgaWYgd2Uga25vdyB0aGlzIG9jY3VsdCBzaWRlIHdlIGNhbiBwZXJmb3JtIHRoZXNlIGRhaWx5IGFjdGlvbnMgbW9yZSAKcGVyZmVjdGx5IG9yIG1vcmUgdXNlZnVsbHkuIFRha2UsIGZvciBleGFtcGxlLCB0aGUgY2FzZSBvZiByZWFkaW5nLiBCcm9hZGx5IApzcGVha2luZywgd2UgcmVhZCBmb3IgdHdvIHB1cnBvc2VzLCBmb3Igc3R1ZHkgYW5kIGZvciBhbXVzZW1lbnQuIElmIG9uZSB3YXRjaGVzIAp3aXRoIGNsYWlydm95YW50IHZpc2lvbiBhIHBlcnNvbiB3aG8gaXMgcmVhZGluZyBmb3IgdGhlIHB1cnBvc2Ugb2Ygc3R1ZHksIG9uZSBpcyAKb2Z0ZW4gc3VycHJpc2VkIHRvIHNlZSBob3cgbGl0dGxlIHRoZSByZWFsIG1lYW5pbmcgb2Ygd2hhdCBpcyB3cml0dGVuIHBlbmV0cmF0ZXMgCmludG8gdGhlIG1pbmQgb2YgdGhlIHJlYWRlci4gSW4gYSBib29rIHRoYXQgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4sIGluIG9yZGVyIHRoYXQgCml0IG1heSBiZSBzdHVkaWVkLCBlYWNoIHNlbnRlbmNlIG9yIHBhcmFncmFwaCB1c3VhbGx5IGNvbnRhaW5zIGEgY2xlYXIgc3RhdGVtZW50IApvZiBhIGNlcnRhaW4gZGVmaW5pdGUgaWRlYS4gVGhhdCBpZGVhIGV4cHJlc3NlcyBpdHNlbGYgYXMgYSB0aG91Z2h0LWZvcm0sIHRoZSAKc2hhcGUgb3Igc2l6ZSBvZiB3aGljaCB2YXJpZXMgYWNjb3JkaW5nIHRvIHRoZSBzdWJqZWN0LiBCdXQgd2hldGhlciBpdCBpcyBzbWFsbCAKb3IgbGFyZ2UsIHdoZXRoZXIgaXQgaXMgc2ltcGxlIG9yIGNvbXBsaWNhdGVkLCBpdCBpcyBhdCBsZWFzdCBjbGVhciBhbmQgZGVmaW5pdGUgCm9mIGl0cyBraW5kLiBJdCBpcyB1c3VhbGx5IHN1cnJvdW5kZWQgd2l0aCB2YXJpb3VzIHN1YnNpZGlhcnkgZm9ybXMsIHdoaWNoIGFyZSAKdGhlIGV4cHJlc3Npb25zIG9mIGNvcm9sbGFyaWVzIG9yIG5lY2Vzc2FyeSBkZWR1Y3Rpb25zIGZyb20gdGhlIHN0YXRlbWVudC4gTm93IAphbiBleGFjdCBkdXBsaWNhdGUgb2YgdGhpcywgd2hpY2ggaXMgdGhlIGF1dGhvcicgcyB0aG91Z2h0LWZvcm0sIHNob3VsZCBidWlsZCAKaXRzZWxmIHVwIGluIHRoZSByZWFkZXInIHMgbWluZCwgcGVyaGFwcyBpbW1lZGlhdGVseSwgcGVyaGFwcyBvbmx5IGJ5IGRlZ3JlZXMuIApXaGV0aGVyIHRoZSBmb3JtcyBpbmRpY2F0aW5nIGNvcm9sbGFyaWVzIGFsc28gYXBwZWFyOyBkZXBlbmRzIHVwb24gdGhlIG5hdHVyZSBvZiAKdGhlIHN0dWRlbnQnIHMgbWluZC0tIHdoZXRoZXIgaGUgaXMgb3IgaXMgbm90IHF1aWNrIHRvIHNlZSBpbiBhIG1vbWVudCBhbGwgdGhhdCAKZm9sbG93cyBmcm9tIGEgY2VydGFpbiBzdGF0ZW1lbnQuIAoKCjg5OS7CoMKgwqDCoMKgwqDCoApBcyBhIGdlbmVyYWwgcnVsZSwgd2l0aCBhIGdvb2Qgc3R1ZGVudCB0aGUgaW1hZ2Ugb2YgdGhlIGNlbnRyYWwgaWRlYSB3aWxsIApyZXByb2R1Y2UgaXRzZWxmIGZhaXJseSBhY2N1cmF0ZWx5IGF0IG9uY2UsIGFuZCB0aGUgc3Vycm91bmRpbmcgaW1hZ2VzIHdpbGwgY29tZSAKaW50byBiZWluZyBvbmUgYnkgb25lIGFzIHRoZSBzdHVkZW50cyByZXZvbHZlcyB0aGUgY2VudHJhbCBpZGVhIGluIGhpcyBtaW5kLiBCdXQgCnVuZm9ydHVuYXRlbHkgd2l0aCBtYW55IHBlb3BsZSBldmVuIHRoZSBjZW50cmFsIGlkZWEgaXMgYnkgbm8gbWVhbnMgcHJvcGVybHkgCnJlcHJlc2VudGVkLiBMZXNzIGRldmVsb3BlZCBtZW50YWxseSwgdGhleSBjYW5ub3QgbWFrZSBhIGNsZWFyIHJlZmxlY3Rpb24gYXQgCmFsbCwgYW5kIHRoZXkgY3JlYXRlIGEgc29ydCBvZiBhbW9ycGhvdXMsIGluY29ycmVjdCBtYXNzIGluc3RlYWQgb2YgYSAKZ2VvbWV0cmljYWwgZm9ybS4gT3RoZXJzIG1hbnVmYWN0dXJlIHNvbWV0aGluZywgd2hpY2ggaXMgaW5kZWVkIHJlY29nbmlzYWJsZSBhcyAKdGhlIHNhbWUgZm9ybSwgYnV0IHdpdGggYmx1bnRlZCBlZGdlcyBhbmQgYW5nbGVzLCBvciB3aXRoIG9uZSBwYXJ0IG9mIGl0IAplbnRpcmVseSBvdXQgb2YgcHJvcG9ydGlvbiB0byB0aGUgcmVzdC0tIGEgYmFkbHkgZHJhd24gcmVwcmVzZW50YXRpb24sIGluIGZhY3QuCgoKOTAwLsKgwqDCoMKgwqDCoMKgCk90aGVycyBzdWNjZWVkIGluIG1ha2luZyBhIGtpbmQgb2Ygc2tlbGV0b24gb2YgaXQsIHdoaWNoIG1lYW5zIHRoYXQgdGhleSAKaGF2ZSBncmFzcGVkIHRoZSBvdXRsaW5lIG9mIHRoZSBpZGVhLCBidXQgYXJlIGFzIHlldCBxdWl0ZSB1bmFibGUgdG8gbWFrZSBpdCAKbGl2aW5nIHRvIHRoZW1zZWx2ZXMsIG9yIHRvIGZpbGwgaW4gYW55IG9mIGl0cyBkZXRhaWwuIE90aGVycy0tIHBlcmhhcHMgdGhlIG1vc3QgCm51bWVyb3VzIGNsYXNzLS0gdG91Y2ggb25lIHNpZGUgb2YgdGhlIGlkZWEgYW5kIG5vdCB0aGUgb3RoZXIsIGFuZCBzbyBidWlsZCBvbmx5IApoYWxmIHRoZSBmb3JtLiBPdGhlcnMgc2VpemUgb25lIHBvaW50IGluIGl0IGFuZCBuZWdsZWN0IGFsbCB0aGUgcmVzdCwgYW5kIHNvIApnZW5lcmF0ZSBhIGZpZ3VyZSB3aGljaCBtYXkgYmUgYWNjdXJhdGUgYXMgZmFyIGFzIGl0IGdvZXMsIGJ1dCBpcyBub3QgCnJlY29nbmlzYWJsZSBhcyBhIGNvcHkgb2YgdGhhdCBnaXZlbiBpbiB0aGUgYm9vay4gWWV0IHRoZXNlIHBlb3BsZSB3aWxsIGFsbCAKYXNzZXJ0IHRoYXQgdGhleSBoYXZlIHN0dWRpZWQgdGhlIGJvb2sgaW4gcXVlc3Rpb24sIHRob3VnaCBpZiB0aGV5IHdlcmUgYXNrZWQgdG8gCnJlcHJvZHVjZSBpdHMgY29udGFpbnMgZnJvbSBtZW1vcnksIHRoZSByZXN1bHRpbmcgZXNzYXlzIHdvdWxkIGhhdmUgbGl0dGxlIGluIApjb21tb24uIAoKCjkwMS7CoMKgwqDCoMKgwqDCoApUaGlzIG1lYW5zIGluIHRoZSBmaXJzdCBwbGFjZSBhIGxhY2sgb2YgYXR0ZW50aW9uLiBUaGVzZSBwZW9wbGUgCnByZXN1bWFibHkgcmVhZCB0aGUgd29yZHMsIGJ1dCB0aGUgaWRlYXMgZXhwcmVzc2VkIGJ5IHRob3NlIHdvcmRzIGRvIG5vdCBlZmZlY3QgCmEgbG9kZ21lbnQgaW4gdGhlaXIgbWluZHMuIE9mdGVuIGl0IGlzIGVhc3kgZm9yIHRoZSBjbGFpcnZveWFudCB0byBzZWUgdGhlIApyZWFzb24gZm9yIHRoaXMsIGZvciBpZiBoZSB3YXRjaGVzIHRoZSBtZW50YWwgYm9keSBvZiB0aGUgc3R1ZGVudCBoZSBzZWVzIGl0IHRvIApiZSBvY2N1cGllZCB3aXRoIGhhbGYgYSBkb3plbiBzdWJqZWN0cyBzaW11bHRhbmVvdXNseS4gSG91c2Vob2xkIGNhcmVzLCBidXNpbmVzcyAKd29ycmllcywgdGhvdWdodHMgb2Ygc29tZSByZWNlbnQgcGxlYXN1cmUgb3IgZXhwZWN0YXRpb25zIG9mIGFuIGFwcHJvYWNoaW5nIG9uZSwgCmEgZmVlbGluZyBvZiB3ZWFyaW5lc3MgYW5kIHJlcHVsc2lvbiBhdCBoYXZpbmcgdG8gc3R1ZHkgYW5kIGEgbG9uZ2luZyBmb3IgdGhlIAp0aW1lIHdoZW4gdGhlIGhhbGYtaG91ciBvZiBzdHVkeSBzaGFsbCBiZSBvdmVyOyBhbGwgc3VjaCBmZWVsaW5ncyBhcyB0aGVzZSBhcmUgCnNlZXRoaW5nIGluIHRoZSBtYW4nIHMgYnJhaW4sIGFuZCBvY2N1cHlpbmcgYmV0d2VlbiB0aGVtIG5pbmUtdGVudGhzIG9mIHRoZSAKbWF0dGVyIG9mIGhpcyBtZW50YWwgYm9keSwgd2hpbGUgdGhlIHBvb3IgcmVtYWluaW5nIHRlbnRoIGlzIG1ha2luZyBhIGRlc3BhaXJpbmcgCmVmZm9ydCB0byBnZXQgaG9sZCBvZiB0aGUgdGhvdWdodC1mb3JtIHdoaWNoIGhlIGlzIHN1cHBvc2VkIHRvIGJlIGFzc2ltaWxhdGluZyAKZnJvbSB0aGUgYm9vay4gVW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcywgbmF0dXJhbGx5IGVub3VnaCwgaXQgaXMgaG9wZWxlc3MgdG8gCmV4cGVjdCBhbnkgcmVhbCBiZW5lZml0LCBhbmQgaXQgd291bGQgcHJvYmFibHksIG9uIHRoZSB3aG9sZSwgYmUgYmV0dGVyIGZvciBzdWNoIAphIG1hbiBvZiBoZSBkaWQgbm90IGF0dGVtcHQgdG8gc3R1ZHkgYXQgYWxsLiAKCgo5MDIuwqDCoMKgwqDCoMKgwqAKRnJvbSB0aGUgZXhhbWluYXRpb24gb2YgdGhpcyBoaWRkZW4gc2lkZSBvZiBzdHVkeSwgdGhlbiwgY2VydGFpbiBkZWZpbml0ZSAKcnVsZXMgZW1lcmdlIHdoaWNoIGl0IHdvdWxkIGJlIHdlbGwgZm9yIHRoZSBpbnRlbmRpbmcgc3R1ZGVudCB0byBmb2xsb3cuIEZpcnN0LCAKaGUgbXVzdCBiZWdpbiBieSBlbXB0eWluZyBoaXMgbWluZCBvZiBhbGwgb3RoZXIgdGhvdWdodHMgYW5kIG11c3Qgc2VlIHRvIGl0IHRoYXQgCnRoZXkgYXJlIG5vdCBwZXJtaXR0ZWQgdG8gcmV0dXJuIHVudGlsIGhpcyB0aW1lIG9mIHN0dWR5IGlzIG92ZXIuIEhlIG11c3QgZnJlZSAKaGlzIG1pbmQgZnJvbSBhbGwgY2FyZXMgYW5kIHBlcnBsZXhpdGllcywgYW5kIHRoZW4gaGUgbXVzdCBjb25jZW50cmF0ZSBpdCB3aG9sbHkgCm9uIHRoZSBtYXR0ZXIgaW4gaGFuZC4gSGUgc2hvdWxkIHJlYWQgdGhyb3VnaCBoaXMgcGFyYWdyYXBoIHNsb3dseSBhbmQgCmNhcmVmdWxseSwgYW5kIHRoZW4gcGF1c2UgdG8gc2VlIHdoZXRoZXIgdGhlIGltYWdlIGlzIGNsZWFyIGluIGhpcyBtaW5kLiBUaGVuIGhlIApzaG91bGQgcmVhZCB0aGUgcGFzc2FnZSBvdmVyIGFnYWluIHdpdGggZXF1YWwgY2FyZSwgYW5kIHNlZSB3aGV0aGVyIGFueSAKYWRkaXRpb25hbCBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQgdG8gaGlzIG1lbnRhbCBpbWFnZTsgYW5kIGhlIHNob3VsZCByZXBlYXQgCnRoaXMgdW50aWwgaGUgZmVlbHMgdGhhdCBoZSBoYXMgYSB0aG9yb3VnaCBncmFzcCBvZiB0aGUgc3ViamVjdCwgYW5kIHRoYXQgbm8gbmV3IAppZGVhIHVwb24gaXQgd2lsbCBpbW1lZGlhdGVseSBzdWdnZXN0IGl0c2VsZi4gV2hlbiB0aGF0IGlzIGRvbmUgaGUgbWF5IHVzZWZ1bGx5IApzZWUgd2hldGhlciBoZSBjYW4gcGljayBvdXQgYW55IG9mIHRoZSBjb3JvbGxhcmllcywgd2hldGhlciBoZSBjYW4gc3Vycm91bmQgaGlzIApjZW50cmFsIHRob3VnaHQtZm9ybSB3aXRoIHBsYW5ldHMgZGVwZW5kaW5nIG9uIGl0LiAKCgo5MDMuwqDCoMKgwqDCoMKgwqAKQWxsIHRoaXMgd2hpbGUsIGEgbWFzcyBvZiBvdGhlciB0aG91Z2h0cyB3aWxsIGhhdmUgYmVlbiBjbGFtb3VyaW5nIGZvciAKYWRtaXNzaW9uOyBidXQgaWYgb3VyIHN0dWRlbnQgaXMgd29ydGh5IG9mIHRoZSBuYW1lIGhlIHdpbGwgc3Rlcm5seSByZWZ1c2UgdGhlbSAKYW5kIGtlZXAgaGlzIG1pbmQgZml4ZWQgZXhjbHVzaXZlbHkgb24gdGhlIHF1ZXN0aW9uIGluIGhhbmQuIFRoZSBvcmlnaW5hbCAKdGhvdWdodC1mb3JtIHdoaWNoIEkgaGF2ZSBkZXNjcmliZWQgcmVwcmVzZW50cyB0aGUgYXV0aG9yJyBzIGNvbmNlcHRpb24gYXMgaGUgCndyb3RlLCBhbmQgaXQgaXMgYWx3YXlzIHBvc3NpYmxlIGJ5IGVhcm5lc3Qgc3R1ZHkgdG8gZ2V0IHRodXMgaW50byB0b3VjaCB3aXRoIAp0aGUgbWluZCBvZiB0aGUgYXV0aG9yLiBPZnRlbiB0aHJvdWdoIGhpcyB0aG91Z2h0LWZvcm0gaGUgaGltc2VsZiBtYXkgYmUgCnJlYWNoZWQsIGFuZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG1heSBiZSBvYnRhaW5lZCBvciBsaWdodCBtYXkgYmUgZ2FpbmVkIG9uIApkaWZmaWN1bHQgcG9pbnRzLiBVc3VhbGx5IHRoZSBzdHVkZW50LCB1bmxlc3MgaGlnaGx5IGRldmVsb3BlZCwgY2Fubm90IGNvbWUgaW50bwpjb25zY2lvdXMgdG91Y2ggd2l0aCB0aGUgYXV0aG9yLCBzbyBhcyBhY3R1YWxseSB0byBpbnRlcmNoYW5nZSBpZGVhcyAKd2l0aCBoaW07IGFueSBuZXcgdGhvdWdodCB3aWxsIHByb2JhYmx5IGFwcGVhciB0byB0aGUgc3R1ZGVudCBhcyBoaXMgb3duLCAKYmVjYXVzZSBpdCBhbHdheXMgY29tZXMgaW50byBoaXMgcGh5c2ljYWwgYnJhaW4gZnJvbSBhYm92ZSwganVzdCBhcyBtdWNoIHdoZW4gaXQgCmlzIHN1Z2dlc3RlZCBmcm9tIG91dHNpZGUgYXMgd2hlbiBpdCBvcmlnaW5hdGVzIGluIGhpcyBvd24gbWVudGFsIGJvZHk7IGJ1dCB0aGF0IAptYXR0ZXJzIGxpdHRsZSBzbyBsb25nIGFzIGhlIGdldHMgYSBjbGVhciBjb25jZXB0aW9uIG9mIGhpcyBvYmplY3QuIAoKCjkwNC7CoMKgwqDCoMKgwqDCoApTWVNURU0gQU5EIFRIT1JPVUdITkVTUyAKCgo5MDUuwqDCoMKgwqDCoMKgwqAKQWxsIHRoaXMgdGhlIG9jY3VsdCBzdHVkZW50IGRvZXMgYXMgYSBtYXR0ZXIgb2YgY291cnNlLCBhbmQgaGUgZG9lcyBpdCAKZGFpbHkgd2l0aCB0aGUgbW9zdCBleGVtcGxhcnkgcmVndWxhcml0eSwgZm9yIGhlIHJlY29nbmlzZXMgaXRzIGltcG9ydGFuY2UsIApmaXJzdCBiZWNhdXNlIGhlIGtub3dzIHRoZSBuZWNlc3NpdHkgb2Ygc3lzdGVtYXRpYyB3b3JrIG9yIHRyYWluaW5nLCBhbmQgCnNlY29uZGx5IGJlY2F1c2Ugb25lIG9mIHRoZSBkdXRpZXMgbW9zdCBzdHJvbmdseSBpbXByZXNzZWQgdXBvbiBoaW0gaXMgdGhhdCBvZiAKdGhvcm91Z2huZXNzLiBIaXMgbW90dG8gbXVzdCBiZTog77+9V2hhdHNvZXZlciB0aHkgaGFuZCBmaW5kZXRoIHRvIGRvLCBkbyBpdCB3aXRoIAp0aHkgbWlnaHQu77+9IEhlIGtub3dzIHRoYXQgd2hhdGV2ZXIgaGUgZG9lcyBoZSBvdWdodCB0byBkbyBiZXR0ZXIgdGhhbiB0aGUgbWFuIG9mIAp0aGUgd29ybGQgZG9lcyBpdCwgdGhhdCBub3RoaW5nIHdpbGwgc3VmZmljZSBidXQgdGhlIGJlc3QgdGhhdCBpcyBwb3NzaWJsZSB0byAKaGltLCBhbmQgdGhhdCBoZSBtdXN0IHRyeSBjZWFzZWxlc3NseSB0byBhdHRhaW4gcGVyZmVjdGlvbiBpbiBhbGwgaGlzIHdvcmssIApkZXZlbG9waW5nIGFsbCBoaXMgdmVoaWNsZXMgdG8gdGhlIHV0bW9zdCwgaW4gb3JkZXIgdGhhdCBoZSBuYXkgZ2FpbiB0aGF0IApwZXJmZWN0aW9uLiAKCgo5MDYuwqDCoMKgwqDCoMKgwqAKTk9WRUwgQU5EIE5FV1NQQVBFUi1SRUFESU5HIAoKCjkwNy7CoMKgwqDCoMKgwqDCoApFdmVuIHdoZW4gd2UgcmVhZCBmb3IgYW11c2VtZW50IGl0IGlzIHN0aWxsIGVtaW5lbnRseSBkZXNpcmFibGUgdGhhdCB3ZSAKc2hvdWxkIGZvcm0gYSBoYWJpdCBvZiBjb25jZW50cmF0aW9uIHVwb24gd2hhdCBpcyByZWFkLiBBZnRlciBtdWNoIHN0dWR5IG9yIGhhcmQgCm1lbnRhbCBsYWJvdXIgb2YgYW55IGtpbmQsIGl0IGlzIG9mdGVuIGEgZ3JlYXQgcmVsaWVmIHRvIHR1cm4gdG8gYSBnb29kIG5vdmVsLCAKYW5kIHRoZXJlIGlzIG5vIGhhcm0gd2hhdGV2ZXIgaW4gZG9pbmcgc28sIHNvIGxvbmcgYXMgbW9kZXJhdGlvbiBpcyBvYnNlcnZlZC4gClRoZSBwZXJzb24gd2hvIGdpdmVzIHVwIGhpcyB3aG9sZSBsaWZlIHRvIG5vdmVsLXJlYWRpbmcgaXMgeWllbGRpbmcgdG8gbWVudGFsIApkaXNzaXBhdGlvbiwgYW5kIGlmIGhlIGNvbnRpbnVlcyB0byB0cmVhdCBoaXMgbWluZCBpbiB0aGF0IHdheSBoZSB3aWxsIHByb2JhYmx5IApzb29uIGZpbmQgdGhhdCBpdCBpcyBvZiBsaXR0bGUgdXNlIHRvIGhpbSBhcyBhbiBpbnN0cnVtZW50IGZvciBzZXJpb3VzIHN0dWR5LiAKQnV0LCBhcyBJIGhhdmUgc2FpZCwgb2NjYXNpb25hbCBub3ZlbC1yZWFkaW5nIGZvciByZWxpZWYgaXMgaGFybWxlc3MgYW5kIGV2ZW4gCmJlbmVmaWNpYWwuIAoKCjkwOC7CoMKgwqDCoMKgwqDCoApFdmVuIHRoZW4gaXQgaXMgd2VsbCBub3QgdG8gcmVhZCBjYXJlbGVzc2x5LCBidXQgdG8gdHJ5IHRvIGZvcm0gYSBjbGVhciAKY29uY2VwdGlvbiBvZiBlYWNoIGNoYXJhY3RlciwgdG8gbWFrZSB0aGUgcGVvcGxlIGxpdmUgYW5kIG1vdmUgYmVmb3JlIG9uZS4gV2hlbiAKdGhlIGF1dGhvciB3cm90ZSBoaXMgc3RvcnkgaGUgbWFkZSBzdWNoIGEgc2VyaWVzIG9mIHRob3VnaHQtZm9ybXMuIE1hbnkgb3RoZXIgCnJlYWRlcnMgc2luY2UgaGF2ZSBjb21lIGludG8gdG91Y2ggd2l0aCB0aGVtIGFuZCBzdHJlbmd0aGVuZWQgdGhlbSwgKHRob3VnaCBzb21lIApwcmVmZXIgdG8gY29uc3RydWN0IGEgZnJlc2ggc2V0IG9mIHRoZWlyIG93biksIGFuZCBpdCBpcyBmcmVxdWVudGx5IHBvc3NpYmxlIHRvIApzZWUgd2l0aCB0aGUgbWluZCB0aGUgYXV0aG9yJyBzIG9yaWdpbmFsIHNldCwgYW5kIHNvIHRvIGZvbGxvdyBoaXMgc3RvcnkgZXhhY3RseSAKYXMgaGUgbWVhbnQgaXQuIAoKCjkwOS7CoMKgwqDCoMKgwqDCoApPZiBzb21lIHdlbGwta25vd24gc3RvcmllcyB0aGVyZSBhcmUgbWFueSByZW5kZXJpbmdzIGluIHRoZSBtZW50YWwgYW5kIAphc3RyYWwgd29ybGRzLiBPZiB0aGUgYmlibGljYWwgc3RvcmllcywgZm9yIGV4YW1wbGUsIGVhY2ggbmF0aW9uIGhhcyB1c3VhbGx5IGl0cyAKc3BlY2lhbCBwcmVzZW50YXRpb24sIGFuZCBnZW5lcmFsbHkgd2l0aCB0aGUgY2hhcmFjdGVycyBhbGwgZHJlc3NlZCBpbiBpdHMgCnBhcnRpY3VsYXIgbmF0aW9uYWwgZ2FyYi4gQ2hpbGRyZW4gaGF2ZSB2aXZpZCBhbmQgY2FwYWJsZSBpbWFnaW5hdGlvbnMsIHNvIGJvb2tzIAptdWNoIHJlYWQgYnkgdGhlbSBhcmUgc3VyZSB0byBiZSB3ZWxsIHJlcHJlc2VudGVkIGluIHRoZSB3b3JsZCBvZiB0aG91Z2h0LWZvcm1zOyAKd2UgZmluZCBtYW55IGV4Y2VsbGVudCBhbmQgbGlmZS1saWtlIHBvcnRyYWl0cyBvZiBzdWNoIHBlb3BsZSBhcyBTaGVybG9jayAKSG9sbWVzLCBDYXB0YWluIEtldHRsZSwgSm9obiBTaWx2ZXIsIG9yIERyLiBOaWtvbGEuIAoKCjkxMC7CoMKgwqDCoMKgwqDCoApPbiB0aGUgd2hvbGUsIGhvd2V2ZXIsIHRoZSB0aG91Z2h0LWZvcm1zIGV2b2tlZCBmcm9tIHRoZSBub3ZlbHMgb2YgdG8tZGF5IAphcmUgYnkgbm8gbWVhbnMgc28gY2xlYXIgYXMgdGhvc2Ugd2hpY2ggb3VyIGZvcmVmYXRoZXJzIG1hZGUgb2YgUm9iaW5zb24gQ3J1c29lIApvciBvZiB0aGUgY2hhcmFjdGVycyBpbiBTaGFrZXNwZWFyZScgcyBwbGF5cy4gVGhhdCBjb21lcyBsYXJnZWx5IGZyb20gdGhlIGZhY3QgCnRoYXQgd2UgcmFyZWx5IGdpdmUgbW9yZSB0aGFuIGhhbGYgb3VyIGF0dGVudGlvbiB0byBhbnl0aGluZywgZXZlbiB0byBhIGdvb2QgCnN0b3J5LCBhbmQgdGhhdCBpbiB0dXJuIGlzIHRoZSBjb25zZXF1ZW5jZSBvZiB0aGUgY3VyaW91cyBsaXRlcmFyeSBjb25kaXRpb25zIG9mIApvdXIgbW9kZXJuIGxpZmUuIEluIHRoZSBvbGRlciBkYXlzLCBpZiBhIG1hbiByZWFkIGF0IGFsbCwgaGUgcmVhZCBlYXJuZXN0bHkgYW5kIApmaXhlZCBoaXMgbWluZCB1cG9uIHdoYXQgaGUgd2FzIGRvaW5nLiBJZiBoZSB0b29rIHVwIGFueSBzdWJqZWN0LCBoZSByZWFkIApzZXJpb3VzIGJvb2tzIHVwb24gdGhhdCBzdWJqZWN0LiBJbiB0aGVzZSBkYXlzIGEgbGFyZ2UgbnVtYmVyIG9mIHBlb3BsZSAKZGVwZW5kZW50IGZvciBhbG1vc3QgYWxsIHRoZSBpbmZvcm1hdGlvbiB0aGV5IHBvc3Nlc3MgdXBvbiBuZXdzcGFwZXJzIGFuZCAKbWFnYXppbmVzLiBUaGUgbWFnYXppbmUgb3IgbmV3c3BhcGVyIGFydGljbGUgY29udmV5cyBpbiBhIGhhbmR5IGZvcm0gZm9yIGVhc3kgCmFzc2ltaWxhdGlvbiBhIGNlcnRhaW4gYW1vdW50IG9mIHN1cGVyZmljaWFsIGluZm9ybWF0aW9uIHVwb24gaXRzIHN1YmplY3QsIAp3aGF0ZXZlciB0aGF0IG1heSBiZTsgaXQgZ2l2ZXMgZW5vdWdoIHRvIGVuYWJsZSBhIG1hbiB0byB0YWxrIGxpZ2h0bHkgYWJvdXQgdGhlIAptYXR0ZXIgYXQgYSBkaW5uZXItdGFibGUsIGJ1dCBub3QgZW5vdWdoIHRvIHRheCBoaXMgaW50ZWxsZWN0IG9yIHRvIGdpdmUgaGltIGEgCnNlbnNlIG9mIG1lbnRhbCBlZmZvcnQuIEl0IGlzIGFuIGFnZSBvZiBpbmZvcm1hdGlvbiBieSBzbmlwcGV0cywgYW5kIHRoZSAKdWx0aW1hdGUgZXhwcmVzc2lvbiBvZiBpdHMgc3Bpcml0IGlzIHNob3duIGJ5IHRoZSBlbm9ybW91cyBjaXJjdWxhdGlvbiBvZiBzdWNoIApwYXBlcnMgYXMgVGl0LUJpdHMgYW5kIEFuc3dlcnMuIFRoZSBtaW5kIHdoaWNoIGdhaW5zIGl0cyAKaW5mb3JtYXRpb24gaW4gdGhpcyB3YXkgaGFzIG5vIHJlYWwgZ3Jhc3Agb2YgYW55IHN1YmplY3QtLSBubyBzb2xpZCBmb3VuZGF0aW9uOyAKYW5kIGJlY2F1c2UgaXQgaGFzIGFjY3VzdG9tZWQgaXRzZWxmIHRvIGZlZWRpbmcgdXBvbiBoaWdobHktc3BpY2VkIGZyYWdtZW50cyBpdCAKZmluZHMgaXRzZWxmIGluY2FwYWJsZSBvZiBkaWdlc3RpbmcgYSBtb3JlIHNhdGlzZnlpbmcgbWVhbC4gCgoKOTExLsKgwqDCoMKgwqDCoMKgCkFuIHVucGxlYXNhbnQgZmVhdHVyZSBvZiB0aGUgbmV3c3BhcGVyIHByZXNzIG9mIHRoZSBwcmVzZW50IGRheSBpcyB0aGUgCmdyZWF0IHByb21pbmVuY2UgZ2l2ZW4gdG8gbXVyZGVycyBhbmQgZGl2b3JjZSBjYXNlcywgYW5kIHRoZSB3ZWFsdGggb2Ygc2lja2VuaW5nIApkZXRhaWwgYWJvdXQgdGhlbSB3aGljaCBpcyBwdXQgYmVmb3JlIHRoZSBwdWJsaWMsIGRheSBhZnRlciBkYXkuIFRoaXMgaXMgYmFkIAplbm91Z2ggZnJvbSBhbnkgcG9pbnQgb2YgdmlldywgYnV0IHdoZW4sIHdlIGFkZCB0byBvcmRpbmFyeSBjb25zaWRlcmF0aW9ucyB0aG9zZSAKd2hpY2ggYXJlIHNob3duIHRvIHVzIGJ5IHRoZSBzdHVkeSBvZiB0aGUgaGlkZGVuIHNpZGUgb2YgYWxsIHRoZXNlIHRoaW5ncywgd2UgCmFyZSBmYWlybHkgYXBwYWxsZWQuIFRoZSByZXN1bHQgb2YgdGhpcyBwcnVyaWVudCBwdWJsaWNpdHkgaXMgdGhhdCBhbGwgb3ZlciB0aGUgCmNvdW50cnkgZ3JlYXQgbWFzc2VzIG9mIHZpdmlkIGFuZCBtb3N0IG9iamVjdGlvbmFibGUgdGhvdWdodC1mb3JtcyBhcmUgCmNvbnN0YW50bHkgYmVpbmcgZ2VuZXJhdGVkOyBwZW9wbGUgcGljdHVyZSB0aGUgaG9ycmlibGUgZGV0YWlscyBvZiB0aGUgbXVyZGVyLCAKb3IgZ2xvYXQgbGliaWRpbm91c2x5IG92ZXIgc3VnZ2VzdGl2ZSBmYWN0cyBvciByZW1hcmtzIGNvbm5lY3RlZCB3aXRoIHRoZSAKZGl2b3JjZSBjYXNlLCBhbmQgdGhlIHJlc3VsdGluZyB0aG91Z2h0LWZvcm1zIGluIHRoZSBmaXJzdCBjYXNlIGFyZSBvZiBhIAp0ZXJyaWZ5aW5nIGNoYXJhY3RlciB0byBhbnkgbmVydm91cyBwZXJzb24gd2hvIGNhbiBiZSBpbmZsdWVuY2VkIGJ5IHRoZW0sIGFuZCBpbiAKdGhlIHNlY29uZCBjYXNlIGNvbnN0aXR1dGUgYSBkaXN0aW5jdCB0ZW1wdGF0aW9uIHRvd2FyZHMgZXZpbCB0aG91Z2h0IGFuZCBhY3Rpb24gCmZvciB0aG9zZSB3aG8gaGF2ZSBpbiB0aGVtIGdlcm1zIG9mIHNlbnN1YWxpdHkuIFRoaXMgaXMgbm8gbWVyZSBzdXBwb3NpdGlvbiBhcyAKdG8gd2hhdCBtdXN0IG9jY3VyLS0gaXQgaXMgYSBkZWZpbml0ZSBjaHJvbmljbGUgb2Ygd2hhdCBjb25zdGFudGx5IGRvZXMgCm9jY3VyLiBObyBjbGFpcnZveWFudCBjYW4gYXZvaWQgbm90aWNpbmcgdGhlIGdyZWF0IGluY3JlYXNlIGluIHVucGxlYXNhbnQgCnRob3VnaHQtZm9ybXMgZHVyaW5nIHRoZSBwcm9ncmVzcyBvZiBhbnkgb2YgdGhlc2Ugc2Vuc2F0aW9uYWwgY2FzZXMuIAoKCjkxMi7CoMKgwqDCoMKgwqDCoApPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaXMgb25seSBmYWlyIHRvIHJlbWVtYmVyIHRoYXQgdGhlIGN1cmlvdXMgCmZyYWdtZW50YXJ5IGxpdGVyYXR1cmUgb2YgdG8tZGF5IHJlYWNoZXMgYSBtdWx0aXR1ZGUgb2YgcGVvcGxlIHdobyBpbiB0aGUgb2xkIApkYXlzIGRpZCBub3QgcmVhZCBhdCBhbGwuIEEgbWFuIHdobyBpcyBhdCBoZWFydCBhbmQgYnkgZGlzcG9zaXRpb24gYSByZWFsaXR5IApzZXJpb3VzIHN0dWRlbnQgc3RpbGwgc3R1ZGllcyBqdXN0IGFzIG9mIG9sZC4gQSBjZXJ0YWluIG51bWJlciBvZiBwZW9wbGUgd2hvIGluIAp0aGUgb2xkZXIgZGF5cyBtaWdodCBoYXZlIHN0dWRpZWQgc2VyaW91c2x5LCBhcmUgbm93IGRpdmVydGVkIGZyb20gZG9pbmcgc28gYnkgCnRoZSBmYWNpbGl0eSB3aXRoIHdoaWNoIHRoZXkgY2FuIG9idGFpbiBzdXBlcmZpY2lhbCBpbmZvcm1hdGlvbiBpbiBzbWFsbCBkb3NlczsgCmJ1dCBhIG11Y2ggZ3JlYXRlciBudW1iZXIgb2YgcGVvcGxlIHdobyB3b3VsZCBuZXZlciB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcyBoYXZlIAp0YWtlbiB1cCBzZXJpb3VzIHN0dWR5IGFyZSBub3cgYmVndWlsZWQgaW50byBhY3F1aXJpbmcgYXQgbGVhc3QgYSBjZXJ0YWluIGFtb3VudCAKb2YgaW5mb3JtYXRpb24gYnkgdGhlIGVhc2Ugd2l0aCB3aGljaCBpdCBjYW4gYmUgZG9uZS4gTWFueSBhIG1hbiBidXlzIGEgbWFnYXppbmUgCm9uIGEgcmFpbHdheS1qb3VybmV5LCBmb3IgdGhlIHB1cnBvc2Ugb2YgcmVhZGluZyB0aGUgc3RvcmllcyBpbiBpdDsgZmluaXNoaW5nIAp0aGVtIGJlZm9yZSB0aGUgam91cm5leSBpcyBvdmVyLCBoZSBmaWxscyB1cCBoaXMgdGltZSBieSBpbWJpYmluZyB0aGUgb3RoZXIgCmNvbnRlbnRzIG9mIGhpcyBwZXJpb2RpY2FsLCBhbmQgaW4gdGhhdCB3YXkgbGVhcm5zIG1hbnkgdGhpbmdzIHdoaWNoIGhlIGRpZCBub3QgCmtub3cgYmVmb3JlLCBhbmQgbWF5IGV2ZW4gaGF2ZSBoaXMgYXR0ZW50aW9uIGF0dHJhY3RlZCB0byBzb21lIHN1YmplY3Qgd2hpY2ggCmFwcGVhbHMgdG8gaGltLS0gaW4gd2hpY2ggcHJlc2VudGx5IGhlIHdpbGwgbGVhcm4gdG8gdGFrZSBzZXJpb3VzIGludGVyZXN0LiAKCgo5MTMuwqDCoMKgwqDCoMKgwqAKU28gdGhlc2UgY3VyaW91cyBiYXNrZXRmdWxzIG9mIG1pc2NlbGxhbmVvdXMgaW5mb3JtYXRpb24gbWF5IGJlIHNhaWQgdG8gCmRvIGdvb2QgYXMgd2VsbCBhcyBoYXJtLCBmb3IgdGhvdWdoIHRoZSB0YXN0ZSBmb3IgZGVzdWx0b3J5IHJlYWRpbmcgYW5kIGJhZCAKam9rZXMgbWF5IG5vdCBpbiBpdHNlbGYgYmUgYSBncmVhdCBnYWluIHRvIHRoZSBlcnJhbmQtYm95IG9yIHRoZSBzaG9wIGFzc2lzdGFudCwgCml0IGlzIG5ldmVydGhlbGVzcyBmb3IgaGltIHRoZSBiZWdpbm5pbmcgb2YgbGl0ZXJhdHVyZSwgYW5kIGl0IG9jY3VwaWVzIGEgCmNlcnRhaW4gYW1vdW50IG9mIGhpcyB0aW1lIHdoaWNoIG1pZ2h0IGVhc2lseSBiZSB3b3JzZSBzcGVudCBpbiBwdWJsaWMtaG91c2VzIG9yIAppbiBkb3VidGZ1bCBjb21wYW55LiBJbiBkYXlzIGJlZm9yZSB0aGUgc2Nob29sLWJvYXJkLCB0aGUgcGxhY2Ugb2YgdGhlIGNoZWFwIAptYWdhemluZSB3YXMgbGFyZ2VseSB0YWtlbiBieSB0aGUgc3Bva2VuIHN0b3J5LCBhbmQgaXQgaXMgdG8gYmUgZmVhcmVkIHRoYXQgbWFueSAKb2YgdGhlIHN0b3JpZXMgdG9sZCBieSB5b3VuZyBtZW4gd2hlbiB0aGV5IHdlcmUgYWxvbmUgdG9nZXRoZXIgd2VyZSBvZnRlbiBvZiBhIApuYXR1cmUgdGhhdCB3b3VsZCBjZXJ0YWlubHkgbm90IGJlIGFkbWl0dGVkIGludG8gb3VyIHdlZWtseSBwYXBlcnMuIFNvIHdlIG11c3QgCm5vdCBhbHRvZ2V0aGVyIGRlc3Bpc2UgdGhlc2UgdGhpbmdzLCB0aG91Z2ggdGhlIHNlcmlvdXMgc3R1ZGVudCBkb2VzIHdlbGwgdG8gCmF2b2lkIHRoZW0sIGp1c3QgYmVjYXVzZSB0aGV5IGZpbGwgdGhlIG1lbnRhbCBib2R5IHdpdGggYSBtYXNzIG9mIGxpdHRsZSAKdW5jb25uZWN0ZWQgdGhvdWdodC1mb3JtcyBsaWtlIHBlYmJsZXMsIGluc3RlYWQgb2YgYnVpbGRpbmcgdXAgaW4gaXQgYW4gb3JkZXJseSAKZWRpZmljZS4gCgoKOTE0LsKgwqDCoMKgwqDCoMKgClNQRUVDSCAKCgo5MTUuwqDCoMKgwqDCoMKgwqAKSXQgaXMgZW1waGF0aWNhbGx5IG5lY2Vzc2FyeSB0byByZW1lbWJlciB0aGF0IHNwZWVjaCBtdXN0IGJlIGFic29sdXRlbHkgCnRydWUuIEFjY3VyYWN5IGluIHNwZWVjaCBpcyBhIHF1YWxpdHkgcmFyZWx5IHNob3duIGluIHRoZXNlIGRheXMsIGFuZCBjYXJlbGVzcyAKZXhhZ2dlcmF0aW9uIGlzIHBhaW5mdWxseSBjb21tb24uIE1hbnkgcGVvcGxlIGFyZSBoYWJpdHVhbGx5IHNvIGxvb3NlIGluIHRoZWlyIApzdGF0ZW1lbnRzIHRoYXQgdGhleSBsb3NlIGFsbCBzZW5zZSBvZiB0aGUgbWVhbmluZyBvZiB3b3JkczsgdGhleSBjb25zdGFudGx5IHNheSAKYCBhd2Z1bGx5JyB3aGVuIHRoZXkgbWVhbiBgIHZlcnksJyBvciBkZXNjcmliZSBzb21ldGhpbmcgYXMgYCBraWxsaW5nJyB3aGVuIHRoZXkgCmFyZSB0cnlpbmcgdG8gY29udmV5IHRoZSBpZGVhIHRoYXQgaXQgaXMgbWlsZGx5IGFtdXNpbmcuIFRoZSBvY2N1bHRpc3QgbXVzdCBub3QgCmJlIGxlZCBhd2F5IGJ5IGN1c3RvbSBpbiB0aGlzIG1hdHRlciwgYnV0IG11c3QgYmUgbWV0aWN1bG91c2x5IGV4YWN0IGluIGFsbCB0aGF0IApoZSBzYXlzLiBUaGVyZSBhcmUgcGVvcGxlIHdobyBjb25zaWRlciBpdCBhbGxvd2FibGUgdG8gdGVsbCBhIGZhbHNlaG9vZCBieSB3YXkgCm9mIHdoYXQgdGhleSBjYWxsIGEgam9rZSwgaW4gb3JkZXIgdG8gZGVjZWl2ZSBhbm90aGVyIGFuZCB0aGVuIHRvIGxhdWdoIGF0IGhpcyAKY3JlZHVsaXR5LS0gYSBjcmVkdWxpdHkgd2hpY2ggaXMgc3VyZWx5IGluIG5vIHdheSBibGFtZXdvcnRoeSwgc2luY2UgdGhlIHZpY3RpbSAKaGFzIHNpbXBseSBnaXZlbiB0aGUgbmFycmF0b3IgY3JlZGl0IGZvciBiZWluZyBlbm91Z2ggb2YgYSBnZW50bGVtYW4gdG8gc3BlYWsgCnRoZSB0cnV0aCEgSSBuZWVkIGhhcmRseSBzYXkgdGhhdCBzdWNoIGZhbHNlaG9vZCBpcyBhYnNvbHV0ZWx5IHVucGVybWlzc2libGUuIApUaGVyZSBjYW4gbmV2ZXIgdW5kZXIgYW55IGNpcmN1bXN0YW5jZXMgYmUgYW55dGhpbmcgYW11c2luZyBpbiB0ZWxsaW5nIGEgbGllIG9yIApkZWNlaXZpbmcgYW55b25lLCBhbmQgdGhlIHdvcmQgb3IgdGhlIGFjdGlvbiBpcyBqdXN0IGFzIGRlZmluaXRlbHkgYSB3aWNrZWQgCnRoaW5nIHdoZW4gc3Bva2VuIG9yIGRvbmUgZm9yIHRoYXQgcHVycG9zZSBhcyBmb3IgYW55IG90aGVyLiAKCgo5MTYuwqDCoMKgwqDCoMKgwqAKVGhlIHdpc2UgbWFuIHdpbGwgbmV2ZXIgYXJndWUuIEVhY2ggbWFuIGhhcyBhIGNlcnRhaW4gYW1vdW50IG9mIGZvcmNlLCAKYW5kIGlzIHJlc3BvbnNpYmxlIGZvciB1c2luZyBpdCB0byB0aGUgYmVzdCBwb3NzaWJsZSBhZHZhbnRhZ2UuIE9uZSBvZiB0aGUgbW9zdCAKZm9vbGlzaCB3YXlzIGluIHdoaWNoIHRvIGZyaXR0ZXIgaXQgYXdheSBpcyB0byB3YXN0ZSBpdCBpbiBhcmd1bWVudC4gUGVvcGxlIApzb21ldGltZXMgY29tZSB0byBtZSBhbmQgd2FudCB0byBhcmd1ZSBhYm91dCBUaGVvc29waHkuIEkgaW52YXJpYWJseSBkZWNsaW5lLiBJIAp0ZWxsIHRoZW0gdGhhdCBJIGhhdmUgY2VydGFpbiBpbmZvcm1hdGlvbiB0aGF0IEkgY2FuIGdpdmUsIGNlcnRhaW4gdGVzdGltb255IAp0aGF0IEkgY2FuIG9mZmVyIGFzIHRvIHdoYXQgSSBoYXZlIG15c2VsZiBzZWVuIGFuZCBleHBlcmllbmNlZC4gSWYgdGhpcyAKdGVzdGltb255IGlzIG9mIHZhbHVlIHRvIHRoZW0sIHRoZXkgYXJlIG1vcmUgdGhhbiB3ZWxjb21lIHRvIGl0LCBhbmQgSSBhbSBnbGFkIAp0byBnaXZlIGl0IHRvIHRoZW0sIGFzIGluZGVlZCBJIGhhdmUgZG9uZSBvdmVyIGFuZCBvdmVyIGFnYWluIGluIHRoaXMgYW5kIGluIApvdGhlciBib29rczsgYnV0IEkgaGF2ZSBub3QgdGltZSB0byBhcmd1ZSB0aGUgbWF0dGVyIHdpdGggcGVvcGxlIHdobyBkbyBub3QgCmJlbGlldmUgbWUuIFRoZXkgaGF2ZSB0aGUgZnVsbCByaWdodCB0byB0aGVpciBvd24gb3BpbmlvbiwgYW5kIGFyZSBhdCBwZXJmZWN0IApsaWJlcnR5IHRvIGJlbGlldmUgb3IgZGlzYmVsaWV2ZSBhcyB0aGV5IGNob29zZS4gSSBoYXZlIG5vIHF1YXJyZWwgd2l0aCB0aG9zZSAKd2hvIGNhbm5vdCBhY2NlcHQgbXkgdGVzdGltb255OyBidXQgSSBoYXZlIGFsc28gbm8gdGltZSB0byB3YXN0ZSBvdmVyIHRoZW0sIGZvciAKdGhhdCB0aW1lIG1heSBiZSBmYXIgYmV0dGVyIG9jY3VwaWVkIHdpdGggdGhvc2Ugd2hvIGFyZSBwcmVwYXJlZCB0byBhY2NlcHQgc3VjaCAKbWVzc2FnZSBhcyBJIGhhdmUgdG8gZ2l2ZS4gCgoKOTE3LsKgwqDCoMKgwqDCoMKgCldoaXN0bGVyIGlzIGNyZWRpdGVkIHdpdGggaGF2aW5nIG9uY2UgcmVtYXJrZWQgaW4gdGhlIGNvdXJzZSBvZiBhIApjb252ZXJzYXRpb24gb24gYXJ0OiDvv71JIGFtIG5vdCBhcmd1aW5nIHdpdGggeW91OyBJIGFtIHRlbGxpbmcgeW91IHRoZSBmYWN0cy7vv70gSXQgCnNlZW1zIHRvIG1lIHRoYXQgdGhhdCBpcyB0aGUgd2lzZXN0IHBvc2l0aW9uIGZvciB0aGUgVGhlb3NvcGhpY2FsIHN0dWRlbnQuIFdlIApoYXZlIHN0dWRpZWQgY2VydGFpbiB0aGluZ3M7IHNvIGZhciBhcyB3ZSBoYXZlIGdvbmUgd2Uga25vdyB0aGVtIHRvIGJlIHRydWUsIGFuZCAKd2UgYXJlIHdpbGxpbmcgdG8gZXhwbGFpbiB0aGVtOyBpZiBwZW9wbGUgYXJlIG5vdCB5ZXQgcHJlcGFyZWQgdG8gYWNjZXB0IHRoZW0sIAp0aGF0IGlzIGV4Y2x1c2l2ZWx5IHRoZWlyIGFmZmFpciwgYW5kIHdlIHdpc2ggdGhlbSBnb29kIHNwZWVkIGluIHdoYXRldmVyIGxpbmUgCm9mIGludmVzdGlnYXRpb24gdGhleSB3aXNoIHRvIHRha2UuIEFyZ3VtZW50IGxlYWRzIGNvbnN0YW50bHkgdG8gaGVhdGVkIGZlZWxpbmdzIAphbmQgdG8gYSBzZW5zZSBvZiBob3N0aWxpdHktLSBib3RoIHRoaW5ncyBieSBhbGwgbWVhbnMgdG8gYmUgYXZvaWRlZC4gV2hlbiBpdCBpcyAKbmVjZXNzYXJ5IHRvIGRpc2N1c3MgYW55IHN1YmplY3QgaW4gYWxsIGl0cyBiZWFyaW5ncywgaW4gb3JkZXIgdG8gZGVjaWRlIHVwb24gYSAKY291cnNlIG9mIGFjdGlvbiwgbGV0IGl0IGJlIGRvbmUgYWx3YXlzIGdlbnRseSBhbmQgdGVtcGVyYXRlbHksIGFuZCBsZXQgZWFjaCBtYW4gCnN0YXRlIGhpcyBvd24gY2FzZSBraW5kbHkgYW5kIGRlbGliZXJhdGVseSwgYW5kIGxpc3RlbiB3aXRoIGFsbCBwb2xpdGVuZXNzIGFuZCAKZGVmZXJlbmNlIHRvIHRoZSBvcGluaW9ucyBvZiBvdGhlcnMuIAoKCjkxOC7CoMKgwqDCoMKgwqDCoApNRURJVEFUSU9OIAoKCjkxOS7CoMKgwqDCoMKgwqDCoApKdXN0IGFzIGEgbWFuIHdobyB3aXNoZXMgdG8gYmUgc3Ryb25nIGZpbmRzIGl0IGFkdmlzYWJsZSB0byB1c2UgZGVmaW5pdGUsIApwcmVzY3JpYmVkIGV4ZXJjaXNlcyB0byBkZXZlbG9wIGhpcyBwaHlzaWNhbCBib2R5LCBzbyB0aGUgc3R1ZGVudCBvZiBvY2N1bHRpc20gCnVzZXMgZGVmaW5pdGUgYW5kIHByZXNjcmliZWQgZXhlcmNpc2VzIHRvIGRldmVsb3AgaGlzIGFzdHJhbCBhbmQgbWVudGFsIAp2ZWhpY2xlcy4gVGhpcyBpcyBiZXN0IGRvbmUgYnkgbWVkaXRhdGlvbi4gT2YgdGhpcyB0aGVyZSBhcmUgbWFueSBraW5kcywgYW5kIAplYWNoIHRlYWNoZXIgZW5qb2lucyB0aGF0IHdoaWNoIGhlIHRoaW5rcyBtb3N0IHN1aXRhYmxlLiBBbGwgdGhlIHJlbGlnaW9ucyAKcmVjb21tZW5kIGl0LCBhbmQgaXRzIGRlc2lyYWJpbGl0eSBoYXMgYmVlbiByZWNvZ25pc2VkIGJ5IGV2ZXJ5IHNjaG9vbCBvZiAKcGhpbG9zb3BoeS4gVGhpcyBpcyBub3QgdGhlIHBsYWNlIHRvIHN1Z2dlc3QgYW55IHBhcnRpY3VsYXIgc3lzdGVtOyB0aG9zZSB3aG8gCmJlbG9uZyB0byB0aGUgVGhlb3NvcGhpY2FsIFNvY2lldHkga25vdyB0aGF0IHdpdGhpbiBpdCB0aGVyZSBpcyBhIHNjaG9vbCBmb3IgCnN1Y2ggcHJhY3RpY2VzLCBhbmQgdGhvc2Ugd2hvIHdpc2ggZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gYXJlIHJlZmVycmVkIHRvIGl0LgoKCjkyMC7CoMKgwqDCoMKgwqDCoApBbGwgc3lzdGVtcyBhbGlrZSBzZXQgYmVmb3JlIHRoZW1zZWx2ZXMgY2VydGFpbiBvYmplY3RzLCB3aGljaCBhcmUgbm90IApkaWZmaWN1bHQgdG8gY29tcHJlaGVuZC4gVGhleSBhbGwgZGlyZWN0IHRoYXQgYSBtYW4gc2hvdWxkIHNwZW5kIGEgY2VydGFpbiB0aW1lIAplYWNoIGRheSBpbiB0aGlua2luZyBzdGVhZGlseSBhbmQgZXhjbHVzaXZlbHkgb2YgaG9seSB0aGluZ3MsIGFuZCB0aGVpciBvYmplY3RzIAppbiBkb2luZyBzbyBhcmU6IGZpcnN0LCB0byBlbnN1cmUgdGhhdCBhdCBsZWFzdCBvbmNlIGVhY2ggZGF5IGEgbWFuIHNoYWxsIHRoaW5rIApvZiBzdWNoIHRoaW5ncywgdGhhdCBoaXMgdGhvdWdodHMgc2hhbGwgYXQgbGVhc3Qgb25jZSBpbiB0d2VudHktZm91ciBob3VycyBiZSAKdGFrZW4gYXdheSBmcm9tIHRoZSBwZXR0eSByb3VuZCBvZiBkYWlseSBsaWZlLCBmcm9tIGl0cyBmcml2b2xpdGllcyBhbmQgaXRzIAp0cm91Ymxlczsgc2Vjb25kbHksIHRvIGFjY3VzdG9tIHRoZSBtYW4gdG8gdGhpbmsgb2Ygc3VjaCBtYXR0ZXJzLCBzbyB0aGF0IGFmdGVyIAphIHRpbWUgdGhleSBtYXkgYmUgcHJlc2VudCBhbHdheXMgYXQgdGhlIGJhY2sgb2YgaGlzIG1pbmQsIGFzIGEga2luZCBvZiAKYmFja2dyb3VuZCB0byBoaXMgZGFpbHkgbGlmZS0tIHNvbWV0aGluZyB0byB3aGljaCBoaXMgbWluZCByZXR1cm5zIHdpdGggcGxlYXN1cmUgCndoZW4gaXQgaXMgcmVsZWFzZWQgZnJvbSB0aGUgaW1tZWRpYXRlIGRlbWFuZHMgb2YgaGlzIGJ1c2luZXNzOyB0aGlyZGx5LCBhcyBJIApiZWdhbiBieSBzYXlpbmcsIGFzIGEga2luZCBvZiBhc3RyYWwgYW5kIG1lbnRhbCBneW1uYXN0aWNzLCB0byBwcmVzZXJ2ZSB0aGVzZSAKaGlnaGVyIGJvZGllcyBpbiBoZWFsdGgsIGFuZCB0byBrZWVwIHRoZSBzdHJlYW0gb2YgZGl2aW5lIGxpZmUgZmxvd2luZyB0aHJvdWdoIAp0aGVtIChhbmQgZm9yIHRoZXNlIHB1cnBvc2VzIGl0IHNob3VsZCBiZSByZW1lbWJlcmVkIHRoYXQgdGhlIHJlZ3VsYXJpdHkgCm9mIHRoZSBleGVyY2lzZXMgaXMgb2YgdGhlIGZpcnN0IGltcG9ydGFuY2UpOyBmb3VydGhseSwgYmVjYXVzZSB0aGlzIGlzIHRoZSB3YXksIApldmVuIHRob3VnaCBpdCBiZSBvbmx5IHRoZSBmaXJzdCBoYWx0aW5nIHN0ZXAgdXBvbiB0aGUgd2F5LCB3aGljaCBsZWFkcyB0byAKaGlnaGVyIGRldmVsb3BtZW50IGFuZCB3aWRlciBrbm93bGVkZ2UsIHRoZSBnYXRlIG9mIHRoZSByb2FkIHdoaWNoIHRocm91Z2ggbWFueSAKYSBzdHJ1Z2dsZSBhbmQgbWFueSBhbiBlZmZvcnQgbGVhZHMgdG8gdGhlIGF0dGFpbm1lbnQgb2YgY2xhaXJ2b3lhbmNlLCBhbmQgCmV2ZW50dWFsbHkgaW50byB0aGUgaGlnaGVyIGxpZmUgYmV5b25kIHRoaXMgd29ybGQgYWx0b2dldGhlci4gCgoKOTIxLsKgwqDCoMKgwqDCoMKgCkFsdGhvdWdoIHRoZSBtYW4gaW4gaGlzIGRhaWx5IG1lZGl0YXRpb24gbWF5IHNlZSBidXQgbGl0dGxlIHByb2dyZXNzLCBhbmQgCml0IG1heSBzZWVtIHRvIGhpbSB0aGF0IGhpcyBlZmZvcnRzIGFyZSBhbHRvZ2V0aGVyIHVuc2F0aXNmYWN0b3J5IGFuZCB3aXRob3V0IApyZXN1bHQsIGEgY2xhaXJ2b3lhbnQgd2F0Y2hpbmcgaGltIHdpbGwgc2VlIGV4YWN0bHkgaG93IHRoZSBhc3RyYWwgYW5kIG1lbnRhbCAKYm9kaWVzIGFyZSBzbG93bHkgY29taW5nIG91dCBvZiBjaGFvcyBpbnRvIG9yZGVyLCBzbG93bHkgZXhwYW5kaW5nIGFuZCBncmFkdWFsbHkgCmxlYXJuaW5nIHRvIHJlc3BvbmQgdG8gaGlnaGVyIGFuZCBoaWdoZXIgdmlicmF0aW9ucy4gSGUgY2FuIHNlZSwgdGhvdWdoIHRoZSAKZXhwZXJpbWVudGVyIGNhbm5vdCwgaG93IGVhY2ggZWZmb3J0IGlzIGdyYWR1YWxseSB0aGlubmluZyB0aGUgdmVpbCB0aGF0IGRpdmlkZXMgCmhpbSBmcm9tIHRoYXQgb3RoZXIgd29ybGQgb2YgZGlyZWN0IGtub3dsZWRnZS4gSGUgY2FuIHNlZSBob3cgdGhlIG1hbicgcyAKdGhvdWdodC1mb3JtcyBncm93IGRheSBieSBkYXkgbW9yZSBkZWZpbml0ZSwgc28gdGhhdCB0aGUgbGlmZSBwb3VyZWQgaW50byB0aGVtIApmcm9tIGFib3ZlIGJlY29tZXMgZnVsbGVyIGFuZCBmdWxsZXIsIGFuZCByZWFjdHMgbW9yZSBhbmQgbW9yZSBzdHJvbmdseSB1cG9uIAp0aGVpciBvcmlnaW5hdG9yLCBldmVuIHRob3VnaCB0aGF0IG9yaWdpbmF0b3IgbWF5IGJlIGVudGlyZWx5IHVuY29uc2Npb3VzIG9mIGl0OyAKYW5kIHNvLCBzcGVha2luZyBmcm9tIGhpcyBrbm93bGVkZ2Ugb2YgdGhlIGhpZGRlbiBzaWRlIG9mIHRoaW5ncywgdGhlIApjbGFpcnZveWFudCBhZHZpc2VzIGFsbCBhc3BpcmFudHMgdG8gbWVkaXRhdGUsIHRvIG1lZGl0YXRlIHJlZ3VsYXJseSwgYW5kIHRvIApjb250aW51ZSB0aGVpciBtZWRpdGF0aW9uIHdpdGggdGhlIGNlcnRhaW4gY29udmljdGlvbiB0aGF0IChxdWl0ZSBpcnJlc3BlY3RpdmUgCm9mIHRoZWlyIG93biBmZWVsaW5ncykgdGhleSBhcmUgcHJvZHVjaW5nIHJlc3VsdHMsIGFuZCBzdGVhZGlseSBkcmF3aW5nIG5lYXJlciAKYW5kIG5lYXJlciB0byB0aGVpciBnb2FsLiAKCgo5MjIuwqDCoMKgwqDCoMKgwqAKT2xkIERyLiBXYXR0cyBpcyBhbGxlZ2VkIHRvIGhhdmUgcGVycGV0cmF0ZWQgYSBoeW1uIHdoaWNoIHNhaWQgdGhhdCAK77+9U2F0YW4gZmluZHMgc29tZSBtaXNjaGllZiBzdGlsbCBmb3IgaWRsZSBoYW5kcyB0byBkb++/vS4gSGUgcHJvYmFibHkgcmVmZXJyZWQgCmV4Y2x1c2l2ZWx5IHRvIHRoZSBwaHlzaWNhbCB3b3JsZDsgYnV0IHRoZSB3aXNlIG1hbiBrbm93cyB0aGF0IHRoYXQgaXMgdHJ1ZSBhdCAKYW55IHJhdGUgd2l0aCByZWdhcmQgdG8gdGhlIG1pbmQuIFRoZSB0aW1lIHdoZW4gYW4gZXZpbCB0aG91Z2h0IHNwcmluZ3MgdXAgaW4gCnRoZSBtaW5kIGlzIHRoZSB0aW1lIHdoZW4gaXQgaXMgbHlpbmcgZmFsbG93IGFuZCB1bm9jY3VwaWVkLiBUaGVyZWZvcmUgdGhlIApzdXJlc3Qgd2F5IHRvIGF2b2lkIHRlbXB0YXRpb24gaXMgdG8ga2VlcCBzdGVhZGlseSBhdCB3b3JrLCBhbmQgc2luY2UgZXZlbiB0aGUgCm1vc3QgaW5kZWZhdGlnYWJsZSBvZiBtb3J0YWxzIGNhbm5vdCB3b3JrIGFsd2F5cywgaXQgaXMgd2VsbCB0aGF0IGZvciB0aG9zZSAKZGFuZ2Vyb3VzIG1vbWVudHMgb2YgbGVpc3VyZSBoZSBzaG91bGQgaGF2ZSBhIHNhZmVndWFyZCBpbiB0aGUgc2hhcGUgb2YgYSAKZGVmaW5pdGUgc3ViamVjdCB1cG9uIHdoaWNoIGhpcyBtaW5kIGFsd2F5cyBpbnN0aW5jdGl2ZWx5IGZhbGxzIGJhY2sgd2hlbiBub3QgCm90aGVyd2lzZSBvY2N1cGllZC4gTW9zdCBtZW4gaGF2ZSBzb21lIHN1Y2ggYmFja2dyb3VuZCwgYnV0IG9mdGVuIGl0cyBuYXR1cmUgaXMgCnRyaXZpYWwgb3IgZXZlbiB1bmRlc2lyYWJsZS4gVGhlcmUgYXJlIG1lbiB3aG8gaGF2ZSBpbXB1cmUgdGhvdWdodHMgYXQgdGhlIGJhY2sgCm9mIHRoZWlyIG1pbmRzIGFsbCB0aGUgdGltZSwgYW5kIG90aGVycyBoYXZlIGplYWxvdXN5IG9yIGhhdHJlZC4gTWFueSBtb3RoZXJzIAphcmUgdGhpbmtpbmcgYWxsIHRoZSB0aW1lIG9mIHRoZWlyIGNoaWxkcmVuLCBhbmQgdGhlIG1hbiBpbiBsb3ZlIHVzdWFsbHkgaGFzIGEgCnBvcnRyYWl0IG9mIGhpcyBjaGFybWVyIGFsd2F5cyBvbiB2aWV3LCBvZnRlbiBpbmRlZWQgb2NjdXB5aW5nIHRoZSBmb3JlZ3JvdW5kIGFzIAp3ZWxsIGFzIHRoZSBiYWNrZ3JvdW5kIG9mIGhpcyBtaW5kLiAKCgo5MjMuwqDCoMKgwqDCoMKgwqAKV2hlbiBhIG1hbiBoYXMgYXR0YWluZWQgdG8gdGhlIGRpZ25pdHkgb2YgaGF2aW5nIHRoZSByaWdodCBzb3J0IG9mIApiYWNrZ3JvdW5kIHRvIGhpcyBsaWZlLCBoZSBpcyBpbiBhIHBvc2l0aW9uIG9mIGZhciBncmVhdGVyIHNlY3VyaXR5LiBGb3Igc29tZSAKbmF0dXJlcyByZWxpZ2lvbiBwcm92aWRlcyBzdWNoIGEgYmFja2dyb3VuZDsgYnV0IHRoZXNlIG5hdHVyZXMgYXJlIHJhcmUuIEZvciAKbW9zdCBtZW4gb25seSB0aGUgc3R1ZHkgb2YgdGhlIGdyZWF0IHRydXRocyBvZiBuYXR1cmUgY2FuIHByb3ZpZGUgaXQtLSBvbmx5IHRoYXQgCmtub3dsZWRnZSBvZiB0aGUgc2NoZW1lIG9mIHRoaW5ncyB3aGljaCBpbiB0aGVzZSBtb2Rlcm4gZGF5cyB3ZSBjYWxsIFRoZW9zb3BoeS4gCldoZW4gdGhhdCBncmVhdCBwbGFuIGlzIG9uY2UgZ3Jhc3BlZCwgdGhlIG1pbmQgYW5kIHRoZSBoaWdoZXIgZW1vdGlvbnMgYXJlIGJvdGggCmVuZ2FnZWQgb24gaXQsIGFuZCB0aGUgbWFuJyBzIHdob2xlIG5hdHVyZSBpcyBzbyBmaWxsZWQgd2l0aCBpdCB0aGF0IG5vIG90aGVyIAp0aG91Z2h0LCBubyBvdGhlciBhdHRpdHVkZSBpcyBwb3NzaWJsZSB0byBoaW0gYnV0IHRoYXQgb2YgdGhlIGludGVuc2UgZGVzaXJlIHRvIAp0aHJvdyBoaW1zZWxmIGFuZCBhbGwgdGhhdCBoZSBoYXMgaW50byB0aGF0IG1pZ2h0eSBwbGFuLCBhbmQgdG8gYmVjb21lLCBhcyBmYXIgCmFzIGluIGhpbSBsaWVzLCBhIGZlbGxvdy13b3JrZXIgdG9nZXRoZXIgd2l0aCB0aGUgRGVpdHkgd2hvIGNvbmNlaXZlZCBpdC4gCgoKOTI0LsKgwqDCoMKgwqDCoMKgClNvIHRoaXMgYmVjb21lcyB0aGUgYmFja2dyb3VuZCBvZiBoaXMgbWluZC0tIHRoZSBkb21pbmF0aW5nIHRob3VnaHQgZnJvbSAKd2hpY2ggaGUgaGFzIHRvIHR1cm4gYXdheSBpbiBvcmRlciB0byBhdHRlbmQgdG8gdGhlIGRldGFpbHMgb2Ygb3V0ZXIgbGlmZS0tIHRvIAp3aGljaCBoZSBnbGFkbHkgYW5kIGluc3RhbnRseSByZXR1cm5zIHdoZW4gaGlzIGR1dHkgdG8gdGhvc2UgZGV0YWlscyBpcyBkb25lLiAKV2hlbiBoZSBjYW4gYXR0YWluIHRvIHRoaXMgY29uZGl0aW9uIGhlIGlzIGluIGEgcG9zaXRpb24gb2YgZmFyIGdyZWF0ZXIgc2FmZXR5IApmcm9tIGV2aWwgdGhvdWdodCwgYW5kIGhlIG5lZWQgaGF2ZSBubyBmZWFyIHRoYXQgdGhpcyBjb25zdGFudCBwcmVvY2N1cGF0aW9uIAp3aXRoIGhpZ2hlciB0aGluZ3Mgd2lsbCBpbiBhbnkgd2F5IG1hciBoaXMgZWZmaWNpZW5jeSBkb3duIGhlcmUuIEhlIHdpbGwgZG8gaGlzIApkYWlseSB3b3JrIGJldHRlciwgbm90IHdvcnNlLCBiZWNhdXNlIGhlIGlzIGNvbnN0YW50bHkgZ29pbmcgYmVoaW5kIGl0IHRvIApzb21ldGhpbmcgZmFyIGdyZWF0ZXIgYW5kIG1vcmUgcGVybWFuZW50OyBmb3IgaXQgaXMgcHJlY2lzZWx5IHRoZSBtZW4gd2l0aCB0aGlzIApoaWdoZXIgc3RpbXVsdXMgZm9yIGEgYmFja2dyb3VuZCB3aG8gaGF2ZSBiZWVuIHRoZSBtb3N0IGVmZmljaWVudCB3b3JrZXJzIG9mIHRoZSAKd29ybGQuIAoKCjkyNS7CoMKgwqDCoMKgwqDCoApBcyBLZWJsZSBwdXRzIGl0IAoKCjkyNi7CoMKgwqDCoMKgwqDCoApUaGVyZSBhcmUsIGluIHRoaXMgbG91ZCBzdHVubmluZyB0aWRlIAoKCjkyNy7CoMKgwqDCoMKgwqDCoApPZiBodW1hbiBjYXJlIGFuZCBjcmltZSwgCgoKOTI4LsKgwqDCoMKgwqDCoMKgCldpdGggd2hvbSB0aGUgbWVsb2RpZXMgYWJpZGUgCgoKOTI5LsKgwqDCoMKgwqDCoMKgCk9mIHRoZSBldmVybGFzdGluZyBjaGltZS4gCgoKOTMwLsKgwqDCoMKgwqDCoMKgCkFuZCB0aGVuIGhlIHNwZWFrcyBvZiB0aGVtIGFzIAoKCjkzMS7CoMKgwqDCoMKgwqDCoApQbHlpbmcgdGhlaXIgZGFpbHkgdGFzayB3aXRoIGJ1c2llciBmZWV0IAoKCjkzMi7CoMKgwqDCoMKgwqDCoApCZWNhdXNlIHRoZWlyIHNlY3JldCBzb3VscyBhIGhvbHkgc3RyYWluIHJlcGVhdC4gCgoKOTMzLsKgwqDCoMKgwqDCoMKgCkNIQVBURVIgWFYgCgoKOTM0LsKgwqDCoMKgwqDCoMKgCkJZIFBIWVNJQ0FMIEVOVklST05NRU5UIAoKCjkzNS7CoMKgwqDCoMKgwqDCoApIT1VTRVMgCgoKOTM2LsKgwqDCoMKgwqDCoMKgCklUIGlzIHRoZSBmYXNoaW9uLCBhbmQgbm90IHVucmVhc29uYWJseSwgdG8gYXR0YWNoIGdyZWF0IGltcG9ydGFuY2UgdG8gCnRoZSBpbmZsdWVuY2Ugb2YgZW52aXJvbm1lbnQuIFdoZW4gdGhhdCBleHByZXNzaW9uIGlzIHVzZWQgcGVvcGxlIGdlbmVyYWxseSBtZWFuIAphbiBlbnZpcm9ubWVudCBpbnRvIHdoaWNoIHRoZXkgYXJlIGJvcm4sIG9yIG9uZSB3aGljaCBpcyBpbXBvc2VkIHVwb24gdGhlbSBmcm9tIAp3aXRob3V0IGFuZCBpcyBpbiBubyB3YXkgZGVwZW5kZW50IHVwb24gdGhlaXIgb3duIHdpbGwuIFRoZXJlIGlzLCBob3dldmVyLCAKYW5vdGhlciBlbnZpcm9ubWVudCB3aGljaCBpcyBvZnRlbiBmb3Jnb3R0ZW46IHRoYXQgd2hpY2ggd2UgY3JlYXRlIGZvciAKb3Vyc2VsdmVzLS0gdGhlIGdyZWF0IGluZmx1ZW5jZSBwcm9kdWNlZCB1cG9uIHVzIGluIGRhaWx5IGxpZmUgYnkgdGhlIHBsYWNlIGluIAp3aGljaCB3ZSBjaG9vc2UgdG8gbGl2ZSBhbmQgdGhlIG9iamVjdHMgd2l0aCB3aGljaCB3ZSB2b2x1bnRhcmlseSBzdXJyb3VuZCAKb3Vyc2VsdmVzLiBPbmUgbWF5IG9mdGVuIGp1ZGdlIGZyb20gdGhlIG91dHNpZGUgb2YgYSBob3VzZSBzb21ldGhpbmcgb2YgdGhlIApkaXNwb3NpdGlvbiBvZiB0aG9zZSB3aG8gaW5oYWJpdCBpdCwgYW5kIGEgbWFuJyBzIHJvb20gaXMgdG8gYSBjZXJ0YWluIGV4dGVudCBhbiAKZXhwcmVzc2lvbiBvZiBoaW0sIGZvciBpdCBzaG93cyBoaXMgdGFzdGUgaW4gYm9va3MsIHBpY3R1cmVzLCBzdGF0dWVzLCAKZnVybml0dXJlLCB3YWxsLXBhcGVyIGFuZCBmbG93ZXJzOyBhbmQgZXZlcnkgb25lIG9mIGFsbCB0aGVzZSB0aGluZ3MgaXMgCmNvbnN0YW50bHkgcmVhY3RpbmcgdXBvbiBoaW0sIGV2ZW4gdGhvdWdoIGhlIG5ldmVyIHRoaW5rcyBvZiBpdC4gCgoKOTM3LsKgwqDCoMKgwqDCoMKgCk9uZSB3aG8gaXMgYSBzdHVkZW50IG9mIG9jY3VsdGlzbSB3aWxsIGJlIGd1aWRlZCBpbiBjaG9vc2luZyBhIGhvdXNlIGZvciAKaGltc2VsZiBieSBhIG51bWJlciBvZiBjb25zaWRlcmF0aW9ucyB3aGljaCB3b3VsZCBub3QgYmUgbGlrZWx5IHRvIG9jY3VyIHRvIHRoZSAKb3JkaW5hcnkgbWFuLCB3aG8gcHJvYmFibHkgYmFzZXMgaGlzIGRlY2lzaW9uIHByaW5jaXBhbGx5IG9uIHN1Y2ggZmFjdHMgYXMgdGhlIApzaXplIGFuZCB0aGUgcmVudCBvZiB0aGUgaG91c2UsIHdoZXRoZXIgaXRzIGRyYWlucyBhcmUgaW4gb3JkZXIsIGFuZCBob3cgZmFyIGl0IAppcyBmcm9tIHRoZSB0cmFtd2F5IG9yIHJhaWx3YXkgc3RhdGlvbi4gU3VjaCBwb2ludHMgYXMgdGhlc2UgbmF0dXJhbGx5IGRlZmluZSAKdGhlIGFyZWEgb2YgaGlzIGNob2ljZTsgdGhlIHN0dWR5IG9mIHRoZSBoaWRkZW4gc2lkZSBvZiB0aGluZ3MsIHdoaWxlIG5vdCAKaW50ZXJmZXJpbmcgd2l0aCB0aGVzZSwgc3VnZ2VzdHMgc29tZSBhZGRpdGlvbmFsIGNvbnNpZGVyYXRpb25zLiBGcm9tIG91ciBwb2ludCAKb2YgdmlldyBpdCBpcyBtYXRlcmlhbCB0byBoYXZlIGFzIG11Y2ggcm9vbSBhcyBwb3NzaWJsZSBhYm91dCB0aGUgaG91c2UtLSB0byAKaGF2ZSBpdCBhcyBmYXIgcmVtb3ZlZCBhcyBwb3NzaWJsZSBmcm9tIGl0cyBuZWlnaGJvdXJzLiBPbmNlIG1vcmUsIHRoaXMgbWVhbnMgbm8gCnJlZmxlY3Rpb24gdXBvbiB0aGUgbmVpZ2hib3Vycy4gVGhleSBtYXkgYmUgYWxsIHRoYXQgY2FuIHBvc3NpYmx5IGJlIGRlc2lyZWQsIAp5ZXQgaXQgaXMgYWx3YXlzIGJldHRlciB0byBhdm9pZCB0aGUgbWl4dHVyZSBvZiB2YXJ5aW5nIHZpYnJhdGlvbnMuIE9uZSBtYXkgCmVhcm5lc3RseSB3aXNoIHNvbWV0aW1lcyBmb3IgdGhlIHNvY2lldHkgb2Ygb25lJyBzIG5laWdoYm91ciwgYW5kIHdoZW4gdGhhdCAKaGFwcGVucyBpdCBpcyBhbHdheXMgcG9zc2libGUgdG8gdmlzaXQgaGltIG9yIHRvIGludml0ZSBoaW0gdG8gY2FsbC4gQnV0IHRvIGJlIAphbHdheXMgaW4gc3VjaCBjbG9zZSBwcm94aW1pdHkgdG8gaGltIGFzIHRvIGZlZWwgZXZlcnkgY2hhbmdlIGluIGhpcyBhdXJhLS0gdGhhdCAKaXMgYSBjb25kaXRpb24gb2YgYWZmYWlycyB3aGljaCBvdWdodCBuZXZlciB0byBleGlzdCwgYWx0aG91Z2ggdW5mb3J0dW5hdGVseSBpdCAKdG9vIG9mdGVuIGRvZXMuIAoKCjkzOC7CoMKgwqDCoMKgwqDCoApJbiBhbGwgdGhvc2UgbG9uZyBsaW5lcyBvZiBob3VzZXMgd2hpY2ggYXJlIHNvIGNvbW1vbiBpbiBvdXIgZ3JlYXQgdG93bnMsIAppdCBpcyBpbXBvc3NpYmxlLCBmcm9tIHRoZSBvY2N1bHQgcG9pbnQgb2YgdmlldywgdG8gZXNjYXBlIGZyb20gb25lJyBzIApuZWlnaGJvdXIuIFdoZW5ldmVyIGhlIHdhbGtzIHVwIHRvIHRoZSBkaXZpZGluZyB3YWxsLCBoaXMgYXVyYSBtdXN0IHByb2plY3QgCnRocm91Z2ggaXQsIGFuZCBpdCB3aWxsIGJlIHNlZW4gdGhhdCwgd2l0aCBhIG5laWdoYm91ciBpbiBjbG9zZSBjb250YWN0IG9uIGVhY2ggCnNpZGUsIHdlIGFyZSBwcmFjdGljYWxseSBpbiB0aGUgcm9vbSB3aXRoIHR3byBmYW1pbGllcywgd2hvc2UgdGFzdGVzIGFuZCAKaW50ZXJlc3RzIG1heSBiZSBhYnNvbHV0ZWx5IGRpZmZlcmVudCBmcm9tIG91ciBvd24sIHdobyBtYXkgaGF2ZSBhbGwgc29ydHMgb2YgCnRob3VnaHRzIGFuZCBhc3BpcmF0aW9ucyB3aGljaCBjbGFzaCBlbnRpcmVseSB3aXRoIHRob3NlIHRvIHdoaWNoIHdlIHdpc2ggdG8gCmRldm90ZSBvdXJzZWx2ZXMuIEV2ZW4gYSBzZW1pLWRldGFjaGVkIGhvdXNlIGlzIGJldHRlciB0aGFuIHRoZXNlLCBmb3IgYXQgbGVhc3QgCmluIHRoYXQgd2Ugc2hhcmUgb3VyIHF1YXJ0ZXJzIHdpdGggb25seSBvbmUgZmFtaWx5LCBidXQgdGhlIHRydXRoIGlzIHRoYXQgdGhlcmUgCm91Z2h0IHRvIGJlIG5vIGhvdXNlcyBidXQgZGV0YWNoZWQgaG91c2VzLCBob3dldmVyIHZhbHVhYmxlIHRoZSBncm91bmQgbWF5IGJlLiAKQ2VydGFpbmx5IG5vIG9uZSB3aG8gdW5kZXJzdGFuZHMgdGhlIHBvd2VyIG9mIHRoZSB1bnNlZW4gaW5mbHVlbmNlcyB3b3VsZCB0YWtlIGEgCmhvdXNlIHdoaWNoIGlzIG9uZSBvZiBhIHJvdywgaWYgaGUgY291bGQgYnkgYW55IHBvc3NpYmlsaXR5IGF2b2lkIGl0LiBUaGUgc2FtZSAKZGlmZmljdWx0eSBvY2N1cnMgd2l0aCBvdXIgbW9kZXJuIGZsYXRzIGFuZCBhcGFydG1lbnQgaG91c2VzLiBUaGV5IG1heSBoYXZlIG1hbnkgCmFkdmFudGFnZXMgYW5kIHRoZWlyIGZpdHRpbmdzIG1heSBiZSBhbGwgdGhhdCBjYW4gYmUgZGVzaXJlZCwgYnV0IHRoZXkgYXJlIAphbHdheXMgb3BlbiB0byB0aGlzIG1vc3Qgc2VyaW91cyBvYmplY3Rpb24uIElmLCBob3dldmVyLCBhIG1hbicgcyBjaXJjdW1zdGFuY2VzIAphcmUgc3VjaCB0aGF0IGhlIG11c3QgdGh1cyBsaXZlIGluIGNvbW1vbiB3aXRoIG90aGVycywgaGUgd2lsbCBhdCBsZWFzdCAKZG8gYWxsIHRoYXQgbGllcyBpbiBoaXMgcG93ZXIgdG8gc2VjdXJlIHRoYXQgdGhlc2Ugb3RoZXJzIHNoYWxsIGJlIHJlYXNvbmFibHkgCmhhcm1vbmlvdXMuIAoKCjkzOS7CoMKgwqDCoMKgwqDCoApBbm90aGVyIHdlaWdodHkgbWF0dGVyIGZyb20gdGhlIG9jY3VsdCBwb2ludCBvZiB2aWV3IGlzIHRoZSBhc3BlY3Qgb2YgdGhlIApob3VzZS4gQ29uc2lkZXJhdGlvbnMgb2YgcGh5c2ljYWwgaGVhbHRoIHByZXNjcmliZSB0aGF0IGEgc3VubnkgcmF0aGVyIHRoYW4gYSAKZGFyayBob3VzZSBzaG91bGQgYmUgY2hvc2VuLCBhbmQgdGhlc2UgYXJlIGVtcGhhdGljYWxseSByZWluZm9yY2VkIHdoZW4gd2UgdGhpbmsgCm9mIHRoZSBoaWdoZXIgd29ybGRzLiBJIGhhdmUgYWxyZWFkeSBzYWlkIHNvbWV0aGluZyBhcyB0byB0aGUgaW1wZXJpb3VzIApuZWNlc3NpdHkgb2Ygc3Vuc2hpbmUgYW5kIG9mIGFsbCB0aGF0IGl0IGJyaW5ncyB3aXRoIGl0LiBOb3Qgb25seSBwaHlzaWNhbCAKZGlzZWFzZSwgYnV0IGlycml0YWJpbGl0eSBhbmQgZGVwcmVzc2lvbiBmbHkgYmVmb3JlIHRoZSBkaXJlY3QgcmF5cyBvZiB0aGUgc3VuOyAKc28gcGxlbnR5IG9mIHN1bmxpZ2h0IGFuZCBmcmVzaCBhaXIgYXJlIHRoZSBmaXJzdCBhbmQgbW9zdCBwcm9taW5lbnQgZGVzaWRlcmF0YS4KCgo5NDAuwqDCoMKgwqDCoMKgwqAKVGhlIGluZmx1ZW5jZXMgb2YgdGhlIGltbWVkaWF0ZSBuZWlnaGJvdXJob29kIG11c3QgYWxzbyBiZSB0YWtlbiBpbnRvIAphY2NvdW50LiBVbmRlciBubyBjaXJjdW1zdGFuY2VzIHdoYXRldmVyIG91Z2h0IGEgbWFuIHRvIHRha2UgYSBob3VzZSB3aGljaCBpcyAKbmVhciB0byBhIHB1YmxpYy1ob3VzZSwgYSBzbGF1Z2h0ZXItaG91c2UsIGEgcHJpc29uLCBvciBhIGJ1dGNoZXIncyBzaG9wLiBJdCBpcyAKYWxzbyBlbWluZW50bHkgdW5kZXNpcmFibGUgdG8gYmUgaW4gY2xvc2UgcHJveGltaXR5IHRvIHRoZSBvZmZpY2Ugb2YgYSAKcGF3bmJyb2tlciBvciBhIG1vbmV5bGVuZGVyLCBvciB0byBhbnkgcGxhY2Ugd2hlcmUgdmlvbGVudCBhbmQgYWNyaW1vbmlvdXMgCmRlYmF0ZXMgYW5kIGFyZ3VtZW50cyBhcmUgZnJlcXVlbnRseSBoZWxkLS0gaW4gdGhlIGxhdHRlciBjYXNlIGJlY2F1c2Ugb2YgdGhlIAp3ZWFyaW5nIGVmZmVjdCBvZiBjb25zdGFudCBqYXJyaW5nIGFuZCBhbmdyeSB2aWJyYXRpb25zLCBhbmQgaW4gdGhlIGNhc2Ugb2YgdGhlIAp1c3VyZXIgYmVjYXVzZSByYWRpYXRpb25zIG9mIHNvcnJvdyBhbmQgZGVzcGFpciBhcmUgYWx3YXlzIGNvbm5lY3RlZCB3aXRoIGhpcyAKYnVzaW5lc3MsIGFuZCBvZnRlbiB0aGVyZSBpcyBiaXR0ZXIgaGF0cmVkIGFzIHdlbGwuIEEgY2x1YiwgdG9vLCAKc2hvdWxkIGJlIGF2b2lkZWQsIGlmIGl0IHBlcm1pdHMgZ2FtYmxpbmcuIAoKCjk0MS7CoMKgwqDCoMKgwqDCoApUaGUgdHlwZSBvZiB0aGUgcHJldmlvdXMgdGVuYW50cyBtYXkgbWFrZSBhIGdyZWF0IGRpZmZlcmVuY2UgaW4gdGhlIApjb21mb3J0IG9mIGEgaG91c2UuIElmIHRoZXkgaGF2ZSBiZWVuIHNwZW5kdGhyaWZ0cywgaWYgdGhleSBoYXZlIGJlZW4gCnF1YXJyZWxzb21lLCBvciBpZiB0aGV5IGhhdmUgc3VmZmVyZWQgZGVlcGx5IGZyb20gbG9uZy1jb250aW51ZWQgZGVwcmVzc2lvbiwgdGhlIApwbGFjZSBtYXkgYmUgc28gaW1wcmVnbmF0ZWQgd2l0aCB0aG91Z2h0LWZvcm1zIG9mIHRob3NlIHZhcmllZCB0eXBlcyBhcyB0byBiZSBhIApkd2VsbGluZyBxdWl0ZSB1bnN1aXRhYmxlIGZvciBhbnkgc2Vuc2l0aXZlIGZhbWlseS4gVGhpcyBkaWZmaWN1bHR5LCBob3dldmVyLCAKY2FuIGJlIG92ZXJjb21lIGJ5IGFuIGVsYWJvcmF0ZSBkZW1hZ25ldGlzYXRpb24sIGlmIHRoZSBzdHVkZW50IGtub3dzIGhvdyB0byBkbyAKaXQuIAoKCjk0Mi7CoMKgwqDCoMKgwqDCoApOb3Qgb25seSB0aGUgYXNwZWN0IG9mIHRoZSBob3VzZSwgYXMgcmVnYXJkcyB0aGUgcG9pbnRzIG9mIHRoZSBjb21wYXNzLCAKYnV0IGl0cyBhc3BlY3QgaW4gdGhlIG90aGVyIHNlbnNlIG9mIHRoZSB3b3JkIGlzIGFsc28gd29ydGggbm90aWNpbmcuIE5vIG9uZSAKc2hvdWxkIHRha2UgYSBob3VzZSB3aGljaCBpcyB1Z2x5LCBnbG9vbXktbG9va2luZywgb3IgZGVwcmVzc2luZyBpbiBhcHBlYXJhbmNlLS0gCm5vdCBvbmx5IGJlY2F1c2Ugb2YgaXRzIGVmZmVjdCB1cG9uIGhpbXNlbGYgd2hlbiBoZSBsb29rcyBhdCBpdCwgYnV0IGJlY2F1c2UgaXQgCmlzIGNvbnN0YW50bHkgc3Vycm91bmRlZCBieSBhIGNsb3VkIG9mIHRob3VnaHQtZm9ybXMgbWFkZSBieSBuZWlnaGJvdXJzIG9yIApwYXNzaW5nIHN0cmFuZ2VycyB3aG8gYXJlIGRpc2d1c3RlZCB3aXRoIGl0cyBhcHBlYXJhbmNlLiBFdmVuIHRob3VnaCB0aGUgaG91c2UgCm91dHNpZGUgYmUgcHJldHR5LCBpZiB0aGVyZSBpcyBzcXVhbGlkIHVnbGluZXNzIGluIHRoZSBpbW1lZGlhdGUgbmVpZ2hib3VyaG9vZCwgCml0IGlzIHVuc3VpdGFibGUuIEFib3ZlIGFsbCB0aGluZ3MgdG8gYmUgYXZvaWRlZCBhcmUgdGhvc2UgbG9uZyBhbmQgbW9ub3Rvbm91cyAKbGluZXMgb2YgbWVhbiBhbmQgc29yZGlkLWxvb2tpbmcgaG91c2VzIHdoaWNoIG9uZSBtYXkgc2VlIGluIHNvbWUgTG9uZG9uIApzdWJ1cmJzLiBBIGdhcmRlbiBvZiBzb21lIHNvcnQgaXMgYSBtb3N0IHZhbHVhYmxlIGFzc2V0LiBJbiBmYWN0LCBhIGxpdHRsZSAKY290dGFnZSBpbiB0aGUgbWlkc3Qgb2YgYSBsYXJnZSBnYXJkZW4gaXMgYmV0dGVyIHRoYW4gdGhlIG1vc3QgbWFnbmlmaWNlbnQgaG91c2UgCndoaWNoIHN0YW5kcyBjbG9zZSB1cG9uIHRoZSByb2FkIGluIHRoZSBtaWRzdCBvZiBhIHJvdyBvZiBvdGhlcnMuIAoKCjk0My7CoMKgwqDCoMKgwqDCoApTVFJFRVRTIAoKCjk0NC7CoMKgwqDCoMKgwqDCoApJZiB0aGUgaG91c2UgYmUgaW4gYSBzdHJlZXQsIHRoZSBuYXR1cmUgb2YgdGhhdCBzdHJlZXQgaXMgYSBtYXR0ZXIgb2YgCmdyZWF0IGltcG9ydGFuY2UuIElmIHRoZSByb2FkIGJlIHBhdmVkIHdpdGggZ3Jhbml0ZSBibG9ja3Mgb3IgaW4gYW55IG90aGVyIHdheSAKY29uZHVjaXZlIHRvIG5vaXNlLCBpdCBzaG91bGQgYmUgYXZvaWRlZCBhdCBhbGwgY29zdHM7IHdoZXJlYXMgYSBxdWlldGVyIGZvcm0gb2YgCnBhdmluZywgc3VjaCBhcyBhc3BoYWx0IG9yIHdvb2QsIHdvdWxkIGNvdW50IG11Y2ggaW4gaXRzIGZhdm91ci4gQSBzdHJlZXQgCmluZmVzdGVkIGJ5IHllbGxpbmcgZmllbmRzIGluIHRoZSBzaGFwZSBvZiBoYXdrZXJzIGlzIGFsc28gdW5maXQgZm9yIHRoZSAKaGFiaXRhdGlvbiBvZiBhbnlvbmUgcG9zc2Vzc2luZyB0aGUgdXN1YWwgYWxsb3dhbmNlIG9mIG5lcnZlcy0tIHNvIGxvbmcgYXMgb3VyIApnb3Zlcm5tZW50IG5lZ2xlY3RzIHRvIHByb3RlY3QgdXMgYWdhaW5zdCBzbyBmbGFncmFudCBhIG51aXNhbmNlLiBJdCBnb2VzIAp3aXRob3V0IHNheWluZyB0aGF0IG9uZSBzaG91bGQgYXZvaWQgYSBzdHJlZXQgaW4gd2hpY2ggdGhlcmUgaXMgY29uc3RhbnQgaGVhdnkgCnRyYWZmaWMgb3Igb25lIGluIHRoZSBpbW1lZGlhdGUgbmVpZ2hib3VyaG9vZCBvZiBhIHJhaWx3YXkgb3IgdHJhbSBsaW5lLS0gbmVhciAKZW5vdWdoLCBJIG1lYW4sIHRvIHN1ZmZlciBmcm9tIHRoZSBub2lzZTsgZm9yIG5vaXNlLCBhcyBJIGhhdmUgYWxyZWFkeSAKZXhwbGFpbmVkLCBpcyBvbmUgb2YgdGhlIGdyZWF0ZXN0IGRlZmVjdHMgb2Ygb3VyIGRlZmVjdGl2ZSBjaXZpbGlzYXRpb24uIAoKCjk0NS7CoMKgwqDCoMKgwqDCoApBbHRob3VnaCBhZnRlciBhIHRpbWUgYSBtYW4gZ2V0cyB1c2VkIHRvIHRoZSBub2lzZSwgYW5kIGhhcmRseSBub3RpY2VzIAppdCwgbmV2ZXJ0aGVsZXNzIGV2ZXJ5IGZyZXNoIG91dGJ1cnN0IGlzIGEgYmxvdyB0byBoaXMgYXN0cmFsIGFuZCBtZW50YWwgYm9kaWVzLCAKYW5kIHRoZSBlZmZlY3Qgb2YgdGhpcyBpcyBwcmVjaXNlbHkgdGhhdCBvZiBjb25zdGFudGx5IHJlcGVhdGVkIGJsb3dzIHVwb24gdGhlIApwaHlzaWNhbCBib2R5LS0gZWFjaCBvbmUgbWF5IGJlIG5vIGdyZWF0IG1hdHRlciwgYnV0IGFmdGVyIGEgdGltZSB0aGUgY3VtdWxhdGl2ZSAKZWZmZWN0IGh1cnRzIGV4Y2VlZGluZ2x5LiBJbiB0aGUgcGh5c2ljYWwgYm9keSB0aGlzIHdvdWxkIG1lYW4gcGFpbiwgYW5kIHdlIApzaG91bGQgYXQgb25jZSB1bmRlcnN0YW5kIGl0IGFuZCByZWZlciBpdCB0byBpdHMgc291cmNlOyBpbiB0aGUgY2FzZSBvZiB0aGUgCmFzdHJhbCBib2R5IGl0IG1lYW5zIGlycml0YWJpbGl0eTsgYW5kIGluIHRoZSBjYXNlIG9mIHRoZSBtZW50YWwgYm9keSBhIGZlZWxpbmcgCm9mIGZhdGlndWUgYW5kIGluYWJpbGl0eSB0byB0aGluayBjbGVhcmx5LiBCdXQgd2hlbiB0aGVzZSBzdXBlcnZlbmUgd2UgZG8gbm90IHNvIApyZWFkaWx5IHVuZGVyc3RhbmQgdGhlbSwgbm9yIGRvIHdlIGFsd2F5cyBhc3NpZ24gdGhlbSB0byB0aGVpciB0cnVlIGNhdXNlLiAKQ29uc2VxdWVudGx5IHRoZSBuZWlnaGJvdXJob29kIG9mIGFueSBidWlsZGluZyB3aGljaCBpcyBlaXRoZXIgbm9pc3kgb3Igbm9pc29tZSAKd2l0aCBzbW9rZSBvciBjaGVtaWNhbHMgKGFzIGEgZmFjdG9yeSBtaWdodCBiZSkgaXMgdG8gYmUgc2VkdWxvdXNseSBhdm9pZGVkLiAKCgo5NDYuwqDCoMKgwqDCoMKgwqAKTWFueSBvZiBteSByZWFkZXJzIG1heSBiZSBzbyBzaXR1YXRlZCB0aGF0IGl0IGlzIGltcG9zc2libGUgZm9yIHRoZW0gdG8gCnRha2UgYWxsIHRoZXNlIHJlY29tbWVuZGF0aW9ucyBpbnRvIGNvbnNpZGVyYXRpb24sIGFuZCBJIG9mZmVyIHRoZW0gb25seSBhcyBhIApndWlkZSB0byB3aGF0IGlzIGRlc2lyYWJsZSB3aGVuIGl0IGNhbiBiZSBoYWQuIElmIGEgbWFuIHdobyBpcyBlbnRpcmVseSAKdW5mZXR0ZXJlZCBpcyBhYm91dCB0byBjaG9vc2UgYSBob3VzZSBvciBhIHNpdGUgZm9yIGEgaG91c2UsIEkgc2hvdWxkIGFkdmlzZSBoaW0gCnRvIGJlIGdvdmVybmVkIGluIGhpcyBzZWxlY3Rpb24gYnkgd2hhdCBJIGhhdmUgc2FpZCBhYm92ZTsgYnV0IEkga25vdyB3ZWxsIHRoYXQgCm1vc3QgcGVvcGxlIGFyZSBwcmFjdGljYWxseSBsaW1pdGVkIGFzIHRvIHRoZSByYW5nZSBvZiB0aGVpciBjaG9pY2UgYnkgdGhlIApxdWVzdGlvbiBvZiByZW50LCBjb252ZW5pZW50IGFjY2VzcyB0byB0aGVpciB3b3JrLCBhbmQgYSBudW1iZXIgb2Ygb3RoZXIgCnBlcnNvbmFsIHJlYXNvbnMuIEluIHN1Y2ggY2FzZXMgYSBtYW4gbXVzdCBzaW1wbHkgYmFsYW5jZSB0aGUgYWR2YW50YWdlcyBhbmQgCmRpc2FkdmFudGFnZXMsIGFuZCBkbyB0aGUgYmVzdCB0aGF0IGhlIGNhbiwgdGFraW5nIGl0IGFzIHRoZSByZXN1bHQgb2YgaGlzIG93biAKYWN0aW9ucyBpbiB0aGUgcGFzdCB0aGF0IGhlIGNhbm5vdCBkbyBiZXR0ZXIuIAoKCjk0Ny7CoMKgwqDCoMKgwqDCoApQSUNUVVJFUyAKCgo5NDguwqDCoMKgwqDCoMKgwqAKQSBtYXR0ZXIgaW4gd2hpY2ggYSBtYW4gaGFzIHVzdWFsbHkgbXVjaCBncmVhdGVyIGxpYmVydHkgaXMgdGhlIApkZWNvcmF0aW9uIG9mIGhpcyByb29tLCBhbmQgaXQgaXMgb25lIG9mIGNvbnNpZGVyYWJsZSBpbXBvcnRhbmNlIHRvIGhpbS4gRm9yIApleGFtcGxlLCB0aGUgcGljdHVyZXMgd2hpY2ggd2UgaGFuZyBvbiB0aGUgd2FsbHMgb2Ygb3VyIGhvbWVzIGFyZSBleGVyY2lzaW5nIGFsbCAKdGhlIHdoaWxlIGFuIHVubm90aWNlZCBpbmZsdWVuY2UgdXBvbiB1cywgbm90IG9ubHkgYmVjYXVzZSB0aGV5IGtlZXAgdGhlIApleHByZXNzaW9uIG9mIGNlcnRhaW4gaWRlYXMgY29uc3RhbnRseSBiZWZvcmUgb3VyIGV5ZXMsIGJ1dCBhbHNvIGJlY2F1c2UgdGhlIAphcnRpc3QgcHV0cyBhIGdyZWF0IGRlYWwgb2YgaGltc2VsZiwgb2YgaGlzIGlubW9zdCB0aG91Z2h0IGFuZCBmZWVsaW5nLCBpbnRvIGhpcyAKd29yaywgYW5kIHRoZSBlZmZlY3Qgb2YgYWxsIHRoYXQgdGhvdWdodCBhbmQgZmVlbGluZyBpbmhlcmVzIGluIHRoZSBwaWN0dXJlIGFuZCAKcmFkaWF0ZXMgZnJvbSBpdCBqdXN0IGFzIHN1cmVseSBhcyBzY2VudCBpbmhlcmVzIGluIGFuZCByYWRpYXRlcyBmcm9tIGEgcm9zZS4gClRoZXJlIGlzIGEgaGlkZGVuIHNpZGUgdG8gZXZlcnkgcGljdHVyZS0tIHRoZSBjb25jZXB0aW9uIHdoaWNoIHdhcyBpbiB0aGUgCmFydGlzdCcgcyBtaW5kIGFuZCBoZWFydC4gVGhhdCBjb25jZXB0aW9uLCB3aGVuIGhlIGZvcm1lZCBpdCwgZXhwcmVzc2VkIGl0c2VsZiAKY2xlYXJseSBpbiBhc3RyYWwgYW5kIG1lbnRhbCBtYXR0ZXIsIGV2ZW4gdGhvdWdoIGhlIG1heSBoYXZlIHN1Y2NlZWRlZCBidXQgCnBhcnRpYWxseSBpbiBicmluZ2luZyBoaXMgaWRlYSBkb3duIHRvIHRoZSBwaHlzaWNhbCB3b3JsZC4gCgoKOTQ5LsKgwqDCoMKgwqDCoMKgCkV2ZXJ5IHRydWUgYXJ0aXN0IHdpbGwgYWNrbm93bGVkZ2UgdGhhdCwgaG93ZXZlciBleGNlbGxlbnQgaGlzIHdvcmsgbWF5IApiZSwgaXQgaW52YXJpYWJseSBmYWxscyBzaG9ydCBvZiB3aGF0IGhlIGludGVuZGVkIGFuZCBleHBlY3RlZC4gWWV0IHRoZSAKY29uY2VwdGlvbiwgYXMgaGUgdGhvdWdodCBpdCBvdXQsIGV4aXN0cyByZWFsbHkgYW5kIHZpdmlkbHkgaW4gdGhlIG1lbnRhbCB3b3JsZCwgCmFuZCB0aGUgZmVlbGluZ3MgYW5kIGVtb3Rpb25zIHdoaWNoIGhlIGVuZGVhdm91cmVkIHRvIGV4cHJlc3MgZXhpc3QgaW4gdGhlIAphc3RyYWwgcmVhbG0sIGFuZCB0aGVzZSwgd2hpY2ggd2UgbWF5IGNhbGwgdGhlIHVuc2VlbiBjb3VudGVycGFydHMgb2YgdGhlIApwaWN0dXJlLCBhcmUgYWx3YXlzIHJhZGlhdGluZyB2aWJyYXRpb25zIG9mIHRoZWlyIG93biBjaGFyYWN0ZXIsIHdoYXRldmVyIHRoYXQgCm1heSBiZSwgYW5kIGFyZSB0aGVyZWZvcmUgcHJvZHVjaW5nIGEgbmV2ZXItY2Vhc2luZyBlZmZlY3QgdXBvbiB0aG9zZSB3aG8gbGl2ZSAKd2l0aGluIHRoZWlyIGluZmx1ZW5jZS4gCgoKOTUwLsKgwqDCoMKgwqDCoMKgCk1hbmlmZXN0bHksIHRoZXJlZm9yZSwgaXQgYmVob3ZlcyB1cyB0byBiZSBjYXJlZnVsIGFzIHRvIHRoZSBuYXR1cmUgb2YgCnRoZSBvYmplY3RzIG9mIGFydCB3aGljaCB3ZSBnYXRoZXIgYXJvdW5kIHVzLiBXZSBtdXN0IGF2b2lkIGFsbCBwaWN0dXJlcyB3aG9zZSAKc3ViamVjdHMgYXJlIG1lYW4sIHNvcmRpZCBvciB0ZXJyaWJsZSwgaG93ZXZlciBhY2N1cmF0ZWx5IG9yIHBvd2VyZnVsbHkgdGhvc2UgCnN1YmplY3RzIG1heSBiZSBkZWxpbmVhdGVkLiBJdCBpcyB3ZWxsIGFsc28gdG8gYXZvaWQgZXZlbiB0aG9zZSB3aGljaCwgdGhvdWdoIApoYXJtbGVzcyBpbiB0aGVtc2VsdmVzLCBhcmUgbGlrZWx5IHRvIHN1Z2dlc3QgaW1wdXJlIHRob3VnaHQgdG8gdW5kZXZlbG9wZWQgCm1pbmRzLCBiZWNhdXNlIHN1Y2ggdGhvdWdodC1mb3JtcyB3aWxsIGhhbmcgYWJvdXQgdGhlIHBpY3R1cmUgYW5kIGFjdCBhcyBhIApjb25zdGFudCBhbmQgYmFuZWZ1bCBpbmZsdWVuY2UuIFRoZSBtb2Rlcm4gY3JhemUgZm9yIGluYW5lIHJlcHJlc2VudGF0aW9ucyBvZiAKdGhlIGZlbWFsZSBmYWNlIGFuZCBmaWd1cmUgaXMgZnJvbSB0aGlzIHBvaW50IG9mIHZpZXcgZGlzdGluY3RseSB0byBiZSAKZGVwcmVjYXRlZC4gU28gYWxzbyBpcyB0aGF0IGZvcm0gb2YgYXJ0aXN0aWMgcmVhbGlzbSB3aGljaCBzZWVzIG9ubHkgdGhlIGRhcmtlc3QgCnNpZGUgb2YgbGlmZSwgYW5kIHJlY29nbmlzZXMgbm90aGluZyBhcyBuYXR1cmFsIHVubGVzcyBpdCBiZSBkZWNhZGVudCBhbmQgCmRlcHJhdmVkLiAKCgo5NTEuwqDCoMKgwqDCoMKgwqAKUGljdHVyZXMgb2Ygc29yZGlkIHNjZW5lcyBvZiBsb3cgbGlmZSwgb2YgcGVhc2FudHMgZHJpbmtpbmcgaW4gYW4gCmFsZS1ob3VzZSwgb2YgYmF0dGxlIHNjZW5lcyBvciBvZiBodW50c21lbiBnYXRoZXJlZCB0b2dldGhlciB0byBzbGF1Z2h0ZXIgYW4gCnVuZm9ydHVuYXRlIGZveDogYWxsIHRoZXNlIHdpbGwgYmUgYXZvaWRlZCBieSB0aGUgd2lzZSBtYW4uIEhlIHdpbGwgYmUgY2FyZWZ1bCAKdG8gc3Vycm91bmQgaGltc2VsZiBvbmx5IHdpdGggc3VjaCBwaWN0dXJlcyBhcyBhcmUgZW5ub2JsaW5nLCBzb290aGluZywgaGVscGZ1bCwgCnRob3NlIHdoaWNoIHNoZWQgdXBvbiBoaW0gYW5kIGhpcyBhbiBpbmZsdWVuY2UgdGVuZGluZyBldmVyIHRvIGhhcHBpbmVzcyBhbmQgCnBlYWNlLiBCZWF1dGlmdWwgbGFuZHNjYXBlcyBhbmQgc2VhLXZpZXdzIGFyZSB1c3VhbGx5IGJlc3Qgb2YgYWxsOyBwaWN0dXJlcyBhbHNvIApvZiBncmFuZCBvbGQgY2F0aGVkcmFscy0tIG1hZ25pZmljZW50IGJ1aWxkaW5ncyB3aXRoIHBlYWNlZnVsIGFzc29jaWF0aW9uczsgCnNvbWV0aW1lcyBhIHBvcnRyYWl0IG9yIGltYWdpbmFyeSBmaWd1cmUsIGlmIHRoZSBmYWNlIGJlIHJlYWxseSBhIGZpbmUgb25lLCBidXQgCm5ldmVyIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzIG9uZSB3aGljaCBzdWdnZXN0cyBzb3Jyb3csIGFuZ2VyIG9yIHBhaW4uIAoKCjk1Mi7CoMKgwqDCoMKgwqDCoApJbiByZWxpZ2lvdXMgcGljdHVyZXMsIGZvciBleGFtcGxlLCB0aGUgY3J1Y2lmaXhpb24sIGFuZCB0aGUgZ2FyZGVuIG9mIApHZXRoc2VtYW5lIG11c3QgbmV2ZXIgYXBwZWFyLCBidXQgdGhlIHJpc2VuIGFuZCByYWRpYW50IENocmlzdCBvciBhIHJlYXNvbmFibHkgCmF0dHJhY3RpdmUgcHJlc2VudG1lbnQgb2YgdGhlIFZpcmdpbiBhbmQgQ2hpbGQgYXJlIGFkbWlzc2libGUuIEluIHRoZSBzYW1lIHdheSAKd2l0aCBzdGF0dWVzOyBvbmx5IHRob3NlIHNob3VsZCBmaW5kIGEgcGxhY2Ugd2hpY2ggYXJlIG9mIGV4cXVpc2l0ZSBiZWF1dHksIGluIApjb25uZWN0aW9uIHdpdGggd2hpY2ggdGhlcmUgY291bGQgbmV2ZXIgYmUgdGhlIGxlYXN0IHRob3VnaHQgb2YgaW1wdXJpdHkuIEEgbWFuIApzaG91bGQgdGhpbmsgbm90IG9ubHkgb2YgaGltc2VsZiwgYnV0IG9mIHNlcnZhbnRzIGFuZCBwb3NzaWJsZSB2aXNpdG9ycy4gTm8gCmRlY2VudCBwZXJzb24gY291bGQgaGF2ZSB0aG91Z2h0cyBvdGhlciB0aGFuIHRoZSBwdXJlc3QgaW4gY29ubmVjdGlvbiB3aXRoIGFueSAKcGljdHVyZSBvciBzdGF0dWUgd2hhdGV2ZXI7IGJ1dCBpZiBzdWNoIGEgdGhpbmcgaGFuZ3Mgb3Igc3RhbmRzIHdoZXJlIG90aGVycyBtYXkgCnNlZSBpdCwgaXQgaXMgdXNlbGVzcyB0byBpZ25vcmUgdGhlIGZhY3QgdGhhdCBsb3ctY2xhc3MgbWluZHMgd2lsbCBmb3JtIApsb3ctY2xhc3MgaW1hZ2VzLCBhbmQgc28gYW4gb2JqZWN0IHdoaWNoIHRvIHVzIGlzIG5vYmxlIGFuZCBiZWF1dGlmdWwgbWF5IGNvbWUgCnRvIHJhZGlhdGUgYWJvbWluYWJsZSBpbmZsdWVuY2VzLiAKCgo5NTMuwqDCoMKgwqDCoMKgwqAKQ2FyZSBtdXN0IGJlIGV4ZXJjaXNlZCB3aXRoIHJlZ2FyZCB0byBwaG90b2dyYXBocy4gUHJpdmF0ZSBmcmllbmRzIGFyZSBvZiAKY291cnNlIGFkbWlzc2libGUsIG9yIGEgcHVibGljIG1hbiB3aG9tIG9uZSBhZG1pcmVzOyBidXQgb24gbm8gYWNjb3VudCBzaG91bGQgCnRoZSBmaWd1cmVzIG9mIGFjdHJlc3NlcyBiZSBpbnRyb2R1Y2VkLCBhcyB0aGV5IGFsd2F5cyBhdHRyYWN0IHRoZSBtb3N0IAp1bmRlc2lyYWJsZSB0aG91Z2h0LWZvcm1zIGZyb20gaG9zdHMgb2YgaW1wdXJlLW1pbmRlZCBwZW9wbGUuIEEgcHJhaXNld29ydGh5IApjdXN0b20gaXMgdG8gaGF2ZSBpbiBhIHByb21pbmVudCBwb3NpdGlvbiB0aGUgYmVzdCBhdmFpbGFibGUgcG9ydHJhaXQgb2YgdGhlIApydWxlciBvZiB0aGUgY291bnRyeSwgYW5kIHRvIHN1cnJvdW5kIGl0IGNvbnN0YW50bHkgd2l0aCB3YXZlcyBvZiBhZmZlY3Rpb25hdGUgCmFuZCBsb3lhbCB0aG91Z2h0LCBmb3IgaW4gdGhpcyB3YXkgaXQgd2lsbCByYWRpYXRlIGFuIGluZmx1ZW5jZSBvZiBsb3lhbHR5IGFuZCAKZGV2b3Rpb24gdXBvbiBhbGwgd2hvIGVudGVyIHRoZSByb29tLiAKCgo5NTQuwqDCoMKgwqDCoMKgwqAKQ1VSSU9TSVRJRVMgCgoKOTU1LsKgwqDCoMKgwqDCoMKgCk1hbnkgcGVvcGxlIGxpa2UgdG8gc3Vycm91bmQgdGhlbXNlbHZlcyB3aXRoIGFsbCBzb3J0cyBvZiBjdXJpb3VzIGxpdHRsZSAKb2JqZWN0cy0tIGZpZ3VyZXMsIHBpZWNlcyBvZiBwb3R0ZXJ5LCBjYXJ2aW5ncyBpbiBpdm9yeSBhbmQgZWJvbnkgYW5kIHNvIG9uLiAKTW9zdCBvZiB0aGVzZSB0aGluZ3MgYXJlIGhhcm1sZXNzIGVub3VnaCwgdGhvdWdoIGl0IG1lYW5zIGEgZ3JlYXQgZGVhbCBvZiAKdHJvdWJsZSB0byBrZWVwIHRoZW0gc2NydXB1bG91c2x5IGNsZWFuLCBhbmQgdW5sZXNzIHRoZXkgYXJlIHNvIGtlcHQsIHRoZXkgCmJlY29tZSBhIG51aXNhbmNlIG9mIGFuIGFnZ3JhdmF0ZWQgdHlwZS4gQnV0IHdpdGggcmVnYXJkIHRvIHNvbWUgb2YgdGhlc2UgbGl0dGxlIAptZW1lbnRvcyBhIGNlcnRhaW4gYW1vdW50IG9mIGNhdXRpb24gaXMgZGVzaXJhYmxlLiBNYW55IG9mIHN1Y2ggdGhpbmdzIGFyZSBvbGQsIAphbmQgc29tZSBvZiB0aGVtIGhhdmUgYSBoaXN0b3J5IGF0dGFjaGVkIHRvIHRoZW0tLSBzb21ldGltZXMgYSB0ZXJyaWJsZSBoaXN0b3J5LiAKSXQgaXMgd2lkZWx5IGtub3duLCBmb3IgZXhhbXBsZSwgdGhhdCBhIGxhZHkgaW4gTG9uZG9uIGhhZCBpbiBoZXIgaG91c2UgZm9yIHNvbWUgCnRpbWUgYW4gRWd5cHRpYW4gbXVtbXktY2FzZSwgdGhlIGluZmx1ZW5jZXMgY29ubmVjdGVkIHdpdGggd2hpY2ggd2VyZSBvZiBzbyAKc2VyaW91cyBhIGNoYXJhY3RlciB0aGF0IHNoZSB3YXMgc3BlZWRpbHkgZm9yY2VkIHRvIGdldCByaWQgb2YgaXQgYWx0b2dldGhlciwgCmJlY2F1c2Ugb2YgYSBzZXJpZXMgb2YgZGlzYXN0ZXJzIHdoaWNoIG92ZXJ0b29rIGFsbCB3aG8gY2FtZSBpbnRvIGNvbnRhY3Qgd2l0aCAKaXQuIFRoYXQgaXMgYW4gZXh0cmVtZSBjYXNlLCBidXQgb3RoZXIga2luZHMgb2YgY3VyaW9zaXRpZXMgYWxzbyBoYXZlIAp1bmRlc2lyYWJsZSBvciBtaXNjaGlldm91cyBhdXJhcy4gCgoKOTU2LsKgwqDCoMKgwqDCoMKgCk1hbnkgc3VjaCBvYmplY3RzIHRlbGwgdGhlaXIgb3duIHN0b3J5LCB0aG91Z2ggdGhlIG93bmVyIGlzIG9mdGVuIHVuYXdhcmUgCm9mIGl0LiBBIHNlbnNpdGl2ZSBwZXJzb24gc29tZXRpbWVzIGZpbmRzIGxhbmRzY2FwZXMgd2hpY2ggYXJlIGVudGlyZWx5IHVua25vd24gCnRvIGhpbSBvciBzY2VuZXMgZnJvbSBzb21lIGZvcmVpZ24gbGFuZCBzdGFydGluZyB1cCB1bmJpZGRlbiBpbiBoaXMgbWluZC4gVGhlc2UgCm1heSBjb21lIGZyb20gdmFyaW91cyBzb3VyY2VzLiBUaGV5IG1heSBiZSBtZXJlIHBpY3R1cmVzIGZvcm1lZCBieSB0aGUgCmltYWdpbmF0aW9uLCBoaXMgb3duIG9yIHRoYXQgb2Ygc29tZSBvdGhlciBwZXJzb24gaW4gdGhlIG5laWdoYm91cmhvb2QsIGVpdGhlciAKZGVhZCBvciBsaXZpbmc7IHRoZXkgbWF5IGJlIGV4YW1wbGVzIG9mIGNhc3VhbCBjbGFpcnZveWFuY2UgYXQgYSBkaXN0YW5jZTsgYnV0IAp0aGV5IG1heSBiZSwgYW5kIG9mdGVuIGFyZSwgaW5zdGFuY2VzIG9mIHVuaW50ZW50aW9uYWwgcHN5Y2hvbWV0cnksIGFuZCBjYW4gYmUgCnRyYWNlZCB0byBzb21lIG9iamVjdCBpbiB0aGUgcm9vbS4gCgoKOTU3LsKgwqDCoMKgwqDCoMKgCkZvciBldmVyeSBib2R5LCBvZiB3aGF0ZXZlciBuYXR1cmUgaXQgbWF5IGJlLCBjYXJyaWVzIHdpdGhpbiBpdCB0aGUgcG93ZXIgCm9mIHNob3dpbmcsIHRvIHRob3NlIHdobyBjYW4gc2VlLCBwaWN0dXJlcyBvZiBpdHMgcGFzdCBoaXN0b3J5LCBhbmQgc29tZXRpbWVzIAp0aGVzZSBjb21lIHRvIHRoZSBzdXJmYWNlIHVuZXhwZWN0ZWRseS4gU29tZSBhcmUgZ29vZCBhbmQgc29tZSBhcmUgYmFkOyBzb21lIGFyZSAKaGFybWxlc3MgYW5kIG90aGVycyBhcmUgYWN0aXZlbHkgdW5wbGVhc2FudC4gV2hlbiBhIG1hbiBhY3F1aXJlcyBzb21lIGFuY2llbnQgCm9iamVjdCBvZiB1bmtub3duIGhpc3RvcnksIGhlIGhhcyB1c3VhbGx5IG5vIG1lYW5zIG9mIHRlbGxpbmcgaW1tZWRpYXRlbHkgCndoZXRoZXIgaXQgd2lsbCBwcm92ZSBoZWxwZnVsLCBoYXJtZnVsIG9yIG5lZ2F0aXZlLCBidXQgaWYgaGUgd2F0Y2hlcyBjYXJlZnVsbHkgCmhlIHdpbGwgc29vbiBzZWUuIENlcnRhaW4gdHlwZXMgb2YgY3VyaW9zaXRpZXMgYXJlIG9idmlvdXNseSB1bmRlc2lyYWJsZSBmcm9tIAp0aGUgb3V0c2V0LS0gc3VjaCB0aGluZ3MsIGZvciBleGFtcGxlLCBhcyBzcGVhcnMsIHN3b3JkcywgZGFnZ2Vycywgb3IgYW55dGhpbmcgCndoaWNoIG1heSBoYXZlIGJlZW4gY29ubmVjdGVkIHdpdGggYmxvb2RzaGVkLiAKCgo5NTguwqDCoMKgwqDCoMKgwqAKQk9PS1MgCgoKOTU5LsKgwqDCoMKgwqDCoMKgClRvIGEgZGlzY2VybmluZyBleWUgYSBtYW4gc2hvd3MgaGlzIG5hdHVyZSBpbiBoaXMgY2hvaWNlIG9mIGJvb2tzLS0gYSAKY2hvaWNlIHdoaWNoIGlzIG9mIGdyZWF0IGltcG9ydGFuY2UgdG8gaGltLiBBIG1hbiByZWFkcyBhIGJvb2s7IGhlIGxheXMgaXQgYXNpZGUgCmFuZCBwZXJoYXBzIGZvcmdldHMgaXQ7IGJ1dCBuZXZlcnRoZWxlc3MgaXQgbGllcyB0aGVyZSBvbiBoaXMgdGFibGUgb3IgaGlzIApib29rLXNoZWxmIGFuZCBpdCBjb250aW51ZXMgdG8gcG91ciB1cG9uIGhpbSBhIHN0ZWFkeSBpbmZsdWVuY2UsIHdoZXRoZXIgZm9yIApnb29kIG9yIGZvciBldmlsLiBNYW55IGJvb2tzLCBpdCBpcyB0cnVlLCBoYXZlIG5vIHByb25vdW5jZWQgaW5mbHVlbmNlLCBhbmQgbWF5IAp0aGVyZWZvcmUgYmUgY29uc2lkZXJlZCBhcyBuZXV0cmFsLiBCdXQgaWYgYSBib29rIGhhcyBkb25lIHVzIGdvb2QsIGl0cyAKaW5mbHVlbmNlIHdpbGwgdXN1YWxseSBjb250aW51ZSB0byBiZSBmb3IgZ29vZCwgdW5sZXNzIGluZGVlZCBpdCBoYXBwZW5zIHRoYXQgd2UgCm91dGdyb3cgaXQgYWx0b2dldGhlciwgYW5kIGluIHRoYXQgY2FzZSBpdHMgaW5mbHVlbmNlIG1pZ2h0IHBvc3NpYmx5IGJlIGEga2luZCAKb2YgcmV0YXJkYXRpb24uIAoKCjk2MC7CoMKgwqDCoMKgwqDCoApUaGUgbWFpbiB0aGluZyBpcyB0byBhdm9pZCBkZWZpbml0ZWx5IGV2aWwgYm9va3MtLSBob3JyaWJsZSwgbmV1cm90aWMgCnN0dWRpZXMgb2YgY2hhcmFjdGVycyB3aGljaCBhcmUgYmV0dGVyIGxlZnQgdW5zdHVkaWVkLCB0YWxlcyBvZiB1bm5hdHVyYWwgYW5kIAptb3N0IHVucGxlYXNhbnQgd29tZW4gd2hvIGFyZSBhbHdheXMgaG92ZXJpbmcgYXMgbmVhciBhcyB0aGV5IGRhcmUgdG8gdGhlIGVkZ2UgCm9mIGltcHJvcHJpZXR5IG9mIHNvbWUgc29ydCwgc3RvcmllcyBvZiBkb3VidGZ1bCBtb3JhbGl0eSwgb2Ygc2hhZHkgCnRyYW5zYWN0aW9ucywgb3Igb2YgYmxhbmsgaW5hbml0eS4gQWxsIHRoZXNlIGFyZSB0aGluZ3MgZm9yIHdoaWNoIGEgc2Vuc2libGUgbWFuIAp3aWxsIHNwYXJlIG5vIHJvb20gb24gaGlzIGJvb2stc2hlbHZlcywgYmVjYXVzZSB0aGV5IGFyZSBub3Qgd29ydGggcmVhZGluZyBpbiAKdGhlIGZpcnN0IHBsYWNlLCBhbmQgdGhleSBjZXJ0YWlubHkgcmFkaWF0ZSBhbiBpbXB1cmUgYW5kIHVud2hvbGVzb21lIGluZmx1ZW5jZSAKaW4gdGhlIHNlY29uZC4gVGhlIGdyZWF0IGNyaXRlcmlvbiBpbiB0aGUgZm9ybWF0aW9uIG9mIGEgbGlicmFyeSBpcyB0aGF0IG9ubHkgCnNhbmUgYW5kIGhlYWx0aHkgYm9va3Mgc2hvdWxkIGJlIGFkbWl0dGVkLCBmb3IgYm9va3MgYXJlIHNwZWNpYWxseSBzdHJvbmcgCmNlbnRyZXMgb2YgdGhvdWdodC1mb3JtcywgYW5kIHRoZWlyIHVubm90aWNlZCBpbmZsdWVuY2UgaW4gYSBtYW4nIHMgbGlmZSBpcyAKb2Z0ZW4gYSBwb3dlcmZ1bCBvbmUuIFRoZXkgc2hvdWxkIGJlIG5vdCB0b28gbWFueSwgYnV0IGVtcGhhdGljYWxseSBnb29kIG9mIAp0aGVpciBraW5kLiAKCgo5NjEuwqDCoMKgwqDCoMKgwqAKRlVSTklTSElORyAKCgo5NjIuwqDCoMKgwqDCoMKgwqAKVGhlcmUgaXMgaGlkZGVuIHNpZGUgdG8gZXZlbiBzbyBob21lbHkgYSBxdWVzdGlvbiBhcyB0aGF0IG9mIGZ1cm5pdHVyZSAKYW5kIGNvbG91ciBkZWNvcmF0aW9uLCBzaW5jZSBldmVyeSBjb2xvdXIgaGFzIGl0cyBvd24gc3BlY2lhbCByYXRlIG9mIHZpYnJhdGlvbiwgCmFuZCBzb21lIG9mIHRoZXNlIHJhdGVzIGFyZSBoZWxwZnVsIHRvIG1hbiwgd2hpbGUgb3RoZXJzIGFyZSBkaXN0aW5jdGx5IGEgCmhpbmRyYW5jZS4gQnJvYWRseSBzcGVha2luZywgbGlnaHQgYW5kIGRlbGljYXRlIHRpbnRzIGFyZSBnb29kLCB3aGlsZSBoZWF2eSwgCmNvYXJzZSBhbmQgZGFyayBjb2xvdXJzIGFyZSB1c3VhbGx5IHRvIGJlIGF2b2lkZWQuIFNvbWUgY29uc2lkZXJhdGlvbiBzaG91bGQgCmFsc28gYmUgZ2l2ZW4gdG8gdGhlIHB1cnBvc2UgZm9yIHdoaWNoIHRoZSByb29tIGlzIGludGVuZGVkOyBmb3IgZXhhbXBsZSwgCmNlcnRhaW4gc2hhZGVzIG9mIHJlZCBtaWdodCBiZSBub3Qgb3V0IG9mIHBsYWNlIGluIGEgZGluaW5nLXJvb20sIGJ1dCB3b3VsZCBiZSAKZmFyIGZyb20gZGVzaXJhYmxlIGluIGEgcm9vbSBjb25zZWNyYXRlZCB0byBzbGVlcCBvciB0byBtZWRpdGF0aW9uLiAKCgo5NjMuwqDCoMKgwqDCoMKgwqAKSkVXRUxMRVJZIAoKCjk2NC7CoMKgwqDCoMKgwqDCoApBbm90aGVyIGFkanVuY3Qgb2Ygb3JkaW5hcnkgbGlmZSwgaW4gd2hpY2ggdGhlIGhpZGRlbiBzaWRlIGlzIG9mIGdyZWF0IAppbXBvcnRhbmNlLCBpcyBqZXdlbGxlcnkuIE9uIHRoZSB3aG9sZSwgdGhlIHdlYXJpbmcgb2YgamV3ZWxsZXJ5IGlzIHRvIGJlIApkaXNjb3VyYWdlZCwgYmVjYXVzZSwgdGhvdWdoIGV2ZXJ5IHN0b25lIGhhcyBpdHMgb3duIHNwZWNpYWwgcHJvcGVydHkgYW5kIAppbmZsdWVuY2UsIHRoZSBtb3N0IHByb21pbmVudCBlZmZlY3Qgb2YgbmVhcmx5IGFsbCBvZiB0aGVtIGlzIHRvIGV4Y2l0ZSBiaXR0ZXIgCmVudnkgYW5kIGNvdmV0b3VzbmVzcyBpbiB0aGUgaGVhcnRzIG9mIG90aGVycy4gUXVpdGUgYSBudW1iZXIgb2Ygd29tZW4gc2VlbSB0byAKYmUgdW5hYmxlIHRvIGNvbnRlbXBsYXRlIGEgamV3ZWwgd2l0aG91dCBiZWNvbWluZyBmaWxsZWQgd2l0aCBhbiBpbm9yZGluYXRlIApncmVlZCB0byBwb3NzZXNzIGl0LCBzbyB0aGF0IHRoZXJlIGlzIHNjYXJjZWx5IGEgc3RvbmUgb2YgYW55IGJlYXV0eSBvciB2YWx1ZSAKd2hpY2ggaXMgbm90IHRoZSBjZW50cmUgZm9yIG1hbnkgY29udmVyZ2luZyBzdHJlYW1zIG9mIGplYWxvdXMgbG9uZ2luZy4gCgoKOTY1LsKgwqDCoMKgwqDCoMKgCkluIHRoZSBjYXNlIG9mIHRoZSBncmVhdCBoaXN0b3JpY2FsIGpld2VscyB3ZSBoYXZlIHRoZSBhZGRpdGlvbmFsIApjb21wbGljYXRpb24gdGhhdCBhbGwga2luZHMgb2YgZ2hhc3RseSBjcmltZXMgaGF2ZSBiZWVuIGNvbW1pdHRlZCBpbiBjb25uZWN0aW9uIAp3aXRoIHRoZW0sIGFuZCB0aGV5IGFyZSB0aGVyZWZvcmUgdXN1YWxseSBvYmplY3RzIG9mIGhvcnJvciByYXRoZXIgdGhhbiBvZiAKYmVhdXR5IHRvIGFueSBzZW5zaXRpdmUgcGVyc29uLiBUaGUgamV3ZWwgcmVwcmVzZW50cyB0aGUgaGlnaGVzdCBkZXZlbG9wbWVudCBvZiAKdGhlIG1pbmVyYWwga2luZ2RvbSwgYW5kIGNvbnNlcXVlbnRseSBpdHMgcG93ZXIgb2YgcmVjZWl2aW5nIGFuZCByZXRhaW5pbmcgCmltcHJlc3Npb25zIGlzIG11Y2ggZ3JlYXRlciB0aGFuIGlzIHRoZSBjYXNlIHdpdGggYWxtb3N0IGFueSBvdGhlciBvYmplY3QuIFRoZSAKR25vc3RpYyBnZW1zIGVtcGxveWVkIGluIGluaXRpYXRpb24gY2VyZW1vbmllcyB0d28gdGhvdXNhbmQgeWVhcnMgYWdvIHN0aWxsIApyZW1haW4gdmlnb3JvdXMgY2VudHJlcyBvZiBtYWduZXRpYyBpbmZsdWVuY2UsIGFzIG1heSBiZSBzZWVuIGFuZCBmZWx0IGJ5IGFueSAKc2Vuc2l0aXZlIHBlcnNvbiB3aG8gd2lsbCB0YWtlIHRoZSB0cm91YmxlIHRvIGV4YW1pbmUgc29tZSBvZiB0aG9zZSBpbiB0aGUgCkJyaXRpc2ggTXVzZXVtLiAKCgo5NjYuwqDCoMKgwqDCoMKgwqAKQXQgdGhlIHNwb3Qgd2hlcmUgYW55IGdyZWF0IGNyaW1lIGhhcyBiZWVuIGNvbW1pdHRlZCwgb3Igd2hlcmUgdml2aWQgCmVtb3Rpb25zIG9mIGZlYXIsIGFuZ2VyLCBoYXRyZWQgb3IgcmV2ZW5nZSBoYXZlIGJlZW4gaW4gYWN0aW9uLCBhbiBhc3RyYWwgCmltcHJlc3Npb24gaXMgbWFkZSB3aGljaCBpcyBpbW1lZGlhdGVseSBvYnZpb3VzIGluIGl0cyBmdWxsIGhvcnJvciB0byB0aGUgCmNsYWlydm95YW50LCBhbmQgaXMgZnJlcXVlbnRseSBzZW5zZWQgdG8gc29tZSBleHRlbnQgZXZlbiBieSBwZXJzb25zIGluIHdob20gdGhlIApoaWdoZXIgc2Vuc2VzIGFyZSBlbnRpcmVseSB1bmRldmVsb3BlZC4gVGhpcyBpcyB0cnVlIHRvIGEgc3RpbGwgZ3JlYXRlciBleHRlbnQgCm9mIGEgamV3ZWwgd2hpY2ggaGFzIGJlZW4gdGhlIGNhdXNlIG9mIG1hbnkgY3JpbWVzLCBoYXMgYmVlbiBwcmVzZW50IGF0IHRoZW0gYW5kIApoYXMgYWJzb3JiZWQgdGhlIGVmZmVjdCBvZiBhbGwgdGhlIHBhc3Npb25zIHdoaWNoIHByb21wdGVkIHRoZW0uIFN1Y2ggCmEgamV3ZWwgcmV0YWlucyB0aGVzZSBpbXByZXNzaW9ucyB3aXRoIHVuaW1wYWlyZWQgY2xlYXJuZXNzIGZvciB0aG91c2FuZHMgb2YgCnllYXJzLCBhbmQgY29udGludWVzIHRvIHJhZGlhdGUgb3V0IGZyb20gaXRzZWxmIHRoZSB2aWJyYXRpb25zIGFwcHJvcHJpYXRlIHRvIAp0aGVtOyBhbmQgdGhlIHBzeWNob21ldGVyIHNlZXMgYXJvdW5kIGl0IGFsbCB0aGVzZSBwaWN0dXJlcyBvZiBpbmRlc2NyaWJhYmxlIApob3Jyb3IuIFRoZSB3ZWFyZXIgb2YgdGhlIGpld2VsIGZyZXF1ZW50bHkgZG9lcyBub3Qgc2VlIHRoZW0sIGJ1dCBuZXZlcnRoZWxlc3MgCnRoZWlyIHBlcm5pY2lvdXMgZWZmZWN0IGlzIGNvbnN0YW50bHkgZXhlcmNpc2VkIHVwb24gaGVyLiAKCgo5NjcuwqDCoMKgwqDCoMKgwqAKSXQgaXMgbm90IG9ubHkgaW4gY29ubmVjdGlvbiB3aXRoIGdyZWF0IGhpc3RvcmljYWwgZ2VtcyB0aGF0IHRoaXMgCnVucGxlYXNhbnRuZXNzIGV4aXN0cywgZm9yIEkgaGF2ZSBjb21lIGFjcm9zcyBzZXZlcmFsIGluc3RhbmNlcyBpbiB3aGljaCAKb3JkaW5hcnkgc3RvbmVzIGhhdmUgYmVlbiB0aGUgb2NjYXNpb24gb2YgYSB0ZXJyaWJsZSBjcmltZSBhbW9uZyB0aGUgbWluZXJzIHdobyAKZGlzY292ZXJlZCB0aGVtLiBJIGtub3cgb2Ygb25lIHN1Y2gsIGluIHdoaWNoIHRoZSBmaW5kZXIgd2FzIG11cmRlcmVkIGJ5IGFub3RoZXIgCm1hbiwgYnV0IGxpdmVkIGxvbmcgZW5vdWdoIHRvIGF0dGFjaCBhIGZlYXJmdWwgY3Vyc2UgdG8gdGhlIGdlbSBmb3IgdGhlIHNha2Ugb2YgCndoaWNoIGhlIGhhZCBsb3N0IGhpcyBsaWZlLiBUaGlzIGN1cnNlIHdhcyBhY3Rpbmcgc28gZGVmaW5pdGVseSB1cG9uIHZhcmlvdXMgCndlYXJlcnMgb2YgdGhlIGpld2VsIGZpZnR5IHllYXJzIGxhdGVyLCB0aGF0IGl0IHNlZW1lZCB0aGUgc2FmZXN0IGFuZCBiZXN0IApjb3Vyc2UgdG8gdGhyb3cgdGhlIHN0b25lIGludG8gdGhlIHNlYS0tIHdoaWNoIHdhcyBhY2NvcmRpbmdseSBkb25lLiAKCgo5NjguwqDCoMKgwqDCoMKgwqAKVEFMSVNNQU5TIAoKCjk2OS7CoMKgwqDCoMKgwqDCoApJbiBhIGdlbmVyYWwgd2F5LCB0aGVyZWZvcmUsIHRoZSBvY2N1bHRpc3QgYXZvaWRzIGFsbCBqZXdlbGxlcnksIGFuZCBoZSAKY2VydGFpbmx5IG5ldmVyIHdlYXJzIGl0IGZvciB0aGUgc2FrZSBvZiBzaG93LiBBdCB0aGUgc2FtZSB0aW1lIHRoZSBmYWN0IHRoYXQgYSAKcHJlY2lvdXMgc3RvbmUgd2lsbCByZXRhaW4gbWFnbmV0aXNtIHNvIHBlcmZlY3RseSBmb3Igc28gbG9uZyBhIHRpbWUsIGFuZCB3aWxsIApzdG9yZSBzbyBtdWNoIHBvd2VyIGluIHN1Y2ggYSBzbWFsbCBjb21wYXNzLCBtYWtlcyBpdCBhIGNvbnZlbmllbnQgb2JqZWN0IHdoZW4gYSAKdGFsaXNtYW4gaXMgcmVxdWlyZWQgZm9yIGFueSBwdXJwb3NlLiBGb3IgYSB0YWxpc21hbiBpcyBub3QsIGFzIGlzIG9mdGVuIApzdXBwb3NlZCwgYSBtZXJlIHJlbGljIG9mIG1lZGlhZXZhbCBzdXBlcnN0aXRpb247IGl0IG1heSBiZSBhIGRlZmluaXRlIGFuZCB2ZXJ5IAplZmZlY3RpdmUgYWdlbnQgaW4gZGFpbHkgbGlmZS4gSXQgaXMgc29tZSBzbWFsbCBvYmplY3QsIHN0cm9uZ2x5IGNoYXJnZWQgd2l0aCAKbWFnbmV0aXNtIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZSBieSBzb21lb25lIHdobyBrbm93cyBob3cgdG8gZG8gaXQsIGFuZCB3aGVuIApwcm9wZXJseSBtYWRlIGl0IGNvbnRpbnVlcyB0byByYWRpYXRlIHRoaXMgbWFnbmV0aXNtIHdpdGggdW5pbXBhaXJlZCBzdHJlbmd0aCAKZm9yIG1hbnkgeWVhcnMuIFRoZSBwdXJwb3NlcyB0byB3aGljaCBzdWNoIHRoaW5ncyBjYW4gYmUgYXBwbGllZCBhcmUgYWxtb3N0IAppbmZpbml0ZSBpbiBudW1iZXIuIAoKCjk3MC7CoMKgwqDCoMKgwqDCoApGb3IgZXhhbXBsZSwgbWFueSBhIHN0dWRlbnQgYXQgdGhlIGJlZ2lubmluZyBvZiBoaXMgY2FyZWVyIGlzIG11Y2ggCnRyb3VibGVkIGJ5IGltcHVyZSB0aG91Z2h0cy4gTmF0dXJhbGx5IGhlIHNldHMgaGltc2VsZiB0byBzdHJ1Z2dsZSBhZ2FpbnN0IHRoZW0sIAphbmQgbWFpbnRhaW5zIGEgY29uc3RhbnQgd2F0Y2ggYWdhaW5zdCB0aGVpciBhZHZhbmNlOyBidXQgbmV2ZXJ0aGVsZXNzIAp0aG91Z2h0LWZvcm1zIG9mIGFuIG9iamVjdGlvbmFibGUgbmF0dXJlIGFyZSBudW1lcm91cyBhbmQgaW5zaWRpb3VzLCBhbmQgCnNvbWV0aW1lcyBvbmUgb2YgdGhlbSBjb250cml2ZXMgdG8gb2J0YWluIGEgbG9kZ21lbnQgaW4gaGlzIG1pbmQgYW5kIGNhdXNlcyBoaW0gCm11Y2ggdHJvdWJsZSBiZWZvcmUgYmUgY2FuIGZpbmFsbHkgc2hha2UgaXQgb2ZmLiBIZSBtYXkgcGVyaGFwcyBoYXZlIGJlZW4gaW4gdGhlIApoYWJpdCBvZiB5aWVsZGluZyBoaW1zZWxmIHRvIHN1Y2ggdGhvdWdodHMgaW4gdGhlIHBhc3Qgd2l0aG91dCByZWFsaXNpbmcgdGhlIApldmlsIG9mIGl0LCBhbmQgaWYgdGhhdCBpcyBzbywgaGlzIHRob3VnaHQgaGFzIGFjcXVpcmVkIGEgbW9tZW50dW0gaW4gdGhhdCAKZGlyZWN0aW9uIHdoaWNoIGlzIG5vdCBlYXN5IHRvIG92ZXJjb21lLiBBIHRhbGlzbWFuLCBzdHJvbmdseSBjaGFyZ2VkIHdpdGggdGhlIApwb3dlcmZ1bCBtYWduZXRpc20gb2YgdGhvdWdodHMgb2YgcHVyaXR5LCBtYXkgYmUgYW4gaW52YWx1YWJsZSBoZWxwIHRvIGhpbSBpbiAKaGlzIGVmZm9ydHMuIAoKCjk3MS7CoMKgwqDCoMKgwqDCoApUaGUgcmF0aW9uYWxlIG9mIGl0cyBhY3Rpb24gaXMgbm90IGRpZmZpY3VsdCB0byB1bmRlcnN0YW5kLiBBbiBpbXB1cmUgCnRob3VnaHQgZXhwcmVzc2VzIGl0c2VsZiBhcyBhIGNlcnRhaW4gZGVmaW5pdGUgc2V0IG9mIHVuZHVsYXRpb25zIGluIHRoZSBhc3RyYWwgCmFuZCBsb3dlciBtZW50YWwgYm9kaWVzLCBhbmQgaXQgY2FuIGZpbmQgZW50cmFuY2UgaW50byBhIG1hbicgcyB2ZWhpY2xlcyBvbmx5IAp3aGVuIHRoZXkgYXJlIGVpdGhlciBjb21wYXJhdGl2ZWx5IGF0IHJlc3Qgb3IgdmlicmF0aW5nIHNvIGZlZWJseSB0aGF0IGl0cyAKaW1wYWN0IGNhbiByZWFkaWx5IG92ZXJwb3dlciB0aGUgZXhpc3RpbmcgcmF0ZSBvZiBtb3Rpb24sIGFuZCB0YWtlIGl0cyBwbGFjZS4gClRoZSB0YWxpc21hbiBpcyBoZWF2aWx5IGNoYXJnZWQgd2l0aCBhbiBleGFjdGx5IGNvbnRyYXJ5IHJhdGUgb2Ygb3NjaWxsYXRpb24sIAphbmQgdGhlIHR3byBjYW5ub3QgY28tZXhpc3QuIE9uZSBvZiB0aGVtIG11c3Qgb3ZlcnBvd2VyIHRoZSBvdGhlciBhbmQgYnJpbmcgaXQgCmludG8gaGFybW9ueSB3aXRoIGl0c2VsZi4gVGhlIGltcHVyZSB0aG91Z2h0IGhhcyBwcm9iYWJseSBiZWVuIG1hZGUgYnkgc29tZSAKY2FzdWFsIHBlcnNvbiwgbm90IHVzdWFsbHkgd2l0aCBhbnkgZGVmaW5pdGUgaW50ZW50OyBpdCBpcyBnZW5lcmFsbHkgc2ltcGx5IGEgCnN1Z2dlc3Rpb24gb3IgcmVtaW5pc2NlbmNlIG9mIGxvd2VyIHBhc3Npb25zLiBJdCBpcyBub3QgdGhlcmVmb3JlIGEgdGhpbmcgb2YgCmdyZWF0IHBvd2VyIGluIGl0c2VsZjsgYnV0IGl0IGlzIGxpa2VseSB0byBwcm9kdWNlIGFuIGVmZmVjdCBxdWl0ZSBvdXQgb2YgCnByb3BvcnRpb24gdG8gaXRzIGludHJpbnNpYyBzdHJlbmd0aCwgYmVjYXVzZSBvZiB0aGUgcmVhZGluZXNzIHdpdGggd2hpY2ggdGhlIAphdmVyYWdlIHBlcnNvbiBhY2NlcHRzIGl0IGFuZCByZXNwb25kcyB0byBpdC4gCgoKOTcyLsKgwqDCoMKgwqDCoMKgClRoZSB0YWxpc21hbiwgb24gdGhlIG90aGVyIGhhbmQsIGhhcyBiZWVuIGludGVudGlvbmFsbHkgY2hhcmdlZCBmb3IgYSAKZGVmaW5pdGUgcHVycG9zZSBieSBzb21lIG9uZSB3aG8ga25vd3MgaG93IHRvIHRoaW5rOyBhbmQgdGhpcyBpcyBhIG1hdHRlciBpbiAKd2hpY2ggZGVmaW5pdGUgdHJhaW5pbmcgbWFrZXMgc28gbXVjaCBkaWZmZXJlbmNlIHRoYXQgdGhlIGxpZ2h0ZXN0IHRob3VnaHQgb2YgYSAKbWFuIHdobyBoYXMgbGVhcm50IGhvdyB0byB0aGluayBpcyBmYXIgbW9yZSBwb3dlcmZ1bCB0aGFuIGEgd2hvbGUgZGF5JyBzIApkZXN1bHRvcnkgbXVzaW5ncyBvbiB0aGUgcGFydCBvZiBhbiBvcmRpbmFyeSBtYW4uIFNvLCB3aGVuIHRoZSB0d28gc3RyZWFtcyBvZiAKdGhvdWdodCBjb21lIGludG8gY29udGFjdCwgdGhlcmUgaXMgbm90IHRoZSBzbGlnaHRlc3QgZG91YnQgYXMgdG8gd2hpY2ggd2lsbCAKdmFucXVpc2ggdGhlIG90aGVyLiBJZiB3ZSBjYW4gc3VwcG9zZSB0aGF0IHRoZSB3ZWFyZXIgb2YgdGhlIGFtdWxldCBmb3Jnb3QgaGlzIApnb29kIHJlc29sdXRpb25zLCBhbmQgYWN0dWFsbHkgd2lzaGVkIGZvciBhIHRpbWUgZm9yIHRoZSBpbXB1cmUgdGhvdWdodCwgbm8gCmRvdWJ0IGhlIGNvdWxkIGF0dHJhY3QgaXQgaW4gc3BpdGUgb2YgdGhlIHRhbGlzbWFuLCBidXQgaGUgd291bGQgYmUgY29uc2Npb3VzIAphbGwgdGhlIHRpbWUgb2YgZ3JlYXQgZGlzY29tZm9ydCBhcmlzaW5nIGZyb20gdGhlIGRpc2NvcmQgYmV0d2VlbiB0aGUgdHdvIHNldHMgCm9mIHZpYnJhdGlvbnMuIAoKCjk3My7CoMKgwqDCoMKgwqDCoApJbiBtb3N0IGNhc2VzIHRoZSBtYW4gd2hvIGlzIHJlYWxseSB0cnlpbmcgdG8gZG8gYmV0dGVyIGZhbGxzIG9ubHkgCmJlY2F1c2UgaGUgaXMgdGFrZW4gb2ZmIGhpcyBndWFyZC4gVGhlIGltcHVyZSB0aG91Z2h0IGNyZWVwcyBpbiBpbnNpZGlvdXNseSBhbmQgCmhhcyBzZWl6ZWQgdXBvbiBoaW0gYmVmb3JlIGhlIGlzIGF3YXJlIG9mIGl0LCBhbmQgdGhlbiBoZSBxdWlja2x5IHJlYWNoZXMgdGhlIApjb25kaXRpb24gaW4gd2hpY2ggZm9yIHRoZSBtb21lbnQgaGUgZG9lcyBub3QgZXZlbiB3aXNoIHRvIHJlc2lzdC4gVGhlIHZhbHVlIG9mIAp0aGUgdGFsaXNtYW4gaXMgdGhhdCBpdCBnaXZlcyBoaW0gdGltZSB0byByZWNvbGxlY3QgaGltc2VsZi4gVGhlIGRpc2hhcm1vbnkgCmJldHdlZW4gaXRzIHVuZHVsYXRpb25zIGFuZCB0aG9zZSBvZiB0aGUgd2FuZGVyaW5nIHRob3VnaHQsIGNhbm5vdCBidXQgYXR0cmFjdCAKdGhlIG1hbicgcyBhdHRlbnRpb24sIGFuZCB0aHVzIHdoaWxlIGhlIHdlYXJzIGl0IGhlIGNhbm5vdCBiZSB0YWtlbiB1bmF3YXJlcywgc28gCnRoYXQgaWYgaGUgZmFsbHMgaGUgZmFsbHMgZGVsaWJlcmF0ZWx5LiAKCgo5NzQuwqDCoMKgwqDCoMKgwqAKQWdhaW4sIHNvbWUgcGVvcGxlIHN1ZmZlciBtdWNoIGZyb20gYXBwYXJlbnRseSBjYXVzZWxlc3MgZmVhci4gT2Z0ZW4gdGhleSAKYXJlIHF1aXRlIHVuYWJsZSB0byBnaXZlIGFueSByZWFzb24gZm9yIHRoZWlyIGZlZWxpbmdzOyBidXQgYXQgY2VydGFpbiB0aW1lcywgCmFuZCBlc3BlY2lhbGx5IHdoZW4gYWxvbmUgYXQgbmlnaHQsIHRoZXkgYXJlIGxpYWJsZSB0byBiZSBhdHRhY2tlZCBieSBleHRyZW1lIApuZXJ2b3VzbmVzcywgd2hpY2ggbWF5IGdyYWR1YWxseSBpbmNyZWFzZSB0byBwb3NpdGl2ZSB0ZXJyb3IuIFRoZXJlIG1heSBiZSAKdmFyaW91cyBleHBsYW5hdGlvbnMgZm9yIHRoaXMuIFBlcmhhcHMgdGhlIGNvbW1vbmVzdCBpcyB0aGUgcHJlc2VuY2Ugb2Ygc29tZSAKaG9zdGlsZSBhc3RyYWwgZW50aXR5IHdobyBpcyBwZXJzZWN1dGluZyB0aGUgdmljdGltLS0gc29tZXRpbWVzIGluIHRoZSBob3BlIG9mIApvYnRhaW5pbmcgdGhyb3VnaCBoaW0gc29tZSBzZW5zYXRpb25zIHdoaWNoIGhlIGRlc2lyZXMsIHNvbWV0aW1lcyBpbiB0aGUgCmVuZGVhdm91ciB0byBvYnRhaW4gY29udHJvbCBvdmVyIGhpbSBhbmQgb2JzZXNzIGhpbSwgc29tZXRpbWVzIGZvciBzaGVlciAKbWlzY2hpZWYgYW5kIGltcGlzaCBsb3ZlIG9mIGRlbW9uc3RyYXRpbmcgaGlzIHBvd2VyIG92ZXIgYSBodW1hbiBiZWluZy4gSGVyZSAKYWdhaW4gaXMgYSBjYXNlIGluIHdoaWNoIHRoZSBtZWRpYWV2YWwgcmVtZWR5IGhhcyBhIGRpc3RpbmN0IHByYWN0aWNhbCB2YWx1ZS4gCk5hdHVyYWxseSwgdGhlIHRhbGlzbWFuIGFnYWluc3QgaW1wdXJpdHkgd291bGQgbm90IGF2YWlsIGluIHRoaXMgY2FzZSwgZm9yIHF1aXRlIAphIGRpZmZlcmVudCBzb3J0IG9mIG1vdGlvbiBpcyByZXF1aXJlZC4gV2hhdCBpcyB3YW50ZWQgaW4gdGhpcyBjYXNlIGlzIGEgY2VudHJlIApzdHJvbmdseSBjaGFyZ2VkIHdpdGggdmlicmF0aW9ucyBleHByZXNzaXZlIG9mIGNvdXJhZ2UgYW5kIHNlbGYtcmVsaWFuY2UtLSBvciwgCmlmIHRoZSB3ZWFyZXIgaXMgb2YgdGhlIGRldm90aW9uYWwgdHlwZSwgd2l0aCB0aG91Z2h0cyBvZiB0aGUgcHJvdGVjdGl2ZSBwb3dlciAKb2YgaGlzIHNwZWNpYWwgZGVpdHkuIAoKCjk3NS7CoMKgwqDCoMKgwqDCoApGb3IgYW4gYW11bGV0IGhhcyBhIGRvdWJsZSBhY3Rpb24uIE5vdCBvbmx5IGRvZXMgaXQgb3BlcmF0ZSBkaXJlY3RseSBieSAKbWVhbnMgb2YgdGhlIHdhdmVzIHdoaWNoIGl0IHJhZGlhdGVzLCBhcyB3ZSBoYXZlIGp1c3QgZGVzY3JpYmVkIGluIHRoZSBjYXNlIG9mIAppbXB1cml0eSwgYnV0IGFsc28gdGhlIGtub3dsZWRnZSBvZiBpdHMgcHJlc2VuY2UgdXN1YWxseSBhd2FrZW5zIHRoZSBmYWl0aCBhbmQgCmNvdXJhZ2Ugb2YgdGhlIHdlYXJlci4gSW4gdGhlIGNhc2Ugb2YgYSB0YWxpc21hbiBhZ2FpbnN0IGZlYXIsIHN1Y2ggYXMgd2UgYXJlIApub3cgY29uc2lkZXJpbmcsIHRoZSB0d28gbGluZXMgb2YgYWN0aW9uIHdpbGwgYmUgY2xlYXJseSBtYXJrZWQuIENvdXJhZ2UgCmV4cHJlc3NlcyBpdHNlbGYgaW4gdGhlIG1lbnRhbCBhbmQgYXN0cmFsIGJvZGllcyBieSB0aGUgc3RyZW5ndGggYW5kIHN0ZWFkaW5lc3MgCm9mIHRoZWlyIHN0cmlhdGlvbnMsIGFuZCBieSB0aGUgY2FsbSwgc3RlYWRmYXN0IHNoaW5pbmcgb2YgdGhlIGNvbG91cnMgCmluZGljYXRpbmcgdGhlIHZhcmlvdXMgaGlnaGVyIHF1YWxpdGllcy4gV2hlbiBmZWFyIG92ZXJwb3dlcnMgYSBwZXJzb24gYWxsIHRoZXNlIApjb2xvdXJzIGFyZSBkaW1tZWQgYW5kIG92ZXJ3aGVsbWVkIGJ5IGEgbGl2aWQgZ3JleSBtaXN0LCBhbmQgdGhlIHN0cmlhdGlvbnMgYXJlIApsb3N0IGluIGEgcXVpdmVyaW5nIG1hc3Mgb2YgcGFscGl0YXRpbmcgamVsbHk7IHRoZSBtYW4gaGFzIGZvciB0aGUgdGltZSBxdWl0ZSAKbG9zdCB0aGUgcG93ZXIgb2YgZ3VpZGluZyBhbmQgY29udHJvbGxpbmcgaGlzIHZlaGljbGVzLiAKCgo5NzYuwqDCoMKgwqDCoMKgwqAKVGhlIHZpYnJhdGlvbnMgb2Ygc3RyZW5ndGggYW5kIGNvdXJhZ2Ugc3RlYWRpbHkgcmFkaWF0aW5nIGZyb20gdGhlIAp0YWxpc21hbiBhcmUgcXVpdGUgdW5hZmZlY3RlZCBieSB0aGUgZmVlbGluZ3Mgb2YgdGhlIHdlYXJlciwgYW5kIHdoZW4gdGhlIGZpcnN0IAp0cmVtYmxpbmdzIG9mIGZlYXIgYmVnaW4gdG8gbWFuaWZlc3QgdGhlbXNlbHZlcyB0aGV5IGZpbmQgYSBkaWZmaWN1bHR5IGluIHRoZWlyIAp3YXkuIElmIHVub3Bwb3NlZCwgdGhleSB3b3VsZCBzdGVhZGlseSBpbmNyZWFzZSwgZWFjaCBhdWdtZW50aW5nIGFuZCAKc3RyZW5ndGhlbmluZyB0aGUgb3RoZXIgdW50aWwgdGhlaXIgcG93ZXIgYmVjYW1lIGlycmVzaXN0aWJsZS4gV2hhdCB0aGUgdGFsaXNtYW4gCmRvZXMgaXMgdG8gcHJldmVudCB0aGVtIGZyb20gcmVhY2hpbmcgdGhpcyBjb25kaXRpb24gb2YgaXJyZXNpc3RpYmxlIHZlbG9jaXR5LiAKSXQgZGVhbHMgd2l0aCB0aGVtIGF0IHRoZSBjb21tZW5jZW1lbnQsIHdoaWxlIHRoZXkgYXJlIHN0aWxsIHdlYWsuIFRoZSAKcmVzaXN0YW5jZSB3aGljaCBpdCBvcHBvc2VzIHRvIHRoZW0gaXMgcHJlY2lzZWx5IHRoZSBzYW1lIGluIGtpbmQgYXMgdGhhdCB3aGljaCAKYSBneXJvc2NvcGUgb3Bwb3NlcyB0byBhbnkgZWZmb3J0IHRvIHR1cm4gaXQgYXNpZGUgZnJvbSBpdHMgbGluZS4gSXQgaXMgc28gCmRldGVybWluZWRseSBzZXQgaW4gbW90aW9uIGluIG9uZSBkaXJlY3Rpb24gdGhhdCBpdCB3aWxsIHNvb25lciBmbHkgdG8gcGllY2VzIAp0aGFuIGFsbG93IGl0c2VsZiB0byBiZSB0dXJuZWQgaW50byBhbnkgb3RoZXIuIFN1ZGRlbmx5IHRvIGJyaW5nIHN1Y2ggYSBwb3dlciBhcyAKdGhpcyBpbnRvIGNvbmZsaWN0IHdpdGggdW5yZWFzb25pbmcgcGFuaWMgd291bGQgcHJvYmFibHkgcmVzdWx0IGluIHRoZSBjb21wbGV0ZSAKc2hhdHRlcmluZyBvZiB0aGUgYXN0cmFsIGJvZHkgY29uY2VybmVkOyBidXQgaWYgdGhlIGd5cm9zY29waWMgZm9yY2Ugb2YgdGhlIAp0YWxpc21hbiBpcyBhbHJlYWR5IHdvcmtpbmcgYmVmb3JlIHRoZSBhbGFybSBpcyBmZWx0LCBpdHMgZGV0ZXJtaW5lZCBwZXJzaXN0ZW5jZSAKYWxvbmcgaXRzIG93biBsaW5lcyBjaGVja3MgdGhlIGZpcnN0IGJlZ2lubmluZ3Mgb2YgZmVhciwgYW5kIHNvIG1ha2VzIGl0IAppbXBvc3NpYmxlIGZvciB0aGUgcGVyc29uIGV2ZXIgdG8gcmVhY2ggdGhlIGxhdGVyIHN0YWdlcyBvZiBwYW5pYyB0ZXJyb3IuIAoKCjk3Ny7CoMKgwqDCoMKgwqDCoApUaGF0IGlzIGl0cyBkaXJlY3Qgb3BlcmF0aW9uOyBidXQgaXQgd29ya3MgYWxzbyBpbmRpcmVjdGx5IHVwb24gdGhlIG1pbmQgCm9mIHRoZSB3ZWFyZXIuIFdoZW4gaGUgZmVlbHMgdGhlIGZpcnN0IGJlZ2lubmluZ3Mgb2YgZmVhciBzdGlycmluZyB3aXRoaW4gaGltIGhlIApwcm9iYWJseSByZWNvbGxlY3RzIHRoZSBhbXVsZXQgYW5kIGNsdXRjaGVzIGF0IGl0LCBhbmQgdGhlbiB0aGVyZSBhcmlzZXMgd2l0aGluIApoaW0gdGhlIGZlZWxpbmc6IO+/vVdoeSBzaG91bGQgSSBmZWFyIHNvIGxvbmcgYXMgSSBoYXZlIHdpdGggbWUgdGhpcyBzdHJvbmcgY2VudHJlIApvZiBtYWduZXRpc20/77+9IEFuZCBzbywgaW5zdGVhZCBvZiB5aWVsZGluZyB0byB0aGUgdmlicmF0aW9ucyBhbmQgYWxsb3dpbmcgdGhlbSAKdG8gbGVuZ3RoZW4gdGhlbXNlbHZlcyB1bnRpbCB0aGV5IGJlY29tZSB1bm1hbmFnZWFibGUsIGhlIGNhbGxzIHVwIHRoZSByZXNlcnZlIApzdHJlbmd0aCBvZiBoaXMgb3duIHdpbGwgYW5kIGFzc2VydHMgaGltc2VsZiBhcyBtYXN0ZXIgb2YgaGlzIHZlaGljbGVzLCB3aGljaCBpcyAKaW4gdHJ1dGggYWxsIHRoYXQgaXMgbmVjZXNzYXJ5LiAKCgo5NzguwqDCoMKgwqDCoMKgwqAKVGhlcmUgaXMgYSB0aGlyZCBwb3NzaWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggYSB0YWxpc21hbiwgd2hpY2ggaXMgaW4gCnNvbWUgY2FzZXMgZXZlbiBtb3JlIHBvd2VyZnVsIHRoYW4gdGhlIG90aGVyIHR3by4gVGhlIG9iamVjdCwgd2hhdGV2ZXIgaXQgbWF5IApiZSwgaGFzIGJlZW4gc3Ryb25nbHkgbWFnbmV0aXNlZCBieSBzb21lIGluZGl2aWR1YWwsIGJ5IHRoZSBoeXBvdGhlc2lzIGEgcGVyc29uIApvZiBwb3dlciBhbmQgZGV2ZWxvcG1lbnQsIGFuZCB0aGVyZWZvcmUgYWxzbyBwcm9iYWJseSBoaWdobHkgc2Vuc2l0aXZlLiBUaGF0IApiZWluZyBzbywgdGhlIHRhbGlzbWFuIGlzIGEgbGluayB3aXRoIGl0cyBjcmVhdG9yLCBhbmQgdGhyb3VnaCBpdCBoaXMgYXR0ZW50aW9uIAptYXkgYmUgYXR0cmFjdGVkLiBVbmRlciBvcmRpbmFyeSBjb25kaXRpb25zIGl0cyBjb25uZWN0aW9uIHdpdGggaXRzIG9yaWdpbmF0b3IgCmlzIG9mIHRoZSBzbGlnaHRlc3QsIGJ1dCB3aGVuIHRoZSB3ZWFyZXIgaXMgaW4gZGVzcGVyYXRlIGNpcmN1bXN0YW5jZXMgaGUgCnNvbWV0aW1lcyBhY3R1YWxseSBjYWxscyB1cG9uIHRoZSBtYWtlciwgbXVjaCBpbiB0aGUgd2F5IGluIHdoaWNoIHRoZSBtZWRpYWV2YWwgCmRldm90ZWUgd2hlbiBpbiBkaWZmaWN1bHRpZXMgaW52b2tlZCB0aGUgYXNzaXN0YW5jZSBvZiBoaXMgcGF0cm9uIHNhaW50OyBhbmQgCnRoYXQgY2FsbCB3aWxsIHVucXVlc3Rpb25hYmx5IHJlYWNoIHRoZSBtYWtlciBvZiB0aGUgYW11bGV0IGFuZCBldm9rZSBhIHJlc3BvbnNlIApmcm9tIGhpbS4gSWYgaGUgaXMgc3RpbGwgbGl2aW5nIGluIHRoZSBwaHlzaWNhbCB3b3JsZCwgaGUgbWF5IG9yIG1heSBub3QgYmUgCmNvbnNjaW91cyBvZiB0aGUgYXBwZWFsIGluIGhpcyBwaHlzaWNhbCBicmFpbjsgYnV0IGluIGFueSBjYXNlIGhpcyBlZ28gd2lsbCBiZSAKY29uc2Npb3VzLCBhbmQgd2lsbCByZXNwb25kIGJ5IHJlaW5mb3JjaW5nIHRoZSB2aWJyYXRpb24gb2YgdGhlIHRhbGlzbWFuIGJ5IGEgCnN0cm9uZyB3YXZlIG9mIGhpcyBvd24gbW9yZSBwb3dlcmZ1bCB0aG91Z2h0LCBiZWFyaW5nIHdpdGggaXQgc3RyZW5ndGggYW5kIApjb21mb3J0LiAKCgo5NzkuwqDCoMKgwqDCoMKgwqAKTWFueSBpZ25vcmFudCBtZW4gd291bGQgc2NvZmYgYXQgc3VjaCBhbiBpZGVhIGFzIHJlbGljIG9mIG1lZGlhZXZhbCAKc3VwZXJzdGl0aW9uLCB5ZXQgaXQgaXMgYW4gYWN0dWFsIHNjaWVudGlmaWMgZmFjdCB3aGljaCBoYXMgYmVlbiBkZW1vbnN0cmF0ZWQgb24gCmh1bmRyZWRzIG9mIG9jY2FzaW9ucy4gU28gZmFyIGFzIGl0cyBkaXJlY3QgYWN0aW9uIGdvZXMsIGEgdGFsaXNtYW4gd2lsbCB3b3JrIApvbmx5IGluIHRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggaXQgaXMgbWFkZSB0byB3b3JrOyBidXQgaXRzIGluZGlyZWN0IGFjdGlvbiBvbiAKdGhlIGZhaXRoIG9mIHRoZSBwb3NzZXNzb3IgbWF5IHNvbWV0aW1lcyB0YWtlIHVuZXhwZWN0ZWQgZm9ybXMuIEkgcmVtZW1iZXIgb25jZSAKbWFraW5nIGEgY2hhcm0gZm9yIGEgY2VydGFpbiBub2JsZSBsYWR5LCBpbiBvcmRlciB0byBwcm90ZWN0IGhlciBhZ2FpbnN0IHNwYXNtcyAKb2YgZXh0cmVtZSBuZXJ2b3VzbmVzcyBhbmQgZXZlbiBwb3NpdGl2ZSBmZWFyIHdoaWNoIG9jY2FzaW9uYWxseSBzd2VwdCBvdmVyIGhlciAKd2hlbiBhbG9uZSBhdCBuaWdodC4gU2hlIHRvbGQgbWUgYWZ0ZXJ3YXJkcyB0aGF0IHRoaXMgYW11bGV0IGhhZCBiZWVuIG9mIHRoZSAKZ3JlYXRlc3QgYXNzaXN0YW5jZSB0byBoZXIgaW4gYW4gZW1lcmdlbmN5IHdoaWNoIEkgY2VydGFpbmx5IGRpZCBub3QgY29udGVtcGxhdGUgCndoZW4gSSBtYWRlIGl0LiAKCgo5ODAuwqDCoMKgwqDCoMKgwqAKSXQgYXBwZWFycyB0aGF0IG9uIGEgY2VydGFpbiBvY2Nhc2lvbiBzaGUgd2FzIGRyaXZpbmcgYW4gZXhjZXB0aW9uYWxseSAKc3Bpcml0ZWQgaG9yc2UgKEkgYmVsaWV2ZSB0aGF0IGhlciBodXNiYW5kIG1hZGUgaXQgYSBzb3J0IG9mIGJvYXN0IHRoYXQgaGUgbmV2ZXIgCnVzZWQgaG9yc2VzIHdoaWNoIGFueWJvZHkgZWxzZSBjb3VsZCBkcml2ZSkgaW4gYSBkb2ctY2FydCwgdGhyb3VnaCBhIGZvcmVzdC4gVGhlIApob3JzZSB0b29rIGZyaWdodCBhdCBzb21ldGhpbmcgb3Igb3RoZXIsIGdvdCB0aGUgYml0IGJldHdlZW4gaXRzIHRlZXRoIGFuZCAKZGFzaGVkIG1hZGx5IG9mZiB0aGUgcm9hZCwgYW5kIHN0YXJ0ZWQgYXQgYSB3aWxkIGdhbGxvcCBhbW9uZyB0aGUgdHJlZSB0cnVua3MuIApUaGUgZ3Jvb20gb24gdGhlIGJhY2sgc2VhdCB3YXMgc28gY2VydGFpbiB0aGF0IHRoZXkgd2VyZSBhbGwgZGVzdGluZWQgdG8gCmltbWVkaWF0ZSBkZWF0aCB0aGF0IGhlIHRocmV3IGhpbXNlbGYgb2ZmIGFzIGJlc3QgaGUgY291bGQsIGFuZCB3YXMgc29yZWx5IAppbmp1cmVkIGJ5IHRoZSBmYWxsOyBidXQgdGhlIGxhZHkgZGVjbGFyZXMgdGhhdCBoZXIgdGhvdWdodCBhdCBvbmNlIGZsZXcgdG8gdGhlIApjaGFybSB3aGljaCBzaGUgd2FzIHRoZW4gd2VhcmluZywgYW5kIHNoZSBzYXlzIHRoYXQgc2hlIGtuZXcgYWJzb2x1dGVseSB0aGF0IHNoZSAKY291bGQgbm90IGJlIGtpbGxlZCB3aGlsZSwgYXMgc2hlIGV4cHJlc3NlcyBpdCwgdW5kZXIgaXRzIHByb3RlY3Rpb24uIFRoaXMgdXR0ZXIgCmNlcnRhaW50eSBrZXB0IGhlciBwZXJmZWN0bHkgY29vbCBhbmQgY29sbGVjdGVkLCBhbmQgc2hlIHN0ZWVyZWQgdGhhdCBkb2ctY2FydCAKdGhyb3VnaCB0aGUgZm9yZXN0IHdpdGggY29uc3VtbWF0ZSBza2lsbC4gU2hlIGRlY2xhcmVzIHRoYXQgb24gdGhlIHdob2xlIHNoZSB3YXMgCmNlcnRhaW5seSBpbiB0aGUgYWlyIG1vcmUgb2Z0ZW4gdGhhbiBvbiB0aGUgZ3JvdW5kIGFzIHRoZSB3aGVlbHMgYm91bmRlZCBvdmVyIApyb290cyBhbmQgY3Jhc2hlZCB0aHJvdWdoIHRoZSBidXNoZXMuIEJ1dCBuZXZlcnRoZWxlc3Mgc2hlIGhlbGQgb24gYnJhdmVseSB1bnRpbCAKdGhlIGhvcnNlIGJlY2FtZSB0aXJlZCwgYW5kIHNoZSB3YXMgYWJsZSB0byByZWdhaW4gY29udHJvbCBvZiBpdC4gU2hlIHRoYW5rZWQgbWUgCmVudGh1c2lhc3RpY2FsbHkgZm9yIHNhdmluZyBoZXIgbGlmZSBieSBtZWFucyBvZiB0aGUgY2hhcm07IGJ1dCB0aGUgdHJ1dGggaXMgCnRoYXQgaXQgd2FzIG5vdCB0aGUgZGlyZWN0IGFjdGlvbiBvZiB0aGUgdGFsaXNtYW4sIGJ1dCB0aGUgc3RyZW5ndGggb2YgaGVyIGZhaXRoIAppbiBpdCwgd2hpY2ggZW5hYmxlZCBoZXIgdG8gZ2FpbiBzbyBzcGxlbmRpZCBhIHZpY3RvcnkuIFRoYXQgd2FzIHVuZG91YnRlZGx5IHRoZSAKbWFpbiBmYWN0b3I7IHRoZXJlIG1heSBoYXZlIGJlZW4gYSBjZXJ0YWluIGFtb3VudCBvZiBkaXJlY3QgYWN0aW9uIGFsc28sIGJlY2F1c2UgCnRoZSBzdGlsbGluZyBlZmZlY3Qgb2YgdGhlIHN0cm9uZyB2aWJyYXRpb24gb2YgdGhlIHRhbGlzbWFuIHdvdWxkIGNhdGNoIGFueSAKZGF3bmluZyBmZWVsaW5nIG9mIGZlYXIgYW5kIGNhbG0gaXQsIHRob3VnaCBJIGhhZCBwcmVwYXJlZCBpdCB0byBkZWFsIHJhdGhlciAKd2l0aCBmaXJzdCBzeW1wdG9tcyBncmFkdWFsbHkgYXJpc2luZyB0aGFuIHdpdGggc28gc3VkZGVuIGFuIGVtZXJnZW5jeSBhcyB0aGF0LgoKCjk4MS7CoMKgwqDCoMKgwqDCoApUaGVyZSBhcmUgdmFyaW91cyBhcnRpY2xlcyB3aGljaCBhcmUgdG8gYSBsYXJnZSBleHRlbnQgbmF0dXJhbCBhbXVsZXRzLiAKQWxsIHByZWNpb3VzIHN0b25lcyBtYXkgYmUgc2FpZCB0byBiZWxvbmcgdG8gdGhpcyBjYXRlZ29yeSwgZm9yIGVhY2ggaGFzIGEgCmRpc3RpbmN0IGluZmx1ZW5jZSB3aGljaCBjYW4gYmUgdXRpbGlzZWQgaW4gdHdvIHdheXMuIEZpcnN0LCB0aGUgaW5mbHVlbmNlIApuZWNlc3NhcmlseSBhdHRyYWN0cyB0byBpdCBlbGVtZW50YWwgZXNzZW5jZSBvZiBhIGNlcnRhaW4ga2luZCwgYW5kIGFsc28gYWxsIApzdWNoIHRob3VnaHRzIGFuZCBkZXNpcmVzIGFzIG5hdHVyYWxseSBleHByZXNzIHRoZW1zZWx2ZXMgdGhyb3VnaCB0aGF0IGVzc2VuY2U7IAphbmQgc2Vjb25kbHksIHRoZSBmYWN0IHRoYXQgaXQgaGFzIHRoZXNlIG5hdHVyYWwgcGVjdWxpYXJpdGllcyBtYWtlcyBpdCBhIGZpdCAKdmVoaWNsZSBmb3IgbWFnbmV0aXNtIHdoaWNoIGlzIGludGVuZGVkIHRvIHdvcmsgYWxvbmcgdGhlIHNhbWUgbGluZSBhcyB0aG9zZSAKdGhvdWdodHMgb3IgZW1vdGlvbnMuIFN1cHBvc2UsIGZvciBleGFtcGxlLCBpdCBpcyBkZXNpcmVkIHRvIGRyaXZlIGF3YXkgaW1wdXJlIAp0aG91Z2h0LiBJbXB1cmUgdGhvdWdodCBtZWFucyB1c3VhbGx5IGEgY29tcGxleCBzZXQgb2YgdmlicmF0aW9ucywgYnV0IHNldCBvbiAKdGhlIHdob2xlIGluIGEgY2VydGFpbiBkZWZpbml0ZSBrZXkuIEluIG9yZGVyIHRvIHJlc2lzdCB0aGVtIGEgc3RvbmUgc2hvdWxkIGJlIApjaG9zZW4gd2hvc2UgbmF0dXJhbCB1bmR1bGF0aW9ucyBhcmUgaW5oYXJtb25pb3VzIHdpdGggdGhhdCBrZXksIHNvIHRoYXQgdGhleSAKbWF5IG9mZmVyIHRvIHRoZSBpbXB1cmUgaW1wdWxzZXMgdGhlIGdyZWF0ZXN0IHBvc3NpYmxlIG9ic3RhY2xlLiBJZiBpdCBpcyAKaW50ZW5kZWQgdG8gbWFrZSBhIHRhbGlzbWFuIGFnYWluc3QgdGhvc2UgaW1wdXJlIHRob3VnaHRzLCBhIHN0b25lIHdoaWNoIApuYXR1cmFsbHkgb2ZmZXJzIHJlc2lzdGFuY2UgdG8gdGhlbSBpcyB0aGUgdmVoaWNsZSB3aGljaCBjYW4gbW9zdCBlYXNpbHkgYmUgCmxvYWRlZCB3aXRoIHRoZSBvcHBvc2luZyBpbmZsdWVuY2UuIAoKCjk4Mi7CoMKgwqDCoMKgwqDCoApUaGUgdmlicmF0aW9ucyBvZiB0aGUgcGFydGljbGVzIG9mIHRoZSBzdG9uZSBhcmUgb24gdGhlIHBoeXNpY2FsIGxldmVsLCAKd2hpbGUgdGhvc2Ugb2YgdGhlIGVtb3Rpb25zIGFyZSBvbiB0aGUgYXN0cmFsIGxldmVsLCBzZXZlcmFsIG9jdGF2ZXMgaGlnaGVyOyBidXQgCmEgc3RvbmUsIHRoZSBwYXJ0aWNsZXMgb2Ygd2hpY2ggbW92ZSBuYXR1cmFsbHkgb24gdGhlIHBoeXNpY2FsIHBsYW5lIGluIGEga2V5IAp3aGljaCBpcyBpZGVudGljYWwgYXQgdGhpcyBsZXZlbCB3aXRoIHRoZSBrZXkgb2YgcHVyaXR5IG9uIGhpZ2hlciBsZXZlbHMsIHdpbGwgCml0c2VsZiwgZXZlbiB3aXRob3V0IG1hZ25ldGlzYXRpb24sIG9wZXJhdGUgYXMgYSBjaGVjayB1cG9uIGltcHVyZSB0aG91Z2h0IG9yIApmZWVsaW5nIGJ5IHZpcnR1ZSBvZiBpdHMgb3ZlcnRvbmVzOyBhbmQgZnVydGhlcm1vcmUsIGl0IGNhbiBiZSByZWFkaWx5IGNoYXJnZWQgCmF0IGFzdHJhbCBvciBtZW50YWwgbGV2ZWxzIHdpdGggdGhlIHVuZHVsYXRpb25zIG9mIHB1cmUgdGhvdWdodCBvciBmZWVsaW5nIHdoaWNoIAphcmUgc2V0IGluIHRoZSBzYW1lIGtleS4gCgoKOTgzLsKgwqDCoMKgwqDCoMKgClRoZXJlIGFyZSBpbnN0YW5jZXMgb2YgZGVjaWRlZCBtYWduZXRpc20gb2YgdGhpcyBraW5kIGluIHRoZSB2ZWdldGFibGUgCmtpbmdkb20gYWxzby4gQSBnb29kIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGUgcnVkcmFrc2hhIGJlcnJ5LCBvZiB3aGljaCBuZWNrbGFjZXMgCmFyZSBzbyBmcmVxdWVudGx5IG1hZGUgaW4gSW5kaWEuIFRoZSBvc2NpbGxhdGlvbnMgY29ubmVjdGVkIHdpdGggaXQsIGVzcGVjaWFsbHkgCmluIGl0cyBzbWFsbCBhbmQgdW5kZXZlbG9wZWQgc3RhdGUsIHJlbmRlciBpdCBzcGVjaWFsbHkgc3VpdGFibGUgZm9yIAptYWduZXRpc2F0aW9uIHdoZXJlIHN1c3RhaW5lZCBob2x5IHRob3VnaHQgb3IgbWVkaXRhdGlvbiBpcyByZXF1aXJlZCwgYW5kIHdoZXJlIAphbGwgZGlzdHVyYmluZyBpbmZsdWVuY2VzIGFyZSB0byBiZSBrZXB0IGF3YXkuIFRoZSBiZWFkcyBtYWRlIGZyb20gdGhlIHR1bHNpIApwbGFudCBhcmUgYW5vdGhlciBleGFtcGxlLCBhbHRob3VnaCB0aGUgaW5mbHVlbmNlIHdoaWNoIHRoZXkgZ2l2ZSBpcyBvZiBhIApzb21ld2hhdCBkaWZmZXJlbnQgY2hhcmFjdGVyLiAKCgo5ODQuwqDCoMKgwqDCoMKgwqAKQW4gaW50ZXJlc3Rpbmcgc2V0IG9mIG5hdHVyYWwgdGFsaXNtYW5zIGFyZSB0aG9zZSBvYmplY3RzIHdoaWNoIHByb2R1Y2UgCnN0cm9uZyBzY2VudHMuIEl0IGhhcyBhbHJlYWR5IGJlZW4gbWVudGlvbmVkIHRoYXQgaW5jZW5zZSBwcm9kdWNlcyBhIHN0cm9uZyAKZWZmZWN0IGFsb25nIHRoZXNlIGxpbmVzLCB0aGUgZ3VtcyBvZiB3aGljaCBpdCBpcyBjb21wb3NlZCBiZWluZyBzcGVjaWFsbHkgCmNob3NlbiBiZWNhdXNlIHRoZSByYWRpYXRpb25zIHdoaWNoIHRoZXkgZ2l2ZSBmb3J0aCBhcmUgZmF2b3VyYWJsZSB0byBzcGlyaXR1YWwgCmFuZCBkZXZvdGlvbmFsIHRob3VnaHQsIGFuZCBkbyBub3QgaGFybW9uaXNlIHdpdGggYW55IGZvcm0gb2YgZGlzdHVyYmFuY2Ugb3IgCndvcnJ5LiBJdCBpcyBwb3NzaWJsZSBzbyB0byBjb21iaW5lIGluZ3JlZGllbnRzIGFzIHRvIG1ha2UgYW4gaW5jZW5zZSB3aGljaCB3aWxsIApoYXZlIHRoZSBvcHBvc2l0ZSBlZmZlY3Q7IHRoaXMgd2FzIHNvbWV0aW1lcyBkb25lIGJ5IHRoZSBtZWRpYWV2YWwgd2l0Y2hlcywgYW5kIAppcyBkb25lIHRvLWRheSBpbiBMdWNpZmVyaWFuIGNlcmVtb25pZXMuIE9uIHRoZSB3aG9sZSwgaXQgaXMgZ2VuZXJhbGx5IGRlc2lyYWJsZSAKdG8gYXZvaWQgY29hcnNlIGFuZCBoZWF2eSBzY2VudHMsIHN1Y2ggYXMgdGhhdCBvZiBtdXNrIG9yIG9mIHNhY2hldCBwb3dkZXIsIGFzIAptYW55IG9mIHRoZW0gYXJlIGNsb3NlbHkgaW4gdHVuZSB3aXRoIHNlbnN1YWwgZmVlbGluZ3Mgb2YgdmFyaW91cyBraW5kcy4gCgoKOTg1LsKgwqDCoMKgwqDCoMKgCkFuIG9iamVjdCBub3QgaW50ZW50aW9uYWxseSBjaGFyZ2VkIGZvciB0aGF0IHB1cnBvc2UgbWF5IHNvbWV0aW1lcyBoYXZlIAp0aGUgZm9yY2Ugb2YgYSB0YWxpc21hbi4gQSBwcmVzZW50IHJlY2VpdmVkIGZyb20gc29tZSBsb3ZlZCBvbmUsIGlmIGl0IGJlIG9mIGEgCm5hdHVyZSB0aGF0IGNhbiBiZSB3b3JuIG9yIGNhcnJpZWQgYWJvdXQgYnkgdGhlIHJlY2lwaWVudCwgY29uc3RhbnRseSBzZXJ2ZXMgdG8gCmhpbSBhcyBhIHJlbWluZGVyIG9mIHRoZSBkb25vciwgYW5kIG9mdGVuIHNvIGZhciBnaXZlcyB0aGUgc2Vuc2Ugb2YgdGhlIGRvbm9yJyBzIApwcmVzZW5jZSBhcyB0byBwcmV2ZW50IGhpbSBmcm9tIGRvaW5nIHRoaW5ncyB0aGF0IGhlIHdvdWxkIG5vdCBkbyBpZiB0aGF0IGRvbm9yIAp3ZXJlIGxvb2tpbmcgb24uIEkgaGF2ZSBoZWFyZCBvZiBtb3JlIHRoYW4gb25lIGNhc2UgaW4gd2hpY2ggYSBtYW4sIHdlYXJpbmcgYSAKcmluZyBvciBhIGNoYWluIGdpdmVuIHRvIGhpbSBieSBoaXMgbW90aGVyLCB3YXMgdGhlcmVieSBzYXZlZCBmcm9tIGNvbW1pdHRpbmcgCnNvbWUgcXVlc3Rpb25hYmxlIGFjdCwgb3IgaW5kdWxnaW5nIGluIHNvbWUgaW1wcm9wZXIgcGxlYXN1cmUsIGJlY2F1c2UsIGp1c3QgYXMgCmhlIHdhcyBhYm91dCB0byB5aWVsZCB0byB0aGUgdGVtcHRhdGlvbiwgaGlzIGdsYW5jZSBmZWxsIHVwb24gdGhlIG9iamVjdCwgYW5kIAp0aGF0IGJyb3VnaHQgdG8gaGltIHNvIHN0cm9uZ2x5IHRoZSB0aG91Z2h0IG9mIGhpcyBtb3RoZXIgYW5kIG9mIHdoYXQgc2hlIHdvdWxkIApmZWVsIGlmIHNoZSBjb3VsZCBzZWUgaGltLCB0aGF0IGhlIGF0IG9uY2UgYWJhbmRvbmVkIGhpcyBwcm9qZWN0LiBBIGxldHRlciAKY2FycmllZCBhYm91dCBpbiB0aGUgcG9ja2V0IGhhcyBiZWVuIGtub3duIHRvIHNlcnZlIHRoZSBzYW1lIHB1cnBvc2UsIGZvciBhIG1hbiAKZmVlbHM6IO+/vUhvdyBjYW4gSSBkbyB0aGlzIHRoaW5nIHdpdGggaGVyIHZlcnkgbGV0dGVyIGluIG15IHBvY2tldC0tIGhvdyBjYW4gSSAKdGFrZSB0aGF0IGludG8gc3Vycm91bmRpbmdzIHdoZXJlIEkgc2hvdWxkIGJlIGFzaGFtZWQgdGhhdCBzaGUgc2hvdWxkIHNlZSBtZT/vv70gSSAKcmVtZW1iZXIgb25lIGNhc2UgaW4gd2hpY2ggc3VjaCBhIHN0cnVnZ2xlIGVuZGVkIGluIHRoZSBtYW4gdGVhcmluZyB1cCB0aGUgCmxldHRlciBhbmQgdGhyb3dpbmcgaXQgYXdheSBpbiBvcmRlciB0aGF0IGhlIG1pZ2h0IGJlIGFibGUgdG8gaW5kdWxnZSBoaW1zZWxmOyAKYnV0IHVzdWFsbHkgdGhlIG9wcG9zaXRlIHJlc3VsdCBpcyBwcm9kdWNlZC4gCgoKOTg2LsKgwqDCoMKgwqDCoMKgClRISU5HUyBXRSBDQVJSWSBBQk9VVCAKCgo5ODcuwqDCoMKgwqDCoMKgwqAKVGh1cyBpdCB3aWxsIGJlIHNlZW4gdGhhdCB0aGUgb2JqZWN0cyB3aGljaCB3ZSBjYXJyeSBhYm91dCB3aXRoIHVzIGluIG91ciAKcG9ja2V0cyBtYXkgaGF2ZSBkZWNpZGVkIGluZmx1ZW5jZSB1cG9uIHVzLiBBIG1hbicgcyB3YXRjaCwgZm9yIGV4YW1wbGUgd2hpY2ggaGUgCmhhcyBhbHdheXMgd2l0aCBoaW0sIGJlY29tZXMgc3Ryb25nbHkgY2hhcmdlZCB3aXRoIGhpcyBtYWduZXRpc20sIGFuZCBpZiBhZnRlciAKd2VhcmluZyBpdCBmb3Igc29tZSB5ZWFycyBoZSBnaXZlcyBpdCBvciBsZW5kcyBpdCB0byBhbm90aGVyLCB0aGF0IG90aGVyIHBlcnNvbiwgCmlmIGhlIGJlIGF0IGFsbCBzZW5zaXRpdmUsIHdpbGwgYmUgY29uc3RhbnRseSByZW1pbmRlZCBvZiBoaXMgZnJpZW5kLCBhbmQgCmNvbnNjaW91cyBvZiBhIGZlZWxpbmcgYXMgdGhvdWdoIGhlIHdlcmUgcHJlc2VudC4gSSByZW1lbWJlciB0aGF0IGEgcHJvbWluZW50IAptZW1iZXIgb2YgdGhlIFRoZW9zb3BoaWNhbCBTb2NpZXR5LCBsb25nIHNpbmNlIGRlYWQsIHVzZWQgb2Z0ZW4gdG8gbWFrZSBwcmVzZW50cyAKb2Ygd2F0Y2hlcyB0byB0aG9zZSBkaXNjaXBsZXMgaW4gd2hvbSBoZSB3YXMgc3BlY2lhbGx5IGludGVyZXN0ZWQsIGNoYXJnaW5nIHRoZW0gCnN0cm9uZ2x5IGJlZm9yZSBoZSBnYXZlIHRoZW0gd2l0aCB3aGF0ZXZlciBxdWFsaXR5IGhlIHRob3VnaHQgdGhhdCB0aGUgcmVjaXBpZW50IAptb3N0IG5lZWRlZC4gQXMgaGlzIHlvdW5nIGZyaWVuZHMgbmF0dXJhbGx5IHdvcmUgdGhvc2Ugd2F0Y2hlcywgaGUgc3VjY2VlZGVkIGluIApzZXZlcmFsIGNhc2VzIGluIGVmZmVjdGluZyBpbiB0aGVtIGNvbnNpZGVyYWJsZSBjaGFuZ2VzIG9mIGNoYXJhY3Rlci4gCgoKOTg4LsKgwqDCoMKgwqDCoMKgCk1PTkVZIAoKCjk4OS7CoMKgwqDCoMKgwqDCoApPbmUgdW5wbGVhc2FudCB0aGluZyAoZnJvbSBvbmUgcG9pbnQgb2Ygdmlldykgd2hpY2ggd2UgYWxsIGhhdmUgdG8gY2FycnkgCmFib3V0IHdpdGggdXMgaXMgbW9uZXkuIEl0IHdpbGwgbmF0dXJhbGx5IG9jY3VyIHRvIHRoZSBodW1vcmlzdCB0byBzYXkgYXQgdGhpcyAKcG9pbnQgdGhhdCBoZSBjb3VsZCBkbyB3aXRoIGEgZ29vZCBkZWFsIG9mIHRoYXQga2luZCBvZiB1bnBsZWFzYW50bmVzcy4gSSBxdWl0ZSAKdW5kZXJzdGFuZCB0aGF0IHBvaW50IG9mIHZpZXcsIGFuZCBJIHJlY29nbmlzZSB0aGF0IGluIG91ciBwcmVzZW50IGNpdmlsaXNhdGlvbiAKaXQgaXMgZGVzaXJhYmxlIHRvIHBvc3Nlc3MgYSBjZXJ0YWluIGFtb3VudCBvZiBmaWx0aHkgbHVjcmUsIGFuZCBldmVuIG5lY2Vzc2FyeSAKdG8gY2FycnkgYXQgbGVhc3QgYSBsaXR0bGUgb2YgaXQgYWJvdXQgd2l0aCBvbmUsIHNvIGFzIHRvIGJlIHByZXBhcmVkIGZvciAKdW5leHBlY3RlZCBlbWVyZ2VuY2llcy4gTmV2ZXJ0aGVsZXNzLCB0aGUgZmFjdCByZW1haW5zIHRoYXQgd2hpbGUgbW9uZXkgaW4gdGhlIAphYnN0cmFjdCBpcyBubyBkb3VidCBhIGdvb2QgdGhpbmcgdG8gaGF2ZSBpZiBvbmUga25vd3MgaG93IHRvIHVzZSBpdCB3aXNlbHksIAptb25leSBpbiB0aGUgY29uY3JldGUgZm9ybSBvZiBjb2lucyBhbmQgbm90ZXMgaXMgZnJlcXVlbnRseSBjaGFyZ2VkIHdpdGggdGhlIAp3b3JzdCBwb3NzaWJsZSBtYWduZXRpc20uIE5ldyBub3RlcyBhbmQgbmV3IGNvaW5zIGFyZSBoYXJtbGVzcyBlbm91Z2gsIGJ1dCBhZnRlciAKdGhleSBoYXZlIGJlZW4gaW4gY2lyY3VsYXRpb24gZm9yIGEgbGl0dGxlIHRpbWUgdGhleSBhY3F1aXJlIG5vdCBvbmx5IGFsbCBzb3J0cyAKb2YgcGh5c2ljYWwgZGlydCBidXQgYWxzbyBtYW55IHZhcmlldGllcyBvZiBpbmZsdWVuY2VzLCBuZWFybHkgYWxsIG9mIHRoZW0gCmV4Y2VlZGluZ2x5IHVucGxlYXNhbnQuIAoKCjk5MC7CoMKgwqDCoMKgwqDCoApUaGUgcmVhc29uIGZvciB0aGlzIGlzIG5vdCBkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZCwgZm9yIHRoZSBtYWduZXRpc20gCnN1cnJvdW5kaW5nIHRoZSBjb2luIGlzIHByb2R1Y2VkIGJ5IHRoZSB0aG91Z2h0cyBhbmQgZmVlbGluZ3Mgb2YgdGhvc2Ugd2hvIGhhdmUgCmhhbmRsZWQgaXQgb3IgY2FycmllZCBpdC4gRmlyc3QgYW5kIGFzIGEgZ2VuZXJhbCBwcmluY2lwbGUsIHdpdGhvdXQgdGFraW5nIGFueSAKc3BlY2lhbCBmZWVsaW5nIGludG8gY29uc2lkZXJhdGlvbiwgYW55IGNvaW4gd2hpY2ggaGFzIGJlZW4gaGFuZGxlZCBhbmQgY2FycmllZCAKYnkgYSBsYXJnZSBudW1iZXIgb2YgcGVvcGxlIG11c3QgaW5ldml0YWJseSBiZSBjaGFyZ2VkIHdpdGggYSBncmVhdCBtaXh0dXJlIG9mIApkaWZmZXJlbnQga2luZHMgb2YgbWFnbmV0aXNtLiBJdCBpcywgdGhlcmVmb3JlLCBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIAp2aWJyYXRpb25zLCBhIGNlbnRyZSBvZiBkaXNjb3JkIGFyb3VuZCB3aGljaCBhbGwga2luZHMgb2Ygd2FycmluZyBpbmZsdWVuY2UgYXJlIApib2lsaW5nIHVwIGluIHRoZSB3aWxkZXN0IGNvbmZ1c2lvbi4gVGhlIGluZmx1ZW5jZSBvZiBzdWNoIGEgdGhpbmcgYXMgdGhpcyBpcyAKZGlzdHVyYmluZyBhbmQgaXJyaXRhdGluZywgYW5kIGl0IGhhcywgdGhvdWdoIHRvIGEgbXVjaCBzdHJvbmdlciBkZWdyZWUsIGV4YWN0bHkgCnRoZSBzYW1lIGVmZmVjdCB1cG9uIHRoZSBhc3RyYWwgYW5kIG1lbnRhbCBib2RpZXMgYXMgaGFzIHRoZSBjb250aW51ZWQgCmJvbWJhcmRtZW50IG9mIHJhZGl1bSBlbWFuYXRpb25zIHVwb24gdGhlIHBoeXNpY2FsIGJvZHkuIAoKCjk5MS7CoMKgwqDCoMKgwqDCoApTZXZlcmFsIHNjaWVudGlmaWMgcGVvcGxlIGhhdmUgZGlzY292ZXJlZCBieSBwYWluZnVsIGV4cGVyaWVuY2UgdGhhdCB0byAKY2FycnkgYSBmcmFnbWVudCBvZiByYWRpdW0gaW4gb25lJyBzIHdhaXN0Y29hdCBwb2NrZXQgcHJlc2VudGx5IHByb2R1Y2VzIGEgCnBlY3VsaWFybHkgb2JzdGluYXRlIHNvcmUgdXBvbiB0aGUgc2tpbiB1bmRlcm5lYXRoIGl0OyBqdXN0IGxpa2UgdGhhdCwgYnV0IApsYXJnZXIgaW4gcHJvcG9ydGlvbiwgaXMgdGhlIGVmZmVjdCBwcm9kdWNlZCBvbiB0aGUgaGlnaGVyIHZlaGljbGVzIGJ5IHRoZSAKcHJlc2VuY2Ugb2YgYSBtdWNoLXVzZWQgY29pbi4gQ29wcGVyIGFuZCBicm9uemUgY29pbnMgYXJlIGluIHRoaXMgcmVzcGVjdCB0aGUgCndvcnN0IG9mIGFsbC0tIGV4Y2VwdCBwZXJoYXBzIG9sZCBhbmQgZGlydHkgYmFuay1ub3Rlcy4gR29sZCBhbmQgc2lsdmVyIGNvaW5zIAphYnNvcmIgdGhlIGluZmx1ZW5jZXMgd2hpY2ggc3Vycm91bmQgdGhlbSwgYnV0IHRoZWlyIHF1YWxpdGllcyBtYWtlIHRoZW0gCnNvbWV3aGF0IGxlc3MgcmVjZXB0aXZlIHRvIHRoZSB3b3JzdCBjaGFyYWN0ZXJpc3RpY3MuIEZyb20gYWxsIHRoaXMgaXQgZW1lcmdlcyAKdGhhdCBpdCBpcyBiZXR0ZXIgbm90IHBlcnBldHVhbGx5IHRvIGhhdmUgaW4gb25lJyBzIHBvY2tldCBtb3JlIG1vbmV5IHRoYW4gaXMgCmFjdHVhbGx5IG5lY2Vzc2FyeS4gSSBoYXZlIGtub3duIHN0dWRlbnRzIHdobyBwYXJ0aWFsbHkgbWV0IHRoZSBkaWZmaWN1bHR5IGJ5IApjYXJyeWluZyBjb3BwZXIgb3IgYnJvbnplIGNvaW5zIG9ubHkgaW4gYSBwdXJzZSBzbyBzdHJvbmdseSBtYWduZXRpc2VkIGFzIHRvIGJlIApwcmFjdGljYWxseSBpbXBlcnZpb3VzIHRvIHRoZSB1bnBsZWFzYW50IHZpYnJhdGlvbnMuIE1hbnkgY291bnRyaWVzIGhhdmUgCnJlYWxpc2VkIHRoZSB1bnN1aXRhYmlsaXR5IG9mIHRob3NlIG1ldGFscyBmb3IgZGFpbHkgdXNlLCBhbmQgYXJlIGFkb3B0aW5nIApuaWNrZWwgYXMgYSBzdWJzdGl0dXRlOyBhbmQgbmlja2VsLCB3aGlsZSBub3Qgc28gYCBub2JsZScgYSBtZXRhbCBhcyBnb2xkIG9yIApzaWx2ZXIsIGlzIG11Y2ggbGVzcyByZWNlcHRpdmUgdG8gZXZpbCBpbmZsdWVuY2UgdGhhbiBjb3BwZXIuIEEgbm9ibGUgbWV0YWwsIGluIAphbGNoZW1pY2FsIHBhcmxhbmNlLCBpcyBvbmUgd2hpY2ggYW5zd2VycyByZWFkaWx5IHRvIHRoZSB3YXZlLWxlbmd0aHMgb2YgdGhlIApoaWdoZXIgdGhvdWdodCwgYnV0IGlzIHJlc2lzdGFudCB0b3dhcmRzIHRoZSBsb3dlciBraW5kcy4gCgoKOTkyLsKgwqDCoMKgwqDCoMKgCkNMT1RISU5HIAoKCjk5My7CoMKgwqDCoMKgwqDCoApXZSBjb21lIG5vdyB0byBhIHN1YmplY3QgdXBvbiB3aGljaCBhbGwgdGhlIGNvbnNpZGVyYXRpb25zIGRpY3RhdGVkIGJ5IAp0aGUgc2lnaHQgb2YgdGhlIGhpZ2hlciB3b3JsZHMsIGFuZCB0aGUgYWRkaXRpb25hbCBrbm93bGVkZ2Ugd2hpY2ggb2NjdWx0aXNtIApnaXZlcywgYXJlIGluIGRpcmVjdCBjb250cmFkaWN0aW9uIGluIG5lYXJseSBldmVyeSB3YXkgdG8gdGhlIGZhc2hpb25zIGF0IApwcmVzZW50IHByZXZhaWxpbmcgaW4gdGhlIFdlc3QuIEluIGEgY291cnNlIG9mIHJlc2VhcmNoZXMsIGV4dGVuZGluZyBvdmVyIG1hbnkgCnllYXJzLCBpdCBoYXMgaGFwcGVuZWQgdG8gbWUgdG8gc2VlIGNsYWlydm95YW50bHkgYSBsYXJnZSBudW1iZXIgb2YgdGhlIApjaXZpbGlzYXRpb25zIG9mIHRoZSB3b3JsZCwgaW4gYWxsIHBhcnRzIG9mIGl0IGFuZCBhdCB3aWRlbHkgZGl2ZXJnaW5nIHBlcmlvZHMsIAphbmQgaXQgaGFzIGFsc28gY29tZSB3aXRoaW4gbXkgZHV0eSB0byBleGFtaW5lIHRoZSBpbmhhYml0YW50cyBvZiBhdCBsZWFzdCB0d28gCm90aGVyIHBsYW5ldHMuIFRoZSB2YXJpb3VzIHJhY2VzIGhhdmUgZGlmZmVyZWQgd2lkZWx5IGluIGN1c3RvbXMgYW5kIGNvc3R1bWVzLCAKYnV0IG5ldmVyIGluIGFueSBvZiB0aGVtIGF0IGFueSB0aW1lIGhhdmUgSSBzZWVuIGFueXRoaW5nIGFwcHJvYWNoaW5nIGluIApoaWRlb3VzbmVzcyB0aGUgZHJlc3Mgd2hpY2ggaXMgYXQgcHJlc2VudCB0aGUgZmFzaGlvbiBpbiBFdXJvcGUgZm9yIG1hbGVzLiAKCgo5OTQuwqDCoMKgwqDCoMKgwqAKSXQgaXMgc3VwcmVtZWx5IHVnbHksIHVuZ2Fpbmx5IGFuZCB1bmhlYWx0aHksIGFuZCB0aGUgb25seSBwb2ludCAoc28gZmFyIAphcyBJIGNhbiBzZWUpIHdoaWNoIGNhbiBiZSB1cmdlZCBpbiBpdHMgZmF2b3VyIGlzIGEgY2VydGFpbiBtZWFzdXJlIG9mIHByYWN0aWNhbCAKY29udmVuaWVuY2UuIEl0IGlzIHRpZ2h0LWZpdHRpbmcsIHdoZXJlYXMgYWxsIGNsb3RoaW5nIG91Z2h0IHRvIGJlIGxvb3NlLiBJdCBpcyAKbWFkZSBwcmluY2lwYWxseSBvZiBtYXRlcmlhbHMgd2hpY2ggYXJlIGZyb20gdGhlIGlubmVyIHBvaW50IG9mIHZpZXcgbW9zdCAKdW5kZXNpcmFibGUsIGFuZCB0aGUgb25seSBjb2xvdXJzIChvciBsYWNrIG9mIGNvbG91cnMpIHdoaWNoIGN1c3RvbSBwZXJtaXRzIGFyZSAKcHJlY2lzZWx5IHRoZSB3b3JzdCB0aGF0IGNvdWxkIHBvc3NpYmx5IGJlIGNob3Nlbi4gT3VyIG91dGVyIGdhcm1lbnRzIGFyZSBibGFjaywgCm9yIGJyb3duLCBvciBncmV5IChhbmQgb25lIGhhcyBvbmx5IHRvIHN0dWR5IE1hbiBWaXNpYmxlIGFuZCBJbnZpc2libGUgCmluIG9yZGVyIHRvIHNlZSB3aGF0IHRob3NlIGh1ZXMgc2lnbmlmeSksIG9yIGlmIGEgc2hhZGUgb2YgYmx1ZSBpcyBzb21ldGltZXMgCnBlcm1pdHRlZCwgaXQgaXMgc28gZGFyayB0aGF0IG9uZSBjYW4gc2NhcmNlbHkgZGlzdGluZ3Vpc2ggdGhhdCBpdCBpcyBibHVlIGF0IAphbGwuIAoKCjk5NS7CoMKgwqDCoMKgwqDCoApUaGVyZSBhcmUgY2VydGFpbiBwcmFjdGljYWwgcmVhc29ucyBmb3IgYWxsIHRoZXNlIHVucGxlYXNhbnQgZmVhdHVyZXMuIApPdXIgY2xvdGhlcyBhcmUgdGlnaHQtZml0dGluZyBiZWNhdXNlIHdlIHdpc2ggdG8gYmUgcmVhZHkgYXQgYW55IG1vbWVudCB0byAKZXhoaWJpdCBhY3Rpdml0eSBpbiBydW5uaW5nLCBqdW1waW5nIG9yIHJpZGluZy4gVGhleSBhcmUgbWFkZSBvZiBoZWF2eSB3b29sbGVuIAptYXRlcmlhbHMgaW4gb3JkZXIgdG8ga2VlcCBvdXQgdGhlIGNvbGQ7IGFuZCB0aGV5IGFyZSBtYWRlIGluIHRoZXNlIHVnbHkgZGFyayAKY29sb3VycyBpbiBvcmRlciB0byBkaXNndWlzZSB0aGUgZGlydCB3aGljaCBhY2N1bXVsYXRlcyB1cG9uIHRoZW0gYWZ0ZXIgZXZlbiBhIApzaW5nbGUgZGF5JyBzIHdlYXIsIG93aW5nIHRvIHRoZSBmYWN0cyB0aGF0IHdlIGFyZSBub3QgeWV0IHN1ZmZpY2llbnRseSAKY2l2aWxpc2VkIHRvIG1ha2UgYWxsIGtpbmRzIG9mIGZpcmVzIGNvbnN1bWUgdGhlaXIgb3duIHNtb2tlLCBhbmQgdGhhdCB3ZSBoYXZlIApub3QgeWV0IGxlYXJudCB0byBtYWtlIGEgcm9hZCB0aGF0IHNoYWxsIGJlIGZyZWUgZnJvbSBkdXN0IGFuZCBtdWQuIElmIGFueW9uZSAKZGVzaXJlcyB0byBrbm93IHdoYXQgYSBsb2FkIG9mIHVuc3BlYWthYmxlIGZpbHRoIGhlIGlzIGNhcnJ5aW5nIGFib3V0IHdpdGggaGltLCAKbGV0IGhpbSB0YWtlIGFueSBvbGQgY29hdCBvciBvdGhlciBvdXRzaWRlIGdhcm1lbnQgd2hpY2ggaGUgaGFzIGRpc2NhcmRlZCwgYW5kIAp3YXNoIGl0IHRob3JvdWdobHkgaW4gYSB0dWIgb2Ygd2F0ZXIsIGFzIHVuZGVyY2xvdGhpbmcgaXMgd2FzaGVkOyB0aGUgY29sb3VyIG9mIAp0aGUgd2F0ZXIgd2lsbCBiZSBhIHJldmVsYXRpb24gdG8gaGltLiAKCgo5OTYuwqDCoMKgwqDCoMKgwqAKRnJvbSB0aGUgb2NjdWx0IHBvaW50IG9mIHZpZXcgbm90aGluZyB3aWxsIGp1c3RpZnkgYSBtYW4gZm9yIGV4aXN0aW5nIGluIApzdWNoIGEgY29uZGl0aW9uIG9mIGZpbHRoLiBDbG90aGluZyB3aGljaCBpcyBub3Qgb25seSB3YXNoYWJsZSBidXQgZnJlcXVlbnRseSAKd2FzaGVkIGlzIGFic29sdXRlbHkgdGhlIG9ubHkga2luZCB0aGF0IGlzIHBlcm1pc3NpYmxlIGZyb20gdGhlIHN0YW5kcG9pbnQgb2YgCnRoZSB0aGlua2VyLiBJIGtub3cgcXVpdGUgd2VsbCB0aGF0LCBhcyB0aGluZ3Mgc3RhbmQgaW4gRXVyb3BlIG9yIEFtZXJpY2EsIGl0IGlzIApwcmFjdGljYWxseSBpbXBvc3NpYmxlIGZvciB0aGUgbW9zdCBlYXJuZXN0IHN0dWRlbnQgdG8gZG8gaW4gdGhpcyByZXNwZWN0IHdoYXQgCmhlIGtub3dzIGhlIG91Z2h0IHRvIGRvOyBmb3IgdGhlIHNsYXZlcnkgb2YgY3VzdG9tIGlzIHNvIGFic29sdXRlIHRoYXQgYSBtYW4gCmNhbm5vdCBsaXZlIGFtb25nIGhpcyBmZWxsb3dzIHVubGVzcyBoZSBmb2xsb3dzIGl0LiBJdCBpcyBzdHJhbmdlIHRoYXQgdGhpcyAKc2hvdWxkIGJlIHNvLCBhbmQgaXQgaXMgbW9zdCBkaXNjcmVkaXRhYmxlIHRvIHRob3NlIG5hdGlvbnM7IGl0IGFic29sdXRlbHkgCmRpc3Bvc2VzIG9mIHRoZWlyIGNsYWltIHRvIGJlIGNvbnNpZGVyZWQgbGliZXJhbCBvciBmcmVlLW1pbmRlZCBwZW9wbGU7IGJ1dCBzbyAKaXQgaXMuIEluZm9ybWF0aW9uIGFzIHRvIHdoYXQgb3VnaHQgdG8gYmUgZG9uZSBpbiB0aGVzZSBtYXR0ZXJzIGlzIHRoZXJlZm9yZSAKdW5mb3J0dW5hdGVseSB1c2VsZXNzIHRvIG91ciBXZXN0ZXJuIGJyb3RoZXJzLCBiZWNhdXNlIHRoZXkgc2ltcGx5IGNhbm5vdCBkbyBpdDsgCmJ1dCBmb3J0dW5hdGVseSB0aGVyZSBhcmUgb3RoZXIgY291bnRyaWVzIGluIHRoZSB3b3JsZCB3aGljaCwgdGhvdWdoIHBlcmhhcHMgCmVxdWFsbHkgdW5kZXIgdGhlIHNsYXZlcnkgb2YgY3VzdG9tIGFsb25nIG90aGVyIGxpbmVzLCBoYXBwZW4gdG8gaGF2ZSBhIGJldHRlciAKY3VzdG9tIGluIHJlZ2FyZCB0byB0aGlzIHBhcnRpY3VsYXIgbWF0dGVyLCBhbmQgc28gaW5mb3JtYXRpb24gYWJvdXQgaXQgbWF5IGJlIApvZiB1c2UgdG8gdGhlaXIgaW5oYWJpdGFudHMuIAoKCjk5Ny7CoMKgwqDCoMKgwqDCoApBIG1hbiBkcmVzc2VzIHByaW1hcmlseSBmb3IgZGVjZW5jeSBhbmQgZm9yIHRoZSBzYWtlIG9mIGhpcyBvd24gY29tZm9ydDsgCmJ1dCBoZSBvdWdodCBzdXJlbHkgYWxzbyB0byBjb25zaWRlciB0aGUgYXNwZWN0IHdoaWNoIGhlIHByZXNlbnRzIHRvIGhpcyAKZmVsbG93LWNyZWF0dXJlcywgYW5kIGV2ZW4gZm9yIHRoYXQgcmVhc29uIGFsb25lIHRoZSBzdXBlcmxhdGl2ZSB1Z2xpbmVzcyBvZiBvdXIgCnByZXNlbnQgY29zdHVtZSBpcyBhIHBvc2l0aXZlIHNpbi4gCgoKOTk4LsKgwqDCoMKgwqDCoMKgCkkgYW0gYXdhcmUgdGhlbiB0aGF0LCBmb3IgdGhlIFdlc3Rlcm5lciBhdCBsZWFzdCwgSSBhbSBzdWdnZXN0aW5nIApjb3Vuc2VscyBvZiBwZXJmZWN0aW9uIHdoaWNoIGNhbm5vdCBiZSBmb2xsb3dlZCwgd2hlbiBJIHNheSB3aGF0IG9jY3VsdGlzbSAKcHJlc2NyaWJlcyBpbiB0aGUgbWF0dGVyIG9mIGRyZXNzLiBJIGFtIG5vdCBzcGVha2luZyBvZiB0aGUgY3VzdG9tcyBvZiBhbnkgcmFjZSAKb3IgcmVsaWdpb24sIG9yIG9mIHdoYXQgYW55IG1hbiBvciBzZXQgb2YgbWVuIGhhcHBlbnMgdG8gYXBwcm92ZS4gSSBhbSBzaW1wbHkgCnByZXNjcmliaW5nIHdoYXQgaXMgZGljdGF0ZWQgYnkgYSBzY2llbnRpZmljIGNvbnNpZGVyYXRpb24gb2YgdGhlIGhpZ2hlciBzaWRlIG9mIApsaWZlIGFuZCB0aGUgdW5zZWVuIGVsZW1lbnRzIHdoaWNoIGFyZSBhbGwgdGhlIHRpbWUgZW50ZXJpbmcgaW50byBpdC4gVGhlIApwcmVzY3JpcHRpb24gdGhlbiBpcyBhcyBmb2xsb3dzOiAKCgo5OTkuwqDCoMKgwqDCoMKgwqAKQWxsIGRyZXNzIHNob3VsZCBiZSBsb29zZSBhbmQgZmxvd2luZywgbmV2ZXIgdW5kZXIgYW55IGNpcmN1bXN0YW5jZXMgCmV4ZXJjaXNpbmcgcHJlc3N1cmUgdXBvbiBhbnkgcGFydCBvZiB0aGUgYm9keSwgYW5kIG5vIHBhcnQgb2YgaXQgd2hpY2ggdG91Y2hlcyAKdGhlIHNraW4gc2hvdWxkIGV2ZXIgYmUgY29tcG9zZWQgb2Ygd29vbCBvciBsZWF0aGVyLiBIb3cgdGhlbiBhcmUgd2UgdG8ga2VlcCAKb3Vyc2VsdmVzIHdhcm0/IFdlbGwsIHRoZSBDaGluZXNlLCB3aG8gYXQgbGVhc3QgaW4gdGhlIE5vcnRoIG9mIHRoZWlyIGNvdW50cnkgCnN1ZmZlciB1bmRlciBhIG1vc3QgYXBwYWxsaW5nIGNsaW1hdGUsIGNvbnRyaXZlIHRvIHNvbHZlIHRoZSBkaWZmaWN1bHR5IGJ5IHVzaW5nIApnYXJtZW50cyBvZiBwYWRkZWQgc2lsayBvciBjb3R0b24sIHNvbWV0aGluZyBsaWtlIGVpZGVyZG93biBxdWlsdHM7IGFuZCBpdCBpcyAKcXVpdGUgY2VydGFpbiB0aGF0IGl0IGlzIHdpdGhpbiB0aGUgcmVzb3VyY2VzIG9mIHNjaWVuY2UgdG8gc3VwcGx5IHVzIHdpdGggYSAKbnVtYmVyIG9mIGVmZmljaWVudCBzdWJzdGl0dXRlcyBmb3Igd29vbCwgaWYgdGhlcmUgd2VyZSBvbmx5IGEgZGVtYW5kIGZvciB0aGVtLiAKT2xkLWZhc2hpb25lZCBkb2N0b3JzIGluIEVuZ2xhbmQgdXNlZCB0byBoYXZlIGEgY3JhemUgZm9yIHJlY29tbWVuZGluZyB0aGUgCndlYXJpbmcgb2Ygd29vbCBuZXh0IHRvIHRoZSBza2luLS0gdGhlIHZlcnkgbGFzdCB0aGluZyB0aGF0IGV2ZXIgb3VnaHQgdG8gYmUgCmFsbG93ZWQgdG8gdG91Y2ggaXQ7IGZvciwgYXMgaGFzIGJlZW4gd2VsbCBzYWlkIGJ5IGEgZG9jdG9yOiDvv71JdCBpcyBhbiBhbmltYWwgCnByb2R1Y3Qgd2hpY2ggY2FuIG5ldmVyIGJlIHByb3Blcmx5IGNsZWFuZWQ7IGl0IGNyZWF0ZXMgdW5uYXR1cmFsIGhlYXQ7IGl0IApiZWNvbWVzIGZlbHRlZCBhbmQgY2hva2VzIHRoZSBwb3JlczsgaXQgYWJzb3JicyBtb2lzdHVyZSB2ZXJ5IHNsb3dseSBhbmQgZHJpZXMgCnZlcnkgc2xvd2x5LCB0aGVyZWZvcmUgcmV0YWluaW5nIHRoZSBtb2lzdHVyZSBvZiB0aGUgYm9keTsgaXQgZW5lcnZhdGVzIGFuZCAKZW5mZWVibGVzIHRoZSBzeXN0ZW0sIGVuY291cmFnZXMgY2hpbGxzIGFuZCBjb2xkcywgYW5kIHByb21vdGVzIHJoZXVtYXRpc207IGl0IApvZnRlbiBjYXVzZXMgKGFuZCBhbHdheXMgaXJyaXRhdGVzKSByYXNoZXMgYW5kIG90aGVyIHNraW4gZGlzZWFzZXM7IGl0IGNhbm5vdCBiZSAKYm9pbGVkIHdpdGhvdXQgZGVzdHJveWluZyB0aGUgZmFicmljLCBhbmQgaXQgYWx3YXlzIHNocmlua3Mu77+9IEZyb20gdGhlIG9jY3VsdCAKcG9pbnQgb2YgdmlldyB0aGUgY29uZGVtbmF0aW9uIG9mIGl0IGlzIGV2ZW4gbW9yZSBlbXBoYXRpYywgYW5kIGluY2x1ZGVzIHZhcmlvdXMgCm90aGVyIHJlYXNvbnMuIAoKCjEwMDAuwqDCoMKgwqAKQ2xvdGhlcyBvdWdodCB0byBiZSBvZiBicmlsbGlhbnQgY29sb3Vycywgbm90IG9ubHkgZm9yIHRoZSBzYWtlIG9mIGdpdmluZyAKcGxlYXN1cmUgdG8gdGhlIGV5ZXMgb2Ygb3VyIG5laWdoYm91cnMsIGJ1dCBhbHNvIGJlY2F1c2Ugb2YgdGhlIGVmZmVjdCBvZiB0aGUgCmNvbG91cnMgdXBvbiBvdXJzZWx2ZXMuIFRoZSBwcmVzZW50IHN5c3RlbSBvZiBkcmVzc2luZyBlbnRpcmVseSBpbiBzdWJmdXNjIGh1ZXMgCmlzIHVuZG91YnRlZGx5IHByb2R1Y3RpdmUgb2YgYSB2YXN0IGFtb3VudCBvZiBkZXByZXNzaW9uIGFuZCBzdGFnbmF0aW9uIG9mIAp0aG91Z2h0LCBhbmQgYnkgaXQgd2UgZW50aXJlbHkgbG9zZSB0aGUgZGlmZmVyZW50IGVmZmVjdHMgd2hpY2ggbWF5IGJlIHByb2R1Y2VkIAp1cG9uIHRoZSBkaXNwb3NpdGlvbiBieSB0aGUgd2VhcmluZyBvZiBkaWZmZXJlbnQgY29sb3Vycy4gV2hlbiB3ZSBoYXZlIGFkdmFuY2VkIApzdWZmaWNpZW50bHkgZm9yIGEgcmVhc29uYWJsZSBjb3N0dW1lIHRvIGJlY29tZSBwb3NzaWJsZSwgaXQgd2lsbCBiZSBvZiBpbnRlcmVzdCAKdG8gZGlzY3VzcyB0aGUgcXVhbGl0aWVzIG9mIHRoZSBjb2xvdXJzLCBhbmQgd2hpY2ggYXJlIG1vc3Qgc3VpdGFibGUgZm9yIApwYXJ0aWN1bGFyIHR5cGVzIG9mIHBlb3BsZTsgYXQgcHJlc2VudCBpdCB3b3VsZCBiZSBvZiBsaXR0bGUgdXNlLiAKCgoxMDAxLsKgwqDCoMKgCkluIG1hbnkgb3JpZW50YWwgY291bnRyaWVzIHRoZSBjdXN0b21zIGluIHRoZXNlIG1hdHRlcnMgYXJlIGZhciBtb3JlIApyYXRpb25hbC4gSW4gQnVybWEsIGZvciBleGFtcGxlLCB3aGVuIGxlY3R1cmluZyBvbiBhIGZlc3RpdmFsIGRheSBhdCB0aGUgR3JlYXQgCkdvbGRlbiBQYWdvZGEgaW4gUmFuZ29vbiwgSSBoYXZlIHNlZW4gbXkgYXVkaWVuY2Ugc3RyZXRjaCBiZWZvcmUgbWUgZ2xvd2luZyBsaWtlIAphIHNwbGVuZGlkIGZsb3dlci1iZWQgd2l0aCB2YXJpZWdhdGVkIGNvbG91cnMuIFRoZSBkZWxpY2F0ZWx5LWNvbG91cmVkIHNhdGlucyAKd29ybiBieSB0aGUgQ2hpbmVzZSB0aGVyZSBvbiBmZXN0aXZlIG9jY2FzaW9ucyBwcm9kdWNlIGluIHRoZSBnbG93aW5nIHRyb3BpY2FsIApzdW5saWdodCBhbiBlZmZlY3Qgbm90IGVhc3kgdG8gYmUgc3VycGFzc2VkLCBhbmQgb25lIGNhbm5vdCBidXQgd29uZGVyIGhvdyBpdCBpcyAKdGhhdCB3ZSwgd2hvIGNlcnRhaW5seSBiZWxvbmcgdG8gYSBsYXRlciByYWNlIHRoYW4gdGhlc2UgcGVvcGxlLCBhbmQgbWF5IG5vdCAKdW5yZWFzb25hYmx5IGNsYWltIHRvIGhhdmUgYWR2YW5jZWQgZGlzdGluY3RseSBiZXlvbmQgdGhlbSBpbiBtYW55IG9mIHRoZSAKZGVwYXJ0bWVudHMgb2YgY2l2aWxpc2F0aW9uLCBzaG91bGQgeWV0IGhhdmUgZmFsbGVuIHNvIHV0dGVybHkgYW5kIGxhbWVudGFibHkgCmJlaGluZCB0aGVtIGluIHRoaXMgcGFydGljdWxhciBvZiBkcmVzcy4gCgoKMTAwMi7CoMKgwqDCoApUaGUgd29yc3QgZmVhdHVyZXMgb2YgaXQgYXJlIHJlYWxseSBxdWl0ZSByZWNlbnQuIEkgbXlzZWxmIGNhbiByZW1lbWJlciAKaW4gbXkgY2hpbGRob29kIHNlZWluZyBhIGZldyBzdXJ2aXZhbHMgb2YgdGhlIG9yZGluYXJ5IGNvc3R1bWUgb2YgYSBjZW50dXJ5IGFnbywgCndoZW4gYnJpbGxpYW50IGNvbG91cnMgd2VyZSBzdGlsbCB3b3JuIGJ5IGdlbnRsZW1lbiBvbiBvdGhlciBvY2Nhc2lvbnMgdGhhbiBpbiAKdGhlIGh1bnRpbmctZmllbGQuIEl0IGhhcyByZWFsbHkgdGFrZW4gdXMgb25seSBhYm91dCBhIGNlbnR1cnkgdG8gcmVhY2ggdGhlIApsb3dlc3QgcG9zc2libGUgbGV2ZWwgaW4gdGhlc2UgbWF0dGVyczsgaG93IGxvbmcgd2lsbCBpdCB0YWtlIHVzIHRvIHJpc2UgYWdhaW4gCnRvIGJlYXV0eSBhbmQgZ3JhY2VmdWxuZXNzIGFuZCBkaWduaXR5PyAKCgoxMDAzLsKgwqDCoMKgClRoZSBzdWJqZWN0IG9mIGNsb3RoaW5nIGxlYWRzIHVzIHRvIGJlZC1jbG90aGluZzsgYnV0IHRoZXJlIGlzIG5vdCBtdWNoIAp0byBiZSBzYWlkIHVwb24gdGhpcywgc2F2ZSB0aGF0IGZyb20gdGhlIG9jY3VsdCBzdGFuZHBvaW50IGZlYXRoZXItYmVkcyBvciB0aGljayAKYW5kIGhlYXZ5IG1hdHRyZXNzZXMgYXJlIGFsd2F5cyB1bmRlc2lyYWJsZSwgYW5kIHRoYXQgaWYgaXQgYmUgbmVjZXNzYXJ5IHRoYXQgCndvb2wgc2hvdWxkIGZvcm0gcGFydCBvZiB0aGUgY292ZXJpbmcsIGF0IGFueSByYXRlIHByZWNhdXRpb25zIHNob3VsZCBiZSB0YWtlbiAKdGhhdCBpdCBkb2VzIG5vdCB0b3VjaCB0aGUgc2tpbiBvZiB0aGUgc2xlZXBlcjsgZm9yIGlmIGF0IG90aGVyIHRpbWVzIGl0IGlzIAppbmV4cGVkaWVudCB0byBicmluZyBpbnRvIGNsb3NlIGNvbnRhY3Qgd2l0aCBvdXJzZWx2ZXMgdGhhdCB3aGljaCBpcyBzYXR1cmF0ZWQgCndpdGggYW5pbWFsIGluZmx1ZW5jZXMsIGFuZCBpcyBpbmRlZWQgYW5pbWFsIGluIGl0cyB2ZXJ5IGVzc2VuY2UsIGl0IGlzIGEgCnRob3VzYW5kZm9sZCBtb3JlIHNlcmlvdXMgdG8gZG8gdGhpcyB3aGVuIHRoZSBib2R5IGlzIGFzbGVlcCBhbmQgc28gc3BlY2lhbGx5IAphbWVuYWJsZSB0byBzdWNoIGluZmx1ZW5jZXMuIEEgYmVkIG1hZGUgb2YgaW50ZXJsYWNlZCB3ZWJiaW5nLCBzdWNoIGFzIGlzIApjb21tb25seSB1c2VkIGF0IEFkeWFyLCBpcyBvbmUgb2YgdGhlIGJlc3QgZnJvbSB0aGUgb2NjdWx0IHBvaW50IG9mIHZpZXcuIAoKCjEwMDQuwqDCoMKgwqAKQ0hBUFRFUiBYVkkgCgoKMTAwNS7CoMKgwqDCoApCWSBNRU5UQUwgQ09ORElUSU9OUyAKCgoxMDA2LsKgwqDCoMKgClRIT1VHSFQtRk9STVMgCgoKMTAwNy7CoMKgwqDCoApNQU4gY2xvdGhlcyBoaW1zZWxmIGluIG90aGVyIHdvcmxkcyB0aGFuIHRoaXMsIHRob3VnaCBpbiBhIHNvbWV3aGF0IApkaWZmZXJlbnQgd2F5LiBGb3IgaW4gdGhlIGFzdHJhbCB3b3JsZCBoZSBkcmF3cyByb3VuZCBoaW1zZWxmIGEgdmVyaXRhYmxlIApnYXJtZW50IG9mIHRoZSBmZWVsaW5ncyB3aGljaCBhcmUgaGFiaXR1YWwgdG8gaGltLCBhbmQgaW4gdGhlIG1lbnRhbCB3b3JsZCBhIApzaW1pbGFyIGdhcm1lbnQgb2YgdGhlIHRob3VnaHRzIGluIHdoaWNoIGhlIGNvbW1vbmx5IGluZHVsZ2VzLiBJIHNob3VsZCBsaWtlIHRvIAptYWtlIGl0IHRob3JvdWdobHkgY2xlYXIgdGhhdCBpbiBzYXlpbmcgdGhpcyBJIGFtIG5vdCBzcGVha2luZyBzeW1ib2xpY2FsbHksIGJ1dCAKYW0gZGVzY3JpYmluZyBhbiBvYmplY3RpdmUgZmFjdC0tIG9iamVjdGl2ZSBhcyBmYXIgYXMgdGhvc2UgaGlnaGVyIGxldmVscyBhcmUgCmNvbmNlcm5lZC4gSXQgaGFzIGJlZW4gcmVwZWF0ZWRseSBleHBsYWluZWQgdGhhdCBvdXIgZmVlbGluZ3MgYW5kIHRob3VnaHRzIApnZW5lcmF0ZSBkZWZpbml0ZSBmb3JtcyBpbiB0aGUgbWF0dGVyIHdoaWNoIHRoZXkgcmVzcGVjdGl2ZWx5IGFmZmVjdCwgYW5kIHRoYXQgCnRoZXNlIGZvcm1zIGZvbGxvdyB0aGUgdGhvdWdodHMgYW5kIGZlZWxpbmdzIHdoaWNoIG1hZGUgdGhlbS4gV2hlbiB0aG9zZSAKdGhvdWdodHMgYW5kIGZlZWxpbmdzIGFyZSBkaXJlY3RlZCB0b3dhcmRzIGFub3RoZXIgcGVyc29uLCB0aGUgZm9ybXMgYWN0dWFsbHkgCm1vdmUgdGhyb3VnaCBzcGFjZSB0byB0aGF0IHBlcnNvbiBhbmQgaW1waW5nZSB1cG9uIGhpcyBhdXJhLCBhbmQgaW4gbWFueSBjYXNlcyAKYmxlbmQgdGhlbXNlbHZlcyB3aXRoIGl0LiBXaGVuLCBob3dldmVyLCB0aGUgdGhvdWdodHMgYW5kIGZlZWxpbmdzIGFyZSAKc2VsZi1jZW50cmVkIChhcyBJIGZlYXIgd2UgbXVzdCBhZG1pdCB0aGF0IHRoZSBtYWpvcml0eSBvZiBtYW55IHBlb3BsZScgcyBhcmUpIAp0aGUgZm9ybXMgZG8gbm90IHBhc3MgYXdheSwgYnV0IHJlbWFpbiBjbHVzdGVyaW5nIHJvdW5kIHRoZSBtYW4gd2hvIGhhcyBnaXZlbiAKYmlydGggdG8gdGhlbS4gCgoKMTAwOC7CoMKgwqDCoApUaHVzIHdlIGZpbmQgdGhhdCBldmVyeSBtYW4gaGFzIGJ1aWx0IGZvciBoaW1zZWxmIGEgc2hlbGwgb2Ygc3VjaCAKdGhvdWdodC1mb3JtcywgYSB2ZXJpdGFibGUgY2xvdGhpbmcgYXQgdGhlaXIgbGV2ZWw7IHRodXMgYWxsIHRoaXMgdGhvdWdodCBhbmQgCmZlZWxpbmcgaXMgY29uc3RhbnRseSByZWFjdGluZyB1cG9uIHRoZSBtYW4gaGltc2VsZi4gSGUgZ2F2ZSBpdCBiaXJ0aDsgaGUgbWFkZSAKaXQgb3V0IG9mIGhpbXNlbGY7IGFuZCBub3cgaXQgaXMgZXh0ZXJuYWwgdG8gaGltIGFuZCBjYXBhYmxlIG9mIHJlYWN0aW5nIHVwb24gCmhpbSwgdGhvdWdoIGhlIGtub3dzIG5vdGhpbmcgb2YgaXRzIHByb3BpbnF1aXR5IGFuZCBpdHMgcG93ZXIuIEZsb2F0aW5nIHRodXMgCmFyb3VuZCBoaW0sIHRoZSBmb3JjZXMgd2hpY2ggaXQgcmFkaWF0ZXMgc2VlbSB0byBoaW0gdG8gY29tZSBhbHRvZ2V0aGVyIGZyb20gCndpdGhvdXQsIGFuZCBoZSBvZnRlbiByZWdhcmRzIGFzIGEgdGVtcHRhdGlvbiBmcm9tIHNvbWUgZXh0ZXJuYWwgc291cmNlLCBhIAp0aG91Z2h0IHdoaWNoIGlzIGluIHJlYWxpdHkgb25seSBhIHJlZmxlY3Rpb24gb2Ygb25lIG9mIGhpcyBvd24gb2YgeWVzdGVyZGF5IG9yIApvZiB5ZXN0ZXJ3ZWVrLiDvv71BcyBhIG1hbiB0aGlua2V0aCwgc28gaXMgaGUu77+9IEFuZCB0aGlzIGlzIGxhcmdlbHkgYmVjYXVzZSBoaXMgCm93biB0aG91Z2h0cyBhcmUgdGhlIG5lYXJlc3QgdG8gaGltIGFuZCBhcmUgY29uc3RhbnRseSBwbGF5aW5nIHVwb24gaGltLCBzbyB0aGF0IAp0aGV5IGhhdmUgYSBiZXR0ZXIgb3Bwb3J0dW5pdHkgdGhhbiBhbnkgb3RoZXJzIHRvIGFjdCB1cG9uIGhpbS4gCgoKMTAwOS7CoMKgwqDCoApUaGUgY29uc3RhbnQgcmFkaWF0aW9ucyB3aGljaCBwb3VyIGZvcnRoIGZyb20gaGlzIHRob3VnaHQtZm9ybXMgCmltcHJlZ25hdGUgdGhlIGluYW5pbWF0ZSBvYmplY3RzIHJvdW5kIGhpbSwgc28gdGhhdCBldmVuIHRoZSB3YWxscyBhbmQgZnVybml0dXJlIApvZiBoaXMgcm9vbSByZWZsZWN0IHVwb24gaGltIHRoZSB0aG91Z2h0cyBhbmQgZmVlbGluZ3MgdG8gd2hpY2ggaGUgaXMgCmFjY3VzdG9tZWQuIElmIGEgbWFuIHNpdHRpbmcgaW4gYSBjZXJ0YWluIGNoYWlyIGluIGEgY2VydGFpbiByb29tIGRldm90ZXMgCmhpbXNlbGYgZm9yIG1hbnkgZGF5cyB0byBzb21lIHRyYWluIG9yIHR5cGUgb2YgdGhvdWdodCwgaGUgZmlsbHMgdGhlIHN1cnJvdW5kaW5nIApvYmplY3RzLCB0aGUgY2hhaXIsIHRoZSBkZXNrLCB0aGUgdmVyeSB3YWxscyBvZiB0aGUgcm9vbSwgd2l0aCB2aWJyYXRpb25zIHdoaWNoIApleHByZXNzIHRoYXQgdHlwZSBvZiB0aG91Z2h0LiBIZSB1bmNvbnNjaW91c2x5IG1hZ25ldGlzZXMgdGhlc2UgcGh5c2ljYWwgCm9iamVjdHMsIHNvIHRoYXQgdGhleSBwb3NzZXNzIHRoZSBwb3dlciBvZiBzdWdnZXN0aW5nIHRob3VnaHRzIG9mIHRoZSBzYW1lIHR5cGUgCnRvIGFueSBvdGhlciBwZXJzb24gd2hvIHB1dHMgaGltc2VsZiBpbiB0aGUgd2F5IG9mIHRoZWlyIGluZmx1ZW5jZS4gTWFueSAKc3RyaWtpbmcgaW5zdGFuY2VzIG9mIHRoaXMgbWF5IGJlIGZvdW5kIGFtb25nIHRoZSBjb2xsZWN0aW9ucyBvZiBzdG9yaWVzIHdoaWNoIApyZWZlciB0byBzdWNoIG1hdHRlcnMuIEkgaGF2ZSBhbHJlYWR5IGdpdmVuIG9uZSBvZiBhIG51bWJlciBvZiBwZXJzb25zIApjb21taXR0aW5nIHN1aWNpZGUsIG9uZSBhZnRlciBhbm90aGVyLCBpbiB0aGUgc2FtZSBwcmlzb24tY2VsbCwgYmVjYXVzZSB0aGUgCnBsYWNlIHdhcyByZWVraW5nIHdpdGggdGhhdCBpZGVhLCBhbmQgdGhleSBmZWx0IGl0IGFjdGluZyB1cG9uIHRoZW0gYXMgYSBmb3JjZSAKZnJvbSB3aXRob3V0LCB3aGljaCB0aGV5IHRob3VnaHQgdGhlbXNlbHZlcyBjb21wZWxsZWQgdG8gb2JleS4gCgoKMTAxMC7CoMKgwqDCoApGcm9tIHRoZXNlIGNvbnNpZGVyYXRpb25zIGVtZXJnZSB0d28gbWFpbiBpZGVhcyBvbiB0aGUgc3ViamVjdCBvZiBvdXIgCmZlZWxpbmdzLCB3aGljaCBhdCBmaXJzdCBzaWdodCBhcHBlYXIgYWJzb2x1dGVseSBjb250cmFkaWN0b3J5OiBmaXJzdCwgdGhhdCB3ZSAKbXVzdCBiZSBtb3N0IGNhcmVmdWwgYWJvdXQgb3VyIGZlZWxpbmdzOyBzZWNvbmRseSwgdGhhdCB0aGV5IGRvIG5vdCBtYXR0ZXIgYXQgCmFsbC4gQnV0IHdoZW4gd2UgY29tZSB0byBzZWVrIGZvciB0aGUgZXhwbGFuYXRpb24gb2YgdGhpcyBhcHBhcmVudCAKY29udHJhZGljdGlvbiwgd2Ugc2VlIHRoYXQgaXQgbGllcyBpbiB0aGUgZmFjdCB0aGF0IHdlIGFyZSBub3QgdXNpbmcgdGhlIHdvcmQgYCAKZmVlbGluZ3MnIGluIHF1aXRlIHRoZSBzYW1lIHNlbnNlIGluIHRoZSB0d28gc3RhdGVtZW50cy4gV2UgbXVzdCBiZSBjYXJlZnVsIHdoYXQgCmZlZWxpbmdzIHdlIGFsbG93IHRvIGFyaXNlIHdpdGhpbiB1czsgd2UgbmVlZCBwYXkgbm8gYXR0ZW50aW9uIHRvIHRoZSBmZWVsaW5ncyAKd2hpY2ggcHJlc3MgdXBvbiB1cyBmcm9tIG91dHNpZGUuIFRydWU7IGJ1dCBpbiB0aGUgZmlyc3QgY2FzZSB3ZSBtZWFuIG9yaWdpbmFsIApmZWVsaW5ncy0tIHRob3VnaHQgLWZlZWxpbmdzIHdoaWNoIGVtYW5hdGUgZnJvbSBvdXIgb3duIG1pbmRzOyBpbiB0aGUgCnNlY29uZCBjYXNlIHdlIG1lYW4gbW9vZHMsIHdoaWNoIGNvbWUgd2l0aG91dCBhbnkgdm9saXRpb24gb24gb3VyIHBhcnQuIFRoZXNlIApsYXR0ZXIgd2UgY2FuIGFmZm9yZCB0byBkaXNyZWdhcmQgdXR0ZXJseS4gVGhlIG1vb2QgaXMgdGhlIHJlc3VsdCBvZiBvdXIgdGhvdWdodCAKb2YgeWVzdGVyZGF5LCBhbmQgd2UgY2Fubm90IGFsdGVyIHRoYXQgdGhvdWdodCBvciBhZmZlY3QgaXQgaW4gYW55IHdheTsgb3VyIApidXNpbmVzcyBpcyB3aXRoIHRoZSBvcmlnaW5hbCB0aG91Z2h0IG9mIHRvLWRheSwgZm9yIHRoYXQgdGhvdWdodCBpcyB3aXRoaW4gb3VyIApjb250cm9sLCBhbmQgd2hlbiBpdCBzdWdnZXN0cyBpdHNlbGYgd2UgY2FuIHJlY2VpdmUgaXQgYW5kIGFkb3B0IGl0LCBvciB3ZSBjYW4gCnJlamVjdCBpdC4gQW5kIHRoZSBzYW1lIGlzIHRydWUgd2l0aCBvdXIgZmVlbGluZ3MuIFlvdSBzYXkgeW91IGNhbm5vdCBoZWxwIHlvdXIgCmZlZWxpbmdzOyB0aGF0IGlzIHdoYXQgdGhlIG9yZGluYXJ5IHVuY29tcHJlaGVuZGluZyBwZXJzb24gdGhpbmtzLCBidXQgaXQgaXMgbm90IAppbiB0aGUgbGVhc3QgdHJ1ZS4gWW91IGNhbiBoZWxwIHRoZW0gYW5kIGNvbnRyb2wgdGhlbSBpZiB5b3Ugd2lsbC4gCgoKMTAxMS7CoMKgwqDCoApNT09EUyAKCgoxMDEyLsKgwqDCoMKgCldlIGhhdmUgYWxsIGhhZCB0aGUgZXhwZXJpZW5jZSBvZiBmZWVsaW5nIG1vb2RzIG9mIGRpZmZlcmVudCBzb3J0cyBjb21pbmcgCm92ZXIgdXMuIE9uIG9uZSBvY2Nhc2lvbiB3ZSBmZWVsIGpveWZ1bCB3aXRob3V0IGtub3dpbmcgd2h5LCBhbmQgb24gYW5vdGhlciAKb2NjYXNpb24gZGVwcmVzc2VkIGFuZCBwZXNzaW1pc3RpYy4gVGhlcmUgbWF5IGJlIG1hbnkgcmVhc29ucyBmb3IgdGhpcyBsYXR0ZXIgCmZlZWxpbmc7IGluZGlnZXN0aW9uIGluIHNvbWUgc2hhcGUgb3Igb3RoZXIgaXMgdGhlIGNvbW1vbmVzdC4gSXQgY29tZXMgb2Z0ZW4sIAp0b28sIGZyb20gbGFjayBvZiBleGVyY2lzZSwgbGFjayBvZiBzdW5saWdodCwgbGFjayBvZiBvcGVuIGFpcjsgYW5kIHRvbyBtdWNoIApuaWdodC13b3JrOyBidXQgYWxzbyBzb21ldGltZXMgaXQgaXMgc2ltcGx5IHRoZSByZWFjdGlvbiB1cG9uIHVzIG9mIHByZXZpb3VzIAp0aG91Z2h0cyBvZiBvdXIgb3duLS0gYW5kIHNvbWV0aW1lcyBvZiB0aGUgcHJldmlvdXMgdGhvdWdodHMgb2Ygc29tZW9uZSBlbHNlLiBJdCAKbWF5IGJlIGR1ZSB0byB0aGUgcHJlc2VuY2Ugb2YgYW4gYXN0cmFsIGVudGl0eSB3aG8gaXMgaW4gYSBjb25kaXRpb24gb2YgCmRlcHJlc3Npb24sIGFuZCBjb250cml2ZXMgdG8gY29tbXVuaWNhdGUgaGlzIHZpYnJhdGlvbiB0byBvdXIgYXN0cmFsIGJvZGllcy4gQnV0IAp3aGF0ZXZlciBtYXkgYmUgaXRzIGNhdXNlLCB0aGUgZGVwcmVzc2lvbiBtdXN0IGJlIHRocm93biBhc2lkZSwgYW5kIHdlIG11c3QgCmVuZGVhdm91ciB0byBnbyBvbiB3aXRoIG91ciB3b3JrIHByZWNpc2VseSBhcyB0aG91Z2ggaXQgZGlkIG5vdCBleGlzdC4gCgoKMTAxMy7CoMKgwqDCoApUaGlzIGlzIGxhcmdlbHkgYSBtYXR0ZXIgb2YgZmVlbGluZywgYW5kIHRoYXQgbWFrZXMgaXQgZGlmZmljdWx0IHRvIHRha2UgCmEgY29sZGx5IHNjaWVudGlmaWMgdmlldyBvZiBpdDsgeWV0IGl0IGlzIHByZWNpc2VseSB0aGF0IHdoaWNoIHdlIG11c3QgZW5kZWF2b3VyIAp0byBkby4gVGhlc2UgbW9vZHMgb2Ygb3VycyBtYWtlIG5vIGRpZmZlcmVuY2Ugd2hhdGV2ZXIgdG8gdGhlIGZhY3RzIG9mIGxpZmUuIFdoeSAKdGhlcmVmb3JlIHNob3VsZCB3ZSBhbGxvdyB0aGVtIHRvIGluZmx1ZW5jZSB1cz8gT3VyIGZ1dHVyZSBkZXN0aW55IGxpZXMgYmVmb3JlIAp1cywgYW5kIGlzIGVudGlyZWx5IHVuYWZmZWN0ZWQgYnkgdGhlIGZhY3QgdGhhdCB3ZSB0YWtlIGF0IG9uZSB0aW1lIGFuIApvcHRpbWlzdGljIGFuZCBhdCBhbm90aGVyIGEgcGVzc2ltaXN0aWMgdmlldyBvZiBpdC4gV2h5IHRoZW4gc2hvdWxkIHdlIGFsbG93IApvdXJzZWx2ZXMgdG8gYmUgd29ycmllZCB0by1kYXkgbWVyZWx5IGJlY2F1c2Ugd2Ugd2VyZSB3b3JyaWVkIHllc3RlcmRheSwgb3IgCmJlY2F1c2Ugc29tZSBhc3RyYWwgZW50aXR5IGZlZWxzIHdvcnJpZWQ/IFRoZSBoaWRkZW4gc2lkZSBvZiBhbGwgdGhlc2UgbW9vZHMgCnNob3dzIHRoZW0gdG8gY29tZSBmcm9tIHZhcmlvdXMgY2F1c2VzOyBidXQgaXQgYWxzbyBzaG93cyB1cyBjbGVhcmx5IHRoYXQsIAp3aGF0ZXZlciB0aGUgY2F1c2VzIG1heSBiZSwgb3VyIGR1dHkgaXMgdG8gZ28gb24gd2l0aCBvdXIgd29yaywgYW5kIHBheSAKYWJzb2x1dGVseSBubyBhdHRlbnRpb24gdG8gdGhlbS4gCgoKMTAxNC7CoMKgwqDCoApSRUNVUlJFTlQgVEhPVUdIVFMgCgoKMTAxNS7CoMKgwqDCoApJbiB5ZXQgYW5vdGhlciB3YXksIHRvbywgd2UgbXVzdCBjYXJlZnVsbHkgd2F0Y2ggdGhlIGFjdGlvbiBvZiByZWN1cnJpbmcgCnRob3VnaHRzLiBXaGF0IGF0IGZpcnN0IHdhcyBtZXJlbHkgYW4gdW5mb3VuZGVkIHN1c3BpY2lvbi0tIHBlcmhhcHMgYW4gdW53b3J0aHkgCnN1c3BpY2lvbi0tIG1heSBwcmVzZW50bHkgc29saWRpZnkgaXRzZWxmIGludG8gYSBwcmVqdWRpY2U7IG5vdCBiZWNhdXNlIHRoZXJlIGlzIAphbnkgYWRkaXRpb25hbCBldmlkZW5jZSBmb3IgaXQsIGJ1dCBzaW1wbHkgYnkgdmlydHVlIG9mIGl0cyBvd24gcmVjdXJyZW5jZS4gV2UgCmFkb3B0LCBvZnRlbiB3aXRob3V0IGR1ZSByZWFzb24sIGEgY2VydGFpbiBhdHRpdHVkZSB0b3dhcmRzIHNvbWUgcGVyc29uIG9yIAp0aGluZywgYW5kIHRoZW4sIG1lcmVseSBiZWNhdXNlIHdlIGhhdmUgdGFrZW4gaXQgdXAsIHdlIHBlcnNpc3QgaW4gaXQ7IGFuZCBldmVuIAp0aG91Z2ggd2UgbWF5IGJlIHF1aXRlIGF3YXJlIHRoYXQgYXQgZmlyc3QgaXQgd2FzIG5vdGhpbmcgYnV0IHRoZSBtZXJlc3QgCnN1c3BpY2lvbiwgYnkgdmlydHVlIG9mIGhhdmluZyB0aG91Z2h0IGl0IG92ZXIgYW5kIG92ZXIgYWdhaW4gd2UgYmVsaWV2ZSBpdCB0byAKYmUgd2VsbC1mb3VuZGVkLCBhbmQgcHJvY2VlZCB0byByZWFzb24gZnJvbSBpdCBhcyB0aG91Z2ggaXQgd2VyZSBhIGZhY3QuIFRodXMgCm9mdGVuIHByZWp1ZGljZXMgYXJlIGJvcm4sIGFuZCB3ZSBoYXZlIGFscmVhZHkgZXhwbGFpbmVkIHRoYXQgcHJlanVkaWNlcyBhcmUgCmZhdGFsIHRvIHByb2dyZXNzLiAKCgoxMDE2LsKgwqDCoMKgCkFnYWluLCB0aGlzIHJlYWN0aW9uIG9mIHRob3VnaHQtZm9ybXMgdGVuZHMgdG8gc2V0IHVwIGluIHVzIGNlcnRhaW4gCnF1YWxpdGllcy4gTWFueSBhIG1hbiBoYXMgYmVndW4gYnkgYmVpbmcsIHF1aXRlIHJpZ2h0bHksIGNhcmVmdWwgYXMgdG8gdGhlIApleHBlbmRpdHVyZSBvZiBoaXMgbW9uZXk7IGJ1dCB0aGUgYW54aW91cyB0aG91Z2h0IHdoaWNoIGhlIGhhcyBkZXZvdGVkIHRvIHRoZSAKY29uc2lkZXJhdGlvbiBhcyB0byBob3cgaGUgc2hvdWxkIGVjb25vbWlzZSBoYXMgcmVhY3RlZCB1cG9uIGhpbSBhZ2FpbiBhbmQgYWdhaW4gCnVudGlsIGl0IGhhcyBiZWNvbWUgdGhlIGRvbWluYW50IGlkZWEgaW4gaGlzIG1pbmQtLSB1bnRpbCBpdCBoYXMgZ2VuZXJhdGVkIAp3aXRoaW4gaGltIHRoZSBxdWFsaXR5IG9mIGF2YXJpY2UuIEl0IGlzIG5vdCBvbmx5IGlud2FyZCB1cG9uIGl0cyBtYWtlciB0aGF0IHRoZSAKdGhvdWdodC1mb3JtIHBvdXJzIGl0cyBpbmZsdWVuY2U7IGl0IGlzIGFsc28gcmFkaWF0aW5nIG91dHdhcmRzLiBBbmQgdGhlIGVmZmVjdCAKb2YgdGhhdCBvdXR3YXJkIHZpYnJhdGlvbiBpcyB0byBhdHRyYWN0IG90aGVyIHNpbWlsYXIgdGhvdWdodC1mb3JtcyB3aGljaCAKc3RyZW5ndGhlbiB0aGUgYWN0aW9uIG9mIHRoZSBvcmlnaW5hbC4gSXQgaXMgdGhlcmVmb3JlIG5lY2Vzc2FyeSBmb3IgdXMgdG8gYmUgb24gCm91ciBndWFyZCBpbiB0aGVzZSBtYXR0ZXJzLCB0byB3YXRjaCBjYXJlZnVsbHkgdGhlIHRob3VnaHRzIGFuZCBmZWVsaW5ncyB3aGljaCAKYXJpc2Ugd2l0aGluIHVzLCBhbmQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aG9zZSB3aGljaCBjb21lIGZyb20gYWJvdmUsIGZyb20gCnRoZSBlZ28sIGFuZCB0aG9zZSB3aGljaCBtZXJlbHkgZmxvdyBpbiBhdCBsb3dlciBsZXZlbHMuIAoKCjEwMTcuwqDCoMKgwqAKRkFMTElORyBJTiBMT1ZFIAoKCjEwMTguwqDCoMKgwqAKQW5vdGhlciBpbnN0YW5jZSBvZiB0aGUgcmVwZWF0ZWQgYWN0aW9uIG9mIGEgdGhvdWdodC1mb3JtIGlzIHdoYXQgaXMgCmNvbW1vbmx5IGNhbGxlZCBmYWxsaW5nIGluIGxvdmUuIE9mIHRoaXMgdGhlcmUgYXJlIGF0IGxlYXN0IHR3byBjbGVhcmx5IG1hcmtlZCAKdmFyaWV0aWVzLCB3aGljaCBhcmUgY29tbW9ubHkgZGVmaW5lZCBieSBub3ZlbGlzdHMgYXMg77+9Z3JhZHVhbGx5IGdyb3dpbmcgaW50byAKbG92Ze+/vSBhbmQgYXMg77+9ZmFsbGluZyBpbiBsb3ZlIGF0IGZpcnN0IHNpZ2h077+9LiBUaGlzIGxhdHRlciBwaGVub21lbm9uIChpZiBpdCAKZXZlciByZWFsbHkgb2NjdXJzLCBhcyBJIGFtIGluY2xpbmVkIHRvIHRoaW5rIHRoYXQgaXQgZG9lcykgbXVzdCBtZWFuIHRoZSAKcmVjb2duaXRpb24gYnkgdGhlIGVnbyBvZiBvbmUgd2hvIHdhcyB3ZWxsIGtub3duIGluIHByZXZpb3VzIGluY2FybmF0aW9uczsgYnV0IAp0aGUgZm9ybWVyIGFuZCBtb3JlIG9yZGluYXJ5IHZhcmlldHkgaXMgdXN1YWxseSBkdWUgdG8gdGhlIGludGVuc2lmaWVkIGFjdGlvbiBvZiAKcmVwZWF0ZWQgdGhvdWdodC4gCgoKMTAxOS7CoMKgwqDCoApUbyBzcGVhayB3aXRoIGFueSBkZWdyZWUgb2YgY29tbW9uIHNlbnNlIG9uIHRoaXMgc3ViamVjdCBpcyBsaWtlbHkgdG8gCnJlbmRlciBvbmUgdW5wb3B1bGFyLCBiZWNhdXNlIGVhY2ggbWFuIHJlZ2FyZHMgaGlzIGxhZHktbG92ZSBhcyB0aGUgb25seSB3b21hbiAKaW4gdGhlIHdvcmxkIHdobyBpcyByZWFsbHkgYW4gZXBpdG9tZSBvZiBhbGwgdGhlIHZpcnR1ZXMsIGFuZCBpcyBwcmVwYXJlZCB0byAKbWFpbnRhaW4gdGhhdCBwcm9wb3NpdGlvbiBhdCB0aGUgc3dvcmQtcG9pbnQgaWYgbmVjZXNzYXJ5LiBZZXQgaWYgaXQgd2VyZSAKcG9zc2libGUgZm9yIGhpbSB0byB0YWtlIGFuIHVuaW1wYXNzaW9uZWQgYW5kIHJlYXNvbmFibGUgdmlldyBvZiB0aGUgbWF0dGVyIAood2hpY2ggb2YgY291cnNlIGl0IGlzIG5vdCksIGhlIHdvdWxkIGhhdmUgdG8gYWRtaXQgdGhhdCwgd2hpbGUgc2hlIGlzIGFsbCB0aGlzIAp0byBoaW0sIHRoZXJlIGFyZSBvdGhlciBsYWRpZXMgaW4gdGhlIHdvcmxkIHdobyBhcHBlYXIgdG8gb2NjdXB5IHRoZSAKc2FtZSBwb3NpdGlvbiBpbiB0aGUgbWluZHMgb2Ygb3RoZXIgcGVvcGxlLS0gcGVvcGxlIHdobyBhcmUsIGluIHRoZSBhYnN0cmFjdCwgCmp1c3QgYXMgaW50ZWxsaWdlbnQgYW5kIGFzIGNhcGFibGUgb2YgZm9ybWluZyBhbiBvcGluaW9uIG9uIHN1Y2ggYSBtYXR0ZXIgYXMgaGUgCmhpbXNlbGYgaXMuIAoKCjEwMjAuwqDCoMKgwqAKV2h5IHRoZW4sIHdoZXJlIHRoZXJlIGlzIG5vIHF1ZXN0aW9uIG9mIGEgdGllIGZvcm1lZCBpbiBhIHByZXZpb3VzIAppbmNhcm5hdGlvbiwgc2hvdWxkIGhlIHNlbGVjdCBhIGNlcnRhaW4geW91bmcgd29tYW4gb3V0IG9mIGFsbCB0aGUgcmVzdCBvZiB0aGUgCndvcmxkLCB0byBiZSBmb3IgaGltIGFuIGVtYm9kaW1lbnQgb2YgYWxsIHRoYXQgaXMgbm9ibGUgYW5kIGJlYXV0aWZ1bD8gVGhlIHRydXRoIAppcyB1bnJvbWFudGljOyBpdCBpcyBsYXJnZWx5IGEgcXVlc3Rpb24gb2YgcHJvcGlucXVpdHkuIFRoZSBub3JtYWwgeW91bmcgbWFuLCAKdGhyb3duIGJ5IGNpcmN1bXN0YW5jZXMgaW50byBjbG9zZSByZWxhdGlvbnMgd2l0aCB0aGUgbm9ybWFsIHlvdW5nIHdvbWFuLCBpcyAKbGlrZWx5IHRvIGZhbGwgaW4gbG92ZSB3aXRoIGhlcjsgYW5kIHRob3VnaCBiZSB3b3VsZCBuZXZlciBiZWxpZXZlIGl0LCBpZiBoZSBoYWQgCmJlZW4gdGhyb3duIGludG8gc2ltaWxhciBpbnRpbWF0ZSByZWxhdGlvbnMgd2l0aCBhbnkgb25lIG9mIGEgaHVuZHJlZCBvdGhlciAKZXF1YWxseSBub3JtYWwgeW91bmcgd29tZW4sIGhlIHdvdWxkIGhhdmUgZmFsbGVuIGluIGxvdmUgd2l0aCB0aGF0IG90aGVyIGp1c3QgYXMgCmVhc2lseSEgCgoKMTAyMS7CoMKgwqDCoApJbiB0aGUgZmlyc3QgcGxhY2UgYSB5b3VuZyBsYWR5IG1ha2VzIHVwb24gaGltIGFuIGFncmVlYWJsZSBwYXNzaW5nIAppbXByZXNzaW9uOyBpZiBoZSBkaWQgbm90IG1lZXQgaGVyIGFnYWluLCBpdCBpcyBwcm9iYWJsZSB0aGF0IGFmdGVyIGEgZmV3IGRheXMgCmhlIHdvdWxkIGNlYXNlIHRvIHRoaW5rIG9mIGhlcjsgYnV0IGlmIGhlIHNlZXMgaGVyIG9mdGVuLCBoaXMgdGhvdWdodC1mb3JtIG9mIApoZXIgYmVjb21lcyBzdHJlbmd0aGVuZWQgYW5kIGhlIGJlZ2lucywgdGhvdWdoIGhlIGRvZXMgbm90IGtub3cgaXQsIHRvIHNlZSBtb3JlIApkZWVwbHkgaW50byBoZXIgdGhhbiBoZSBkaWQgYXQgZmlyc3QuIEFuZCB0aGlzIHByb2Nlc3MgY29udGludWVzIHVudGlsIGhlIGxlYXJucyAKdG8gc2VlIGluIGhlciB0aGUgZGl2aW5lIHJlYWxpdHkgd2hpY2ggbGllcyBiZWhpbmQgdXMgYWxsLiBJdCBsaWVzIGJlaGluZCBhbGwgCmVxdWFsbHksIGJ1dCBoZSBoYXMgbGVhcm50IHRvIHNlZSBpdCBvbmx5IGluIGhlciwgYW5kIHRoZXJlZm9yZSBmb3IgaGltIGl0IHRha2VzIApoZXIgZm9ybTsgYW5kIHdoZW4gb25jZSBoZSBoYXMgc2VlbiBpdCB0aHJvdWdoIHRoYXQgZm9ybSwgdG8gaGltIGF0IGFueSByYXRlIGl0IApjYW4gdGFrZSBubyBvdGhlci4gQW5kIHNvIGhlIGRvd2VycyBoZXIgaW4gaGlzIGltYWdpbmF0aW9uIHdpdGggYWxsIHNvcnRzIG9mIAp2aXJ0dWVzIGFuZCBhbGwgc3BsZW5kaWQgcXVhbGl0aWVzLS0gd2hpY2ggYXJlIGluIGhlciwgYXMgdGhleSBhcmUgaW4gCnVzIGFsbCwgeWV0IG1heSBub3QgYmUgbWFuaWZlc3RlZCB0aHJvdWdoIGhlciB0byBvdGhlciBleWVzIHRoYW4gaGlzLiBUaGV5IGFyZSAKaW4gaGVyLCBiZWNhdXNlIGhlciBlZ28sIGxpa2UgYWxsIG90aGVycywgaXMgYSBzcGFyayBvZiB0aGUgRGl2aW5lIEZpcmU7IGFuZCBpbiAKSGltIHRoZXNlIHF1YWxpdGllcyBpbmhlcmUgYW5kIGV4aXN0IGluIHBlcmZlY3Rpb24uIFRoZSBtYW5pZmVzdGF0aW9uIG9mIHRoZW0gaW4gCnRoaXMgcGh5c2ljYWwgd29ybGQgbWF5IGJlIG5vIGdyZWF0ZXIgaW4gaGVyIHRoYW4gaW4gYSBodW5kcmVkIG90aGVycywgYnV0IGhlIApzZWVzIHRoZW0gaW4gaGVyIGJlY2F1c2UgaXQgd2FzIHRocm91Z2ggaGVyIHRoYXQgaGUgZmlyc3QgbGVhcm50IHRvIHJlYWxpc2UgdGhlbSAKYXQgYWxsLiAKCgoxMDIyLsKgwqDCoMKgCkFuZCBzbyBpbiB0cnV0aCwgZnJvbSB0aGUgb2NjdWx0aXN0JyBzIHBvaW50IG9mIHZpZXcgdGhlIHJoYXBzb2RpZXMgb2YgCnRob3VzYW5kcyBvZiBsb3ZlcnMgYWJvdXQgdGhlIHJlc3BlY3RpdmUgb2JqZWN0cyBvZiB0aGVpciBhZG9yYXRpb24gYXJlIGFsbCAKdHJ1ZSwgZXZlbiB0aG91Z2ggdGhleSBzZWVtIG11dHVhbGx5IGV4Y2x1c2l2ZTsgZm9yIHRoZSB0cnV0aCBpcyB0aGF0IHRoYXQgd2hpY2ggCnRoZXkgYWxsIGxvdmUgaXMgT25lLCB0aG91Z2ggZm9yIGVhY2ggSXQgbWFuaWZlc3RzIHRocm91Z2ggYSBkaWZmZXJlbnQgdmVoaWNsZSwgCmFuZCBiZWNhdXNlIHRoZXkgd2l0aCB0aGVpciBwYXJ0aWFsIHZpc2lvbiBjYW5ub3Qgc2VwYXJhdGUgdGhlIE9uZSBmcm9tIEl0cyAKbWFuaWZlc3RhdGlvbiwgdGhleSBlbmRvdyB0aGF0IHNwZWNpYWwgbWFuaWZlc3RhdGlvbiB3aXRoIHF1YWxpdGllcyB3aGljaCBiZWxvbmcgCm5vdCB0byBpdCBidXQgdG8gVGhhdCB3aGljaCBzaGluZXMgdGhyb3VnaC4gU28gYWxsIGFyZSByaWdodCBpbiB0aGUgcXVhbGl0aWVzIAp3aGljaCB0aGV5IHNlZSwgYW5kIHdyb25nIG9ubHkgaW4gY2xhaW1pbmcgZXhjbHVzaXZlIG1hbmlmZXN0YXRpb24gdGhyb3VnaCB0aGUgCmZvcm0gdGhyb3VnaCB3aGljaCB0aGV5IGhhdmUgbGVhcm50IHRvIHNlZSB0aGVtLiAKCgoxMDIzLsKgwqDCoMKgCk9mdGVuIHRoZSBpbXBhcnRpYWwgb3V0c2lkZXIgZmluZHMgaXQgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQsIGxvb2tpbmcgYXQgCml0IGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIHBoeXNpY2FsIHdvcmxkLCB3aGF0IGEgY2VydGFpbiBtYW4gc2F3IGluIGEgCmNlcnRhaW4gd29tYW4gdG8gaW5kdWNlIGhpbSB0byBkZXNpcmUgdG8gbWFrZSBoZXIgaGlzIHdpZmUuIFRoZSBhbnN3ZXIgaXMgdGhhdCAKdGhlIGh1c2JhbmQgc2F3IGluIGhlciBzb21ldGhpbmcgd2hpY2ggaXMgbm90IHZpc2libGUgb24gdGhlIHBoeXNpY2FsIGxldmVsOyAKc29tZXRoaW5nIHdoaWNoIGlzIHRvIGJlIGRpc2Nlcm5lZCBvbmx5IGJ5IGxvb2tpbmcgbXVjaCBkZWVwZXIgdGhhbiB0aGF0LCBhbmQgCmhpcyBhdHRyYWN0aW9uIHRvIGhlciB3YXMgdGhhdCBpdCB3YXMgdGhyb3VnaCBoZXIgdGhhdCB0aGF0IGFzcGVjdCBvZiB0aGUgRGl2aW5lIAp3YXMgcmV2ZWFsZWQgdG8gaGltLiAKCgoxMDI0LsKgwqDCoMKgClBlb3BsZSBvZnRlbiBzYXkgdGhhdCB0aGUgbG92ZXInIHMgaW1hZ2luYXRpb24gZ2l2ZXMgdG8gaGlzIHByb3NwZWN0aXZlIApicmlkZSBxdWFsaXRpZXMgd2hpY2ggaW4gdHJ1dGggc2hlIGRvZXMgbm90IHBvc3Nlc3MuIFRoZSBvY2N1bHRpc3Qgd291bGQgc2F5IAp0aGF0IHRoZSBsb3ZlciBpcyByaWdodDsgc2hlIGRvZXMgcG9zc2VzcyB0aGVtLCBiZWNhdXNlIEdvZCwgb2Ygd2hvbSBzaGUgaXMgYSAKcGFydCwgcG9zc2Vzc2VzIHRoZW0uIEFuZCBmb3IgaGVyIGxvdmVyIHNoZSBpcyBhIGNoYW5uZWwgdGhyb3VnaCB3aGljaCBoZSBjYW4gCnNlZSBIaW0uIEJ1dCBvdGhlcnMgZm9yIHdob20gc2hlIGlzIG5vdCB0aGUgY2hhbm5lbCBjYW5ub3Qgc2VlIHRob3NlIHF1YWxpdGllcyAKdGhyb3VnaCBoZXIsIGJ1dCBtYXkgYXQgdGhlIHNhbWUgdGltZSBiZSBzZWVpbmcgdGhlbSB0aHJvdWdoIHNvbWVvbmUgZWxzZS4gCgoKMTAyNS7CoMKgwqDCoApPbmUgZ3JlYXQgYWR2YW50YWdlIG9mIHRoaXMgaXMgdGhhdCwgaWYgdGhlIHdvbWFuIGJlIGEgZ29vZCB3b21hbiwgc2hlIAp0cmllcyB0byBsaXZlIHVwIHRvIHRoZSBsZXZlbCBvZiBoZXIgbG92ZXInIHMgdGhvdWdodC1mb3JtIG9mIGhlci4gU2hlIGlzIGZ1bGx5IApjb25zY2lvdXMgdGhhdCBoZSBpcyBpZGVhbGlzaW5nIGhlciwgdGhhdCBoZSBlbmRvd3MgaGVyIHdpdGggcXVhbGl0aWVzIHdoaWNoIHNoZSAKZG9lcyBub3QgYmVsaWV2ZSBoZXJzZWxmIHRvIHBvc3Nlc3M7IGJ1dCBpbiBvcmRlciB0aGF0IGhlIG1heSBub3QgYmUgCmRpc2FwcG9pbnRlZCwgaW4gb3JkZXIgdGhhdCBzaGUgbWF5IGJlIHdvcnRoeSBvZiBoaXMgbG92ZSBhbmQgdHJ1c3QsIHNoZSB0cmllcyAKaGFyZCB0byBkZXZlbG9wIHRoZXNlIHF1YWxpdGllcyBpbiBoZXJzZWxmLS0gdG8gYmUgd2hhdCBoZSB0aGlua3MgaGVyIHRvIGJlLiBBbmQgCmJlY2F1c2UgaW4gZXNzZW5jZSBzaGUgaXMgd2hhdCBoZSB0aGlua3MgaGVyLCBiZWNhdXNlIGluIHRoZSBNb25hZCAKYmVoaW5kIGhlciB0aG9zZSBxdWFsaXRpZXMgZG8gZXhpc3QsIHNoZSBpcyBvZnRlbiBzdWNjZXNzZnVsLCBhdCBsZWFzdCAKdG8gc29tZSBleHRlbnQsIGluIGJyaW5naW5nIHRoZW0gZG93biBpbnRvIG1hbmlmZXN0YXRpb24sIGFuZCB0aHVzIHRoZSAKY29uZmlkZW5jZSBvZiB0aGUgbG92ZXIgaXMganVzdGlmaWVkLCBhbmQgaGlzIGZhaXRoIGluIGhlciBicmluZ3MgZm9ydGggaGVyIApoaWdoZXIgc2VsZiBhbmQgaGVscHMgaGVyIG9uIHRoZSBwYXRoIG9mIGV2b2x1dGlvbi4gCgoKMTAyNi7CoMKgwqDCoApBbGwgdGhpcywgYmUgaXQgb2JzZXJ2ZWQsIHdvcmtzIGJvdGggd2F5cywgYW5kIHRoZSB3b21hbiB0cmllcyB0byBmaW5kIApoZXIgaWRlYWwgdGhyb3VnaCBhIG1hbiBqdXN0IGFzIGRvZXMgYSBtYW4gdGhyb3VnaCBhIHdvbWFuLiBUaGUgaHVtYW4gYmVpbmcgYXMgCmF0IHByZXNlbnQgY29uc3RpdHV0ZWQgdXN1YWxseSBmaW5kcyBoaXMgaWRlYWwgbW9zdCByZWFkaWx5IHRocm91Z2ggc29tZSBvbmUgb2YgCnRoZSBvcHBvc2l0ZSBzZXgsIGJ1dCB0aGlzIGlzIG5vdCBpbnZhcmlhYmx5IHNvLiBTb21ldGltZXMgYSB5b3VuZ2VyIG1hbiBhZG9yZXMgCmFuIGVsZGVyIG9uZSwgYW5kIHRocm91Z2ggaGlzIGFkbWlyYXRpb24gYW5kIGFmZmVjdGlvbiBmb3IgaGltIG9idGFpbnMgaGlzIApnbGltcHNlIG9mIHRoYXQgdHJ1ZSB3b3JsZCB3aGljaCB3ZSBjYWxsIHRoZSBpZGVhbDsgYW5kIHNvbWV0aW1lcyB0aGUgc2FtZSAKZmVlbGluZyBleGlzdHMgYmV0d2VlbiBhIHlvdW5nZXIgd29tYW4gYW5kIGFuIGV4cGVyaWVuY2VkIG1hdHJvbi4gCgoKMTAyNy7CoMKgwqDCoApTaW5jZSB0aGF0IHJlYWwgaWRlYWwgaXMgYmVoaW5kIHVzIGFsbCBhbGlrZSwgdGhlIG15c3RpYyB3aG8gbGl2ZXMgCndyYXBwZWQgaW4gc29saXRhcnkgY29udGVtcGxhdGlvbiBtYXkgZmluZCBpdCBqdXN0IGFzIHBlcmZlY3RseSB3aXRoaW4gaGltc2VsZi4gCkl0IGlzIHRoZSB0ZW5kZW5jeSBvZiBldmVyeSBtYW4gdG8gc2VlayBpdCwgd2hldGhlciB0aHJvdWdoIGhpcyBvd24gc2VsZiBvciAKdGhyb3VnaCBhbm90aGVyLCBhbmQgdGhlIGZlZWxpbmcgd2hpY2ggbW92ZXMgaGltIHRvIHNlZWsgaXQgaXMgdGhlIGRpdmluZWx5IAppbXBsYW50ZWQgZm9yY2Ugb2YgZXZvbHV0aW9uLCB0aGUgZGVzaXJlIHRvIGZpbmQgYW5kIHRvIHJldHVybiB0byB0aGUgRGl2aW5lIApmcm9tIHdob20gd2UgY2FtZS4gRm9yIHRoZSBmb3JjZSB3aGljaCBhdCB0aGlzIGVhcmx5IHN0YWdlIGNhbiBvbmx5IG1hbmlmZXN0IAppdHNlbGYgaW4gdGhpcyB3YXkgaXMgdGhlIHZlcnkgc2FtZSB0aGF0IGxhdGVyIG9uIHdpbGwgYnJpbmcgdGhlIG1hbiB0byBmaW5hbCAKdW5pb24uIEFzIFNhaW50IEF1Z3VzdGluZSBiZWF1dGlmdWxseSBwdXQgaXQ6IO+/vUdvZCwgVGhvdSBoYXN0IG1hZGUgdXMgZm9yIApUaHlzZWxmLCBhbmQgb3VyIGhlYXJ0cyBhcmUgZXZlciByZXN0bGVzcyB0aWxsIHRoZXkgZmluZCB0aGVpciByZXN0IGluIFRoZWUu77+9CgoKMTAyOC7CoMKgwqDCoApVTlNFVCBCTE9TU09NIAoKCjEwMjkuwqDCoMKgwqAKQSBiZWF1dGlmdWwgdmFyaWFudCBvZiB0aGlzLCB3aGljaCBpcyBvZnRlbiBtaXN1bmRlcnN0b29kLCBpcyB0aGUgCu+/vWZhbGxpbmcgaW4gbG92Ze+/vSBvZiBjaGlsZHJlbi4gVW5zeW1wYXRoZXRpYyBhZHVsdHMgb2Z0ZW4gcmlkaWN1bGUgaXQsIGJlY2F1c2UgCnRoZXkga25vdyB0aGF0IGluIG5pbmUgY2FzZXMgb3V0IG9mIHRlbiBpdHMgb2JqZWN0IGlzIHF1aXRlIHVuc3VpdGFibGUsIGl0IGRvZXMgCm5vdCBsYXN0LCBhbmQgaXQgY29tZXMgdG8gbm90aGluZy4gQWxsIHRoYXQgaXMgdHJ1ZSwgeWV0IGluIGVzc2VuY2UgaXQgaXMgdGhlIApzYW1lIGZlZWxpbmcgYXMgdGhhdCB3aGljaCBjb21lcyBpbiBsYXRlciBsaWZlLCBhbmQgaXQgaXMgdXN1YWxseSBhIGZhciBwdXJlciAKYW5kIG1vcmUgdW5zZWxmaXNoIGZvcm0gb2YgaXQuIElmIHlvdSBjb3VsZCBwZW5ldHJhdGUgdGhlIHNlY3JldCBoZWFydCBvZiBhIAp5b3VuZyBsb3ZlciBvZiB0ZW4gb3IgdHdlbHZlLCB5b3Ugd291bGQgZmluZCB0aGF0IG9mdGVuIGhlIGRvZXMgbm90IGV2ZW4gZHJlYW0gCm9mIG1hcnJ5aW5nIGhpcyBwcm9zcGVjdGl2ZSBicmlkZSBhbmQgc2V0dGxpbmcgZG93biBjb21mb3J0YWJseSB0byBiZSBoYXBweSBmb3IgCmV2ZXIgYWZ0ZXI7IGhpcyBpZGVhIGlzIHJhdGhlciB0byBzYWNyaWZpY2UgaGltc2VsZiBmb3IgaGVyLCB0byBleGhpYml0IHNwbGVuZGlkIApoZXJvaXNtIGluIGhlciBkZWZlbmNlLCBhbmQgZGllIGF0IGhlciBmZWV0LiBBYnN1cmRseSByb21hbnRpYywgbm8gZG91YnQsIHlldCAKbm90IHdpdGhvdXQgaXRzIGdvb2QgZWZmZWN0IHVwb24gdGhhdCB5b3VuZyBoZWFydC0tIGluZGVlZCwgdXBvbiBib3RoIHRoZSB5b3VuZyAKaGVhcnRzIGNvbmNlcm5lZC4gCgoKMTAzMC7CoMKgwqDCoApUbyBwb3VyIG91dCBzdWNoIHRob3VnaHQtZm9ybXMgYXMgdGhlc2UgaXMgaW5kZWVkIHdlbGwsIGJvdGggZm9yIHRoZWlyIApjcmVhdG9yIGFuZCB0aGVpciByZWNpcGllbnQsIGFuZCB0aGV5IGFyZSBwcmVwYXJpbmcgYm90aCBmb3IgdGhlIG1hdHVyZXIgYnV0IG5vdCAKbW9yZSBiZWF1dGlmdWwgZmVlbGluZyB3aGljaCBjb21lcyBpbiBsYXRlciBsaWZlLiBIYXZlIHlvdSBldmVyIHNlZW4gdGhlIHZhc3QgCmFtb3VudCBvZiB1bnNldCBibG9zc29tIG9uIG91ciBjaGVycnktdHJlZXMgb3IgcGx1bS10cmVlcz8gT25lIG1pZ2h0IHRoaW5rIG9mIAphbGwgdGhhdCBhcyBhIHVzZWxlc3Mgd2FzdGUgb2YgTmF0dXJlJyBzIGVuZXJneSwgYmVjYXVzZSBpdCBuZXZlciBjb21lcyB0byAKZnJ1aXQuIFlldCB0aGUgYm90YW5pc3QgdGVsbHMgdXMgdGhhdCBpdCBpcyBieSBubyBtZWFucyB1c2VsZXNzLS0gdGhhdCBpdCBoYXMgYW4gCmltcG9ydGFudCBwdXJwb3NlIHRvIHNlcnZlIGluIGRyYXdpbmcgdXAgdGhlIHNhcCBhbmQgdGhlcmVieSBzdHJlbmd0aGVuaW5nIHRoZSAKdHJlZSwgYW5kIHNvIHByZXBhcmluZyB0aGUgd2F5IGZvciBmaW5lciBmcnVpdCBpbiB0aGUgYXV0dW1uIHRoYW4gY291bGQgaGF2ZSAKZXhpc3RlZCB3aXRob3V0IGl0LiBUaGVzZSBpbm5vY2VudCB5b3VuZyBsb3ZlLWFmZmFpcnMgb2YgY2hpbGRob29kIGhhdmUgCnByZWNpc2VseSB0aGUgc2FtZSBlZmZlY3Q7IHRoZXkgc3RyZW5ndGhlbiB0aGUgbmF0dXJlIGFuZCBwcmVwYXJlIGl0IGZvciB0aGUgCmZ1bGxlciBkZXZlbG9wbWVudCB3aGljaCBjb21lcyBsYXRlci4gCgoKMTAzMS7CoMKgwqDCoApPQ0NVTFRJU00gQU5EIE1BUlJJQUdFIAoKCjEwMzIuwqDCoMKgwqAKWWV0IGluIHNwaXRlIG9mIGFsbCB0aGF0IEkgaGF2ZSBzYWlkIGFib3ZlLS0gaW4gc3BpdGUgb2YgdGhlIGJlYXV0eSBhbmQgCmV4YWx0YXRpb24gb2YgdGhlIGxvdmUgYWZmYWlyLS0gY2FuIHdlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2Ygb2NjdWx0aXNtIAphZHZpc2Ugb3VyIHN0dWRlbnRzIHRvIG1hcnJ5PyBJIHRoaW5rIHRoZSBiZXN0IGFuc3dlciBpcyB0byBiZSBmb3VuZCBpbiB0aGUgCndvcmRzIG9mIG91ciBncmVhdCBmb3VuZGVyLCBNYWRhbWUgQmxhdmF0c2t5OiAKCgoxMDMzLsKgwqDCoMKgCkl0IGRlcGVuZHMgb24gdGhlIGtpbmQgb2YgbWFuIHlvdSBtZWFuLiBJZiB5b3UgcmVmZXIgdG8gb25lIHdobyBpbnRlbmRzIAp0byBsaXZlIGluIHRoZSB3b3JsZC0tIG9uZSB3aG8sIGV2ZW4gdGhvdWdoIGEgZ29vZCwgZWFybmVzdCBUaGVvc29waGlzdCAKYW5kIGFuIGFyZGVudCB3b3JrZXIgZm9yIG91ciBjYXVzZSwgc3RpbGwgaGFzIHRpZXMgYW5kIHdpc2hlcyB3aGljaCBiaW5kIGhpbSB0byAKdGhlIHdvcmxkLS0gd2hvLCBpbiBzaG9ydCwgZG9lcyBub3QgZmVlbCB0aGF0IGhlIGhhcyBkb25lIGZvciBldmVyIHdpdGggd2hhdCBtZW4gCmNhbGwgbGlmZSwgYW5kIHRoYXQgaGUgZGVzaXJlcyBvbmUgdGhpbmcgYW5kIG9uZSB0aGluZyBvbmx5LS0gdG8ga25vdyB0aGUgdHJ1dGgsIAphbmQgdG8gYmUgYWJsZSB0byBoZWxwIG90aGVycy0tIHRoZW4gZm9yIHN1Y2ggYSBvbmUgSSBzYXkgdGhlcmUgaXMgbm8gcmVhc29uIHdoeSAKaGUgc2hvdWxkIG5vdCBtYXJyeSwgaWYgaGUgbGlrZXMgdG8gdGFrZSB0aGUgcmlzayBvZiB0aGF0IGxvdHRlcnkgd2hlcmUgdGhlcmUgCmFyZSBzbyBtYW55IG1vcmUgYmxhbmtzIHRoYW4gcHJpemVzLiAoIFRoZSBLZXkgdG8gVGhlb3NvcGh5LCBTZWN0aW9uIAp4aWlpLCDvv71UaGVvc29waHkgYW5kIE1hcnJpYWdl77+9LikgCgoKMTAzNC7CoMKgwqDCoApCdXQgaWYgdGhlIG1hbiBtZWFucyB0byBiZSBtb3JlIHRoYW4gdGhpcywgaWYgaGUgaW50ZW5kcyB0byBkZXZvdGUgaGlzIAp3aG9sZSBsaWZlIHRvIFRoZW9zb3BoaWNhbCB3b3JrLCBhbmQgYXNwaXJlcyB0byBiZWNvbWUgYSBwdXBpbCBvZiBvbmUgb2YgdGhlIApncmVhdCBNYXN0ZXJzIG9mIHRoZSBXaXNkb20sIHRoZW4gd2UgY2Fubm90IGFkdmlzZSBoaW0gdG8gZGl2aWRlIGhpcyBhdHRlbnRpb24gCmJldHdlZW4gdGhhdCB3b3JsZCBhbmQgdGhpcy4gQWdhaW4gTWFkYW1lIEJsYXZhdHNreSB0ZWxscyB1czogCgoKMTAzNS7CoMKgwqDCoApQcmFjdGljYWwgb2NjdWx0aXNtIGlzIGZhciB0b28gc2VyaW91cyBhbmQgZGFuZ2Vyb3VzIGEgc3R1ZHkgZm9yIGEgbWFuIHRvIAp0YWtlIHVwLCB1bmxlc3MgaGUgaXMgaW4gdGhlIG1vc3QgZGVhZGx5IGVhcm5lc3QsIGFuZCByZWFkeSB0byBzYWNyaWZpY2UgYWxsIAosIGhpbXNlbGYgZmlyc3Qgb2YgYWxsICwgdG8gZ2FpbiBoaXMgZW5kLiBJIGFtIG9ubHkgcmVmZXJyaW5nIHRvIHRob3NlIAp3aG8gYXJlIGRldGVybWluZWQgdG8gdHJlYWQgdGhlIHBhdGggb2YgZGlzY2lwbGVzaGlwIHdoaWNoIGxlYWRzIHRvIHRoZSBoaWdoZXN0IApnb2FsLiAoIEliaWQuLCBTZWN0aW9uIHhpaWkuICkgCgoKMTAzNi7CoMKgwqDCoApUaGVyZSBpcyBub3RoaW5nIHRvIHByZXZlbnQgYSBtYW4gZnJvbSBsb3ZpbmcgaGlzIGlkZWFsIGFzIG11Y2ggYXMgaGUgCndpbGw7IHRoZSBtaXN0YWtlIGlzIGluIHRoZSBkZXNpcmUgZm9yIHNvbGUgcG9zc2Vzc2lvbiwgaW4gdGhlIGFuaW1hbCBwYXNzaW9uIAp3aGljaCBwcmV2ZW50cyBoaW0gZnJvbSBiZWluZyBzYXRpc2ZpZWQgdG8gd29yc2hpcCBhdCBhIGRpc3RhbmNlLCBpbiB0aGUgCmplYWxvdXN5IHdoaWNoIGlzIGFubm95ZWQgdGhhdCBvdGhlcnMgc2hvdWxkIGxvdmUgYW5kIHdvcnNoaXAgYWxzby4gVGhlIHN0dWRlbnQgCndobyB3aXNoZXMgdG8gZGV2b3RlIGhpbXNlbGYgZXZlbiB0byB0aGUgdXR0ZXJtb3N0IG11c3Qga2VlcCBoaW1zZWxmIGZyZWUgZnJvbSAKYWxsIGVudGFuZ2xlbWVudC0tIGZyZWUgZm9yIHRoZSB3b3JrOyBhbmQgbGV0IGhpbSBub3QsIGFzIGhhcyBiZWVuIHRoZSBjYXNlIHdpdGggCm1hbnksIGJlIGRlY2VpdmVkIGJ5IHRoZSBzcGVjaW91cyByZWFzb25pbmcgb2YgaGlzIHBhc3Npb24sIGFuZCBmYWxsIHVuZGVyIHRoZSAKZGVsdXNpb24gdGhhdCBoZSBjYW4gd29yayBiZXR0ZXIgaW4gY2hhaW5zLiBCdXQsIHJlbWVtYmVyIG9uY2UgbW9yZSwgdGhpcyBpcyAKb25seSBmb3IgdGhlIG1hbiB3aG8gaXMgYWJzb2x1dGVseSBkZXRlcm1pbmVkIHRvIGdvIG9uIHRvIHRoZSBlbmQuIFNob3J0IG9mIHN1Y2ggCmhpZ2ggcmVzb2x2ZSwgdGhlcmUgaXMgYSB2YXN0IGFtb3VudCBvZiBnb29kIHdvcmsgdGhhdCBtYXkgYmUgZG9uZS0tIGFuZCBldmVuIG9mIApwcm9ncmVzcyB0aGF0IG1heSBiZSBtYWRlLS0gYnkgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUgdHJvdWJsZXMgYW5kIHRyaWFscyBvZiAKdGhlIG9yZGluYXJ5IHdvcmxkbHkgbGlmZSwgYW5kIGVuZGVhdm91cmluZyB0byBsaXZlIG9uZScgcyBoaWdoZXN0LCBldmVuIHRob3VnaCAKaXQgYmUgaW4gY2hhaW5zLiAKCgoxMDM3LsKgwqDCoMKgCkFub3RoZXIgZXhjdXNlIHdoaWNoIGlzIHNvbWV0aW1lcyBwdXQgZm9yd2FyZCBpcyB0aGF0IGl0IGlzIG5lY2Vzc2FyeSAKdGhhdCBib2RpZXMgc2hvdWxkIGJlIHByb3ZpZGVkIGZvciB0aGUgaGlnaC1jbGFzcyBpbi1jb21pbmcgZWdvcyB3aG8gd2lsbCBiZSAKbmVlZGVkIHRvIGRvIHRoZSB3b3JrOyBpdCBpcyBhcmd1ZWQgdGhhdCBzdHVkZW50cyBjYW4gc3VyZWx5IHByb3ZpZGUgdGhlc2UgCmJldHRlciB0aGFuIHRoZSBnb29kIHBlb3BsZSBvZiB0aGUgb3V0ZXIgd29ybGQuIFRoaXMgaXMgcHJvYmFibHkgc28sIGFuZCAKdGhlcmVmb3JlIGluIGNlcnRhaW4gcmFyZSBjYXNlcyBzdHVkZW50cyBoYXZlIGJlZW4gb3JkZXJlZCB0byBtYXJyeSBmb3IgdGhpcyAKdmVyeSBwdXJwb3NlOyBidXQgaXQgaXMgc3VyZWx5IHdpc2VzdCB0byB3YWl0IGZvciBzdWNoIGFuIG9yZGVyIGZyb20gYSBzb3VyY2UgCnRoYXQgY2Fubm90IGJlIHF1ZXN0aW9uZWQuIE1lYW53aGlsZSB3ZSBoYXZlIHBsZW50eSBvZiBnb29kIG1hcnJpZWQgbWVtYmVycyB3aG8gCmFyZSBwZXJmZWN0bHkgY2FwYWJsZSBvZiBwcm92aWRpbmcgYm9kaWVzIGZvciB0aGUgb2NjdWx0IHdvcmtlcnMgb2YgdGhlIGZ1dHVyZS4gClRydWx5IHRoZXJlIGNhbiBiZSBubyBncmVhdGVyIGhvbm91ciB0aGFuIHRvIGJlIHNlbGVjdGVkIGJ5IHRoZSBrYXJtaWMgRGVpdGllcyAKdG8gcHJvdmlkZSB0aG9zZSwgZXhjZXB0IHRoZSBzdGlsbCBncmVhdGVyIGhvbm91ciBvZiB0cmFpbmluZyB0aGVtIHdoZW4gdGhleSBhcmUgCnByb3ZpZGVkLiBMZXQgaXQgYmUgdGhlIHdvcmsgdGhlbiBvZiB0aGUgc3R1ZGVudCB3aG8gc3RpbGwgcmV0YWlucyBoaXMgdGllcyB3aXRoIAp0aGUgd29ybGQgdG8gcHJvdmlkZSB0aG9zZSBib2RpZXMsIGFuZCBsZXQgdGhvc2Ugd2hvIGZlZWwgdGhlbXNlbHZlcyBjYXBhYmxlIG9mIAp0aGUgaGlnaGVyIGxpZmUgaGVscCBpbiB0aGVpciB0cmFpbmluZy4gRm9yIHZlcmlseSBubyBtYW4gY2FuIHNlcnZlIHR3byBtYXN0ZXJzLCAKYW5kIHRoZSBwYXRoIG9mIG9jY3VsdGlzbSBkZW1hbmRzIHRoZSB3aG9sZSBlbmVyZ2llcyBvZiBib2R5LCBzb3VsIGFuZCBzcGlyaXQuCgoKMTAzOC7CoMKgwqDCoApDSEFOR0VTIElOIENPTlNDSU9VU05FU1MgCgoKMTAzOS7CoMKgwqDCoApUaGUgaHVtYW4gY29uc2Npb3VzbmVzcyBoYXMgd29uZGVyZnVsIHBvc3NpYmlsaXRpZXMsIGFuZCB3aGF0IHdlIGNvbW1vbmx5IApjYWxsIGJ5IHRoYXQgbmFtZSBpcyBvbmx5IHRoZSBmcmFnbWVudCBvZiBpdCB3aGljaCB3ZSBjYW4gdXNlIGZvciB0aGUgbW9tZW50LiBXZSAKbWF5IHBlcmhhcHMgdGFrZSBhbiBhbmFsb2d5IGZyb20gdGhlIGFjdGlvbiBvZiBvdXIgcGh5c2ljYWwgc2Vuc2VzLiBUaGVyZSBpcyBhbiAKZW5vcm1vdXMgZ2FtdXQgb2YgcG9zc2libGUgdmlicmF0aW9ucy4gT25lIGxpdHRsZSBncm91cCBvZiB0aG9zZSBhdCBhIGNlcnRhaW4gCmxldmVsIGFwcGVhbHMgdG8gdXMgYXMgbGlnaHQ7IGFub3RoZXIgbGl0dGxlIGdyb3VwIGF0IGEgbXVjaCBsb3dlciBsZXZlbCBhcHBlYWxzIAp0byB1cyBhcyBzb3VuZC4gV2UgYXJlIGNvbnNjaW91cyBpbiB2YXJpb3VzIHdheXMgb2Ygb3RoZXIgaW50ZXJtZWRpYXRlIGdyb3Vwcy4gCkJ1dCB3ZSBhcmUgZnVsbHkgYXdhcmUgZnJvbSBvdXIga25vd2xlZGdlIG9mIHNjaWVuY2UgdGhhdCB0aGUgZ2FtdXQgZXh0ZW5kcyBhdCAKYm90aCBlbmRzIGZhciBiZXlvbmQgb3VyIHBvc3NpYmlsaXRpZXMgb2YgZGVhbGluZyB3aXRoIGl0LiAKCgoxMDQwLsKgwqDCoMKgCldlIG1heSBzdXBwb3NlIHRoZSBodW1hbiBjb25zY2lvdXNuZXNzIHRvIGJlIGxpa2UgdGhhdCBnYW11dCwgYW5kIHRoZSAKcGFydCBvZiBpdCBub3cgaW4gYWN0aW9uIGluIHRoZSBwaHlzaWNhbCBicmFpbiB0byBjb3JyZXNwb25kLCBsZXQgdXMgc2F5LCB0byB0aGUgCmJsb2NrIG9mIG9zY2lsbGF0aW9ucyB3aGljaCB3ZSBjYWxsIHNvdW5kLiBGb2xsb3dpbmcgb3V0IHRoZSBzYW1lIGFuYWxvZ3ksIHdlIAptaWdodCBzdXBwb3NlIG91ciBibG9jayBvZiBhc3RyYWwgY29uc2Npb3VzbmVzcyB0byBiZSBlcXVpdmFsZW50IHRvIHRoZSAKd2F2ZS1sZW5ndGhzIHdoaWNoIHdlIGNhbGwgbGlnaHQ7IGJ1dCBoZXJlIGFnYWluIHRoZXJlIGFyZSBtYW55IHVuZHVsYXRpb25zIApjYXBhYmxlIG9mIGNhcnJ5aW5nIGxpZ2h0IHdoaWNoIHdlIGNhbm5vdCBzZWUtLSB1bmR1bGF0aW9ucyBib3RoIGJlbG93IGFuZCBhYm92ZSAKb3VyIGxpbWl0IG9mIHZpc2lvbi4gSW4ganVzdCB0aGUgc2FtZSB3YXksIGJlbG93IG91ciBwaHlzaWNhbCBjb25zY2lvdXNuZXNzIGFuZCAKYWJvdmUgaXQsIGFuZCBiZWxvdyBvdXIgYXN0cmFsIGNvbnNjaW91c25lc3MgYW5kIGFib3ZlIHRoYXQsIGFyZSBmdXJ0aGVyIHNldHMgb2YgCnZpYnJhdGlvbnMgdG8gd2hpY2ggb3VyIGNvbnNjaW91c25lc3MgbWlnaHQgYmUgYWRhcHRlZCwgYnV0IGlzIG5vdC4gCgoKMTA0MS7CoMKgwqDCoApUaGVyZSBhcmUgdHdvIHdheXMgaW4gd2hpY2ggaXQgY2FuIGJlIGFkYXB0ZWQ7IHBlcm1hbmVudGx5IGFuZCAKaW50ZW50aW9uYWxseSwgYnkgdGhlIGRldmVsb3BtZW50IG9mIHRoYXQgY29uc2Npb3VzbmVzcyBzbyB0aGF0IGl0IGNhbiByZWNlaXZlIAptb3JlIG9mIHRob3NlIHdhdmVzIHdoaWNoIGFyZSBhYm92ZSBhbmQgYmVsb3cgaXRzIG5vcm1hbCBwb3NzaWJpbGl0aWVzOyBvciAKdGVtcG9yYXJpbHksIGJ5IHNvbWUgZGlzZWFzZSBvciBhYm5vcm1hbGl0eSB3aGljaCBzaGlmdHMgb3VyIG9jdGF2ZSBvZiAKY29uc2Npb3VzbmVzcyBlaXRoZXIgdXB3YXJkcyBvciBkb3dud2FyZHMuIEFuIGV4YW1wbGUgb2YgdGhlIGZpcnN0IHdheSBpcyB0aGUgCmRldmVsb3BtZW50IG9mIHBzeWNoaWMgcG93ZXJzIG9mIGFsbCBzb3J0cy4gQnV0IGl0IGlzIHVubmVjZXNzYXJ5IGZvciBtZSB0byB0YWtlIAp1cCB0aGUgY29uc2lkZXJhdGlvbiBvZiB0aG9zZSBoZXJlLCBhcyBJIGhhdmUgYWxyZWFkeSBkb25lIGl0IGluIG90aGVyIGJvb2tzLS0KQ2xhaXJ2b3lhbmNlLCBUaGUgT3RoZXIgU2lkZSBvZiBEZWF0aCBhbmQgU29tZSBHbGltcHNlcyBvZiAKT2NjdWx0aXNtLiBWYXJpb3VzIGRydWdzIGhhdmUgdGhlIHBvd2VyIG9mIHRlbXBvcmFyaWx5IGNoYW5naW5nIG9yIHdpZGVuaW5nIAp0aGUgc2NvcGUgb2YgY29uc2Npb3VzbmVzcywgYW5kIHRoZXJlZm9yZSB0aGV5IGVuYWJsZSB1cyB0byBzZWUgdGhpbmdzIG5vcm1hbGx5IAp1bnNlZW4gYnkgdXMsIHNvbWV0aW1lcyBhdCB0aGUgc2FjcmlmaWNlIG9mIG91ciBvcmRpbmFyeSBwb3dlciBvZiB2aXNpb24gZm9yIHRoZSAKdGltZSwgYW5kIHNvbWV0aW1lcyB3aXRob3V0IHJvYmJpbmcgdXMgb2YgdGhhdC4gCgoKMTA0Mi7CoMKgwqDCoApXaGF0IHdlIGNhbGwgb3VyIHBoeXNpY2FsIGNvbnNjaW91c25lc3MgaXMgbm90IGEgZml4ZWQgYW5kIGRldGVybWluYXRlIAphbW91bnQgd2hpY2ggaGFzIGFsd2F5cyBiZWVuIHRoZSBzYW1lLiBJdCBoYXMgZ3JhZHVhbGx5IGdyb3duIHRvIGJlIHdoYXQgaXQgaXMsIAphbmQgbWFueSB0aGluZ3Mgd2hpY2ggd2VyZSBmb3JtZXJseSB3aXRoaW4gaXRzIHB1cnZpZXcgaGF2ZSBub3cgcGFzc2VkIGJlbG93IAppdC0tIG9yIG1vcmUgYWNjdXJhdGVseSwgaXQgaGFzIHNvIGRldmVsb3BlZCBpdHNlbGYgYXMgdG8gcmlzZSBhYm92ZSB0aGVtLiBJdHMgCmxldmVsIGlzIGdyYWR1YWxseSByaXNpbmc7IG91ciBkZXNjZW5kYW50cyB3aWxsIGJlIGFibGUgdG8gc2VlIGNvbG91cnMgd2hpY2ggYXQgCnByZXNlbnQgYXJlIGludmlzaWJsZSB0byB1cy0tIGhpZ2hlciwgcHVyZXIgYW5kIG1vcmUgZGVsaWNhdGUgY29sb3Vycy4gV2hldGhlciAKdGhleSB3aWxsIGF0IHRoZSBzYW1lIHRpbWUgbG9zZSB0aGUgcG9zc2liaWxpdHkgb2YgYXBwcmVjaWF0aW5nIHNvbWUgb2YgdGhlIApjb2Fyc2VzdCBvZiB0aGUgY29sb3VycyB3aGljaCB3ZSBub3cga25vdywgaXMgdW5jZXJ0YWluLiAKCgoxMDQzLsKgwqDCoMKgCkRlbGlyaXVtIHNoaWZ0cyB0aGUgcGxhY2Ugb2YgdGhpcyBjb25zY2lvdXNuZXNzLCBhbmQgb2Z0ZW4gYWx0b2dldGhlciAKc2h1dHMgb3V0IGZyb20gdXMgdGhlIGV2ZXJ5ZGF5IHdvcmxkIHdoaWNoIHdlIGtub3csIGdpdmluZyB1cyBzb21ldGltZXMgaW4gaXRzIApwbGFjZSBtZW1vcmllcyBvZiBvdXIgcGFzdC0tIG5vdCBvbmx5IG9mIHRoZSBwYXN0IG9mIHRoaXMgbGlmZSBidXQgb2YgdGhlIApsb25nZXItZm9yZ290dGVuIHBhcnQgb2YgdGhlIGh1bWFuIHJhY2UuIFN1Y2ggc2lnaHQgYXMgZGVsaXJpdW0gZ2l2ZXMgb2Z0ZW4gCmluY2x1ZGVzIHRoZSBwb3dlciB0byBzZWUgdGhlIHN1ZmZlcmVyJyBzIG93biB0aG91Z2h0LWZvcm1zLCBvciB0aG9zZSBvZiBvdGhlcnMsIAphbmQgc29tZXRpbWVzIGFsc28gdG8gc2VlIHRoZSBhc3RyYWwgYW5kIGV0aGVyaWMgY3JlYXR1cmVzIHdoaWNoIGFyZSBhcm91bmQgaGltLiAKSW4gdGhlIGNhc2Ugb2YgZGVsaXJpdW0tdHJlbWVucywgZm9yIGV4YW1wbGUsIHRoZSBzbmFrZXMgYW5kIG90aGVyIGhvcnJvcnMgYXJlIAphbG1vc3QgaW52YXJpYWJseSBjcmVhdHVyZXMgb2YgbG93IHR5cGUgd2hpY2ggYXJlIGZlYXN0aW5nIHVwb24gdGhlIGZ1bWVzIG9mIAphbGNvaG9sIGV4dWRpbmcgZnJvbSB0aGUgYm9keSBvZiB0aGUgZHJ1bmthcmQuIAoKCjEwNDQuwqDCoMKgwqAKQ0hBUFRFUiBYVklJIAoKCjEwNDUuwqDCoMKgwqAKQlkgT1VSIEFNVVNFTUVOVFMgCgoKMTA0Ni7CoMKgwqDCoApDSElMRFJFTicgUyBHQU1FUyAKCgoxMDQ3LsKgwqDCoMKgClRIRVJFIGlzIGEgaGlkZGVuIHNpZGUgZXZlbiB0byBhIHRoaW5nIHVzdWFsbHkgY29uc2lkZXJlZCBzbyB1bmltcG9ydGFudCAKYXMgdGhlIGdhbWVzIG9mIGNoaWxkcmVuLiBJZiB0aGUgcGFyZW50cyB0aGluayBvZiB0aGVzZSBhdCBhbGwsIGl0IGlzIHByb2JhYmx5IApjaGllZmx5IGZyb20gdGhlIHBoeXNpY2FsIHBvaW50IG9mIHZpZXcuIFRoZXkgZWl0aGVyIGRpc2FwcHJvdmUgb2YgZ2FtZXMgaW4gYSAKZ2VuZXJhbCB3YXkgYXMgY2F1c2luZyBkZXN0cnVjdGlvbiBvZiBjbG90aGVzIG9yIGVudGljaW5nIHRoZSBib3kgYXdheSBmcm9tIGhpcyAKc2Nob29sIHdvcmssIG9yIHRoZXkgZ3JhbnQgdGhlbSBhIHF1YWxpZmllZCBhcHByb3ZhbCBhcyBhdCBhbnkgcmF0ZSBrZWVwaW5nIHRoZSAKYm95IG91dCBvZiB0aGVpciB3YXkgZm9yIGEgY2VydGFpbiBudW1iZXIgb2YgaG91cnMsIG9yIGFzIGFmZm9yZGluZyBoaW0gcGh5c2ljYWwgCmV4ZXJjaXNlIHdoaWNoIHRoZXkgcmVjb2duaXNlIGFzIGEgbmVjZXNzaXR5IGZvciB0aGUgZGV2ZWxvcG1lbnQgb2YgaGlzIGJvZHkuIApTb21ldGltZXMgYWxzbyB0aGV5IGFyZSBwYXJ0aWN1bGFyIGFzIHRvIGhpcyBhc3NvY2lhdGlvbnMgZnJvbSBhIHNvY2lhbCBwb2ludCBvZiAKdmlldywgYW5kIG9jY2FzaW9uYWxseSBhbHNvIGZyb20gYSByZWxpZ2lvdXMgb3IgbW9yYWwgc3RhbmRwb2ludDsgYnV0IGl0IGlzIApwcm9iYWJsZSB0aGF0IG1vc3QgcGFyZW50cyByZWdhcmQgcGxheSBhcyBhIHNvcnQgb2YgbmVjZXNzYXJ5IGV2aWwuIAoKCjEwNDguwqDCoMKgwqAKVGhleSBkbyBub3QgaW4gdGhlIGxlYXN0IHJlYWxpc2UgdGhhdCBhIGdhbWUsIGlmIHBsYXllZCBhcyBhbGwgZ2FtZXMgCm91Z2h0IHRvIGJlLCBpcyBhIGxlc3NvbiB3aG9zZSB2YWx1ZSBjYW4gaGFyZGx5IGJlIG92ZXJlc3RpbWF0ZWQsIGZvciBpdCAKaW5jdWxjYXRlcyBhcyBub3RoaW5nIGVsc2UgY2FuIHRoZSB2aXJ0dWVzIG9mIGhvbm91ciwgdW5zZWxmaXNobmVzcyBhbmQgCmNoaXZhbHJ5LiBIb25vdXIgZmlyc3QsIGJlY2F1c2Ugb2YgdGhlIG5lY2Vzc2l0eSBvZiBhYmlkaW5nIHdpdGggdXR0ZXJtb3N0IApsb3lhbHR5IGJ5IHRoZSBydWxlcyBvZiB0aGUgZ2FtZSwgYmVjYXVzZSBvZiB0aGUgcmVhbGlzYXRpb24gdGhhdCBhIHNlZW1pbmcgCnN1Y2Nlc3MgZ2FpbmVkIGJ5IGFuIGluZnJpbmdlbWVudCBvZiB0aGVtLCBubyBtYXR0ZXIgaG93IHNsaWdodCwgd291bGQgYmUgCmRpc2hvbmVzdGx5IGdhaW5lZCwgYW5kIHNvIHdvdWxkIGJlIG5vIHN1Y2Nlc3MgYXQgYWxsLCBidXQgdGhlIGRlZXBlc3QgZGlzZ3JhY2UsIAp3aGV0aGVyIHRoZSBkZWxpbnF1ZW5jeSB3ZXJlIGtub3duIHRvIG90aGVycyBvciBvbmx5IHNlYXJlZCBpbnRvIHRoZSBtZW1vcnkgb2YgCnRoZSBjdWxwcml0IGhpbXNlbGYuIFVuc2VsZmlzaG5lc3MsIGJlY2F1c2UgZm9yIHN1Y2Nlc3MgaW4gbWFueSBnYW1lcyBpdCBpcyAKYWJzb2x1dGVseSBuZWNlc3NhcnkgdGhhdCB0aGUgdW5pdCBzaGFsbCBiZSBzdWJvcmRpbmF0ZWQgdG8gdGhlIHdob2xlLCBhbmQgdGhhdCAKZWFjaCBwbGF5ZXIgc2hhbGwgc2VlayBub3QgaGlzIG93biBnbG9yaWZpY2F0aW9uLCBidXQgdGhlIGJlbmVmaXQgb2YgdGhlIHNpZGUgCnVwb24gd2hpY2ggaGUgcGxheXMuIE5vIG9uZSB3aG8gd2F0Y2hlcyB0aGUgaW5zdGFudCwgdW5oZXNpdGF0aW5nIG9iZWRpZW5jZSBzbyAKd2lsbGluZ2x5IGdpdmVuIGluIGFueSBnb29kIHNjaG9vbCB0byB0aGUgY2FwdGFpbiBvZiBhbiBlbGV2ZW4gYXQgY3JpY2tldCwgb3IgdG8gCnRoZSBjb2FjaCBvZiBhIGJvYXQnIHMgY3JldywgY2FuIGZhaWwgdG8gcGVyY2VpdmUgdGhhdCB0aGlzIGlzIGEgbW9zdCB2YWx1YWJsZSAKZGlzY2lwbGluZSwgdGVhY2hpbmcgZWFjaCB0byBhY2NlcHQgbG95YWxseSBhbmQgdG8gcGVyZm9ybSB0aG9yb3VnaGx5IHRoZSBkdXR5IAphc3NpZ25lZCB0byBoaW0sIGxvb2tpbmcgdG8gdGhlIGdvb2Qgb2YgdGhlIGNsdWIgcmF0aGVyIHRoYW4gdG8gaGlzIHBlcnNvbmFsIApkZXNpcmVzLiBDaGl2YWxyeSwgYmVjYXVzZSBvZiB0aGUgcnVsZSwgaW52YXJpYWJsZSBhbW9uZyBhbGwgZ2VudGxlbWFubHkgYm95cywgCm9mIGdpdmluZyB0aGUgb3Bwb25lbnQgdGhlIGJlbmVmaXQgb2YgYW55IGRvdWJ0ZnVsIHBvaW50LCBhbmQgb2YgZGVjbGluaW5nIHRvIApwcm9maXQgYnkgYW4gYWNjaWRlbnRhbCBhZHZhbnRhZ2UuIEV2aWwgaW5kZWVkIGlzIGl0IGZvciBhIGNvdW50cnkgd2hlbiBzdWNoIApob25vdXIsIHN1Y2ggdW5zZWxmaXNobmVzcywgc3VjaCBjaGl2YWxyeSBhcmUgbm90IHRvIGJlIGZvdW5kIGFtb25nIGl0cyAKY2hpbGRyZW4sIGZvciB0aGUgY2hpbGQgaXMgZmF0aGVyIHRvIHRoZSBtYW4sIGFuZCBhcyB0aGUgdHdpZyBpcyBiZW50IHNvIHRoZSAKdHJlZSBpbmNsaW5lcy4gCgoKMTA0OS7CoMKgwqDCoApUaGUgZ3JlYXQgdGhpbmcgdG8gaW1wcmVzcyB1cG9uIHRoZSBjaGlsZCBpcyB0aGF0IHRob3VnaCBoZSBtdXN0IGFsd2F5cyAKZG8gaGlzIGJlc3QgZm9yIGhpcyBvd24gc2lkZSwgaW4gcmVhbGl0eSBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hvIHdpbnMsIGFzIHRoZSAKZXhlcmNpc2Ugb2J0YWluZWQgYW5kIHRoZSBwbGVhc3VyZSBvZiB0aGUgZ2FtZSBhcmUgdGhlIHNhbWUgaW4gYW55IGNhc2UuIEl0IApzaG91bGQgYmUgZXhwbGFpbmVkIHRvIGhpbSB0aGF0IGhlIG11c3QgYWN0IG5vdCBvbmx5IGZhaXJseSwgYnV0IGFsc28gZ3JhY2lvdXNseSAKYW5kIGhvc3BpdGFibHkgaW4gaGlzIHBsYXk7IHRoYXQgaGUgbXVzdCBhbHdheXMgYmUgcmVhZHkgdG8gYXBwbGF1ZCBnb29kIHBsYXkgb24gCnRoZSBvdGhlciBzaWRlLCB0aGF0IGhlIG11c3QgbmV2ZXIgZXh1bHQgb3ZlciB0aG9zZSB3aG8gYXJlIGRlZmVhdGVkLCBidXQgbXVzdCAKYWx3YXlzIGVuZGVhdm91ciB0byBmaW5kIGV4Y3VzZXMgZm9yIHRoZW0gYW5kIG1pbmltaXNlIHRoZSBkaXNhcHBvaW50bWVudCB3aGljaCAKdGhleSB3aWxsIG5hdHVyYWxseSBmZWVsLiAKCgoxMDUwLsKgwqDCoMKgClRydWUsIG90aGVycyB3aWxsIG5vdCBhbHdheXMgZG8gdGhpcyBmb3IgaGltLCBidXQgaGUgbmVlZCBub3QgYmUgCmluIGFueSB3YXkgZGlzdHVyYmVkIG9yIGFubm95ZWQgYnkgdGhhdCwgc2luY2UgaXQgc2ltcGx5IHNob3dzIHRoYXQgdGhleSBoYXZlIApub3QgeWV0IHJlYWNoZWQgdGhlIGxldmVsIGF0IHdoaWNoIHRoZXkgY2FuIHB1dCB0aGVtc2VsdmVzIG1lbnRhbGx5IGluIHRoZSBwbGFjZSAKb2YgdGhlaXIgb3Bwb25lbnRzLiBJdCBpcyBuYXR1cmFsIHRoYXQgYSBib3kgc2hvdWxkIHRha2UgcGxlYXN1cmUgaW4gdGhlIHZpY3RvcnkgCm9mIGhpcyBzY2hvb2wgb3IgaGlzIHNpZGUsIGJ1dCBoZSBtdXN0IGxlYXJuIG5vdCBzbyB0byBzaG93IHRoYXQgcGxlYXN1cmUgYXMgdG8gCmh1cnQgaW4gYW55IHdheSB0aGUgZmVlbGluZ3Mgb2YgYW5vdGhlci4gCgoKMTA1MS7CoMKgwqDCoApOZXZlciBmb3IgYSBtb21lbnQgbXVzdCBoZSBmaW5kIHBsZWFzdXJlIG9yIGFtdXNlbWVudCBpbiBhbnl0aGluZyB0aGF0IApodXJ0cyBvciBhbm5veXMgYW5vdGhlciBsaXZpbmcgY3JlYXR1cmUsIHdoZXRoZXIgaXQgYmUgYSBzY2hvb2wtZmVsbG93IG9yIGFuIAphbmltYWwuIFRoZSB0ZW5kZW5jeSB3aGljaCBzb21lIGlsbC10YXVnaHQgY2hpbGRyZW4gc2hvdyB0byB0ZWFzZSBhbiBhbmltYWwgb3IgCmFub3RoZXIgY2hpbGQgaXMgYSBtYW5pZmVzdGF0aW9uIG9mIGNydWVsdHksIGFuZCBpdCBtdXN0IGJlIGV4cGxhaW5lZCB0byB0aGUgCmNoaWxkIHRoYXQgY3J1ZWx0eSBvZiBhbnkgc29ydCBpcyBvbmUgb2YgdGhlIHdvcnN0IG9mIGNyaW1lcy4gVGhlIGNoaWxkIG11c3QgCnJlbWVtYmVyIGFsd2F5cyB0byBwdXQgaGltc2VsZiBpbiB0aG91Z2h0IGluIHRoZSBwbGFjZSBvZiB0aGUgb3RoZXIsIGFuZCBzbyB0byAKbWFuaWZlc3QgdGhlIHV0dGVybW9zdCBicm90aGVyaG9vZCwga2luZGxpbmVzcyBhbmQgbG92ZSwgdG8gYmUgd2lsbGluZyBhbHdheXMgdG8gCnB1dCBhc2lkZSB3aGF0IGhlIHdhbnRzIGluIG9yZGVyIHRvIGdpdmUgcGxlYXN1cmUgdG8gb3RoZXIgY2hpbGRyZW4sIGFuZCB0byBkbyAKd2hhdCB0aGV5IGxpa2UuIAoKCjEwNTIuwqDCoMKgwqAKSSBub3RpY2VkIGFuIGludGVyZXN0aW5nIGV4YW1wbGUgb2YgY2hpdmFscnkgc29tZSB0aW1lIGFnbyB3aGVuIGF0dGVuZGluZyAKdGhlIENvbGxlZ2UgYm9hdC1yYWNlcyBhdCBvbmUgb2Ygb3VyIGdyZWF0IFVuaXZlcnNpdGllcy4gQSBjZXJ0YWluIENvbGxlZ2UgaGFkIApoZWxkIHVucXVlc3Rpb25lZCBmb3Igc29tZSB5ZWFycyB0aGUgY2hpZWYgcGxhY2UgaW4gYXF1YXRpYyBhZmZhaXJzLCBidXQgb24gdGhpcyAKb2NjYXNpb24gYW5vdGhlciBDb2xsZWdlIHN1Y2NlZWRlZCBpbiBnYWluaW5nIHNldmVyYWwgcGxhY2VzIGFuZCBmaW5hbGx5IAphdHRhaW5lZCB0aGUgY292ZXRlZCBwb3NpdGlvbiBvZiBIZWFkIG9mIHRoZSBSaXZlciwgZGVmZWF0aW5nIGl0cyBwcmV2aW91cyAKaG9sZGVycy4gTmF0dXJhbGx5IHRoZXJlIHdhcyBncmVhdCByZWpvaWNpbmcsIGFuZCBhIHRyaXVtcGhhbCBwcm9jZXNzaW9uIHdhcyAKZm9ybWVkIGluIHdoaWNoIG5vdCBvbmx5IHRoZSBiYW5uZXIgb2YgdGhlIHdpbm5pbmcgYm9hdCwgYnV0IGFsc28gaXRzIG9hcnMgYW5kIApydWRkZXIgd2VyZSBjYXJyaWVkIGhvbWUgaW4gZXh1bHRhbnQgb3ZhdGlvbi4gSW4gdGhlaXIganViaWxhbnQgbWFyY2ggdGhlIGNyb3dkIApvZiB1bmRlcmdyYWR1YXRlcyBvZiB0aGUgdmljdG9yaW91cyBDb2xsZWdlIGhhZCB0byBwYXNzIGFsb25nIHRoZSByaXZlciBhbmQgaW4gCmZyb250IG9mIHRoZSBsb25nIGxpbmUgb2YgYm9hdC1ob3VzZXMsIGFuZCBzdWRkZW5seSBJIG9ic2VydmVkIHRoYXQgdGhlIGNoZWVyaW5nIAptb2IgZmVsbCBzaWxlbnQsIGZ1cmxlZCBpdHMgZmxhZyBhbmQgbG93ZXJlZCBpdHMgb2FycyBhbmQgb2J2aW91c2x5IGVuZGVhdm91cmVkIAp0byBlZmZhY2UgaXRzZWxmIGFuZCBoYXN0aWx5IGFzc3VtZSBhcyB1bm9idHJ1c2l2ZSBhIGRlbWVhbm91ciBhcyBwb3NzaWJsZS4gCkFza2luZyB3aGF0IHdhcyB0aGUgbWF0dGVyLCBJIHdhcyB0b2xkIHRoYXQgdGhleSB3ZXJlIGFwcHJvYWNoaW5nIHRoZSBib2F0LWhvdXNlIApvZiB0aGUgQ29sbGVnZSB3aGljaCBoYWQgc28gbG9uZyBoZWxkIHN1cHJlbWFjeSwgYW5kIHRoYXQgaXQgd291bGQgb2YgY291cnNlIGJlIAppbiBiYWQgdGFzdGUgdG8gc2VlbSB0byBnbG9yeSBvdmVyIHRoZW0gYnkgcGFyYWRpbmcgdGhlIGNvbnF1ZXN0IGJlZm9yZSB0aGVtLiAKVGhlcmVmb3JlIG91ciB2aWN0b3JzIGZvciB0aGUgdGltZSB0cmllZCB0byBsb29rIGFzIG11Y2ggYXMgcG9zc2libGUgbGlrZSAKb3JkaW5hcnkgc3R1ZGVudHMgZ29pbmcgcXVpZXRseSBob21lOyBidXQgdGhlaXIgbWFnbmFuaW1vdXMgYXR0ZW1wdCB3YXMgYXQgbGVhc3QgCnBhcnRpYWxseSBkZWZlYXRlZCwgZm9yIGJlZm9yZSB0aGV5IGNvdWxkIHN0ZWFsIHBhc3QgdGhleSB3ZXJlIG9ic2VydmVkIGJ5IHRoZSAKZGVmZWF0ZWQgY3JldyBhbmQgdGhlaXIgZmVsbG93LW1lbWJlcnMsIHdobyBpbW1lZGlhdGVseSBydXNoZWQgb3V0IGZyb20gdGhlaXIgCmJvYXQtaG91c2UgdG8gY2hlZXIgdGhlbSBsdXN0aWx5LCB3aGlsZSB0aGUgY2FwdGFpbiBvZiB0aGUgZGVmZWF0ZWQgYm9hdCByYW4gdG8gCnRoZSBncmVhdCBmbGFnc3RhZmYgb2YgdGhlIGJvYXQtaG91c2UgYW5kIGhhdWxlZCBkb3duIGhpcyBDb2xsZWdlIGZsYWcgaW4gdG9rZW4gCm9mIGNoZWVyZnVsIHN1Ym1pc3Npb24gdG8gZmF0ZS4gQXMgYSBzcG9udGFuZW91cyBleHByZXNzaW9uIG9mIGdvb2QgZmVlbGluZyBvbiAKdGhlIHBhcnQgb2YgdGhlc2UgeW91bmcgZmVsbG93cyBqdXN0IGZyZXNoIGZyb20gc2Nob29sLCB0aGlzIHBsZWFzZWQgbWUgZ3JlYXRseSwgCmFuZCBJIGNvdWxkIG5vdCBidXQgc2VlIHRoYXQgdGhlIHB1YmxpYyBvcGluaW9uIGFtb25nIHRoZW0gd2FzIGEgaGVhbHRoeSBhbmQgCmVudmlhYmxlIG9uZS4gCgoKMTA1My7CoMKgwqDCoApTUE9SVCAKCgoxMDU0LsKgwqDCoMKgClVuZm9ydHVuYXRlbHkgdGhlIGFtdXNlbWVudHMgb2YgYWR1bHRzIGFyZSBub3QgYWx3YXlzIGFzIGhhcm1sZXNzIGFuZCAKd2hvbGVzb21lIGFzIHRob3NlIG9mIGNoaWxkcmVuLiBUaGVyZSBpcyBub3RoaW5nIHRvIGJlIHNhaWQgYWdhaW5zdCBjcmlja2V0IG9yIApnb2xmOyBhbmQgcm93aW5nIGFuZCBzd2ltbWluZyBhcmUgYWx3YXlzIGFkbWlyYWJsZSwgYXMgYnJpbmdpbmcgdGhlIGV0aGVyaWMsIAphc3RyYWwgYW5kIG1lbnRhbCBib2RpZXMgaW50byBjbG9zZXIgY29udGFjdCB3aXRoIHRoZSBuYXR1cmUtc3Bpcml0cyBvZiB0aGUgCndhdGVyIGFuZCB0aGVpciBpbmZsdWVuY2VzLCB3aGljaCBtYWtlIGFuIGFncmVlYWJsZSBjb250cmFzdCB3aXRoIHRob3NlIHRvIGJlIApmb3VuZCB1cG9uIGxhbmQuIFN0aWxsIG1vcmUgaXMgdGhpcyB0cnVlIGlmIHRoZSBzd2ltbWluZyBpcyBkb25lIGluIHRoZSBzZWEsIGZvciAKdGhlIHZhcmlldHkgdGhlcmUgaXMgZ3JlYXRlci4gU3VjaCBjaGFuZ2Ugb2YgaW1wcmVzc2lvbnMgaXMgYWx3YXlzIGdvb2QsIGFzIGl0IApzZXRzIGluIHZpYnJhdGlvbiBuZXcgcGFydHMgb2YgdGhlIHZhcmlvdXMgYm9kaWVzLCBhbmQgc28gYWRkcyBncmVhdGx5IHRvIHRoZWlyIApnZW5lcmFsIGhlYWx0aC4gCgoKMTA1NS7CoMKgwqDCoApCdXQgaXQgaXMgaW1wb3NzaWJsZSB0byByZXByb2JhdGUgdG9vIHN0cm9uZ2x5IHRoZSByZXZvbHRpbmcgY3J1ZWx0eSB0aGF0IAppcyBzb21ldGltZXMgbWlzbmFtZWQgc3BvcnQuIE5lZWRsZXNzIHRvIHNheSwgdGhlIGNyaW1lIGNvbm5lY3RlZCB3aXRoIHRoZSAKbXVyZGVyIG9mIGRlZmVuY2VsZXNzIGFuaW1hbHMgZmFyIG91dHdlaWdocyBhbnkgYmVuZWZpdCB0aGF0IG1heSBiZSBpbmNpZGVudGFsbHkgCmRlcml2ZWQgZnJvbSBmcmVzaCBhaXIgYW5kIGV4ZXJjaXNlLiBUaGUgd2hvbGUgdGhpbmcgaXMgaG9ycmlibGUgYmV5b25kIHdvcmRzLCAKYW5kIGl0IGlzIGRpZmZpY3VsdCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpcyBwb3NzaWJsZSBmb3IgY2l2aWxpc2VkIGFuZCBvdGhlcndpc2UgCmtpbmQtaGVhcnRlZCBwZW9wbGUgdG8gdGFrZSBwYXJ0IGluIHN1Y2ggYWJvbWluYXRpb24tLSBhbmQgbm90IG9ubHkgdG8gdGFrZSBwYXJ0IAppbiB0aGVtLCBidXQgZXZlbiBhcHBhcmVudGx5IHRvIGVuam95IHRoZSBibG9vZHNoZWQgYW5kIHRoZSBjcnVlbHR5LCBhbmQgdG8gdmllIAp3aXRoIG9uZSBhbm90aGVyIGluIHRoZSBkaWFib2xpY2FsIHdvcmsgb2YgZGVzdHJ1Y3Rpb24uIE5vIGNvdW50cnkgaW4gd2hpY2ggc3VjaCAKdGhpbmdzIGhhcHBlbiBjYW4gY2xhaW0gdG8gYmUgcmVhbGx5IGNpdmlsaXNlZCwgYW5kIHdlIGNhbm5vdCBkb3VidCB0aGF0IHdoZW4gCm91ciBkZXNjZW5kYW50cyBsb29rIGJhY2sgb24gdGhpcyBwZXJpb2QgdGhleSB3aWxsIGZpbmQgaXQgaW5jcmVkaWJsZSB0aGF0IHdlIAphY3R1YWxseSBpbmR1bGdlZCBpbiBzdWNoIHdob2xlc2FsZSBhbmQgZ3JhdHVpdG91cyBiYXJiYXJpdGllcy4gCgoKMTA1Ni7CoMKgwqDCoApBbGwgZm9ybXMgb2YgaHVudGluZyBpbmN1ciBzaW1pbGFyIHJlcHJvYmF0aW9uLiBFdmVuIGFwYXJ0IGZyb20gdGhlIHBhaW4sIAptaXNlcnkgYW5kIGRlYXRoIGluZmxpY3RlZCB1cG9uIHRoZSBmb3gsIHRoZSBkZWVyLCB0aGUgaGFyZSwgb3IgdGhlIG90dGVyLCB0aGVyZSAKaXMgdGhlIHdob2xlIHF1ZXN0aW9uIG9mIHRoZSB3aWNrZWRuZXNzIGluY3VycmVkIGluIHRoZSB0cmFpbmluZyBvZiBkb2dzIGZvciAKc3VjaCBwdXJwb3Nlcy4gVGhlIGRvZyBpcyBvbmUgb2YgdGhlIGRvbWVzdGljIGFuaW1hbHMgd2hpY2ggYXJlIGdpdmVuIGludG8gbWFuJyAKcyBjYXJlIGluIG9yZGVyIHRoYXQgaGUgbWF5IGFkdmFuY2UgdGhlaXIgZXZvbHV0aW9uLiBIZSBkb2VzIG5vdCBoZWxwIGl0LCBidXQgCmZhdGFsbHkgaGluZGVycyBpdCwgd2hlbiBoZSB0cmFpbnMgdGhlIGFuaW1hbCB0byBiZSBtb3JlIGZlcm9jaW91cyB0aGFuIHRoZSB3b2xmIApvciB0aGUgdGlnZXItLSB3aGVuIGhlIHRlYWNoZXMgaXQgdG8ga2lsbCBub3QgZm9yIGZvb2QsIGFzIGRvIHRoZSB3aWxkIGJlYXN0cywgCmJ1dCBmb3IgdGhlIG1lcmUgbHVzdCBhbmQgcGxlYXN1cmUgb2Yga2lsbGluZy4gVGhpcyB3YW50b24gZGVzdHJ1Y3Rpb24gb2YgdGhlIAp3b25kZXJmdWwgZ2lmdCBvZiBsaWZlLCDvv713aGljaCBhbGwgY2FuIHRha2UgYnV0IG5vbmUgY2FuIGdpdmUs77+9IHdpbGwgc3VyZWx5IApicmluZyBhIGhlYXZ5IHJldHJpYnV0aW9uIG9uIHRoZSBpbmRpdmlkdWFscyB3aG8gdGFrZSBwYXJ0IGluIGl0LCBhbmQgb24gdGhlIApjb3VudHJ5IHdob3NlIHB1YmxpYyBvcGluaW9uIHBlcm1pdHMgaXQuIAoKCjEwNTcuwqDCoMKgwqAKT25lIHRlcnJpYmxlIHRoaW5nIGNvbm5lY3RlZCB3aXRoIHRoaXMgaXMgdGhhdCBvdXIgY2hpbGRyZW4gaW1pdGF0ZSBvdXIgCnRob3VnaHRsZXNzIGNydWVsdHksIGFuZCBzbyB5b3VuZyBzb3VscyB3aG8gd291bGQgbmF0dXJhbGx5IGJlIGtpbmQgYW5kIGhlbHBmdWwgCmFyZSBsZWQgaW50byB0aGUgY29tbWlzc2lvbiBvZiB0aGVzZSBjcmltZXMuIFdlIGNhbiBoYXJkbHkgd29uZGVyIHRoYXQgYSBib3kgCmZpc2hlcyBvciBodW50cywgb3Igc2V0cyBoaXMgZG9nIHRvIGtpbGwgc29tZSBsaXZpbmcgY3JlYXR1cmUsIHdoZW4gaGUgCmNvbnN0YW50bHkgc2VlcyBoaXMgZmF0aGVyIGRvaW5nIHRoZSBzYW1lIHRoaW5nLiBXZSBzbyBlbmdyYWluIGNydWVsdHkgaW50byB0aGUgCnlvdW5nIHRoYXQgZXZlbiBhZnRlciB0aGVpciBkZWF0aCBpdCBwZXJzaXN0cyBpbiB0aGUgYXN0cmFsIHdvcmxkLCBhbmQgd2UgZmluZCAKdGhlIHNhbWUgdGVuZGVuY3kgaW4gdGhlIGRlYWQgYm95IGFzIGluIHRoZSBsaXZpbmctLSB0byBodW50IHNvbWV0aGluZyBhYm91dCwgCmFuZCB0byBjYXVzZSBpdCBwYWluIGFuZCB0ZXJyb3IuIFRydWUsIHVubGVzcyB0aGUgc2hhbWVmdWwgZXhhbXBsZSBzZXQgYmVmb3JlIApoaW0gaGFzIG1hZGUgaGltIHRob3JvdWdobHkgd2lja2VkLCBpdCBpcyBlYXNpZXIgaW4gdGhlIGFzdHJhbCB3b3JsZCB0byBpbnZva2UgCnRoZSBib3knIHMgZ29vZCBmZWVsaW5ncyB0aGFuIGl0IGlzIG9uIHRoZSBwaHlzaWNhbCwgYmVjYXVzZSB0aGVyZSB3ZSBjYW4gc2hvdyAKaGltIGluIGEgbW9tZW50IGV4YWN0bHkgd2hhdCBpcyB0aGUgcmVhbCBzZW5zYXRpb24gb2YgdGhlIGh1bnRlZCBjcmVhdHVyZSwgZm9yIAppdCBpcyBhcHBhcmVudCBpbiBjaGFuZ2luZ3MgYW5kIGZsYXNoaW5ncyBvZiBjb2xvdXIuIFNvIHdlIGNhbiBhcHBlYWwgZGlyZWN0bHkgCnRvIHRoZSBib3knIHMgYmV0dGVyIG5hdHVyZSBieSBzaG93aW5nIGhpbSBwcmVjaXNlbHkgd2hhdCBoZSBoYXMgYmVlbiBkb2luZy4gSW4gCnRoZSBhc3RyYWwgd29ybGQgd2UgaGF2ZSBhbHNvIHRoZSBhZHZhbnRhZ2UgdGhhdCB3ZSBjYW4gZGVmbGVjdCB0aGUgY3J1ZWwgCmh1bnRpbmcgaW5zdGluY3QgYW5kIHRoZSBwYXNzaW9uIGZvciBkZXN0cnVjdGlvbiBpbnRvIHRoZSBzYWZlIGFuZCB1c2VmdWwgCmNoYW5uZWwgb2YgYnJlYWtpbmcgdXAgaG9ycmlibGUgdGhvdWdodC1mb3Jtcywgc3VjaCBhcyB0aG9zZSBvZiBkZXZpbHMsIHdoaWNoIAphcmUgbWFkZSBieSB0aGUgdW5mb3J0dW5hdGUgcGVvcGxlIHdobyBzdWZmZXIgdW5kZXIgdGhlIGN1cnNlIG9mIENhbHZpbmlzdGljIG9yIApzaW1pbGFybHkgYmxhc3BoZW1vdXMgcmVsaWdpb3VzIHRlYWNoaW5nLiBUaGVzZSB0aG91Z2h0LWZvcm1zLCB0aG91Z2ggbm90IApkYW5nZXJvdXMgd2hlbiB1bmRlcnN0b29kLCBhcmUgb2Z0ZW4gYSBzb3VyY2Ugb2YgZ3JlYXQgdGVycm9yIHRvIHRoZSBpZ25vcmFudCwgCmFuZCBhcyB0aGV5IGhhdmUgbm8gcmVhbCBldm9sdmluZyBsaWZlIGluIHRoZW0sIHRoZXJlIGlzIG5vIHNpbiBpbnZvbHZlZCBpbiAKZGVzdHJveWluZyB0aGVtLiBTdWNoIHdvcmsgZGV2ZWxvcHMgYm90aCBjaGl2YWxyeSBhbmQgY291cmFnZSBpbiB0aGUgYm95LCAKaW5kdWNpbmcgaGltIHRvIGdvIGFib3V0IGFzIGEga25pZ2h0LWVycmFudCwgaGVscGluZyBhbmQgcHJvdGVjdGluZyB0aGUgd2VhaywgCmFuZCBmYWNpbmcgZm9yIHRoZWlyIHNha2Ugd2hhdCBhcHBlYXIgdG8gaGltIHRoZSBtb3N0IGZvcm1pZGFibGUgb2Rkcy4gCgoKMTA1OC7CoMKgwqDCoApGSVNISU5HIAoKCjEwNTkuwqDCoMKgwqAKRmlzaGluZyBpcyBhbm90aGVyIG1hbmlmZXN0YXRpb24gb2YgdGhlIGx1c3QgZm9yIHNsYXVnaHRlciwgYW5kIG1hbnkgCnBlb3BsZSBpbmR1bGdlIGluIHRoaXMgd2hvIHdvdWxkIHJlY29pbCBmcm9tIG90aGVyIGZvcm1zIG9mIGVuam95bWVudCBpbiB3aGljaCAKdGhlIGJsb29kc2hlZCBpcyBtb3JlIG9idmlvdXMsIGZvciBoZXJlLCBpbnN0ZWFkIG9mIGtpbGxpbmcgb3IgY3JpcHBsaW5nIGEgYmlyZCAKYnkgYSBzaG90LCB0aGV5IG9ubHkgdGFrZSB0aGUgY3JlYXR1cmUgb3V0IG9mIGl0cyBlbGVtZW50IGFuZCBsZWF2ZSBpdCB0byBkaWUgCnNsb3dseSBieSBzdWZmb2NhdGlvbi4gRGlmZmljdWx0IHRob3VnaCBpdCBpcyB0byB1bmRlcnN0YW5kIGhvdyBpdCBjYW4gYmUgc28sIEkgCnJlYWxseSBiZWxpZXZlIHRoYXQgbW9zdCBvZiB0aGlzIGF0cm9jaW91cyBjcnVlbHR5IGlzIHNpbXBsZSB0aG91Z2h0bGVzc25lc3MsIAphbmQgdGhlIGJhbmVmdWwgZWZmZWN0IG9mIHRoZSBjb2xsZWN0aXZlIHRob3VnaHQtZm9ybXMgY2x1c3RlcmluZyByb3VuZCBhIGN1c3RvbSAKd2hpY2ggaGFzIGNvbWUgZG93biB0byB1cyBmcm9tIHRoZSBiYXJiYXJvdXMgdGltZXMgb2YgdGhlIERhcmsgQWdlcy4gCgoKMTA2MC7CoMKgwqDCoApIT1JTRS1SQUNJTkcgCgoKMTA2MS7CoMKgwqDCoApIb3JzZS1yYWNpbmcsIGFnYWluLCBpcyBhbm90aGVyIHNvLWNhbGxlZCBzcG9ydCBmb3Igd2hpY2ggdGhlcmUgY2FuIGJlIApub3RoaW5nIGJ1dCBjb25kZW1uYXRpb24uIFRoZSBtZXJlIHJ1bm5pbmcgb2YgaG9yc2VzIGFnYWluc3Qgb25lIGFub3RoZXIsIGlmIAp0aGV5IGFyZSBub3Qgc3RydWNrIG9yIG90aGVyd2lzZSBpbGwtdHJlYXRlZCwgaXMgbm8gbW9yZSBvYmplY3Rpb25hYmxlIHRoYW4gYSAKcmFjZSBiZXR3ZWVuIGJveXMsIG9yIG1lbjsgYnV0IGFzIG1hdHRlcnMgc3RhbmQgbm93LCB0aGUgd2hvbGUgbWFzcyBvZiBpZGVhcyAKd2hpY2ggY2x1c3RlciByb3VuZCB0aGUgdHVyZiBpcyBvYmplY3Rpb25hYmxlIHRvIHRoZSBoaWdoZXN0IGRlZ3JlZSwgYW5kIGZyb20gCnRoZSBvY2N1bHQgcG9pbnQgb2YgdmlldyB0aGUgYXRtb3NwaGVyZSBvZiBhIHJhY2UtY291cnNlIGlzIGEgdmVyaXRhYmxlIGhlbGwuIApBbGwgdGhlIGNoZWF0aW5nIGFuZCB0cmlja2VyeSwgYWxsIHRoZSBtYWQgYW54aWV0eSBhbmQgYXZhcmljZSwgYWxsIHRoZSBoYXRyZWQgCmFuZCBkZWxpYmVyYXRlIGZhbHNlaG9vZCwgbWFrZSB0aGUgd2hvbGUgc2NlbmUgYW4gaW5kZXNjcmliYWJsZSBuaWdodG1hcmUgb2YgCmhvcnJvcnMuIFlldCBkZWNlbnQgbWVuIHdpbGwgc2hvdyB0aGVtc2VsdmVzIGluIHN1Y2ggYSBwbGFjZSBhbmQsIGV2ZW4gd29yc2UgCnN0aWxsLCB3aWxsIHN1YmplY3QgdGhlaXIgd2l2ZXMgYW5kIGRhdWdodGVycyB0byBpdHMgYXBwYWxsaW5nbHkgZXZpbCBtYWduZXRpc20uIApJZ25vcmFuY2UgYWdhaW4sIG9mIGNvdXJzZSwgYW5kIHRob3VnaHRsZXNzbmVzczsgaW4gaW50ZW50aW9uIG5vdGhpbmcgd29yc2UgdGhhbiAKdGhhdDsgYnV0IHRoZSByZXN1bHRzIGFyZSBzZXJpb3VzIG5ldmVydGhlbGVzcy4gCgoKMTA2Mi7CoMKgwqDCoApHQU1CTElORyAKCgoxMDYzLsKgwqDCoMKgCkV2ZXJ5b25lIHdobyB0YWtlcyBwYXJ0IGluIGhvcnNlLXJhY2luZyBoYXMgaGlzIHNoYXJlIG9mIHRoZSAKcmVzcG9uc2liaWxpdHkgb2YgYWxsIHRoZSB3aWNrZWRuZXNzIG9mIHRoZSBnYW1ibGluZyBjb25uZWN0ZWQgd2l0aCBpdCwgYW5kIG9mIAp0aGUgcnVpbiB0byB0aG91c2FuZHMgd2hpY2ggaXQgYnJpbmdzIGluIGl0cyB0cmFpbi4gRXZlbiBvbiB0aGUgcGh5c2ljYWwgbGV2ZWwgCnRoZSBldmlscyBvZiBnYW1ibGluZyBhbmQgb2YgYmV0dGluZyBhcmUgc3VyZWx5IG9idmlvdXMgZW5vdWdoOyBidXQgd2l0aCB0aGUgCmFkZGVkIHNpZ2h0IG9mIGhpZ2hlciB3b3JsZHMgdGhleSBhcmUgYSBodW5kcmVkIHRpbWVzIG1vcmUgb2JqZWN0aW9uYWJsZS4gTWVuIApwbHVuZ2UgaW50byB0aGlzIGZvb2xpc2huZXNzIHByZXN1bWFibHkgZm9yIGV4Y2l0ZW1lbnQ7IGJ1dCB0aGlzIGlzIGEgZm9ybSBvZiAKZXhjaXRlbWVudCB3aGljaCBhcm91c2VzIGFsbCB0aGUgd29yc3QgcGFzc2lvbnMgb2YgbWVuLCBhbmQgY2FuIGRvIG5vdGhpbmcgYnV0IApoYXJtIHRvIHRoZW0sIGZvciB0aGUgbW9yYWwgZWZmZWN0IG9uIHRoZSBtYW4gd2hvIHdpbnMgaXMgdXN1YWxseSBhdCBsZWFzdCBhcyAKZXZpbCBhcyB1cG9uIGhpbSB3aG8gbG9zZXMuIAoKCjEwNjQuwqDCoMKgwqAKUmVhZGVycyBvZiBUaG91Z2h0LUZvcm1zIHdpbGwgcmVtZW1iZXIgdGhlIGF3ZnVsIHBpY3R1cmVzIHRoZXJlIApnaXZlbiBvZiB0aGUgdGhvdWdodC1mb3JtcyBvZiB0aGUgd2lubmVyIGFuZCBvZiB0aGUgbG9zZXI7IHRob3NlIHdobyBjYW4gc2VlIApzdWNoIHRoaW5ncyBmb3IgdGhlbXNlbHZlcyB3aWxsIG5lZWQgbm8gb25lIHRvIGluZm9ybSB0aGVtIG9mIHRoZSBldmlscyBvZiAKZ2FtYmxpbmcuIEl0IGNhbiBuZXZlciBiZSBhbnl0aGluZyBidXQgZXZpbCBpbiBhbnkgb2YgaXRzIGZvcm1zOyBidXQsIGlmIG9uZSAKbXVzdCBwcm9ub3VuY2UgYmV0d2VlbiB0aGVtLCB0aGUga2luZCB3aGljaCBpcyBwdXJzdWVkIGF0IHRoZSBub3RvcmlvdXMgQ2FzaW5vIApvZiBNb250ZSBDYXJsbyBpcyBkZWNpZGVkbHkgdGhlIGxlc3Mgb2JqZWN0aW9uYWJsZSBvZiB0aGUgdHdvLCBmb3IgdGhlcmUgdGhlIApnYW1ibGluZyBpcyBhdCBsZWFzdCBmYWlyLCBhbmQgdGhlIHZpY3RpbSBrbm93cyBoaXMgY2hhbmNlcyBiZWZvcmVoYW5kOyBhbHNvLCBoZSAKd2lucyBvciBsb3NlcyB0byBhbiBpbXBlcnNvbmFsIGVudGl0eS0tIHRoZSBiYW5rLCBhbmQsIHNvIGRvZXMgbm90IG9idmlvdXNseSBhbmQgCmludGVudGlvbmFsbHkgcnVpbiBoaXMgZmVsbG93LW1lbi4gCgoKMTA2NS7CoMKgwqDCoApGcm9tIHRoZSBvY2N1bHQgcG9pbnQgb2YgdmlldywgYmV0dGluZywgYWxjb2hvbC1kcmlua2luZywgY29ycHNlLWVhdGluZyAKYW5kIHRoZSBzbGF1Z2h0ZXIgb2YgbGl2aW5nIGNyZWF0dXJlcyBpbiBzcG9ydCwgYXJlIHRoZSBncmVhdCBibG90cyB1cG9uIHRoZSAKZmFpciBmYW1lIG9mIHRoZSBFbmdsaXNoIG5hdGlvbi4gSWYgdGhvc2UgY291bGQgYmUgcmVtb3ZlZCB3ZSBzaG91bGQgaGF2ZSBtYWRlIApzZXZlcmFsIGxvbmcgc3RlcHMgb24gdGhlIHdheSB0b3dhcmRzIGNpdmlsaXNhdGlvbi4gCgoKMTA2Ni7CoMKgwqDCoApBbHRob3VnaCBvY2N1bHRpc20gaGFzIG5vdGhpbmcgYnV0IHVuZXF1aXZvY2FsIGNvbmRlbW5hdGlvbiBmb3IgYWxsIGZvcm1zIApvZiBzby1jYWxsZWQgc3BvcnQsIHdoaWNoIGluIGFueSB3YXkgd2hhdGV2ZXIgaW5qdXJlIGFueSBsaXZpbmcgY3JlYXR1cmUsIGl0IGhhcyAKbm90IGEgdmVzdGlnZSBvZiB0aGUgcHVyaXRhbiBwb2ludCBvZiB2aWV3IHRoYXQgZXZlcnl0aGluZyB3aGljaCBnaXZlcyBwbGVhc3VyZSAKaXMgbmVjZXNzYXJpbHkgd3JvbmcuIE9uIHRoZSBjb250cmFyeSwgdGhlIHByb21vdGlvbiBvZiBwbGVhc3VyZSByYW5rcyBpbiB0aGUgCm1pbmQgb2YgdGhlIG9jY3VsdGlzdCBuZXh0IHRvIHRoZSBwcm9tb3Rpb24gb2YgcHJvZ3Jlc3MuIEl0IGlzIGdvb2QgdG8gZ2l2ZSAKcGxlYXN1cmUgdG8gYW55b25lOyBpdCBpcyBmYXIgYmV0dGVyIHN0aWxsIHRvIGhlbHAgaGltIG9uIHRoZSBwYXRoIG9mIHByb2dyZXNzOyAKYnV0IGl0IGlzIGJlc3Qgb2YgYWxsIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gY29tYmluZSB0aGUgdHdvLiBTbyB0aGUgb2NjdWx0aXN0IAp3ZWxjb21lcyBoYXJtbGVzcyBhbXVzZW1lbnQ7IGhpcyBvbmx5IHByb3Zpc28gaXMgdGhhdCBpdCBzaGFsbCBiZSAKaGFybWxlc3MtLSB0aGF0IGl0IHNoYWxsIG5vdCBpbnZvbHZlIHBhaW4gb3Igc3VmZmVyaW5nIG9yIGV2ZW4gZGlzY29tZm9ydCBvciAKcmlkaWN1bGUgZm9yIGFueSBsaXZpbmcgYmVpbmcuIAoKCjEwNjcuwqDCoMKgwqAKVEhFIFRIRUFUUkUgCgoKMTA2OC7CoMKgwqDCoApUaGUgaGlkZGVuIHNpZGUgb2YgYSBwZXJmb3JtYW5jZSBhdCB0aGUgdGhlYXRyZSBkZXBlbmRzIGVudGlyZWx5IHVwb24gdGhlIApuYXR1cmUgb2YgdGhlIHBlcmZvcm1hbmNlLiBUaGUgcGFzc2lvbnMgcG9ydHJheWVkIGJ5IHRoZSBhY3RvcnMsIG5vdCBiZWluZyBpbiAKYW55IHNlbnNlIHJlYWwsIHByb2R1Y2UgcHJhY3RpY2FsbHkgbm8gZWZmZWN0IG9uIGhpZ2hlciBtYXR0ZXIsIGJ1dCAKdW5mb3J0dW5hdGVseSB0aGVyZSBzZWVtcyB0byBiZSBub3QgaW5mcmVxdWVudGx5IGEgZ3JlYXQgZGVhbCBvZiBjb25jZWl0IApjb25uZWN0ZWQgd2l0aCBhY3RpbmcsIGFuZCBhIGdyZWF0IGRlYWwgb2YgamVhbG91c3kgb2Ygb3RoZXIgYWN0b3JzLiBTbyBmYXIgYXMgCnRoZXNlIGV4aXN0IHRoZXkgcmVwcmVzZW50IHVuZGVzaXJhYmxlIGluZmx1ZW5jZXMuIFRoZSBwcmluY2lwYWwgZWZmZWN0IHRvIGJlIApzZWVuIGF0IGEgdGhlYXRyZSBpcyB0aGUgcmVzdWx0IG9mIHRoZSBmZWVsaW5ncyBleGNpdGVkIGluIHRoZSBhdWRpZW5jZSwgYW5kIAp0aGVzZSBhZ2FpbiBkZXBlbmQgdXBvbiB0aGUgY2hhcmFjdGVyIG9mIHRoZSBwbGF5LiAKCgoxMDY5LsKgwqDCoMKgClRoZXJlIHNlZW1zIGFsbW9zdCBhbHdheXMgdG8gYmUgYW4gdW5kZXJjdXJyZW50IG9mIHNlbnN1YWxpdHkgZGlyZWN0ZWQgCnRvd2FyZHMgdGhlIHByaW5jaXBhbCBhY3RyZXNzZXMsIGJ1dCB0aGUgcGVvcGxlIHdobyBtYWtlLXVwIHRoZSBtYWpvcml0eSBvZiB0aGUgCmF1ZGllbmNlIHVzdWFsbHkgZm9sbG93IHRoZSBwbG90IG9mIHRoZSBwbGF5IGFuZCBmZWVsIGEgbWlsZCBhbW91bnQgb2YgaGF0cmVkIApmb3IgdGhlIHZpbGxhaW4gYW5kIGEgc29ydCBvZiBnZW50bGUgcGxlYXN1cmUgd2hlbiB0aGUgaGVybyBzdWNjZWVkcyBpbiAKb3Zlci10aHJvd2luZyBoaXMgbWFjaGluYXRpb25zLiBUaGVyZSBhcmUgc29tZSBpbmdlbnVvdXMgcGVvcGxlIHdobyByZWFsbHkgdGhyb3cgCnRoZW1zZWx2ZXMgaGVhcnQgYW5kIHNvdWwgaW50byB0aGUgcGxheS0tIHRvIHdob20gaXQgaXMgZm9yIHRoZSB0aW1lIGV4YWN0bHkgCmxpa2UgcmVhbCBsaWZlLiBUaGVzZSBzZW5kIG91dCBzdHJvbmcgZW1vdGlvbnMgb2YgdmFyaW91cyBraW5kcyBhcyB0aGUgcGxheSAKcHJvZ3Jlc3NlcywgYnV0IHVzdWFsbHkgdGhlaXIgbnVtYmVyIGlzIG5vdCBzdWZmaWNpZW50IHRvIGNvdW50IGZvciBtdWNoIGluIHRoZSAKZ2VuZXJhbCBhdXJhIG9mIHRoZSB0aGVhdHJlLiBUaGVyZSBhcmUgdW5mb3J0dW5hdGVseSBtYW55IG1vZGVybiBwbGF5cyB3aGljaCBhcmUgCmluIHRoZW1zZWx2ZXMgb2YgYSBoaWdobHkgb2JqZWN0aW9uYWJsZSBuYXR1cmUsIGFuZCB0aGUgdGhvdWdodC1mb3JtcyBvZiB0aG9zZSAKd2hvIHBhdHJvbmlzZSB0aGVtIGFyZSBuYXR1cmFsbHkgdW5wbGVhc2FudCBpbiBjaGFyYWN0ZXIuIAoKCjEwNzAuwqDCoMKgwqAKT25lIG1heSBzdW0gdXAgdGhlIG1hdHRlciBieSBzYXlpbmcgdGhhdCB0byBtYW55IHBlb3BsZSBhIHZpc2l0IHRvIHRoZSAKdGhlYXRyZSBpcyBsaWtlIHRoZSByZWFkaW5nIG9mIGEgbm92ZWwsIGJ1dCBpdCBwcmVzZW50cyB0aGUgZGlmZmVyZW50IGNoYXJhY3RlcnMgCnRvIHRoZW0gaW4gYSBtYW5uZXIgd2hpY2ggbWFrZXMgdGhlbSBtb3JlIHJlYWwgdG8gdGhlbS4gVGhlcmUgYXJlIG90aGVycywgb24gdGhlIApvdGhlciBoYW5kIChwZXJoYXBzIG1vcmUgaW1hZ2luYXRpdmUgcGVvcGxlKSwgd2hvIHdoZW4gdGhleSByZWFkIGEgc3RvcnkgbWFrZSAKZm9yIHRoZW1zZWx2ZXMgdGhvdWdodC1mb3JtcyBvZiBhbGwgdGhlIGNoYXJhY3RlcnMsIGFuZCB0aGVzZSBmb3JtcyBzZWVtIHRvIHRoZW0gCmZhciBtb3JlIHZpdmlkIGFuZCBzdWl0YWJsZSB0aGFuIGFueSByZXByZXNlbnRhdGlvbiBpbiB0aGUgdGhlYXRyZSBjYW4gYmUuIFN1Y2ggCnBlb3BsZSBhcmUgYWx3YXlzIGRpc2FwcG9pbnRlZCB3aGVuIHRoZXkgZ28gdG8gc2VlIGEgZHJhbWF0aXNlZCByZXByZXNlbnRhdGlvbiAKb2Ygb25lIG9mIHRoZWlyIGZhdm91cml0ZSBzdG9yaWVzLiAKCgoxMDcxLsKgwqDCoMKgCk90aGVycyB3aG8gaGF2ZSBub3QgdGhlIHBvd2VyIG9mIGltYWdpbmF0aW9uIHRvIGNsb3RoZSB0aGUgY2hhcmFjdGVycyAKd2l0aCBkZWZpbml0ZSBmb3JtcyBmb3IgdGhlbXNlbHZlcyBhcmUgdmVyeSBnbGFkIHRvIGhhdmUgdGhpcyBkb25lIGZvciB0aGVtIGJ5IAp0aGUgZHJhbWF0aXN0JyBzIGFydC4gRm9yIHRoZXNlLS0gYW5kIHRoZXkgYXJlIHRoZSBtYWpvcml0eSBvZiB0aGVhdHJlLWdvZXJzLS0gYSAKdmlzaXQgdG8gdGhlIHRoZWF0cmUgaXMgbm8gbW9yZSBoYXJtZnVsIHRoYW4gdGhlIHJlYWRpbmcgb2YgYSBub3ZlbCwgZXhjZXB0IGZvciAKdGhlIG5lY2Vzc2FyeSB1bnBsZWFzYW50IHN1cnJvdW5kaW5ncy0tIHRoZSB0aW5nZSBvZiBzZW5zdWFsaXR5IGluIHRoZSBhdWRpZW5jZSwgCmFuZCBvZiBjb25jZWl0IGFuZCBqZWFsb3VzeSBpbiB0aGUgYWN0b3JzLCB0byB3aGljaCBJIGhhdmUgcHJldmlvdXNseSByZWZlcnJlZCwgCmFuZCB0aGUgc3BlbmRpbmcgb2YgYSBjb3VwbGUgb2YgaG91cnMgaW4gYSB2aXRpYXRlZCBhdG1vc3BoZXJlIGFuZCBpbiB0aGUgbWlkc3QgCm9mIGEgbW9yZSBvciBsZXNzIGV4Y2l0ZWQgY3Jvd2QuIEZyb20gdGhlIG9jY3VsdCBwb2ludCBvZiB2aWV3IHRoZXNlIGxhdHRlciAKY29uc2lkZXJhdGlvbnMgdXN1YWxseSByYXRoZXIgb3V0d2VpZ2ggdGhlIGFkdmFudGFnZSBvZiBhbnkgcG9zc2libGUgZW5qb3ltZW50IAp0aGF0IG1heSBiZSBvYnRhaW5lZCBmcm9tIHRoZSBwZXJmb3JtYW5jZS4gCgoKMTA3Mi7CoMKgwqDCoApGT1VSVEggU0VDVElPTiAKCgoxMDczLsKgwqDCoMKgCkhPVyBXRSBJTkZMVUVOQ0UgT1RIRVJTIAoKCjEwNzQuwqDCoMKgwqAKQ0hBUFRFUiBYVklJSSAKCgoxMDc1LsKgwqDCoMKgCkJZIFdIQVQgV0UgQVJFIAoKCjEwNzYuwqDCoMKgwqAKVEhFIElOVEVSUkVMQVRJT04gT0YgTUVOIAoKCjEwNzcuwqDCoMKgwqAKV0UgaGF2ZSBiZWVuIGV4YW1pbmluZyB0aGUgaW5mbHVlbmNlcyB0byB3aGljaCB3ZSBhcmUgbGlhYmxlLCBhbmQgd2UgaGF2ZSAKYWxzbyBjb25zaWRlcmVkIGhvdywgYnkgcmVhY3Rpb25zIHdoaWNoIHdlIGRvIG5vdCBub3RpY2UsIHdlIGFyZSBjb25zdGFudGx5IAppbmZsdWVuY2luZyBvdXJzZWx2ZXMuIE5vdyB3ZSBjb21lIHRvIHRoZSB0aGlyZCBncmVhdCBicmFuY2ggb2Ygb3VyIHN1YmplY3QsIHRoZSAKcXVlc3Rpb24gb2YgaG93IHdlIGluZmx1ZW5jZSBvdGhlcnMuIFdoYXQgaGFzIGJlZW4gYWxyZWFkeSBzYWlkIGlzIHN1ZmZpY2llbnQgdG8gCnNob3cgdXMgdGhhdCBpbnZhcmlhYmx5IHdlIG11c3QgaW5mbHVlbmNlIHRoZW0sIHdoZXRoZXIgd2Ugd2lzaCB0byBkbyBzbyBvciBub3Q7IApmb3IgaWYsIGFzIHdlIGhhdmUgYWxyZWFkeSBzZWVuLCBhbGwgdGhlc2UgdmFyaWVkIGluZmx1ZW5jZXMgYXJlIGNvbnN0YW50bHkgCnBsYXlpbmcgdXBvbiBhbmQgYWZmZWN0aW5nIHVzLCBpdCBpcyBxdWl0ZSBjbGVhciB0aGF0IHdoYXQgd2UgZG8gaW4gb3VyIHR1cm4gCm11c3QgYmUgcGFydCBvZiB0aGUgaW5mbHVlbmNlIHdoaWNoIGlzIGFjdGluZyBvbiB0aG9zZSBuZWFyIHVzLiBXZSBhcmUgYWxsIHNvIApjbG9zZWx5IGludGVycmVsYXRlZCB0aGF0IG5vIG1hbiBjYW4gbGl2ZSBoaXMgbGlmZSB0byBoaW1zZWxmIGFsb25lLCBhbmQgZXZlcnkgCnRob3VnaHQgb3IgYWN0aW9uIGlzIHByb2R1Y2luZyBpdHMgcmVzdWx0IG9uIG90aGVycy0tIG5vdCBvbmx5IGJlY2F1c2UgcGVvcGxlIApzZWUgb3VyIGFjdGlvbnMgaW4gdGhlIHBoeXNpY2FsIHdvcmxkIGFuZCBpbWl0YXRlIHRoZW0sIGJ1dCBiZWNhdXNlIHRoZXkgYXJlIAphZmZlY3RlZCBieSB0aGUgdW5zZWVuIHJhZGlhdGlvbiBvZiB0aGUgdmlicmF0aW9ucyBvZiBvdXIgdGhvdWdodHMgYW5kIGZlZWxpbmdzLgoKCjEwNzguwqDCoMKgwqAKV2UgaW5mbHVlbmNlIHBlb3BsZSBpbiB0aHJlZSB3YXlzOiBieSB3aGF0IHdlIGFyZTsgYnkgd2hhdCB3ZSB0aGluayBhbmQgCmRlc2lyZTsgYnkgd2hhdCB3ZSBzYXkgYW5kIGRvLiAKCgoxMDc5LsKgwqDCoMKgCkZpcnN0IGJ5IHdoYXQgd2UgYXJlOyBiZWNhdXNlIHdoYXQgd2UgYXJlIGV4cHJlc3NlcyBpdHNlbGYgaW4gb3VyIHZhcmlvdXMgCnZlaGljbGVzLCBhbmQgdGhleSBhcmUgY29uc3RhbnRseSBwb3VyaW5nIG91dCB3YXZlcyBvZiBpbmZsdWVuY2Ugd2hpY2ggdGVuZCB0byAKcmVwcm9kdWNlIHRoZW1zZWx2ZXMtLSB0aGF0IGlzLCB0byBpbmZlY3Qgb3RoZXIgcGVvcGxlLiBTbyB3aGF0ZXZlciB3ZSB3aXNoIApvdGhlciBwZW9wbGUgdG8gYmUsIHdlIG91cnNlbHZlcyBtdXN0IGJlIGZpcnN0IG9mIGFsbC4gV2hhdCB0aGVuIGlzIHRoZSBpZGVhIAp3aGljaCB3ZSBzaG91bGQgc2V0IGJlZm9yZSBvdXJzZWx2ZXMgaW4gdGhpcyBtYXR0ZXI/IE1hbnkgd291bGQgc2F5IO+/vVRvIGJlIApnb29kLO+/vSBhbmQgb2YgY291cnNlIHRoYXQgaXMgdGhlIGZpcnN0IGNvbnNpZGVyYXRpb247IGJ1dCBzdXJlbHkgd2UgbWF5IHRha2UgCnRoYXQgZm9yIGdyYW50ZWQuIEFueW9uZSB3aG8gaGFzIGdvdCBzbyBmYXIgYXMgZXZlbiB0byB0aGluayBhYm91dCB0aGUgZHV0eSBvZiAKaW5mbHVlbmNpbmcgdGhlIHdvcmxkLCBtdXN0IGJ5IHRoZSBoeXBvdGhlc2lzIGJlIHRyeWluZyBoaXMgYmVzdCB0byBsaXZlIGEgZ29vZCAKbGlmZS4gTGV0IHVzIHRoZW4gYXNzdW1lIHRoZSBnb29kIGludGVudGlvbiBhbmQgdGhlIGVhcm5lc3QgZW5kZWF2b3VyLCBhbmQgbGV0IAp1cyBzZWUgd2hhdCB3ZSBjYW4gZG8gdG8gaW1wcm92ZSB0aGUgd29ybGQgYXJvdW5kIHVzIGJ5IG91ciBleGFtcGxlLiBJIHRoaW5rIHRoZSAKZmlyc3QgcG9pbnQgaXMgdGhlIGR1dHkgb2YgaGFwcGluZXNzIGFuZCBwZWFjZS4gCgoKMTA4MC7CoMKgwqDCoApUSEUgRFVUWSBPRiBIQVBQSU5FU1MgCgoKMTA4MS7CoMKgwqDCoApMZXQgdXMgdGFrZSBoYXBwaW5lc3MgZmlyc3QuIFVucXVlc3Rpb25hYmx5IHRoZSBEZWl0eSBtZWFucyBtYW4gdG8gYmUgCmhhcHB5LiBIYXBwaW5lc3MgaXMgYSBkdXR5OyBJIGRvIG5vdCBtZWFuIG1lcmVseSBwaGlsb3NvcGhpY2FsIGNhbG0sIHRob3VnaCAKYXNzdXJlZGx5IHRoYXQgaXMgYSBnb29kIHRoaW5nOyBJIG1lYW4gYWN0aXZlIGhhcHBpbmVzcy4gSXQgaXMgYSBkdXR5LCBub3Qgb25seSAKdG8gdGhlIERpdmluZSBQb3dlciBhbmQgdG8gb3Vyc2VsdmVzLCBidXQgYWxzbyB0byBvdGhlcnMsIGFzIEkgc2hhbGwgcHJlc2VudGx5IApzaG93OyBhbmQgaXQgaXMgYSBkdXR5IG5vdCBkaWZmaWN1bHQgb2YgYWNjb21wbGlzaG1lbnQsIGlmIHdlIHdpbGwgb25seSBleGVyY2lzZSAKdGhlIGluZXN0aW1hYmxlIGZhY3VsdHkgb2YgY29tbW9uIHNlbnNlLiBZZXQgdGhlIG1ham9yaXR5IG9mIG1lbiBhbmQgd29tZW4gYXJlIApvYnZpb3VzbHkgb2Z0ZW4gdW5oYXBweTsgd2h5PyAKCgoxMDgyLsKgwqDCoMKgClVuaGFwcGluZXNzIGlzIGEgbWVudGFsIGNvbmRpdGlvbiwgc28gdGhlIHN1ZmZlcmluZyB3aGljaCBjb21lcyBmcm9tIApzaWNrbmVzcyBvciBhY2NpZGVudCBpcyBub3Qgc3RyaWN0bHkgcGFydCBvZiBvdXIgc3ViamVjdCwgeWV0IHRoZXJlIGlzIG9mdGVuIGEgCm1lbnRhbCBzaWRlIGV2ZW4gdG8gdGhhdCwgd2hpY2ggbWF5IGJlIGdyZWF0bHkgbWluaW1pc2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiBvZiAKcmVhc29uLiBFdGVybmFsIEp1c3RpY2UgcnVsZXMgdGhlIHdvcmxkLCBhbmQgdGhlcmVmb3JlIG5vdGhpbmcgY2FuLCBieSBhbnkgCnBvc3NpYmlsaXR5LCBoYXBwZW4gdG8gdXMgdGhhdCB3ZSBoYXZlIG5vdCBkZXNlcnZlZDsgYW5kIGFzIHRoYXQgZXRlcm5hbCBKdXN0aWNlIAppcyBhbHNvIGV0ZXJuYWwgTG92ZSwgZXZlcnl0aGluZyB0aGF0IGhhcHBlbnMgdG8gdXMgaXMgaW50ZW5kZWQgdG8gaGVscCB1cyAKZm9yd2FyZCBpbiBvdXIgZGV2ZWxvcG1lbnQsIGFuZCBpcyBjYXBhYmxlIG9mIGRvaW5nIHNvLCBpZiB3ZSB3aWxsIG9ubHkgdGFrZSBpdCAKaW4gdGhlIHJpZ2h0IHdheSBhbmQgdHJ5IHRvIGxlYXJuIHRoZSBsZXNzb24gd2hpY2ggaXQgaXMgbWVhbnQgdG8gdGVhY2guIFNpbmNlIAp0aGlzIGlzIHRydWUtLSBhbmQgdGhvc2Ugd2hvIGhhdmUgcHJvYmVkIG1vc3QgZGVlcGx5IGludG8gdGhlIG15c3RlcmllcyBvZiBsaWZlIAphbmQgZGVhdGgga25vdyB0aGF0IGl0IGlzLS0gdG8gZ3J1bWJsZSBvciB0byByZXBpbmUgYXQgc3VmZmVyaW5nIGlzIG1hbmlmZXN0bHkgCm5vdCBvbmx5IHRvIHdhc3RlIG11Y2ggZm9yY2UgdXNlbGVzc2x5LCBidXQgYWxzbyB0byB0YWtlIGFuIGVudGlyZWx5IGluYWNjdXJhdGUgCmFuZCBmb29saXNoIHZpZXcgb2YgbGlmZSwgYW5kIHRvIGxvc2Ugd2hhdCBpcyBkZXNpZ25lZCBhcyBhbiBvcHBvcnR1bml0eS4gCgoKMTA4My7CoMKgwqDCoApMZXQgdXMgY29uc2lkZXIgc29tZSBvZiB0aGUgbW9yZSBmcmVxdWVudCBjYXVzZXMgb2YgdGhpcyBwcmV2YWxlbnQgCnVuaGFwcGluZXNzLCBpbiBvcmRlciB0byBzZWUgaG93IGl0IGNhbiBiZSBhdm9pZGVkLiBNYW4gaGFzIGRpc3BsYXllZCBleGNlZWRpbmcgCmluZ2VudWl0eSBpbiBpbnZlcnRpbmcgcmVhc29ucyBmb3IgYmVpbmcgbWlzZXJhYmxlLCBidXQgbW9zdCBvZiB0aGVtIGNhbiBiZSAKY2xhc3NlZCB1bmRlciBvbmUgb3Igb3RoZXIgb2YgZm91ciBoZWFkcy0tIGRlc2lyZSwgcmVncmV0LCBmZWFyIGFuZCB3b3JyeS4gCgoKMTA4NC7CoMKgwqDCoApEZXNpcmUgLS0gTXVjaCB1bmhhcHBpbmVzcyBhcmlzZXMgYmVjYXVzZSBwZW9wbGUgYXJlIHBlcnBldHVhbGx5IAp5ZWFybmluZyBmb3Igd2hhdCB0aGV5IGhhdmUgbm90LS0gZm9yIHJpY2hlcywgZm9yIGZhbWUsIGZvciBwb3dlciwgZm9yIHNvY2lhbCAKcG9zaXRpb24sIGZvciBzdWNjZXNzIGluIGFsbCBzb3J0cyBvZiB1bmRlcnRha2luZ3MuIEkgZG8gbm90IGZvcmdldCB0aGF0IApjb250ZW50bWVudCBtYXkgc29tZXRpbWVzIGRlbm90ZSBzdGFnbmF0aW9uLCBhbmQgdGhhdCB3aGF0IGhhcyBiZWVuIGNhbGxlZCAK77+9ZGl2aW5lIGRpc2NvbnRlbnTvv70gaXMgYSBwcmVyZXF1aXNpdGUgdG8gcHJvZ3Jlc3MuIFRoYXQgd2Ugc2hvdWxkIHVuY2Vhc2luZ2x5IAplbmRlYXZvdXIgdG8gaW1wcm92ZSBvdXJzZWx2ZXMsIHRvIGJldHRlciBvdXIgcG9zaXRpb24sIHRvIGF1Z21lbnQgb3VyIHBvd2VyIG9mIApoZWxwZnVsbmVzcyB0byBvdGhlcnMtLSBhbGwgdGhpcyBpcyBnb29kIGFuZCBlc3RpbWFibGUsIGFuZCB0ZW5kcyB0byBvdXIgCmV2b2x1dGlvbjsgYnV0IG1vc3Qgb2Ygb3VyIGRpc2NvbnRlbnQgaXMgYW55dGhpbmcgYnV0IGRpdmluZSwgYmVjYXVzZSBpdCBpcyBub3QgCmEgZGVzaXJlIGZvciBpbXByb3ZlbWVudCBhbmQgdXNlZnVsbmVzcywgYnV0IHJhdGhlciBhIG1lcmUgc2VsZmlzaCBjcmF2aW5nIGZvciAKdGhlIHBlcnNvbmFsIGVuam95bWVudCB0aGF0IHdlIGV4cGVjdCB0byBkZXJpdmUgZnJvbSByaWNoZXMgb3IgZnJvbSB0aGUgZXhlcmNpc2UgCm9mIHBvd2VyOyBhbmQgdGhhdCBpcyB3aHkgc28gbXVjaCBtaXNlcnkgcmVzdWx0cyBmcm9tIGl0LiBQcmVzcyBmb3J3YXJkLCBpbmRlZWQsIAphcyBhcmRlbnRseSBhcyB5b3Ugd2lsbDsgYnV0IGJlIGhhcHB5IGluIHlvdXIgcHJlc3NpbmcsIGJlIGNoZWVyeSB1bmRlciBmYWlsdXJlLCAKYW5kIG5ldmVyIGJlIHRvbyBidXN5IHRvIGhvbGQgb3V0IGEgaGVscGluZyBoYW5kIHRvIHlvdXIgZmVsbG93LXBpbGdyaW0uIAoKCjEwODUuwqDCoMKgwqAKQW1vbmcgdGhlIG1vc3QgcG9pc29ub3VzIG9mIHRoZSBtYW5pZm9sZCBmb3JtcyBvZiB0aGlzIGdyZWF0IHdlZWQgZGVzaXJlLCAKYXJlIHRob3NlIGNhbGxlZCBlbnZ5IGFuZCBqZWFsb3VzeS4gSWYgbWVuIHdvdWxkIG9ubHkgbGVhcm4gdG8gbWluZCB0aGVpciBvd24gCmJ1c2luZXNzIGFuZCBsZWF2ZSBvdGhlciBwZW9wbGUgYWxvbmUsIG1hbnkgZmVydGlsZSBzb3VyY2VzIG9mIHVuaGFwcGluZXNzIHdvdWxkIApkaXNhcHBlYXIuIFdoYXQgaXMgaXQgdG8geW91IHRoYXQgYW5vdGhlciBtYW4gaGFzIG1vcmUgbW9uZXkgb3IgYSBsYXJnZXIgaG91c2UsIAp0aGF0IGhlIGtlZXBzIG1vcmUgc2VydmFudHMgb3Igb3ducyBiZXR0ZXIgaG9yc2VzLCBvciB0aGF0IGhpcyB3aWZlIGlzIGFibGUgdG8gCmluZHVsZ2UgaW4gbW9yZSBhc3RvbmlzaGluZyB2YWdhcmllcyBvZiBtaWxsaW5lcnkgYW5kIGRyZXNzbWFraW5nPyBBbGwgdGhlc2UgCnRoaW5ncyBhZmZvcmQgaGltIGEgY2VydGFpbiBraW5kIG9mIG9wcG9ydHVuaXR5LS0gYSB0ZXN0IG9mIGhpcyBjYXBhY2l0eSBmb3IgCnVzaW5nIHRoZW0gYXJpZ2h0OyBoZSBtYXkgYmUgc3VjY2VlZGluZyBvciBoZSBtYXkgYmUgZmFpbGluZywgYnV0IGluIGFueSBjYXNlIAp5b3UgYXJlIG5vdCBoaXMganVkZ2UsIGFuZCB5b3VyIGJ1c2luZXNzIGlzIGNsZWFybHkgbm90IHRvIHdhc3RlIHlvdXIgdGltZSBpbiAKY3JpdGljaXNpbmcgYW5kIGVudnlpbmcgaGltLCBidXQgdG8gYmUgcXVpdGUgc3VyZSB0aGF0IHlvdSB5b3Vyc2VsZiBhcmUgCmZ1bGZpbGxpbmcgdG8gdGhlIHV0dGVybW9zdCB0aGUgZHV0aWVzIHdoaWNoIGFwcGVydGFpbiB0byB5b3VyIG93biBzdGF0ZSBvZiAKbGlmZS4gCgoKMTA4Ni7CoMKgwqDCoApQZXJoYXBzIG9mIGFsbCB0aGUgcGFzc2lvbnMgd2hpY2ggcG9vciBodW1hbiBuYXR1cmUgY2hlcmlzaGVzLCBqZWFsb3VzeSAKaXMgdGhlIG1vc3QgcmlkaWN1bG91cy4gSXQgcHJldGVuZHMgdG8gbG92ZSBmZXJ2ZW50bHksIGFuZCB5ZXQgb2JqZWN0cyB0aGF0IGFueSAKb3RoZXIgc2hvdWxkIHNoYXJlIGl0cyBkZXZvdGlvbjsgd2hlcmVhcyB1bnNlbGZpc2ggYWZmZWN0aW9uIGJ1dCByZWpvaWNlcyB0aGUgCm1vcmUgd2hlbiBpdCBmaW5kcyB0aGUgb2JqZWN0IG9mIGl0cyBhZG9yYXRpb24gdW5pdmVyc2FsbHkgYXBwcmVjaWF0ZWQuIEplYWxvdXN5IApsb2F0aGVzLCBhYm92ZSBhbGwgdGhpbmdzLCB0byBzZWUgZXZpZGVuY2Ugb2YgdGhlIGZvbmRuZXNzIG9mIGZvciBpdHMgaWRvbCwgYW5kIAp5ZXQgaXQgaXMgYWx3YXlzIGVhZ2VybHkgd2F0Y2hpbmcgZm9yIGNvbmZpcm1hdGlvbiBvZiBpdHMgc3VzcGljaW9ucywgYW5kIHdpbGwgCnRha2UgYW55IGFtb3VudCBvZiB0cm91YmxlIHRvIHByb3ZlIHRvIGl0c2VsZiB0aGUgZXhpc3RlbmNlIG9mIHdoYXQgbW9zdCBpdCAKaGF0ZXMhIFNlZSB0aGVuIGhvdyBtdWNoIHV0dGVybHkgdW5uZWNlc3NhcnkgdW5oYXBwaW5lc3MgaXMgZXNjYXBlZCBieSB0aGUgbWFuIAp3aG8gaXMgc3Ryb25nIGVub3VnaCBhbmQgc2Vuc2libGUgZW5vdWdoIHRvIG1pbmQgaGlzIG93biBidXNpbmVzcywgYW5kIHJlZnVzZXMgCmFic29sdXRlbHkgdG8gYmUgZHJhd24gaW50byB0aGUgbWVzaGVzIGVpdGhlciBvZiBlbnZ5IG9yIGplYWxvdXN5LiAKCgoxMDg3LsKgwqDCoMKgCkN1cmIgZGVzaXJlIGFuZCBjdWx0aXZhdGUgY29udGVudG1lbnQ7IGxldCB5b3VyIHdhbnRzIGJlIGZldyBhbmQgc2ltcGxlIAphbmQgeW91ciBhbWJpdGlvbnMgZm9yIHByb2dyZXNzIGFuZCB1c2VmdWxuZXNzIHJhdGhlciB0aGFuIGZvciBwb3NzZXNzaW9uczsgYW5kIAp5b3Ugd2lsbCBmaW5kIHRoYXQgeW91IGhhdmUgZWxpbWluYXRlZCBvbmUgb2YgdGhlIG1vc3QgZnJ1aXRmdWwgYW5kIHBvdGVudCAKY2F1c2VzIG9mIG1pc2VyeS4gCgoKMTA4OC7CoMKgwqDCoApSZWdyZXQgLS0gSXQgaXMgcGl0aWFibGUgdG8gdGhpbmsgaG93IG1hbnkgdGhvdXNhbmRzIGV2ZXJ5IGRheSAKYXJlIHN1ZmZlcmluZyBuZWVkbGVzcywgaG9wZWxlc3MsIHVzZWxlc3MgYWdvbmllcyBvZiByZWdyZXQuIFlvdSBoYWQgbW9uZXkgCnBlcmhhcHMsIGFuZCBpdCBpcyBnb25lOyB5b3UgaGFkIGEgcG9zaXRpb24sIGFuZCB5b3UgaGF2ZSBsb3N0IGl0LiBUaGF0IGlzIG5vIApyZWFzb24gd2h5IHlvdSBzaG91bGQgc3F1YW5kZXIgeW91ciBzdHJlbmd0aCBhbmQgeW91ciB0aW1lIGluIHVuYXZhaWxpbmcgCmxhbWVudGF0aW9uLiBTdGFydCBhdCBvbmNlIHRvIGVhcm4gbW9yZSBtb25leSwgdG8gbWFrZSBmb3IgeW91cnNlbGYgYW5vdGhlciAKcG9zaXRpb24uIO+/vUxldCB0aGUgZGVhZCBwYXN0IGJ1cnkgaXRzIGRlYWQs77+9IGFuZCB0dXJuIHlvdXIgdGhvdWdodCB0byB0aGUgCmZ1dHVyZS4gCgoKMTA4OS7CoMKgwqDCoApZZXMsIGFuZCB0aGlzIGlzIHRydWUgZXZlbiB0aG91Z2ggdGhlIGxvc3MgaGFzIGJlZW4gY2F1c2VkIGJ5IHlvdXIgb3duIApmYXVsdCwgZXZlbiB0aG91Z2ggdGhhdCB3aGljaCB5b3UgcmVncmV0IGJlIGEgc2luLiBZb3UgbWF5IGhhdmUgZmFpbGVkLCBhcyBtYW55IAphIG1hbiBiZWZvcmUgeW91IGhhcyBmYWlsZWQsIGJ1dCB5b3UgaGF2ZSBubyB0aW1lIHRvIHdhc3RlIGluIHJlbW9yc2UuIElmIHlvdSAKaGF2ZSBmYWxsZW4sIGRvIG5vdCBsaWUgbW91cm5pbmcgaW4gdGhlIG11ZCwgYnV0IGdldCB1cCBhdCBvbmNlLCBhbmQgZ28gb24geW91ciAKd2F5IG1vcmUgY2lyY3Vtc3BlY3RseS4gU2V0IHlvdXIgZmFjZSBmb3J3YXJkLCBhbmQgcHVzaCByZXNvbHV0ZWx5IGFoZWFkLiBJZiB5b3UgCmZhbGwgYSB0aG91c2FuZCB0aW1lcy0tIHdlbGwsIGdldCB1cCBhIHRob3VzYW5kIHRpbWVzIGFuZCBnbyBvbiBhZ2FpbjsgaXQgaXMgCmFic29sdXRlbHkgdXNlbGVzcyB0byBzaW5rIGRpc2NvdXJhZ2VkIGJ5IHRoZSB3YXkuIFRoZXJlIGlzIGp1c3QgYXMgbXVjaCByZWFzb24gCmZvciB0aGUgdGhvdXNhbmR0aCBhdHRlbXB0IGFzIHRoZXJlIHdhcyBmb3IgdGhlIGZpcnN0LCBhbmQgaWYgeW91IHBlcnNldmVyZSAKc3VjY2VzcyBpcyBjZXJ0YWluLCBmb3IgeW91ciBzdHJlbmd0aCBncm93cyBieSByZXBlYXRlZCBlZmZvcnQuIEEgTWFzdGVyIG9uY2UgCnNhaWQ6IO+/vVRoZSBvbmx5IHJlcGVudGFuY2Ugd2hpY2ggaXMgb2YgdGhlIHNsaWdodGVzdCB2YWx1ZSBpcyBkZXRlcm1pbmF0aW9uIG5vdCAKdG8gY29tbWl0IHRoZSBzYW1lIHNpbiBhZ2Fpbi7vv70gVGhlIHdpc2UgbWFuIGlzIG5vdCBoZSB3aG8gbmV2ZXIgbWFrZXMgbWlzdGFrZXMsIApidXQgaGUgd2hvIG5ldmVyIG1ha2VzIHRoZSBzYW1lIG1pc3Rha2UgdHdpY2UuIAoKCjEwOTAuwqDCoMKgwqAKVGhlIGdyZWF0ZXN0IG9mIGFsbCByZWdyZXRzLCBJIGtub3cgZnVsbCB3ZWxsLCBpcyB0aGF0IGZvciDvv710aGUgdG91Y2ggb2YgCmEgdmFuaXNoZWQgaGFuZCwgYW5kIHRoZSBzb3VuZCBvZiBhIHZvaWNlIHRoYXQgaXMgc3RpbGzvv70uIFlldCBldmVuIHRoYXQgbW9zdCAKc2FjcmVkIG9mIHNvcnJvd3MgbWF5IGJlIGRpc3BlbGxlZCwgaWYgd2UgYXJlIHdpbGxpbmcgdG8gdGFrZSB0aGUgdHJvdWJsZSB0byAKdW5kZXJzdGFuZC4gV2hlbiB0aG9zZSB3aG9tIHdlIGxvdmUgcGFzcyBmcm9tIHRoZSBzaWdodCBvZiBvdXIgcGh5c2ljYWwgZXllcywgd2UgCmFyZSBubyBsb25nZXIgbGVmdCBnYXppbmcgYXQgYSBibGFuayB3YWxsLCBjbGluZ2luZyB3aXRoIGRlc3BlcmF0ZSBmYWl0aCB0byAKbmVidWxvdXMgdW5jZXJ0YWludHksIGhvcGluZyBhZ2FpbnN0IGhvcGUgZm9yIHNvbWUgZmFyIGRpc3RhbnQgcmV1bmlvbiwgYXMgd2VyZSAKc28gbWFueSBvZiBvdXIgZm9yZWZhdGhlcnMuIAoKCjEwOTEuwqDCoMKgwqAKU2NpZW5jZSBub3cgdHJlYWRzIHdoZXJlIGlnbm9yYW5jZSBvbmNlIHJlc2lnbmVkLCBhbmQgYW55b25lIHdobyBpcyByZWFkeSAKdG8gZXhhbWluZSB0aGUgYXZhaWxhYmxlIGV2aWRlbmNlIG1heSBjb252aW5jZSBoaW1zZWxmIHRoYXQgZGVhdGggaXMgYnV0IHRoZSAKc3RlcHBpbmcgZnJvbSBvbmUgcm9vbSBpbnRvIGFub3RoZXIsIHRoZSBnYXRlIG9mIGEgaGlnaGVyIGFuZCBmdWxsZXIgbGlmZSwgYW5kIAp0aGF0IHdlIGhhdmUgbm90IGluIGFueSBzZW5zZSBsb3N0IG91ciBmcmllbmRzLCBhcyB3ZSBzbyBvZnRlbiAKZXJyb25lb3VzbHkgc2F5LCBidXQgaGF2ZSBvbmx5IGxvc3QgZm9yIHRoZSB0aW1lIHRoZSBwb3dlciB0byBzZWUgdGhlbS4gQSBsaXR0bGUgCnBhdGllbnQgc3R1ZHkgb2YgdGhlIGZhY3RzIHNvb24gZW5hYmxlcyB1cyB0byB0dXJuIGZyb20gYSBzZWxmaXNoIGNvbnRlbXBsYXRpb24gCm9mIHRoaXMgaWxsdXNpb24gb2Ygb3VyIGJlcmVhdmVtZW50IHRvIHRoZSBnbG9yaW91cyBjZXJ0YWludHkgd2hpY2ggb3BlbnMgb3V0IApiZWZvcmUgdGhvc2Ugd2hvIGFyZSBzbyBtdWNoIGRlYXJlciB0byB1cyB0aGFuIG91cnNlbHZlczsgYW5kIHRodXMgb25lIG9mIHRoZSAKc2FkZGVzdCBvZiBhbGwgZm9ybXMgb2YgdW5oYXBwaW5lc3MgaXMgYXQgbGVhc3QgZ3JlYXRseSBtaXRpZ2F0ZWQsIGV2ZW4gd2hlbiBub3QgCmVudGlyZWx5IHJlbW92ZWQuIAoKCjEwOTIuwqDCoMKgwqAKRmVhciAtLSBJIHN1cHBvc2UgdGhhdCBvbmx5IHRob3NlIHdobywgbGlrZSBzb21lIG9mIHRoZSBjbGVyZ3ksIApoYXZlIGhhZCBzcGVjaWFsIG9wcG9ydHVuaXRpZXMgb2Yga25vd2luZyB0aGUgaW5uZXIgc2lkZSBvZiBtZW4nIHMgbGl2ZXMsIGNhbiBiZSAKYXdhcmUgb2YgdGhlIGV4dGVudCB0byB3aGljaCBodW1hbml0eSBzdWZmZXJzIGZyb20gdGhlIGZlYXIgb2YgZGVhdGguIE1hbnkgYSBtYW4gCndobyBzaG93cyBhIGJyYXZlIGZyb250IHRvIHRoZSB3b3JsZCwgYW5kIGxhdWdocyBhbmQgc21pbGVzIHdpdGggdGhlIGJlc3QsIGlzIAp5ZXQgZ3JvYW5pbmcgaW53YXJkbHkgYWxsIHRoZSB3aGlsZSB1bmRlciB0aGUgb3BwcmVzc2lvbiBvZiBhIHNlY3JldCBob3Jyb3IsIAprbm93aW5nIHRoYXQgZGVhdGggbXVzdCBjb21lLCBkcmVhZGluZyBsZXN0IHRoZSBzd29yZCBzaG91bGQgZmFsbC4gWWV0IGFsbCB0aGlzIAppcyBxdWl0ZSB1bm5lY2Vzc2FyeSwgYW5kIGNvbWVzIG9ubHkgZnJvbSBpZ25vcmFuY2UsIGFzIGluZGVlZCBkb2VzIGFsbCBmZWFyOyAKZm9yIHRob3NlIHdobyBjb21wcmVoZW5kIGRlYXRoIGZlZWwgbm8gZGlzbWF5IGF0IGl0cyBhcHByb2FjaC4gVGhleSAKa25vdyB0aGF0IG1hbiBkb2VzIG5vdCBkaWUsIGJ1dCBzaW1wbHkgbGF5cyBhc2lkZSBoaXMgYm9keSBhcyBvbmUgbGF5cyAKYXNpZGUgYSB3b3JuLW91dCBzdWl0IG9mIGNsb3RoZXM7IGFuZCB0byB0aGVtIG9uZSBwcm9jZXNzIGlzIG5vIG1vcmUgdGVycmlibGUgCnRoYW4gdGhlIG90aGVyLiBUaGUgbWFuIHdobyBpbiB0aGlzIHR3ZW50aWV0aCBjZW50dXJ5IGRvZXMgbm90IHlldCBrbm93IHRoZSAKZmFjdHMgYWJvdXQgZGVhdGgsIGlzIG1lcmVseSB0aGUgbWFuIHdobyBoYXMgbm90IHRha2VuIHRoZSBwYWlucyB0byBsb29rIGludG8gCnRoZSBtYXR0ZXIsIGFuZCBpZiBoZSBzdWZmZXJzIGZyb20gZmVhciBvZiB0aGF0IHdoaWNoIGRvZXMgbm90IGV4aXN0LCBoZSBoYXMgCm9ubHkgaGltc2VsZiB0byBibGFtZS4gCgoKMTA5My7CoMKgwqDCoApNYW55IGFyZSBoYXVudGVkIGJ5IHRoZSBhcHByZWhlbnNpb24gb2YgbG9zcyBvZiBwcm9wZXJ0eSwgb2YgbGFwc2luZyBpbnRvIApwb3ZlcnR5LiBUaGVyZSBhcmUgdGhvdXNhbmRzIHdobyBqdXN0IG1hbmFnZSB0byBsaXZlIHVwb24gc3VjaCBpbmNvbWUgYXMgdGhleSAKY2FuIGVhcm4sIGJ1dCB0aGV5IGZlZWwgdGhhdCBpZiB0aHJvdWdoIHNpY2tuZXNzIG9yIGZyb20gYW55IG90aGVyIGNhdXNlIApzdXBwbGllcyBzaG91bGQgZmFpbCB0aGVtLCB0aGV5IHdvdWxkIGF0IG9uY2UgYmUgcGx1bmdlZCBpbnRvIGRpcmVjdCBkaXN0cmVzcy4gCkV2ZW4gd2hlbiB0aGlzIGRhbmdlciBpcyByZWFsLCBub3RoaW5nIGlzIGdhaW5lZCBieSBicm9vZGluZyBvdmVyIGl0OyB0aGlzIApldmVyLXByZXNlbnQgYW54aWV0eSBpbiBubyB3YXkgaGVscHMgdGhlbTsgdGhleSBhcmUgbm8gd2hpdCB0aGUgc2FmZXIgYmVjYXVzZSAKdGhpcyB0ZXJyb3IgaG92ZXJzIG92ZXIgdGhlbSBhbmQgZGFya2VucyBhbGwgdGhlaXIgZGF5LiAKCgoxMDk0LsKgwqDCoMKgClRoZXNlIHBvb3Igc291bHMgYWxzbyBzaG91bGQgdHJ5IHRvIHVuZGVyc3RhbmQgbGlmZSwgdG8gZ3Jhc3AgdGhlIHB1cnBvcnQgCm9mIHRoaXMgZ3JlYXQgc2NoZW1lIG9mIGV2b2x1dGlvbiBvZiB3aGljaCB0aGV5IGZpbmQgdGhlbXNlbHZlcyBhIHBhcnQ7IGZvciB3aGVuIApvbmNlIHRoZXkgY29tcHJlaGVuZCBhIGxpdHRsZSBvZiBpdHMgcGxhbiB0aGV5IHdpbGwgcmVhbGlzZSB0aGF0IG5vdGhpbmcgY29tZXMgCmJ5IGNoYW5jZSwgYnV0IHRoYXQgdHJ1bHkgYWxsIHRoaW5ncyB3b3JrIHRvZ2V0aGVyIGZvciBnb29kLCBhbmQgc28gcGFpbiBhbmQgCnRyb3VibGUgYW5kIHNvcnJvdyBjYW5ub3QgY29tZSB1bmxlc3MgdGhleSBhcmUgbmVlZGVkLCB1bmxlc3MgdGhleSBoYXZlIHRoZWlyIApwYXJ0IHRvIHBsYXkgaW4gdGhlIGRldmVsb3BtZW50IHRoYXQgaXMgdG8gYmUuIFNvIHRoZXkgd2lsbCBsb29rIGZvcndhcmQgd2l0aCAKaG9wZSBpbnN0ZWFkIG9mIHdpdGggZmVhciwga25vd2luZyB0aGF0IGlmIHRoZXkgbG95YWxseSBkbyB0aGUgYmVzdCB0aGV5IGNhbiAKd2l0aCBlYWNoIGRheSBhcyBpdCBwYXNzZXMsIHRoZXkgd2lsbCBoYXZlIG5vdGhpbmcgd2hlcmV3aXRoIHRvIHJlcHJvYWNoIAp0aGVtc2VsdmVzLCB3aGF0ZXZlciB0aGUgZnV0dXJlIG1heSBicmluZyBmb3J0aC4gCgoKMTA5NS7CoMKgwqDCoApXb3JyeSAtLSBUaGUgc2FtZSBjb25zaWRlcmF0aW9ucyBzaG93IHVzIHRoZSBmdXRpbGl0eSBvZiB3b3JyeSAKYW5kIGdydW1ibGluZy4gSWYgdGhlIHdvcmxkIGJlIGluIEdvZCcgcyBoYW5kcywgYW5kIGlmIHdlIGFyZSBhbGwgd29ya2luZyB1bmRlciAKSGlzIGltbXV0YWJsZSBsYXdzLCBtYW5pZmVzdGx5IG91ciBidXNpbmVzcyBpcyB0byBkbyBvdXIgZHV0eSBpbiBvdXIgY29ybmVyLCBhbmQgCnRvIHRyeSB0byBtb3ZlIGludGVsbGlnZW50bHkgYWxvbmcgd2l0aCB0aGUgbWlnaHR5IHN0cmVhbSBvZiBhZHZhbmNlbWVudDsgYnV0IHRvIApncnVtYmxlIGF0IHRoZSB3YXkgaW4gd2hpY2ggaXQgaXMgd29ya2luZywgb3IgdG8gd29ycnkgYXMgdG8gaG93IG1hdHRlcnMgd2lsbCAKdHVybiBvdXQsIGlzIG9idmlvdXNseSB0aGUgaGVpZ2h0IG9mIGZvbGx5LiBIb3cgb2Z0ZW4gd2UgaGVhciBtZW4gc2F5OiDvv71JZiBpdCAKd2VyZSBub3QgZm9yIHRoZSB1bmZvcnR1bmF0ZSBjaXJjdW1zdGFuY2VzIHdoaWNoIHN1cnJvdW5kIG1lLCBJIHNob3VsZCBiZSBhIHZlcnkgCmZpbmUgZmVsbG93IGluZGVlZDsgSSB3b3VsZCBzb29uIHNob3cgeW91IHdoYXQgSSBjb3VsZCBkbyBhbG9uZyB0aGlzIGxpbmUgb3IgCmFsb25nIHRoYXQ7IGJ1dCwgY3JhbXBlZCBhcyBJIGFtLCBob3cgY2FuIHlvdSBleHBlY3QgYW55dGhpbmcgZnJvbSBtZT/vv70gCgoKMTA5Ni7CoMKgwqDCoApOb3cgdGhlIG1hbiB3aG8gdGFsa3MgaW4gdGhhdCB3YXkgaGFzIG5vIGNvbmNlcHRpb24gb2YgdGhlIG1lYW5pbmcgb2YgCmxpZmUuIFdoYXQgZWFjaCBtYW4gd291bGQgbGlrZSBiZXN0LCBubyBkb3VidCwgd291bGQgYmUgYSBzZXQgb2YgY2lyY3Vtc3RhbmNlcyAKd2hpY2ggd291bGQgZ2l2ZSBoaW0gYSBjaGFuY2Ugb2YgdXNpbmcgc3VjaCBwb3dlcnMgYXMgaGUgYWxyZWFkeSBwb3NzZXNzZXMsIG9mIApzaG93aW5nIHdoYXQgaGUgY2FuIGRvLiBCdXQgd2UgbXVzdCByZW1lbWJlciB0aGF0IE5hdHVyZSB3YW50cyB0byBkZXZlbG9wIHVzIGluIAphbGwgZGlyZWN0aW9ucywgbm90IGluIG9uZSBvbmx5OyBhbmQgdG8gdGhhdCBlbmQgd2Ugb2Z0ZW4gZmluZCBvdXJzZWx2ZXMgdGhyb3duIAppbnRvIGNvbmRpdGlvbnMgd2hlcmUgd2UgbXVzdCBkbyB0aGUgdmVyeSB0aGluZyB0aGF0IHdlIHdvdWxkIHNheSB3ZSAKY2Fubm90IGRvLCBpbiBvcmRlciB0aGF0IHdlIG1heSBsZWFybiB0aGF0IGxlc3NvbiBhbmQgdW5mb2xkIHRoYXQgcG93ZXIsIHdoaWNoIAphdCBwcmVzZW50IGxpZXMgbGF0ZW50IHdpdGhpbiB1cy4gCgoKMTA5Ny7CoMKgwqDCoApTbyBpbnN0ZWFkIG9mIHNpdHRpbmcgZG93biBhbmQgZ3J1bWJsaW5nIHRoYXQgd2UgYXJlIHVuZGVyIHRoZSBjb250cm9sIG9mIAphZHZlcnNlIGNpcmN1bXN0YW5jZXMsIG91ciBidXNpbmVzcyBpcyB0byBnZXQgdXAgYW5kIGNvbnRyb2wgdGhlIGNpcmN1bXN0YW5jZXMgCmZvciBvdXJzZWx2ZXMuIFRoZSB3ZWFrIG1hbiBpcyB0aGUgc2xhdmUgb2YgaGlzIGVudmlyb25tZW50OyB0aGUgc3Ryb25nIG1hbiAKbGVhcm5zIGhvdyB0byBkb21pbmF0ZSBpdCwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgaGUgaXMgaW50ZW5kZWQgdG8gZG8uIAoKCjEwOTguwqDCoMKgwqAKVGhlbiBhZ2Fpbiwgc2VlIGhvdyB3ZSB3b3JyeSBvdXJzZWx2ZXMgYWJvdXQgd2hhdCBvdGhlcnMgdGhpbmsgb2YgdXMsIApmb3JnZXR0aW5nIHRoYXQgd2hhdCB3ZSBkbyBpcyBubyBhZmZhaXIgb2YgdGhlaXJzLCBzbyBsb25nIGFzIGl0IGRvZXMgbm90IAppbnRlcmZlcmUgd2l0aCB0aGVtLCBhbmQgdGhhdCB0aGVpciBvcGluaW9uIGlzLCBhZnRlciBhbGwsIG5vdCBvZiB0aGUgc2xpZ2h0ZXN0IApjb25zZXF1ZW5jZS4gT3VyIGVuZGVhdm91ciBtdXN0IGJlIHRvIGRvIG91ciBkdXR5IGFzIHdlIHNlZSBpdCwgYW5kIHRvIHRyeSB0byAKaGVscCBvdXIgZmVsbG93cyB3aGVuZXZlciBvY2Nhc2lvbiBwcmVzZW50cyBpdHNlbGY7IGlmIHlvdXIgY29uc2NpZW5jZSBhcHByb3ZlcyAKeW91ciBhY3Rpb24sIG5vIG90aGVyIGNyaXRpY2lzbSBuZWVkIHRyb3VibGUgeW91LiBJdCBpcyB0byB5b3VyIEZhdGhlciBpbiBIZWF2ZW4gCnRoYXQgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgeW91ciBkZWVkcywgbm90IHRvIE1ycy4gU28tYW5kLXNvLCB3aG8gaXMgcGVlcGluZyAKdGhyb3VnaCB0aGUgYmxpbmQgbmV4dCBkb29yLiAKCgoxMDk5LsKgwqDCoMKgClBlcmhhcHMgdGhlIHNhbWUgd29ydGh5IGxhZHkgc2F5cyBzb21ldGhpbmcgc3BpdGVmdWwgYWJvdXQgeW91LCBhbmQgCmhhbGYtYS1kb3plbiBraW5kIGZyaWVuZHMgdGFrZSBjYXJlIHRvIHJlcGVhdCBhbmQgZXhhZ2dlcmF0ZSBpdC4gSWYgeW91IGFyZSAKZm9vbGlzaCB5b3UgYXJlIG1pZ2h0aWx5IG9mZmVuZGVkLCBhbmQgYSBmZXVkIGlzIHNldCBvbiBmb290IHdoaWNoIG1heSBsYXN0IGZvciAKbW9udGhzIGFuZCBpbnZvbHZlIGEgaG9zdCBvZiBpbm5vY2VudCBwZW9wbGU7IGFuZCB0aGVuIHlvdSBhY3R1YWxseSB0cnkgdG8gdGhyb3cgCnRoZSByZXNwb25zaWJpbGl0eSBmb3IgYWxsIHRoaXMgc2lsbHkgdW5wbGVhc2FudG5lc3Mgb24gdGhlIHNob3VsZGVycyBvZiB0aGUgCm5laWdoYm91ciBhdCB3aG9zZSByZW1hcmsgeW91IGNob3NlIHRvIHRha2Ugb2ZmZW5jZSEgVXNlIHBsYWluIGNvbW1vbiBzZW5zZSBmb3IgCmEgbW9tZW50LCBhbmQganVzdCB0aGluayBob3cgcmlkaWN1bG91cyB0aGF0IGlzLiAKCgoxMTAwLsKgwqDCoMKgCkluIHRoZSBmaXJzdCBwbGFjZSwgaW4gbmluZSBjYXNlcyBvdXQgb2YgdGVuLCB5b3VyIG5laWdoYm91ciBkaWRuJyB0IHNheSAKaXQgYXQgYWxsLCBvciBkaWRuJyB0IG1lYW4gaXQgaW4gdGhlIHNlbnNlIGluIHdoaWNoIHlvdSB0YWtlIGl0LCBzbyB0aGF0IHlvdSBhcmUgCnByb2JhYmx5IGRvaW5nIGhlciBhIGdyb3NzIGluanVzdGljZS4gRXZlbiBpbiB0aGUgdGVudGggY2FzZSwgd2hlbiBzaGUgcmVhbGx5IApkaWQgc2F5IGl0IGFuZCBtZWFudCBpdCwgdGhlcmUgd2FzIG1vc3QgbGlrZWx5IHNvbWUgZXhhc3BlcmF0aW5nIGNhdXNlIG9mIHdoaWNoIAp5b3Uga25vdyBub3RoaW5nOyBzaGUgbWF5IGhhdmUgYmVlbiBrZXB0IGF3YWtlIGFsbCBuaWdodCBieSBhIHRvb3RoYWNoZSBvciBhIApyZXN0bGVzcyBiYWJ5ISBTdXJlbHkgaXQgaXMgbmVpdGhlciBraW5kIG5vciBkaWduaWZpZWQgdG8gdGFrZSBub3RpY2Ugb2YgYSBoYXN0eSAKd29yZCB1dHRlcmVkIHVuZGVyIHRoZSBpbmZsdWVuY2Ugb2YgaXJyaXRhdGlvbi4gT2YgY291cnNlIGl0IHdhcyAKcXVpdGUgd3Jvbmcgb2YgaGVyLCBhbmQgc2hlIG91Z2h0IHRvIGhhdmUgZXhoaWJpdGVkIHRoZSBzYW1lIGFuZ2VsaWMgY2hhcml0eSAKdGhhdCB5b3UgeW91cnNlbGYgYWx3YXlzIHNob3c7IEkgYW0gbm90IGRlZmVuZGluZyBoZXIgaW4gdGhlIGxlYXN0OyBJIGFtIG9ubHkgCnN1Z2dlc3RpbmcgdGhhdCBiZWNhdXNlIHNoZSBoYXMgZG9uZSBvbmUgZm9vbGlzaCB0aGluZyB0aGVyZSBpcyBubyByZWFsIHJlYXNvbiAKd2h5IHlvdSBzaG91bGQgZG8gYW5vdGhlci4gCgoKMTEwMS7CoMKgwqDCoApBZnRlciBhbGwsIHdoYXQgaGFybSBoYXMgc2hlIGRvbmUgeW91PyBJdCBpcyBub3Qgc2hlIHdobyBpcyAKcmVzcG9uc2libGUgZm9yIHlvdXIgYW5ub3lhbmNlLCBidXQgeW91ciBvd24gd2FudCBvZiB0aG91Z2h0LiBXaGF0IGFyZSBoZXIgd29yZHMgCmJ1dCBhIG1lcmUgdmlicmF0aW9uIG9mIHRoZSBhaXI/IElmIHlvdSBoYWQgbm90IGhlYXJkIG9mIHRoZW0geW91IHdvdWxkIG5vdCBoYXZlIApmZWx0IG9mZmVuZGVkLCBhbmQgeWV0IGhlciBwYXJ0IG9mIHRoZSBhY3Rpb24gd291bGQgaGF2ZSBiZWVuIGp1c3QgdGhlIApzYW1lLiBUaGVyZWZvcmUsIHRoZSBmZWVsaW5nIG9mIGFuZ2VyIGlzIHlvdXIgZmF1bHQgYW5kIG5vdCBoZXJzOyB5b3UgCmhhdmUgdW5uZWNlc3NhcmlseSBhbGxvd2VkIHlvdXJzZWxmIHRvIGJlIHZpb2xlbnRseSBleGNpdGVkIGJ5IHNvbWV0aGluZyB3aGljaCAKaW4gcmVhbGl0eSBpcyBwb3dlcmxlc3MgdG8gYWZmZWN0IHlvdS4gSXQgaXMgeW91ciBvd24gcHJpZGUgd2hpY2ggaGFzIHN0aXJyZWQgdXAgCnlvdXIgcGFzc2lvbiwgbm90IGhlciBpZGxlIHdvcmRzLiBUaGluaywgYW5kIHlvdSB3aWxsIHNlZSB0aGF0IHRoaXMgaXMgc28uIApTaW1wbGUsIHBsYWluIGNvbW1vbiBzZW5zZSwgYW5kIG5vdGhpbmcgbW9yZTsgYW5kIHlldCBob3cgZmV3IHBlb3BsZSBzZWUgY2xlYXJseSAKZW5vdWdoIHRvIHRha2UgaXQgaW4gdGhhdCB3YXkhIEFuZCBob3cgbXVjaCB1bmhhcHBpbmVzcyBtaWdodCBiZSBhdm9pZGVkIGlmIHdlIApvbmx5IHVzZWQgb3VyIGJyYWlucyBtb3JlIGFuZCBvdXIgdG9uZ3VlcyBsZXNzISAKCgoxMTAyLsKgwqDCoMKgClRoZXNlIGNvbnNpZGVyYXRpb25zIHNob3cgdXMgdGhhdCB0aGUgY2xvdWRzIG9mIHVuaGFwcGluZXNzIGNhbiBiZSAKZGlzcGVsbGVkIGJ5IGtub3dsZWRnZSBhbmQgcmVhc29uOyBhbmQgaXQgaXMgdW5xdWVzdGlvbmFibHkgYm90aCBvdXIgaW50ZXJlc3QgCmFuZCBvdXIgZHV0eSBpbnN0YW50bHkgYW5kIHZpZ29yb3VzbHkgdG8gc2V0IGFib3V0IHRoYXQgZGlzcGVyc2lvbi4gSXQgaXMgb3VyIAppbnRlcmVzdCwgc2luY2Ugd2hlbiB0aGF0IGlzIGRvbmUgb3VyIGxpdmVzIHdpbGwgYmUgbG9uZ2VyIGFuZCBtb3JlIGZydWl0ZnVsOyDvv71hIAptZXJyeSBoZWFydCBnb2VzIGFsbCB0aGUgZGF5OyBhIHNhZCBvbmUgdGlyZXMgaW4gYSBtaWxlLu+/vSBNYWtlIHRoZSBiZXN0IG9mIApldmVyeXRoaW5nLCBub3QgdGhlIHdvcnN0OyB3YXRjaCBmb3IgdGhlIGdvb2QgaW4gdGhlIHdvcmxkLCBhbmQgbm90IGZvciB0aGUgCmV2aWwuIExldCB5b3VyIGNyaXRpY2lzbSBiZSBvZiB0aGF0IGhhcHB5IGtpbmQgd2hpY2ggcG91bmNlcyB1cG9uIGEgcGVhcmwgYXMgCmVhZ2VybHkgYXMgdGhlIGF2ZXJhZ2UgYXRyYWJpbGlvdXMgY3JpdGljIGZsaWVzIGF0IGEgZmxhdzsgYW5kIHlvdSBoYXZlIG5vIGlkZWEgCmhvdyBtdWNoIGVhc2llciBhbmQgcGxlYXNhbnRlciB5b3VyIGxpZmUgd2lsbCBiZWNvbWUuIFRoZXJlIGlzIGEgYmVhdXR5IApldmVyeXdoZXJlIGluIE5hdHVyZSwgaWYgd2Ugd2lsbCBvbmx5IGxvb2sgZm9yIGl0OyB0aGVyZSBpcyBhbHdheXMgcGxlbnR5IG9mIApyZWFzb24gZm9yIGdsYWRuZXNzLCBpZiB3ZSB3aWxsIGJ1dCBzZWFyY2ggZm9yIGl0IGluc3RlYWQgb2YgdHJ5aW5nIHRvIGh1bnQgb3V0IApjYXVzZXMgZm9yIGdydW1ibGluZy4gCgoKMTEwMy7CoMKgwqDCoApJdCBpcyBvdXIgZHV0eSwgZm9yIGl0IGlzIHRob3JvdWdobHkgd2VsbCBlc3RhYmxpc2hlZCB0aGF0IGJvdGggaGFwcGluZXNzIAphbmQgbWlzZXJ5IGFyZSBpbmZlY3Rpb3VzLiBBbGwgd2hvIGhhdmUgc3R1ZGllZCB0aGVzZSBtYXR0ZXJzIGtub3cgdGhhdCB0aGVzZSAKd2F2ZXMgb2YgbWF0dGVyLCBmaW5lciB0aGFuIHdlIGNhbiBzZWUsIHdoaWNoIGFyZSBjb250aW51YWxseSByYWRpYXRpbmcgZnJvbSB1cyAKaW4gZXZlcnkgZGlyZWN0aW9uLCBjYXJyeSB3aXRoIHRoZW0gdG8gdGhvc2UgYXJvdW5kIHVzIG91ciBmZWVsaW5ncyBvZiBqb3kgb3Igb2YgCnNvcnJvdy4gU28gaWYgeW91IGFsbG93IHlvdXJzZWxmIHRvIGdpdmUgd2F5IHRvIHNhZG5lc3MgYW5kIGRlc3BvbmRlbmN5LCB5b3UgYXJlIAphY3R1YWxseSByYWRpYXRpbmcgZ2xvb20tLSBkYXJrZW5pbmcgR29kJyBzIHN1bmxpZ2h0IGZvciB5b3VyIG5laWdoYm91cnMsIGFuZCAKbWFraW5nIHlvdXIgYnJvdGhlcicgcyBidXJkZW4gaGVhdmllciBmb3IgaGltIHRvIGJlYXI7IGFuZCB5b3UgaGF2ZSBubyByaWdodCB0byAKZG8gdGhpcy4gCgoKMTEwNC7CoMKgwqDCoApPbiB0aGUgb3RoZXIgaGFuZCwgaWYgeW91IGFyZSB5b3Vyc2VsZiBmdWxsIG9mIGhhcHBpbmVzcywgdGhhdCByYWRpYW50IApqb3kgaXMgcG91cmVkIHVwb24gYWxsIHdobyBjb21lIG5lYXIgeW91LCBhbmQgeW91IGJlY29tZSBhIHZlcml0YWJsZSBzdW4sIApzaG93ZXJpbmcgbGlmZSBhbmQgbGlnaHQgYW5kIGxvdmUgaW4geW91ciBzbWFsbCBjaXJjbGUgb24gdGhlIGVhcnRoLCBldmVuIGFzIHRoZSAKRGVpdHkgSGltc2VsZiBmbG9vZHMgdGhlbSBmb3J0aCB0aHJvdWdoIGFsbCB0aGUgdW5pdmVyc2U7IGFuZCBzbyBpbiB5b3VyIHRpbnkgCndheSB5b3UgYXJlIGEgZmVsbG93LXdvcmtlciB0b2dldGhlciB3aXRoIEhpbS4gCgoKMTEwNS7CoMKgwqDCoApQRUFDRSAKCgoxMTA2LsKgwqDCoMKgCkJlaGluZCB0aGUgYWN0aXZlIGhhcHBpbmVzcyB0aGVyZSBtdXN0IGJlIGFuIGFiaWRpbmcgcGVhY2UsIGFuZCB0aGlzIGFsc28gCndlIG11c3QgdHJ5IHRvIHJhZGlhdGUuIFRoZSBsYWNrIG9mIHBlYWNlIGlzIG9uZSBvZiB0aGUgbW9zdCBsYW1lbnRhYmxlIApjaGFyYWN0ZXJpc3RpY3Mgb2Ygb3VyIGFnZS4gVGhlcmUgbmV2ZXIgd2FzIGEgdGltZSB3aGVuIG1hbiBuZWVkZWQgbW9yZSBzb3JlbHkgCnRoZSBzYWdlIGFkdmljZSBvZiBTLiBQZXRlcjog77+9U2VlayBwZWFjZSBhbmQgZW5zdWUgaXQs77+9IGJ1dCB0aGUgbWFqb3JpdHkga25vdyAKbm90IGV2ZW4gaW4gd2hhdCBkaXJlY3Rpb24gdG8gYmVnaW4gdGhlIHNlYXJjaCwgYW5kIHNvIHRoZXkgZGVjaWRlIHRoYXQgcGVhY2UgaXMgCnVuYXR0YWluYWJsZSBvbiBlYXJ0aCwgYW5kIHJlc2lnbiB0aGVtc2VsdmVzIHRvIGRpc2NvbWZvcnQuIAoKCjExMDcuwqDCoMKgwqAKTWFuIGlzIGxpdmluZyBzaW11bHRhbmVvdXNseSBpbiB0aHJlZSB3b3JsZHMsIHRoZSBwaHlzaWNhbCwgdGhlIGFzdHJhbCBvciAKZW1vdGlvbmFsLCBhbmQgdGhlIG1lbnRhbCwgYW5kIGhlIGhhcyBpbiBlYWNoIG9mIHRoZXNlIGEgYm9keSBvciB2ZWhpY2xlIHRocm91Z2ggCndoaWNoIGhlIGV4cHJlc3NlcyBoaW1zZWxmLiBBdCBhbGwgdGhlc2UgbGV2ZWxzLCBpbiBhbGwgdGhlc2UgdmVoaWNsZXMsIHRoZXJlIApzaG91bGQgYmUgcGVhY2U7IHlldCB3aXRoIG1vc3Qgb2YgdXMgdGhhdCBpcyB2ZXJ5IGZhciBmcm9tIGJlaW5nIHRoZSBjYXNlLiAKCgoxMTA4LsKgwqDCoMKgCk9uIHRoZSBwaHlzaWNhbCBlYXJ0aCwgdGhlcmUgaXMgaGFyZGx5IGEgcGVyc29uIHdobyBpcyBub3QgY29tcGxhaW5pbmcgb2YgCnNvbWV0aGluZywgd2hvIGlzIG5vdCBmcmVxdWVudGx5IGlsbCBpbiBzb21lIHdheS4gT25lIG1hbicgcyBkaWdlc3Rpb24gaXMgb3V0IG9mIApvcmRlciwgYW5vdGhlciBoYXMgY29uc3RhbnQgaGVhZGFjaGVzLCBhIHRoaXJkIGZpbmRzIGhpcyBuZXJ2ZXMgYnJlYWtpbmcgZG93biwgCmFuZCBzbyBvbi4gSW4gdGhlIHdvcmxkIG9mIGVtb3Rpb24gbWF0dGVycyBhcmUgbm8gYmV0dGVyLCBmb3IgcGVvcGxlIGFyZSAKY29uc3RhbnRseSBhbGxvd2luZyB0aGVtc2VsdmVzIHRvIGJlIHNoYWtlbiBhbmQgdG9ybiBieSB2aW9sZW50IGZlZWxpbmdzLCAKc29ycm93LCBhbmdlciwgamVhbG91c3ksIGVudnk7IGFuZCBzbyB0aGV5IGFyZSBxdWl0ZSB1bm5lY2Vzc2FyaWx5IG1pc2VyYWJsZS4gCk5vciBhcmUgdGhleSBhdCBwZWFjZSBtZW50YWxseSwgZm9yIHRoZXkgYXJlIHBlcnBldHVhbGx5IHJ1c2hpbmcgZnJvbSBvbmUgbGluZSAKb2YgdGhvdWdodCB0byBhbm90aGVyLCBmdWxsIG9mIHdvcnJ5IGFuZCBodXJyeSwgYWx3YXlzIGRlc2lyaW5nIG5ldyB0aGluZ3MgCmJlZm9yZSB0aGV5IGhhdmUgdW5kZXJzdG9vZCBvciB1dGlsaXNlZCB0aGUgb2xkLiAKCgoxMTA5LsKgwqDCoMKgClRoZSBjYXVzZXMgb2YgdGhpcyB1bml2ZXJzYWwgdW5yZXN0IGFyZSB0aHJlZS0tIGlnbm9yYW5jZSwgZGVzaXJlLCBhbmQgCnNlbGZpc2huZXNzLiBUaGVyZWZvcmUsIHRoZSBwYXRoIHRvIHBlYWNlIGNvbnNpc3RzIGluIGNvbnF1ZXJpbmcgdGhlc2UgCmhpbmRyYW5jZXMsIGFuZCByZXBsYWNpbmcgdGhlbSBieSB0aGVpciBvcHBvc2l0ZXMtLSBpbiBnYWluaW5nIGtub3dsZWRnZSwgCnNlbGYtY29udHJvbCBhbmQgdW5zZWxmaXNobmVzcy4gTWVuIG9mdGVuIHRoaW5rIHRoYXQgdGhlIGNhdXNlcyBvZiB0aGVpciAKZGlzcXVpZXQgYXJlIGV4dGVyaW9yIHRvIHRoZW1zZWx2ZXMsIHRoYXQgc29ycm93IGFuZCB0cm91YmxlIHByZXNzIHVwb24gdGhlbSAKZnJvbSB3aXRob3V0LCBub3QgcmVhbGlzaW5nIHRoYXQgbm90aGluZyBvdXRzaWRlIGNhbiBhZmZlY3QgdGhlbSB1bmxlc3MgdGhleSAKdGhlbXNlbHZlcyBwZXJtaXQgaXQgdG8gZG8gc28uIE5vbmUgYnV0IG91cnNlbHZlcyBjYW4gZXZlciBodXJ0IHVzIG9yIGhpbmRlciB1cywgCmp1c3QgYXMgbm8gb25lIGVsc2UgY2FuIG1ha2Ugb3VyIHByb2dyZXNzIGZvciB1cy4gQXMgaGFzIGJlZW4gYmVhdXRpZnVsbHkgc2FpZCAKaW4gdGhlIEVhc3QsIHRoZSBwYXRoIGxpZXMgd2l0aGluIHVzLiBJZiB3ZSB0YWtlIHRoZSB0cm91YmxlIHRvIGNvbnNpZGVyIGl0LCB3ZSAKc2hhbGwgc2VlIHRoYXQgdGhpcyBpcyBzby4gCgoKMTExMC7CoMKgwqDCoApUbyBnYWluIHBlYWNlIHdlIG11c3QgZmlyc3QgZ2FpbiBrbm93bGVkZ2UtLSBrbm93bGVkZ2Ugb2YgdGhlIGxhd3MgdW5kZXIgCndoaWNoIGV2b2x1dGlvbiBpcyB3b3JraW5nLiBXaGVuIHdlIGFyZSBpZ25vcmFudCBvZiB0aGVzZSBsYXdzLCB3ZSBhcmUgCmNvbnN0YW50bHkgYnJlYWtpbmcgdGhlbSwgY29uc3RhbnRseSBwdXNoaW5nIGFzaWRlIGZyb20gdGhlIHBhdGggb2YgdGhlIHByb2dyZXNzIApvZiB0aGUgcmFjZSBpbiBwdXJzdWl0IG9mIHNvbWUgZmFuY2llZCBwcml2YXRlIGFuZCBwZXJzb25hbCBhZHZhbnRhZ2Ugb3IgCnBsZWFzdXJlLiBUaGUgc3RlYWR5IHByZXNzdXJlIG9mIHRoZSBsYXcgb2YgZXZvbHV0aW9uIGZvcmNlcyB1cyBiYWNrLCBmb3Igb3VyIApvd24gZ29vZCwgaW50byB0aGUgcGF0aCB3aGljaCB3ZSBoYXZlIGxlZnQsIHdlIGFyZSByZXN0bGVzczsgd2Ugc3RydWdnbGUgYWdhaW5zdCAKaXQ7IHdlIGNvbXBsYWluIG9mIHRoZSBwYWluIGFuZCB0aGUgdHJvdWJsZSBhcyB0aG91Z2ggdGhleSBoYWQgY29tZSB1cG9uIHVzIGJ5IAptZXJlIGNoYW5jZSwgd2hlbiBhbGwgdGhlIHRpbWUgaXQgaXMgb3VyIG93biByZXNpc3RhbmNlIHRvIHRoZSBndWlkYW5jZSBvZiB0aGUgCmxhdyB0aGF0IGNhdXNlcyB1cyB0byBmZWVsIGl0cyBjb25zdHJhaW5pbmcgcG93ZXIuIAoKCjExMTEuwqDCoMKgwqAKT3VyIGhlYWx0aCBzdWZmZXJzIGJlY2F1c2Ugd2Ugc28gb2Z0ZW4gbGl2ZSB1bmhlYWx0aGlseTsgd2UgZWF0IHRoZSB3cm9uZyAKZm9vZCwgd2Ugd2VhciB1bnN1aXRhYmxlIGNsb3RoaW5nLCB3ZSBpZ25vcmUgdmVudGlsYXRpb24gYW5kIGV4ZXJjaXNlLCB3ZSBwYXNzIApvdXIgbGl2ZXMgYW1pZHN0IHVuc2FuaXRhcnkgY29uZGl0aW9ucywgYW5kIHRoZW4gd2Ugd29uZGVyIHdoeSBvdXIgaGVhZHMgYWNoZSBvciAKd2h5IG91ciBuZXJ2ZXMgYW5kIGRpZ2VzdGlvbiBmYWlsIHVzLiBUaGUgbWFuIHdobyBrbm93cyB0aGUgbGF3cyBvZiBoeWdpZW5lIGFuZCAKdGFrZXMgdGhlIHRyb3VibGUgdG8gb2JleSB0aGVtIGF2b2lkcyB0aGVzZSBldmlscy4gCgoKMTExMi7CoMKgwqDCoApQcmVjaXNlbHkgdGhlIHNhbWUgaXMgdHJ1ZSB3aXRoIHJlZ2FyZCB0byB0aGUgd29ybGRzIG9mIHRob3VnaHQgYW5kIAplbW90aW9uOyB0aGVzZSBoYXZlIHRoZWlyIG5hdHVyYWwgbGF3cywgYW5kIHRvIGJyZWFrIHRob3NlIGxhd3MgbWVhbnMgc3VmZmVyaW5nLiAKVW5mb3J0dW5hdGVseSwgbWFueSBwZW9wbGUgaGF2ZSB0aGUgaWRlYSB0aGF0IGFsbCBydWxlcyByZWxhdGluZyB0byB0aGVzZSByZWFsbXMgCm9mIHRob3VnaHQgYW5kIGVtb3Rpb24gYXJlIGFyYml0cmFyeTsgcmVsaWdpb3VzIHRlYWNoZXJzIGhhdmUgbWFkZSB0aGUgCmRpc2FzdHJvdXMgbWlzdGFrZSBvZiB0YWxraW5nIGFib3V0IHRoZSBpbXBvc2l0aW9uIG9mIHB1bmlzaG1lbnQgZm9yIAp0aGUgYnJlYWNoIG9mIHRoZW0sIGFuZCBzbyBoYXZlIG9ic2N1cmVkIHRoZSBwbGFpbiBmYWN0IHRoYXQgdGhleSBhcmUganVzdCBhcyAKbXVjaCBsYXdzIG9mIG5hdHVyZSBhcyB0aG9zZSB3aXRoIHdoaWNoIHdlIGFyZSBmYW1pbGlhciBpbiBwaHlzaWNhbCBsaWZlLCBhbmQgCnRoYXQgd2hhdCBmb2xsb3dzIHVwb24gYW55IGluZnJhY3Rpb24gb2YgdGhlbSBpcyBub3QgcHVuaXNobWVudCwgYnV0IAptZXJlbHkgdGhlIG5hdHVyYWwgcmVzdWx0LiBJZiBhIG1hbiBzZWl6ZXMgYSByZWQtaG90IGJhciBvZiBpcm9uIHdpdGggCnRoZSBuYWtlZCBoYW5kLCBoZSB3aWxsIGJlIGJ1cm50OyBidXQgaXQgd291bGQgbm90IG9jY3VyIHRvIHVzIHRvIGRlc2NyaWJlIHRoZSAKYnVybiBhcyBhIHB1bmlzaG1lbnQgZm9yIHRha2luZyBob2xkIG9mIHRoZSBiYXIuIFlldCB3ZSBvZnRlbiBkbyBzbyBkZXNjcmliZSAKcmVzdWx0cyB3aGljaCBhcmUganVzdCBhcyBuYXR1cmFsIGFuZCBqdXN0IGFzIGluZXZpdGFibGUuIAoKCjExMTMuwqDCoMKgwqAKS25vd2xlZGdlIG9mIHRoZSBncmVhdCBzY2hlbWUgb2YgZXZvbHV0aW9uIGFuZCBpdHMgbGF3cyBub3Qgb25seSBzaG93cyB1cyAKaG93IHRvIGxpdmUgc28gYXMgdG8gZWFybiBwZWFjZSBpbiB0aGUgZnV0dXJlOyBpdCBhbHNvIGdpdmVzIHVzIHBlYWNlIGhlcmUgYW5kIApub3cgaW4gdGhlIHByZXNlbnQsIGJlY2F1c2UgaXQgZW5hYmxlcyB1cyB0byB1bmRlcnN0YW5kIHRoZSBvYmplY3Qgb2YgbGlmZSwgdG8gCnNlZSB0aGUgdW5pdHkgdGhyb3VnaCBhbGwgaXRzIGRpdmVyc2l0eSwgdGhlIGdsb3Jpb3VzIGZpbmFsIHRyaXVtcGggdGhyb3VnaCB0aGUgCm1pc3Qgb2YgYXBwYXJlbnRseSBob3BlbGVzcyBtaXNlcnkgYW5kIGNvbmZ1c2lvbi4gRm9yIHdoZW4gb25jZSB0aGUgc2NoZW1lIGlzIApjb21wcmVoZW5kZWQsIGl0cyBlbmQgaXMgbm8gbG9uZ2VyIGEgbWF0dGVyIG9mIGJsaW5kIGZhaXRoLCBidXQgb2YgbWF0aGVtYXRpY2FsIApjZXJ0YWludHk7IGFuZCBmcm9tIHRoYXQgY2VydGFpbnR5IGNvbWVzIHBlYWNlLiAKCgoxMTE0LsKgwqDCoMKgClRvIG91ciBrbm93bGVkZ2Ugd2UgbXVzdCBhZGQgc2VsZi1jb250cm9sLS0gY29udHJvbCwgbm90IG1lcmVseSBvZiAKYWN0aW9ucyBhbmQgd29yZHMsIGJ1dCBvZiBkZXNpcmVzLCBlbW90aW9ucyBhbmQgdGhvdWdodHMuIAoKCjExMTUuwqDCoMKgwqAKRm9yIGFsbCB0aG91Z2h0cyBhbmQgZW1vdGlvbnMgc2hvdyB0aGVtc2VsdmVzIGFzIHdhdmVzIGluIHRoZSBtYXR0ZXIgb2YgCnRoZSBtZW50YWwgYW5kIGFzdHJhbCBib2RpZXMgcmVzcGVjdGl2ZWx5OyBhbmQgaW4gYm90aCBjYXNlcyB0aGUgZXZpbCBvciBzZWxmaXNoIAp0aG91Z2h0cyBhcmUgYWx3YXlzIGNvbXBhcmF0aXZlbHkgc2xvdyB2aWJyYXRpb25zIG9mIHRoZSBjb2Fyc2VyIG1hdHRlciwgd2hpbGUgCnRoZSBnb29kIHVuc2VsZmlzaCB0aG91Z2h0cyBhcmUgdGhlIG1vcmUgcmFwaWQgdW5kdWxhdGlvbnMgd2hpY2ggcGxheSBvbmx5IGluIAp0aGUgZmluZXIgbWF0dGVyLiBCdXQgYSBzdWRkZW4gcnVzaCBvZiBhbmdlciBvciBlbnZ5IG9yIGZlYXIgb3ZlcndoZWxtcyBmb3IgYSAKbW9tZW50IHRoZSB3aG9sZSBvZiB0aGUgYXN0cmFsIGJvZHksIGFuZCBmb3JjZXMgaXQgYWxsIHRvIHN3aW5nIGZvciB0aGF0IG1vbWVudCAKYXQgYSBzcGVjaWFsIHJhdGUuIFRoaXMgc29vbiBjYWxtcyBkb3duLCBhbmQgdGhlIGJvZHkgcmV0dXJucyB0byBpdHMgbm9ybWFsIApyYXRlcyBvZiBvc2NpbGxhdGlvbi4gQnV0IGV2ZXIgYWZ0ZXIgaXQgaXMgYSBsaXR0bGUgbW9yZSByZWFkeSB0byByZXNwb25kIHRvIHRoZSAKcGFydGljdWxhciByYXRlIHdoaWNoIGV4cHJlc3NlcyB0aGF0IGV2aWwgcGFzc2lvbi4gCgoKMTExNi7CoMKgwqDCoApMb25nIGFnbyB0aGUgZ3JlYXQgTG9yZCBCdWRkaGEgdGF1Z2h0IEhpcyBmb2xsb3dlcnMgdGhhdCB0aGUgbGlmZSBvZiB0aGUgCm9yZGluYXJ5IG1hbiBpcyBmdWxsIG9mIHNvcnJvdywgYmVjYXVzZSBoZSBhdHRhY2hlcyBoaW1zZWxmIHRvIGVhcnRobHkgdGhpbmdzIAp0aGF0IGRlY2F5IGFuZCBwYXNzIGF3YXkuIEhlIGRlc2lyZXMgd2VhbHRoIGFuZCBwb3dlciBvciBwb3NpdGlvbiwgYW5kIGhlIGlzIApkaXNjb250ZW50ZWQgYmVjYXVzZSBoZSBkb2VzIG5vdCBnYWluIHRoZW0sIG9yIGJlY2F1c2UsIGhhdmluZyBnYWluZWQgdGhlbSwgaGUgCmZpbmRzIHRoZW0gc2xpcHBpbmcgZnJvbSBoaW0uIEV2ZW4gdG8gaGlzIGZyaWVuZHMgaGUgYXR0YWNoZXMgaGltc2VsZiB3cm9uZ2x5LCAKZm9yIGhlIGxvdmVzIHRoZSBwaHlzaWNhbCBib2R5IHdoaWNoIG11c3QgY2hhbmdlIGFuZCBmYWRlLCBpbnN0ZWFkIG9mIHRoZSByZWFsIAptYW4gd2hvIGxpdmVzIG9uIHRocm91Z2ggdGhlIGFnZXMsIGFuZCBzbyB3aGVuIGhpcyBmcmllbmQgbGF5cyBhc2lkZSB0aGUgb3V0ZXIgCnZlaGljbGUgaGUgbW91cm5zIGhpbSBhcyBgIGRlYWQnIGFuZCB0aGlua3MgdGhhdCBoZSBoYXMgbG9zdCBoaW0uIAoKCjExMTcuwqDCoMKgwqAKVGhlIHdob2xlIHRlbmRlbmN5IG9mIG91ciBjaXZpbGlzYXRpb24gaXMgdG8gaW5jcmVhc2UgZGVzaXJlLCB0byBtdWx0aXBseSAKb3VyIHJlcXVpcmVtZW50cy4gVGhpbmdzIHdoaWNoIHdlcmUgcmVnYXJkZWQgYXMgbHV4dXJpZXMgYnkgb25lIGdlbmVyYXRpb24gYXJlIApjb25zaWRlcmVkIG5lY2Vzc2l0aWVzIG9mIGxpZmUgYnkgdGhlIG5leHQsIGFuZCBvdXIgZGVzaXJlIGlzIGV2ZXIgcmVhY2hpbmcgb3V0IAppbiBuZXcgZGlyZWN0aW9ucy4gSWYgd2Ugd2lzaCBmb3IgcGVhY2U7IHdlIG11c3QgbGVhcm4gdG8gbGltaXQgdGhlc2UgZGVzaXJlcywgCnRvIGxpdmUgYSBzaW1wbGVyIGxpZmUsIHRvIGJlIHNhdGlzZmllZCB3aXRoIGNvbWZvcnQgd2l0aG91dCBsb25naW5nIGZvciBsdXh1cnksIAp3ZSBtdXN0IGRpc3Rpbmd1aXNoIG5lY2Vzc2l0aWVzIGZyb20gc3VwZXJmbHVpdGllcy4gSXQgaXMgYmV0dGVyIHRvIGRlY3JlYXNlIG91ciAKd2FudHMgYW5kIGxlYXZlIG91cnNlbHZlcyB0aW1lIHRvIHJlc3QsIHJhdGhlciB0aGFuIHRvIHdvcmsgb3Vyc2VsdmVzIHRvIGRlYXRoIAppbiB0aGUgZGVzcGVyYXRlIGVmZm9ydCB0byBzYXRpc2Z5IGNvbnN0YW50bHkgaW5jcmVhc2luZyB3YW50cy4gSWYgd2UgYXJlIHRvIApoYXZlIHBlYWNlLCB3ZSBtdXN0IGNlcnRhaW5seSBjb250cm9sIGRlc2lyZS4gCgoKMTExOC7CoMKgwqDCoApBbm90aGVyIGZlcnRpbGUgc291cmNlIG9mIGRpc3F1aWV0IGlzIHRoZSBoYWJpdCB0aGF0IHdlIGhhdmUgb2YgCmludGVyZmVyaW5nIHdpdGggb3RoZXIgcGVvcGxlLS0gb2YgcGVycGV0dWFsbHkgdHJ5aW5nIHRvIG1ha2UgdGhlbSBzZWUgYW5kIGRvIAp0aGluZ3MgYXMgd2Ugc2VlIGFuZCBkbyB0aGVtLiBNYW55IG9mIHVzIHNlZW0gcXVpdGUgdW5hYmxlIHRvIGhvbGQgYSBjb252aWN0aW9uIApvbiBhbnkgc3ViamVjdCwgc29jaWFsLCBwb2xpdGljYWwgb3IgcmVsaWdpb3VzLCB3aXRob3V0IGltbWVkaWF0ZWx5IHF1YXJyZWxsaW5nIAp3aXRoIGV2ZXJ5IG9uZSB3aG9zZSBjb252aWN0aW9ucyBoYXBwZW4gdG8gYmUgZGlmZmVyZW50LCBhbmQgZ2V0dGluZyB1cCBhIGhlYXRlZCAKYXJndW1lbnQgYWJvdXQgdGhlIG1hdHRlci4gV2hlbiB3ZSBsZWFybiB1bmdydWRnaW5nbHkgdG8gYWxsb3cgb3RoZXJzIHRoZSBzYW1lIApmcmVlZG9tIG9mIG9waW5pb24gb24gZXZlcnkgc3ViamVjdCB0aGF0IHdlIHNvIHVuaGVzaXRhdGluZ2x5IGNsYWltIGZvciAKb3Vyc2VsdmVzLCB3aGVuIHdlIGxlYXJuIHRvIHJlZnJhaW4gZnJvbSBjcml0aWNpc2luZyB0aGVtIGJlY2F1c2UgdGhleSBkaWZmZXIgCmZyb20gdXMsIHdlIHNoYWxsIGhhdmUgYWR2YW5jZWQgZmFyIGFsb25nIHRoZSBwYXRoIHdoaWNoIGxlYWRzIHRvIHBlYWNlLiAKCgoxMTE5LsKgwqDCoMKgCk1vc3Qgb2YgYWxsIGlzIGl0IG5lY2Vzc2FyeSBmb3IgcGVhY2UgdGhhdCB3ZSBzaG91bGQgY2FzdCBhc2lkZSB0aGUgCnBlcnNvbmFsaXR5IGFuZCBhY3F1aXJlIHVuc2VsZmlzaG5lc3MuIFNvIGxvbmcgYXMgd2UgYXJlIHNlbGYtY2VudHJlZCwgc28gbG9uZyAKYXMgdGhlIGAgSScgaXMgdGhlIHBpdm90IHJvdW5kIHdoaWNoIGFsbCBvdXIgdW5pdmVyc2UgdHVybnMsIHdlIGluc2Vuc2libHkgYnV0IAppbmV2aXRhYmx5IGV4cGVjdCB0aGF0IGl0IHNoYWxsIGJlIHRoZSBjZW50cmUgZm9yIG90aGVycyBhcyB3ZWxsLCBhbmQgd2hlbiB3ZSAKZmluZCB0aGF0IHRoZXkgYXJlIGFjdGluZyB3aXRob3V0IHJlZmVyZW5jZSB0byB1cy0tIHdpdGhvdXQgcmVjb2duaXNpbmcgb3VyIApwYXJhbW91bnQgY2xhaW1zIHRvIGNvbnNpZGVyYXRpb24tLSB3ZSBiZWNvbWUgaXJyaXRhYmxlIGFuZCBzZWxmIGFzc2VydGl2ZSwgYW5kIApwZWFjZSBmbGllcyBmYXIgZnJvbSB1cy4gCgoKMTEyMC7CoMKgwqDCoApXZSBtdXN0IHJlYWxpc2UgdGhhdCB3ZSBhcmUgc291bHMgYW5kIG5vdCBib2RpZXM7IGlmIHdlIGlkZW50aWZ5IApvdXJzZWx2ZXMgKGFzIG1lbiB1c3VhbGx5IGRvKSB3aXRoIHRoZSBwaHlzaWNhbCB2ZWhpY2xlLCB3ZSBjYW5ub3QgYXZvaWQgZ2l2aW5nIAphbHRvZ2V0aGVyIHVuZHVlIGltcG9ydGFuY2UgdG8gd2hhdCBoYXBwZW5zIHRvIGl0LCBhbmQgd2UgYmVjb21lLCB0byBhIGxhcmdlIApleHRlbnQsIHNsYXZlcyB0byBpdCBhbmQgaXRzIHBlcnBldHVhbGx5IGNoYW5naW5nIGZlZWxpbmdzLiBJdCBpcyB0byBhdm9pZCBzdWNoIApib25kYWdlIHRoYXQgdGhlIE9yaWVudGFsIGFkb3B0cyB0aGUgaGFiaXQgb2YgdGhvdWdodCB3aGljaCBsZWFkcyBoaW0gdG8gCnN1YnN0aXR1dGUgZm9yIG91ciBvcmRpbmFyeSBwaHJhc2VzOiDvv71JIGFtIGh1bmdyeSwgSSBhbSB0aXJlZCzvv70gdGhlIG1vcmUgZXhhY3QgCnN0YXRlbWVudDog77+9TXkgYm9keSBpcyBodW5ncnksIG15IGJvZHkgaXMgdGlyZWQu77+9IAoKCjExMjEuwqDCoMKgwqAKSXQgaXMgb25seSBvbmUgc3RlcCBmYXJ0aGVyIHRvIHNlZSB0aGF0IHdlIGFyZSBlcXVhbGx5IGluIGVycm9yIHdoZW4gd2UgCnNheTog77+9SSBhbSBhbmdyeSwgSSBhbSBqZWFsb3VzLu+/vSBUaGUgdHJ1ZSBgIEknIGlzIHRoZSBzZWxmIGJlaGluZCBvciB3aXRoaW4gYWxsIAp0aGVzZSB2ZWhpY2xlcywgYW5kIHRoYXQgc2VsZiBjYW5ub3QgYmUgYW5ncnkgb3IgamVhbG91cywgdGhvdWdoIGl0cyBhc3RyYWwgYm9keSAKbWF5OyBidXQgaXQgaXMganVzdCBhcyBtdWNoIGEgbWlzdGFrZSBmb3IgYSBtYW4gdG8gaWRlbnRpZnkgaGltc2VsZiB3aXRoIHRoZSAKYXN0cmFsIHZlaGljbGUgYXMgd2l0aCB0aGUgcGh5c2ljYWwuIEhlIG11c3Qgbm90IGJlIHRoZSBzbGF2ZSBvZiBhbnkgb2YgaGlzIApib2RpZXMgbWVudGFsLCBhc3RyYWwgb3IgcGh5c2ljYWw7IHRoZXNlIHRocmVlIHRvZ2V0aGVyIG1ha2UgdXAgaGlzIHBlcnNvbmFsaXR5LCAKdGhlIHRlbXBvcmFyeSBhbmQgcGFydGlhbCBleHByZXNzaW9uIG9mIGhpbSwgYnV0IHRoZXkgYXJlIG5vdCBoZSwgYW55IAptb3JlIHRoYW4gdGhlIGNsb3RoZXMgYXJlIHRoZSBtYW4uIAoKCjExMjIuwqDCoMKgwqAKVGhlc2UgZm91ciBzdGVwcywgdGhlbiwgbXVzdCBiZSB0YWtlbi4gV2UgbXVzdCBhY3F1aXJlIGtub3dsZWRnZSBieSAKc3R1ZHksIGFuZCBoYXZpbmcgYWNxdWlyZWQgaXQsIHdlIG11c3QgcHV0IGl0IGludG8gcHJhY3RpY2U7IHdlIG11c3QgbGVhcm4gdG8gCmxpbWl0IG91ciBkZXNpcmVzIGFuZCBjb250cm9sIG91ciBlbW90aW9ucywgYW5kIHdlIG11c3QgZWxpbWluYXRlIHRoZSBsb3dlciAKcGVyc29uYWxpdHksIGFuZCBpZGVudGlmeSBvdXJzZWx2ZXMgYXMgdGhlIHNlbGYgYmVoaW5kLiBXZSBtdXN0IHN1YnN0aXR1dGUgCmFsdHJ1aXNtIGZvciBlZ29pc207IHdlIG11c3QgcmVhbGlzZSB0aGUgR29kIHdpdGhpbiB1cyBiZWZvcmUgd2UgY2FuIGF0dGFpbiDvv710aGUgCnBlYWNlIG9mIEdvZCB3aGljaCBwYXNzZXRoIGFsbCB1bmRlcnN0YW5kaW5n77+9LiAKCgoxMTIzLsKgwqDCoMKgClRoYXQgaXMgdGhlIHBhdGggdG8gcGVhY2UuIE1heSB0aGF0IHBlYWNlIHJlc3QgdXBvbiB1cyBhbGwuIAoKCjExMjQuwqDCoMKgwqAKQ0hBUFRFUiBYSVggCgoKMTEyNS7CoMKgwqDCoApCWSBXSEFUIFdFIFRISU5LIAoKCjExMjYuwqDCoMKgwqAKVEhFIFJFQUxNIE9GIFRIT1VHSFQgCgoKMTEyNy7CoMKgwqDCoApBIFNUVURFTlQgb2Ygb2NjdWx0aXNtIHRyYWlucyBoaW1zZWxmIGluIHRoZSBhcnQgb2YgdGhpbmtpbmcsIGFuZCAKY29uc2VxdWVudGx5IGhpcyB0aG91Z2h0IGlzIG11Y2ggbW9yZSBwb3dlcmZ1bCB0aGFuIHRoYXQgb2YgdGhlIHVudHJhaW5lZCBtYW4sIAphbmQgaXMgbGlrZWx5IHRvIGluZmx1ZW5jZSBhIHdpZGVyIGNpcmNsZSBhbmQgdG8gcHJvZHVjZSBhIG11Y2ggZ3JlYXRlciBlZmZlY3QuIApUaGlzIGhhcHBlbnMgcXVpdGUgb3V0c2lkZSBvZiBoaXMgb3duIGNvbnNjaW91c25lc3MsIHdpdGhvdXQgaGlzIG1ha2luZyBhbnkgCmVmZm9ydCBpbiB0aGUgbWF0dGVyLiBCdXQgcHJlY2lzZWx5IGJlY2F1c2UgaGUgaGFzIGxlYXJudCB0aGUgbWlnaHR5IHBvd2VyIG9mIAp0aG91Z2h0IGl0IGJlY29tZXMgaGlzIGR1dHkgdG8gdXNlIGl0IGZvciB0aGUgaGVscGluZyBvZiBvdGhlcnMuIEluIG9yZGVyIHRvIGRvIAp0aGlzIGVmZmVjdGl2ZWx5IGhlIG11c3QgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCBhY3RzLiAKCgoxMTI4LsKgwqDCoMKgCk9uZSBvZiB0aGUgbW9zdCBzdHJpa2luZyBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHVuc2VlbiB3b3JsZCB3aGljaCBsaWVzIAphbGwgYWJvdXQgdXMgaXMgdGhlIHJlYWR5IHJlc3BvbnNlIG9mIHRoZSBmaW5lciB0eXBlIG9mIG1hdHRlciBvZiB3aGljaCBpdCBpcyAKY29uc3RydWN0ZWQgdG8gdGhlIGluZmx1ZW5jZXMgb2YgaHVtYW4gdGhvdWdodCBhbmQgZW1vdGlvbi4gSXQgaXMgZGlmZmljdWx0IGZvciAKdGhvc2Ugd2hvIGhhdmUgbm90IHN0dWRpZWQgdGhlIHN1YmplY3QgdG8gZ3Jhc3AgdGhlIGFic29sdXRlIHJlYWxpdHkgb2YgdGhlc2UgCmZvcmNlcy0tIHRvIHVuZGVyc3RhbmQgdGhhdCB0aGVpciBhY3Rpb24gaXMgaW4gZXZlcnkgcmVzcGVjdCBhcyBkZWZpbml0ZSB1cG9uIAp0aGUgZmluZXIgdHlwZSBvZiBtYXR0ZXIgYXMgaXMgdGhhdCBvZiBzdGVhbSBvciBlbGVjdHJpY2l0eSB1cG9uIHBoeXNpY2FsIAptYXR0ZXIuIAoKCjExMjkuwqDCoMKgwqAKRXZlcnkgb25lIGtub3dzIHRoYXQgYSBtYW4gd2hvIGhhcyBhdCBoaXMgZGlzcG9zYWwgYSBsYXJnZSBhbW91bnQgb2YgCnN0ZWFtLXBvd2VyIG9yIGVsZWN0cmljYWwgcG93ZXIgY2FuIGRvIHVzZWZ1bCB3b3JrIGFuZCBwcm9kdWNlIGRlZmluaXRlIHJlc3VsdHM7IApidXQgZmV3IHBlb3BsZSBrbm93IHRoYXQgZXZlcnkgbWFuIGhhcyBhdCBoaXMgZGlzcG9zYWwgYSBjZXJ0YWluIGFtb3VudCBvZiB0aGlzIApvdGhlciBhbmQgaGlnaGVyIHBvd2VyLCBhbmQgdGhhdCB3aXRoIHRoYXQgaGUgY2FuIHByb2R1Y2UgcmVzdWx0cyBqdXN0IGFzIApkZWZpbml0ZSBhbmQganVzdCBhcyByZWFsLiAKCgoxMTMwLsKgwqDCoMKgCkFzIG1hdHRlcnMgc3RhbmQgYXQgcHJlc2VudCBpbiB0aGUgcGh5c2ljYWwgd29ybGQsIG9ubHkgYSBmZXcgbWVuIGNhbiAKaGF2ZSBhdCB0aGVpciBkaXNwb3NhbCBhbnkgbGFyZ2UgYW1vdW50IG9mIGl0cyBmb3JjZXMsIGFuZCBzbyBvbmx5IGEgZmV3IGNhbiAKYmVjb21lIHJpY2ggYnkgdGhlaXIgbWVhbnM7IGJ1dCBpdCBpcyBhIHByb21pbmVudCBmZWF0dXJlIG9mIHRoZSB2aXZpZCBpbnRlcmVzdCAKb2YgdGhlIHVuc2VlbiBzaWRlIG9mIGxpZmUgdGhhdCBldmVyeSBodW1hbiBiZWluZywgcmljaCBvciBwb29yLCBvbGQgb3IgeW91bmcsIApoYXMgYWxyZWFkeSBhdCBoaXMgZGlzcG9zYWwgbm8gaW5jb25zaWRlcmFibGUgcHJvcG9ydGlvbiBvZiBpdHMgZm9yY2VzLCBhbmQgCnRoZXJlZm9yZSB0aGUgcmljaGVzIG9mIHRoZXNlIGhpZ2hlciB3b3JsZHMsIHdoaWNoIGFyZSBvYnRhaW5lZCBieSB0aGUgcmlnaHQgdXNlIApvZiB0aGVzZSBwb3dlcnMsIGFyZSB3aXRoaW4gdGhlIHJlYWNoIG9mIGFsbC4gCgoKMTEzMS7CoMKgwqDCoApIZXJlLCB0aGVuLCBpcyBhIHBvd2VyIHBvc3Nlc3NlZCBieSBhbGwsIGJ1dCBpbnRlbGxpZ2VudGx5IHVzZWQgYXMgeWV0IGJ5IApmZXc7IGl0IGlzIHN1cmVseSB3ZWxsIHdvcnRoIG91ciB3aGlsZSB0byB0YWtlIHVwIHRoZSBtYXR0ZXIsIHRvIGVucXVpcmUgaW50byBpdCAKYW5kIHRyeSB0byBjb21wcmVoZW5kIGl0LiBJbmRlZWQsIHRoZXJlIGlzIGV2ZW4gbW9yZSByZWFzb24gZm9yIHNvIGRvaW5nIHRoYW4gCmhhcyB5ZXQgYmVlbiBtZW50aW9uZWQsIGZvciB0aGUgdHJ1dGggaXMgdGhhdCB0byBzb21lIGV4dGVudCB3ZSBhcmUgYWxsIGFscmVhZHkgCnVuY29uc2Npb3VzbHkgbWFraW5nIHVzZSBvZiB0aGlzIHBvd2VyLCBhbmQgYmVjYXVzZSBvZiBvdXIgaWdub3JhbmNlIHdlIGFyZSAKZW1wbG95aW5nIGl0IHdyb25nbHksIGFuZCBkb2luZyBoYXJtIHdpdGggaXQgaW5zdGVhZCBvZiBnb29kLiBUaGUgcG9zc2Vzc2lvbiBvZiAKcG93ZXIgYWx3YXlzIG1lYW5zIHJlc3BvbnNpYmlsaXR5LCBzbyBpbiBvcmRlciB0byBhdm9pZCBkb2luZyBoYXJtIAp1bmludGVudGlvbmFsbHksIGFuZCBpbiBvcmRlciB0byB1dGlsaXNlIHRob3JvdWdobHkgdGhlc2UgbWFnbmlmaWNlbnQgCnBvc3NpYmlsaXRpZXMsIGl0IHdpbGwgY2xlYXJseSBiZSB3ZWxsIGZvciB1cyB0byBsZWFybiBhbGwgdGhhdCB3ZSBjYW4gb24gdGhpcyAKc3ViamVjdC4gCgoKMTEzMi7CoMKgwqDCoApUSEUgRUZGRUNUUyBPRiBUSE9VR0hUIAoKCjExMzMuwqDCoMKgwqAKV2hhdCB0aGVuIGlzIHRob3VnaHQsIGFuZCBob3cgZG9lcyBpdCBzaG93IGl0c2VsZj8gSXQgaXMgaW4gdGhlIG1lbnRhbCAKYm9keSB0aGF0IGl0IGZpcnN0IG1hbmlmZXN0cyBpdHNlbGYgdG8gdGhlIHNpZ2h0IG9mIHRoZSBjbGFpcnZveWFudCwgYW5kIGl0IAphcHBlYXJzIGFzIGEgdmlicmF0aW9uIG9mIGl0cyBtYXR0ZXItLSBhIHZpYnJhdGlvbiB3aGljaCBpcyBmb3VuZCB0byBwcm9kdWNlIAp2YXJpb3VzIGVmZmVjdHMsIGFsbCBvZiB0aGVtIHF1aXRlIGluIGxpbmUgd2l0aCB3aGF0IHNjaWVudGlmaWMgZXhwZXJpZW5jZSBpbiAKdGhlIHBoeXNpY2FsIHdvcmxkIHdvdWxkIGxlYWQgdXMgdG8gZXhwZWN0Lg==
sabato 1 gennaio 2000
[AL CORPUS] The Hidden Side of Things [4/6]
Iscriviti a:
Commenti sul post (Atom)
[AL CORPUS] Occult Chemistry [2/2]
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
XFwiXiAKCgpzICwgCgoKLl4gCgoKT0NDVUxUIENIRU1JU1RSWSAKCgpDbGFpcnZveWFudCBPYnNlcnZhdGlvbnMgb24gdGhlIApDaGVtaWNhbCBFbGVtZW50cyAKCgpCWSAKCgpBTk5J...
-
VEhPVUdIVC1GT1JNUyAKCgpCWSAKCkFOTklFIEJFU0FOVCAKCkFORCAKCkMuIFcuIExFQUQgQkVBVEVSIAoKCldJVEggRklGVFktRUlHSFQgSUxMVVNUUkFUSU9OUyAKCgpMT05ET04g...
Nessun commento:
Posta un commento