SElTVE9SWSBvZiB0aGUgTFpNQSBTREsNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCjE2LjA0ICAgICAgICAgIDIwMTYtMTAtMDQNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIGJ1ZyB3YXMgZml4ZWQgaW4gRGxsU2VjdXIuYy4NCg0KDQoxNi4wMyAgICAgICAgICAyMDE2LTA5LTI4DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIFNGWCBtb2R1bGVzIG5vdyB1c2Ugc29tZSBwcm90ZWN0aW9uIGFnYWluc3QgRExMIHByZWxvYWRpbmcgYXR0YWNrLg0KLSBTb21lIGJ1Z3MgaW4gN3ogY29kZSB3ZXJlIGZpeGVkLg0KDQoNCjE2LjAyICAgICAgICAgIDIwMTYtMDUtMjENCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIEJVRyBpbiAxNi4wMCAtIDE2LjAxIHdhcyBmaXhlZDoNCiAgU3BsaXQgSGFuZGxlciAoU3BsaXRIYW5kbGVyLmNwcCkgcmV0dXJuZWQgaW5jb3JyZWN0IA0KICB0b3RhbCBzaXplIHZhbHVlIChrcGlkU2l6ZSkgZm9yIHNwbGl0IGFyY2hpdmVzLg0KDQoNCjE2LjAxICAgICAgICAgIDIwMTYtMDUtMTkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQotIFNvbWUgaW50ZXJuYWwgY2hhbmdlcyB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBjb21waWxlciB3YXJuaW5ncy4NCg0KDQoxNi4wMCAgICAgICAgICAyMDE2LTA1LTEwDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KLSBTb21lIGJ1Z3Mgd2VyZSBmaXhlZC4NCg0KDQoxNS4xMiAgICAgICAgICAyMDE1LTExLTE5DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KLSBUaGUgQlVHIGluIEMgdmVyc2lvbiBvZiA3eiBkZWNvZGVyIHdhcyBmaXhlZDoNCiAgN3pEZWMuYyA6IFN6RGVjb2RlTHptYTIoKQ0KICA3eiBkZWNvZGVyIGNvdWxkIG1pc3Rha2VubHkgcmVwb3J0IGFib3V0IGRlY29kaW5nIGVycm9yIGZvciBzb21lIDd6IGFyY2hpdmVzDQogIHRoYXQgdXNlIExaTUEyIGNvbXByZXNzaW9uIG1ldGhvZC4NCiAgVGhlIHByb2JhYmlsaXR5IHRvIGdldCB0aGF0IG1pc3Rha2VuIGRlY29kaW5nIGVycm9yIHJlcG9ydCB3YXMgYWJvdXQgDQogIG9uZSBlcnJvciBwZXIgMTYzODQgc29saWQgYmxvY2tzIGZvciBzb2xpZCBibG9ja3MgbGFyZ2VyIHRoYW4gMTYgS0IgKGNvbXByZXNzZWQgc2l6ZSkuIA0KLSBUaGUgQlVHIChpbiA5LjI2LTE1LjExKSBpbiBDIHZlcnNpb24gb2YgN3ogZGVjb2RlciB3YXMgZml4ZWQ6DQogIDd6QXJjSW4uYyA6IFN6UmVhZEhlYWRlcjIoKQ0KICA3eiBkZWNvZGVyIHdvcmtlZCBpbmNvcnJlY3RseSBmb3IgN3ogYXJjaGl2ZXMgdGhhdCBjb250YWluIA0KICBlbXB0eSBzb2xpZCBibG9ja3MsIHRoYXQgY2FuIGJlIHBsYWNlZCB0byA3eiBhcmNoaXZlLCBpZiBzb21lIGZpbGUgaXMgDQogIHVuYXZhaWxhYmxlIGZvciByZWFkaW5nIGR1cmluZyBhcmNoaXZlIGNyZWF0aW9uLg0KDQoNCjE1LjA5IGJldGEgICAgIDIwMTUtMTAtMTYNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQotIFRoZSBCVUcgaW4gTFpNQSAvIExaTUEyIGVuY29kaW5nIGNvZGUgd2FzIGZpeGVkLg0KICBUaGUgQlVHIGluIEx6RmluZC5jOjpNYXRjaEZpbmRlcl9SZWFkQmxvY2soKSBmdW5jdGlvbi4NCiAgSWYgaW5wdXQgZGF0YSBzaXplIGlzIGxhcmdlciB0aGFuICg0IEdpQiAtIGRpY3Rpb25hcnlfc2l6ZSksDQogIHRoZSBmb2xsb3dpbmcgY29kZSB3b3JrZWQgaW5jb3JyZWN0bHk6DQogIC0gIExaTUEgOiBMem1hRW5jX01lbUVuY29kZSgpLCBMem1hRW5jb2RlKCkgOiBMWk1BIGVuY29kaW5nIGZ1bmN0aW9ucyANCiAgICAgZm9yIGNvbXByZXNzaW5nIGZyb20gbWVtb3J5IHRvIG1lbW9yeS4gDQogICAgIFRoYXQgQlVHIGlzIG5vdCByZWxhdGVkIHRvIExaTUEgZW5jb2RlciB2ZXJzaW9uIHRoYXQgd29ya3MgdmlhIHN0cmVhbXMuDQogIC0gIExaTUEyIDogbXVsdGktdGhyZWFkZWQgdmVyc2lvbiBvZiBMWk1BMiBlbmNvZGVyIHdvcmtlZCBpbmNvcnJlY3RseSwgaWYgDQogICAgIGRlZmF1bHQgdmFsdWUgb2YgY2h1bmsgc2l6ZSAoQ0x6bWEyRW5jUHJvcHM6OmJsb2NrU2l6ZSkgaXMgY2hhbmdlZCANCiAgICAgdG8gdmFsdWUgbGFyZ2VyIHRoYW4gKDQgR2lCIC0gZGljdGlvbmFyeV9zaXplKS4NCg0KDQo5LjM4IGJldGEgICAgICAyMDE1LTAxLTAzDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KLSBUaGUgQlVHIGluIDkuMzEtOS4zNyB3YXMgZml4ZWQ6DQogIElBcmNoaXZlR2V0UmF3UHJvcHMgaW50ZXJmYWNlIHdhcyBkaXNhYmxlZCBmb3IgN3ogYXJjaGl2ZXMuDQotIFRoZSBCVUcgaW4gOS4yNi05LjM2IHdhcyBmaXhlZDoNCiAgU29tZSBjb2RlIGluIENQUFw3emlwXEFyY2hpdmVcN3pcIHdvcmtlZCBjb3JyZWN0bHkgb25seSB1bmRlciBXaW5kb3dzLg0KDQoNCjkuMzYgYmV0YSAgICAgIDIwMTQtMTItMjYNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQotIFRoZSBCVUcgaW4gY29tbWFuZCBsaW5lIHZlcnNpb24gd2FzIGZpeGVkOg0KICA3LVppcCBjcmVhdGVkIHRlbXBvcmFyeSBhcmNoaXZlIGluIGN1cnJlbnQgZm9sZGVyIGR1cmluZyB1cGRhdGUgYXJjaGl2ZQ0KICBvcGVyYXRpb24sIGlmIC13e1BhdGh9IHN3aXRjaCB3YXMgbm90IHNwZWNpZmllZC4gDQogIFRoZSBmaXhlZCA3LVppcCBjcmVhdGVzIHRlbXBvcmFyeSBhcmNoaXZlIGluIGZvbGRlciB0aGF0IGNvbnRhaW5zIHVwZGF0ZWQgYXJjaGl2ZS4NCi0gVGhlIEJVRyBpbiA5LjMzLTkuMzUgd2FzIGZpeGVkOg0KICA3LVppcCBzaWxlbnRseSBpZ25vcmVkIGZpbGUgcmVhZGluZyBlcnJvcnMgZHVyaW5nIDd6IG9yIGd6IGFyY2hpdmUgY3JlYXRpb24sDQogIGFuZCB0aGUgY3JlYXRlZCBhcmNoaXZlIGNvbnRhaW5lZCBvbmx5IHBhcnQgb2YgZmlsZSB0aGF0IHdhcyByZWFkIGJlZm9yZSBlcnJvci4NCiAgVGhlIGZpeGVkIDctWmlwIHN0b3BzIGFyY2hpdmUgY3JlYXRpb24gYW5kIGl0IHJlcG9ydHMgYWJvdXQgZXJyb3IuDQoNCg0KOS4zNSBiZXRhICAgICAgMjAxNC0xMi0wNw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkNCi0gN3pyLmV4ZSBub3cgc3VwcG9ydCBBRVMgZW5jcnlwdGlvbi4NCi0gU0ZYIG11ZHVsZXMgd2VyZSBhZGRlZCB0byBMWk1BIFNESw0KLSBTb21lIGJ1Z3Mgd2VyZSBmaXhlZC4NCg0KDQo5LjIxIGJldGEgICAgICAyMDExLTA0LTExDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KLSBOZXcgY2xhc3MgRlN0cmluZyBmb3IgZmlsZSBuYW1lcyBhdCBmaWxlIHN5c3RlbXMuDQotIFNwZWVkIG9wdGltaXphdGlvbiBpbiBDUkMgY29kZSBmb3IgYmlnLWVuZGlhbiBDUFVzLg0KLSBUaGUgQlVHIGluIEx6bWEyRGVjLmMgd2FzIGZpeGVkOg0KICAgIEx6bWEyRGVjb2RlIGZ1bmN0aW9uIGRpZG4ndCB3b3JrLg0KDQoNCjkuMTggYmV0YSAgICAgIDIwMTAtMTEtMDINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQotIE5ldyBzbWFsbCBTRlggbW9kdWxlIGZvciBpbnN0YWxsZXJzIChTZnhTZXR1cCkuDQoNCg0KOS4xMiBiZXRhICAgICAgMjAxMC0wMy0yNA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBUaGUgQlVHIGluIExaTUEgU0RLIDkuKiB3YXMgZml4ZWQ6IExaTUEyIGNvZGVjIGRpZG4ndCB3b3JrLA0KICBpZiBtb3JlIHRoYW4gMTAgdGhyZWFkcyB3ZXJlIHVzZWQgKG9yIG1vcmUgdGhhbiAyMCB0aHJlYWRzIGluIHNvbWUgbW9kZXMpLg0KDQoNCjkuMTEgYmV0YSAgICAgIDIwMTAtMDMtMTUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gUFBNZCBjb21wcmVzc2lvbiBtZXRob2Qgc3VwcG9ydA0KICAgDQoNCjkuMDkgICAgICAgICAgIDIwMDktMTItMTINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIGJ1ZyB3YXMgZml4ZWQ6DQogICBVdGYxNl9Ub19VdGY4IGZ1bnN0aW9ucyBpbiBVVEZDb252ZXJ0LmNwcCBhbmQgN3pNYWluLmMNCiAgIGluY29ycmVjdGx5IGNvbnZlcnRlZCBzdXJyb2dhdGUgY2hhcmFjdGVycyAodGhlIGNvZGUgPj0gMHgxMDAwMCkgdG8gVVRGLTguDQotIFNvbWUgYnVncyB3ZXJlIGZpeGVkDQoNCg0KOS4wNiAgICAgICAgICAgMjAwOS0wOC0xNw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb21lIGNoYW5nZXMgaW4gQU5TSS1DIDd6IERlY29kZXIgaW50ZXJmYWNlcy4NCg0KDQo5LjA0ICAgICAgICAgICAyMDA5LTA1LTMwDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIExaTUEyIGNvbXByZXNzaW9uIG1ldGhvZCBzdXBwb3J0DQotIHh6IGZvcm1hdCBzdXBwb3J0DQoNCg0KNC42NSAgICAgICAgICAgMjAwOS0wMi0wMw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb21lIG1pbm9yIGZpeGVzDQoNCg0KNC42MyAgICAgICAgICAgMjAwOC0xMi0zMQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb21lIG1pbm9yIGZpeGVzDQoNCg0KNC42MSBiZXRhICAgICAgMjAwOC0xMS0yMw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBUaGUgYnVnIGluIEFOU0ktQyBMWk1BIERlY29kZXIgd2FzIGZpeGVkOg0KICAgIElmIGVuY29kZWQgc3RyZWFtIHdhcyBjb3JydXB0ZWQsIGRlY29kZXIgY291bGQgYWNjZXNzIG1lbW9yeSANCiAgICBvdXRzaWRlIG9mIGFsbG9jYXRlZCByYW5nZS4NCi0gU29tZSBjaGFuZ2VzIGluIEFOU0ktQyA3eiBEZWNvZGVyIGludGVyZmFjZXMuDQotIExaTUEgU0RLIGlzIHBsYWNlZCBpbiB0aGUgcHVibGljIGRvbWFpbi4NCg0KDQo0LjYwIGJldGEgICAgICAyMDA4LTA4LTE5DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIFNvbWUgbWlub3IgZml4ZXMuDQoNCg0KNC41OSBiZXRhICAgICAgMjAwOC0wOC0xMw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBUaGUgYnVnIHdhcyBmaXhlZDoNCiAgICBMWk1BIEVuY29kZXIgaW4gZmFzdCBjb21wcmVzc2lvbiBtb2RlIGNvdWxkIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBvZiANCiAgICBhbGxvY2F0ZWQgcmFuZ2UgaW4gc29tZSByYXJlIGNhc2VzLg0KDQoNCjQuNTggYmV0YSAgICAgIDIwMDgtMDUtMDUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gQU5TSS1DIExaTUEgRGVjb2RlciB3YXMgcmV3cml0dGVuIGZvciBzcGVlZCBvcHRpbWl6YXRpb25zLg0KLSBBTlNJLUMgTFpNQSBFbmNvZGVyIHdhcyBpbmNsdWRlZCB0byBMWk1BIFNESy4NCi0gQysrIExaTUEgY29kZSBub3cgaXMganVzdCB3cmFwcGVyIG92ZXIgQU5TSS1DIGNvZGUuDQoNCg0KNC41NyAgICAgICAgICAgMjAwNy0xMi0xMg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTcGVlZCBvcHRpbWl6YXRpb25zIGluINErKyBMWk1BIERlY29kZXIuIA0KLSBTbWFsbCBjaGFuZ2VzIGZvciBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBzb21lIEMvQysrIGNvbXBpbGVycy4NCg0KDQo0LjQ5IGJldGEgICAgICAyMDA3LTA3LTA1DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIC43eiBBTlNJLUMgRGVjb2RlcjoNCiAgICAgLSBub3cgaXQgc3VwcG9ydHMgQkNKIGFuZCBCQ0oyIGZpbHRlcnMNCiAgICAgLSBub3cgaXQgc3VwcG9ydHMgZmlsZXMgbGFyZ2VyIHRoYW4gNCBHQi4NCiAgICAgLSBub3cgaXQgc3VwcG9ydHMgIkxhc3QgV3JpdGUgVGltZSIgZmllbGQgZm9yIGZpbGVzLg0KLSBDKysgY29kZSBmb3IgLjd6IGFyY2hpdmVzIGNvbXByZXNzaW5nL2RlY29tcHJlc3NpbmcgZnJvbSA3LXppcCANCiAgd2FzIGluY2x1ZGVkIHRvIExaTUEgU0RLLg0KICANCg0KNC40MyAgICAgICAgICAgMjAwNi0wNi0wNA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTbWFsbCBjaGFuZ2VzIGZvciBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBzb21lIEMvQysrIGNvbXBpbGVycy4NCiAgDQoNCjQuNDIgICAgICAgICAgIDIwMDYtMDUtMTUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gU21hbGwgY2hhbmdlcyBpbiAuaCBmaWxlcyBpbiBBTlNJLUMgdmVyc2lvbi4NCiAgDQoNCjQuMzkgYmV0YSAgICAgIDIwMDYtMDQtMTQNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIGJ1ZyBpbiB2ZXJzaW9ucyA0LjMzYjo0LjM4YiB3YXMgZml4ZWQ6DQogIEMrKyB2ZXJzaW9uIG9mIExaTUEgZW5jb2RlciBjb3VsZCBub3QgY29ycmVjdGx5IGNvbXByZXNzIA0KICBmaWxlcyBsYXJnZXIgdGhhbiAyIEdCIHdpdGggSEM0IG1hdGNoIGZpbmRlciAoLW1maGM0KS4NCiAgDQoNCjQuMzcgYmV0YSAgICAgIDIwMDUtMDQtMDYNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gRml4ZXMgaW4gQysrIGNvZGU6IGNvZGUgY291bGQgbm8gYmUgY29tcGlsZWQgaWYgX05PX0VYQ0VQVElPTlMgd2FzIGRlZmluZWQuIA0KDQoNCjQuMzUgYmV0YSAgICAgIDIwMDUtMDMtMDINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIGJ1ZyB3YXMgZml4ZWQgaW4gQysrIHZlcnNpb24gb2YgTFpNQSBEZWNvZGVyOg0KICAgIElmIGVuY29kZWQgc3RyZWFtIHdhcyBjb3JydXB0ZWQsIGRlY29kZXIgY291bGQgYWNjZXNzIG1lbW9yeSANCiAgICBvdXRzaWRlIG9mIGFsbG9jYXRlZCByYW5nZS4NCg0KDQo0LjM0IGJldGEgICAgICAyMDA2LTAyLTI3DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIENvbXByZXNzaW5nIHNwZWVkIGFuZCBtZW1vcnkgcmVxdWlyZW1lbnRzIGZvciBjb21wcmVzc2luZyB3ZXJlIGluY3JlYXNlZA0KLSBMWk1BIG5vdyBjYW4gdXNlIG9ubHkgdGhlc2UgbWF0Y2ggZmluZGVyczogSEM0LCBCVDIsIEJUMywgQlQ0DQoNCg0KNC4zMiAgICAgICAgICAgMjAwNS0xMi0wOQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBKYXZhIHZlcnNpb24gb2YgTFpNQSBTREsgd2FzIGluY2x1ZGVkDQoNCg0KNC4zMCAgICAgICAgICAgMjAwNS0xMS0yMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBDb21wcmVzc2lvbiByYXRpbyB3YXMgaW1wcm92ZWQgaW4gLWEyIG1vZGUNCi0gU3BlZWQgb3B0aW1pemF0aW9ucyBmb3IgY29tcHJlc3NpbmcgaW4gLWEyIG1vZGUNCi0gLWZiIHN3aXRjaCBub3cgc3VwcG9ydHMgdmFsdWVzIHVwIHRvIDI3Mw0KLSBUaGUgYnVnIGluIDd6X0MgKDd6SW4uYykgd2FzIGZpeGVkOg0KICBJdCB1c2VkIEFsbG9jL0ZyZWUgZnVuY3Rpb25zIGZyb20gZGlmZmVyZW50IG1lbW9yeSBwb29scy4NCiAgU28gaWYgcHJvZ3JhbSB1c2VkIHR3byBtZW1vcnkgcG9vbHMsIGl0IHdvcmtlZCBpbmNvcnJlY3RseS4NCi0gN3pfQzogLjd6IGZvcm1hdCBzdXBwb3J0aW5nIHdhcyBpbXByb3ZlZA0KLSBMWk1BIyBTREsgKEMjLk5FVCB2ZXJzaW9uKSB3YXMgaW5jbHVkZWQNCg0KDQo0LjI3IChVcGRhdGVkKSAyMDA1LTA5LTIxDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIFNvbWUgR1VJRHMvaW50ZXJmYWNlcyBpbiBDKysgd2VyZSBjaGFuZ2VkLg0KIElTdHJlYW0uaDoNCiAgIElTZXF1ZW50aWFsSW5TdHJlYW06OlJlYWQgbm93IHdvcmtzIGFzIG9sZCBSZWFkUGFydA0KICAgSVNlcXVlbnRpYWxPdXRTdHJlYW06OldyaXRlIG5vdyB3b3JrcyBhcyBvbGQgV3JpdGVQYXJ0DQoNCg0KNC4yNyAgICAgICAgICAgMjAwNS0wOC0wNw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBUaGUgYnVnIGluIEx6bWFEZWNvZGVTaXplLmMgd2FzIGZpeGVkOg0KICAgaWYgX0xaTUFfSU5fQ0IgYW5kIF9MWk1BX09VVF9SRUFEIHdlcmUgZGVmaW5lZCwNCiAgIGRlY29tcHJlc3Npbmcgd29ya2VkIGluY29ycmVjdGx5Lg0KDQoNCjQuMjYgICAgICAgICAgIDIwMDUtMDgtMDUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gRml4ZXMgaW4gN3pfQyBjb2RlIGFuZCBMem1hVGVzdC5jOg0KICBwcmV2aW91cyB2ZXJzaW9ucyBjb3VsZCB3b3JrIGluY29ycmVjdGx5LA0KICBpZiBtYWxsb2MoMCkgcmV0dXJucyAwDQoNCg0KNC4yMyAgICAgICAgICAgMjAwNS0wNi0yOQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTbWFsbCBmaXhlcyBpbiBDKysgY29kZQ0KDQoNCjQuMjIgICAgICAgICAgIDIwMDUtMDYtMTANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gU21hbGwgZml4ZXMNCg0KDQo0LjIxICAgICAgICAgICAyMDA1LTA2LTA4DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIEludGVyZmFjZXMgZm9yIEFOU0ktQyBMWk1BIERlY29kZXIgKEx6bWFEZWNvZGUuYykgd2VyZSBjaGFuZ2VkDQotIE5ldyBhZGRpdGlvbmFsIHZlcnNpb24gb2YgQU5TSS1DIExaTUEgRGVjb2RlciB3aXRoIHpsaWItbGlrZSBpbnRlcmZhY2U6DQogICAgLSBMem1hU3RhdGVEZWNvZGUuaA0KICAgIC0gTHptYVN0YXRlRGVjb2RlLmMNCiAgICAtIEx6bWFTdGF0ZVRlc3QuYw0KLSBBTlNJLUMgTFpNQSBEZWNvZGVyIG5vdyBjYW4gZGVjb21wcmVzcyBmaWxlcyBsYXJnZXIgdGhhbiA0IEdCDQoNCg0KNC4xNyAgICAgICAgICAgMjAwNS0wNC0xOA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBOZXcgZXhhbXBsZSBmb3IgUkFNLT5SQU0gY29tcHJlc3NpbmcvZGVjb21wcmVzc2luZzogDQogIExaTUEgKyBCQ0ogKGZpbHRlciBmb3IgeDg2IGNvZGUpOg0KICAgIC0gTHptYVJhbS5oDQogICAgLSBMem1hUmFtLmNwcA0KICAgIC0gTHptYVJhbURlY29kZS5oDQogICAgLSBMem1hUmFtRGVjb2RlLmMNCiAgICAtIC1mODYgc3dpdGNoIGZvciBsem1hLmV4ZQ0KDQoNCjQuMTYgICAgICAgICAgIDIwMDUtMDMtMjkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIGJ1ZyB3YXMgZml4ZWQgaW4gTHptYURlY29kZS5jIChBTlNJLUMgTFpNQSBEZWNvZGVyKTogDQogICBJZiBfTFpNQV9PVVRfUkVBRCB3YXMgZGVmaW5lZCwgYW5kIGlmIGVuY29kZWQgc3RyZWFtIHdhcyBjb3JydXB0ZWQsDQogICBkZWNvZGVyIGNvdWxkIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBvZiBhbGxvY2F0ZWQgcmFuZ2UuDQotIFNwZWVkIG9wdGltaXphdGlvbiBvZiBBTlNJLUMgTFpNQSBEZWNvZGVyIChub3cgaXQncyBhYm91dCAyMCUgZmFzdGVyKS4NCiAgT2xkIHZlcnNpb24gb2YgTFpNQSBEZWNvZGVyIG5vdyBpcyBpbiBmaWxlIEx6bWFEZWNvZGVTaXplLmMuIA0KICBMem1hRGVjb2RlU2l6ZS5jIGNhbiBwcm92aWRlIHNsaWdodGx5IHNtYWxsZXIgY29kZSB0aGFuIEx6bWFEZWNvZGUuYw0KLSBTbWFsbCBzcGVlZCBvcHRpbWl6YXRpb24gaW4gTFpNQSBDKysgY29kZQ0KLSBmaWx0ZXIgZm9yIFNQQVJDJ3MgY29kZSB3YXMgYWRkZWQNCi0gU2ltcGxpZmllZCB2ZXJzaW9uIG9mIC43eiBBTlNJLUMgRGVjb2RlciB3YXMgaW5jbHVkZWQNCg0KDQo0LjA2ICAgICAgICAgICAyMDA0LTA5LTA1DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIFRoZSBidWcgaW4gdjQuMDUgd2FzIGZpeGVkOg0KICAgIExaTUEtRW5jb2RlciBkaWRuJ3QgcmVsZWFzZSBvdXRwdXQgc3RyZWFtIGluIHNvbWUgY2FzZXMuDQoNCg0KNC4wNSAgICAgICAgICAgMjAwNC0wOC0yNQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb3VyY2UgY29kZSBvZiBmaWx0ZXJzIGZvciB4ODYsIElBLTY0LCBBUk0sIEFSTS1UaHVtYiANCiAgYW5kIFBvd2VyUEMgY29kZSB3YXMgaW5jbHVkZWQgdG8gU0RLDQotIFNvbWUgaW50ZXJuYWwgbWlub3IgY2hhbmdlcw0KDQoNCjQuMDQgICAgICAgICAgIDIwMDQtMDctMjgNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gTW9yZSBjb21wYXRpYmlsaXR5IHdpdGggc29tZSBDKysgY29tcGlsZXJzDQoNCg0KNC4wMyAgICAgICAgICAgMjAwNC0wNi0xOA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAiQmVuY2htYXJrIiBjb21tYW5kIHdhcyBhZGRlZC4gSXQgbWVhc3VyZXMgY29tcHJlc3NpbmcgDQogIGFuZCBkZWNvbXByZXNzaW5nIHNwZWVkIGFuZCBzaG93cyByYXRpbmcgdmFsdWVzLiANCiAgQWxzbyBpdCBjaGVja3MgaGFyZHdhcmUgZXJyb3JzLg0KDQoNCjQuMDIgICAgICAgICAgIDIwMDQtMDYtMTANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gQysrIExaTUEgRW5jb2Rlci9EZWNvZGVyIGNvZGUgbm93IGlzIG1vcmUgcG9ydGFibGUNCiAgYW5kIGl0IGNhbiBiZSBjb21waWxlZCBieSBHQ0Mgb24gTGludXguDQoNCg0KNC4wMSAgICAgICAgICAgMjAwNC0wMi0xNQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb21lIGRldGVjdGlvbiBvZiBkYXRhIGNvcnJ1cHRpb24gd2FzIGVuYWJsZWQuDQogICAgTHptYURlY29kZS5jIC8gUmFuZ2VEZWNvZGVyUmVhZEJ5dGUNCiAgICAuLi4uLg0KICAgIHsNCiAgICAgIHJkLT5FeHRyYUJ5dGVzID0gMTsNCiAgICAgIHJldHVybiAweEZGOw0KICAgIH0NCg0KDQo0LjAwICAgICAgICAgICAyMDA0LTAyLTEzDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIE9yaWdpbmFsIHZlcnNpb24gb2YgTFpNQSBTREsNCg0KDQoNCkhJU1RPUlkgb2YgdGhlIExaTUENCi0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgMjAwMS0yMDA4OiAgSW1wcm92ZW1lbnRzIHRvIExaTUEgY29tcHJlc3NpbmcvZGVjb21wcmVzc2luZyBjb2RlLCANCiAgICAgICAgICAgICAga2VlcGluZyBjb21wYXRpYmlsaXR5IHdpdGggb3JpZ2luYWwgTFpNQSBmb3JtYXQNCiAgMTk5Ni0yMDAxOiAgRGV2ZWxvcG1lbnQgb2YgTFpNQSBjb21wcmVzc2lvbiBmb3JtYXQNCg0KICBTb21lIG1pbGVzdG9uZXM6DQoNCiAgMjAwMS0wOC0zMDogTFpNQSBjb21wcmVzc2lvbiB3YXMgYWRkZWQgdG8gNy1aaXANCiAgMTk5OS0wMS0wMjogRmlyc3QgdmVyc2lvbiBvZiA3LVppcCB3YXMgcmVsZWFzZWQNCiAgDQoNCkVuZCBvZiBkb2N1bWVudA0K