LyoNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqIKkgMjAxMyBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuIGFuZCBpdHMgc3Vic2lkaWFyaWVzLg0KKiBZb3UgbWF5IHVzZSB0aGlzIHNvZnR3YXJlIGFuZCBhbnkgZGVyaXZhdGl2ZXMgZXhjbHVzaXZlbHkgd2l0aA0KKiBNaWNyb2NoaXAgcHJvZHVjdHMuDQoqIFRISVMgU09GVFdBUkUgSVMgU1VQUExJRUQgQlkgTUlDUk9DSElQICJBUyBJUyIuDQoqIE5PIFdBUlJBTlRJRVMsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIEFQUExZIFRPIFRISVMgU09GVFdBUkUsDQoqIElOQ0xVRElORyBBTlkgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwNCiogQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBPUiBJVFMgSU5URVJBQ1RJT04gV0lUSCBNSUNST0NISVANCiogUFJPRFVDVFMsIENPTUJJTkFUSU9OIFdJVEggQU5ZIE9USEVSIFBST0RVQ1RTLCBPUiBVU0UgSU4gQU5ZIEFQUExJQ0FUSU9OLg0KKiBJTiBOTyBFVkVOVCBXSUxMIE1JQ1JPQ0hJUCBCRSBMSUFCTEUgRk9SIEFOWSBJTkRJUkVDVCwgU1BFQ0lBTCwgUFVOSVRJVkUsDQoqIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBMT1NTLCBEQU1BR0UsIENPU1QgT1IgRVhQRU5TRSBPRiBBTlkgS0lORA0KKiBXSEFUU09FVkVSIFJFTEFURUQgVE8gVEhFIFNPRlRXQVJFLCBIT1dFVkVSIENBVVNFRCwgRVZFTiBJRiBNSUNST0NISVAgSEFTDQoqIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT1IgVEhFIERBTUFHRVMgQVJFIEZPUkVTRUVBQkxFLg0KKiBUTyBUSEUgRlVMTEVTVCBFWFRFTlQgQUxMT1dFRCBCWSBMQVcsIE1JQ1JPQ0hJUCdTIFRPVEFMIExJQUJJTElUWSBPTiBBTEwNCiogQ0xBSU1TIElOIEFOWSBXQVkgUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFIFdJTEwgTk9UIEVYQ0VFRCBUSEUgQU1PVU5UIE9GDQoqIEZFRVMsIElGIEFOWSwgVEhBVCBZT1UgSEFWRSBQQUlEIERJUkVDVExZIFRPIE1JQ1JPQ0hJUCBGT1IgVEhJUyBTT0ZUV0FSRS4NCiogTUlDUk9DSElQIFBST1ZJREVTIFRISVMgU09GVFdBUkUgQ09ORElUSU9OQUxMWSBVUE9OIFlPVVIgQUNDRVBUQU5DRQ0KKiBPRiBUSEVTRSBURVJNUy4NCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiAgY29tbW9uLmgNCiAqICAgICAgVGhpcyBpcyB0aGUgaGVhZGVyIGZpbGUgaW5jbHVkaW5nIGNvbW1vbiBoZWFkZXJzIGZyb20gdmFyaW91cyBtb2R1bGVzDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogICRSZXZpc2lvbjogIzEgJCAgJERhdGVUaW1lOiAyMDE2LzA5LzIyIDA4OjAzOjQ5ICQgICQgICAgJA0KICogIERlc2NyaXB0aW9uOiBhZGRlZCBpY3QgbW9kdWxlDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogICN4eA0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqICRGaWxlOiAvL2RlcG90X3Bjcy9GV0VuZy9wcm9qZWN0cy9NRUMyMDE2L1BsYXlncm91bmQvcHJhbWFucy8xNjA2MjNfRnJlZVJUT1NfTWljcm9jaGlwX01FQzE3MHgvRGVtby9DT1JURVhfTVBVX01FQzE3MDFfS2VpbF9HQ0MvcGVyaXBoZXJhbF9saWJyYXJ5L2NvbW1vbl9saWIuaCAkDQogKi8NCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi8qKiBAZGVmZ3JvdXAgY29tbW9uIGNvbW1vbg0KICogIEB7DQogKi8NCg0KLyoqIEBmaWxlIGNvbW1vbi5oDQoqIFxicmllZiBoZWFkZXIgZmlsZSBpbmNsdWRpbmcgY29tbW9uIGhlYWRlcnMgZnJvbSB2YXJpb3VzIG1vZHVsZXMNCiogXGF1dGhvciBBcHAgRmlybXdhcmUgVGVhbQ0KKiANCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQojaWZuZGVmIF9DT01NT05fTElCX0hfDQojZGVmaW5lIF9DT01NT05fTElCX0hfDQoNCi8vIEluY2x1ZGUgY29tbW9uIGhlYWRlcnMgZnJvbSB2YXJpb3VzIG1vZHVsZXMNCi8vICEhISBUaGUgaW5jbHVkZSBvcmRlciBpcyBpbXBvcnRhbnQgISEhDQojaW5jbHVkZSAicGxhdGZvcm0uaCINCiNpbmNsdWRlICJBUk1fUkVHLmgiDQojaW5jbHVkZSAiTUNIUF9kZXZpY2VfaGVhZGVyLmgiDQovKiBDb3J0ZXgtTTQgcHJvY2Vzc29yIGFuZCBjb3JlIHBlcmlwaGVyYWxzICovDQojaW5jbHVkZSAiY29yZV9jbTQuaCIgDQojaW5jbHVkZSAiZGVmcy5oIg0KI2luY2x1ZGUgInN0cmluZy5oIg0KI2luY2x1ZGUgInN5c3RlbV9pbnRlcm5hbC5oIg0KI2luY2x1ZGUgPHN0ZGJvb2wuaD4NCiNlbmRpZiAvKl9DT01NT05fTElCX0hfKi8NCg0KLyoqICAgQH0NCiAqLw0KDQoNCg==