IyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKIyBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGgKIyB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCiMgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKIyAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAojIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgojICRJZCQKIwojIERlZmF1bHQgbG9jYWxpemVkIHN0cmluZyBpbmZvcm1hdGlvbgojIExvY2FsaXplZCBwYXJhIExvY2FsZSBlc19FUwoKaGVsbG93b3JsZC50aXRsZT1Ib2xhIE11bmRvIQoKcmVxdWVzdGluZm8udGl0bGU9RWplbXBsbyBkZSBJbmZvcm1hY2lvbiBkZSBSZXF1ZXN0CnJlcXVlc3RpbmZvLmxhYmVsLm1ldGhvZD1NZXRvZG86CnJlcXVlc3RpbmZvLmxhYmVsLnJlcXVlc3R1cmk9UmVxdWVzdCBVUkk6CnJlcXVlc3RpbmZvLmxhYmVsLnByb3RvY29sPVByb3RvY29sbzoKcmVxdWVzdGluZm8ubGFiZWwucGF0aGluZm89UGF0aCBJbmZvOgpyZXF1ZXN0aW5mby5sYWJlbC5yZW1vdGVhZGRyPURpcmVjY2lvbiBSZW1vdGE6CgpyZXF1ZXN0aGVhZGVyLnRpdGxlPUVqZW1wbG8gZGUgQ2FiZWNlcmEgZGUgUmVxdWVzdAoKcmVxdWVzdHBhcmFtcy50aXRsZT1FamVtcGxvIGRlIHBhcmFtZXRyb3MgZGUgUmVxdWVzdApyZXF1ZXN0cGFyYW1zLnBhcmFtcy1pbi1yZXE9UGFyYW1ldHJvcyBlbiBlc3RlIFJlcXVlc3Q6CnJlcXVlc3RwYXJhbXMubm8tcGFyYW1zPU5vIGhheSBwYXJhbWV0cm8uIHBvciBmYXZvciB1c2EgYWxndW5vCnJlcXVlc3RwYXJhbXMuZmlyc3RuYW1lPU5vbWJyZToKcmVxdWVzdHBhcmFtcy5sYXN0bmFtZT1BcGVsbGlkb3M6Cgpjb29raWVzLnRpdGxlPUVqZW1wbG8gZGUgQ29va2llcwpjb29raWVzLmNvb2tpZXM9VHUgbmF2ZWdhZG9yIGVzdGEgZW52aWFuZG8gbG9zIHNpZ3VpZW50ZXMgY29va2llczoKY29va2llcy5uby1jb29raWVzPVR1IG5hdmVnYWRvciBubyBlc3RhIGVudmlhbmRvIGNvb2tpZXMKY29va2llcy5tYWtlLWNvb2tpZT1DcmVhIHVuIGNvb2tpZSBwYXJhIGVudmlhcmxvIGEgdHUgbmF2ZWdhZG9yCmNvb2tpZXMubmFtZT1Ob21icmU6CmNvb2tpZXMudmFsdWU9VmFsb3I6CmNvb2tpZXMuc2V0PUFjYWJhcyBkZSBlbnZpYXIgYSB0dSBuYXZlZ2Fkb3IgZXN0b3MgY29va2llczoKCnNlc3Npb25zLnRpdGxlPWVqZW1wbG8gZGUgU2VzaW9uZXMKc2Vzc2lvbnMuaWQ9SUQgZGUgU2VzaW9uOgpzZXNzaW9ucy5jcmVhdGVkPUNyZWFkbzoKc2Vzc2lvbnMubGFzdGFjY2Vzc2VkPVVsdGltbyBBY2Nlc286CnNlc3Npb25zLmRhdGE9TG8gc2lndWllbnRlcyBkYXRvcyBlc3RhbiBlbiB0dSBzZXNpb246CnNlc3Npb25zLmFkZGRhdGE9QfFhZGUgZGF0b3MgYSB0dSBzZXNpb246CnNlc3Npb25zLmRhdGFuYW1lPU5vbWJyZSBkZWwgYXRyaWJ1dG8gZGUgc2VzaW9uOgpzZXNzaW9ucy5kYXRhdmFsdWU9VmFsb3IgZGVsIGF0cmlidXRvIGRlIHNlc2lvbjoK