V2hhdCdzIE5ldyBmb3IgRnJlZUltYWdlCgoqIDogZml4ZWQKLSA6IHJlbW92ZWQKISA6IGNoYW5nZWQKKyA6IGFkZGVkCgpTZXB0ZW1iZXIgMjh0aCwgMjAwOSAtIDMuMTMuMAohIEZyZWVJbWFnZSBub3cgdXNlcyBMaWJKUEVHIDcKISBGcmVlSW1hZ2Ugbm93IHVzZXMgTGliUmF3LUxpdGUgMC43LjIKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliUE5HIDEuMi40MAohIEZyZWVJbWFnZSBub3cgdXNlcyBsaWJUSUZGIDMuOS4xCiEgRnJlZUltYWdlX1JvdGF0ZUNsYXNzaWMgaXMgZGVwcmVjYXRlZCAodXNlIEZyZWVJbWFnZV9Sb3RhdGUgaW5zdGVhZCkKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBzdXBwb3J0IGZvciBhbGwgUGhvdG9zaG9wIHN1cHBvcnRlZCBjb2xvciBtb2RlcyB0byBQU0QgcGx1Z2luCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgMzItYml0IHRvIEpORy9NTkcgcGx1Z2luCisgW0FtaXIgRWJyYWhpbWldIGFkZGVkIGxvYWRpbmcgc3VwcG9ydCBmb3IgdGhlIFBJQ1QgZm9ybWF0CisgW0hlcnZlIERyb2xvbl0gYWRkZWQgbG9hZGluZyBzdXBwb3J0IGZvciBjYW1lcmEgUkFXIGZvcm1hdHMgKHVzaW5nIExpYlJhd0xpdGUgd3JhcHBlciBmb3IgZGNyYXcpCisgW01paGFpbCBOYXlkZW5vdl0gYWRkZWQgVU5JQ09ERSBmdW5jdGlvbnMgRnJlZUltYWdlX0pQRUdUcmFuc2Zvcm1VIGFuZCBGcmVlSW1hZ2VfSlBFR0Nyb3BVCisgW0NhcnN0ZW4gS2xlaW5dIGFkZGVkIEZyZWVJbWFnZV9PcGVuTXVsdGlCaXRtYXBGcm9tSGFuZGxlCisgW0NhcnN0ZW4gS2xlaW5dIGFkZGVkIEZyZWVJbWFnZV9GaWxsQmFja2dyb3VuZAorIFtDYXJzdGVuIEtsZWluXSBhZGRlZCBGcmVlSW1hZ2VfRW5sYXJnZUNhbnZhcworIFtDYXJzdGVuIEtsZWluXSBhZGRlZCBGcmVlSW1hZ2VfQWxsb2NhdGVFeCAvIEZyZWVJbWFnZV9BbGxvY2F0ZUV4VAorIFtNaWhhaWwgTmF5ZGVub3YvSGVydmUgRHJvbG9uXSBhZGRlZCBGcmVlSW1hZ2VfVG1vUmVpbmhhcmQwNUV4CisgW0hlcnZlIERyb2xvbl0gYWRkZWQgRklUX1JHQkExNiB0byBGSVRfUkdCRiBjb252ZXJzaW9uIHRvIEZyZWVJbWFnZV9Db252ZXJ0VG9SR0JGICAKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBGcmVlSW1hZ2VfUm90YXRlIChzdXBwb3J0IGZvciBtb3N0IGltYWdlIHR5cGVzLCBzdXBwb3J0IGJhY2tncm91bmQgY29sb3IpIAoqIFtDaHJpc3RpYW4gSGVpbWVzXSBmaXhlZCBmdW5jdGlvbiBwcm90b3R5cGVzIHRvIHVzZSBhIHZvaWQgYXJndW1lbnQgd2hlbiBubyBhcmd1bWVudCBleGlzdAoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIFJHQiBjb2xvciBvcmRlcmluZyBvbiBJbnRlbCBtYWNzCiogW0hlcnZlIERyb2xvbl0gRnJlZUltYWdlX1JvdGF0ZUNsYXNzaWMgbm93IGtlZXAgdHJhbnNwYXJlbmN5IHdoZW4gYXBwbGllZCB0byA4LWJpdCBpbWFnZXMKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBoYW5kbGluZyBvZiB0cmFuc3BhcmVuY3kgaW5mbyBpbiBGcmVlSW1hZ2VfQ29weQoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgbm9ybWFsaXphdGlvbiBlcnJvciBpbiBGcmVlSW1hZ2VfR2V0QWRqdXN0Q29sb3JzTG9va3VwVGFibGUKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBpbnZhbGlkIEV4aWYgcm90YXRpb24gaW4gUGx1Z2luSlBFRyBmb3Igb3JpZW50YXRpb24gY2FzZXMgMiBhbmQgNAoqIFtNaWhhaWwgTmF5ZGVub3YgLyBDYXJzdGVuIEtsZWluXSBmaXhlZCBjb21waWxhdGlvbiBpc3N1ZXMgd2l0aCBNaW5HVzMyCiogW01paGFpbCBOYXlkZW5vdl0gaW1wcm92ZWQgdGhlIGxvYWRpbmcgc3BlZWQgb2YgYWxsIHRhcmdhIGltYWdlcwoqIFtIZXJ2ZSBEcm9sb25dIEZyZWVJbWFnZV9UYWdUb1N0cmluZyBub3cgaGFuZGxlcyB0aGUgRXhpZiBVc2VyQ29tbWVudCB0YWcKCkFwcmlsIDE0dGgsIDIwMDkgLSAzLjEyLjAKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliUE5HIDEuMi4zNQohIEZyZWVJbWFnZSBub3cgdXNlcyBsaWJUSUZGIDMuOS4wYmV0YSAoQ1ZTIHBhdGNoIDIwMDktMDItMTIpCiEgRnJlZUltYWdlIG5vdyB1c2VzIE9wZW5KUEVHIDEuMy4wIChTVk4gcGF0Y2ggMjAwOC0wOC0yMSkKISBbSGVydmUgRHJvbG9uXSBGcmVlSW1hZ2VfQ2xvbmVNZXRhZGF0YSBubyBsb25nZXIgY2xvbmUgdGhlIEZJTURfQU5JTUFUSU9OIG1ldGFkYXRhICh0aGlzIHdhcyBjYXVzaW5nIHByb2JsZW1zIHdoZW4gc2F2aW5nIHRvIEdJRiBmb3JtYXQpCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgZnVsbCBzdXBwb3J0IGZvciB0aGUgUEZNIGZvcm1hdAorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEpQRUdfRVhJRlJPVEFURSBsb2FkIGZsYWcgdG8gdGhlIEpQRUcgcGx1Z2luCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgMTYtYml0IFJHQihBKSBhbmQgZmxvYXQgUkdCKEEpRiBzdXBwb3J0IHRvIEZyZWVJbWFnZV9HZXRDaGFubmVsIC8gRnJlZUltYWdlX1NldENoYW5uZWwgCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3JjIEZJVF9SR0JBMTYgdG8gZHN0IDMyLWJpdCBGSVRfQklUTUFQIGNvbnZlcnNpb24gdG8gRnJlZUltYWdlX0NvbnZlcnRUb1R5cGUKKiBbQ2Fyc3RlbiBLbGVpbl0gRnJlZUltYWdlX0NvcHkgbm93IGNvcGllcyB0cmFuc3BhcmVuY3kgaW5mbywgcmVzb2x1dGlvbiBpbmZvLCBJQ0MgcHJvZmlsZSBhbmQgbWV0YWRhdGEKKiBbQ2Fyc3RlbiBLbGVpbl0gY2hlY2sgZm9yIG5lZ2F0aXZlIHRvcC9sZWZ0IHZhbHVlcyBpbiBGcmVlSW1hZ2VfUGFzdGUKKiBbQ2hyaXN0aWFuIEhlaW1lc10gY2hhbmdlZCBleGNlcHRpb25zIHdpdGggYSAiY2F0Y2goY2hhciAqdGV4dCkiIHRvIGEgImNhdGNoKGNvbnN0IGNoYXIgKnRleHQpIiB0byBtYWtlIEdDQyA0LjEgaGFwcHkKKiBbRGVpZiBMb3VdIGZpeGVkIGEgYnVnIGluIEZyZWVJbWFnZV9TZXRUcmFuc3BhcmVudEluZGV4CiogW1Rob21hcyBNYWl3YWxkXSBCTVAgcGx1Z2luOiBvbiBzYXZpbmcsIGZpeGVkIGNvcnJlY3Qgc2V0dGluZyBvZiBiZlNpemUgQk1QIGZpbGUgaGVhZGVyIGZvciBwYWxldHRpemVkIGltYWdlcwoqIFtUaW1vdGh5IExlZV0gZml4ZWQgaGFuZGxpbmcgb2YgZnJhbWUgZGlzcG9zYWwgaW4gR0lGX1BMQVlCQUNLIG1vZGUgKEdJRiBwbHVnaW4pCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgaGFuZGxpbmcgb2YgRXhpZiBPbHltcHVzIFR5cGUgMiBtYWtlciBub3RlcyAobm90IHlldCBzdXBwb3J0ZWQgYnV0IG5vdyBzYWZlbHkgaWdub3JlZCkKKiBbUmljaCBHZWxkcmVpY2hdIGZpeGVkIERYVDEgY29sb3IgZW5kcG9pbnQgcHJlY2lzaW9uIHByb2JsZW0gaW4gRERTIHBsdWdpbgoqIFtNaWhhaWwgTmF5ZGVub3ZdIGltcHJvdmVkIGxvYWRpbmcgc3BlZWQgb2YgMjQtYml0IHRhcmdhIGltYWdlcwoqIFtFdWdlbmUgR29sdXNoa292XSBpbXByb3ZlZCBiaWcgZW5kaWFuIC8gbGl0dGxlIGVuZGlhbiBzd2FwcGluZyBmdW5jdGlvbnMKKiBbQ2Fyc3RlbiBLbGVpbi9KZWFuLVBoaWxpcHBlIEdvZXJrZV0gaW1wcm92ZWQgRnJlZUltYWdlX1NldE1ldGFkYXRhIC8gRnJlZUltYWdlX0dldE1ldGFkYXRhIGFjY2Vzc29ycwoqIFtDaHJpc3RpYW4gUnVwcGVydF0gaW1wcm92ZWQgTGludXggTWFrZWZpbGVzCiogW0V1Z2VuZSBHb2x1c2hrb3ZdIGZpeGVkIFBsdWdpbkJNUCBhbGlnbm1lbnQgYnVnIHdoaWxlIHNhdmluZyAxNiBvciAyNGJpdCBCTVAgb24gYmlnIGVuZGlhbiBvciBBcHBsZSBtYWNoaW5lcwoKSnVseSAyOHRoLCAyMDA4IC0gMy4xMS4wCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlRJRkYgMy45LjBiZXRhIChDVlMgcGF0Y2ggMjAwOC0wNS0yNCkKISBGcmVlSW1hZ2Ugbm93IHVzZXMgT3BlbkpQRUcgMS4zLjAgKFNWTiBwYXRjaCAyMDA4LTA1LTIyKQohIEZyZWVJbWFnZSBub3cgdXNlcyBsaWJNTkcgMS4wLjEwCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlBORyAxLjIuMjkKKyBbWXZlcyBTY2htaWRdIGFkZGVkIDQ4LWJpdCBSR0IgdG8gMzItYml0IGNvbnZlcnNpb24gc3VwcG9ydCBpbiBGcmVlSW1hZ2VfQ29udmVydFRvMzJCaXRzCisgW0Fhcm9uIFNodW1hdGVdIGFkZGVkIFJHQjE2LXRvLUJJVE1BUCBhbmQgQWxsLXRvLVJHQkYgY29udmVyc2lvbiBzdXBwb3J0IGluIEZyZWVJbWFnZV9Db252ZXJ0VG9UeXBlCisgW0JlbmphbWluIEVuZ2xpc2hdIGFkZGVkIGEgbmV3IE9wZW5HTCBzYW1wbGUgdG8gRnJlZUltYWdlL0V4YW1wbGVzCisgW0x1Y2lhbiBTYWJvXSBhZGRlZCBuZXcgY29tcHJlc3Npb24gZmxhZ3MgdG8gdGhlIFBORyBwbHVnaW4KKyBbTHVjaWFuIFNhYm9dIGFkZGVkIG5ldyBjb21wcmVzc2lvbiBmbGFncyB0byB0aGUgSlBFRyBwbHVnaW4gKGNocm9tYSBzdWJzYW1wbGluZyBvcHRpb25zKQorIFtOb2FtIEdhdF0gYWRkZWQgc3VwcG9ydCBmb3IgU0dJIGdyYXlzY2FsZSArIGFscGhhIHBpY3MgdG8gU0dJIHBsdWdpbgorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZyZWVJbWFnZV9DbG9uZU1ldGFkYXRhCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgbG9hZGluZyBzdXBwb3J0IGZvciBXaW5kb3dzIFZpc3RhIGljb25zIGluIElDTyBQbHVnaW4KKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBsb2FkaW5nIGFuZCBzYXZpbmcgc3VwcG9ydCBmb3IgUkdCRiBpbWFnZXMgdG8gdGhlIFRJRiBwbHVnaW4gKHVzaW5nIHRoZSBMb2dMdXYgY29kZWMpCiogW1dpbGwgQnJ5YW50XSBmaXhlZCBtYWtlZmlsZSBmb3IgTWFjT1NYIFRpZ2VyIGFuZCBMZW9wYXJkCiogW01hcmlhIEd1bGxpY2tzb25dIGZpeGVkIGEgJ2RpdmlkZSBieSAwJyBlcnJvciBpbiBQTk0gcGx1Z2luIGFuZCBGcmVlSW1hZ2VfUmVzY2FsZSBmdW5jdGlvbgoqIFtZdmVzIFNjaG1pZF0gZml4ZWQgYSBidWcgd2l0aCBFeGlmIG1ldGFkYXRhIHJlYWRpbmcgaW4gVElGRiBpbWFnZXMKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBzb21lIHBvc3NpYmxlIDY0LWJpdCBwb3J0YWJpbGl0eSBpc3N1ZXMgd2l0aCBwb2ludGVyIGNhbGN1bGF0aW9ucwoqIFt3YW5neW5dIGZpeGVkIGEgYnVnIHdpdGggdHJhbnNwYXJlbmN5IGhhbmRsaW5nIG9mIGluZGV4ZWQgaW1hZ2VzIGluIFBORyBwbHVnaW4KKiBbTWFydGluIER5cmluZy1BbmRlcnNlbl0gZml4ZWQgYSBidWcgd2l0aCBHSUZpbmZvIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiBpbiBHSUYgcGx1Z2luCiogW05vYW0gR2F0XSBmaXhlZCBhIGJ1ZyBpbiBTR0kgcGx1Z2luOiB3aGVuIHRoZSBmaWxlIHJlcG9ydHMgYXMgdHdvLWRpbWVuc2lvbmFsLCB0aGUgaGVpZ2h0IGZhY3RvciBkb2VzIG5vdCBnZXQgbG9hZGVkCiogW0hlcnZlIERyb2xvbl0gYWRkZWQgZXJyb3IgbWVzc2FnZXMgaW4gRnJlZUltYWdlX0xvYWQoVSkgLyBGcmVlSW1hZ2VfU2F2ZShVKSBpbiBjYXNlIG9mIGJhZCBmaWxlbmFtZXMKKiBbU2NvdHQgU21pdGgvSGVydmUgRHJvbG9uXSBhZGRlZCBtaXNzaW5nIElQVEMgdGFncyBhbmQgcmVuYW1lZCBzb21lIHRhZyBuYW1lcyB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhpZlRvb2wgbmFtaW5nIGNvbnZlbnRpb24KKiBbTWFydGluIER5cmluZy1BbmRlcnNlbl0gZml4ZWQgYSBjcmFzaCBwcm9ibGVtIHdpdGggaW1hZ2VzIGNvbnRhaW5pbmcgZXhpZiBkYXRhIGVtaXR0ZWQgYnkgUGljYXNzYQoqIFtIZXJ2ZSBEcm9sb25dIHJlbW92ZWQgUkdCQSB0byBSR0IgdHJhbnNwYXJlbnQgY29udmVyc2lvbiBpbiBFWFIgcGx1Z2luCiogW0dsZW5uIFBpZXJjZV0gaW1wcm92ZWQgdGhlIHNwZWVkIG9mIEZyZWVJbWFnZV9GbGlwSG9yaXpvbnRhbAoqIFtDYXJzdGVuIEtsZWluXSBmaXhlZCA2NTUzNSBwaXhlbHMgd2lkdGgvaGVpZ2h0IGxpbWl0YXRpb24gaW4gRnJlZUltYWdlX1Bhc3RlCgpOb3ZlbWJlciAxOXRoLCAyMDA3IC0gMy4xMC4wCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlRJRkYgMy45LjBiZXRhIChDVlMgcGF0Y2ggMjAwNy0xMC0wNSkKISBGcmVlSW1hZ2Ugbm93IHVzZXMgT3BlbkpQRUcgMS4yLjAgKFNWTiBwYXRjaCAyMDA3LTA3LTEzKQohIEZyZWVJbWFnZSBub3cgdXNlcyBPcGVuRVhSIDEuNi4xCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlBORyAxLjIuMjMKISBGcmVlSW1hZ2Ugbm93IGhpZGVzIGl0cyBpbnRlcm5hbCBmdW5jdGlvbnMgYW5kIGludGVybmFsIGxpYnJhcmllcyB3aGVuIGNvbXBpbGVkIHdpdGggZ2NjCi0gW0hlcnZlIERyb2xvbl0gcmVtb3ZlZCBWUyBDKyA2LjAgcHJvamVjdCBmaWxlcyA6IHRoaXMgSURFIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgYmVjYXVzZSBvZiBPcGVuRVhSCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgVlMgMjAwNSBwcm9qZWN0IGZpbGVzCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgZnVsbCBzdXBwb3J0IGZvciB0aGUgT3BlbkVYUiBmb3JtYXQKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBmdWxsIHN1cHBvcnQgZm9yIHRoZSBKUEVHLTIwMDAgZm9ybWF0CisgW0hlcnZlIERyb2xvbl0gYWRkZWQgRnJlZUltYWdlX1Rtb0ZhdHRhbDAyIHRvbmUgbWFwcGluZyBvcGVyYXRvcgorIFtSeWFuIFJ1YmxleV0gYWRkZWQgc3VwcG9ydCBmb3IgUkdCIHZzIEJHUiByZWdhcmRsZXNzIG9mIGVuZGlhbgorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZyZWVJbWFnZV9NdWx0aWdyaWRQb2lzc29uU29sdmVyCisgW0NhcnN0ZW4gS2xlaW5dIGFkZGVkIEZyZWVJbWFnZV9QcmVNdWx0aXBseVdpdGhBbHBoYQorIFtDYXJzdGVuIEtsZWluXSBhZGRlZCBfX3N0ZGNhbGwgdmVyc2lvbiBvZiBGcmVlSW1hZ2VfT3V0cHV0TWVzc2FnZQorIFtDYXJzdGVuIEtsZWluXSBhZGRlZCBuZXcgcGFsZXR0ZSBhbmQgY29sb3IgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyAoc2VlIGJlbG93KSA6IAogICAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfU2V0VHJhbnNwYXJlbnRJbmRleAogICAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfR2V0VHJhbnNwYXJlbnRJbmRleAogICAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfR2V0QWRqdXN0Q29sb3JzTG9va3VwVGFibGUKICAgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0FkanVzdENvbG9ycwogICAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfQXBwbHlDb2xvck1hcHBpbmcKICAgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX1N3YXBDb2xvcnMKICAgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0FwcGx5UGFsZXR0ZUluZGV4TWFwcGluZwogICAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfU3dhcFBhbGV0dGVJbmRpY2VzCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gVElGRiBwbHVnaW4gd2hlbiByZWFkaW5nIDgtYml0ICsgOC1iaXQgYWxwaGEgaW1hZ2VzCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gVElGRiBwbHVnaW4gd2hlbiByZWFkaW5nIGltYWdlcyB3aXRoIHVuY29tbW9uIGJpdGRlcHRocwoqIFtyb2RyaWdvXSBmaXhlZCBGcmVlSW1hZ2UgZXhjZXB0aW9uIGhhbmRsaW5nIHVuZGVyIGdjYyAoYWRkZWQgLWZleGNlcHRpb25zIHRvIGdjYyBjb21waWxlciBmbGFncykKKiBbTWFydGluIER5cmluZy1BbmRlcnNlbl0gZml4ZWQgR0lGIHBsdWdpbiBjcmFzaGluZyBvbiBzb21lIGNvcnJ1cHRlZCBmaWxlcwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIHdpdGggUkxFIGVuY29kaW5nIGZvciA4LWJpdCBCTVAgaW1hZ2VzCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgR1BTIG1ldGFkYXRhIGJlaW5nIHNraXBwZWQgd2hlbiByZWFkaW5nIG1ldGFkYXRhIGluIEV4aWYgaW1hZ2VzCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgd2hlbiByZWFkaW5nIE9TLzIgQk1QIGltYWdlcyB3aXRoIGEgbmVnYXRpdmUgaGVpZ2h0CiogW1J5YW4gUnVibGV5XSBmaXhlZCBhIGJ1ZyB3aXRoIGxvYWRpbmcgb2YgR0lGcyB3aXRoIGxhcmdlIGFtb3VudHMgb2Ygc29saWQgY29sb3IgYXJlYXMKKiBbUnlhbiBSdWJsZXldIGZpeGVkIE9TIFggY29tcGlsZSBlcnJvciBpbiBCaXRtYXBBY2Nlc3MuY3BwCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gRnJlZUltYWdlX1Bhc3RlIHdoZW4gcGFzdGluZyBub24tc3RhbmRhcmQgaW1hZ2UgdHlwZXMKKiBbSGVydmUgRHJvbG9uXSBzYXZpbmcgMS1iaXQgVElGIHdpdGggdGhlIFRJRkZfQ0NJVFRGQVgzIGZsYWcgaXMgbm93IGNvbXBsaWFudCB3aXRoIHRoZSBUSUZGIENsYXNzIEYgc3BlY2lmaWNhdGlvbgoqIFtDYXJzdGVuIEtsZWluXSBmaXhlZCB0b3Bkb3duIHBhcmFtZXRlciBpbiBGcmVlSW1hZ2VfQ29udmVydEZyb21SYXdCaXRzIGFuZCBGcmVlSW1hZ2VfQ29udmVydFRvUmF3Qml0cyBiZWluZyBoYW5kbGVkIGluIHJldmVyc2UKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyB3aGVuIHJlYWRpbmcgc29tZSBSTEUtNCBlbmNvZGVkIEJNUCBkYXRhCiogW0NhcnN0ZW4gS2xlaW5dIGNvbnZlcnNpb24gZnJvbSAxLWJpdCB0byAzMi1iaXQgbm93IGtlZXAgcG9zc2libHkgcHJlc2VudCB0cmFuc3BhcmVuY3kKCkZlYnJ1YXJ5IDExdGgsIDIwMDcgLSAzLjkuMwohIEZyZWVJbWFnZSBub3cgdXNlcyBsaWJQTkcgMS4yLjE2CiEgW1J5YW4gUnVibGV5L1J5YW4gRGF2aXNdIHJld29ya2VkIHRoZSBNYWNPU1ggbWFrZWZpbGUgaW4gb3JkZXIgdG8gZnVsbHkgc3VwcG9ydCBVbml2ZXJzYWwgQmluYXJ5IGJ1aWxkcyBvZiBGcmVlSW1hZ2UKISBbSGVydmUgRHJvbG9uXSBtYWtlZmlsZXMgYXJlIG5vdyBnZW5lcmF0ZWQgZnJvbSBWUzIwMDMgcHJvamVjdCBmaWxlcyBpbnN0ZWFkIG9mIFZTNiBwcm9qZWN0IGZpbGVzCiEgW0hlcnZlIERyb2xvbl0gY2hhbmdlZCBKUEVHIGxvYWQvc2F2ZSBmbGFnIG9wdGlvbiB2YWx1ZXMKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBzdXBwb3J0IGZvciBSR0JBRiBpbWFnZXMgdG8gRnJlZUltYWdlX0NvbnZlcnRUb1JHQkYKKyBbSGVydmUgRHJvbG9uXSBGcmVlSW1hZ2VfUGFzdGUgbm93IHdvcmtzIHdpdGggYW55IGJpdG1hcCB0eXBlCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgZnVsbCBzdXBwb3J0IGZvciA2NC1iaXQgUkdCQSBpbWFnZXMgdG8gdGhlIFBORyBhbmQgVElGRiBwbHVnaW5zCisgW0phc2NoYSBXZXR6ZWxdIGFkZGVkIEpQRUcgZG93bnNhbXBsaW5nIGZlYXR1cmUgdG8gUGx1Z2luSlBFRzpMb2FkCiogW1Rob21hcyBDaG1pZWxld3NraV0gZml4ZWQgYSBidWcgaW4gRnJlZUltYWdlX0RpdGhlciBhbmQgQmF5ZXIgZGl0aGVyaW5nLCBhZGRlZCBGSURfQkFZRVIxNngxNgoqIFtSYXBoYWVsIEdhcXVlcl0gZ3JlYXRseSBpbXByb3ZlZCB0aGUgc3BlZWQgb2YgdGhlIEdJRiBlbmNvZGVyCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgc2F2aW5nIG9mIG1ldGFkYXRhIGluIHRoZSBQTkcgcGx1Z2luCiogW3JhbXBlbHN0aW5za2luXSBmaXhlZCB0cmFuc3BhcmVuY3kgdGFibGUgdG8gYWxwaGEgY2hhbm5lbCBjb252ZXJzaW9uIGZvciA0LWJpdCBpbWFnZXMgaW4gRnJlZUltYWdlX0NvbnZlcnRUbzMyQml0cwoqIFtTY290dCBTbWl0aF0gYWRkZWQgbWlzc2luZyBJUFRDIHRhZyBuYW1lZCAiQ291bnRyeS9QcmltYXJ5TG9jYXRpb25Db2RlIgoqIFtIZXJ2ZSBEcm9sb25dIGNoYW5nZWQgI2luY2x1ZGUgPHN0ZGludC5oPiBieSAjaW5jbHVkZSA8aW50dHlwZXMuaD4gaW4gRnJlZUltYWdlLmggKG5lZWRlZCBieSBTb2xhcmlzIDkpCiogW1BpZXJyZSBBcm5hdWRdIGZpeGVkIHRoZSB1c2Ugb2YgRnJlZUltYWdlIGluIGxvdyBtZW1vcnkgY29uZGl0aW9uIGJ5IGNoZWNraW5nIHNvbWUgcmV0dXJuZWQgdmFsdWVzIG9mIHRoZSBtYWxsb2MgZnVuY3Rpb24KKiBbUGllcnJlIEFybmF1ZF0gZml4ZWQgVGFnTGliOjpnZXRUYWdGaWVsZE5hbWUgbm90IGJlaW5nIHRocmVhZCBzYWZlCgpPY3RvYmVyIDMwdGgsIDIwMDYgLSAzLjkuMgohIEZyZWVJbWFnZSBub3cgdXNlcyBsaWJUSUZGIDMuOC4yICh3aXRoIHBhdGNoIDIwMDYtMTAtMTMpCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgZnVsbCBzdXBwb3J0IGZvciAxNi1iaXQgZ3JleXNjYWxlIGFuZCA0OC1iaXQgUkdCIHRvIHRoZSBQTk0gcGx1Z2luCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgSVBUQyB3cml0aW5nIHN1cHBvcnQgdG8gSlBFRyAmIFRJRkYgcGx1Z2lucworIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIG5ldyBFeGlmIG1ha2VyIG5vdGUgdGFncworIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZyZWVJbWFnZV9KUEVHQ3JvcAorIFtUaG9yc3RlbiBSYWRkZV0gYWRkZWQgc3VwcG9ydCBmb3IgOC1iaXQgcGFsZXR0aXplZCBiaXRtYXBzIGluIEZyZWVJbWFnZV9Sb3RhdGVDbGFzc2ljCisgW01hdHQgUmljZV0gYWRkZWQgYXV0b21hdGljIGNhbGwgdG8gRnJlZUltYWdlX0luaXRpYWxpc2UgLyBGcmVlSW1hZ2VfRGVJbml0aWFsaXNlIHdoZW4gdXNpbmcgRnJlZUltYWdlIGFzIGEgLnNvCisgW01hcnRpbiBEeXJpbmctQW5kZXJzZW5dIGFkZGVkIEZyZWVJbWFnZV9Mb2FkTXVsdGlCaXRtYXBGcm9tTWVtb3J5IHRvIHRoZSBtdWx0aS1wYWdlIEFQSQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIHN1cHBvcnQgZm9yIHRpbGVkIFRJRkYgaW1hZ2VzCiogW0NhcnN0ZW4gS2xlaW5dIGZpeGVkIGEgYnVnIGluIEZyZWVJbWFnZV9TZXRNZXRhZGF0YSBvY2N1cmluZyB3aGVuIGRlbGV0aW5nIGEgdGFnCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gUE5HIHBsdWdpbiB3aGVuIHJlYWRpbmcgTWFjcm9tZWRpYSAnZmFsc2UnIFBORyBmaWxlcwoqIFtUaG9yc3RlbiBSYWRkZV0gYWRkZWQgcmVzb2x1dGlvbiBzdXBwb3J0IHRvIFBsdWdpblBTRAoqIFtSeWFuIFJ1YmxleV0gZml4ZWQgYSBidWcgaW4gUGx1Z2luR0lGIG9jY3VyaW5nIHdpdGggaW50ZXJsYWNlZCBHSUYKKiBbUnlhbiBSdWJsZXldIGZpeGVkIGEgYnVnIGluIHRoZSBtdWx0aXBhZ2UgY2FjaGUgbWVjaGFuaXNtIChpbnRlcm5hbCBGcmVlSW1hZ2VfRmluZEJsb2NrIGZ1bmN0aW9uKQoqIFtUaG9yc3RlbiBSYWRkZV0gZml4ZWQgYSBzdGFjayBjb3JydXB0aW9uIGluIFRJRkYgcGx1Z2luIG9jY3VyaW5nIHdoZW4gcmVhZGluZyBleGlmIHRhZ3MKKiBbY2hlY2tlcmVkXSBmaXhlZCBhIGJ1ZyBpbiB0aGUgbXVsdGlwYWdlIGNhY2hlIG1lY2hhbmlzbSBjYXVzaW5nIFZTMjAwNSB0byBjcmFzaCBvbiBtdWx0aXBhZ2UgZmlsZXMKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyB3aXRoIHRyYW5zcGFyZW5jeSBzdXBwb3J0IG9mIDEtIGFuZCA0LWJpdCBpbWFnZXMKKiBbUm9hciBGbG9sb10gZml4ZWQgYSBidWcgaW4gUFNEIHBsdWdpbiB3aGVuIHJlYWRpbmcgbm9uIGNvbXByZXNzZWQgUkdCIGltYWdlcyAoYWxwaGEgY2hhbm5lbCBpbml0aWFsaXphdGlvbikKKiBbTmljb2xhcyBIYXRpZXJdIGZpeGVkIGEgYnVnIGluIFBsdWdpbkdJRiB3aGVuIHVzaW5nIHRoZSBHSUZfUExBWUJBQ0sgZmxhZwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIGluIFRJRkYgcGx1Z2luIHdoZW4gc2F2aW5nIDgtYml0IGltYWdlcyB1c2luZyBMWlcgd2l0aCBkaWZmZXJlbmNpYXRpb24KKiBbSGVydmUgRHJvbG9uXSBmaXhlZCA2NC1iaXQgY29tcGlsYXRpb24gaXNzdWUgd2l0aCBMaWJQTkcgYW5kIGFzc2VtYmxlciBjb2RlCgpKdWx5IDE2dGgsIDIwMDYgLSAzLjkuMQoqIFtSeWFuIFJ1YmxleV0gZml4ZWQgYSBidWcgaW4gUGx1Z2luR0lGIHBsdWdpbiBjYXVzaW5nIEZyZWVJbWFnZSB0byBjcmFzaCBvbiBtYWxmb3JtZWQgR0lGIGZpbGVzCgpKdWx5IDZ0aCwgMjAwNiAtIDMuOS4wCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlBORyAxLjIuMTIKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliVElGRiAzLjguMiAod2l0aCBwYXRjaCAyMDA2LTA2LTI0KQohIEZyZWVJbWFnZV9BbGxvY2F0ZS9GcmVlSW1hZ2VfQWxsb2NhdGUgbm93IHNldCB0aGUgcmVzb2x1dGlvbiB0byA3MiBkcGkgaW5zdGVhZCBvZiAwCisgW0hlcnZlIERyb2xvbi9QZXRyIFB5dGVsa2FdIGFkZGVkIGEgcmF3IEZBWCBHMyBmb3JtYXQgbG9hZGVyCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgbW9zdCBpbWFnZSB0eXBlcyB0byBGcmVlSW1hZ2VfUmVzY2FsZQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZyZWVJbWFnZV9NYWtlVGh1bWJuYWlsCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgNjQtYml0IGltYWdlcyB0byBGcmVlSW1hZ2VfQ29udmVydFRvMzJCaXRzCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgRXhpZiB0YWdzIHRvIFRJRiBwbHVnaW4gKHJlYWQgb25seSkKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBGcmVlSW1hZ2VfUmVhZE1lbW9yeQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZyZWVJbWFnZV9Xcml0ZU1lbW9yeQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIG5ldyBFeGlmIG1ha2VyIG5vdGUgdGFncworIFtTaGVybWFuIFdpbGNveF0gYWRkZWQgYSBTR0kgZmlsZSBmb3JtYXQgbG9hZGVyCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3Igc2VwYXJhdGVkIGltYWdlcyB0byBQbHVnaW5USUZGCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgcHJvZ3Jlc3NpdmUtSlBFRyBzYXZpbmcgdG8gUGx1Z2luSlBFRwoqIFtDYXJzdGVuIEtsZWluXSBGcmVlSW1hZ2VfRGl0aGVyIGFuZCBGcmVlSW1hZ2VfVGhyZXNob2xkIG5vdyB3b3JrIHdpdGggcGFsZXR0aXplZCA4LWJpdCBkaWIKKiBbQ2hyaXN0b3BoZSBQZXRpdF0gZml4ZWQgYSBidWcgaW4gRnJlZUltYWdlX0dldEZJRkZyb21GaWxlbmFtZVUgb2NjdXJpbmcgd2l0aCBmaWxlcyB3aXRob3V0IGV4dGVuc2lvbgoqIFtMZWlnaCBCcmFzaW5ndG9uXSBmaXhlZCBhIGJ1ZyBpbiBQbHVnaW5HSUYgY2F1c2luZyBGcmVlSW1hZ2Ugbm90IHdvcmtpbmcgb24gV2luLzk4L01FCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gUGx1Z2luVElGRiB3aXRoIHdyaXRpbmcgb2YgSlBFRy1pbi1USUZGIGZpbGVzCiogW0pvamFraW0gU3RhaGxdIGZpeGVkIGEgYnVnIG9jY3VyaW5nIHdpdGggNC1iaXQgUENYIGZpbGVzCiogW1NhbmRvciBTemFsYWNzaV0gZml4ZWQgYSBidWcgaW4gRnJlZUltYWdlX1NldEJhY2tncm91bmRDb2xvciAoYmtnbmQgY2xlYXJpbmcpCiogW1BldHIgUHl0ZWxrYV0gZml4ZWQgUGx1Z2luVElGRjo6X3RpZmZTaXplUHJvYyBmYWlsaW5nIG9uIHNvbWUgaW1hZ2VzCiogW1NoZXJtYW4gV2lsY294XSBmaXhlZCBhIGJ1ZyBpbiBERFMgcGx1Z2luIHdoZW4gbG9hZGluZyBpbWFnZXMgd2hvc2Ugc2l6ZSBpcyBub3QgYSBtdWx0aXBsZSBvZiA0CiogW1NoZXJtYW4gV2lsY294XSBmaXhlZCBhIG1lbW9yeSBsZWFrIGluIFBsdWdpbkREUzo6TG9hZERYVF9IZWxwZXIKKiBbU2hlcm1hbiBXaWxjb3hdIGZpeGVkIEREUyBwbHVnaW4gYmFkIGJlaGF2aW9yIHdpdGggaW52YWxpZCBERFMgZmlsZXMgKHN1Y2ggYXMgZmlsZXMgd2l0aCB6ZXJvIGxlbmd0aCkKKiBbRmxvcmlzIHZhbiBkZW4gQmVyZ10gZml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTXVsdGlQYWdlIGNhY2hlIG1lY2hhbmlzbQoqIFtIZXJ2ZSBEcm9sb25dIHJlcGxhY2VkIFdJTjMyICNkZWZpbmUgYnkgX1dJTjMyICNkZWZpbmUgYXMgdGhpcyBpcyBuZWVkZWQgYnkgVlMyMDA1CiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBWUzIwMDUgZXJyb3IgaW4gRnJlZUltYWdlX0RlbGV0ZVBhZ2UKKiBbUGV0ciBTdXBpbmFdIGZpeGVkIGEgcG93KGxvbmcsbG9uZykgZnVuY3Rpb24gbm90IGJlaW5nIHN0YW5kYXJkIEFOU0kgQy9DKysKKiBbUGV0ciBTdXBpbmFdIGZpeGVkIEZyZWVJbWFnZV9GaW5kQmxvY2sgZnVuY3Rpb24gbm90IGJlaW5nIHN0YW5kYXJkIEFOU0kgQy9DKysKKiBbT2xhZiBTdG95a2VdIGFkZGVkIHN1cHBvcnQgZm9yIDY0LWJpdCBMaW51eCBPUwoqIFtDcmFpZyBTdGFya10gZml4ZWQgRnJlZUltYWdlIHN1cHBvcnQgb24gSW50ZWwgYmFzZWQgTWFjIE9TCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgUGx1Z2luVElGRiBmYWlsaW5nIG9uIGJhZCBmYXggdGlmZiBpbWFnZXMgKGJhZCBpbWFnZXMgYXJlIG5vdyBsb2FkZWQgJ2FzIGlzJykKKiBbWmFjayBTaW1wc29uXSBmaXhlZCBhIGJ1ZyBvY2N1cmluZyBpbiByYXJlIHNpdHVhdGlvbnMgd2l0aCBGcmVlSW1hZ2VfQWxpZ25lZF9NYWxsb2MKClNlcHRlbWJlciA1LCAyMDA1IC0gMy44LjAKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliVElGRiAzLjcuMwohIEZyZWVJbWFnZSBub3cgdXNlcyBaTGliIDEuMi4zCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgNDgtYml0IGltYWdlcyB0byBGcmVlSW1hZ2VfQ29udmVydFRvMjRCaXRzCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgRnJlZUltYWdlX0NvbnZlcnRUb0dyZXlzY2FsZQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIHN1cHBvcnQgZm9yIDE2LWJpdCBncmV5c2NhbGUgaW1hZ2VzIHRvIEZyZWVJbWFnZV9Db252ZXJ0VG84Qml0cworIFtQZXRyIFB5dGVsa2FdIGFkZGVkIFVOSUNPREUgZnVuY3Rpb25zIChzZWUgYmVsb3cpIAogICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9Mb2FkVQogICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9TYXZlVQogICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9HZXRGSUZGcm9tRmlsZW5hbWVVCiAgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0dldEZpbGVUeXBlVQorIFtIZXJ2ZSBEcm9sb25dIEZyZWVJbWFnZV9Db3B5IG5vdyB3b3JrcyB3aXRoIGFueSBiaXRtYXAgdHlwZQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIHN1cHBvcnQgZm9yIDEtYml0IGltYWdlcyB0byBGcmVlSW1hZ2VfUGFzdGUKKiBbUnlhbiBSdWJsZXldIGZpeGVkIFBsdWdpbkdJRiBmYWlsaW5nIHRvIGxpbmsgb24gc29tZSBicm9rZW4gZ2NjIHZlcnNpb25zCiogW0thcmwtSGVpbnogQnVzc2lhbl0gZml4ZWQgYSBidWcgaW4gTG9va3VwWDExQ29sb3IvTG9va3VwU1ZHQ29sb3Igd2l0aCBoYW5kbGluZyBvZiBncmV5IGNvbG9yIG5hbWVzCiogW0hlcnZlIERyb2xvbl0gRnJlZUltYWdlX0RpdGhlciBub3cgdXNlcyBGcmVlSW1hZ2VfQ29udmVydFRvR3JleXNjYWxlIGFuZCBoYW5kbGVzIDQvOC1iaXQgcGFsbGV0aXplZCBpbWFnZXMKKiBbSGVydmUgRHJvbG9uXSBGcmVlSW1hZ2VfVGhyZXNob2xkIG5vdyB1c2VzIEZyZWVJbWFnZV9Db252ZXJ0VG9HcmV5c2NhbGUgYW5kIGhhbmRsZXMgNC84LWJpdCBwYWxsZXRpemVkIGltYWdlcwoqIFtDcmFpZyBIb2NrZW5iZXJyeV0gZml4ZWQgUGx1Z2luR0lGOjpTYXZlIHN3YXBwaW5nIHRoZSBieXRlIG9yZGVyIGZvciB0aGUgaGVpZ2h0IG9uIGJpZyBlbmRpYW4gbWFjaGluZXMgKGUuZy4gUFBDIG9uIE1hYyBPUyBYLikKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyBpbiBKUEVHIHBsdWdpbiB3aGVuIHJlYWRpbmcgRXhpZiBtYWtlciBub3RlcyBmcm9tIGltYWdlcyBwcm9kdWNlZCBieSBOaWtvbiBFZGl0b3IKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyBpbiBCTVAgcGx1Z2luIHdoZW4gcmVhZGluZyBzb21lIG1hbGZvcm1lZCBSTEU4IGJtcAoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIGluIFJBUyBwbHVnaW4gd2hlbiBsb2FkaW5nIDgtYml0IHBhbGV0dGl6ZWQgaW1hZ2VzIHdpdGggbGVzcyB0aGFuIDI1NiBjb2xvcnMKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyBpbiBGcmVlSW1hZ2VfUmVzY2FsZSB3aXRoIDE2LSw0OC0sNjQtYml0IGltYWdlcwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIGluIHRoZSBJQ0MgcHJvZmlsZXMgQVBJIHdoZW4gbG9hZGluZyBwcm9maWxlLWxlc3MgQ01ZSyBUSUZGCiogW0hlcnZlIERyb2xvbl0gNC1iaXQgUE5HIGFyZSBub3cgbG9hZGVkIGFzIDQtYml0IGFuZCBubyBsb25nZXIgY29udmVydGVkIHRvIDgtYml0CiogW0dyZWcgTmddIGZpeGVkIGEgYnVnIGluIEZyZWVJbWFnZV9Db252ZXJ0VG9SR0JGIChGSVRfQklUTUFQIC0+IEZJVF9SR0JGIGNvbnZlcnNpb24pCgpNYXkgNywgMjAwNSAtIDMuNy4wCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlRJRkYgMy43LjIKISBbUnlhbiBSdWJsZXldIGltcHJvdmVkIEZyZWVJbWFnZV9PcGVuTXVsdGlCaXRtYXAKKyBbRGV0bGV2IFZlbmR0XSBhZGRlZCBGcmVlSW1hZ2VfWkxpYkdVbnppcAorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIG5ldyBpbWFnZSBkYXRhIHR5cGVzIEZJVF9SR0IxNiwgRklUX1JHQkExNiwgRklUX1JHQkYsIEZJVF9SR0JBRgorIFtIZXJ2ZSBEcm9sb25dIEZyZWVJbWFnZV9GbGlwSG9yaXpvbnRhbCAmIEZyZWVJbWFnZV9GbGlwVmVydGljYWwgbm93IHdvcmsgd2l0aCBhbnkgYml0bWFwIHR5cGUKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBjb252ZXJzaW9ucyB0byBmbG9hdCBhbmQgZG91YmxlIGluIEZyZWVJbWFnZV9Db252ZXJ0VG9UeXBlCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgRnJlZUltYWdlX0NvbnZlcnRUb1JHQkYKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBzdXBwb3J0IGZvciAxNi0sIDQ4LSBhbmQgOTYtYml0IGltYWdlcyB0byBGcmVlSW1hZ2VfUmVzY2FsZQorIFtSeWFuIFJ1YmxleV0gYWRkZWQgRnJlZUltYWdlX0NvbG9yUXVhbnRpemVFeAorIFtSeWFuIFJ1YmxleV0gYWRkZWQgRklNRF9BTklNQVRJT04gYW5kIEZJRFRfUEFMRVRURQorIFtSeWFuIFJ1YmxleV0gYWRkZWQgYnJhbmQgbmV3IFBsdWdpbkdJRiB3aXRoIGZ1bGwgYW5pbWF0aW9uIG11bHRpcGFnZSBhbmQgbWV0YWRhdGEgc3VwcG9ydAorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIHN1cHBvcnQgZm9yIEZJQ19NSU5JU1dISVRFIDgtYml0IGltYWdlcyB0byBGcmVlSW1hZ2VfUmVzY2FsZQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEhEUiAoSGlnaCBEeW5hbWljIFJhbmdlKSBmb3JtYXQgKGxvYWRlciAmIHdyaXRlcikKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBzdXBwb3J0IGZvciA0OC1iaXQgaW1hZ2VzIGluIFRJRkYgcGx1Z2luCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgNDgtYml0IGltYWdlcyBpbiBQTkcgcGx1Z2luCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgdG9uZSBtYXBwaW5nIG9wZXJhdG9ycyAoc2VlIGJlbG93KQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9Ub25lTWFwcGluZworICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9UbW9EcmFnbzAzCisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX1Rtb1JlaW5oYXJkMDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgW1BldHIgUHl0ZWxrYV0gYWRkZWQgRnJlZUltYWdlX0pQRUdUcmFuc2Zvcm0KKiBbSGVydmUgRHJvbG9uXSBhbGxvd2VkIGxvYWRpbmcgb2YgY29ycnVwdGVkIEpQRUcgd2l0aCBhIHByZW1hdHVyZSBlbmQgb2YgZmlsZQoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgbWVtb3J5IGxlYWsgd2l0aCBsb2FkaW5nIG9mIGV4aWYgSlBFRyBpbWFnZXMKKiBbRGV0bGV2IFZlbmR0XSBjaGFuZ2VkIHNvbWUgJ3BvaW50ZXItdG8taW50JyBjYXN0cyB0byAncG9pbnRlci10by1sb25nJyBmb3IgNjRiaXQgbWFjaGluZXMKKiBbUnlhbiBSdWJsZXldIGZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIG11bHRpcGFnZSBBUEkKKiBbUnlhbiBSdWJsZXldIHVwZGF0ZWQgVkI2IHdyYXBwZXIgZ2VuZXJhdGlvbiBmb3IgbmV3IGZ1bmN0aW9ucwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGluY29ycmVjdCBiZWhhdmlvciB3aGVuIHJlYWRpbmcgSlBFRyBjb21tZW50cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGluY29ycmVjdCBiZWhhdmlvciB3aGVuIHJlYWRpbmcgSlBFRyBJQ0MgcHJvZmlsZXMgd2l0aCBhIHNpemUgZ3JlYXRlciB0aGFuIDY0IEtCCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gVElGRiBwbHVnaW4gd2hlbiBsb2FkaW5nIG1hbGZvcm1lZCBtdWx0aXBhZ2UgVElGRgoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIFBsdWdpblRJRkYgbm90IGJlaW5nIHRocmVhZCBzYWZlCgpGZWJydWFyeSAyMCwgMjAwNSAtIDMuNi4xCiogW1J5YW4gUnVibGV5XSBmaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBtZXRhZGF0YSBBUEkKKiBbbHVlZGldIGltcHJvdmVkIHRoZSByb2J1c3RuZXNzIG9mIEZJQklUTUFQIGFsbG9jYXRpb25zCgpGZWJydWFyeSAxMywgMjAwNSAtIDMuNi4wCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYk1ORyAxLjAuOQohIFtIZXJ2ZSBEcm9sb25dIGltcHJvdmVkIHRoZSBzcGVlZCBvZiBGcmVlSW1hZ2VfUmVzY2FsZQohIFtIZXJ2ZSBEcm9sb25dIGltcHJvdmVkIEZyZWVJbWFnZV9Sb3RhdGVDbGFzc2ljIChtb3JlIGNvbXBhY3QgY29kZSwgYSBsaXR0bGUgZmFzdGVyKQohIFtIZXJ2ZSBEcm9sb25dIGltcHJvdmVkIHRoZSBtZXRhZGF0YSBBUEkgdXNpbmcgdGFnIGFjY2Vzc29ycworIFtEZXRsZXYgVmVuZHRdIGFkZGVkIExaVyBzdXBwb3J0IHRvIFBsdWdpbkdJRjpTYXZlCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgVlMuTmV0IDIwMDMgcHJvamVjdCBmaWxlcworIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIFZFUlNJT05JTkZPIHJlc291cmNlIHRvIHRoZSBETEwKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBzdXBwb3J0IGZvciBDTVlLIEpQRUcgb24gbG9hZGluZworIFtQZXRyIFN1cGluYV0gYWRkZWQgMTYtYnl0ZXMgYWxpZ25tZW50IHRvIEZJQklUTUFQIHBhbGV0dGUgYW5kIHBpeGVscyBzdGFydGluZyBhZGRyZXNzCisgW1BldHIgU3VwaW5hXSBhZGRlZCBzdXBwb3J0IGZvciBNTVgvU1NFMiBjb2RlIGluIExpYkpQRUcgKGJhc2VkIG9uIE1vemlsbGEvRmlyZWZveCBjb2RlKQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIFRJRkZfSlBFRyBjb21wcmVzc2lvbiBmbGFnIHRvIHRoZSBUSUZGIHBsdWdpbgorIFtEZXRsZXYgVmVuZHRdIGFkZGVkIEZyZWVJbWFnZV9aTGliR1ppcAorIFtEZXRsZXYgVmVuZHRdIGFkZGVkIEZyZWVJbWFnZV9aTGliQ1JDMzIKKiBbRGV0bGV2IFZlbmR0XSBmaXhlZCBQbHVnaW5QTkcgbm90IGJlaW5nIHRocmVhZCBzYWZlCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgY29tcGlsZXIgd2FybmluZyBDNDAxOCBvY2N1cmluZyB3aXRoIFZTLk5ldCAyMDAzCgpEZWNlbWJlciAyOSwgMjAwNCAtIDMuNS4zCiEgRnJlZUltYWdlIG5vdyB1c2VzIFpMaWIgMS4yLjIKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliUE5HIDEuMi44CiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlRJRkYgMy43LjEKISBbSGVydmUgRHJvbG9uXSBpbXByb3ZlZCBGcmVlSW1hZ2VfUm90YXRlQ2xhc3NpYwohIFtEZXRsZXYgVmVuZHRdIGltcHJvdmVkIEZyZWVJbWFnZV9SZXNjYWxlIChtb3JlIGNvbXBhY3QgY29kZSwgcHJlc2VydmluZyA4LWJwcCBjb2xvcnMpCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgdHJhbnNwYXJlbmN5IHNhdmluZyBpbiBJQ08gcGx1Z2luCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgMS1iaXQgaW1hZ2VzIHRvIEZyZWVJbWFnZV9Sb3RhdGVDbGFzc2ljCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgRnJlZUltYWdlX1NldERvdHNQZXJNZXRlclggYW5kIEZyZWVJbWFnZV9TZXREb3RzUGVyTWV0ZXJZCiogW05hbiBGZW5nXSBmaXhlZCBtZW1vcnkgbGVhayBpbiBGcmVlSW1hZ2VfRGVsZXRlVGFnIChpbnRlcm5hbCBzdHVmZikKKiBbTmlnZWwgU3Rld2FydF0gYWRkZWQgY29uZGl0aW9uYWwgI3ByYWdtYSB3aXRoICNpZmRlZiBfTVNDX1ZFUiAvICNlbmRpZgoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIHRoZSAnNjU1MzYgbGluZXMnIGxpbWl0IG9uIGxvYWRpbmcgaW4gUE5NIHBsdWdpbgoKTm92ZW1iZXIgMjd0aCwgMjAwNCAtIDMuNS4yCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBzZWNvbmQgYnVnIGluIEZyZWVJbWFnZV9DbG9uZSBmdW5jdGlvbgoKTm92ZW1iZXIgMjZ0aCwgMjAwNCAtIDMuNS4xCisgW1JpbGV5IE1jTmlmZl0gYWRkZWQgRnJlZUltYWdlX0NvbnZlcnRUbzRCaXRzCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWZmZXIgb3ZlcnJ1biB3aXRoIHNvbWUgSUxCTSBpbWFnZXMKKiBbUmlsZXkgTWNOaWZmXSBmaXhlZCBhIHBvdGVudGlhbCBwcm9ibGVtIHdoZW4gcmVhZGluZyBUSUZGIHJlc29sdXRpb24gaW5mbwoqIFtEaW1pdGFyIEF0YW5hc292XSBmaXhlZCBhIGJ1ZyBpbiBGcmVlSW1hZ2VfQ2xvbmUgZnVuY3Rpb24KKiBbRGltaXRhciBBdGFuYXNvdl0gZml4ZWQgc2V2ZXJhbCBidWdzIGluIFRJRkYgcGx1Z2luCgpOb3ZlbWJlciAxc3QsIDIwMDQgLSAzLjUuMAohIEZyZWVJbWFnZSBub3cgdXNlcyBsaWJQTkcgMS4yLjcKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliVElGRiAzLjcuMAohIEZyZWVJbWFnZSBub3cgdXNlcyBsaWJNTkcgMS4wLjgKISBbSGVydmUgRHJvbG9uXSBpbXByb3ZlZCBUSUZGIExaVyBjb21wcmVzc2lvbiB1c2luZyBhIHByZWRpY3RvcgohIFtEZXRsZXYgVmVuZHRdIEZyZWVJbWFnZXNQbHVzOiBjb3JyZWN0ZWQgcmVmZXJlbmNlcyB0byBGcmVlSW1hZ2UuaCBhbmQgRnJlZUltYWdlLmxpYgorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcvc2F2aW5nIG9mIDgtYml0IHRyYW5zcGFyZW50IFRJRkYKKyBbUmlsZXkgTWNOaWZmXSBhZGRlZCBzdXBwb3J0IGZvciA0LWJpdCBkaWIgaW4gRnJlZUltYWdlX1Bhc3RlCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgbWVtb3J5IElPIHN0cmVhbXMgKHNlZSBiZWxvdykKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfT3Blbk1lbW9yeQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9DbG9zZU1lbW9yeQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9Mb2FkRnJvbU1lbW9yeQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9TYXZlVG9NZW1vcnkKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfVGVsbE1lbW9yeQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9TZWVrTWVtb3J5CisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0FjcXVpcmVNZW1vcnkKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfR2V0RmlsZVR5cGVGcm9tTWVtb3J5CisgW1BldHIgUHl0ZWxrYV0gYWRkZWQgRnJlZUltYWdlX0dldEZJRk1pbWVUeXBlIHRvIHRoZSBwbHVnaW5zIGZ1bmN0aW9uIGxpc3QKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBJQ0MgcHJvZmlsZSBzdXBwb3J0IHRvIEpQRUcgcGx1Z2luCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgbWV0YWRhdGEgKHNlZSBiZWxvdykKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfU2V0TWV0YWRhdGEKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfR2V0TWV0YWRhdGEKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfR2V0TWV0YWRhdGFDb3VudAorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9UYWdUb1N0cmluZworICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9GaW5kRmlyc3RNZXRhZGF0YQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9GaW5kTmV4dE1ldGFkYXRhCisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0ZpbmRDbG9zZU1ldGFkYXRhCiogW1JpbGV5IE1jTmlmZl0gZml4ZWQgYSBidWcgd2l0aCBGcmVlSW1hZ2VfU2V0UGl4ZWxJbmRleCBhbmQgNC1iaXQgaW1hZ2VzCiogW1BldHIgUHl0ZWxrYV0gZml4ZWQgcmV0dXJuZWQgdmFsdWUgaW4gRnJlZUltYWdlX0Nsb3NlTXVsdGlCaXRtYXAKKiBbUGV0ciBQeXRlbGthXSBmaXhlZCBpbmRleCBvZiBuZXcgcGFnZSBpbiBGcmVlSW1hZ2VfSW5zZXJ0UGFnZQoqIFtBYXJvbiBTaHVtYXRlXSBmaXhlZCBhIG1pbm9yIGJ1ZyBpbiBQTkcgcGx1Z2luCiogW0Fhcm9uIFNodW1hdGVdIGZpeGVkIGEgYnVnIGluIElGRiBwbHVnaW4gKG9kZC1sZW5ndGggY2h1bmtzKQoqIFtSdXBlcnQgSGV3aXR0XSBmaXhlZCBGcmVlSW1hZ2Ugbm90IGNvbXBpbGluZyBvbiBOYXRpb25hbCBJbnN0cnVtZW50cyBDdmkgQ2NvbXBpbGVyCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gSUZGIHBsdWdpbiAoSUxCTSBkYXRhKQoqIFtGcmVkIEhhcmp1XSBhZGRlZCBhIE1ha2VmaWxlIGZvciBTb2xhcmlzIDkKKiBbUm9kZHkgUHJhdHRdIGZpeGVkIEZyZWVJbWFnZSBub3QgbGlua2luZyB1bmRlciBCb3JsYW5kIEMrKyBCdWlsZGVyCiogW1ZhZGltIEFsZXhhbmRyb3ZdIGZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIG11bHRpcGFnZSBBUEkKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyB3aXRoIEREUyBwbHVnaW4gYmVoYXZpb3VyIG9uIEJpZyBFbmRpYW4gT1MKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyB3aXRoIGNvbnZlcnNpb24gb2YgSlBFRyByZXNvbHV0aW9uIGluZm8gb24gc2F2aW5nCgpKdWx5IDh0aCwgMjAwNCAtIDMuNC4wCiEgW0ppbSBLZWlyXSBpbXByb3ZlZCBGcmVlSW1hZ2VfRmxpcFZlcnRpY2FsIGZ1bmN0aW9uCiEgW0hlcnZlIERyb2xvbl0gTFpXIGNvbXByZXNzaW9uIGlzIG5vdyBlbmFibGVkIGluIEZyZWVJbWFnZQorIFtLYXJsLUhlaW56IEJ1c3NpYW5dIGFkZGVkIGNvbnN0YW50cyB0byBGcmVlSW1hZ2UuaCB0byBnZXQgYXQgY29tcGlsZSB0aW1lIHRoZSBsaWJyYXJ5IHZlcnNpb24KKyBbS2FybC1IZWlueiBCdXNzaWFuXSBhZGRlZCBjb2xvciBsb29rdXAgZnVuY3Rpb25zIGZvciBYMTEgYW5kIFNWRworIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIFRJRkYgdGFncyBUSUZGX0NDSVRURkFYMywgVElGRl9DQ0lUVEZBWDQgYW5kIFRJRkZfTFpXCisgW0RldGxldiBWZW5kdF0gYWRkZWQgc3VwcG9ydCBmb3IgQ01ZSyBUSUZGIGZpbGVzIHdpdGggYWxwaGEgY2hhbm5lbAorIFtEZXRsZXYgVmVuZHRdIGFkZGVkIChyZS1pbnRyb2R1Y3Rpb24gb2YpIFBsdWdpbkdJRgoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIHdpdGggbG9hZGluZyBvZiBGQVggVElGRiBpbWFnZXMgKGludHJvZHVjZWQgd2l0aCBMaWJUSUZGIDMuNi4xKQoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIGluIEZsb3lkLVN0ZWluYmVyZyBkaXRoZXJpbmcgYWxnb3JpdGhtCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gVGFyZ2EgcGx1Z2luIHNhdmUgZnVuY3Rpb24KKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyBpbiBGcmVlSW1hZ2VfQWRqdXN0Q3VydmUgZnVuY3Rpb24KKiBbUnlhbiBSdWJsZXldIGZpeGVkIGEgYnVnIHdpdGggRnJlZUltYWdlX1Jlc2NhbGUncyBmaWx0ZXJzIGFjY3VyYWN5CiogW1J5YW4gUnVibGV5XSBmaXhlZCBhIGJ1ZyBpbiBOTiBxdWFudGl6ZXIKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyB3aXRoIFRJRkYgZmlsZXMgY29udGFpbmluZyBhZGRpdGlvbmFsIFBob3Rvc2hvcCBhbHBoYSBjaGFubmVscwoqIFtKYW1lcyBSb3NzZmVsZF0gZml4ZWQgYSBtZW1vcnkgbGVhayB3aXRoIHNvbWUgUFNEIGltYWdlcwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIHdpdGggc2F2aW5nIG9mIDMyLWJpdCBub24gdHJhbnNwYXJlbnQgUE5HIGltYWdlcwoqIFtBbGV4YW5kciBaYW1hcmFldl0gZml4ZWQgRnJlZUltYWdlIG5vdCBjb21waWxpbmcgd2l0aCBtaW5ndzMyCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgRnJlZUltYWdlIG5vdCBjb21waWxpbmcgd2l0aCBWQy5ORVQgKHBvdyBmdW5jdGlvbiBuZWVkcyBjYXN0cykKCk1heSAyLCAyMDA0IC0gMy4zLjAKISBbUnlhbiBSdWJsZXldIEZyZWVJbWFnZSBoYXMgYmVlbiBwb3J0ZWQgdG8gTWFjT1NYIGFuZCBzaG91bGQgYWxzbyB3b3JrIG9uIG90aGVyIGJpZyBlbmRpYW4gcHJvY2Vzc29ycworIFtSeWFuIFJ1YmxleV0gcmV3cm90ZSBYUE0gcGx1Z2luIChiZXR0ZXIgbG9hZCBzdXBwb3J0KSBhbmQgYWRkZWQgc2F2ZSBzdXBwb3J0CisgW1J5YW4gUnVibGV5XSBhZGRlZCBJQ09fTUFLRUFMUEhBIGZsYWcgdG8gSUNPIHBsdWdpbgorIFtSeWFuIFJ1YmxleV0gU2V0L0dldFBpeGVsQ29sb3Igbm93IHdvcmtzIHdpdGggMTYtYml0IHBpeGVscyAoNTU1IG9yIDU2NSkKKyBbSGVydmUgRHJvbG9uXSBQTkcgcGx1Z2luIG5vdyBzdXBwb3J0cyBsb2FkaW5nIGFuZCBzYXZpbmcgb2YgdW5zaWduZWQgMTYtYml0IGdyZXlzY2FsZSBpbWFnZXMKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyB3aXRoIGxvYWRpbmcgb2YgOC1iaXQgYW5kIDE2LWJpdCBQTkcgd2l0aCBhIDgtYml0IGFscGhhIGNoYW5uZWwKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyBpbiBOTiBxdWFudGl6ZXIgYWxnb3JpdGhtIHdpdGggaGFuZGxpbmcgb2YgNC1ieXRlIGJvdW5kYXJ5IGFsaWdubWVudC4KKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyBpbiBQbHVnaW5JRkYgVmFsaWRhdGUgZnVuY3Rpb24KKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIG1pbm9yIGRlc2lnbiBpc3N1ZSBpbiBGcmVlSW1hZ2VfR2V0RklGRnJvbUZvcm1hdAoqIFtCcmFkIFNjaGlja10gZml4ZWQgc29tZSBjb21waWxlciB3YXJuaW5ncyB3aXRoIFZDKysgNy4xCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgd2l0aCBzYXZpbmcgb2YgOC1iaXQgcGFsZXR0aXplZCBpbWFnZXMgdG8gMjQtYml0IEpQRUcgKGNoYW5uZWwgaW52ZXJzaW9uKQoKTWFyY2ggMTYsIDIwMDQgLSAzLjIuMQohIFtWb2xrZXIgR+RydG5lcl0gaW1wcm92ZWQgdGhlIEREUyBwbHVnaW4KISBbSGVydmUgRHJvbG9uXSBGcmVlSW1hZ2VfUmVzY2FsZSBub3cgd29ya3Mgb24gOC0sIDI0LSBhbmQgMzItYml0IGltYWdlcwohIFtIZXJ2ZSBEcm9sb25dIEZyZWVJbWFnZV9Db3B5IG5vdyB3b3JrcyBvbiAxLSwgNC0sIDgtLCAxNi0sIDI0LSBhbmQgMzItYml0IGltYWdlcwoqIFtGbG9yaXMgdmFuIGRlbiBCZXJnXSBmaXhlZCBhIGJ1ZyBpbiB0aGUgTXVsdGlQYWdlIGNhY2hlIG1lY2hhbmlzbQoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIHdpdGggbG9hZGluZy9zYXZpbmcgb2YgOC1iaXQgdHJhbnNwYXJlbnQgdGdhIGltYWdlcwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIHdpdGggbG9hZGluZyBvZiAxLWJpdCBUSUZGIChpbnRyb2R1Y2VkIHdpdGggTGliVElGRiAzLjYuMSkKCkZlYnJ1YXJ5IDE4LCAyMDA0IC0gMy4yLjAKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliVElGRiAzLjYuMQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZyZWVJbWFnZV9IYXNCYWNrZ3JvdW5kQ29sb3IKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBGcmVlSW1hZ2VfR2V0QmFja2dyb3VuZENvbG9yCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgRnJlZUltYWdlX1NldEJhY2tncm91bmRDb2xvcgorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZyZWVJbWFnZV9Db21wb3NpdGUKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBJQ0MgcHJvZmlsZSBzdXBwb3J0IHRvIFBORyBwbHVnaW4KKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBiYWNrZ3JvdW5kIGNvbG9yIHN1cHBvcnQgdG8gUE5HIHBsdWdpbgorIFtWb2xrZXIgR+RydG5lcl0gYWRkZWQgc3VwcG9ydCBmb3IgRERTIGZvcm1hdCAobG9hZGVyKQoqIFtTdGV2ZSBKb2huc29uXSBpbXByb3ZlZCBGcmVlSW1hZ2VfT3Blbk11bHRpQml0bWFwL0ZyZWVJbWFnZV9DbG9zZU11bHRpQml0bWFwCiogW1N0ZXZlIEpvaG5zb25dIGZpeGVkIGEgYnVnIGluIEZyZWVJbWFnZV9JbnNlcnRQYWdlCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgd2l0aCBKUEVHIGNvbXByZXNzZWQgVElGRiAocmVkL2JsdWUgc3dhcHBpbmcpCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gUGx1Z2luVGFyZ2Egd2hlcmUgOC1iaXQgaW1hZ2VzIHdlcmUgc2F2ZWQgaW5jb3JyZWN0bHkKCkphbnVhcnkgMjYsIDIwMDQgLSAzLjEuMAohIEZyZWVJbWFnZSBub3cgdXNlcyBaTGliIDEuMi4xCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgc3VwcG9ydCBmb3IgaW50ZWdlciwgcmVhbCBhbmQgY29tcGxleCBpbWFnZSB0eXBlcyAoc2VlIGJlbG93KQorICAgICAgICAgICAgICAgIGFkZGVkIEZSRUVfSU1BR0VfVFlQRSBlbnVtCisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0FsbG9jYXRlVAorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9HZXRJbWFnZVR5cGUKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfRklGU3VwcG9ydHNFeHBvcnRUeXBlCisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0NvbnZlcnRUb1N0YW5kYXJkVHlwZQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9Db252ZXJ0VG9UeXBlCisgICAgICAgICAgICAgICAgYWRkZWQgbG9hZC9zYXZlIHN1cHBvcnQgb2YgYWxsIGltYWdlIHR5cGVzIHRvIFRJRkYgcGx1Z2luCisgW1BldGVyIExlbW1lbnNdIGFkZGVkIGEgVmFsaWRhdGUgZnVuY3Rpb24gdG8gVEFSR0EgcGx1Z2luCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgRnJlZUltYWdlX0dldFBpeGVsSW5kZXggLyBGcmVlSW1hZ2VfU2V0UGl4ZWxJbmRleAorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZyZWVJbWFnZV9HZXRQaXhlbENvbG9yIC8gRnJlZUltYWdlX1NldFBpeGVsQ29sb3IKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBGcmVlSW1hZ2VfR2V0Q29tcGxleENoYW5uZWwgLyBGcmVlSW1hZ2VfU2V0Q29tcGxleENoYW5uZWwKKiBbU2VyZ2UgSXZhbmNoZW5rb10gVElGRl9ERUZMQVRFIGNvbXByZXNzaW9uIGlzIG5vdyBlbmFibGVkIGluIFRJRkYgcGx1Z2luCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gTmV1UXVhbnQgY29sb3IgcmVkdWN0aW9uIGFsZ29yaXRobSAKCk5vdmVtYmVyIDE2LCAyMDAzIC0gMy4wLjQKKiBbVG9iaWFzIFBlcnNzb25dIGZpeGVkIEZyZWVJbWFnZV9HZXRDaGFubmVsIG5vdCB3b3JraW5nIHdpdGggRklDQ19BTFBIQSBjaGFubmVsCiogW0RldGxldiBWZW5kdF0gZml4ZWQgYSBtaW5vciBidWcgd2l0aCBQTkcgcGx1Z2luIGFuZCBQTkdfSUdOT1JFR0FNTUEgZmxhZwoqIFtEZXRsZXYgVmVuZHRdIGZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gUE5HIHBsdWdpbiBzYXZlIHJvdXRpbmUKKiBbRGV0bGV2IFZlbmR0XSBmaXhlZCBKUEVHIHZhbGlkYXRpb24gcHJvYmxlbSB3aXRoIC5qcGUgZmlsZXMKKiBbUnlhbiBSdWJsZXldIGFkZGVkIFNvdXJjZS9MaWJUSUZGL3RpZl9leHRlbnNpb24uYyB0byBMaWJUSUZGIChuZWVkZWQgZm9yIE1hY09TWCkKKiBbSGVydmUgRHJvbG9uXSBpbXByb3ZlZCBlcnJvciBoYW5kbGluZyBpbiBUSUZGIHBsdWdpbgorIFtLYXJsLUhlaW56IEJ1c3NpYW5dIGFkZGVkIEZyZWVJbWFnZV9Jc0xpdHRsZUVuZGlhbgorIFtLYXJsLUhlaW56IEJ1c3NpYW5dIGFkZGVkIEpQRUcgc2F2ZSBzdXBwb3J0IGZvciA4LWJpdCBtaW5pc3doaXRlIGJpdG1hcHMgKHRyYW5zcGFyZW50IGNvbnZlcnNpb24gdG8gbWluaXNibGFjaykKKyBbS2FybC1IZWlueiBCdXNzaWFuXSBGcmVlSW1hZ2VfR2V0Q29sb3JUeXBlIG5vdyByZWNvZ25pemVzIDgtYml0IEZJQ19NSU5JU1dISVRFIGltYWdlcwohIFtIZXJ2ZSBEcm9sb25dIEZyZWVJbWFnZV9SZXNjYWxlIG5vdyBzdXBwb3J0cyByZXNjYWxpbmcgb2YgMzItYml0IGltYWdlcyB3aXRoIGFscGhhIGNoYW5uZWwKISBbSGVydmUgRHJvbG9uXSBGcmVlSW1hZ2VfSW52ZXJ0IG5vdyBzdXBwb3J0cyBpbnZlcnNpb24gb2YgMzItYml0IGltYWdlcyB3aXRoIGFscGhhIGNoYW5uZWwKISBbSGVydmUgRHJvbG9uXSBGcmVlSW1hZ2VfQWRqdXN0Q3VydmUgbm93IHN1cHBvcnRzIHdvcmtpbmcgd2l0aCBGSUNDX0FMUEhBIGNoYW5uZWwKCk5vdmVtYmVyIDIsIDIwMDMgLSAzLjAuMwoqIFtSeWFuIFJ1YmxleV0gaW1wcm92ZWQgbWFrZWZpbGUgZm9yIExpbnV4CiogW1J5YW4gUnVibGV5XSBmaXhlZCBGcmVlSW1hZ2Ugbm90IGNvbXBpbGluZyB1bmRlciBNYWNPU1gKKiBbRGV0bGV2IFZlbmR0XSBmaXhlZCBzdGlsbCBwcmVzZW50IGluY29uc2lzdGFuY3kgd2l0aCAzMmJwcCB0cmFuc3BhcmVuY3kgaGFuZGxpbmcKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBpbmNvcnJlY3QgbG9hZGluZyBvZiA0LWJpdCBncmV5c2NhbGUgaW1hZ2VzIGluIFRJRkYgcGx1Z2luCgpPY3RvYmVyIDI3LCAyMDAzIC0gMy4wLjIKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliTU5HIDEuMC42CiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBib29sZWFuIHRlc3QgaW4gUGx1Z2luQ1VUIHJldHVybmluZyBhbHdheXMgZmFsc2UKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIHdhcm5pbmcgaW4gUGx1Z2luSUZGIGdlbmVyYXRlZCB3aXRoIGcrKwoqIFtMaW51cyBUYW5dIGZpeGVkIGEgYnVnIGluIEZyZWVJbWFnZV9Db3B5CiogW0hlcnZlIERyb2xvbl0gZml4ZWQgRnJlZUltYWdlIG5vdCBjb21waWxpbmcgdW5kZXIgTGludXggKHRoYW5rcyB0byBNaWNoYWwpCgpPY3RvYmVyIDIwLCAyMDAzIC0gMy4wLjEKCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlRJRkYgMy42LjAKKiBbRGV0bGV2IFZlbmR0XSBmaXhlZCBpbmNvcnJlY3QgZGVmaW5pdGlvbiBvZiB0aGUgRlJFRV9JTUFHRV9GT1JNQVQgZW51bQoqIFtEZXRsZXYgVmVuZHRdIGZpeGVkIGEgcG90ZW50aWFsIGNyYXNoIHByb2JsZW0gd2l0aCBMb2FkIC8gU2F2ZSByb3V0aW5lcwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGluY29ycmVjdCBsb2FkaW5nIG9mIDE2LWJpdCBncmV5c2NhbGUgaW1hZ2VzIGluIFRJRkYgcGx1Z2luCiogW0Rlbm5pcyBMaW1dIGZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gRmxveWQgJiBTdGVpbmJlcmcgZGl0aGVyaW5nIHJvdXRpbmUKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyBpbiBCTVAgbG9hZGVyIChpbmNvcnJlY3QgbG9hZGluZyBvZiBSTEU0IGJtcCkKKiBbRGV0bGV2IFZlbmR0XSBmaXhlZCBzb21lIGluY29uc2lzdGFuY3kgd2l0aCAzMmJwcCB0cmFuc3BhcmVuY3kgaGFuZGxpbmcKKyBbRGF2aWQgQm9sYW5kXSBhZGRlZCBhIEMjIHdyYXBwZXIKLy8gTGludXggY29tcGF0aWJpbGl0eSBpc3N1ZXMKLSBbTWljaGFsIE5vdm90bnldIHJlbW92ZWQgdGhlIHJvdW5kIGZ1bmN0aW9uIGluIFV0aWxpdGllcy5oCiEgW0hlcnZlIERyb2xvbl0gcmVwbGFjZWQgdGhlIHJvdW5kIHJvdXRpbmUgYnkgdGhlIGNsYW1wIHJvdXRpbmUgaW4gUGx1Z2luUENECisgW0hlcnZlIERyb2xvbl0gYWRkZWQgX2l0b2EgdmVyc2lvbiBpbiBVdGlsaXRpZXMuaAoqIFtNaWNoYWwgTm92b3RueV0gZml4ZWQgdW50eXBlZCBjb25zdHMgbm90IGFjY2VwdGVkIGJ5IGcrKyBpbiBQbHVnaW5CTVAKClNlcHRlbWJlciA4LCAyMDAzIC0gMy4wLjAKLSBbSGVydmUgRHJvbG9uXSByZW1vdmVkIGRlcHJlY2F0ZWQgZnVuY3Rpb25zCi0gW0hlcnZlIERyb2xvbl0gcmVtb3ZlZCBkZXByZWNhdGVkIGZsYWdzIChUQVJHQV9MT0FEX1JHQjU1NSwgSUNPXyosIGV4Y2VwdCBJQ09fREVGQVVMVCkKLSBbSGVydmUgRHJvbG9uXSByZW1vdmVkIHRoZSBGcmVlSW1hZ2UgcG9pbnRlciB0YWJsZSAoaW50ZXJuYWwgc3R1ZmYpCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgYSBDKysgd3JhcHBlcgorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIHRoZSBGcmVlSW1hZ2UgVG9vbGtpdCAoc2VlIGJlbG93KQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9SZXNjYWxlCisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX1JvdGF0ZUNsYXNzaWMKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfUm90YXRlRXgKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfRmxpcEhvcml6b250YWwKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfRmxpcFZlcnRpY2FsCisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0ludmVydAorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9BZGp1c3RDdXJ2ZQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9BZGp1c3RHYW1tYQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9BZGp1c3RCcmlnaHRuZXNzCisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0FkanVzdENvbnRyYXN0CisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0dldEhpc3RvZ3JhbQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9HZXRDaGFubmVsCisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX1NldENoYW5uZWwKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfQ29weQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9QYXN0ZQorIFtLYXJsLUhlaW56IEJ1c3NpYW5dIGFkZGVkIFhQTSBsb2FkZXIKKyBbS2FybC1IZWlueiBCdXNzaWFuXSBhZGRlZCBmbGFncyBwYXJhbWV0ZXIgdG8gRnJlZUltYWdlX0Nsb3NlTXVsdGlCaXRtYXAKKyBbS2FybC1IZWlueiBCdXNzaWFuXSBhZGRlZCBKUEVHIHNhdmUgc3VwcG9ydCBmb3IgOC1iaXQgcGFsZXR0aXplZCBiaXRtYXBzICh0cmFuc3BhcmVudCBjb252ZXJzaW9uIHRvIDI0LWJpdCkKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBpbnRlcmZhY2UgdG8gWkxpYiBjb21wcmVzc2lvbiBmdW5jdGlvbnMKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBJQ08gZm9ybWF0IHRvIHRoZSBtdWx0aXBhZ2UgQVBJIChsb2FkZXIgJiB3cml0ZXIpCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgYSBNSU1FIHR5cGUgdG8gYWxsIHBsdWdpbnMKKiBbS2FybC1IZWlueiBCdXNzaWFuXSBmaXhlZCBpbmNvcnJlY3QgY29udmVyc2lvbiBmcm9tIDEtYml0IEZJQ19NSU5JU1dISVRFIGJpdG1hcHMgdG8gOC1iaXQKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyBpbiBGcmVlSW1hZ2VfQ2xvc2VNdWx0aUJpdG1hcAoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIGluIGNvbnZlcnNpb24gZnVuY3Rpb25zICg4LSwgMjQtLCAzMi1iaXQpCiogW1JvYmVydCBXYWxrZXJdIGZpeGVkIGluY29ycmVjdCBjb252ZXJzaW9uIGZyb20gMTYtYml0IHRvIDI0LWJpdCBhbmQgMTYtYml0IHRvIDMyLWJpdAoqIFtibHVyYmxlXSBmaXhlZCBUSUZGIHZhbGlkYXRlIHNpZ25hdHVyZSBwcm9ibGVtICgzRFMgZmlsZXMgd2VyZSByZWNvZ25pemVkIGFzIFRJRkYpCiogW0t1cnQgSmFua293c2tpLVRlcGVdIGZpeGVkIEZyZWVJbWFnZSBub3QgY29tcGlsaW5nIG9uIE1pbkdXIC8gTENDIFdJTjMyCiogW0phbmkgUGVsdG9uZW5dIGZpeGVkIGJ1ZyBpbiBQbHVnaW5UQVJHQSB3aGVyZSAzMi1iaXQgYml0bWFwcyBhcmUgbm90IGFsd2F5cyBjb3JyZWN0bHkgZmxpcHBlZCAKKiBbRGV0bGV2IFZlbmR0XSBmaXhlZCBhIGJ1ZyB3aXRoIFRJRkYgKG1lbW9yeSBsZWFrIHdpdGggSUNDIHByb2ZpbGVzKQoKTWF5IDI1LCAyMDAzIC0gMi42LjEKKyBbRGV0bGV2IFZlbmR0XSBhZGRlZCBGSUNfQ01ZSyB0byBGUkVFX0lNQUdFX0NPTE9SX1RZUEUKKyBbRGV0bGV2IFZlbmR0XSBhZGRlZCBJQ0MgcHJvZmlsZSBzdXBwb3J0IHRvIHRoZSBsaWJyYXJ5IChzZWUgYmVsb3cpCisgICAgICAgICAgICAgICAgYWRkZWQgRnJlZUltYWdlX0dldElDQ1Byb2ZpbGUKKyAgICAgICAgICAgICAgICBhZGRlZCBGcmVlSW1hZ2VfQ3JlYXRlSUNDUHJvZmlsZQorICAgICAgICAgICAgICAgIGFkZGVkIEZyZWVJbWFnZV9EZXN0cm95SUNDUHJvZmlsZQorICAgICAgICAgICAgICAgIGFkZGVkIEZJSUNDUFJPRklMRSAmIEZJSUNDUFJPRklMRSBmbGFncworICAgICAgICAgICAgICAgIGFkZGVkIHBsdWdpbiBmdW5jdGlvbiBGcmVlSW1hZ2VfRklGU3VwcG9ydHNJQ0NQcm9maWxlcworIFtEZXRsZXYgVmVuZHRdIGFkZGVkIElDQyBwcm9maWxlIHN1cHBvcnQgZm9yIFRJRkYKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBYQk0gKFgxMSBCaXRtYXAgRm9ybWF0KSBzdXBwb3J0IDogbG9hZGluZwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGluY29ycmVjdCBJRkYgZmlsZSBkZXRlY3Rpb24gKHRoYW5rcyBGbG9yaXMpCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgaW5jb3JyZWN0IGNvbnZlcnNpb24gZnJvbSAxLzQtYml0IGdyZXlzY2FsZSBiaXRtYXBzIHRvIDgtYml0CiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gVElGRiB3cml0ZXIgd2hlbiBzYXZpbmcgMSw0LDggYml0IGRpYiAoaW50cm9kdWNlZCBpbiAyLjYuMCwgc29ycnkpCiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBwYWxldHRlIHByb2JsZW0gaW4gVElGRiBsb2FkZXIgd2hlbiBsb2FkaW5nIDEtYml0IGIgJiB3IGltYWdlcwoqIFtIZXJ2ZSBEcm9sb25dIGltcHJvdmVkIEZyZWVJbWFnZV9EaXRoZXIgdG8gaGFuZGxlIGFueSBiaXRkZXB0aAoKTWF5IDV0aCwgMjAwMyAtIDIuNi4wCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlBORyAxLjIuNQohIEZyZWVJbWFnZSBub3cgdXNlcyBsaWJNTkcgMS4wLjUKISBbTWFya3VzIExvaWJsXSBBY3RpdmVYIHdyYXBwZXIgaXMgbm93IGRpc3RyaWJ1dGVkIGluIGEgc2VwYXJhdGUgcmVsZWFzZSAoc2luY2UgMi41LjUpCiEgW0hlcnZlIERyb2xvbl0gdGhlIGZ1bmN0aW9uIEZyZWVJbWFnZV9GcmVlIGlzIG5vdyBkZXByZWNhdGVkIDogdXNlIEZyZWVJbWFnZV9VbmxvYWQgaW5zdGVhZAohIFtIZXJ2ZSBEcm9sb25dIHVwZGF0ZWQgdGhlIGdlbmVyaWMgc2FtcGxlcyBhbmQgcmVtb3ZlZCBkZXByZWNhdGVkIGZ1bmN0aW9ucworIFtEZXRsZXYgVmVuZHRdIGFkZGVkIENNWUsgc3VwcG9ydCB0byBUSUZGIHNhdmUgZnVuY3Rpb24KKyBbRGV0bGV2IFZlbmR0XSBhZGRlZCBUSUZGX1NBVkVfQ01ZSyBmbGFnIGNvbnN0YW50CisgW0RldGxldiBWZW5kdF0gYWRkZWQgMzItYml0IHN1cHBvcnQgKHdpdGggdHJhbnNwYXJlbmN5IGhhbmRsaW5nKSB0byBUSUZGIHBsdWdpbgorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZyZWVJbWFnZV9UaHJlc2hvbGQKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBGcmVlSW1hZ2VfRGl0aGVyCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgRlJFRV9JTUFHRV9ESVRIRVIgcGFyYW1ldGVyIHRvIEZyZWVJbWFnZV9EaXRoZXIKKiBbSGVydmUgRHJvbG9uXSBpbXByb3ZlZCBlcnJvciBoYW5kbGluZyBpbiBQbHVnaW5NTkcKKiBbSGVydmUgRHJvbG9uXSBpbXByb3ZlZCBUSUZGIGZsYWdzIGhhbmRsaW5nIGluIFRJRkYgc2F2ZSBmdW5jdGlvbgoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgcG90ZW50aWFsIGNyYXNoLXByb2JsZW0gaW4gRnJlZUltYWdlX091dHB1dE1lc3NhZ2UgKGluIGNhc2Ugb2YgYSBudWxsIG1lc3NhZ2UpCiogW0RldGxldiBWZW5kdF0gZml4ZWQgYSBidWcgd2l0aCB0aGUgZGVwcmVjYXRlZCBGcmVlSW1hZ2VfR2V0Qml0c1Jvd0NvbCAodHJhaWxsaW5nIGJhY2tzbGFzaCBiZWhpbmQgdGhlIERFUFJFQ0FURSBtYWNybykKCkp1bHkgMjR0aCwgMjAwMiAtIDIuNS41CiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlBORyAxLjIuNAohIEZyZWVJbWFnZSBub3cgdXNlcyBsaWJNTkcgMS4wLjQKKyBbTWFya3VzIExvaWJsXSBhZGRlZCBBY3RpdmVYIHdyYXBwZXIKCkp1bmUgMjJ0aCwgMjAwMiAtIDIuNS40CiogW1RpbW90aHkgUm91Z2h0b25dIGZpeGVkIEZyZWVJbWFnZSBub3QgY29tcGlsaW5nIG9uIExDQyBXSU4zMgoqIFtNYXJrdXMgTG9pYmxdIGZpeGVkIFBsdWdpblRJRkYgc29tZXRpbWVzIHNhdmluZyB3aXRoIHdyb25nIFgvWSByZXNvbHV0aW9uCiogZml4ZWQgY3Jhc2hidWcgd2hlbiBsb2FkaW5nIHNvbWUgUkxFNCBCTVBzCiEgRnJlZUltYWdlIG5vdyB1c2VzIExpYlBORyAxLjIuMwohIFtNYXJrdXMgTG9pYmxdIGltcHJvdmVkIHN0YXJ0dXAgcGx1Z2luIGxvY2F0ZSBoYW5kbGluZyBjb2RlCiEgW0dlcmhhcmQgR3J1YmVyXSBtYWRlIHNvbWUgY2hhbmdlcyBzbyB0aGF0IEZyZWVJbWFnZSBjb21waWxlcyBvbiBWQzUKKyBbTWFya3VzIExvaWJsXSBhZGRlZCBmbGFncyBUSUZGX1BBQ0tCSVRTLCBUSUZGX0RFRkxBVEUsIFRJRkZfQURPQkVfREVGTEFURSBhbmQgVElGRl9OT05FCgpNYXkgMjF0aCwgMjAwMiAtIDIuNS4zCiogZml4ZWQgd3JvbmcgY29sb3JzIHdoZW4gbG9hZGluZyAxNi1iaXQgZ3JheXNjYWxlIFRJRkYKKiBmaXhlZCBjcmFzaC1wcm9ibGVtIHdpdGggRnJlZUltYWdlUXQKKiBmaXhlZCBQbHVnaW5USUZGIHNhdmluZyBzb21lIGJpdG1hcHMgZmxpcHBlZCB2ZXJ0aWNhbGx5CiogW0xhdXJlbnQgUm9jaGVyXSBmaXhlZCBidWcgaW4gRnJlZUltYWdlX0dldExvY2tlZFBhZ2VOdW1iZXJzCiogW0xhdXJlbnQgUm9jaGVyXSBmaXhlZCBidWcgaW4gRnJlZUltYWdlX1VubG9ja1BhZ2UKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGlicG5nIDEuMi4yCisgYWRkZWQgVEFSR0Egc2F2ZSBzdXBwb3J0CisgYWRkZWQgQk1QIFJMRTggc2F2ZSBzdXBwb3J0CgpNYXJjaCAzMHRoLCAyMDAyIC0gMi41LjIKKiBmaXhlZCBidWcgaW4gUGx1Z2luVEFSR0Egd2hlcmUgMzItYml0IGJpdG1hcHMgYXJlIG5vdCBhbHdheXMgY29ycmVjdGx5IGZsaXBwZWQKKiBmaXhlZCBGcmVlSW1hZ2VfR2V0TG9ja2VkUGFnZU51bWJlciBiZWluZyBtZW50aW9uZWQgaW4gRnJlZUltYWdlLmgKKiBmaXhlZCBjcmFzaCBidWcgd2hlbiBoYW5kbGluZyByZWFkLW9ubHkgbXVsdGlwYWdlIGJpdG1hcHMKLSByZW1vdmVkIGludGVybmFsIGZ1bmN0aW9uIEZyZWVJbWFnZV9HZXRFeHRyYURhdGFQb2ludGVyCiEgRnJlZUltYWdlIG5vdyB1c2VzIHpsaWIgMS4xLjQKKyBhZGRlZCBmdW5jdGlvbiBGcmVlSW1hZ2VfR2V0TG9ja2VkUGFnZU51bWJlcnMKCk1hcmNoIDJuZCAyMDAyIC0gMi41LjEKKiBmaXhlZCBwbHVnaW5USUZGIG5vdCBiZWluZyBhYmxlIHRvIHNhdmUgMzItYml0IGJpdG1hcHMKKiBmaXhlZCBub3QgYmVpbmcgYWJsZSB0byBzYXZlIFBOTSBiaXRtYXBzIHRocm91Z2ggdGhlIExvYWRYWFggd3JhcHBlcnMKKiBmaXhlZCBhIHdlYmNhbSBnZW5lcmF0ZWQgQk1QIGltYWdlIGJlaW5nIGxvYWRlZCB3aXRoIHdyb25nIGNvbG9ycwohIEZJX1JlYWRQcm9jLCBGSV9Xcml0ZVByb2MsIGV0Yy4gZG8gbm93IGNhcnJ5IHRoZSBETExfQ0FMTENPTlYgZmxhZwohIHRoZSBmdW5jdGlvbiBGcmVlSW1hZ2VfR2V0Qml0c1Jvd0NvbCBpcyBub3cgZGVwcmVjYXRlZAohIEZyZWVJbWFnZV9TZXRUcmFuc3BhcmVuY3lUYWJsZSBub3cgdGFrZW4gYW4gaW50ZWdlciBhcyBjb3VudCBwYXJhbWV0ZXIKISBGcmVlSW1hZ2VfSXNUcmFuc3BhcmVudCBub3cgYWx3YXlzIHJldHVybnMgdHJ1ZSBmb3IgMzItYml0IGJpdG1hcHMKISBQbHVnaW5QTkc6OlNhdmUgbm93IGlnbm9yZXMgdGhlIHJlc3VsdCBvZiBGcmVlSW1hZ2VfSXNUcmFuc3BhcmVudAohIFBsdWdpblRJRkYgbm93IGNvbnZlcnRzIGFsbCAzMi1iaXQgYml0bWFwcyB0byAyNC1iaXQsIHVudGlsIG91ciBwYXRjaAogIHRvIGZ1bGx5IHN1cHBvcnQgYWxwaGEgaW4gVElGRiBpcyBhcHBsaWVkIGluIGxpYnRpZmYKKyBhZGRlZCBmdWxsIG11bHRpLXBhZ2luZyBzdXBwb3J0CisgYWRkZWQgb2N0YWwgYW5kIGhleGFkZWNpbWFsIG51bWJlciBzdXBwb3J0IHRvIEZyZWVJbWFnZV9PdXRwdXRNZXNzYWdlCgpKYW51YXJ5IDNyZCAyMDAyIC0gMi41LjAKKiBmaXhlZCBidWcgaW4gRnJlZUltYWdlX1NhdmVKUEVHCiogZml4ZWQgYnVnIGluIEZyZWVJbWFnZV9Mb2FkTU5HCiogZml4ZWQgYnVnIGluIEZyZWVJbWFnZV9Mb2FkUE5HCiogZml4ZWQgc21hbGwgVmlzdWFsIEMrKyA1LjAgY29tcGlsZXIgaXNzdWUgaW4gUGx1Z2luTU5HLmNwcAoqIGZpeGVkIEZyZWVJbWFnZSBjcmFzaGluZyBvbiBKUEVHIDYuMCBlbmNvZGVkIFRJRkZzCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlRJRkYgMy41LjcKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliUE5HIDEuMi4xCiEgYWxsIHRoZSBGcmVlSW1hZ2VfTG9hZFhYWCBhbmQgRnJlZUltYWdlX1NhdmVYWFggZnVuY3Rpb25zIGFyZSBub3cgZGVwcmVjYXRlZAorIGFkZGVkIERyLiBIYWxvICgqLmN1dCkgc3VwcG9ydAorIGFkZGVkIHByaW50Zi1saWtlIGZvcm1hdCBzdHJpbmcgc3VwcG9ydCB0byBTZXRPdXRwdXRNZXNzYWdlCisgYWRkZWQgYmFzaWMgbXVsdGktcGFnaW5nIHN1cHBvcnQ6IG9wZW4sIGNsb3NlLCBjb3VudGluZyBhbmQgZ3JhYmJpbmcKKyBhZGRlZCBkZXByZWNhdGlvbiBtYW5hZ2VyCisgYWRkZWQgRnJlZUltYWdlX0Nsb25lIGZ1bmN0aW9uCgpPY3RvYmVyIDNyZCAyMDAxIC0gMi40LjIKKiBmaXhlZCBtaXNzaW5nIEJJX0JJVEZJRUxEUyBzdXBwb3J0IGZvciAzMi1iaXQgQk1QcwoqIGZpeGVkIGJ1ZyBpbiBGcmVlSW1hZ2VfQ29udmVydExpbmUxNl81NTVfVG8xNl81NjUgYW5kIHZpY2UgdmVyc2EKKiBmaXhlZCBidWcgaW4gRnJlZUltYWdlX0NvbnZlcnRUb1Jhd0JpdHMKKiBmaXhlZCBQbHVnaW5USUZGIGJlaGF2aW5nIGluY29ycmVjdGx5IG9uIFBIT1RPTUVUUklDX01BU0sgaW1hZ2VzCiogZml4ZWQgMTYgYml0IFRJRkZzIG5vdCBsb2FkaW5nIGNvcnJlY3RseQoqIGZpeGVkIGluY29ycmVjdCBoYW5kbGluZyBvZiBDQ0lUVEZBWDMgYW5kIENDSVRURkFYNCBUSUZGcwoqIGZpeGVkIEpQRUcgZW5jb2RlZCBUSUZGcyBub3QgYmVpbmcgc3VwcG9ydGVkCiEgW1lvdXJzIERldGxldl0gcGF0Y2hlZCBsaWJUSUZGIHRvIGhhbmRsZSBFWFRSQVNBTVBMRV9VTlNQRUNJRklFRAohIFtKdWVyZ2VuIFJpZWNrZXJdIGltcHJvdmVkIHNwZWVkIG9mIFBDWCBsb2FkaW5nIGEgbG90CiEgcmV3cm90ZSBwYXJ0cyBvZiBGcmVlSW1hZ2UgdG8gaW1wcm92ZSBzdXBwb3J0IGZvciBjCiEgdGhlIGludGVybmFsIFJHQjU1NSBhbmQgUkdCNTY1IG1hY3JvcyBub3cgcmVhZCBCR1IgaW5zdGVhZCBvZiBSR0IKISBGcmVlSW1hZ2Ugbm93IHVzZXMgbGliTU5HIDEuMC4zCiEgRnJlZUltYWdlIG5vdyB1c2VzIGxpYlBORyAxLjIuMAohIEZyZWVJbWFnZV9TYXZlIG5vdyBvcGVucyBmaWxlcyB3aXRoIHRoZSAidytiIiBmbGFnCiEgcmVuYW1lZCBpbnRlcm5hbCBtYWNybyBDYWxjdWxhdGVVc2VkQ29sb3JzIHRvIENhbGN1bGF0ZVVzZWRQYWxldHRlRW50cmllcwohIGVuYWJsaW5nL2Rpc2FibGluZyBwbHVnaW5zIG5vIGxvbmdlciBoYXMgZWZmZWN0IG9uIEZJRlN1cHBvcnRzUmVhZGluZwohIGVuYWJsaW5nL2Rpc2FibGluZyBwbHVnaW5zIG5vIGxvbmdlciBoYXMgZWZmZWN0IG9uIEZJRlN1cHBvcnRzV3JpdGluZworIGFkZGVkIGZsYWcgUE5HX0lHTk9SRUdBTU1BCisgYWRkZWQgZnVuY3Rpb24gRnJlZUltYWdlX0ZJRlN1cHBvcnRzRXhwb3J0QlBQCgpKdWx5IDMwdGggMjAwMSAtIDIuNC4xCiogW0phbiBOYXV0YV0gZml4ZWQgc29tZSBwbHVnaW4gaWRzIG5vdCBiZWluZyBwYXNzZWQgdG8gcGx1Z2lucwoqIFtKYW4gTmF1dGFdIGZpeGVkIHNvbWUgZnVuY3Rpb25zIGJlaW5nIG5hdGl2ZWx5IGNhbGxlZCBpbnN0ZWFkIG9mIGluZGlyZWN0CiogW0phbiBOYXV0YV0gZml4ZWQgQk1QcyB3aXRoIHNpZ25hdHVyZSBCQSBub3QgYmVpbmcgcmVnb2duaXNlZAoqIFtSZW1vIEVpY2hlbmJlcmdlcl0gZml4ZWQgbWVtb3J5IGxlYWsgaW4gdGhlIHBsdWdpbiBzeXN0ZW0KKiBmaXhlZCBzZWVrIGJ1ZyBpbiBQbHVnaW5JRkYncyBWYWxpZGF0ZQoqIGZpeGVkIHRyYW5zcGFyZW5jeSBpc3N1ZSBpbiBQbHVnaW5QTkcKKiBmaXhlZCB1bmNhdWdodCBleGNlcHRpb25zIGluIFdVUXVhbnRpemVyIGFuZCBOTlF1YW50aXplcgoqIGZpeGVkIHNvbWUgcHJvYmxlbXMgd2l0aCBQbHVnaW5UQVJHQQoqIGZpeGVkIHNvbWUgcHJvYmxlbXMgd2l0aCBQbHVnaW5JQ08KKiBmaXhlZCBzb21lIHByb2JsZW1zIHdpdGggUGx1Z2luQk1QCiEgaW1wcm92ZWQgRnJlZUltYWdlUXQncyBsb2FkIGZ1bmN0aW9uIGEgbGl0dGxlCiEgdGVsbC9zZWVrIGNvbnRyb2wgZm9yIHZhbGlkYXRpb24gaXMgbm93IGhhbmRsZWQgaW5zaWRlIHRoZSBwbHVnaW4gZnJhbWV3b3JrCgpKdWx5IDIydGggMjAwMSAtIDIuNC4wCiogKFlvdXJzIERldGxldikgZml4ZWQgbWVtb3J5IGxlYWsgaW4gRnJlZUltYWdlX0dldEZJRkZyb21GaWxlbmFtZQoqIChZb3VycyBEZXRsZXYpIGZpeGVkIG1lbW9yeSBsZWFrIGluIHRoZSBJQ08gcGx1Z2luCiogKFlvdXJzIERldGxldikgZml4ZWQgbWVtb3J5IGxlYWsgaW4gdGhlIFBORyBwbHVnaW4KKiBmaXhlZCBwb3RlbnRpYWwgTlVMTC1wb2ludGVyIGFjY2VzcyBidWcgaW4gUGx1Z2luOjpBZGROb2RlCiogZml4ZWQgcHJvYmxlbXMgd2l0aCBsaW5raW5nIHRoZSBzdGF0aWMgbGliCi0gcmVtb3ZlZCBMQk0gcGx1Z2luLiBJdHMgZnVuY3Rpb25hbGl0eSBpcyBwbGFjZWQgaW4gdGhlIElGRiBwbHVnaW4gbm93Ci0gcmVtb3ZlZCBGcmVlSW1hZ2VfR2V0RklGQnlJbmRleAohIEZyZWVJbWFnZSBub3cgdXNlcyBMaWJNTkcgMS4wLjIKISBGcmVlSW1hZ2VfU2V0VHJhbnNwYXJlbnQgbm93IG9ubHkgZW5hYmxlcyBhbHBoYSB3aGVuIHRoZSBiaXRtYXAgaXMgOCBvciAzMiBiaXQKISBGcmVlSW1hZ2VfU2V0VHJhbnNwYXJlbmN5VGFibGUgbm93IG9ubHkgZW5hYmxlcyBhbHBoYSB3aGVuIHRoZSBiaXRtYXAgaXMgOCBiaXQKISBGcmVlSW1hZ2VfTG9hZExCTSBub3cgdXNlcyBNYXJrIFNpYmx5J3MgSUZGIHBsdWdpbgohIEZyZWVJbWFnZV9TYXZlQk1QIG5vdyBjb252ZXJ0cyB0byAyNC1iaXQgd2hlbiBicHAgaXMgMzIgYW5kIHRyYW5zcGFyZW5jeSBpcyBvZmYKISBGcmVlSW1hZ2VfU2F2ZUpQRUcgbm93IGNvbnZlcnRzIHRvIDI0LWJpdCB3aGVuIGJwcCBpcyAzMiBhbmQgdHJhbnNwYXJlbmN5IGlzIG9mZgohIEZyZWVJbWFnZV9TYXZlUE5NIG5vdyBjb252ZXJ0cyB0byAyNC1iaXQgd2hlbiBicHAgaXMgMzIgYW5kIHRyYW5zcGFyZW5jeSBpcyBvZmYKISBGcmVlSW1hZ2VfU2F2ZVRJRkYgbm93IGNvbnZlcnRzIHRvIDI0LWJpdCB3aGVuIGJwcCBpcyAzMiBhbmQgdHJhbnNwYXJlbmN5IGlzIG9mZgorIFtNYXJrIFNpYmx5XSBhZGRlZCBJRkYgKElMQk0pIHN1cHBvcnQKKyBhZGRlZCBiYXNpYyBzdXBwb3J0IGZvciBQaG90b3Nob3AgZmlsZXMKKyBhZGRlZCBtaW1lIHR5cGUgc3VwcG9ydCAoRnJlZUltYWdlX0dldEZJRkZyb21NaW1lKQorIGFkZGVkIGZ1bmN0aW9ucyBGcmVlSW1hZ2VfU2V0UGx1Z2luRW5hYmxlZCBhbmQgRnJlZUltYWdlX0lzUGx1Z2luRW5hYmxlZAogIERpc2FibGluZyBwbHVnaW5zIG1vZGlmaWVzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAgICAqIEZyZWVJbWFnZV9Mb2FkRnJvbUhhbmRsZQoJKiBGcmVlSW1hZ2VfU2F2ZVRvSGFuZGxlCgkqIEZyZWVJbWFnZV9GSUZTdXBwb3J0c1JlYWRpbmcKCSogRnJlZUltYWdlX0ZJRlN1cHBvcnRzV3JpdGluZwoJKiBGcmVlSW1hZ2VfR2V0RklGRnJvbUZvcm1hdAoJKiBGcmVlSW1hZ2VfR2V0RklGRnJvbUZpbGVuYW1lCgkqIEZyZWVJbWFnZV9HZXRGSUZGcm9tTWltZQoJKiBGcmVlSW1hZ2VfVmFsaWRhdGUKCkp1bmUgMzB0aCAyMDAxIC0gMi4zLjIKKiBmaXhlZCBtaXNzaW5nICJ0YXJnYSIgZXh0ZW5zaW9uIGluIHRhcmdhIGV4dGVuc2lvbiBsaXN0CiogZml4ZWQgc21hbGwgbWVtb3J5IGxlYWsgaW4gUGx1Z2luTGlzdDo6QWRkTm9kZQoqIGZpeGVkIDMyIGJpdCBQTkcgc2F2aW5nIHN1ZGRlbmx5IGRpc2FwcGVhcmVkIGZyb20gdGhlIGRpc3Rybz8KKiBmaXhlZCAnYmxhY2sgbGluZScgYnVnIGluIExvYWRUQVJHQQotIHJlbW92ZWQgcHJvamVjdCBGcmVlSW1hZ2VNMgotIHJlbW92ZWQgRnJlZUltYWdlX0NvbWJpbmUKISBGcmVlSW1hZ2VfUmVnaXN0ZXJMb2NhbFBsdWdpbiBub3cgcmVjZWl2ZXMgYSBGSV9Jbml0UHJvYyBhcyBmaXJzdCBwYXJhbWV0ZXIKISBGcmVlSW1hZ2VfR2V0RklGRnJvbUZpbGVuYW1lIG5vdyBhbHNvIHRha2VzIHRoZSBmb3JtYXQgaWQgaW50byBhY2NvdW50CiEgY2xlYW51cCB1cCB0aGUgY29kZSBhIGxpdHRsZSBmb3IgUGx1Z2luUENEIGFuZCBQbHVnaW5QQ1gKKyBhZGRlZCBzdGF0aWMgbGliIHByb2plY3QKCkp1bmUgMTF0aCAyMDAxIC0gMi4zLjEKKiBbTWFjaGllbCB0ZW4gQnJpbmtlXSBmaXhlZCB0aGUgbG9hZGluZyBvZiBzb21lICdhbmNpZW50JyBUQVJHQXMKKiBbUnVpIExvcGVzXSBmaXhlZCBzb21lIGJ1Z3MgaW4gdGhlIGV4dGVybmFsIHBsdWdpbiByZWdpc3RyYXRpb24KKiBmaXhlZCB0aGUgcGx1Z2luIHN5c3RlbSBjcmFzaGluZyB3aGVuIHRoZSBpbml0IGZ1bmN0aW9uIGlzbid0IGNhbGxlZAotIHJlbW92ZWQgcHJvamVjdCBGcmVlSW1hZ2VQeQotIHJlbW92ZWQgMzIgdG8gMjQgYml0IGNvbnZlcnNpb24gd2hpbGUgc2F2aW5nIFBORyBpbiBGcmVlSW1hZ2VRdAohIHRoZSBzY2FubGluZSBjb252ZXJ0IGZ1bmN0aW9ucyBhcmUgbm93IGFjY2Vzc2FibGUgaW4gcGx1Z2lucwohIEZyZWVJbWFnZSBub3cgdXNlcyBhbiBTVEwgbWFwIHRvIHN0b3JlIHRoZSBwbHVnaW4gbGlzdAohIFBsdWdpblNESy5oIGlzIG5vdyBpbnRlZ3JhdGVkIGludG8gRnJlZUltYWdlLmgKISBGcmVlSW1hZ2VfUmVnaXN0ZXIgbm93IHJlY2VpdmVzIHRoZSBib29sZWFuIHBhcmFtZXRlciAnbG9hZF9sb2NhbF9wbHVnaW5zX29ubHknCiEgRnJlZUltYWdlIG5vdyB1c2VzIExpYlBORyAxLjAuMTIKKyBbUnVpIExvcGVzXSBhZGRlZCBwbHVnaW4gZm9yIEdJRiByZWFkaW5nL3dyaXRpbmcgc3VwcG9ydAorIGFkZGVkIGZ1bmN0aW9uIEZyZWVJbWFnZV9TZXRUcmFuc3BhcmVuY3lDb3VudAorIGFkZGVkIHN1cHBvcnQgZm9yIDMyIGJpdCBQTkcgc2F2aW5nCisgYWRkZWQgRnJlZUltYWdlX1JlZ2lzdGVyTG9jYWxQbHVnaW4gdG8gYWxsb3cgcGx1Z2lucyBpbnNpZGUgYXBwcworIGFkZGVkIEZyZWVJbWFnZV9SZWdpc3RlckV4dGVybmFsUGx1Z2luIHRvIG1hbnVhbGx5IGxvYWQgRExMcworIGFkZGVkIHBsdWdpbiBmb3IgSkJJRyByZWFkaW5nL3dyaXRpbmcgc3VwcG9ydAoKTWF5IDR0aCAyMDAxIC0gMi4zLjAKKiBbTWFydGluIFdlYmVyXSBmaXhlZCBzb21lIHNtYWxsIGJ1Z3MgaW4gdGhlIFRBUkdBIGFuZCBCTVAgcGx1Z2lucwoqIFtNYXJ0aW4gV2ViZXJdIGZpeGVkIHRpbnkgYnVnIGluIG5ldyAxNiBiaXQgY29udmVyc2lvbnMKKiBbTWFydGluIFdlYmVyXSBmaXhlZCBsb2FkIGZsYWcgaW5jb25zaXN0ZW5jeSBpbiB0aGUgVEFSR0EgcGx1Z2luCiogW01hcnRpbiBXZWJlcl0gZml4ZWQgcGx1Z2luIGlkIC8gbG9hZCByZWZlcmVuY2UgaW5jb25zaXN0ZW5jeSBmb3IgUE5NCiogW0phbiBOYXV0YV0gZml4ZWQgYnVnIGluIGNvbnZlcnNpb24gMTYgLT4gMTYKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBzbWFsbCBidWcgaW4gNC1iaXQgUENYIGxvYWRlcgotIHJlbW92ZWQgY29kZSB0aGF0IGxvYWRzIEJNUHMgcmVuYW1lZCB0byBJQ08gaW4gUGx1Z2luSUNPCiEgdGhlIGZsYWcgVEFSR0FfTE9BRF9SR0I1NTUgaXMgbm93IG9ic29sZXRlCiEgdGhlIHBsdWdpbiBsaXN0IGlzIG5vdyBzb3J0ZWQgaW50ZXJuYWxseQohIENvbnZlcnRUbzMyQml0cyBub3cgc3RvcmVzIHRoZSB0cmFuc3BhcmVuY3kgdGFibGUgYXMgYWxwaGEgbWFzawohIEZyZWVJbWFnZSBub3cgdXNlcyBMaWJNTkcgMS4wLDEKISBGcmVlSW1hZ2Ugbm93IHVzZXMgTGliUE5HIDEuMC4xMQorIGFkZGVkIGV4dGVybmFsIHBsdWdpbiBzdXBwb3J0IHZpYSBETExzCisgYWRkZWQgZnVuY3Rpb24gRnJlZUltYWdlX0dldEZJRkJ5SW5kZXgKKyBhZGRlZCBpbnRlcm5hbCBmdW5jdGlvbiBDYWxjdWxhdGVTY2FuTGluZQorIGFkZGVkIHRyYW5zcGFyZW5jeSBzdXBwb3J0IGZvciBoaWdoLWNvbG9yIFBOR3MKKyBhZGRlZCB0cmFuc3BhcmVuY3kgc3VwcG9ydCBmb3IgaGlnaC1jb2xvciBUSUZGcworIGFkZGVkIGZ1bmN0aW9ucyBGcmVlSW1hZ2VfU2V0VHJhbnNwYXJlbnQgYW5kIEZyZWVJbWFnZV9Jc1RyYW5zcGFyZW50CisgYWRkZWQgY29uc3RhbnQgRklDX1JHQkFMUEhBIHRvIEZSRUVfSU1BR0VfQ09MT1JfVFlQRQoKQXByaWwgNXRoIDIwMDEgLSAyLjIuMAoqIFtSZW1vIEVpY2hlbmJlcmdlcl0gZml4ZWQgc21hbGwgYnVnIGNvbmNlcm5pbmcgRExMTWFpbiBhbmQgc3RhdGljIExJQiBnZW5lcmF0aW9uCiogZml4ZWQgMS1iaXQgYml0bWFwcyBub3QgcHJvcGVybHkgbG9hZGluZyBpbiBGcmVlSW1hZ2VRdAoqIGZpeGVkIGJ1ZyBpbiBjb252ZXJzaW9uIDE2LT4xNgoqIEZyZWVJbWFnZSBub3cgdXNlcyBMaWJQTkcgMS4wLjEwCiEgW01hcnRpbiBXZWJlcl0gaW1wcm92ZWQgbG9hZGluZyBvZiBCTVAgZmlsZXMKISBbTWFydGluIFdlYmVyXSBpbXByb3ZlZCBsb2FkaW5nIG9mIFRBUkdBIGZpbGVzCiEgW0RhdmUgTGFyc29uXSBpbXByb3ZlZCB2aXN1YWwgYXBwZWFyYW5jZSBhZnRlciAxNiBjb252ZXJzaW9ucwohIEZyZWVJbWFnZVF0IG5vdyBjb252ZXJ0cyAzMi1iaXQgYml0bWFwcyB0byAyNC1iaXQgd2hlbiBzYXZpbmcgUE5HcyBhbmQgSlBFR3MKKyBhZGRlZCBmdW5jdGlvbnMgRnJlZUltYWdlX0luaXRpYWxpc2UgYW5kIEZyZWVJbWFnZV9EZUluaXRpYWxpc2UKKyBhZGRlZCBpbnRlcm5hbCBwbHVnaW5zCisgcmUtYWRkZWQgY29tYmluZS9hbHBoYWJsZW5kIGZ1bmN0aW9ucwoKTWFyY2ggOHRoIDIwMDEgLSAyLjEuMAoqIFtNYXJ0aW4gSGVtbWluZ10gZml4ZWQgYnVnIGluIDE2LWJpdCBUQVJHQSBsb2FkaW5nIGNvZGUKKiBmaXhlZCBQTkcncyB3aXRoIGFscGhhIG1hc2tzIG5vdCBsb2FkaW5nIGNvcnJlY3RseQohIEZyZWVJbWFnZSBpcyBub3cgZHVhbC1saWNlbnNlZDogdGhlIEZJLUxpY2Vuc2UgYW5kIHRoZSBHUEwgbGljZW5zZQohIEZyZWVJbWFnZSBub3cgdXNlcyBMaWJQTkcgMS4wLjkKISBGcmVlSW1hZ2Ugbm93IHVzZXMgTGliVElGRiAzLjUuNiBCZXRhCiEgRnJlZUltYWdlIG5vdyB1c2VzIExpQk1ORyAxLjAuMAohIGNoYW5nZWQgdGhlIG9yZGVyaW5nIG9mIHRoZSBGUkVFX0lNQUdFX0ZPUk1BVCB0YWJsZQohIGltcHJvdmVkIGxpbnV4IHN1cHBvcnQKISBpbXByb3ZlZCB0ZXN0IHNjcmlwdAorIGFkZGVkIHRyYW5zcGFyZW5jeSB0YWJsZSBzdXBwb3J0IHRvIFNhdmVQTkcKKyBhZGRlZCBCSV9CSVRGSUVMRFMgc3VwcG9ydCB0byBMb2FkQk1QIGFuZCBTYXZlQk1QCisgYWRkZWQgcmVhZGluZyBzdXBwb3J0IGZvciBPUy8yIDIueCBCTVBzCisgYWRkZWQgc3VwcG9ydCBmb3IgTU5HIGFuZCBKTkcgcmVhZGluZyB1c2luZyBMaWJNTkcKKyBhZGRlZCBzdXBwb3J0IGZvciBEZWx1eGUgUGFpbnQgcmVhZGluZworIGFkZGVkICdob3Qgc3dhcCcgc3VwcG9ydCB0byB0aGUgQ29yZSBETEwKKyBhZGRlZCAnaG90IHN3YXAnIHN1cHBvcnQgdG8gRnJlZUltYWdlIFF0CisgYWRkZWQgZnVuY3Rpb25zIEdldEZJRkZyb21Gb3JtYXQgYW5kIEdldEZJRkZyb21GaWxlbmFtZQorIGFkZGVkIGZ1bmN0aW9ucyBGSUZTdXBwb3J0c1JlYWRpbmcgYW5kIEZJRlN1cHBvcnRzV3JpdGluZworIGFkZGVkIGZ1bmN0aW9uIEdldEZJRlJlZ0V4cHIKCkphbnVhcnkgMTR0aCAyMDAxIC0gMi4wLjAKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBhIGJ1ZyBpbiB0aGUgY29udmVyc2lvbiA0LT44CiogW0hlcnZlIERyb2xvbl0gZml4ZWQgYSBidWcgaW4gbWV0cmljcyBoYW5kbGluZyBpbiBTYXZlSlBFRwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGEgYnVnIGluIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIFNhdmVUSUZGCiogZml4ZWQgdGhlIHByZXNlbmNlIG9mIHR3byBXdVF1YW50aXplci5jcHAgZmlsZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbgoqIGZpeGVkIGJ1ZyB3aGVyZSBhIEJNUCByZW5hbWVkIHRvIElDTyBpc24ndCBsb2FkZWQKLSByZW1vdmVkIEZyZWVJbWFnZV9Db252ZXJ0VG9HcmV5U2NhbGUuIFVzZSBGcmVlSW1hZ2VfQ29udmVydFRvOEJpdHMgaW5zdGVhZC4KLSByZW1vdmVkIHRoZSBib29sZWFuIHBhcmFtZXRlcnMgZnJvbSBhbGwgY29udmVyc2lvbiByb3V0aW5lcwotIHJlbW92ZWQgcGFnZSBoYW5kbGluZyBpbiBMb2FkVElGRi4gQSBuZXcgcmFuZ2Ugb2YgZnVuY3Rpb25zIHdpbGwgYmUgYWRkZWQuCiEgVGhlIHZvaWQgcG9pbnRlcnMgdXNlZCBpbiBGcmVlSW1hZ2UgYXJlIG5vdyB0eXBlZAohIExvYWRCTVAgbm93IHRha2VzIHBhbGV0dGVzIGluIDI0LzMyIGJpdCBpbWFnZXMgaW4gcmVzcGVjdAohIEFsbCBlZmZlY3RzIGFuZCBNTVggZnVuY3Rpb25zIGFyZSBub3cgc3RvcmVkIGluIGEgbmV3IGxpYnJhcnkgKEZyZWVFZmZlY3RzKQohIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGJ1ZyBpbiBGcmVlSW1hZ2VfR2V0Q29sb3JUeXBlCiEgW0hlcnZlIERyb2xvbl0gaW1wcm92ZWQgUENYIGxvYWRlci4gSXQgY2FuIG5vdyByZWFkIDEsIDQsIDggYW5kIDI0LWJpdCBpbWFnZXMKISBbTWFuZnJlZCBUYXVzY2hdIGltcHJvdmVkIEZyZWVJbWFnZV9Sb3RhdGUKISBbTHVjYSBQaWVyZ2VudGlsaV0gZml4ZWQgY3Jhc2ggYnVnIHdoZW4gc2F2aW5nIHNvbWUgMS1iaXQgVElGRnMKISByZXdyb3RlIGFsbCBiaXRkZXB0aCBjb252ZXJzaW9uIHJvdXRpbmVzIG1ha2luZyB1c2Ugb2YgdGhlIG5ldyBzY2FubGluZSBjb252ZXJ0ZXJzCiEgcmV3cm90ZSBiaXRkZXB0aCBjb252ZXJzaW9uIGluIEZyZWVJbWFnZVF0ICh1c2VzIGxlc3MgbWVtb3J5KQohIEZyZWVJbWFnZSBpcyBub3cgY29tcGlsZWQgX19zdGRjYWxsCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgV0JNUCAoV2lyZWxlc3MgQml0bWFwIEZvcm1hdCkgc3VwcG9ydDogbG9hZGluZyBhbmQgc2F2aW5nCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgNCwgMTYgYW5kIDMyIGJpdGRlcHRoIGhhbmRsaW5nIGluIEdldENvbG9yVHlwZQorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIGhhbmRsaW5nIG9mIDgtYml0IGdyZXlzY2FsZSBiaXRtYXBzIGluIFNhdmVKUEVHCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgTmV1UXVhbnQgY29sb3IgcmVkdWN0aW9uIGFsZ29yaXRobSB0byBDb2xvclF1YW50aXplCisgYWRkZWQgRExMX0NBTExDT05WIChjYWxsaW5nIGNvbnZlbnRpb24pIGZsYWcKKyBhZGRlZCBiaXRtYXNrIHN1cHBvcnQgdG8gYWxsIGJpdG1hcHMKKyBhZGRlZCBhIHNlcmllcyBvZiBmdW5jdGlvbnMgY29udmVydGluZyBzY2FubGluZXMgZnJvbSBvbmUgYml0ZGVwdGggdG8gYW5vdGhlcgorIGFkZGVkIGZ1bmN0aW9ucyBDb252ZXJ0RnJvbVJhd0JpdHMgYW5kIENvbnZlcnRUb1Jhd0JpdHMKKyBhZGRlZCBwcm9qZWN0IEZyZWVJbWFnZU0yOiBNYWdlbnRhIElJIE1NVCBiaW5kaW5ncyBmb3IgRnJlZUltYWdlCisgYWRkZWQgYmFzaWMgZm91bmRhdGlvbiBmb3IgbGludXggc3VwcG9ydAoKRGVjZW1iZXIgMnRoIDIwMDAgLSAxLjQuNAoqIGZpeGVkIHNtYWxsIGJ1ZyByZWxhdGVkIHRvIFRJRkZTZXREaXJlY3RvcnkgaW4gRnJlZUltYWdlX0xvYWRUSUZGCiogZml4ZWQgRnJlZUltYWdlX1JvdGF0ZSBzb21ldGltZXMgY2xpcHBpbmcgdG9vIG11Y2ggcGl4ZWxzCiogZml4ZWQgb3RoZXIgc21hbGwgYnVnIGluIEZyZWVJbWFnZV9Sb3RhdGUKKiBmaXhlZCBGcmVlSW1hZ2VfQ2xvbmUgbm90IHRha2luZyB0aGUgRlJFRUlNQUdFSEVBREVSIGluIGFjY291bnQKKiBmaXhlZCBidWcgaW4gRnJlZUltYWdlUXQgd2hlcmUgMS1iaXQgaW1hZ2VzIGFyZSBub3QgY29ycmVjdGx5IGFsbG9jYXRlZAoqIGZpeGVkIEZyZWVJbWFnZV9Dcm9wIG5vdCBjb3B5aW5nIHRoZSBwYWxldHRlCiogZml4ZWQgbWVzc2FnZSBmdW5jdGlvbiBwb2ludGVyIGNyYXNoIGJ1ZwoqIGZpeGVkIGJ1ZyB3aGVyZSB0aGUgcGFsZXR0ZSB3YXNuJ3QgY29waWVkIHdoZW4gc2F2aW5nIGluIEZyZWVJbWFnZVF0CiogZml4ZWQgRnJlZUltYWdlX0Nsb25lIG5vdCBjb3B5aW5nIHRoZSB0cmFuc3BhcmVuY3kgdGFibGUKLSByZW1vdmVkIEZyZWVJbWFnZV9Xcml0ZVBhbGV0dGVFbnRyeQohIFtBZGFtIEdhdGVzXSByZXdyb3RlIHBhcnRzIG9mIEZyZWVJbWFnZSBzbyB0aGF0IGMgY29tcGlsZXJzIGNhbiBoYW5kbGUgaXQgYmV0dGVyCiEgRnJlZUltYWdlUXQgZG9lc24ndCBzdGF0aWNhbGx5IGxpbmsgd2l0aCB0aGUgRnJlZUltYWdlIGxpYiBhbnltb3JlCiEgRnJlZUltYWdlUXQgbm93IHVzZXMgYXRleGl0KCkgdG8gYXV0b21hdGljYWxseSB1bnJlZ2lzdGVyCiEgcmV3cm90ZSBwYXJ0cyBvZiBGcmVlSW1hZ2VfTG9hZEJNUCB0byBpbmNyZWFzZSBzcGVlZAorIFtNYXJrdXMgTG9pYmxdIGFkZGVkIG1ldHJpY3MgaGFuZGxpbmcgY29kZSB0byBMb2FkQk1QLCBMb2FkSlBFRywgTG9hZFRJRkYgYW5kIExvYWRQQ1gKKyBhZGRlZCBtZXRyaWNzIGhhbmRsaW5nIGNvZGUgdG8gRnJlZUltYWdlUXQKKyBhZGRlZCBmdW5jdGlvbnMgRklRVF9Jc0xvYWRlZCwgRklRVF9HZXRWZXJzaW9uIGFuZCBGSVFUX0dldENvcHlyaWdodE1lc3NhZ2UKKyBhZGRlZCBjb252ZXJzaW9uIDEgLT4gMTYKKyBhZGRlZCBGcmVlSW1hZ2VfU2F2ZUpQRUcgYW5kIEpQRUcgcXVhbGl0eSBzZXR0aW5ncworIGFkZGVkIEZyZWVJbWFnZV9HZXRCaXRzUm93Q29sCisgYWRkZWQgZnVuY3Rpb24gRklRVF9TZXRPdXRwdXRNZXNzYWdlIHRvIEZyZWVJbWFnZVF0CisgYWRkZWQgRnJlZUltYWdlX0dldEZpbGVUeXBlRnJvbUV4dGVuc2lvbiBhbmQgRklRVF9HZXRGaWxlVHlwZUZyb21Gb3JtYXQKKyBhZGRlZCBwcm9qZWN0IEZyZWVJbWFnZVB5OiBweXRob24gYmluZGluZ3MgZm9yIEZyZWVJbWFnZQoKTm92ZW1iZXIgN3RoIDIwMDAgLSAxLjQuMwoqIGZpeGVkIEZyZWVJbWFnZV9TYXZlUE5HIGNyYXNoIGJ1ZwoqIGZpeGVkIHNsaWdobHkgY29ycnVwdCBzaXplIGZpbHRlciBpbiBGcmVlSW1hZ2VfQ29tYmluZQoqIGZpeGVkIEZyZWVJbWFnZV9TYXZlVElGRiBub3Qgc2F2aW5nIDQtYml0IGltYWdlcwoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGJ1ZyBpbiBGcmVlSW1hZ2VfTG9hZFRJRkYKKiBbSGVydmUgRHJvbG9uXSBmaXhlZCBidWcgaW4gRnJlZUltYWdlX0dldENvbG9yVHlwZQotIHJlbW92ZWQgZmNsb3NlIGZyb20gRnJlZUltYWdlX1NhdmVQTk0gKHdobyBwdXQgaXQgdGhlcmU/KQohIHJld3JvdGUgRnJlZUltYWdlX1JvdGF0ZQohIEZyZWVJbWFnZVF0IG5vdyBhdXRvbWF0aWNhbGx5IGRldGVjdHMgd2hpY2ggZm9ybWF0cyBhcmUgc3VwcG9ydGVkIGJ5IFF0IGFuZCB3aGljaCBub3QKISBGcmVlSW1hZ2VfQWxsb2NhdGUgbm93IHJldHVybnMgYSB2b2lkIHBvaW50ZXIKISBGcmVlSW1hZ2VfVW5sb2FkIGlzIG5vdyBjYWxsZWQgRnJlZUltYWdlX0ZyZWUKKyBhZGRlZCAxNi1iaXQgNS01LTUgc3VwcG9ydCB0byBGcmVlSW1hZ2VfTG9hZEJNUAorIGFkZGVkIFJMRV9ERUxUQSBzdXBwb3J0IHRvIEZyZWVJbWFnZV9Mb2FkQk1QCisgYWRkZWQgZGlyZWN0b3J5IHN1cHBvcnQgdG8gRnJlZUltYWdlX0xvYWRUSUZGCisgYWRkZWQgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCB0cmFuc3BhcmVuY3kKKyBhZGRlZCB0cmFuc3BhcmVuY3kgc3VwcG9ydCB0byA4LWJpdCBQTkcncyBpbiBRdAorIGFkZGVkIEZSRUVfSU1BR0VfUVVBTlRJWkUgcGFyYW1ldGVyIHRvIEZyZWVJbWFnZV9Db2xvclF1YW50aXplCisgYWRkZWQgY3VzdG9tIEZSRUVJTUFHRUhFQURFUiBoZWFkZXIgcHJlcGVuZGVkIHRvIGludGVybmFsIGJpdG1hcHMKKyBhZGRlZCBuZXcgZG9jdW1lbnRhdGlvbgoKT2N0b2JlciAxOHRoIDIwMDAgLSAxLjQuMgoqIGZpeGVkIEZyZWVJbWFnZV9TYXZlQk1QIHN0b3JpbmcgYW4gaW5jb3JyZWN0IGJmU2l6ZSB2YWx1ZSBpbiB0aGUgQklUTUFQRklMRUhFQURFUgoqIGZpeGVkIGJ1ZyB3aGVyZSBKUEVHIGFuZCBQTkcgd291bGRuJ3QgbG9hZCBpbiBGcmVlSW1hZ2VRdAoqIGZpeGVkIEZyZWVJbWFnZV9NaXJyb3IgbWlycm9yaW5nIG9uZSBwaXhlbCBsZXNzIHRoYW4gbmVlZGVkCiEgRnJlZUltYWdlX01hc2tlZENvbWJpbmUyNCBpcyBub3cgY2FsbGVkIEZyZWVJbWFnZV9NYXNrZWRDb21iaW5lMjRFeAohIEZyZWVJbWFnZV9NYXNrZWRDb21iaW5lMzIgaXMgbm93IGNhbGxlZCBGcmVlSW1hZ2VfTWFza2VkQ29tYmluZTMyRXgKKyBhZGRlZCAxNi1iaXQgYml0bWFwIHN1cHBvcnQgdG8gRnJlZUltYWdlX01pcnJvcgorIGFkZGVkIDE2LWJpdCBiaXRtYXAgc3VwcG9ydCB0byBGcmVlSW1hZ2VfQ29udmVydFRvOEJpdHMKKyBhZGRlZCBzaW1wbGUgdmVyc2lvbiBvZiBGcmVlSW1hZ2VfTWFza2VkQ29tYmluZTI0CisgYWRkZWQgc2ltcGxlIHZlcnNpb24gb2YgRnJlZUltYWdlX01hc2tlZENvbWJpbmUzMgoKT2N0b2JlciAxN3RoIDIwMDAgLSAxLjQuMQoqIFtIZXJ2ZSBEcm9sb25dIGZpeGVkIGJ1ZyBpbiBGcmVlSW1hZ2VfQ29udmVydFRvOEJpdHMKKiBmaXhlZCBidWcgaW4gY29udmVyc2lvbiB3aXRoIDE2IC0+IDI0IGFuZCAxNiAtPiAzMgotIHJlbW92ZWQgc3RhdGljIGxpYnJhcnkgc3VwcG9ydAotIHJlbW92ZWQgYWxsIHVubmVjZXNzYXJ5IGZpbGVzIGZyb20gTGliVElGRiwgTGliUE5HLCBMaWJKUEVHIGFuZCBaTGliCi0gcmVtb3ZlZCBhbGwgYWJzb2x1dGUgc2Vla3MgZnJvbSB0aGUgbGlicmFyeQohIEZyZWVJbWFnZVF0IG5vdyBtYWtlcyB1c2Ugb2YgdGhlIERMTCBkaXN0cm8KISByZWJ1aWx0IHRoZSBlbnRpcmUgZGlyZWN0b3J5IHN0cnVjdHVyZQohIGltcHJvdmVkIGhhbmRsaW5nIG9mIEJNUAohIHJlbmFtZWQgRnJlZUltYWdlX01hc2tlZENvbWJpbmUgdG8gRnJlZUltYWdlX01hc2tlZENvbWJpbmUzMgorIFtBbGV4YW5kZXIgRHltZXJldHNdIGFkZGVkIDI0LWJpdCBtYXNrZWQgYWxwaGEgYmxlbmRpbmcgd2l0aCBhIHNlcGVyYXRlIGFscGhhIG1hc2sKKyBhZGRlZCBGcmVlSW1hZ2VfUm90YXRlIChrbm93biBidWcgaW4gZGVncmVlcyA3NiB0byAxMDYpCisgYWRkZWQgNC1iaXQgYml0bWFwIHN1cHBvcnQgdG8gRnJlZUltYWdlX0NvbnZlcnRUbzE2Qml0cworIGFkZGVkIDgtYml0IGJpdG1hcCBzdXBwb3J0IHRvIEZyZWVJbWFnZV9Db252ZXJ0VG8xNkJpdHMKKyBhZGRlZCAzMi1iaXQgYml0bWFwIHN1cHBvcnQgdG8gRnJlZUltYWdlX0NvbnZlcnRUbzE2Qml0cworIGFkZGVkIDMyLWJpdCBiaXRtYXAgc3VwcG9ydCB0byBGcmVlSW1hZ2VfTWlycm9yCisgYWRkZWQgMTYtYml0IDUtNS01IHN1cHBvcnQgdG8gRnJlZUltYWdlX0NvbnZlcnRUbzI0Qml0cworIGFkZGVkIDE2LWJpdCA1LTUtNSBzdXBwb3J0IHRvIEZyZWVJbWFnZV9Db252ZXJ0VG8zMkJpdHMKCk9jdG9iZXIgMnRoIDIwMDAgLSAxLjQuMAoqIFtKYW5pIEthamFsYV0gZml4ZWQgYnVnIGluIGNvbnZlcnNpb24gd2l0aCA0IC0+IDI0IGFuZCA4IC0+IDMyCiogW0phbmkgS2FqYWxhXSBmaXhlZCBidWcgaW4gRnJlZUltYWdlX0ZsaXAKKiBbSmFuaSBLYWphbGFdIGZpeGVkIG1pbm9yIGJ1ZyBpbiBGcmVlSW1hZ2VfTG9hZEJNUAotIFtIZXJ2ZSBEcm9sb25dIHJlbW92ZWQgUEJNRmxhZ3MsIFBHTUZsYWdzIGFuZCBQUE1GbGFncwotIFtIZXJ2ZSBEcm9sb25dIHJlbW92ZWQgRklfTG9hZEdlbmVyaWMKLSByZW1vdmVkIEZyZWVJbWFnZV9XaW4zMi5oCiEgW0hlcnZlIERyb2xvbl0gY2hhbmdlZCBGSV9HZXRGaWxlVHlwZQohIFtIZXJ2ZSBEcm9sb25dIHJlcGxhY2VkIEZJX0xvYWRQQk0sIEZJX0xvYWRQR00gYW5kIEZJX0xvYWRQUE0gd2l0aCBGSV9Mb2FkUE5NCiEgW0hlcnZlIERyb2xvbl0gaW1wcm92ZWQgRnJlZUltYWdlX0xvYWRQTkcKISBGcmVlSW1hZ2VfV3JpdGVQYWxldHRlRW50cnkgaXMgbm93IGV4cG9ydGVkCisgW0hlcnZlIERyb2xvbl0gYWRkZWQgRnJlZUltYWdlX1NhdmVQTkcKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBGcmVlSW1hZ2VfU2F2ZVBOTSBhbmQgUE5NRmxhZ3MKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBYWFhGbGFncyBwYXJhbWV0ZXIgdG8gc2F2ZSBmdW5jdGlvbnMKKyBbSGVydmUgRHJvbG9uXSBhZGRlZCBGcmVlSW1hZ2VfTG9hZFJBUyBhbmQgRklGX1JBUworIGFkZGVkIEZyZWVJbWFnZV9HZXRGaWxlVHlwZUZyb21FeHQKClNlcHRlbWJlciA3dGggMjAwMCAtIDEuMy41CisgYWRkZWQgY29udmVyc2lvbiA0IC0+IDggdG8gRklfQ29udmVydFRvOEJpdHMKKyBhZGRlZCBzaW1wbGUgdmVyc2lvbiBvZiBGSV9HZXRGaWxlVHlwZQorIGFkZGVkIHByb2plY3QgRnJlZUltYWdlUXQ7IGEgcG9ydCBvZiB0aGUgbGlicmFyeSB0byB0aGUgVHJvbGxUZWNoIGxpYnJhcnkKCkF1Z3VzdCAzMXRoIDIwMDAgLSAxLjMuNAoqIGZpeGVkICdpY2UgZWZmZWN0JyBidWcgaW4gbmV3IDI0IGJpdCBQQ1ggY29kZQoqIGZpeGVkIHNvbWUgYnVncyB3aXRoIHRoZSBjb252ZXJzaW9uIDE2IC0+IDI0IGFuZCAxNiAtPiAzMgohIEZJX0JsdXIgbm93IHJldHVybnMgdm9pZAohIEEgZGVidWcgYnVpbGQgb2YgdGhlIGxpYnJhcnkgbm93IHByb2R1Y2VzIEZyZWVJbWFnZWQuZGxsIGFuZCBGcmVlSW1hZ2VkLmxpYgohIFRBUkdBX0xPQURfQVJHQjg4ODggaXMgbm93IGNhbGxlZCBUQVJHQV9MT0FEX1JHQjg4OAohIEFscGhhIGNoYW5uZWxzIGFyZSBub3cgYXV0b21hdGljYWxseSBsb2FkZWQgdW5sZXNzIFRBUkdBX0xPQURfUkdCODg4IGlzIHNwZWNpZmllZAohIGNsZWFuZWQgdXAgdGhlIGNvZGUgYSBsb3QKKyBhZGRlZCAzMi1iaXQgYml0bWFwIHN1cHBvcnQgdG8gRnJlZUltYWdlX0NvbnZlcnRUb0dyZXlzY2FsZQorIGFkZGVkIHN1cHBvcnQgZm9yIDMyLWJpdCBib3R0b20tbGVmdCBUQVJHQSBpbWFnZXMKKyBhZGRlZCBpbnRlcm5hbCBmdW5jdGlvbnMgRnJlZUltYWdlX1dyaXRlUGFsZXR0ZUVudHJ5KCkgYW5kIEZyZWVJbWFnZV9HZXRTY2FuTGluZSgpCisgYWRkZWQgRnJlZUltYWdlX1dpbjMyLmgsIGNvbnRhaW5pbmcgV2luZG93cyBmdW5jdGlvbnMgbmVlZGVkIHRvIGNyZWF0ZSBESUJzCisgYWRkZWQgZG9jdW1lbnRhdGlvbiB0aHJvdWdoIERveHlnZW4KCkp1bHkgMzB0aCAyMDAwIC0gMS4zLjMKKiBbSmFuaSBLYWphbGFdIGZpeGVkIHNvbWUgYnVncyB3aXRoIHRoZSBjb252ZXJzaW9uIDQgLT4gMjQgYW5kIDggLT4gMjQKKiBbSmFuaSBLYWphbGFdIGZpeGVkIHNvbWUgYnVncyB3aXRoIHRoZSBjb252ZXJzaW9uIDQgLT4gMzIgYW5kIDggLT4gMzIKKiBmaXhlZCBidWcgaW4gRklfTG9hZFBOTSdzIEFTQ0lJIG51bWJlciBsb2FkZXIKISBbSGVydmUgRHJvbG9uXSBpbXByb3ZlZCBGSV9Mb2FkUE5HCiEgW0hlcnZlIERyb2xvbl0gY2hhbmdlZCBGSV9Db252ZXJ0VG9HcmV5U2NhbGUgKGFkZGVkIGNoYW5nZWFibGUgbWFjcm8gZm9yIGNvbnZlcnNpb24pCiEgaW1wcm92ZWQgRklfQ29udmVydFRvMjRCaXRzCiEgaW1wcm92ZWQgRklfQ29udmVydFRvMzJCaXRzCiEgZnJlZUltYWdlIG5vdyB1c2VzIExpYlBORyAxLjAuOAorIFtIZXJ2ZSBEcm9sb25dIGFkZGVkIEZJX0NvbG9yUXVhbnRpemUsIGJhc2VkIG9uIFd1J3MgY29sb3IgcXVhbnRpemVyCisgYWRkZWQgdGhlIGNvbnZlcnNpb24gMSAtPiAyNAorIGFkZGVkIHRoZSBjb252ZXJzaW9uIDEgLT4gMzIKKyBhZGRlZCBGSV9Db252ZXJ0VG84Qml0cworIGFkZGVkIEZJX0ludmVydCAodmVyeSB1c2VmdWwgZm9yIGltYWdlIHByb2Nlc3NpbmcpCisgYWRkZWQgRklfR2V0Q29sb3JUeXBlIGFuZCAnZW51bSBGUkVFX0lNQUdFX0NPTE9SX1RZUEUnCgpKdW5lIDMwdGggMjAwMCAtIDEuMy4yCi0gcmVtb3ZlZCBjb2xvciByZWR1Y3Rpb24gZnVuY3Rpb25zIGZyb20gdGhlIHByb2plY3QKISBbSGVydmUgRHJvbG9uXSBJbXByb3ZlZCBGSV9Mb2FkVElGRiBjb2RlCiEgcmVuYW1lZCBGSV9Ub0dyYXlzY2FsZSB0byBGSV9Db252ZXJ0VG9HcmV5U2NhbGUKISByZW5hbWVkIEZJX0luY3JlYXNlQ29sb3JzIHRvIEZJX0NvbnZlcnRUbzI0Qml0cwohIExvYWRCTVAgbm93IHN1cHBvcnRzIDMyLWJpdCBiaXRtYXBzCiEgW0phbmkgS2FqYWxhXSBJbXByb3ZlZCBGSV9Mb2FkVEFSR0EgYW5kIEZJX0xvYWRQQ1ggY29kZQorIGFkZGVkIEZJX0NvbnZlcnRUbzMyQml0cyB0byBjb252ZXJ0IGEgYml0bWFwIHRvIDMyLWJpdAorIGFkZGVkIEZJX01hc2tDb21iaW5lIHRvIGNvbWJpbmUgdHdvIDMyLWJpdCBiaXRtYXBzIHVzaW5nIGEgYWxwaGEgbWFzaworIGFkZGVkIEZJX0FkZEFscGhhTWFzayB0byBlbnJpY2ggYSAzMi1iaXQgYml0bWFwIHdpdGggYW4gYWxwaGEgbWFzaworIGFkZGVkIEZJX1NhdmVUSUZGCisgYWRkZWQgMTYtYml0IGJpdG1hcCAoNTY1KSBzdXBwb3J0IHRvIHRoZSBDb252ZXJ0VG9YWFggZnVuY3Rpb25zLgorIGFkZGVkIEZJX0NvbnZlcnRUbzE2Qml0cyAoNTU1IGFuZCA1NjUpCgpKdW5lIDF0aCAyMDAwIC0gMS4zLjEKLSByZW1vdmVkIFN0YW5kYXJkIFRlbXBsYXRlIExpYnJhcnkgKFNUTCkgY29kZQoqIFtKYW5pIEthamFsYV0gZml4ZWQgbWlub3IgYnVnIGluIEZJX0xvYWRUQVJHQQoqIFtKYW5pIEthamFsYV0gZml4ZWQgc29tZSBtaW5vciBidWdzIGluIEZJX0xvYWRQQ1gKISBzdHJlYW1saW5lZCBGSV9Mb2FkSlBFRyBhIGxpdHRsZQohIEZyZWVJbWFnZSBub3cgdXNlcyBMaWJQTkcgMS4wLjYKISBGcmVlSW1hZ2Ugbm93IHVzZXMgTGliVElGRiAzLjUuNQohIEZyZWVJbWFnZSBub3cgdXNlcyBtYWxsb2MgYW5kIGZyZWUgaW5zdGVhZCBvZiBuZXcgYW5kIGRlbGV0ZQorIGludHJvZHVjZWQgY29tcGlsZXIgZmxhZ3MgdG8gZGlzYWJsZSBjZXJ0YWluIGZlYXR1cmVzIGluIHRoZSBETEwKKyBhZGRlZCBleHBlcmltZW50YWwgbmVhcmVzdCBjb2xvciByZWR1Y3Rpb24gKEZJX1JlZHVjZUNvbG9yc05lYXJlc3RDb2xvcikKCkFwcmlsIDEzdGggMjAwMCAtIDEuMy4wCiogZml4ZWQgc29tZSA4IGJpdCBQQ1ggZmlsZXMgbG9hZGluZyBpbmNvcnJlY3RseQoqIGZpeGVkIHRpbnkgYnVnIGluIGludGVybmFsbHkgdXNlZCBDYWxjdWxhdGVVc2VkQ29sb3JzIGZ1bmN0aW9uCi0gcmVtb3ZlZCBGSV9TYXZlWFBNLiBPbmx5IEJNUCBpcyBzdXBwb3J0ZWQgbm93LgotIHJlbW92ZWQgV2luZG93cyBkZXBlbmRlbmNpZXMgZm9yIGVhc2llciBwb3J0aW5nCiEgb3B0aW1pemVkIEZJX0xvYWRLT0FMQSBhIGxpdHRsZQohIG9wdGltaXplZCBGSV9Db21iaW5lIHVzaW5nIE1NWCB0ZWNobm9sb2d5CiEgRklfQ29tYmluZSBub3cgcmVjZWl2ZXMgYW4gJ3Vuc2lnbmVkIGludGVnZXInIGFzIGFscGhhIGJsZW5kIHBhcmFtZXRlcgohIEZJX0luQ3JlYXNlQ29sb3JzIGFuZCBGSV9SZWR1Y2VDb2xvcnMgZG9uJ3QgZGlzcG9zZSB0aGUgb2xkIGJpdG1hcCBhbnltb3JlCisgYWRkZWQgUE5NIHN1cHBvcnQgKFBHTSwgUFBNIGFuZCBQQk07IGJvdGggYmluYXJ5IGFuZCBhc2NpaSkKKyBbQWxleGFuZGVyIER5bWVyZXRzXSBhZGRlZCBGSV9FbmFibGVNTVggYW5kIEZJX0Rpc2FibGVNTVgKKyBhZGRlZCB2YXJpb3VzIGVmZmVjdCBmdW5jdGlvbnMgKEZJX0JsdXIsIEZJX0JyaWdodGVuIGFuZCBGSV9Dcm9wKQoKTWFyY2ggMXN0IDIwMDAgLSAxLjIuMQoqIGZpeGVkIHNvbWUgMjQgYml0IFBDWCBmaWxlcyBsb2FkaW5nIGluY29ycmVjdGx5CgpGZWJydWFyeSA4dGggMjAwMCAtIDEuMi4wCiogZml4ZWQgbGFzdCBiaXRtYXAgZGF0YSBibG9jayBpbiBKUEVHIGZpbGVzIGJlaW5nIHRydW5jYXRlZAoqIGZpeGVkIDQvOCBiaXQgQk1QJ3MgaW5jb3JyZWN0bHkgbG9hZGluZyB3aGVuIHRoZSBwYWxldHRlIGlzIHNtYWxsZXIgdGhhbiB0aGUgYml0Y291bnQgcHJlZGljdHMKLSByZW1vdmVkIEZJX0xvYWQuIFRoZXJlIGlzIG5vIHJlbGlhYmxlIHdheSB0byBpZGVudGlmeSBhbGwgaW1hZ2UgZm9ybWF0cwotIHJlbW92ZWQgRklfU2V0SnBlZ0RlY29kZU1vZGUuCiAgIE1vZGUgc2VsZWN0aW9uIGlzIG5vdyBkb25lIHVzaW5nIHRoZSAnRGF0YUVudW0gZGF0YScgcGFyYW1ldGVyIG9mIEZJX0xvYWRKUEVHCiEgcmVhZF9wcm9jL3dyaXRlX3Byb2MvdGVsbF9wcm9jIGluIEZyZWVJbWFnZUlPIG5vdyBhcmUgc2FtZSBhcyBmcmVhZC9md3JpdGUvZnRlbGwKKyBhZGRlZCBhICdEYXRhRW51bSBkYXRhJyBwYXJhbWV0ZXIgdG8gYWxsIEZJX0xvYWRYWFggZnVuY3Rpb25zLgorIGFkZGVkIDE2IGJpdCBUQVJHQSBzdXBwb3J0CisgYWRkZWQgUkxFIHN1cHBvcnQgZm9yIFRBUkdBIGltYWdlcworIGFkZGVkIEZJX0dldERJQlNpemUgdG8gZ2V0IHRoZSBzaXplIG9mIGEgRElCIGluIGJ5dGVzCisgYWRkZWQgS29kYWsgUGhvdG9DRCBzdXBwb3J0IChCYXNlLCBCYXNlLzQgYW5kIEJhc2UvMTYgZW5jb2RpbmcpCisgYWRkZWQgS09BTEEgc3VwcG9ydAorIGFkZGVkIEZJX0dldEZpbGVUeXBlLiBOb3RlOiB0aGVyZSBpcyBubyByZWxpYWJsZSB3YXkgdG8gaWRlbnRpZnkgVEFSR0EsIElDTyBhbmQgUENELiBUaGVyZWZvcmUgdGhleSBoYXZlIGJlZW4gZXhjbHVkZWQKSW4gS09BTEEgZmlsZXMgb25seSB0aGUgZmlsZXMgY29udmVydGVkIGJ5IGEgQzY0IGVtdWxhdG9yIGNhbiBiZSBpZGVudGlmaWVkLgorIGFkZGVkIEZJX0NvbWJpbmUgdG8gY29tYmluZSB0d28gMjQtYml0IGJpdG1hcHMgd2l0aCAob3B0aW9uYWwpIGFscGhhIGJsZW5kaW5nCgpKYW51YXJ5IDE1dGggMjAwMCAtIDEuMS4xCiEgRklfQ29weSBpcyBub3cgY2FsbGVkIEZJX0Nsb25lCisgYWRkZWQgRklfVG9HcmF5c2NhbGUgdG8gY29udmVydCBhIGNvbG9yIGJpdG1hcCB0byBncmF5c2NhbGUKKyBhZGRlZCAzMiBiaXQgVEFSR0Egc3VwcG9ydAorIGFkZGVkIEZJX0luY3JlYXNlQ29sb3JzIHRvIGluY3JlYXNlIHRoZSBiaXRtYXAgYml0ZGVwdGggZnJvbSA0LzggYml0IHRvIDI0IGJpdAoKSmFudWFyeSAxNHRoIDIwMDAgLSAxLjEuMAoqIEZJX01JUlJPUjogZml4ZWQgbmliYmxlcyBub3QgYmVpbmcgbWlycm9yZWQgaW4gNCBiaXQgaW1hZ2VzCiogRklfTUlSUk9SOiBmaXhlZCBiaXRzIG5vdCBiZWluZyBtaXJyb3JlZCBpbiAxIGJpdCBpbWFnZXMKKiBmaXhlZCBpbXByb3BlciBsb2FkaW5nIG9mIDEsIDQgYW5kIDggYml0IE9TLzIgQk1QJ3MKKiBmaXhlZCBzb21lIGluY29uc2lzdGVuc2llcyBpbiB0aGUgY2FsY3VsYXRpb24gb2YgbGluZXMgYW5kIHBpdGNoZXMKKiBmaXhlZCBpbmNvcnJlY3RseSBsb2FkaW5nIG9mIEh1ZmZtYW4gYW5kIEZBWCBlbmNvZGVkIFRJRkZzCiogZml4ZWQgTG9hZFRHQSBhY2NlcHRpbmcgMTYgYml0IFRHQSdzIGFuZCByZXR1cm5pbmcgY29ycnVwdCBESUIncwotIHJlbW92ZWQgTFpXIHN1cHBvcnQgZm9yIFRJRkZzCiEgRnJlZUltYWdlIG5vdyB1c2VzIExpYlRJRkYgMy41LjQKKyBhZGRlZCBJQ08gc3VwcG9ydAorIGFkZGVkIG92ZXJyaWRhYmxlIGZpbGUgSS9PIHN1cHBvcnQgaW4gdGhlIGZvcm0gb2YgRnJlZUltYWdlSU8gYW5kIGZpX2hhbmRsZQorIGFkZGVkIEZJX0xvYWQgZm9yIGdlbmVyaWMgaW1hZ2UgbG9hZGluZworIGFkZGVkIEZJX1JlZHVjZUNvbG9ycyBmb3IgY29sb3IgcmVkdWN0aW9uCisgYWRkZWQgRklfQ29weSB0byBjb3B5IGEgYml0bWFwIGluIG1lbW9yeQoKSmFudWFyeSA1dGggMjAwMCAtIDEuMC4wCg==