LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTA1LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglGaXhlZCByZXBhcmVudGluZyB0byBkZXNrdG9wIChmb3VuZCBieSBHZXJhcmQgUGF0ZWwpLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJUmVhbGx5IGZyZWUgdGhlIG1lbW9yeSBvbiBkbGwgdW5sb2FkLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLAoJICB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy90dHlkcnYvd25kLmM6CglNb3ZlZCBTY3JvbGxXaW5kb3dFeCBpbXBsZW1lbnRhdGlvbiB0byB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHN0YXJ0IGFwcGxpY2F0aW9ucyBpbiB0aGUgYmFja2dyb3VuZCB0byBhdm9pZCBicmVha2luZyBjb25zb2xlCglhcHBsaWNhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgZGVjbGFyYXRpb24gb2YgREVDSU1BTCBpbiBWQVJJQU5UIGhhcHBlbnMgaW4gdGhlIHdyb25nIHBsYWNlLgoJQ29tbWVudCBvdXQgZm9yIG5vdy4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCB0aGUgcHJpbnRpbmcgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIENVUFMgYW5kIExQUiBzdXBwb3J0LAoJYWxzbyBnaXZlIHNvbWUgaGludHMgb24gQUZNIGZpbGVzIGluIHN5c3RlbSBhbmQgZ2VuZXJpYy5wcGQuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvZ2VuZXJpYy5wcGQ6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGEgZ2VuZXJpYyBsZXZlbCAzIGNvbG9yIHBvc3RzY3JpcHQgUFBEIChmb3IgL2V0Yy9wcmludGNhcCBiYXNlZAoJcHJpbnRlcnMpLgoKCSogd2luZWRlZmF1bHQucmVnOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCB2ZXJzaW9uIGVudHJ5IGZvciBEaXJlY3RYIDcuMGEuCgoyMDAxLTA1LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVJlbW92ZWQgWFNobUNvbXBsZXRpb24gZXZlbnQgc3VwcG9ydCAobm8gbG9uZ2VyIHVzZWQpLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuUEwsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzOgoJR290IHJpZCBvZiBNYWtlTWFrZXIgc28gd2UgY2FuIGJ1aWxkIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJQWxsb3cgV0lORVNFUlZFUiB0byBzcGVjaWZ5IGEgcmVsYXRpdmUgcGF0aC4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJT24gTmV0QlNEIGlmX3R5cGUgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGluIC91c3IvaW5jbHVkZS9uZXQvaWYuaC4KCVVuZGVmaW5lIGl0IHRvIGF2b2lkIGEgY29uZmxpY3QuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCURvIG5vdCB1c2UgaW50ZXJuYWwgZXhjZXB0aW9uIGNvZGVzIGRlZmluZWQgYnkgV2luZSB3aXRoIE5ldEJTRCwKCXJhdGhlciB1c2UgbmF0aXZlIG9uZXMgZnJvbSAvdXNyL2luY2x1ZGUvaTM4Ni90cmFwLmguIE5vdGUgdGhhdCBUX01DSEsKCWlzIG5vdCBzdXBwb3J0ZWQgYnkgTmV0QlNELgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglBZGRlZCBzdXBwb3J0IGZvciBOZXRCU0QuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIHRoZSBJRGlyZWN0RHJhd1N1cmZhY2U0IGludGVyZmFjZSBkZWNsYXJhdGlvbiB0byBjb25mb3JtIGEgYml0Cgltb3JlIHdpdGggdGhlIERpcmVjdFggU0RLIGhlYWRlcnMnIGlkZWEgb2Ygd2hhdCB0aGUgaW50ZXJmYWNlIGxvb2tzCglsaWtlLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCB0ZXN0cyBmb3IgdGhlIGZsYWcgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFMsIGFuZCBhY3QKCWFjY29yZGluZ2x5LgoKCSogd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wb3MuYzoKCVVzZSAzMi1iaXQgaG9vayBmdW5jdGlvbnMgd2hlcmUgcG9zc2libGUuIENsZWFuZWQgdXAgYSBjb3VwbGUgb2YKCTE2LWJpdCB0eXBlIHVzZXMuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL3Njcm9sbC5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1zZG9zL2ludDEwLmMsCgkgIG1zZG9zL2ludDIxLmMsIG1zZG9zL2lvcG9ydHMuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLAoJICBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywgZGxscy93aW5tbS9tY2lhdmkvd25kLmMsCgkgIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLAoJICBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsCgkgIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywKCSAgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2ltbTMyL2ltYy5jLCBkbGxzL2ltbTMyL2ltZXduZC5jLCBkbGxzL2ltbTMyL2ltbS5jLAoJICBkbGxzL2ltbTMyL21lbW9yeS5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywKCSAgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgY29udHJvbHMvbWVudS5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkICdcbicgYXQgdGhlIGVuZCBvZiB0cmFjZXMuCgoJKiBpbmNsdWRlL25vbmNsaWVudC5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvd25kLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglNb3ZlZCB3aW5kb3cgbW92ZS9yZXNpemUgc3lzY29tbWFuZCBoYW5kbGluZyB0byB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogY29udHJvbHMvY29tYm8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJT25seSBkcmF3IHRoZSBwYWRkaW5nIGFyZWEgb2YgdGhlIGNvbWJvIGJveCwgZG9uJ3QgZXJhc2UgdGhlIGNvbWJvCglzZWxlY3Rpb24gdGV4dC4KCgkqIHRvb2xzL3NwZWNtYWtlci9tc21hbmdsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW5hbWVkICdvcGVyYXRvcl9jb21wbGltZW50JyB0byAnb3BlcmF0b3JfY29tcGxlbWVudCcuCgoJKiBjb250cm9scy9lZGl0LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaC5jemVrYWxsYUB1dG9yb250by5jYT4KCUZpeGVkIGEgcGFpbnQgcHJvYmxlbSByZXBvcnRlZCBieSBNaWtlIE1jQ29ybWFjay4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9hZ2wuYywgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVbmljb2RlIGVuY29kaW5ncyBmb3IgUG9zdFNjcmlwdCBmb250cy4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIC9ldGMvcHJpbnRjYXAgYmFzZWQgcHJpbnRpbmcgc3VwcG9ydC4KCUNoYW5nZWQgJ0NVUFM6cHJpbnRlcm5hbWUnIHRvICdMUFI6cHJpbnRlcm5hbWUnLgoJU29tZSBmaXhlcyBpbiBBZGRQcmludGVyVygpLgoKCSogbWlzYy92ZXJzaW9uLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFkZCBtaXNzaW5nIG5ld2xpbmUgdG8gV0FSTiBtZXNzYWdlcy4KCjIwMDEtMDUtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy93aW5wcm9jLmMsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGlmMTYzMi9yZWxheS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglQcmludCB0aGUgdGlkIGluIHRoZSBmaXJzdCBjb2x1bW4gd2hlbiArdGlkIGlzIHNwZWNpZmllZC4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBncmFwaGljcy9lc2NhcGUuYywgaW5jbHVkZS93aW5nZGkuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUFMgcGFzc3Rocm91Z2ggd2FzIHNlbmRpbmcgMiBieXRlcyB0b28gbWFueS4KCUFkZGVkIEdFVFNFVFBSSU5UT1JJRU5UIHN0dWIuCglJbXBsZW1lbnRlZCBFUFNQUklOVElORyBtb2RlIGNoYW5nZXIuCgoyMDAxLTA1LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNYWtlIFBTRFJWX0VzY2FwZShHRVRQSFlTUEFHRVNJWkUpIHJldHVybiBwaHlzaWNhbCBzaXplLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRml4ZWQgcm91bmRpbmcgZXJyb3IgaW4gcGFnZSBzaXplIGNhbGN1bGF0aW9uLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJU3dhcCBwb3J0cmFpdC9sYW5kc2NhcGUgaWNvbiB3aGVuIGJ1dHRvbiBjbGlja2VkLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGRlZCBlbnRyeSBmb3IgcHJpbnRpbmcgdG8gYSBmaWxlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvbWlubWF4LmgsIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIG1pbm1heC5oIGhlYWRlciAoVkM2KS4KCUFkZGVkIHN1cHBvcnQgZm9yIE5PTUlOTUFYLgoJUmVtb3ZlIF9fbWluL19fbWF4IGZyb20gd2luZGVmLmgsIHRoZXkgYmVsb25nIHRvIChtc3ZjcnQvKXN0ZGxpYi5oLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTYW5pdHkgY2hlY2sgZm9yIE1ha2VkbGwucnVsZXMuaW4gLT4gTWFrZWRsbC5ydWxlcyBvbiB3aGV0aGVyIHRvIHJlcnVuCgljb25maWd1cmUuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJQWRkIHRoZSBOZXRCU0Qgc3R5bGUgZXJybm8gbG9jYXRpb24uCglNb2RpZnkgYSBtZXNzYWdlIHRvIGdpdmUgYSBiaXQgbW9yZSBpbmZvIHdoZW4gYnVpbGRpbmcgV2luZSBvbiBOZXRCU0QuCgoJKiBpbmNsdWRlL2d1aWRkZWYuaCwgaW5jbHVkZS9vYmpiYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZSBkaXJlY3RpdmVzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdGhlIGFub255bW91cyBmdW5jdGlvbiBwYXJhbWV0ZXIgZnJvbSBnZW5lcmF0ZV9saXN0IGNhbGxzIHdoZW4KCWl0IGlzIHVubmVjZXNzYXJ5LgoJTW9kaWZ5IHRoZSAuc3BlYy5jIHJ1bGUgdG8gYWxsb3cgY29tcGlsYXRpb24gb3V0IG9mICQoVE9QU1JDRElSKS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSQ19JTlZPS0VEICgmTk9XSU5SRVMpIHNwZWNpYWwgY2FzZXMuCgoJKiB0b29scy93cmMvd3JjLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCS1sLy1MIHdlcmUgbm90IHJlbmFtZWQgdG8gLXQvLVQgaW4gdGhlIHVzYWdlIG1lc3NhZ2VzLgoKCSogZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXggZHVwbGljYXRlIGRpcmVjdG9yaWVzIGJlaW5nIGNvbmNhdGVuYXRlZCB0byBidWZmZXIgaW4KCVZjcEV4cGxhaW4xNigpLiAgQWRkZWQgYSBmZXcgdXNlZnVsIFRSQUNFIGxpbmVzLiAgRW5hYmxlZCBhIGlmZGVmJ2VkCglvdXQgY2FsbCB0byBDb3B5RmlsZSgpIGluc2lkZSBvZiBWQ1BfQ29weUZpbGVzKCkgc28gZmlsZXMgYXJlIGNvcGllZAoJdG8gYSB1c2VycyBkaXJlY3RvcmllcyBkdXJpbmcgYW4gaW5zdGFsbC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJQ2FsbCBPU1NfTWlkaUluaXQoKSBvbmx5IGlmIEhBVkVfT1NTX01JREkgaXMgZGVmaW5lZC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglJbmNsdWRlIG1pc3NpbmcgZXJybm8uaC4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyb3AgZmxhZ3MgZHVyaW5nIGZvbnQgZW51bWVyYXRpb24gZm9yIGZvbnQgY2hvb3NlciBpZiB3ZSBnZXQgbm8KCW1hdGNoZXMuCgoJKiBkbGxzL2dkaS9nZGkuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCBzb21lIHB0ciBpbnRvIHN0ci4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLAoJICBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgREVDSU1BTCB0eXBlLgoJTmFtZXMgYXJlIG5vIGxvbmdlciBzdWZmaXhlZCB3aXRoIDMyISBSZW1vdmVkIGl0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGluY29ycmVjdCBjYXN0IGluIFdTT0NLMzJfc2VuZCBhbmQgV1NPQ0szMl9yZWN2ZnJvbS4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBJU19FUlJPUi4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwb3J0IHRoYXQgd2UgaGF2ZSAyXjE2IGNvbG9ycywgc28gUG93ZXJQb2ludDk3IHByaW50cyBjb2xvcmVkCglzbGlkZXMuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZvciB1bmRlcmxpbmluZyBhbmQgc3RyaWtpbmcgb3V0IHRleHQgd2UgbmVlZCB0byBzZW5kIGEgJ25ld3BhdGgnIG9yCgloYXZlIHRoZSB3aG9sZSBwYWdlIGZpbGxlZCB3aXRoIGJsYWNrLgoKCSogZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX0RlLnJjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQYXBlciBkaWFsb2cgdHJhbnNsYXRlZCB0byBHZXJtYW4uCgoJKiBmaWxlcy9wcm9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBQUk9GSUxFX0NvcHlFbnRyeS4KCjIwMDEtMDUtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL2tleWJvYXJkLmMsCgkgIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglSZW1vdmUgR2V0L1NldEJlZXBBY3RpdmUgZnJvbSBVU0VSIGRyaXZlciBhbmQgbWFuYWdlIGl0IGxvY2FsbHkgaW5zaWRlCglTeXN0ZW1QYXJhbWV0ZXJzSW5mby4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBXTV9DT01NQU5EIG5vdGlmaWNhdGlvbiBjb2RlcyBmb3IgMTYgYml0IFByaW50RGxnLgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglEZWxheSBpbXBvcnQgb2YgdXNlcjMyIHRvIGFsbG93IGRlYnVnZ2luZyBjcmFzaGVzIGluIHVzZXIgaW5pdCBjb2RlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgbGFyZ2UgcGFydHMgb2YgUGFnZVNldHVwRGxnQS4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURlYnVnIG91dHB1dCBmb3IgZmxhZ3MsIHNlbGVjdCBmaXJzdCBhdmFpbGFibGUgaGVpZ2h0IGFuZCB3ZWlnaHQgd2hlbgoJc2VsZWN0aW5nIGEgZm9udC4KCjIwMDEtMDUtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RjZS5jOgoJTWFrZSBzdXJlIHdlIHJlY29tcHV0ZSB0aGUgdmlzaWJsZSByZWdpb24gaW4gREMgaG9vay4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNaXNjLiBlcnJvciBjaGVja2luZyBpbiBQb3N0U2NyaXB0IGRyaXZlci4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGF1dG9yZXBlYXQgc2Nyb2xsaW5nIHdoZW4gYnV0dG9uIGlzIGhlbGQgZG93bi4KCUltcHJvdmVtZW50cyB0byBzaXplIGFuZCBhcHBlYXJhbmNlIG9mIGJ1dHRvbnMuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHNob3VsZCBhbHNvIGRlbGV0ZSB0aGUgcGRmLCBwcyBhbmQgLm91dCg/KSBmaWxlcy4KCgkqIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHE6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSB3d3cud2luZWhxLmNvbSBkaXJlY3RvcnkgaGFuZGxpbmcuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGhhbmRsaW5nIG9mIHNldmVyYWwgc3ltYm9scyB3aXRoIHRoZSBzYW1lIG5hbWUuCglGaXhlZCB0cmFtcG9saW5lIGlkZW50aWZpY2F0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIHNtYWxsIHNlY3Rpb24gYWJvdXQgZXhwcmVzc2lvbnMgaW4gd2luZWRiZy4KCjIwMDEtMDUtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmM6CglVbmNvbW1lbnRlZCB0aGUgVmlydHVhbEZyZWUgY2FsbCBvbiBkbGwgdW5sb2FkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIHRoZSBPU01lc2EgY29uZmlndXJlIGNoZWNrIHNvIHRoYXQgT1NNZXNhIHdvbid0IGJlIGxpbmtlZCBpbiBpZiBpdCdzCglpbmNvbXBhdGlibGUgd2l0aCB0aGUgR0xYIGltcGxlbWVudGF0aW9uIChlLmcuIG52aWRpYSkuCglSZW1vdmVkIHRoZSBvbGQgIk9TTWVzYSBub3QgZm91bmQiIHdhcm5pbmcuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgUHJpbnREbGcgc28gdGhlIGRldm5hbWVzIHN0cnVjdCBjb250YWlucyB0aGUgY29ycmVjdCBkcml2ZXIKCXByaW50ZXIgYW5kIHBvcnQgbmFtZXMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOgoJU2ltZW9uIFBpbGdyaW0gPHNpbWVvbi5waWxncmltQGFsbGllZHRlbGVzeW4uY28ubno+CglUeXBvIGluIHN0dWItcmVwb3J0aW5nIHN0eWxlIGRlc2NyaXB0aW9uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJbnRkbGwuX2lzd2N0eXBlIHNob3VsZCBiZSBudGRsbC5pc3djdHlwZS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBIZWFwRnJlZSgpIG1lbW9yeSBub3QgYWxsb2NhdGVkIGJ5IHVzIGluIENPTUJPX0dldFRleHQuCglDb252ZXJ0IHJldHVybiB2YWx1ZSBmcm9tIExCX0dFVFRFWFQgaW50byBDT01CT19HZXRUZXh0LgoKMjAwMS0wNC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBjaGVjayBmb3IgY3Vwcy9jdXBzLmggaGVhZGVyIGZpbGUgYW5kIGEgd2FybmluZyBpZiB3ZSBmaW5kIG9ubHkKCXJ1bnRpbWUgbGlicmFyaWVzLCBidXQgbm8gaGVhZGVycy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCURyYXcgdGhlIHBhZGRpbmcgYXJlYSBvZiBhIGNvbWJvIGJveC4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUNoZWNrIGZvciBlcnJvcnMgaW4gUFNEUlZfSW5pdC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgY2hlY2tzIGluIF9nZXRfY29tbW9uX2FuY2VzdG9yIGEgYml0IHN0cmljdGVyIHRvIGF2b2lkIFhRdWVyeVRyZWUKCVhFcnJvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglJbXBsZW1lbnQgQ09NQ1RMMzJfU3RyVG9JbnRXKCkgdXNpbmcgTlRETEwncyBfd3RvaS4KCjIwMDEtMDQtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9wdHJhY2UuYywKCSAgc2VydmVyL3RocmVhZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQcmVzZXJ2ZSB0aGUgVEYgKFRyYXAgRmxhZykgd2hlbiBjb250aW51aW5nIGZyb20gYSBwdHJhY2VkIHN1c3BlbmQuCgoJKiBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLAoJICBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywKCSAgZGxscy93aW4zMnMvd2luMzJzMTYuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbjMyL2ZpbGUuYywgd2luZG93cy9tZGkuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBuYW1lIGZpeGVzLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW4sIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2dkaS9wcmludGRydi5jLAoJICBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvaW5pdC5jLAoJICBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy93aW5zcG9vbC93c3Bvb2wuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBDVVBTIHByaW50aW5nIHN1cHBvcnQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRERSQVdfe1hGODZER0EyLFhWaWRNb2RlfV9Jbml0IHdhcyBtb3ZlZCB0byBkbGxzL3gxMWRydi4KCgkqIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVpbXBsZW1lbnRlZCBEWEdyYWIgd2l0aCBpbXByb3ZlbWVudHM7IGl0IG5vIGxvbmdlciBkZXBlbmRzIG9uCglYVmlkTW9kZSwgYW5kIGl0IHJlbGVhc2VzIHRoZSBncmFiIGlmIHRoZSBhcHAgZXhpdHMgZnVsbC1zY3JlZW4KCURpcmVjdERyYXcuICBBbHNvIG1hZGUgdGhlIFVzZURHQSBvcHRpb24gYXZhaWxhYmxlIGZvciBBcHBEZWZhdWx0cwoJY29uZmlndXJhdGlvbi4KCjIwMDEtMDQtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9zeXNjb2xvci5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJQXZvaWQgY3Jhc2ggb24gZGVsZXRlZCB3aW5kb3dzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvY29tcG9iai5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdXNlci5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdmVyc2lvbi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW50cnVzdC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUKCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUdhZWwgZGUgQ2hhbGVuZGFyIDxHYWVsLmRlLkNoYWxlbmRhckBsaW1zaS5mcj4KCUNvcnJlY3RlZCBhIHR5cG8gaW4gc3BlYyBmaWxlIGFuZCBhZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJUGxheVNvdW5kQSBzaG91bGQgcmV0dXJuIFRSVUUgd2hlbiBpdCBzdG9wcyBwbGF5aW5nIHNvdW5kLgoKMjAwMS0wNC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsCgkgIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy90dHlkcnYvd25kLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvZGNlLmgsIGluY2x1ZGUvbWVzc2FnZS5oLAoJICBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5wb3MuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2ZvY3VzLmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglNb3ZlZCBtb3N0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBTZXRXaW5kb3dQb3MgYW5kIFNldERyYXdhYmxlIGludG8KCXRoZSB1c2VyIGRyaXZlciwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGNvZGUgaW50byB0aGUgZGxscy94MTFkcnYKCWRpcmVjdG9yeS4gTW92ZWQgYSBmZXcgZnVuY3Rpb25zIG91dCBvZiB0aGUgd2luZG93IGRyaXZlciBpbnRvIHRoZQoJdXNlciBkcml2ZXIuIFBsdXMgYSBmZXcgcmVsYXRlZCBjbGVhbnVwcy4KCgkqIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jOgoJU21hbGwgY2xlYW51cHMuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyb3AgU1lTTEVWRUwgY2hlY2tzIGZyb20gcmVsYXkgZGVidWdnaW5nLCBzaW5jZSB0aGV5IGJyZWFrIGRlYnVnZ2luZwoJYnVpbHRpbiBHREkgZGxscy4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCB1c2UgV2luZG93cyB0eXBlcyBsaWtlIExPTkdMT05HIGluIG1zdmNydCBoZWFkZXJzLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgbW9yZSBkaXNhc3NlbWJseSBpbnN0cnVjdGlvbnMgKG5vdGFibHkgcmR0c2MsIHdoaWNoIGlzIHVzZWQKCWJ5IHNldmVyYWwgcHJvZ3JhbXMpIGFuZCBtb3JlIE1NWC4KCjIwMDEtMDQtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9leGNlcHQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIHNucHJpbnRmIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cyBpbiBmb3JtYXRfZXhjZXB0aW9uX21zZy4KCgkqIGluY2x1ZGUvdGNoYXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IHVzZSBieSBXaW5lJ3Mgc291cmNlLgoJQWRkZWQgbWlzc2luZyAnZnVuY3Rpb24nIGRlZmluaXRpb25zIChtYWNyb3MgcmVhbGx5KS4KCgkqIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IG5vdCBmcmVlIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGxvY2FsdGltZSAoZXNwZWNpYWxseSBub3QKCXdpdGggTVNWQ1JUX2ZyZWUhKS4KCVdlIG5vIGxvbmdlciBuZWVkIHRvIGluY2x1ZGUgc3RkbGliLmguCgoJKiBpbmNsdWRlL21zdmNydC9zdGRkZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBvZmZzZXRvZiAoZm9yIHRoZSBNRkMpLgoKCSogZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvaGVhcC5jLAoJICBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L3N0cmluZy5jLAoJICBpbmNsdWRlL21zdmNydC9tYWxsb2MuaCwgaW5jbHVkZS9tc3ZjcnQvc2VhcmNoLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtc3ZjcnQvbWFsbG9jLmggKGZvciB0aGUgTUZDKS4KCUFkZCBtc3ZjcnQvc2VhcmNoLmguCglNb3ZlIGR1cGxpY2F0ZWQgZGVmaW5pdGlvbnMgdG8gdGhlIG5ldyBoZWFkZXJzLgoJVXNlIG1hbGxvYy5oIGluc3RlYWQgb2Ygc3RkbGliLmggd2hlbiBzZW5zaWJsZS4KCgkqIGluY2x1ZGUvbXN2Y3J0L2NydGRiZy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3ZpZGUgbGltaXRlZCBzdXBwb3J0IGZvciB0aGUgbXN2Y3J0IGRlYnVnIEFQSS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaWxlcyB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyBtYXkgbm90IGhhdmUgYmVlbiByZW5hbWVkLiBUcnkgdG8gbWF0Y2gKCWJvdGggZm9ybXMuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLAoJICBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsCgkgIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsCgkgIGRsbHMvbXNhY20vd2luZWFjbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBjYWNoZSBmb3IgZHJpdmVycyBpbmZvcm1hdGlvbi4KCUZpeGVkIGEgZmV3IGJ1Z3MgKG1lbW9yeSBoYW5kbGluZywgdmVyc2lvbiBpbmZvLi4uKQoJRW5oYW5jZWQgdmFsaWRpdHkgY2hlY2tzLgoKCSogZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVc2UgdHlwZWNhc3RzIHRvIHN1cHByZXNzIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogb2JqZWN0cy9mb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIEdldENoYXJBQkNXaWR0aHMgd2l0aCBHZXRDaGFyV2lkdGguCgoJKiBvYmplY3RzL3JlZ2lvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFeHRyYWN0ZWQgTUVNQ0hFQ0sgaW50byBhbiBleHRyYSBmdW5jdGlvbiB0byBhdm9pZCBhIGdjYy0yLjk1LjIKCWNvbXBpbGVyIGJ1Zy4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIE1NWCBkaXNhc3NlbWJseSB0byB0aGUgZGVidWdnZXIuCgoJKiBkZWJ1Z2dlci9leHByLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGdldHRpbmcgYSB2YXJpYWJsZSBhZGRyZXNzLgoKCSogZGVidWdnZXIvdHlwZXMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmxvYXQgdmFyaWFibGVzIGRpc3BsYXkuCgoyMDAxLTA0LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmM6CglEb21pbmlrIFN0cmFzc2VyIDxkb21pbmlrLnN0cmFzc2VyQG1jaHAuc2llbWVucy5kZT4KCUFsbG93IGlsbGVnYWwgaGFuZGxlcyBpbiBGaW5kQ2xvc2UuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBmaWxlcy9kcml2ZS5jLCBvYmplY3RzL2RpYi5jLCB0b29scy93aW5lY29uZiwKCSAgZGVidWdnZXIvZXh0X2RlYnVnZ2VyLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLAoJICBkbGxzL29sZTMyL2FudGltb25pa2VyLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIHdpbmRvd3MvcHJvcGVydHkuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gbWFrZSBzdXJlIHRoYXQgd2UgcmVhbGx5IHVzZSB0aGUgY29ycmVjdCBhbW91bnQgb2YgcGFyYW1ldGVycyBlYWNoCgkgIHRpbWUgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbgoJLSBhbHdheXMgcGFzcyBzdHJpbmdzIGluc3RlYWQgb2YgYXRvbXMgdG8gV2luMzIgZW51bSBwcm9jCgktIGZpeCB0cmFjZSBjcmFzaCBkdWUgdG8gc3RyaW5nIGZvcm1hdCBkaXNwbGF5aW5nIG9mIGF0b20gKExPV09SRAoJICBvbmx5KSBoYW5kbGUKCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvYWdsLmMsCgkgIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJU3RvcmUgZWFjaCBnbHlwaCBuYW1lIG9ubHkgb25jZSBpbiBQb3N0U2NyaXB0IGRyaXZlci4KCgkqIG9iamVjdHMvYnJ1c2guYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVGFrZSBhIHN0YWIgYXQgaW1wbGVtZW50aW5nIFNldFNvbGlkQnJ1c2gxNi4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBvZmYgYnkgb25lIGVycm9yIGluIEltYWdlTGlzdF9EcmF3SW5kaXJlY3QoKS4KCUZpeGVkIHNvbWUgbWlzc2luZyBOVUxMIEhJTUFHRUxJU1QgY2hlY2sgKGZpeGVzIE1pY3Jvc29mdCBXb3JrcwoJc3RhcnR1cCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0byByZXR1cm4gb3VyIHZhcmlhYmxlIHdpdGggdGhlIGNvcnJlY3QgcmV0dXJuIHZhbHVlLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglWaXJ0dWFsUHJvdGVjdCBzaG91bGQgcmV0dXJuIGNvcnJlY3Qgb2xkIHByb3RlY3Rpb24gZmxhZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBOb3RpZnkgcGFyZW50IG9mIGNoaWxkIHNpemUgY2hhbmdlcyB3aGVuIGNoYW5nZXMgYXJlIGZyb20gV01fU0laRQoJICBtZXNzYWdlcy4KCS0gSWYgbW9yZSB0aGFuIG9uZSBiYW5kIGV4aXN0cywgdGhlbiBmaXJzdCBiYW5kIG1heSBoYXZlIGEgZ3JpcHBlci4KCS0gRml4IHRoZSBiYW5kIGxheW91dCBhbGdvcml0aG0gdG8gaGFuZGxlIHNvbWUgaXNzdWVzIGZyb20gV2luQVJBLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgQ0Jfe0dFVHxTRVR9SVRFTURBVEEgZm9yIENvbWJCb3hFeC4KCS0gSW1wbGVtZW50IFdNX05DQ1JFQVRFIHRvIHJlbW92ZSB1bndhbnRlZCB3aW5kb3cgc3R5bGVzIChhcyBuYXRpdmUgZG9lcykuCgktIENsZWFuIHVwIHNvbWUgdHJhY2VzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggZmlsZSBsb3NzYWdlIGluIHN1YmRpcmVjdG9yaWVzIG9mIGFuICdpbmNsdWRlJyBkaXJlY3RvcnkgKGNsb3NlcyAjMTYzKS4KCVdoZW4gY2FzZSBmaXhpbmcgI2luY2x1ZGVzLCB0YWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBmaWxlIG1heSBoYXZlCgliZWVuIHJlbmFtZWQgKGNsb3NlcyAjMTYxKS4KCUJldHRlciBzdXBwb3J0IG9mICQoU1JDRElSKSBpbiAtSSBkaXJlY3RpdmVzLgoJUlRGIHdhcyBub3QgcmVjb2duaXNlZCBpbiByYyBmaWxlcyBiZWNhdXNlIGl0IHdhcyBpbiB0aGUgd3JvbmcgcGxhY2UuCglFc2NhcGUgd2VpcmQgY2hhcmFjdGVycyB3aGVuIHB1dHRpbmcgdGhlIHJjIGZpbGVuYW1lIGluIHRoZSBzcGVjIGZpbGUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJQWRkZWQgV0lORVBSRUxPQUQgdG8gbWFuIHdpbmUuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglEb21pbmlrIFN0cmFzc2VyIDxkb21pbmlrLnN0cmFzc2VyQHQtb25saW5lLmRlPgoJRG9uJ3QgdXNlIFJUU0NUUyBpZiBTdHIgaGFuZHNoYWtlIGlzIGVuYWJsZWQuCglVc2UgYXBwcm9wcmlhdGUgVW5peCB0aW1lb3V0IHZhbHVlcyBpbiBTZXRDb21tVGltZW91dHMuCgoyMDAxLTA0LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDEwNDE4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTA0LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbjogRml4ZWQgc2V0dXBhcGkgZGVwZW5kZW5jaWVzLgoKCSogd2luZG93cy9pbnB1dC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglHZXRBc3luY0tleVN0YXRlIG5vdyBjbGVhcnMgImhhcyBiZWVuIHByZXNzZWQiIGluZm9ybWF0aW9uIG9mIG9ubHkgdGhlCglyZXF1ZXN0ZWQga2V5IGluc3RlYWQgb2YgYWxsIGtleXMuCgoJKiB3aW5kb3dzL2RjZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglObyBuZWVkIHRvIHByZWFsbG9jYXRlIERDRXMgc2luY2UgdGhleSBhcmUgYWxsb2NhdGVkIG9uIGRlbWFuZAoJYW55d2F5LgoKCSogaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvZGNlLmg6CglNb3ZlZCBEQ1hfKiBjb25zdGFudHMgdG8gd2ludXNlci5oLgoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5oLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5oOgoJUmVtb3ZlZCBhIGZldyBvYnNvbGV0ZSBmaWxlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeCBER0Egc28gaXQgd29ya3MgcHJvcGVybHkgYWdhaW4uCgoJKiBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQWRkIFxuIHRvIEZJWE1FIGNhbGwgaW4gYWNtR2V0VmVyc2lvbiB0byBwcmV2ZW50IG92ZXJmbG93aW5nIGJ1ZmZlciBpbgoJd2luZV9kYmdfdnByaW50Zi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUVsaW1pbmF0ZSB1bml0aWFsaXplZCBnYXJiYWdlIGJlaW5nIHJldHVybmVkIGZyb20gTElTVFZJRVdfR2V0SXRlbUEuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRW5oYW5jZWQgdGhlIHByYWdtYSBwYWNrIGhhbmRsaW5nLgoJRW5oYW5jZWQgdGhlICdhZnhyZXMuaCcgaGFuZGxpbmcgKHRoZSBpbmRlbnRhdGlvbikuCglTdGFydCBpc3N1aW5nIHdpbmVtYWtlcidzIHdhcm5pbmdzIGluIHRoZSBzb3VyY2UgZmlsZXMgdGhlbXNlbHZlcy4KCjIwMDEtMDQtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRG8gbm90IHNlbmQgV01fTU9VU0VBQ1RJVkFURSBmb3IgY2hpbGRyZW4gb2YgZGVza3RvcC4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmgsIGRsbHMvZGRyYXcvZHBhbGV0dGUvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZHBhbGV0dGUvaGFsLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmgsIGRsbHMvZGRyYXcvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBEaXJlY3REcmF3J3MgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgKEhBTCkgaW50ZXJmYWNlLgoJRGlzYWJsZWQgRGlyZWN0RHJhdydzIG9sZCBYVmlkTW9kZSBhbmQgREdBMiBkcml2ZXJzLCBpdCBub3cgZGVwZW5kcyBvbiB0aGUKCWRpc3BsYXkgZHJpdmVyICh4MTFkcnYpIEhBTCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlc2UgZmVhdHVyZXMuCgoJKiBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpX3ByaXZhdGUuaCwKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X3ByaXZhdGUuaCwKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBpbXBsZW1lbnQgc29tZSBtb3JlIHZpcnRjb3B5IChWQ1ApIHN0dWZmCgktIGFkZCBzb21lIHNldHVweCByZXNvdXJjZXMKCS0gaW1wbGVtZW50IFZIU1RSIGZ1bmN0aW9uYWxpdHkKCS0gbGFyZ2UgcGFydHMgb2YgVkNQIGNhbGxiYWNrIGhhbmRsaW5nCgktIG1lcmdlIHNldHVwYXBpIGFuZCBzZXR1cHggc3R1ZmYsIGVzcGVjaWFsbHkgcmVzb3VyY2UgaGFuZGxpbmcKCSAgZ2V0cyByaWQgb2Ygc2V0dXB4IGRlYnVnIGNoYW5uZWw7IHNldHVwYXBpIGlzIHRoZSBvbmx5IG9uZSB0aGF0IHJlbWFpbnMKCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGlidGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYnRleHR1cmUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlZCB0aGUgb2Jzb2xldGUgRElCVGV4dHVyZSBzdXJmYWNlIGNsYXNzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpbGwgaW4gc29tZSBtb3JlIEhBTCBmaWVsZHMuIEZsaXAgc29tZSBvZiB0aGVtIHdoZW4gYXBwcm9wcmlhdGUuCglBbGxvdyBTZXRTdXJmYWNlRGVzYyB0byBjaGFuZ2UgY2xpZW50IG1lbW9yeSBzdXJmYWNlIGFkZHJlc3MuCglQcm9wYWdhdGUgRElCIGNvbG9yIHRhYmxlIHVwZGF0ZXMgdG8gYmFja2J1ZmZlcnMgdG9vICh0aGFua3MgdG8KCVN0ZXBoZW4gQ2xvdXNlKS4KCgkqIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRmlsbCBpbiBzb21lIERpcmVjdERyYXdQYWxldHRlIEhBTCBmaWVsZHMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmgsCgkgIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuaCwKCSAgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlbW92ZWQgVXNlcl9EaXJlY3REcmF3X0dldENhcHMuIFVzaW5nIE1haW5fRGlyZWN0RHJhd19HZXRDYXBzIGluc3RlYWQsCglhbmQgdGhlIFVzZXIgY29uc3RydWN0b3IgZmlsbGluZyBpbiB0aGUgbWFpbiBjYXBhYmlsaXR5IGJpdHMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpbGwgaW4gc29tZSBvZiB0aGUgZGRyYXcgSEFMIGZpZWxkcy4KCUNhbGwgdGhlIHNldF9leGNsdXNpdmVfbW9kZSBjYWxsYmFjayB3aGVuIG5lY2Vzc2FyeS4KCUFkZGVkIGEgTWFpbl9EaXJlY3REcmF3X0dldENhcHMgbWV0aG9kLgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIG9ic29sZXRlIERJQlRleHR1cmUgc3VyZmFjZSBjbGFzcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgZ2FtbWEgY29udHJvbCBvbiB0aGUgRGlyZWN0RHJhdyBwcmltYXJ5IHdpbmRvdy4KCUVuc3VyZWQgdGhhdCB0aGUgcHJpbWFyeSB3aW5kb3cgaXMgY3JlYXRlZCBiZWZvcmUgdGhlIGNvbnN0cnVjdG9yIHJldHVybnMuCglGbGFnIHRoZSBwcmltYXJ5IHdpbmRvdyBhcyB0cmFuc3BhcmVudCBzbyBtb3VzZSBjbGlja3MgcGFzcyB0aHJvdWdoIGl0LgoJUHV0IHRoZSBwcmltYXJ5IHdpbmRvdyBoYW5kbGUgaW50byBhIHJlc2VydmVkIGZpZWxkIGZvciB4MTFkcnYgSEFMIHVzZS4KCgkqIGRsbHMvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0eXBvIHNvIHRoYXQgd2ludHJ1c3QgaXMgYnVpbHQuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUFkZCBhIG1pc3NpbmcgPC9zZWN0Mz4uCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCVVzZSBvZiBwcm9wZXIgdGVzdCBnZXRzIHJpZCBvZiBhIHNpZ25lZC91bnNpZ25lZCB3YXJuaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgdGhlIGRkcmF3IEhBTCBhY2Nlc3MgZXNjYXBlIChEQ0lDT01NQU5EKSBpbiB4MTFkcnYuCgoJKiBjb250cm9scy9jb21iby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgc2VuZGluZyBvZiBXTV9EUkFXSVRFTSBtZXNzYWdlIHRvIG93bmVyZHJhd24KCWNvbWJvYm94LgoKMjAwMS0wNC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9sc3RyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeCBzb21lIGNyYXNoIG9uIGJhZCBwYXJhbWV0ZXIgY29uZGl0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBfd3RvaSBhbmQgX3d0b2wuCgoJKiBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi9kZ2EyLmgsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBYRjg2REdBMiBkcml2ZXIgZm9yIHRoZSBkZHJhdyBIQUwuCglFbnRlcmVkIHNvbWUgYmFzaWMgSEFMIGRldmljZSBjYXBhYmlsaXRpZXMgZGF0YS4KCUFkZGVkIGEgR2V0RHJpdmVySW5mbyBoYW5kbGVyLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2ludHJ1c3QvLmN2c2lnbm9yZSwgZGxscy93aW50cnVzdC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZGVkIG5ldyBkbGwgd2ludHJ1c3QuZGxsIHdpdGggYSBzdHViIGZvciBXaW5WZXJpZnlUcnVzdCgpLgoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kc3VyZmFjZS9nYW1tYS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBJRGlyZWN0RHJhd0dhbW1hQ29udHJvbCBpbnRlcmZhY2UuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BwZC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBwYXBlciBzaXplIGFuZCBiaW4gdHlwZSBoYW5kbGluZyBtb3JlIGxpa2UgV2luZG93cyBkcml2ZXJzLgoKCSogb2JqZWN0cy9mb250LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIE5VTEwgY2hlY2sgZm9yIGxwbkZpdCBpbiBHZXRUZXh0RXh0ZW50RXhQb2ludFcuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLAoJICB0c3gxMS90c194bGliLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJQ29weSB0aGUgZmlyc3QgMTI4IGNvbG9ycyBmcm9tIHRoZSBkZWZhdWx0IGNvbG9ybWFwIHRvIFdpbmUncyBwcml2YXRlCgljb2xvcm1hcCB3aGVuIHVzaW5nICdzaGFyZWQnIGNvbG9ycy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTGV0IExPQURfTElCUkFSWV9BU19EQVRBRklMRSBsb2FkIHRoZSBidWlsdGluIGRsbCBpZiBsb2FkaW5nIGEgbmF0aXZlCglETEwgZmFpbGVkLCBzbyB0aGF0IHdpbmVzZXR1cHRrJ3MgZmFrZS13aW5kb3dzIGluc3RhbGxhdGlvbiB3b3JrLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNsaWdodGx5IGltcHJvdmUga2V5Ym9hcmQgdHJhY2tpbmcgaW4gY29tYm9ib3guCgoJKiBjb250cm9scy9lZGl0LmM6CglEYW4gRW5nZWwgPGRlbmdlbEBzb3VyY2VoYXJ2ZXN0LmNvbT4KCVNldCB0aGUgYmFja2dvdW5kIG1vZGUgdG8gb3BhcXVlIHRvIHBhaW50IGhpZ2hsaWdodGVkIHRleHQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgZGRyYXcgSEFMIGFuZCBnYW1tYSByYW1wIHN0dWZmIHRvIGltcGxlbWVudGF0aW9uIHN0cnVjdHVyZXMuCglBZGRlZCBhIHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlIHRvIGZsaXBfZGF0YSBhbmQgZmxpcF91cGRhdGUuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIENvZXJjZURJQlNlY3Rpb24ncyBBdXhNb2QgaGFuZGxpbmcuIEFkZGVkIENvZXJjZURJQlNlY3Rpb24yLgoKCSogb2xlL3V1aWQuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbmNsdWRlIHRoZSBHVUlEcyBpbiBkZHJhd2kuaCBpbiB0aGUgbGlid2luZV91dWlkLmEgbGlicmFyeS4KCgkqIGluY2x1ZGUvZGRyYXdpLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVlldCBtb3JlIHN0dWZmIGZvciBkZHJhd2kuaCwgaW5jbHVkaW5nIHNvbWUgR2V0RHJpdmVySW5mbyBHVUlEcy4KCgkqIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L3ZlcnNpb24ucmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZCB2ZXJzaW9uIHJlc291cmNlIHRvIGRkcmF3LmRsbCwgdmVyc2lvbmVkIHRvIERpcmVjdFggNy4wLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglHZXRJdGVtU3BhY2luZyh0cnVlKTogUmV0dXJuIHRoZSBkZWZhdWx0IGl0ZW0gc3BhY2luZyBpZiB0aGUgdmlldyBpcwoJTFZTX0lDT04sIGFuZCB0aGUgY3VycmVudCAnaXRlbSBzaXplJyBvdGhlcndpc2UuCgoJKiByZWxheTMyL3Nub29wLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGlzcGxheSB0aHJlYWQgaWQgaW5zdGVhZCBvZiAlZnMgaW4gc25vb3AgdHJhY2UuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCURvbid0IHJlc3RvcmUgdGhlIHNhdmVkIGtleWJvYXJkIGF1dG9yZXBlYXQgY29uZmlnLCBzaW5jZSB0aGUgY29uZmlnCglzYXZlIGNvZGUgaXRzZWxmIHdhcyBkaXNhYmxlZCBhIHdoaWxlIGFnby4uLgoKCSogaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2QzZHZlYy5pbmwsIGluY2x1ZGUvZDNkLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCURpcmVjdDNEIGhlYWRlciB1cGRhdGUuCgoJKiBpbmNsdWRlL2QzZGhhbC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglOZXcgaGVhZGVyIGQzZGhhbC5oLCB0aGUgRGlyZWN0M0QgSEFMIGRldmljZSBkcml2ZXIgaW50ZXJmYWNlLgoKCSogZGxscy9tc3ZjcnQvd2NzLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSGFuZGxlIHRoZSAlZiBjYXNlIGluIHdzcHJpbnRmLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUNoYW5nZWQgdGhlIHNwZWMgZGVmaW5pdGlvbiBvZiAqcypwcmludGYgZnJvbSAqc3RyIHRvIHB0ciwgc2luY2UgdGhhdAoJcGFyYW1ldGVyIGlzIGEgZGVzdGluYXRpb24gYnVmZmVyIHRoYXQgbWF5IG9ubHkgY29udGFpbiBnYXJiYWdlIG9uIGVudHJ5LgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLAoJICBkbGxzL2RwbGF5eC92ZXJzaW9uLnJjLCBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGQgdmVyc2lvbiByZXNvdXJjZSB0byBkcGxheXguZGxsLCB2ZXJzaW9uZWQgdG8gRGlyZWN0WCA3LjAuCgoJKiBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglHZW5lcmFsaXplIHRoZSBXaW5lIHZlcnNpb24gcmVzb3VyY2UgdGVtcGxhdGUgYSBiaXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9DYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ3MucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW8ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9GaS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0h1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0tvLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9ObC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTm8ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1BsLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tdi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSAiU3lzdGVtIiBmb250IGJ5ICJIZWx2IiBpbiBzaGVsbDMyICJBYm91dCIgZGlhbG9nLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBPTEUzMi5Jc0FjY2VsZXJhdG9yLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gU1RHX0VfRklMRUFMUkVBRFlFWElTVFMgaW4gb2xlMzIuU3RnT3BlblN0b3JhZ2UgaWYgdGhlIGZpbGUgaXMKCW5vdCBhIHN0b3JhZ2Ugb2JqZWN0LgoKCSogb2JqZWN0cy9kYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgaW1wbGVtZW50YXRpb24gb2YgQ3JlYXRlREMxNiB0byBDcmVhdGVEQ0EuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCUFsbG9jYXRlIGJpdG1hcCBvYmplY3RzIGluIHRoZSBsYXJnZSBoZWFwIGFyZWEuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCAwIGNvdW50IGhhbmRsaW5nIGluIFBTRFJWX1RleHQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgTVMgU2hlbGwgRGxnIGZvbnQgdG8gdGhlIHNldCBvZiBkZWZhdWx0IHNhbnMgc2VyaWYgZm9udHMuCgoJKiBkbGxzL21zdmNydC90aW1lLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIE1TVkNSVF9jbG9jayByZXR1cm4gdHlwZS4KCjIwMDEtMDQtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglBZGRlZCBtaXNzaW5nIDxsaXN0aXRlbT4uCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0Lmg6CglSZXBhaXJlZCBzaGFyZWQgUEUgZGF0YSBzZWN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbm90ZSBvbiB1c2luZyBzaGVsbCBzY3JpcHRzIGFzIEFlRGVidWcgc2V0dXAsIGFkZGVkCglCcmVha09uRGxsTG9hZCB2YXJpYWJsZS4KCgkqIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUEgZmV3IGZpeGVzLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb3BlbmluZyBvZiBzb21lIGRyaXZlcnMuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjYWxsYmFjayBwYXJhbWV0ZXJzIChib2d1cyBoV2F2ZSk7IGFkZGVkIGFjbSBjb252ZXJzaW9uIGZvcgoJd2F2ZUluLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3cgTUNJX1NFVCB0byBjaGFuZ2Ugd2F2ZUZvcm1hdCBmb3IgcmVjb3JkaW5nLgoJRml4ZWQgYnVmZmVyIGhhbmRsaW5nIG9uIHJlY29yZGluZyBlbmQuCglGaXhlZCBzaXplIG9mIHJlY29yZGVkIGRhdGEgaW4gbW1pbyBmaWxlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVmZmVycyBpc3N1ZSBpbiByZWNvcmRpbmcuCglaZXJvZWQgdW5uZWNlc3Nhcnkgc2Vjb25kIHBhcmFtZXRlciBmb3IgV0lNX0RBVEEgbm90aWZpY2F0aW9uLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlZCByb2J1c3RuZXNzIGF0IHN0YXJ0dXAuCgoJKiB3aW5kb3dzL21zZ2JveC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgTUJfKk1PREFMIHN0eWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktICpkb24ndCogTW92ZVdpbmRvdygpIHRoZSBzdGF0dXMgYmFyIGlmIENDU19OT1JFU0laRSBpcyBzcGVjaWZpZWQsCgkgIGFuZCB1c2UgU2V0V2luZG93UG9zIGluc3RlYWQgZm9yIG9uZSBvZiB0aGUgTW92ZVdpbmRvdygpcwoJLSBjYWxsIFNUQVRVU0JBUl9HZXRJbmZvUHRyICpvbmNlKiBsaWtlIFdpbmRvd3MgZG9lcywgbm90IHR3aWNlICh1c2VkIHRvIGJlCgkgIGluIGV2ZXJ5IHN1YiBmdW5jdGlvbiwgdG9vKQoJLSByZW1lbWJlciBod25kUGFyZW50IGZyb20gY3JlYXRlIHN0cnVjdCB0byB1c2UgaW4gYXQgbGVhc3QgV01fQ1JFQVRFIGFuZAoJICBXTV9TSVpFIGluc3RlYWQgb2YgR2V0UGFyZW50KCkgbGlrZSBpbiBXaW5kb3dzCgktIGFkZGVkIERlZldpbmRvd1Byb2MgY2FsbCB0byBXTV9TSVpFIGxpa2UgaW4gV2luZG93cwoJLSBhZGRlZCBJbnZhbGlkYXRlUmVjdCwgVXBkYXRlV2luZG93IHRvIFdNX0NSRUFURSBsaWtlIGluIFdpbmRvd3MKCS0gbXVjaCBtb3JlIHZlcmJvc2UgK3N0YXR1c2JhciBvdXRwdXQKCS0gcmVuYW1lIHBhcnRfbnVtIHRvIG5QYXJ0IGZvciBjb25zaXN0ZW5jeQoJLSBhZGRlZCBuY2xtLmNiU2l6ZSB0byBTeXN0ZW1QYXJhbWV0ZXJzSW5mb0EgY2FsbAoJLSBhZGRlZCBGSVhNRSB0byBTVEFUVVNCQVJfU2V0UGFydHMKCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVNldCB0aGUgY3VzdG9tIGRpYWxvZyBib3ggdG8gdGhlIGJvdHRvbSBvZiB0aGUgWi1vcmRlci4KCjIwMDEtMDQtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBpbml0LmgsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9sb2JieXNwLmMsCgkgIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywKCSAgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL29iamJhc2UuaCwKCSAgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvdXVpZC5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gUHJvdmlkZSBsb2JieSBwcm92aWRlciBDT00gb2JqZWN0IGhlYWRlciBmaWxlIGFuZCBzdHViIGltcGxlbWVudGF0aW9uCgktIEJyZWFrIG91dCBkcGwgYW5kIGRwIHNlcnZpY2UgcHJvdmlkZXIgaW50aWFsaXphdGlvbgoJLSBBZGQgbWlzc2luZyBkZWZpbml0aW9uIG9mIEVfUEVORElORwoJLSBSZXNvbHZlIGEgZmV3IGZpeG1lcwoJLSBGaXggaW5jbHVkZXMgZm9yIGRwbGF5LmgKCgkqIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZXNzYWdlLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQWRkZWQgZmlyc3QvbGFzdCBtZXNzYWdlIGZpbHRlcnMgdG8gTVNHX0ludGVybmFsR2V0TWVzc2FnZSB0byBhdm9pZAoJYnVzeSB3YWl0cy4KCgkqIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luY29uLmgsCgkgIHdpbjMyL2NvbnNvbGUuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIGFkZGVkIHN0dWJzIGZvciB0aHJlZSBjb25zb2xlIGZ1bmN0aW9ucwoJLSB1cGRhdGVkIHdpbmNvbi5oCgoJKiBvbGUvb2xlMm5scy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU21hbGwgdHlwbyBmaXguCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU2V0V2luZG93UmduIHNob3VsZG4ndCBhY3RpdmF0ZSB0aGUgd2luZG93LgoKMjAwMS0wNC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgc2lnbmF0dXJlIG9mIF9fR2V0TWFpbkFyZ3MgYW5kIF9fZ2V0bWFpbmFyZ3MgKGZyb20gbXN2Y3J0KS4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLAoJICBkbGxzL21zdmNydC9jdHlwZS5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLAoJICBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsCgkgIGRsbHMvbXN2Y3J0L3RpbWUuYywgZGxscy9tc3ZjcnQvd2NzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluY2x1ZGUgdGhlIG1zdmNydCBoZWFkZXJzLCByZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb25zLgoJRml4ZWQgdGhlIHNpZ25hdHVyZSBvZiBhIGZldyBmdW5jdGlvbnMuCglEb24ndCB1c2Ugd2NzKiBmdW5jdGlvbnMsIHVzZSAqVyAoZnJvbSB1bmljb2RlLmgpIGluc3RlYWQuCgoJKiBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUHJldmVudCBtdWx0aXBsZSBkZWZpbml0aW9ucyBjYXVzZWQgYnkgTVNWQ1JUIGhlYWRlcnMuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFsbG93IHRoZSBNYWtlZmlsZS5pbiB0byBkZWZpbmUgRVhUUkFERUZTIGFuZCBhZGQgaXQgdG8gREVGUy4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy90aW1lYi5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3V0aW1lLmgsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L2NvbmlvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2N0eXBlLmgsIGluY2x1ZGUvbXN2Y3J0L2RpcmVjdC5oLAoJICBpbmNsdWRlL21zdmNydC9kb3MuaCwgaW5jbHVkZS9tc3ZjcnQvZmNudGwuaCwgaW5jbHVkZS9tc3ZjcnQvaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLCBpbmNsdWRlL21zdmNydC9zdGRkZWYuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oLCBpbmNsdWRlL21zdmNydC90aW1lLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmgsIGluY2x1ZGUvbXN2Y3J0L3djdHlwZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBoZWFkZXJzIGZvciB0aGUgbXN2Y3J0IGxpYnJhcnkuCgoJKiBjb250cm9scy9lZGl0LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWRkZWQgbWFwcGluZ3MgZm9yIFdNX0NIQVJUT0lURU0gYW5kIFdNX01FTlVDSEFSIG1lc3NhZ2VzLgoJUmVtb3ZlZCBtYXBwaW5nIG9mIDE2LWJpdCBlZGl0IG1lc3NhZ2VzIGluIHRoZSBnZW5lcmljIHJvdXRpbmVzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOgoJUGFzcyB0aGUgY29ycmVjdCBzdHJpbmcgbGVuZ3RoIHRvIFJlZ1NldFZhbHVlRXhBLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJUmVnU2V0VmFsdWVFeEEvVzogZml4ZWQgUkVHX1NaIHN0cmluZyBsZW5ndGggaGFuZGxpbmcgZm9yIFdpbjk1LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBzdHViIGZvciBXU0FTZW5kLgoKCSogZGxscy9udGRsbC9yZWcuYywgc2VydmVyL3JlZ2lzdHJ5LmM6CglGaXhlZCBoYW5kbGluZyBvZiBcXFJlZ2lzdHJ5IHByZWZpeC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTdHViIGZvciBPbGVMb2FkUGljdHVyZUV4LgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4IGZvciBzbWFsbCB0eXBvLgoKCSogZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvY3R5cGUuYywKCSAgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZW52aXJvbi5jLAoJICBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvZXhpdC5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsCgkgIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tYmNzLmMsCgkgIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L3N0cmluZy5jLCBkbGxzL21zdmNydC90aHJlYWQuYywKCSAgZGxscy9tc3ZjcnQvdGltZS5jLCBkbGxzL21zdmNydC93Y3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRqdXN0IHRoZSAnTVNWQ1JUXycgcHJlZml4IHRvIG1hdGNoIHRoZSBtc3ZjcnQgaGVhZGVycwoJUHJlZml4IGludGVybmFsIG1ldGhvZHMgd2l0aCAnbXN2Y3J0XycgaW5zdGVhZCBvZiAnTVNWQ1JUXycsICdfX01TVkNSVF8nLCBldGMuCglSZW1vdmUgJ19jZGVjbCcsIGl0J3MgdW5uZWNlc3NhcnkKCjIwMDEtMDQtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC90ZXN0LnBsLCBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5jOgoJU3RvcmUgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaW4gdGhlICVwcm90b3R5cGVzIGhhc2ggaW5zdGVhZCBvZiB0aGUKCWZ1bmN0aW9uIG5hbWUgdG8gYXZvaWQgbG9va2luZyBpdCB1cCBvbiBldmVyeSBjYWxsLgoJRml4ZWQgY2FsbGJhY2sgdGh1bmtzIHRvIHVzZSBzdGRjYWxsIGNhbGxpbmcgY29udmVudGlvbi4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3BsYXkgdGhyZWFkIGlkIGluc3RlYWQgb2YgJWZzIGluIHJlbGF5IHRyYWNlLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJRmlsbCBpbiBTdGFuZGFyZE5hbWUgZmllbGQgaW4gc3RydWN0IHJldHVybmVkIGZyb20gR2V0VGltZVpvbmVJbmZvcm1hdGlvbi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgc3R1YnMgZm9yIGZ1bmN0aW9ucyB1c2VkIGJ5IG5ld2VyIHJwY3J0NCBkbGxzLgoKCSogb2JqZWN0cy9kYy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUdldERldmljZUNhcHM6IG1ha2Ugc3VyZSB0aGUgZGV2Q2FwcyBmaWVsZCBpcyBub3QgTlVMTCBiZWZvcmUKCWRlcmVmZXJlbmNpbmcgaXQuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFyZyAzIG9mIENvR2V0Q2xhc3NPYmplY3QgaXMgQ09TRVJWRVJJTkZPKiwgYWRkZWQgc29tZSBtb3JlIGRlYnVnLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyYW5zbGF0aW9ucyBmb3IgR2VybWFuIGxhbmd1YWdlLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBHZXRDb252ZXJ0U3RnIHN0dWIuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWN0dWFsbHkgcHJpbnQgdGhlIGd1aWRzIGluIERsbEdldENsYXNzT2JqZWN0KCkuCgoJKiBSRUFETUUsIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgdW5pbnN0YWxsIGhpbnRzLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvd2luZWRiZy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJTW9kaWZ5IGRlYnVnZ2VyIHRvIHVuZGVyc3RhbmQgc3BlY2lhbCB1bmRvY3VtZW50ZWQgIk5hbWUgVGhyZWFkIgoJZXhjZXB0aW9uIGZyb20gTVMgVkM2LgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlYWxseSBkbyBub3Qgcm9sbCB1cCBpZiBzZWxlY3Rpb24gaXMgYmVpbmcgdHJhY2tlZCBieSBhcnJvdyBrZXlzIGluCgl0aGUgZHJvcGRvd24gbGlzdGJveC4KCgkqIGRsbHMvdXNlci9kZGVtbC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJV2hlbiBjYWxsaW5nIENyZWF0ZU11dGV4KCkgaGFuZGxlIHRoZSBjYXNlIHdoZW4gdGhlIG11dGV4IGlzIGFscmVhZHkKCWNyZWF0ZWQgaW4gYW5vdGhlciBwcm9jZXNzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQWZ0ZXIgYW4gaXRlbSB0ZXh0IGNoYW5nZXMsIHRoZSByZWN0YW5nbGUgd2lkdGggc2hvdWxkIGJlCglyZWNhbGN1bGF0ZWQuCgoyMDAxLTA0LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzoKCURvbid0IHVzZSBUSFJFQURfSWRUb1RFQiBpbiBFbnVtVGhyZWFkV2luZG93cy4KCgkqIHVuaWNvZGUvd2N0b21iLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgJ3VzZWQnIGlzIHNldCB0byAwIGlmIG5vIGNvbnZlcnNpb25zIHRha2UgcGxhY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgc2Nyb2xsaW5nIG9mIGxpc3R2aWV3IHdpdGggYSBtb3VzZSB3aGVlbC4KCgkqIG9sZS9vbGUybmxzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbXBsZW1lbnQgVElNRV9GT1JDRTI0SE9VUkZPUk1BVCBhbmQgVElNRV9OT1RJTUVNQVJLRVIgZmxhZ3MgaW4KCU9MRV9HZXRGb3JtYXRBLgoKCSogd2luZG93cy93aW5wcm9jLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBmaWxlcy9kcml2ZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsCgkgIG1zZG9zL2ludDIxLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUFkZGVkIFRBU0tfR2V0UHRyL1RBU0tfR2V0Q3VycmVudCBmdW5jdGlvbnMgdG8gZ2V0IHRoZSBUREIgZm9yIGEgdGFzawoJaGFuZGxlLgoKCSogaW5jbHVkZS90YXNrLmgsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbmlmaWVkIDE2LWJpdCBhbmQgMzItYml0IHNjaGVkdWxpbmcgYSBiaXQgbW9yZS4KCgkqIG1zZG9zL2Rvc2NvbmYuYzoKCURvbid0IGNhbGwgc3RydG9rIHR3aWNlIGlmIGl0IGZhaWxlZCB0aGUgZmlyc3QgdGltZS4KCgkqIHNlcnZlci9yZXF1ZXN0LmM6CglNYWtlIHN1cmUgdGhlIHByb2Nlc3Mgc29ja2V0IGlzIG5vbi1ibG9ja2luZy4KCURvbid0IGZhaWwgaWYgbm90aGluZyByZWFkeSBvbiByZWN2bXNnIGZvciBhIGZpbGUgZGVzY3JpcHRvci4KCgkqIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBvYmplY3RzL2ZvbnQuYywgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtZW1iZXIgbmFtZXMgaW4gTkVXVEVYVE1FVFJJQ0VYIHN0cnVjdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglFcmFzZSB0aGUgaW4tbWVtb3J5IERDIGZvciB0cmVldmlldyBhbmQgZml4ZXMgdGhlIHJlY3RhbmdsZSBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTZXQgYmFja2dyb3VuZCBtb2RlIHRvIHRyYW5zcGFyZW50IGJlZm9yZSBjYWxsaW5nIG93bmVyLWRyYXduIHVzZXIKCWhhbmRsaW5nLgoKMjAwMS0wNC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9mb250LmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcHNkcnYucmVnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS11c2VyLnNnbWw6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglWYXJpb3VzIHJlZ2lzdHJ5LXJlbGF0ZWQgUG9zdFNjcmlwdCBkcml2ZXIgZW5oYW5jZW1lbnRzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURvIG5vdCBzZW5kIHRoZSBFTl9DSEFOR0Ugbm90aWZpY2F0aW9uIG1lc3NhZ2UgdW50aWwgdGhlIHNlbGVjdGlvbgoJc3RhcnQgYW5kIGVuZCB2YWx1ZXMgYXJlIGZpbGxlZCBpbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglHdXN0YXZvIE5vcm9uaGEgU2lsdmEgKEtvVikgPGtvdkBkZWJpYW4ub3JnPgoJQWRkZWQgVVMgaW50ZXJuYXRpb25hbCBrZXlib2FyZC4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGQgdmFsdWUgMTA2IHRvIFN5c3RlbVBhcmFtZXRlcnNJbmZvLgoKMjAwMS0wMy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLlBMLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUud2luMzIsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUueHMsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LmM6CglKb2huIEYgU3R1cnR6IDxqc3R1cnR6QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEb24ndCB0cnkgdG8gY3JlYXRlIGZpbGUgdHdpY2UgaW4gdGhlIE5VTEwgZmlsZW5hbWUgY2FzZSBmb3IKCVN0Z0NyZWF0ZURvY0ZpbGUuCgoJKiBjb250cm9scy9lZGl0LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgZm9ybWF0IGVuZ2luZSB0byByZWR1Y2UgZmxpY2tlci4KCjIwMDEtMDMtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgYXBwbGljYXRpb24tc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgYSBmZXcgb3B0aW9ucwoJKERlc2t0b3AsIE1hbmFnZWQsIFNjcmVlbkRlcHRoIGFuZCBTeW5jaHJvbm91cykuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHVuZGVmaW5lZCBDIGNvbnN0cnVjdHMgKHZhbCBhc3NpZ25tZW50IGluIGV4cHJlc3Npb25zIHVzaW5nIGl0LAoJcG9zdGluYyBvcGVyYXRvcnMgaW4gbWFjcm9zKS4KCgkqIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJRG9uJ3QgbG9hZCB1c2VyMzIgdG9vIGVhcmx5IG9uIGZvciAxNi1iaXQgYXBwcywgc28gdGhhdCBhcHAtc3BlY2lmaWMKCWNvbmZpZyBjYW4gYmUgYXZhaWxhYmxlIHdoaWxlIGxvYWRpbmcgaXQuCgoJKiB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCBhbmQgcHJpbnQgY2xhc3MgbmFtZSBmb3IgcmlnaHQgd2luZG93IGluIFdJTl9XYWxrV2luZG93cy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luZG93cy91c2VyLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsCgkgIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjE2Lmg6CglBbHdheXMgbG9hZCB0aGUgMzItYml0IGRsbCBjb250YWluaW5nIGEgZ2l2ZW4gMTYtYml0IGJ1aWx0aW4uCglDaGVjayB0aGUgbW9kdWxlIG5hbWUgaW4gYWRkaXRpb24gdG8gdGhlIGZpbGUgbmFtZSB3aGVuIGxvYWRpbmcgYQoJMTYtYml0IGJ1aWx0aW4gZGxsLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywKCSAgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJLSBBbHdheXMgdXNlIGEgZG91YmxlLWJ1ZmZlcmVkIHZpc3VhbCBpZiBvbmUgaXMgYXZhaWxhYmxlLgoJLSBFbnN1cmUgdGhhdCBhbGwgY29sb3JtYXBzIGNyZWF0ZWQgdXNlIHRoZSBkb3VibGUtYnVmZmVyZWQgdmlzdWFsIGlmCgkgIGl0IGV4aXN0cy4gVGhpcyBwcmV2ZW50cyBwcm9ibGVtcyB3aGVyZSBEUkkgR0wgaW1wbGVtZW50YXRpb25zIGZhaWwKCSAgdG8gd29yayB1bmxlc3MgdGhlIGNvbG9ybWFwIHZpc3VhbCBtYXRjaGVzIHRoZSB3aW5kb3cgdmlzdWFsIG1hdGNoZXMgdGhlCgkgIGdsWCB2aXN1YWwuCgktIEdldCBhcm91bmQgc2ltaWxhciB2aXN1YWwgaXNzdWUgd2l0aCB0aGUgZGVmYXVsdCBHTCBjb250ZXh0IGNyZWF0ZWQgZm9yCgkgIGFwcHMgdGhhdCBkb24ndCBjcmVhdGUgdGhlaXIgb3duIGNvbnRleHRzIGJlZm9yZSB0cnlpbmcgdG8gdXNlIEdMIGZ1bmN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglGaXhlZCBjb21tYW5kLWxpbmUgZXhhbXBsZS4KCjIwMDEtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRToKCVJlbGVhc2UgMjAwMTAzMjYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgYWRkaXRpb25hbCBkZWZhdWx0cyBhbmQgc2FtcGxlcyB0byBbZm9udHNdIHNlY3Rpb24uCgoyMDAxLTAzLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9vcHRpb25zLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywKCSAgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglDbGVhbnVwIHByb3Blcmx5IG9uIHgxMWRydiB1bmxvYWRpbmcuCglNb3ZlZCAtLXN5bmNocm9ub3VzIG9wdGlvbiBpbnRvIGNvbmZpZyBmaWxlLgoJUmVtb3ZlZCAtLWRlc2t0b3AsIC0tZGlzcGxheSBhbmQgLS1sYW5ndWFnZSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CgktIE1DSV9TQVZFIHNob3VsZCBvdmVyd3JpdGUgaXRzIGRlc3RpbmF0aW9uIGZpbGUuCgktIHdpZENsb3NlKCkgaXMgc29tZXRpbWVzIGZhaWxpbmcuLi4gTUNJIChpbiBXQVZFX21jaVJlY29yZENhbGxiYWNrKQoJICBzaG91bGRuJ3QgcXVldWUgdXAgYnVmZmVycyBpZiBpdCBrbm93cyB3ZSBhcmUgbm8gbG9uZ2VyIHJlY29yZGluZy4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZmlsZXMvcHJvZmlsZS5jLCBtZW1vcnkvbG9jYWwuYywKCSAgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCB3aW5kb3dzL3VzZXIuYzoKCVNtYWxsIGRsbCBzZXBhcmF0aW9uIGZpeGVzLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJVXNlIFRFQiBzdGF0aWMgYnVmZmVyIGZvciBVbmljb2RlIGNvbnZlcnNpb24uCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaGFuZGxpbmcgb2YgLmhwcCBmaWxlcyAoYW5vdGhlciBleHRlbnNpb24gZm9yIEMrKyBoZWFkZXJzKS4KCVRoZSB3cmFwcGVyIGNvZGUgbmVlZHMgdG8gaW1wb3J0IGRsbHMgdG9vLgoJQWxsIHRoZSBnZW5lcmF0ZWQgd3JhcHBlciBmaWxlcyB3ZXJlIGlkZW50aWNhbCwgdGhlICd2YXJpYWJsZScKCXN1YnNpdHV0aW9uIHdhcyBkb25lIG9uIHRoZSB0ZW1wbGF0ZSBpdHNlbGYuIE91cHMhCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnRWZXJzaW9uSW5mbzMyVG8xNjogdGhlIGVuZCBvZiB0aGUgY2hpbGQgbGlzdCBtYXkgYWxzbyBiZSBtYXJrZWQKCWJ5IGEgMC1ieXRlIGNoaWxkLgoKMjAwMS0wMy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwKCSAgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL2FzeW5jLmMsCgkgIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglVc2UgcG9sbCgpIG9uIHRoZSBjbGllbnQtc2lkZSBkdXJpbmcgc2VydmVyIHdhaXRzIHRvIGltcGxlbWVudAoJb3ZlcmxhcHBlZCBJL08uCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvY29uc29sZS5jLAoJICBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvY29uc29sZS5jOgoJVXNlIHRoZSBuZXcgc2VuZF9mZCBtZWNoYW5pc20gZm9yIHRoZSBzZXRfY29uc29sZV9mZCBzZXJ2ZXIgcmVxdWVzdC4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywKCSAgZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglKZWZmIEdhcnppayA8amdhcnppa0BtYW5kcmFrZXNvZnQuY29tPgoJQWRkZWQgbmVlZGVkIHN0cmluZy5oIGluY2x1ZGVzLgoKMjAwMS0wMy0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJQ2xlYW5lZCB1cCBhc3N1bXB0aW9ucyBhYm91dCBXU19DSElMRCBmbGFnIHNvIHRoYXQgd2UgY2FuIGFsbG93IGl0IHRvCgliZSBjaGFuZ2VkIGluIFNldFdpbmRvd0xvbmcuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbmNyZWFzZSBkZWJ1ZyBidWZmZXIgc2l6ZSB1cCB0byAxMDI0IGJ5dGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5QTCwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLndpbjMyLAoJICBwcm9ncmFtcy93aW5ldGVzdC90ZXN0LnBsLCBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5zcGVjOgoJQWRkZWQgZmlyc3QgdmVyc2lvbiBvZiB0aGUgUGVybCByZWdyZXNzaW9uIHRlc3RpbmcgZnJhbWV3b3JrLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLAoJICBsb2FkZXIvbG9hZG9yZGVyLmM6CglBZGRlZCAiKiIgd2lsZGNhcmQgZW50cnkgdG8gRGxsT3ZlcnJpZGVzIHRvIHJlcGxhY2UgRGxsRGVmYXVsdHMKCXNlY3Rpb247IHRoaXMgd2F5IGl0IGNhbiBhbHNvIGJlIHNwZWNpZmllZCBvbiBhIHBlci1hcHAgYmFzaXMuCglSZW1vdmVkIGNvbXBpbGVkLWluIGRlZmF1bHRzIGZvciBkbGxzIG1lbnRpb25lZCBpbiB0aGUgc2FtcGxlIGNvbmZpZy4KCVVwZGF0ZSBtYW4gcGFnZS4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywKCSAgaW5jbHVkZS9uZXRzcGkuaCwgc2VydmVyL21haW4uYywgc2VydmVyL3RyYWNlLmM6CglKZWZmIEdhcnppayA8amdhcnppa0BtYW5kcmFrZXNvZnQuY29tPgoJV2FybmluZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd21jL21jbC5jLCBzY2hlZHVsZXIvcHRocmVhZC5jLAoJICBzY2hlZHVsZXIvc3luY2hyby5jLCBzZXJ2ZXIvYXRvbS5jOgoJSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAbWFuZHJha2Vzb2Z0LmNvbT4KCUFkZGVkIHNvbWUgaW5jbHVzaW9ucyBvZiBzdHJpbmcuaCB3aGVyZSBuZWNlc3NhcnkuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCURpc2FibGUgRE9OVF9SRVNPTFZFX0RMTF9SRUZFUkVOQ0VTIGZvciBidWlsdGluIGRsbHMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgbG9hZGluZyBvZiBidWlsdC1pbiBkbGxzIHdpdGggTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIGZsYWcgc2V0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVNob3cgYW4gZXJyb3IgaWYgc21hbGwgZW5vdWdoIGZyYWdtZW50IHNpemVzIGNvdWxkbid0IGJlIHNldC4KCUZvcmNlIGEgY29tcGxldGUgY2xvc2UvcmVvcGVuIG9mIHRoZSBzb3VuZCBkZXZpY2UgaWYgcGF1c2UgaXMKCXJlcXVlc3RlZCBpbiBEaXJlY3RTb3VuZCBtb2RlIChtYW55IGRyaXZlcnMgcmVxdWlyZSB0aGlzKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmUgb2Jzb2xldGUgYW5kIG1pc2xlYWRpbmcgRklYTUUuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBHZXQvU2V0RGV2aWNlR2FtbWFSYW1wLgoKMjAwMS0wMy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sCgkgIGluY2x1ZGUvbG9hZG9yZGVyLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsCgkgIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL29wdGlvbnMuYzoKCS0gQWRkZWQgc3VwcG9ydCBmb3IgYXBwLXNwZWNpZmljIGRsbCBvdmVycmlkZXMgdXNpbmcKCSAgQXBwRGVmYXVsdHNcPGFwcG5hbWU+XERsbE92ZXJyaWRlcyBjb25maWd1cmF0aW9uIHNlY3Rpb24uCgktIEJldHRlciBzdXBwb3J0IGZvciBtdWx0aXBsZSAtLWRsbCBvcHRpb25zLgoJLSBBZGRlZCB3YXJuaW5nIG1lc3NhZ2UgdG8gZGlzY291cmFnZSBwdXR0aW5nIG11bHRpcGxlIGRsbHMgaW4gYQoJICBzaW5nbGUgb3ZlcnJpZGUgZW50cnkuCgoJKiB3aW4zMi9leGNlcHQuYzoKCVRlcm1pbmF0ZSBwcm9jZXNzIG9uIHVuaGFuZGxlZCBeQyBleGNlcHRpb24gaW5zdGVhZCBvZiBsYXVuY2hpbmcgdGhlCglkZWJ1Z2dlci4KCgkqIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwKCSAgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBHZXQvU2V0RGV2aWNlR2FtbWFSYW1wLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3dpbi5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHVicyBmb3IgR2V0V2luZG93c01vZHVsZUZpbGVOYW1lW0EvV10uCgoJKiBjb250cm9scy9jb21iby5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCU5hdGl2ZSB2ZXJzaW9uIHNlZW1zIHRvIGFsd2F5cyByZS1kcmF3IHRoZSBzZWxlY3RlZCB0ZXh0IGF0IHRoZSBlbmQgb2YKCWEgcm9sbHVwLgoKCSogZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZGRyYXcuaCwKCSAgZGxscy94MTFkcnYveHZpZG1vZGUuYywgZGxscy94MTFkcnYveHZpZG1vZGUuaCwgaW5jbHVkZS94MTFkcnYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgZ2FtbWEgcmFtcCBjb2RlIHRvIHRoZSBYVmlkTW9kZSBpbnRlcmZhY2UuCgoJKiBpbmNsdWRlL2RkcmF3aS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3JlIERpcmVjdERyYXcgSEFMIHR5cGUgZGVjbGFyYXRpb25zLgoKMjAwMS0wMy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJU2F0c3VraSBGdWppc2hpbWEgPHNmQGZyZWVic2Qub3JnPgoJRml4ZWQgRnJlZUJEUyB4cGc0IGNoZWNrLgoKCSogTWFrZS5ydWxlcy5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3NwZWNtYWtlci9NYWtlZmlsZS5pbjoKCVNhdHN1a2kgRnVqaXNoaW1hIDxzZkBmcmVlYnNkLm9yZz4KCVVzZSBJTlNUQUxMX1NDUklQVCBpbnN0ZWFkIG9mIElOU1RBTExfUFJPR1JBTSBmb3Igc2NyaXB0cy4KCgkqIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmMsIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3ZlcnNpb24ucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHZlcnNpb24gaW5mbyBmb3IgYnVpbHQtaW4gb2xlYXV0MzIuZGxsLgoKCSogY29udHJvbHMvbWVudS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRml4IHN5c3RlbSBtZW51IGNyYXNoIGJ5IGVuc3VyaW5nIHRoYXQgaXRlbS0+dGV4dCBpcyBub3QgbnVsbCB3aGVuCglNRl9URVhUIHNldC4KCgkqIGluY2x1ZGUvZGRyYXcuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgSURpcmVjdERyYXdHYW1tYUNvbnRyb2wgaW50ZXJmYWNlIGRlY2xhcmF0aW9uLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUcnVuY2F0ZSB2ZXJzaW9uIGRhdGEgaWYgcHJvdmlkZWQgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2guCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBzb3VuZCBkaXNhcHBlYXJpbmcgYWZ0ZXIgb24tdGhlLWZseSBzYW1wbGUgcmF0ZSBjaGFuZ2VzIGFuZAoJYWZ0ZXIgY2VydGFpbiB1bmRlcnJ1biBjb25kaXRpb25zLgoJQ29tcGlsYXRpb24gZml4ZXMgZm9yIHdoZW4gVVNFX0RTT1VORDNEIGlzIGRlZmluZWQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdpbjIwMDA6IElmIGJvdGggV1NfRVhfTEFZRVJFRCBhbmQgV1NfRVhfVFJBTlNQQVJFTlQgc3R5bGVzIGFyZSBzZXQsCgltb3VzZSBjbGlja3Mgc2hvdWxkIGdvIHN0cmFpZ2h0IHRocm91Z2ggdGhlIHdpbmRvdy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEgbXVzdCBiZSBhYmxlIHRvIGNyZWF0ZSBhIGZ1bGwgcGF0aCBpZiBpdAoJZG9lc24ndCBleGlzdC4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGZvciBfc2V0am1wMygpLgoJSW1wbGVtZW50ZWQgX3NvcGVuKCkuCgoyMDAxLTAzLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFkZGVkIHZlcnNpb24gaW5mby4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZm9udC5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBncmFwaGljcy93aW4xNmRydi9mb250LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBHZXRUZXh0TWV0cmljcyB0byB1bmljb2RlLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgaW5jbHVkZS93aW52ZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBwcm90b3R5cGUgb2YgR2V0RmlsZVZlcnNpb25JbmZvQS9XLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBEb2N1bWVudGVkIHRoaW5ncyBrbm93biB0byBiZSB1bmltcGxlbWVudGVkLgoJLSBJbXBsZW1lbnRlZCBDQk5fU0VMQ0hBTkdFLCBDQk5fS0lMTEZPQ1VTLCBhbmQgQ0JOX1NFTEVORE9LLgoJLSBDb3JyZWN0ZWQgQ0JFTl9FTkRFRElUIG5vdGlmaWVzIHRvIGFsd2F5cyBoYXZlIGVkaXQgY29udHJvbCB0ZXh0LgoJLSBMb2NrZWQgInNlbGVjdGVkIiBzdGF0ZSBvZiBpY29uIHRvIGZvY3VzIHN0YXRlIG9mIGVkaXQgY29udHJvbCAoaWYKCSAgaXQgZXhpc3RzKSBqdXN0IGxpa2UgbmF0aXZlLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29ycmVjdCBSQk5fQ0hJTERTSVpFIGJhbmQgcmVjdGFuZ2xlIHRvIG1hdGNoIG5hdGl2ZS4KCS0gQ29ycmVjdCBmbGFncyBpbiBEZWZlcldpbmRvd1BvcyB0byBTV1BfTk9aT1JERVIgdG8gbWF0Y2ggbmF0aXZlLgoJLSBNYWtlIGhhbmRsaW5nIENvbWJvQm94IGFuZCBDb21ib0JveEV4IHRoZSBzYW1lIHdoZW4gbW92aW5nIGNoaWxkCgkgIHdpbmRvd3MuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUxhYmVsIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGNvcnJlY3RseSBpbiB0aGUgV0lORE9XUE9TIGRpc3BsYXkuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgV2luMjAwMCBXU19FWF9MQVlFUkVEIHdpbmRvdyBzdHlsZS4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVwbGFjZWQgb25lIC5rZGUgd2l0aCAua2RlMiBpbiBLREUyIG1lbnUgY29kZS4KCgkqIHdpbmVkZWZhdWx0LnJlZzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIHBhdGggZnJvbSBkcGxheXggcmVnaXN0cnkgZW50cnksIHNvIHRoYXQgdGhlIGJ1aWx0aW4gZHBsYXl4CgljYW4gYmUgbG9hZGVkLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBMRF9MSUJSQVJZX1BBVEggaWYgbmVjZXNzYXJ5IGJlZm9yZSBjYWxsaW5nIHdyYyAmIHdpbmVidWlsZC4KCjIwMDEtMDMtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBmcm9tIEdldEZpbGVWZXJzaW9uSW5mbyhTaXplKSBpZiBzcGVjaWZpZWQgZmlsZSBmb3VuZCwgYnV0CglWU19WRVJTSU9OX0lORk8gcmVzb3VyY2Ugbm90LgoKCSogc2VydmVyL3NlcmlhbC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglSZW1vdmVkIGJyb2tlbiBzdXBwb3J0IGZvciBFVl9UWEVNUFRZIGJlY2F1c2UgaXQgY2F1c2VzIGJ1c3kgbG9vcHMuCgoJKiBzZXJ2ZXIvYXN5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkIG1pc3NpbmcgcmVsZWFzZSBvYmplY3Qgc28gc2VydmVyIGV4aXRzIGNsZWFubHkuCgoJKiBjb250cm9scy9tZW51LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglSZWNhbGN1bGF0ZSBtZW51IHNpemVzIGlmIFdNX0lOSVRNRU5VIGhhcyByZWNyZWF0ZWQvY2hhbmdlZCBzb21ldGhpbmcuCgoyMDAxLTAzLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbmxzL2NodC5ubHM6CglIYW5uLWh1ZWkgQ2hpb3UgPGtvYWxhQG1hbmEuZWUubnR1LmVkdS50dz4KCVVwZGF0ZWQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFkZGVkIHN0dWIgZm9yIFNldFRocmVhZEV4ZWN1dGlvblN0YXRlIChuZXcgZnVuY3Rpb24gaW4gV2luOTgvMjAwMCkuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXggVW5pY29kZS9BbnNpIG1lc3NhZ2UgdHJhbnNsYXRpb24gZm9yIHNvbWUgbGlzdGJveC9jb21ib2JveAoJbWVzc2FnZXMgd2l0aCBhIHplcm8gdmFsdWVkIGxwYXJhbS4gT3V0cHV0IGFuIGVycm9yIHdoZW4gdGhlCgl0cmFuc2xhdGlvbiBmYWlscy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IHR5cG8gaW4gT1VUTElORVRFWFRNRVRSSUMgZGVmaW5pdGlvbi4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglZZXQgYW5vdGhlciBhdHRlbXB0IG9uIGZpeGluZyBub3RpZmljYXRpb25zIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgc29tZSBzcGVjaWZpYyBhZm1kaXJzIGFzIGV4YW1wbGVzLgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCURvbid0IGxvYWQgQUZNIGZpbGVzIGZyb20gcHJlZGVmaW5lZCBkaXJlY3RvcmllczsgdXNlIFthZm1kaXJzXQoJc2VjdGlvbiBpbiBXaW5lIGNvbmZpZyBmaWxlIGluc3RlYWQuCgoyMDAxLTAzLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIG5vdGlmaWNhdGlvbnMgb2YgdGhlIGVkaXQgY29udHJvbC4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQ2FsbCBEZWZXaW5kb3dQcm9jIGZvciBXTV9DVExDT0xPUlNUQVRJQyBtZXNzYWdlIHdoZW4gdGhlIGFwcHMgZG9lcwoJbm90LgoKCSogY29udHJvbHMvY29tYm8uYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21taW8uYywKCSAgbG9hZGVyL2xvYWRvcmRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNwZWxsaW5nL3R5cG9zIGluIGNvbW1lbnRzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgZXh0ZW5zaW9uIGZvciAnb2xlMzIuZGxsJy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENyZWF0ZVJlbW90ZVRocmVhZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJSW1wbGVtZW50IFNIR2V0RmlsZUluZm9XIGJ5IGNhbGxpbmcgU0hHZXRGaWxlSW5mb0EuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUhhbmRsZSBlbXB0eSBzdHJpbmdzIGFuZCBpbnZhbGlkIHZhbHVlcyBpbiBscHN0ckluaXRpYWxEaXIgZm9yIDMyIGJpdHMKCW9wZW4gZmlsZSBkaWFsb2dzLgoKMjAwMS0wMy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJQWRkZWQgdmVyc2lvbjE2LnJjIGluIFJDX1NSQ1MgbGlzdC4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLAoJICBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgbmVzdGVkIHNlcnZlciB3YWl0cyAodG8gYWxsb3cgd2FpdGluZyBpbiBzaWduYWwKCWhhbmRsZXJzKS4KCgkqIFJFQURNRSwgdG9vbHMvd2luZWNoZWNrOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgYSBwZXJsIHNjcmlwdCB0byBjaGVjayBtYW55IGFzcGVjdHMgb2YgV2luZSBjb25maWd1cmF0aW9uLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJTFBBUkFNIGluIGZpbmQgZGlhbG9nIHdtX2luaXRkaWFsb2cgaXMgdGhlIGZpbmQvcmVwbGFjZSBzdHJ1Y3R1cmUsIG5vdAoJY3VzdGRhdGEuCgoJKiBkbGxzL2tlcm5lbC9ubHMvbHZpLm5sczoKCU5lcmlqdXMgQmFsaXVuYXMgPG5lcmlqdXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJVXBkYXRlZCBMYXR2aWFuIGRhdGUgZm9ybWF0LgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBTSEVMTCBsaW5raW5nIG9mIEtERTIgZGVza3RvcC9tZW51IGVudHJpZXMuCgoyMDAxLTAzLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDEwMzA1LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTAzLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBuU2VsZWN0aW9uTWFyayBhbmQgbkZvY3VzZWRJdGVtIHdoZW4gaW5zZXJ0aW5nL2RlbGV0aW5nL3NvcnRpbmcKCWl0ZW1zLgoJU29ydEl0ZW1zOiBJZiBzb3J0aW5nIGxlc3MgdGhhbiAyIGl0ZW1zLCBkbyBub3RoaW5nLgoKCSogd2luMzIvZmlsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFNldEZpbGVBcGlzVG9PRU0sIFNldEZpbGVBcGlzVG9BTlNJIGFuZCBBcmVGaWxlQXBpc0FOU0kuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQmFja2dyb3VuZCBvZiB0aGUgY2hpbGQgd25kIHNob3VsZCBiZSBlcmFzZWQgd2l0aCB0aGUgc2FtZSBjb2xvciBhcwoJICB0aGUgY29udHJvbC4KCS0gRGVmYXVsdCBzY3JvbGwgYW1vdW50IHNob3VsZCBiZSB0aGUgbWluaW11bSBjbGllbnQgYXJlYS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglVbmJsb2NrIHRoZSBkaWFsb2cgbWVzc2FnZSBsb29wIHdpdGggYSBXTV9OVUxMIG1lc3NhZ2UuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglWZWRyYW4gUm9kaWMgPHZlZHJhbkByZW5hdGEuaXJiLmhyPgoJTWFkZSA4IGJwcCB0byAyNCBiaXQgZGVwdGggY29udmVyc2lvbiBpbiBYMTFEUlZfRElCX1NldEltYWdlQml0c184CglmYXN0ZXIgYnkgdXNpbmcgaW5saW5lIGFzbS4KCgkqIHRvb2xzL3NwZWNtYWtlci9taXNjLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZGxscy93aW5tbS9tbWlvLmM6CglDaGFuZ2VkIGlzb2xhdGVkIGZvciBsb29wcyB0byB3aGlsZSBsb29wcyAoYmFzZWQgb24gYSBwYXRjaCBieSBBbmRyZWFzCglNb2hyKS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVGhlIGZvciBsb29wIGluIElUeXBlTGliMl9mbkZpbmROYW1lIHdhcyB3cm9uZyAoZXh0cmEgJzsnKS4KCgkqIGZpbGVzL2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoKSBmYWlscyBmb3IgcGlwZSBoYW5kbGVzIGFjY29yZGluZyB0bwoJTVNETiwgYW5kIGFsc28gZm9yIHNlcmlhbCBoYW5kbGVzIChGSUxFX1RZUEVfQ0hBUiBpbiBnZW5lcmFsID8pLgoKCSogZGxscy9nZGkvZ2RpX21haW4uYywgZ3JhcGhpY3MvZHJpdmVyLmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCURvbid0IGxvYWQgdGhlIFdJTkVQUyBkcml2ZXIgdW50aWwgaXQncyBuZWVkZWQuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBFRElUX1VubG9ja0J1ZmZlciBjb3BlIHdpdGggZGVzdHJveWVkIHdpbmRvd3MuCgoyMDAxLTAzLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgbWVtb3J5L2hlYXAuYzoKCVdlIG5lZWQgdG8gY3JlYXRlIHRoZSBzeXN0ZW0gaGVhcCBhdCBzdGFydHVwIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHVzZQoJaXQsIHNpbmNlIHNvbWUgV2luOTUgbmF0aXZlIGRsbHMgZGVwZW5kIG9uIHRoYXQuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJIC0gYWRkIHRyYWNpbmcgdG8gT3BlbkdMIHRodW5rcwoJIC0gdXBkYXRlIHRvIGxhdGVzdCBnbC5zcGVjIGZpbGUKCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIERDWF9DTElQU0lCTElOR1MgdG8gZmxhZ3MgZm9yIERDRV9HZXRWaXNSZ24gb25seSBpZiB3aW5kb3cgaGFzCglXU19DTElQU0lCTElOR1MgYml0IHNldC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbiBMSVNUVklFV19BZGRHcm91cFNlbGVjdGlvbiBhbmQgTElTVFZJRVdfU2V0R3JvdXBTZWxlY3Rpb24sIGlmIG5vCglzZWxlY3Rpb24gbWFyayBoYXMgYmVlbiBzZXQsIGp1c3Qgc2VsZWN0IHRoZSBjdXJyZW50IGl0ZW0uCglJbiBMSVNUVklFV19TZXRHcm91cFNlbGVjdGlvbiB3ZSBtdXN0IGFsc28gc2V0IHRoZSBzZWxlY3Rpb24gbWFyayBpbgoJdGhhdCBjYXNlIChhbmQgb25seSBpbiB0aGF0IGNhc2UpLgoJUmVtb3ZlZCBhIG5hdWdodHkgJzsnIChzcG90dGVkIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiBhIHRhcmdldCBoYXMgQysrIHNvdXJjZXMsIHRoZW4gdXNlIGcrKyB0byBsaW5rIGl0IChmaXhlcyAjMTYyKS4KCVJlbW92ZWQgU09OQU1FLCBpdCdzIG5vdCByZWxldmFudCBmb3IgZGxscyBhbmQgd2FzIHVudXNlZCBhbnl3YXkuCgoyMDAxLTAzLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOiBGaXhlZCBmaWxlIGRlc2NyaXB0b3IgbGVhay4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGZpbGVzL2RpcmVjdG9yeS5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU29tZSBtb3JlIG1lc3NhZ2UgY2xlYW51cHMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBDaHJpcyBKYWNvYnNvbgoJU21hbGwgYnVnIGZpeC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglJbml0aWFsaXplIHRoZSByZXR1cm4gZXJyb3IgY29kZSB0byAwIGZvciBjb21tb24gZGlhbG9nIGZpbGUKCWZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgZmlsZXMgZm91bmQgaW4gYW4gJ2luY2x1ZGUnIGRpcmVjdG9yeSwgdG8gdGhlICdtaXNjIHNvdXJjZXMnIGxpc3QuCgoyMDAxLTAzLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJQ3JlYXRlIHRoZSBzZXJ2ZXIgcGlwZXMgb24gdGhlIGNsaWVudCBzaWRlIGFuZCB0cmFuc2ZlciB0aGVtIHRvIHRoZQoJc2VydmVyIG9uIHRocmVhZCBjcmVhdGlvbi4KCVVzZSBhIHNpbmdsZSBwZXItcHJvY2VzcyBzb2NrZXQgaW5zdGVhZCBvZiBvbmUgcGVyIHRocmVhZCBmb3IKCXRyYW5zZmVycmluZyBmaWxlIGhhbmRsZXMgYmV0d2VlbiBjbGllbnQgYW5kIHNlcnZlci4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZWVuYWJsZSB0aGUgd3JhcHBlciBzdXBwb3J0LgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCVNxdWFzaCBhbm90aGVyIEFGTSBjaGFyYWN0ZXIgbWV0cmljcyBwYXJzaW5nIGJ1Zy4KCjIwMDEtMDItMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJTmV3IG1lY2hhbmlzbSB0byB0cmFuc2ZlciBmaWxlIGRlc2NyaXB0b3JzIGZyb20gY2xpZW50IHRvIHNlcnZlci4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglKb2hhbm5lcy5TY2hpbmRlbGluQGdteC5kZQoJU29tZSBtaW5vciBjaGFuZ2VzIHRvIHRoZSBHZXJtYW4ga2V5Ym9hcmQgbGF5b3V0LgoKCSogd2luZG93cy93aW5wb3MuYzoKCURvbWluaWsgU3RyYXNzZXIgPGRvbWluaWsuc3RyYXNzZXJAbWNocC5zaWVtZW5zLmRlPgoJQXZvaWQgY3Jhc2ggYXQgZW5kIG9mIGxpc3QuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCUlhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJRml4IGJ1ZyBpbiBBRk0gY2hhcmFjdGVyIHdpZHRoIHBhcnNpbmcuCgoJKiB3aW4zMi9kZXZpY2UuYywgd2luZG93cy93aW5wb3MuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9kZHJhdy5oLCBvYmplY3RzL21ldGFmaWxlLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU21hbGwgJ3R5cG9zIGluIGNvbW1lbnRzJyBmaXhlcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCVVzZSB0aGUgc3RhbmRhcmQgQ3JlYXRlVGhyZWFkIHJvdXRpbmUgdG8gY3JlYXRlIDE2LWJpdCB0YXNrcyBpbnN0ZWFkCglvZiBkdXBsaWNhdGluZyB0aGUgY29kZS4KCgkqIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJUmVtb3ZlZCBkZXBlbmRlbmN5IG9uIGNvbWN0bDMyLgoKCSogaW5jbHVkZS93aW5udC5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdJTkVfVU5JQ09ERV9URVhUIHdhcyBpbmNvcnJlY3QuCglEcm9wcGVkIHN1cHBvcnQgZm9yIFdJTkVfVU5JQ09ERV9URVhUKCdjJykgaW4gQy4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUltcGxlbWVudGVkIFdzQ29udHJvbCBjb21tYW5kIHdpdGggaWQgMHgxMDEuCgoJKiBkbGxzL2tlcm5lbC9ubHMvYWZrLm5scywgZGxscy9rZXJuZWwvbmxzL2JlbC5ubHMsIGRsbHMva2VybmVsL25scy9iZ3IubmxzLCBkbGxzL2tlcm5lbC9ubHMvY2F0Lm5scywgZGxscy9rZXJuZWwvbmxzL2N6ZS5ubHMsIGRsbHMva2VybmVsL25scy9kZWEubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVjLm5scywgZGxscy9rZXJuZWwvbmxzL2RlbC5ubHMsIGRsbHMva2VybmVsL25scy9kZXMubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXNtLm5scywgZGxscy9rZXJuZWwvbmxzL2Vzbi5ubHMsIGRsbHMva2VybmVsL25scy9lc3AubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXVxLm5scywgZGxscy9rZXJuZWwvbmxzL2Zpbi5ubHMsIGRsbHMva2VybmVsL25scy9mcmEubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJiLm5scywgZGxscy9rZXJuZWwvbmxzL2ZyYy5ubHMsIGRsbHMva2VybmVsL25scy9mcmwubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJzLm5scywgZGxscy9rZXJuZWwvbmxzL2dyYy5ubHMsIGRsbHMva2VybmVsL25scy9odW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvaW5kLm5scywgZGxscy9rZXJuZWwvbmxzL2lzbC5ubHMsIGRsbHMva2VybmVsL25scy9pdGEubmxzLCBkbGxzL2tlcm5lbC9ubHMvaXRzLm5scywgZGxscy9rZXJuZWwvbmxzL2pwbi5ubHMsIGRsbHMva2VybmVsL25scy9ubGIubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxkLm5scywgZGxscy9rZXJuZWwvbmxzL25vbi5ubHMsIGRsbHMva2VybmVsL25scy9ub3IubmxzLCBkbGxzL2tlcm5lbC9ubHMvcGxrLm5scywgZGxscy9rZXJuZWwvbmxzL3B0Yi5ubHMsIGRsbHMva2VybmVsL25scy9wdGcubmxzLCBkbGxzL2tlcm5lbC9ubHMvcm9tLm5scywgZGxscy9rZXJuZWwvbmxzL3NreS5ubHMsIGRsbHMva2VybmVsL25scy9zbHYubmxzLCBkbGxzL2tlcm5lbC9ubHMvc3ZlLm5scywgZGxscy9rZXJuZWwvbmxzL3Ryay5ubHM6CglQcnplbXlzbGF3IEJydXNraSA8ZjY2MzM2cGJAYXNrLmV0aS5wZy5nZGEucGw+CglBZGRlZCBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSBkZWZpbml0aW9uIGluIG1vc3QgbmxzIGZpbGVzLgoKMjAwMS0wMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcXVldWUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvcmVnaXN0cnkuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmM6CglOZXcgc2V0IG9mIG1hY3JvcyBmb3Igc2VydmVyIGNhbGxzOyBtYWtlcyByZXF1ZXN0cyB3aXRob3V0IHZhcmlhYmxlCglwYXJ0IHNvbWV3aGF0IGZhc3Rlci4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglNb3ZlZCBQVEhSRUFEX2luaXRfZG9uZSBvdXQgb2YgdGhlICNpZmRlZi4KCjIwMDEtMDItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3MvdXNlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGZldyBtaXNzaW5nIHN0dWJzIHRvIEtFUk5FTDMyIGFuZCBVU0VSMzIuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUhhbmRsZSBmaWxlbmFtZXMgd2l0aCBzcGFjZXMuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCU1hcCAzMiBiaXRzIHJlc291cmNlIGZvciAxNiBiaXRzIHByaW50IGRpYWxvZy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgR2V0U3lzQ29sb3JCcnVzaChDT0xPUl9XSU5ET1cpIHdoZW4gdGhlcmUgaXMgbm8gYnJ1c2ggZm9yIGRyYXdpbmcKCWJhY2tncm91bmQgaW4gbGlzdGJveC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCURhdmlkIEdyYW50IDxkYXZlQHJlYWNoLm5ldD4KCUFkZGVkIChwYXJ0aWFsKSBzdXBwb3J0IGZvciBGT19DT1BZIGFuZCBGT19ERUxFVEUuCgoyMDAxLTAyLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Jlc291cmNlcy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy91c2VyL3Jlc291cmNlcy92ZXJzaW9uLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3ZlcnNpb24xNi5yYywgZGxscy92ZXJzaW9uL2luZm8uYywgaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYywgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbC5yYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3ZlcnNpb24ucmMsIGRsbHMva2VybmVsL3ZlcnNpb24xNi5yYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL3ZlcnNpb24ucmMsIGRsbHMvZ2RpL3ZlcnNpb24xNi5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgdmVyc2lvbiBpbmZvcm1hdGlvbiAoMTYgYW5kIDMyIGJpdCkgdG8gY29yZSBidWlsdC1pbiBkbGxzOgoJa3JubDM4Ni5leGUva2VybmVsMzIuZGxsLCB1c2VyLmV4ZS91c2VyMzIuZGxsLCBnZGkuZXhlL2dkaTMyLmRsbC4KCVByb3ZpZGUgYSB3YXkgZm9yIHJlYWRpbmcgdmVyc2lvbiBpbmZvcm1hdGlvbiB1c2luZyBzdGFuZGFyZCBBUEk6CglHZXRGaWxlVmVyc2lvbkluZm9TaXplIC0+IEdldEZpbGVWZXJzaW9uSW5mbyAtPiBWZXJRdWVyeVZhbHVlLgoKCSogaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9wdGhyZWFkLmM6CglPbmx5IGNyZWF0ZSB0aGUgc3lzdGVtIGhlYXAgd2hlbiB3ZSBhY3R1YWxseSBuZWVkIGl0LgoKCSogZmlsZXMvZG9zX2ZzLmMsIG1lbW9yeS9nbG9iYWwuYzoKCUFsbG9jYXRpb25zIGRvIG5vdCBuZWVkIHRvIGJlIG9uIHRoZSBzeXN0ZW0gaGVhcC4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSG9yaXovVmVydCBkZXRlcm1pbmF0aW9uIG11c3QgYmUgZHluYW1pYywgYXMgdGhlIHN0eWxlIG1heSBub3QgYmUgc2V0Cgl1cG9uIGNyZWF0aW9uOyBpbXByb3ZlZCBwb3NpdGlvbmluZyBhbmQgc2Nyb2xsaW5nLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBhbGlnbm1lbnQgcHJvYmxlbXMgd2l0aCBOTVBHU0NST0xMIHN0cnVjdC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBmaXhtZSBmb3IgU1BJX0dFVFdIRUVMU0NST0xMTElORVMgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAzLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJlcGFyZSBiYWNrZ3JvdW5kIHdoaWxlIGRyYXdpbmcgcmFkaW8gYnV0dG9ucyBhbmQgY2hlY2tib3hlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgcGF5IGF0dGVudGlvbiB0byBpZiBvdXIgY2FsbCB0bwoJICBTZXRDbGlwYm9hcmREYXRhIGZyb20gdGhlIFgxMURSViB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiB3b3Jrcy4gSWYgbm90CgkgIHdlIG5lZWQgdG8gZGVsZXRlIHRoZSBnbG9iYWwgYmxvY2sgd2UgYWxsb2NhdGVkLiBUaGlzIGlzIGEgc2V2ZXIgbWVtb3J5CgkgIGxlYWsgd2l0aCBsYXJnZSBjbGlwYm9hcmQgaXRlbXMuCgktIElmIGFuIFggc2VsZWN0aW9uIGl0IHRvbyBsYXJnZSB0aGVuIFggbWF5IGdpdmUgaXQgdG8gdXMgaW4gY2h1bmtzLAoJICB3ZSB3ZXJlIG5vdCBoYW5kbGluZyB0aGlzIHdlbGwuCgoJKiBkbGxzL2tlcm5lbC9ubHMvdWtyLm5sczoKCVZhbGVyeSBLYXJ0ZWwgPGt2bkBpZ2sua2lldi51YT4KCVVwZGF0ZWQgYWxsIGZpZWxkcyB3aXRoIFVrcmFpbmlhbiB2YWx1ZXMuCgoJKiBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3R0eWRydi93bmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglEbyBub3QgYWxsb2NhdGUgYW55IFVTRVIgZGF0YSBvbiB0aGUgc3lzdGVtIGhlYXAuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NwbC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUEgZmlyc3Qgc3RhYiBhdCBpbXBsZW1lbnRpbmcgdGhlIFJ1bkRsbCBmZWF0dXJlcy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUJ1aWxkQ29tbURDQjE2IGhhZCBhIHJhdGhlciBicm9rZW4gYmF1ZCByYXRlIGhhbmRsaW5nLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHRoZSB3aW5lbGF1bmNoZXIgc3VwcG9ydCB3aW5lbGliIGFwcCBpbnZvY2F0aW9ucy4gRml4ZWQgYSBmZXcKCWZpbGUgcGF0aCBpc3N1ZXMuCgoyMDAxLTAyLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzZXBhcmF0ZSBzZXJ2ZXIgcGlwZSB0byB3YWl0IG9uIGJsb2NraW5nIHNlcnZlciBjYWxscy4KCVNlbmQgdGhlIGNvbXBsZXRlIHJlcXVlc3QvcmVwbHkgdGhyb3VnaCB0aGUgcmVxdWVzdCBmaWZvIGluc3RlYWQgb2YKCWp1c3QgYSBkdW1teSBieXRlLgoJQ29udmVydCBlcnJvciBzdGF0dXMgdG8gdGV4dCBpbiBzZXJ2ZXIgcmVwbHkgdHJhY2luZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbmZpcm0gZmlsZSBkZWxldGVzLiAgTWFrZSBkZWxldGUgY29uZmlybWF0aW9uIG1lc3NhZ2VzIG1vcmUKCWNvbnNpc3RlbnQuIEltcHJvdmUgdHJhY2UgbWVzc2FnZXMgb24gZGVsZXRlIGZhaWx1cmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJQWRkIHNoZWxsIHN1cHBvcnQgZm9yIGRlbGV0aW5nIGZpbGVzIHVzaW5nIHRoZSBEZWxldGUga2V5LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUlhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJSW1wbGVtZW50IEVudW1QcmludGVyRGF0YUV4e0F8V30uCgoJKiBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNuZXQzMi9tc25ldDMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3Nhcnkgb3JkaW5hbHMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJX19nZXRtYWluYXJncyBsYXN0IGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBuZXdfbW9kZS4KCjIwMDEtMDItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L3ZpcnR1YWwuYywgc2NoZWR1bGVyL2NsaWVudC5jOgoJU21hbGwgc2VydmVyIHByb3RvY29sIGNsZWFudXBzLgoKCSogZGxscy9vbGVjbGkvb2xlY2xpLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTdHViIGZvciBPbGVTYXZlZENsaWVudERvYy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbnNlcnQgdGhlIGl0ZW0gYmVmb3JlIGNhbGxpbmcgYSBTZXRGaXJzdFZpc2libGUgd2hpY2ggY2FuIGdlbmVyYXRlIGEKCVdNX1BBSU5UIG1lc3NhZ2UuCgoJKiBsaWJyYXJ5L3BvcnQuYzoKCUNsZWFyICVlYnAgYmVmb3JlIGVudGVyaW5nIHRoZSBuZXcgdGhyZWFkLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR290IHJpZCBvZiB0aGUgV1NJTkZPIHN0cnVjdHVyZS4gRml4ZWQgYSBjb3VwbGUgb2YgYnVncy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJRml4ZWQgX19HZXRNYWluQXJncy4KCgkqIEFOTk9VTkNFLCBSRUFETUUsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUFkZCBpbmZvcm1hdGlvbiBhYm91dCBwcmVidWlsdCBkb2N1bWVudGF0aW9uIHBhY2thZ2VzIGluCglvdGhlci10aGFuLXNnbWwgZm9ybS4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCB0byBnaXZlIHJvb20gZm9yIHRoZSBudWxsIHRlcm1pbmF0aW9uIHdoZW4gdHJhbnNsYXRpbmcgdGhlCgljbGlwYm9hcmQgdGV4dC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IENCX1NFVENVUlNFTCwgQ0JFTV9ERUxFVEVJVEVNLCBDQkVNX0dFVElURU0sCgkgIENCRU1fe0dFVHxTRVR9VU5JQ09ERUZPUk1BVCwgQ0JfRklORFNUUklOR0VYQUNULCBXTV9DT01NQU5ELAoJICBXTV9ERUxFVEVJVEVNLgoJLSBJbXBsZW1lbnQgZXh0ZW5kZWQgc3R5bGUgQ0JFU19FWF9OT0VESVRJTUFHRSwgYW5kIHdhcm4gb3RoZXJzIGFyZQoJICBub3QgeWV0IGltcGxlbWVudGVkLgoJLSBSZXN0cnVjdHVyZSBEcmF3SXRlbSBjb2RlIHRvIGRvIHRoaW5ncyBtb3JlIHJhdGlvbmFsbHkuCgoJKiBjb250cm9scy9jb21iby5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gUmVzdHJ1Y3R1cmUgUGFpbnRUZXh0IGNvZGUgdG8gcmVtb3ZlIEZpbGxSZWN0IGZyb20gb3duZXItZHJhd24gcGF0aC4KCS0gQ2hhbmdlIFNldEZvY3VzIHRvIGluZGljYXRlIGZvY3VzIHNldCBvbmx5IGFmdGVyIE5vdGlmeSBpcyBzZW50IHRvIG93bmVyLgoJLSBHZXQgbW9yZSBpbmZvIGluIGEgdHJhY2UuCgoJKiBmaWxlcy9kb3NfZnMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgZXJyb3IgbWVzc2FnZSBpbiBjYXNlIERPU0ZTX09wZW5EZXZpY2UoKSBmYWlscyBvbiBhIENPTXgKCWRldmljZS4KCgkqIG1pc2NlbXUvbWFpbi5jLCBvYmplY3RzL3BhbGV0dGUuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBsb2FkZXIvdGFzay5jOgoJUmVtb3ZlZCBhIGZldyBDYWxsb3V0IGZ1bmN0aW9ucyBieSBkb2luZyBhIEdldFByb2NBZGRyZXNzIGF0IHRoZSB0aW1lCgl3ZSBhY3R1YWxseSBuZWVkIHRoZSBmdW5jdGlvbi4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXhlZCBNRU1fU1lTVEVNIGhhbmRsaW5nIHRvIGF2b2lkIHVubWFwcGluZyBhcmVhcyB0aGF0IHdlIGRpZG4ndCBtbWFwLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggcHJvdG90eXBlcyBvZiBNU1ZDUlRfX19nZXRtYWluYXJncyBhbmQgTVNWQ1JUX19fd2dldG1haW5hcmdzLgoJUHJvdGVjdCBNU1ZDUlRfX2FjbWRsbiBnbG9iYWwgdmFyaWFibGUgZnJvbSBjb3JydXB0aW9uLgoKCSogaW5jbHVkZS93aW5udC5oOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgdHlwZWRlZiBvZiBDUklUSUNBTF9TRUNUSU9OIG91dCBvZiAjcHJhZ21hIHBhY2soMSkgYmxvY2suCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYmVoYXZpb3VyIG9mIGRyb3Bkb3duIGJ1dHRvbnMuIFdoZW4gYSBkcm9wZG93biBidXR0b24gaXMKCWNsaWNrZWQsIGl0IGRvZXMgbm90IGNoYW5nZSBpbnRvIHByZXNzZWQgc3RhdGUuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIEVNRiByZWNvcmQgRU1SX0VYVFNFTEVDVENMSVBSR04uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJhbnNsYXRlZCBuZXcgY29tbW9uIGRpYWxvZyByZXNvdXJjZXMgaW50byBHZXJtYW4uCglSZXNpemVkIGZpbGUgZGlhbG9nIGEgYml0IHRvIG1ha2UgdG9vbGJhciBjb21wbGV0ZWx5IHZpc2libGUgYWdhaW4uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgR2VybWFuIHRyYW5zbGF0aW9uLCBjaGFuZ2VkIGRpYWxvZyBmb250IHRvIEhlbHZldGljYS4KCjIwMDEtMDItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMTAyMTYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQXNzZXJ0IG9uIG91dHB1dCBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglVcGRhdGUgc2VsZWN0aW9uIGFmdGVyIHNvcnRpbmcgKGluIExJU1RWSUVXX1NvcnRJdGVtcykgYnkgbWFraW5nIHN1cmUKCXNlbGVjdGlvbiBsaXN0IG1hdGNoZXMgc3RhdGVzIG9mIGluZGl2aWR1YWwgaXRlbXMuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBESUIvcGl4bWFwIHN5bmNocm9uaXphdGlvbiBmb3Ige0dldCxTZXR9UGl4ZWwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUQl9TRVRCVVRUT05TSVpFIG1lc3NhZ2VzIG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50IGV2ZW4gYWZ0ZXIKCWJ1dHRvbnMgaGF2ZSBiZWVuIGFkZGVkLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCVBhc3MgdGhlIHN0ZGluL3N0ZG91dCBoYW5kbGVzIG9uIHN0YXJ0dXAgdG8gdXNlIGFzIGNvbnNvbGUgKGJhc2VkIG9uIGEKCXBhdGNoIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCB0aGUgY29kZXBhZ2UgZm9yIHRoZSBUdXJraXNoIGtleWJvYXJkLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU2V0dGluZyB0aGUgSG90SXRlbSB0byAtMSBjYW4gYmUgZGlzYXN0cm91cyBhdCB0aW1lcyBpZiBpdCBlcXVhbHMKCW9sZGhpdC4KCgkqIHRvb2xzL3NwZWNtYWtlci9kbGwuYywgdG9vbHMvc3BlY21ha2VyL21haW4uYywgdG9vbHMvc3BlY21ha2VyL21zbWFuZ2xlLmMsIHRvb2xzL3NwZWNtYWtlci9vdXRwdXQuYywgdG9vbHMvc3BlY21ha2VyL3NlYXJjaC5jLCB0b29scy9zcGVjbWFrZXIvc3BlY21ha2VyLmgsIHRvb2xzL3NwZWNtYWtlci9zeW1ib2wuYywgdG9vbHMvc3BlY21ha2VyL1JFQURNRToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIENyZWF0ZSBlbnRyaWVzIGZvciBvcmRpbmFsIG9ubHkgZXhwb3J0cywgdXNlIG9yZGluYWxzIGlmIG5vbi1zdGFuZGFyZC4KCS0gSW1wcm92ZSBDKysgZGVtYW5nbGVyLCByZWNvZ25pc2UgZGF0YSB0eXBlcywgZml4IHNvbWUgYnVncy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJR2l2ZXMgYmFjayB0aGUgRVJST1JfRklMRV9OT1RfRk9VTkQgdG8gR2V0RmlsZUF0dHJpYnV0ZXMuCgoyMDAxLTAyLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgYmFja3NsYXNoIGVzY2FwaW5nIG9mIHNwZWNpYWwgY2hhcmFjdGVycy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglJZiBWZXJRdWVyeVZhbHVlQSBpcyBjYWxsZWQgd2l0aCBhIFBFIHJlc291cmNlLCB0cmFuc2xhdGUgdGhlIGNhbGwgdG8KCVZlclF1ZXJ5VmFsdWVXLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29udGludWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBTZXQgSG90IEl0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTZW5kIExWTl9ERUxFVEVJVEVNIG5vdGlmaWNhdGlvbiBmaXJzdCwgdG8gYXZvaWQgY3Jhc2hlcyBpZiB0aGUgYXBwCglyZXF1ZXN0cyBMVklGX1BBUkFNIHdpdGggTElTVFZJRVdfR2V0SXRlbSgpIGR1cmluZyBpdHMgTFZOX0RFTEVURUlURU0KCW1lc3NhZ2UgaGFuZGxlci4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJQWRkIGluY2x1ZGVzIGZvciA8dGltZS5oPi4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJTW9ydGVuIFdlbGluZGVyIDx0ZXJyYS13aW5lQGRpa3UuZGs+CgkoUFNEUlZfQUZNR2V0Q2hhck1ldHJpY3MpOiBVc2UgdW5zaWduZWQgY2hhcnMgKHNpbmNlIGlzc3BhY2UgaXMgdXNlZCkuCgkoUFNEUlZfQUZNUGFyc2UpOiBEb24ndCBjcmFzaCBvbiBtaXNzaW5nIGZvbnQgbmFtZS4gIFVzZSB1bnNpZ25lZAoJY2hhcnMuICBGaXggcGVjdWxpYXIgaW5jb25zaXN0ZW50IGluZGVudGF0aW9uLiAgRG9uJ3QgbGVhayBhIEZJTEUuCglDYXRjaCBwcm9ibGVtYXRpYyBmaWxlcyB3aXRoIG5vIGxpbmUgZmVlZCBpbiB0aGVtLiAgRG9uJ3QgbWl4CgljaGFyYWN0ZXJzIGFuZCBpbnRlZ2Vycy4gIERvbid0IG92ZXJydW4gdGhlIGJ1ZmZlci4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB0dXJraXNoIGtleWJvYXJkIGxheW91dC4KCjIwMDEtMDItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJUmVtb3ZlZCBvcmRpbmFsIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uJ3QgbmVlZCBhIHNwZWNpZmljIHZhbHVlLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgd2luMzIvZmlsZS5jLCB3aW4zMi9pbml0LmMsIHdpbjMyL25ld2Zucy5jLCB3aW4zMi90aW1lLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIG1pc2MvcmVnaXN0cnkuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbGluZWRkYS5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgb2xlL29sZTJubHMuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbnYuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9mb250LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBGT05UT0JKIHRvIHVzZSBMT0dGT05UVyByYXRoZXIgdGhhbiBMT0dGT05UMTYuCglVcGRhdGVkIHBhcmFtZXRlcnMgb2YgREVWSUNFRk9OVEVOVU1QUk9DLgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUZpeGVkIFdNX0dFVFRFWFRMRU5HVEggaGFuZGxpbmcuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvaW5mby5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmlfcmVzLnJjLCBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLCBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLCBkbGxzL3dpbm1tL21jaWF2aS93bmQuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tY2lhdmkuaCwgaW5jbHVkZS92ZncuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbiBvZiBtY2lhdmkuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglBbHdheXMgcmV0dXJuIHN1Y2Nlc3MgaW5zdGVhZCBvZiBvdmVyZmxvdyBpZiBjYWxsZXIgZGlkbid0IHNwZWNpZnkgYQoJYnVmZmVyLgoKCSogdG9vbHMvd2luZWNvbmY6CglNb3J0ZW4gV2VsaW5kZXIgPHRlcnJhLXdpbmVAZGlrdS5kaz4KCU91dHB1dCB0aGUgcmlnaHQgbnVtYmVyIG9mIGJhY2tzbGFzaGVzIGluIHZhbHVlcy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQmUgc21hcnRlciBhYm91dCB0aGUgZWxsaXBzaXMgaW4gU1BZX0dldFduZE5hbWUuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIG1lbW9yeS9oZWFwLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWlzYyB0eXBvcyBpbiBjb21tZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglMaXN0Vmlld19HZXRJdGVtUmVjdCBhbHJlYWR5IHNldHMgcmMubGVmdC4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIG9sZS9vbGUybmxzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJZGVidWdzdHJfeHh4IGFscmVhZHkgZG9lcyB0aGUgcXVvdGluZy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSB0aGUgY2FsbGJhY2sgZGVjbGFyYXRpb25zIHRvIGEgc2FmZXIgZm9ybWF0LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVR1bmUgdGhlIGRvY28gdG8gdGhlIGNvZGUgZm9yIHJlbGF5L3Nub29wIHNwZWNpZmljLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDb3NtZXRpY3MuCgoJKiB3aW4zMi9kZXZpY2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJR2l2ZSBib3RoIC0td2ludmVyIG50NDAgYW5kIHdpbjMxIGZvciBWeEQgd2FybmluZywgYXMgc29tZSBwcm9ncmFtcwoJd29yayB3aXRoIHdpbjMxLgoKCSogZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvc3RydWN0X2NvbnZlcnQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBjb3JyZWN0IEREUkFXX0NvbnZlcnRfRERERVZJQ0VJREVOVElGSUVSXzJfVG9fMSBjb25mdXNpb24KCS0gZml4IEdldEF2YWlsYWJsZVZpZE1lbSBkZHJhdyBpZmFjZSBjb3B5JnBhc3RlIGJ1ZyAoZG9oICEpCgoJKiBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5oLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbjoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJR3V0cyBvZiBhIHNpbXBsZSBYVmlkTW9kZS1zdXBwb3J0aW5nIERpcmVjdERyYXcgSEFMIGluIHgxMWRydi4KCgkqIGZpbGVzL2ZpbGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTZXRMYXN0RXJyb3IoKSBmb3IgR2V0RmlsZUF0dHJpYnV0ZXNBLgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJRXhjZXB0aW9uIGZvciBhbGxvd2luZyB0aGUgcGFyZW50IHRvIHNldCB0aGUgY3Vyc29yIGZvciBhIGNoaWxkIHduZCBpcwoJd2hlbiB0aGUgY3Vyc29yIGlzIG9uIHRoZSBib3JkZXIgb2YgYSByZXNpemFibGUgd25kLgoKCSogY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgbWVudSBpdGVtIHRvIHNlcGVyYXRvciBvbmx5IHdoZW4gc3RyaW5nIGlzIE5VTEwuCgoyMDAxLTAyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kY2lkZGkuaCwgaW5jbHVkZS9kZHJhd2kuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU29tZSBpbXBvcnRhbnQgc3R1ZmYgZnJvbSB0aGUgRGlyZWN0RHJhdyBEREsgaGVhZGVycy4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvbG9hZGVyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglNb3JlIHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMgd2hlbiBhcHBsaWNhdGlvbiBsb2FkIGZhaWxzLgoKCSogaW5jbHVkZS93aW5udC5oLCBtaXNjL2NwdS5jLCB3aW4zMi9uZXdmbnMuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIFBlbnRpdW0ncyByZHRzYyBpbnN0cnVjdGlvbiAoaWYgYXZhaWxhYmxlKSB0byBpbXBsZW1lbnQKCVF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbm5scy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9kY2ltYW4zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyBmaXhlcwoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGRsbHMvd2lubmxzL3dpbm5scy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCVBldGVyIEguIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCS0gb25seSBwYXJzZSBBRk0tZmlsZXMsIHdoaWNoIHN0YXJ0IHdpdGggIkJlZ2luRm9udE1ldHJpY3MiCgktIHVzZSBmZ2V0YyBpbnN0ZWFkIG9mIGZnZXRzIHRvIGNvcGUgd2l0aCBBRk0tRmlsZXMgd2l0aAoJICBNYWNpbnRvc2gtU3R5bGUgbGluZS1icmVha3MgKCdccicpIGluIHRoZSBwYXJzZXIuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy9zaGx3YXBpL3VybC5jLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGk6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IGEgYnVuY2ggb2Ygc2hsd2FwaSBmdW5jdGlvbnMsIGFkZCBzb21lIG5ldyBzdHVicy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBSR0IgNTY1ID0+IFJHQiAwODg4IGNvbnZlcnNpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBrZXlib2FyZCBzaG9ydGN1dCBGMiB0byByZW5hbWUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIHRoZQoJc2hlbGx2aWV3IChhbmQgaW4gY29tbW9uIGRpYWxvZ3MpLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJTW9yZSBwb3J0YWJsZSAuYWxpZ24gZGlyZWN0aXZlLgoJSWdub3JlIC1kZWxheSBkaXJlY3RpdmUgb24gcHBjIG9ubHkuCglBZGRlZCBjb2RlIHRvIGNhbGwgdGhlIGRsbCBjb25zdHJ1Y3RvcnMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglEZWZpbmVkIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBtYWNyb3MgZm9yIHBwYy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QgY3Jhc2ggb24gY2xvc2UgZnJvbSB3aW5kb3cgbWFuYWdlci4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQb3N0TWVzc2FnZUEvVyBpZ25vcmVzIG1lc3NhZ2VzIGNvbnRhaW5pbmcgcG9pbnRlcnMgYW5kIHJldHVybnMKCUZBTFNFL0xhc3RFcnJvciBFUlJPUl9JTlZBTElEX1BBUkVNRVRFUi4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZUljb24gbXVzdCBwZXJmb3JtIGNvbG9yIGRlcHRoIGNvbnZlcnNpb24gaWYgdGhlIHByb3ZpZGVkIGJpdG1hcAoJaXMgbm90IG9mIHRoZSBzYW1lIGRlcHRoIGFzIHRoZSBzY3JlZW4uCglBZGRlZCBzb21lIGRvY3VtZW50YXRpb24uCgoyMDAxLTAyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJLSBtYWtlIHRoZSBMYW5kc2NhcGUvUG9ydHJhaXQgYnV0dG9ucyBkbyBzb21ldGhpbmcuCgktIGZpeCB0aGVzZSBwcm9ibGVtcyBpbiB0aGUgUGFwZXIgU2l6ZSBhbmQgU291cmNlIGNvbWJvIGJveGVzOgoJICAxKSBFdmVyeSB0aW1lIHRoZSBwcmludGVyIHNldHVwIGRpYWxvZyBpcyBvcGVuZWQsIHRoZSBzZXR0aW5ncwoJICBhcmUgc2V0IGJhY2sgdG8gZ2FyYmFnZSBzZXR0aW5ncy4KCSAgMikgSWYgdGhlIHBhcGVyIHNpemUgb3Igc291cmNlIGlzIGNoYW5nZWQsIGFuZCB0aGVuIHRoZSBwcmludGVyIGlzCgkgIGNoYW5nZWQsIHRoZSBuZXcgcHJpbnRlciBkb2VzIG5vdCBnZXQgdGhlIG5ldyBzaXplIGFuZCBzb3VyY2UKCSAgc2V0dGluZ3MgZXZlbiB0aG91Z2ggaXQgYXBwZWFycyB0byBmcm9tIHRoZSBkaWFsb2cuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIG9iamVjdHMvZGliLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJSW4gQ3JlYXRlRElCU2VjdGlvbiwgdGhlIG9mZnNldCBpbnRvIHRoZSBmaWxlIG1hcHBpbmcgZG9lcyBub3QgaGF2ZSB0bwoJYmUgYSBtdWx0aXBsZSBvZiB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZ3JhbnVsYXJpdHkuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtaXNzaW5nIGRlZmluaXRpb25zIHJlcXVpcmVkIGJ5IHRoZSBDb250cm9sIFNweSBleGFtcGxlcy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgcGxheWluZyBvZiBFTVJfQklUQkxULCBFTVJfU1RSRVRDSEJMVCwgRU1SX01BU0tCTFQsCglFTVJfUExHQkxULCBFTVJfU0VURElCSVRTVE9ERVZJQ0UsIEVNUl9QT0xZVEVYVE9VVEEsIEVNUl9QT0xZVEVYVE9VVFcsCglFTVJfRklMTFJHTiwgRU1SX0ZSQU1FUkdOLCBFTVJfSU5WRVJUUkdOLCBFTVJfUEFJTlRSR04gZW5oYW5jZWQKCW1ldGFmaWxlIHJlY29yZCB0eXBlcyBhY2NvcmRpbmcgdG8gc3BlY3MuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9oYXNoLmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgTEhhc2hWYWxPZk5hbWVTeXNBIGZvciA0IExDSURzLCBmaXggcHJvdG90eXBlLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIFRPT0xCQVJfSUQgYW5kIFdNX1NFVFRJTkdDSEFOR0UsIHRoZXkgYXJlIG5vdCB1c2VkLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWNsYXJlIFJJQ0hFRElUX0NMQVNTMjBXIHVzaW5nIGEgV0NIQVIgYXJyYXkuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGFuIGFwcGxpY2F0aW9uIGRpcmVjdGx5IGNhbGxzIFNldENsaXBib2FyZERhdGEgd2l0aCBDRl9URVhUIGFuZAoJdGhlbiBsYXRlciBjYWxsZWQgR2V0Q2xpcGJvYXJkRGF0YSB3aXRoIENGX1RFWFQgd2UgZ2F2ZSB0aGVtIGEgTlVMTAoJYmVjYXVzZSB3ZSB3aGVyZSBub3QgaGFuZGxpbmcgdGhpcyBjYXNlLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgYmVoYXZpb3VyIG9mIEVNX0dFVExJTkUgbWVzc2FnZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhhdCBNU0dfUGVla01lc3NhZ2UgdXNlcyBhbiBpbnRlcm5hbCB2YXJpYWJsZSB0byBhdm9pZAoJY29ycnVwdGlvbi4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy9yZWdhcGkvUkVBRE1FLCB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBUUkFDRSBvcGVuZWQgcmVnaXN0cnkgaGFuZGxlcwoJLSBhZGQgcHJvcGVyIHF1b3RlcyB0byB3aW5laW5zdGFsbAoJLSBzcGVsbGluZwoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gbW92ZSBUU1hHcmFiU2VydmVyIGFmdGVyIGEgcG9zc2libGUgcmV0dXJuIEZBTFNFOwoJLSBtb3ZlIG1pc3BsYWNlZCBjb21tZW50CgktIG9wdGltaXplIFRTWEdyYWJTZXJ2ZXIgdXNlCgoJKiB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVycyBmcm9tIE1ESUNyZWF0ZUNoaWxkIGFuZCBNRElEZXN0cm95Q2hpbGQuCglNYWtlIHRoZSBwYXJhbWV0ZXIgbmFtZXMgc2xpZ2h0bHkgbW9yZSBkZXNjcmlwdGl2ZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbiB1cGRvd24gY29udHJvbCB0byB0aGUgY29weSBjb3VudCBlbnRyeS4KCURpc2FibGUgdGhlIGNvbGxhdGUgYnV0dG9uIGlmIG5vLiBvZiBjb3BpZXMgaXMgMS4KCUFkZCBMYW5kc2NhcGUvUG9ydHJhaXQgaWNvbnMuCglHZXQgcmlkIG9mIHRoZSAiRHVtbXkgQ29tbWVudCIgbGluZS4KCUZpeCB0aGUgRW5nbGlzaCBvZiBzb21lIG9mIHRoZSBlcnJvciBtZXNzYWdlcy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bnVzZWQgb3V0WGZvcm0uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBbGxvdyBhbiBhcHBsaWNhdGlvbiB0byByZS1hc2sgZm9yIEVYQ0xVU0lWRSBEaXJlY3REcmF3IGFjY2Vzcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIFBST1BTSEVFVFBBR0VBLnBmbkNhbGxiYWNrIGZvciBOVUxMIHBvaW50ZXIgaWYgUFNQX1VTRUNBTExCQUNLCglpcyBnaXZlbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgV01fQ0hBUnMgYW5kIHBhc3MgdGhlbSB0byBUUkVFVklFV19Qcm9jZXNzTGV0dGVyS2V5cy4gU2VlIGFsc28KCUxJU1RWSUVXX1Byb2Nlc3NMZXR0ZXJLZXlzIGluIGxpc3R2aWV3LmMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IChyZXdyaXRlKSwgYW5kIGFkZCBkb2N1bWVudGF0aW9uIHRvIExJU1RWSUVXX1Byb2Nlc3NMZXR0ZXJLZXlzLgoJTG93ZXJlZCB0aGUga2V5IHJlcGV0aXRpb24gZGVsYXkgKEFyaWMpLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglEb24ndCByZXF1aXJlIHdyaXRlIGFjY2VzcyBvbiB0aGUgZmlsZSBoYW5kbGUgdG8gY3JlYXRlIGEKCWNvcHktb24td3JpdGUgbWFwcGluZy4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmMsIGxpYnRlc3QvaGVsbG81LmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCB3aW5kb3dzL2RlZnduZC5jLCBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9pbW0zMi9pbW1fcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy93aW5lcHMvZHJpdmVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoYW5nZSB0aGUgY2FsbGJhY2sgZGVjbGFyYXRpb25zIHRvIGEgc2FmZXIgZm9ybWF0LgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBmaWxlcy9maWxlLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvdGltZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGFyZ3VtZW50IGZpeGVzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBuYW1lIGZpeGVzIChhbHdheXMgdXNlIGV4dGVybmFsIG5hbWUpLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgbGlidGVzdC92YXJ0ZXN0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0eXBvcyBpbiBjb21tZW50cy4KCgkqIGRsbHMva2VybmVsL25scy9tc2wubmxzLCBtaXNjL29wdGlvbnMuYywgdG9vbHMvd21jL2xhbmcuYywgdG9vbHMvd21jL2xhbmd1YWdlLmMsIHRvb2xzL3dyYy91dGlscy5jLCBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIE1hbGF5YW4gbGFuZ3VhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglGaXggTGlzdFZpZXdfR2V0SXRlbVJlY3QoKSBtYWNyby4KCUZpeCB1c2Ugb2YgTGlzdFZpZXdfR2V0SXRlbVJlY3QoKSBtYWNybyBpbiBsaXN0dmlldyBjb250cm9sLgoJQWRkIHNvbWUgZG9jdW1lbnRhdGlvbiB0byBMSVNUVklFV19HZXRJdGVtUmVjdCgpLgoKCSogZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvbWF0aC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvbXN2aWRlby5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi91c2VyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRkZWQgc3VwcG9ydCBmb3IgQVBJOnMgaW1wbGVtZW50ZWQgd2l0aCBfX0FTTV9HTE9CQUxfRlVOQwoJLSBSZW9yZ2FuaXplZCBkb2N1bWVudGF0aW9uIGNoZWNraW5nLgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMKCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgZGlmZmVyZW50bHkgc2l6ZWQgc3RydWN0cyBieSB1c2luZyB0aGVpciBkd1NpemUgcGFyYW1ldGVycy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgaW5jbHVkZS9jYWxsYmFjay5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBmZXcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGFsbG93IGNvbWN0bDMyIGNvbnRyb2xzIHRvIGFjY2VzcyB0aGVpciBpbmZvUHRyIGJlZm9yZSBpdCBoYXMKCWJlZW4gIGFsbG9jYXRlZCBvciBhZnRlciBpdCBoYXMgYmVlbiBmcmVlZC4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNYWtlIE1NSU9fT3BlbiB3b3JrIHdpdGggTlVMTCBmaWxlbmFtZSBhZ2Fpbi4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci9jb250cm9scy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHVuaWNvZGUgTURJIGNsaWVudCB3aW5kb3cgcHJvYy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGNoYXIgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHNpZ25lZC4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBleHRlcm4gIkMiIGZvciBXaW5lbGliIEMrKyBhcHBzLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDYWxsIExvYWRJbWFnZSB0byBsb2FkIHRoZSBub24tc3RhbmRhcmQgc2l6ZWQgY29sbGF0ZSBpY29ucy4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hcCAnQ291cmllciBOZXcnIHRvICdDb3VyaWVyJy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBFTUYgcG9zaXRpb25pbmcgd2hlbiByY2xGcmFtZSBoYXMgYSBub24temVybyBvcmlnaW4uCgoJKiBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXR1cGFwaS5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luc29jazIuaCwgaW5jbHVkZS93aW5zdmMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2hhbmdlIHRoZSBjYWxsYmFjayBkZWNsYXJhdGlvbnMgdG8gYSBzYWZlciBmb3JtYXQuCgoJKiBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJYWNtRHJpdmVyRW51bVcgc2hvdWxkbid0IHJldHVybiBNTVNZU0VSUl9FUlJPUiBpZgoJYWNtRHJpdmVyRW51bUNhbGxiYWNrIHJldHVybnMgVFJVRS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBpbmNsdWRlL3dpbnNwb29sLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU2V0L0dldFByaW50ZXJEYXRhW0V4XS4KCVJlbW92ZSBvcmRpbmFscyBmcm9tIHdpbnNwb29sLmRydi5zcGVjIC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglUYWtlIGEgc3RhYiBhdCBpbXBsZW1lbnRpbmcgT2xlU2V0QXV0b0NvbnZlcnQuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYSBOVUxMIHB0ciBwcm9ibGVtLgoJQWRkZWQgbG9hZGluZyBvZiAuYWZtIGZpbGVzIGZyb20gc2V2ZXJhbCBjb21tb24gbG9jYXRpb25zCgkoZ2hvc3RzY3JpcHQsIGEycHMsIGVuc2NyaXB0LCAodGVUZVgpLCBYMTEpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRvdWNoIFdBVkVIRFJzIGR3TG9vcHMgdmFyaWFibGUuCgoJKiBkbGxzL3dpbmVwcy9wcGQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVNwYWNlcyBkbyBub3QgaGF2ZSB0byBjb21lIGFmdGVyIHRoZSAnOicgdGhhdCBlbmRzIGEga2V5d29yZC4KCU1hcCBiaW4gbmFtZSBNYW51YWxFbnYgdG8gRE1CSU5fRU5WTUFOVUFMLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSBhbGwgZmlsZXMgYXJlIHRlcm1pbmF0ZWQgd2l0aCBhICdcbicuCglSZW1vdmUgb2Jzb2xldGUgY29tbWVudCBhYm91dCAnYWZ4cmVzLmgnIGNvbWluZyBiYWNrIGFmdGVyIGVkaXRpbmcgaW4gVkMuCglBZGRlZCBzdXBwb3J0IGZvciB0aGUgUlRGIHF1YWxpZmllciBpbiBSQyBmaWxlcy4KCgkqIG1zZG9zL2ludDIxLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRoZSBpbnQyMSBMRk4gcmVuYW1lIGZpbGUgZnVuY3Rpb24uCgoJKiBkbGxzL29sZTMyL29sZTIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBSZWxlYXNlU3RnTWVkaXVtIGZvciBNZXRhRmlsZVBpY3QgdHlwZXMuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggZm9yIHJvdGF0ZWQgdGV4dCB3aGVuIGxwRHggaXMgc3BlY2lmaWVkLgoJQmV0dGVyIGhhbmRsaW5nIG9mIGN1bXVsYXRpdmUgcm91bmRpbmcgZXJyb3JzLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgdGhlIENDU19OT1JFU0laRSBzdHlsZS4KCUNoYW5nZSB0aGUgc2Nyb2xsIGRlbHRhIG9ubHkgd2hlbiB0aGUgYXBwIHJlc3BvbmRzIHRvIHRoZSBQR05fTk9USUZZIG1zZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW4gQ29weURJQlNlY3Rpb24sIHVzZSBzb3VyY2UgRElCIGNvbG9ybWFwIGluc3RlYWQgaWYgbm8gcGFsZXR0ZSBoYXMKCWJlZW4gc2VsZWN0ZWQgaW50byB0aGUgc291cmNlIERDLCB0byB3b3JrIGFyb3VuZCBzb21lIFgxMS1pbXBvc2VkCglESUJzZWN0aW9uIGltcGxlbWVudGF0aW9uIGRlZmljaWVuY2llcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXggREdBMiBtb2RlIHNldHRpbmcgdG8gdXNlIHRoZSBjb3JyZWN0IGNvbG9yIGRlcHRoLgoKCSogdG9vbHMvd2luZWNvbmY6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZml4IHdpbmVjb25mIHRvIGdlbmVyYXRlIG5ldyBjb25maWcgZmlsZSBmb3JtYXQKCS0gZml4IHNvbWUgdmFyaWFibGUgY2hlY2tzCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIEVNUl9FWFRURVhUT1VUQSBhbmQgRU1SX0NSRUFURU1PTk9CUlVTSCBlbmhhbmNlZAoJbWV0YWZpbGUgcmVjb3Jkcy4gQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIEVNUl9TVFJFVENIRElCSVRTIGFuZAoJRU1SX0VYVFRFWFRPVVRXLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJTWFrZSBzbm9vcCBzcGVjaWZpYyBjYXNlIGluc2Vuc2l0aXZlLgoKCSogZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2RjaW1hbjMyL2RjaW1hbl9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIERDSUNsb3NlUHJvdmlkZXIgc3R1Yi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSVNoZWxsTGluazxBfFc+X2ZuR2V0V29ya2luZ0RpcmVjdG9yeSwKCUlTaGVsbExpbms8QXxXPl9mbkdldEFyZ3VtZW50cywgSVNoZWxsTGluazxBfFc+X2ZuR2V0SWNvbkxvY2F0aW9uLgoKCSogY29udHJvbHMvY29tYm8uYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglPd25lcmRyYXduIGNvbWJvIGJveGVzIHNob3VsZCB1c2UgT0RTX0NPTUJPQk9YRURJVCBpbiB0aGUgaXRlbVN0YXRlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRml4IHR5cG8gaW4gcHJldmlvdXMgY2hhbmdlLgoJLSBBZGQgc3RydWN0dXJlcyBmb3IgQ0JFTl9JTlNFUlRJVEVNIG5vdGlmeSBtZXNzYWdlLgoKCSogdG9vbHMvd3JjL3V0aWxzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHhtYWxsb2MveHJlYWxsb2MgbGltaXRzIGZvciBsYXJnZSBiaW5hcnkgcmVzb3VyY2VzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGV4dCBzaXplIGNhbGN1bGF0aW9uIGJ1ZyBpbiBHZXRUZXh0RXh0ZW50UG9pbnQoKSBmb3Igd2luZG93IGRjJ3MuCgoJKiBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbDoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyBzZWN0aW9uIGFib3V0IHdyaXRpbmcgZG9jcyBpbiBEb2NCb29rIGFuZCBkZWFsaW5nIHdpdGggdGhlIFdpbmUKCVNHTUwgYnVpbGQgc3lzdGVtOyBoYWxmIGRvbmUsIGJ1dCBhIGdvb2Qgc3RhcnQuCgoJKiBkbGxzL3dpbm5scy93aW5ubHMuYywgZGxscy93aW5ubHMvd2lubmxzLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgY291cGxlIG9mIHN0dWJzIGZvciBUZXJtaW5hbCBTZXJ2ZXIgQ2xpZW50IDE2IGJpdC4KCjIwMDEtMDEtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCU1hdHRoZXcgQ2xhcmtlIDxNYXR0aGV3X0NsYXJrZUBtaW5kbGluay5iYy5jYT4KCURvbid0IGFzc3VtZSAuc3BlYyBmaWxlcyBhcmUgZm91bmQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBhcyB0aGlzCglpcyBub3QgdGhlIGNhc2Ugd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3luY2hyb25pemUgYWNjZXNzIHRvIE1FU1NBR0VRVUVVRSBtZW1iZXJzLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIG1vcmUgMTYtPjMyIG1hcHBpbmdzIGZvciBJQ00qIG1lc3NhZ2VzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWR2aWRlby5kbGwgZm9yZ2V0cyB0byBzZXQgdGhlIEREU0RfQ0FQUyBmbGFnLCBqdXN0IGFzc3VtZSBpdCBzZXQuCglPdXRwdXQgbW9yZSBkZWJ1ZyBpbmZvIG9uIGZhaWx1cmUuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc2FibGVkIHNldHRpbmcgb2Ygd2luZG93IG9yaWdpbiBmcm9tIGFuIEVNRi4KCjIwMDEtMDEtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFZpZGVvQ2FwRHJpdmVyRGVzY0FuZFZlci4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3VzZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBleHBvcnRzLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEb24ndCBkaXNhYmxlIGtleWJvYXJkIGF1dG9yZXBlYXQsIHNpbmNlIGF1dG9yZXBlYXQgaXMgbm93IGRldGVjdGFibGUuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgktIFNpZWRsZXIzIGFwcGVhcnMgdG8gaGF2ZSByYXRoZXIgbGltaXRlZCBidWZmZXJzIGZvciBkZXZpY2UvZGVzY3JpcHRpb24KCSAgc3RyaW5ncyBhbmQgY3Jhc2hlcyB3aXRoIHRob3NlIGxvbmcgc3RyaW5ncy4gU2hvcnRlbmVkIHRob3NlIHN0cmluZ3MuCgktIEFsc28gZHJpdmVyIG5lZWRzIHRvIGJlICJkaXNwbGF5IiBmb3IgZGlzcGxheSBkZXZpY2VzIChzb21lIG90aGVyCgkgIHByb2dyYW1zIHJlbHkgb24gdGhhdCBpbmZvIEkgc2VlbSB0byByZW1lbWJlcikuCgktIEZpeGVkIERTdXJmYWNlOjpHZXRTdXJmYWNlRGVzYyB0byBub3QganVzdCBibGluZGx5IGNvcHkgYQoJICBERFNVUkZBQ0VERVNDMiBzdHJ1Y3Qgb3ZlciBhIHNtYWxsZXIgRERTVVJGQUNFREVTQyBvbmUuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIGNpcmN1bGFyIGJ1ZmZlcmluZyBmb3IgdGhlIGRpbnB1dCBtb3VzZSBkZXZpY2UuCglNYXBwZWQgdGhlIG1vdXNlIHdhcnAgb24gdGhlIGNlbnRlciBvZiB0aGUgY29vcGVyYXRpdmUgd2luZG93LCB3aGljaAoJc2hvdWxkIG1ha2Ugd2luZG93ZWQgZ2FtZXMgd29yayBiZXR0ZXIgaW4gbWFuYWdlZCBtb2RlLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVGFrZSBpbnRvIGFjY291bnQgdW5wcmludGFibGUgbWFyZ2lucyBpbiBwc2Rydi4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCXBzZHJ2J3MgRGV2aWNlQ2FwYWJpbGl0aWVzIHNob3VsZCBsaXN0IERNQklOX0FVVE8gYXMgYW4gYXZhaWxhYmxlCgliaW4uCgoJKiBkbGxzL3dpbmVwcy9wcGQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgIk9ubHlPbmUiIHBhcGVyIHNvdXJjZSwgdXNlZCBieSB0aGUgQWNyb2JhdCBEaXN0aWxsZXIgUFBELgoKCSogZGxscy9tc3ZjcnQvbWF0aC5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdHlwby4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgbWNpIHN0cmluZyBwYXJzaW5nIGlzc3Vlcy4KCUFkZGVkIG1vcmUgbWFwcGluZ3MgMzJBVG8xNi4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU2ltcGxpZmllZCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgYXN5bmNocm9ub3VzIE1DSSBtZXNzYWdlIGhhbmRsaW5nLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaXNlcS9tY2lzZXEuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmRydi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEZWxheSBpbXBvcnRpbmcgdXNlcjMyIChvbmx5IHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24pLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBvZGRpdGllcy4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgYml0IG1vcmUgb2YgZmxhZ3MgaGFuZGxpbmcgaW4gZHJhd2RpYiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUHV0IGEgJ1xuJyBhdCB0aGUgZW5kIG9mIHRoZSBGSVhNRSB0byBwcmV2ZW50IHZlcnkgb2RkIGFuZCBkaWZmaWN1bHQKCXRvIGRlYnVnIGNyYXNoZXMgZHVlIHRvIG92ZXJmbG93aW5nIG9mIHRoZSBkZWJ1ZyBpbmZvJ3Mgb3V0cHV0IGJ1ZmZlci4KCgkqIHRvb2xzL3NwZWNtYWtlci9SRUFETUUsIHRvb2xzL3NwZWNtYWtlci9tYWluLmMsIHRvb2xzL3NwZWNtYWtlci9tc21hbmdsZS5jLCB0b29scy9zcGVjbWFrZXIvb3V0cHV0LmMsIHRvb2xzL3NwZWNtYWtlci9zcGVjbWFrZXIuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXByb3ZlIG5hbWUgZGVtYW5nbGluZywgYWRkICdkZW1hbmdsZSBzeW1ib2wnIG9wdGlvbi4KCjIwMDEtMDEtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGhlIGtleXdvcmQgJ2Z1bmN0aW9uJywgYXMgcmVxdWVzdGVkIGJ5IFJvYmVydCBMdWJlcmRhLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdHlwbyB3aGljaCBjYXVzZWQgdGhlIFdyaXRldG9Ib21lUmVnaXN0cnlGaWxlcyBvcHRpb24gdG8gYmUKCWlnbm9yZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJld3JpdGUgV01fQ1JFQVRFIHRvIG1hdGNoIG5hdGl2ZSAoYWxsb2NhdGluZyBvd24gRWRpdCBjb250cm9sLCBldGMpLgoJLSBJbXBsZW1lbnQgYWRkaXRpb25hbCBXTkRQUk9DcyBmb3IgdGhlIENvbWJvIGFuZCBFZGl0IGNvbnRyb2xzIHRvCgkgIGhhbmRsZSBkaWZmZXJlbnQgZnVuY3Rpb25zLgoJLSBJbXBsZW1lbnQgQ0JFTV9TRVRDVVJTRUwgYW5kIENCRU1fSEFTRURJVENIQU5HRUQuCgoJKiBjb250cm9scy9jb21iby5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gV2hlbiBwYWludGluZyB0aGUgdGV4dCwgaWYgdGhlIGNvbnRyb2wgaXMgT1dORVJEUkFXTiB0aGUgaXNzdWUgdGhlCgkgIFdNX0RSQVdJVEVNIG1lc3NhZ2UuCgktIFNldCB0aGUgZm9jdXNlZCBzdGF0dXMgYXQgdGhlIGVuZCBvZiB0aGUgZW5kIG9mIHRoZSBTZXRmb2N1cyByb3V0aW5lLgoJLSBGbGlwIHRoZSBvcmRlciBvZiB1cGRhdGluZyB0aGUgbGlzdCBib3ggYW5kIGlzc3VpbmcgdGhlIFdNX05PVElGWQoJICBmb3IgQ0JOX0VESVRVUERBVEUgdG8gbWF0Y2ggbmF0aXZlLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCU1hZGUgZXhjZXB0aW9uX2V2ZW50X3JlcXVlc3Qgbm9uLWJsb2NraW5nLCBhbmQgYWRkZWQKCWdldF9leGNlcHRpb25fc3RhdHVzIHRvIHJldHJpZXZlIHRoZSBleGNlcHRpb24gcmVzdWx0IHJldHVybmVkIGJ5IHRoZQoJZGVidWdnZXIuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvY29kZXBhZ2UuYywgbXNkb3MvZG9zYXNwaS5jLCBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBvYmplY3RzL2RpYi5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy91c2VyL2JpZGkxNi5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2RkcmF3L2NvbnZlcnQuYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmMsIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWRkIDxzdHJpbmcuaD4gdG8gZmlsZXMgdGhhdCBuZWVkZWQgaXQuCgoJKiBmaWxlcy9maWxlLmMsIG1lbW9yeS9hdG9tLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgd2luZG93cy9kY2UuYywgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJU29tZSBtb3JlIGNsZWFudXBzLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDaGVjayB0aGF0IHRoZSBsaW51eCAyLjQgZXZlbnQgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSBiZWZvcmUgY3JlYXRpbmcKCWEgZGlucHV0IGRldmljZSBiYXNlZCBvbiBpdC4KCgkqIGRsbHMvd2luZXBzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSB0aGUgbHBEeCBhcnJheSBwcm9wZXJseS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglNYXJ0aW4gUGlsa2EgPG1waWxrYUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBTV19SRVNUT1JFIGhhbmRsaW5nLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBub3RpZnkgcGFyZW50IG9mIHRoZSBFZGl0IGNvbnRyb2wgb24gV01fU0VUVEVYVCB3aGVuIEVkaXQgaXMKCXBhcnQgb2YgdGhlIENvbWJvQm94LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gbWFrZSBoaWRkZW4gYmFuZHMgaGF2ZSB2YWxpZCAoMCB3aWR0aCkgY2hpbGQgd2luZG93IGFyZWFzCgktIHdoZW4gaGlkaW5nIGEgYmFuZCwgZG9uJ3Qgc2hvdyB0aGUgd2luZG93LCBoaWRlIGl0LgoKCSogZGxscy9rZXJuZWwvZGVidWdnZXIuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJQ2hhbmdlZCB3YWl0X3Byb2Nlc3MgYW5kIHdhaXRfZGVidWdfZXZlbnQgcmVxdWVzdHMgdG8gbmV2ZXIgYmxvY2s7Cgl3YWl0aW5nIGlzIGFsd2F5cyBkb25lIHRocm91Z2ggV2FpdEZvclNpbmdsZU9iamVjdCgpLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglEb24ndCBvcGVuIHRoZSBjb21tIGhhbmRsZSB3aXRoIEdFTkVSSUNfV1JJVEUgdmlhIEZJTEVfR2V0VW5peEhhbmRsZS4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIGluY2x1ZGUvd2luLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSAxNi1iaXQgY2FsbHMgaW4gRGVmV2luZG93UHJvYyBieSAzMi1iaXQsIHByZWZlcnJpbmcgdW5pY29kZQoJQVBJIGNhbGxzLgoKMjAwMS0wMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci93c3ByaW50Zi5jOgoJR290IHJpZCBvZiBXUFJJTlRGX0V4dHJhY3RWQVB0ci4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvd2luMzJzL3dpbjMyczE2LnNwZWMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsIGluY2x1ZGUvZG9zZXhlLmgsIHRvb2xzL3NwZWNtYWtlci9vdXRwdXQuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywgZGxscy9kZHJhdy9zdHJ1Y3RfY29udmVydC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lZG9zLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgYnVnZml4ZXMuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvc3RyZXNzLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsIGRsbHMvdXNlci9iaWRpMTYuYywgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdGV4dC5jLCBsb2FkZXIvdGFzay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglGaXhlZCB0eXBvIGluIEhLRVlfVVNFUlMvLkRlZmF1bHQgY3JlYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRG9uJ3Qgc2VuZCBub3RpZmljYXRpb25zIGZvciB0aGUgaW5pdGlhbCBkaXNwbGF5IG9mIHRoZSBmaXJzdCB0YWIgb2YKCXRoZSBjb250cm9sLgoKCSogd2luZG93cy9zcHkuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFkZGVkIGEgZmV3IG1lc3NhZ2VzIGFuZCBub3RpZmljYXRpb25zLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglEaXNhYmxlZCBzZXR0aW5nIG9mIHZpZXdwb3J0IG9yaWdpbiBmcm9tIGFuIEVNRi4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyByZXN0b3JlIHRoZSBiaXRfZ3Jhdml0eSB0byBCR0ZvcmdldCBhZnRlciB1c2luZyBCR05vcnRod2VzdCB0bwoJY29weSBiaXRzIGR1cmluZyBTZXRXaW5kb3dQb3MuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgbmVjZXNzYXJ5IHJlZ2lzdHJ5IGVudHJpZXMgZm9yIHRoZSBNb3ppbGxhIEFjdGl2ZVggY29udHJvbC4KCjIwMDEtMDEtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglPbmx5IHNldCB3aW5kb3cgdGV4dCBmb3IgV01fTkNDUkVBVEUgaW4gRGVmV2luZG93UHJvYyooKSBpbiBjYXNlCglscHN6TmFtZSBpcyBhIHN0cmluZyAoaS5lLiBjaGVjayBISVdPUkQpLgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvb2JtX3JhZGlvY2hlY2ssIGluY2x1ZGUvd2ludXNlci5oOgoJUmVtb3ZlZCBub24tc3RhbmRhcmQgT0JNX1JBRElPQ0hFQ0sgYml0bWFwLgoKCSogY29udHJvbHMvbWVudS5jLCBjb250cm9scy91aXRvb2xzLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJVXNlIERyYXdGcmFtZUNvbnRyb2woKSBpbnN0ZWFkIG9mIE9FTSBiaXRtYXBzIHRvIHBhaW50IGNhcHRpb24gYnV0dG9ucwoJYW5kIG1lbnUgY2hlY2sgbWFya3MuCgoJKiBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy90ZXh0LmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2Ygd29ybGQgdHJhbnNmb3JtIHN1cHBvcnQuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldmVyYWwgZml4ZXMgZm9yIHBsYXlpbmcgZW5oYW5jZWQgbWV0YWZpbGVzIGluIGEgZ2l2ZW4gcmVjdGFuZ2xlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmg6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2Ygd29ybGQgdHJhbnNmb3JtIHN1cHBvcnQuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBvYmplY3RzL2ZvbnQuYywgUkVBRE1FLCBkZWJ1Z2dlci9SRUFETUU6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItbWZjLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1wa2cuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbDoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU3BsaXQgV2luZWxpYiBVc2VyIEd1aWRlIGludG8gc21hbGxlciBmaWxlcyBmb3IgZWFzaWVyIG1haW50ZW5hbmNlCgkgIGFuZCBiZXR0ZXIgaW50ZWdyYXRpb24gd2l0aCBtYWtlX3dpbmVocS4KCS0gQWRkIHNvbWUgV2luZWxpYiBkb2NzIGZyb20gSm9uIEdyaWZmaXRocy4KCS0gRml4IGEgPHNlY3QyPiBwcm9ibGVtIGluIHJ1bm5pbmcuc2dtbC4KCjIwMDEtMDEtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCByZWFkLW9ubHkgZWRpdCBjb250cm9sIGZyb20gbW9kaWZpY2F0aW9uLgoKCSogZGxscy9tc3ZjcnQvZXhpdC5jOgoJSm9uIEdyaWZmaXRocyA8dG50anBncmlmZkB0c254dC5jby51az4KCUltcGxlbWVudGVkIF9fZGxsb25leGl0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJTWlzYyBmaXhlcyBpbiBMSVNUVklFV19TZXRJbWFnZUxpc3QsIExJU1RWSUVXX1NldEl0ZW1Db3VudCwKCUxJU1RWSUVXX1VwZGF0ZVNpemUuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEaXNwbGF5IHRoZSBjb25maWcgZmlsZSBsb2NhdGlvbiBpbiB0aGUgaW5jb3JyZWN0IGNvbmZpZyBmaWxlIGVycm9yCgltZXNzYWdlLgoKCSogZGxscy9tc3ZjcnQvd2NzLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJVXNlIGludCBpbnN0ZWFkIG9mIFdDSEFSIGluIHZhX2FyZygpIChmaXhlcyBnY2MtY3VycmVudCBjb21waWxhdGlvbgoJcHJvYmxlbSkuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIHZhcmlvdXMgZGVmaW5pdGlvbnMgKG1vc3RseSBtYWNyb3MpLgoJRml4ZWQgdHlwbyBpbiB0aGUgSEROX3tCRUdJTixFTkR9RFJBRyBtYWNyb3MuCglBZGRlZCBhIHBvaW50ZXIgdHlwZSBmb3IgSU1BR0VJTkZPLgoJRml4ZWQgdGhlIHJldHVybiB0eXBlIG9mIFRyZWVWaWV3X3tTZXRUb29sVGlwcyxHZXRUb29sVGlwc30uCglFdmVuIG1hY3JvcyBtdXN0IGNvbWUgaW4gQS9XIGFuZCBuZXV0cmFsIGZvcm0gKHNlZSB0aGUgTGlzdFZpZXdfIHNlcmllcykuCglGaXhlZCB0eXBvIGluIE1vbnRoQ2FsX1NldENvbG9yLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBDSEFSUkFOR0UuCgoJKiBpbmNsdWRlL3Byc2h0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIFBTTl9HRVRPQkpFQ1QuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlICdvcHRpb25zLmgnIGZvciBhIG5lZWRlZCBwcm90b3R5cGUuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgaW5jbHVkZS9vbGVhdXRvLmg6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIFZhckN5RnJvbUkxIHRvIHRha2UgYSBzaWduZWQgY2hhci4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywgb2JqZWN0cy9iaXRtYXAuYywgdG9vbHMvc3BlY21ha2VyL291dHB1dC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUeXBvIGZpeGVzIGluIGNvbW1lbnRzLgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gTmV3IG1zdmNydCB1bmljb2RlIGZ1bmN0aW9ucywgd2luYXBpX2NoZWNrLy1XYWxsLy1XIGNsZWFuLgoJLSBGb3J3YXJkIHRvIG50ZGxsIHdoZXJlIHBvc3NpYmxlLgoJLSBGaXggc29tZSAuc3BlYyBlbnRyaWVzIHdpdGggaW5jb3JyZWN0IHBhcmFtZXRlcnMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4ZWQgVW5pY29kZSBzdHJpbmdzLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1hZGUgU3BpbkNvdW50IEZJWE1FIGludG8gYSBUUkFDRS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW5jcmVhc2VkIGRlYnVnZ2VyIGluY2x1ZGUgbGltaXQgdG8gNTEyLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93c29jazMyL3Byb3RvY29sLmMsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3N0cmluZy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gUmVtb3ZlIDxzdHJpbmcuaD4gZnJvbSB3aW5udC5oLgoJLSBudGRsbDogY29tcGxldGUgY3J0IGZ1bmN0aW9ucywgcHJldmVudCBsaWJjIGltcG9ydHMsIGZpeCBzc2NhbmYuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvcHJzaHQuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEZpeCBhIHR5cG8gaW4gVEJTQVZFUEFSQU1TIEEvVyBkZWNsYXJhdGlvbi4KCS0gVXNlIDE2IGJpdCBVbmljb2RlIGNvbnN0YW50cyBmb3Igd2Mgc3RyaW5ncy4KCS0gTWFrZSBzb21lIHN0cmluZyBjb25zdGFudHMgYXZhaWxhYmxlIGFzIFVuaWNvZGUuCgoyMDAxLTAxLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglGaXhlZCB0aGUgc2l6ZSBvZiB0aGUgZmlsZSBkaWFsb2cgaWNvbnMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkZWQgTk1DQkVFTkRFRElUIHN0cnVjdHVyZSBmb3IgTk9USUZZIGR1bXAuCgktIEFkZGVkIGR1bXAgb2YgcG9zaXRpb25pbmcgc3RydWN0dXJlIGZvciBXTV9XSU5ET1dQT1NDSEFOR3tFRHxJTkd9LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIE5NQ0JFRU5ERURJVHtXfEF9IHN0cnVjdHVyZXMgYW5kIGZsYWdzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRml4IHRoZSBjbWRsaW5lIGFyZ3VtZW50IHBhc3NlZCB0byBORV9DcmVhdGVUaHJlYWQgdG8gaW5jbHVkZSBzdHJpbmcKCWxlbmd0aC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBtaXNzaW5nIHBvaW50ZXIgdHlwZSBkZWNsYXJhdGlvbnMgKHVzdWFsbHkgUHh4eCkuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRXNjYXBlIGFueSBzcGFjZXMgaW4gbHBzek9iamVjdE5hbWUgcGFzc2VkIHRvIEh0dHBPcGVuUmVxdWVzdC4KCjIwMDEtMDEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBXYXJuaW5nIGZpeC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJRGlzcGxheSB0aGUgaW1wb3J0aW5nIGRsbCBpbiB0aGUgMHhkZWFkYmVlZiBtZXNzYWdlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9jdXJzb3JzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9pY29ucy5yYywgaW5jbHVkZS93aW51c2VyLmgsIHByb2dyYW1zL2Nsb2NrL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9sY2MuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLmgsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUZpeGVkIGEgbnVtYmVyIG9mIGluY29tcGF0aWJpbGl0aWVzIGluIE9FTSBpY29ucy9jdXJzb3JzIGhhbmRsaW5nLgoKCSogZGxscy91c2VyL3RleHQuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgYnVmZmVyIG92ZXJmbG93IGluIFRFWFRfTmV4dExpbmVXLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvbXNhY20uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9yYXNhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXR1cGFwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGRvY3Z3LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lZG9zLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzb2NrMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCS0gTWlub3IgZG9jdW1lbnRhdGlvbiBjaGVjayBpbXByb3ZlbWVudHMuCgoyMDAxLTAxLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIG9sZCBsaW51eC9pbnB1dC5oLgoKCSogZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocSwgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1wa2cuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLXVzZXIuc2dtbDoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGNvbnZlbmllbmNlIHNjcmlwdCBmb3IgZ2VuZXJhdGluZyBvbmxpbmUgZG9jcyBmb3Igd2luZWhxLmNvbS4KCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCVNwZWNpZmllZCAnc2lnbmVkJyBvbiBjaGFycyBjb21wYXJlZCB0byAtMS4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIFNHTUwgSUQgYXR0cmlidXRlcyBpbiBwYWNrYWdpbmcuc2dtbCBtb3JlIHVuaXF1ZSB0byBhdm9pZAoJY29uZmxpY3RzIHdoZW4gd2UgYnVuZGxlIGFsbCBmb3VyIGd1aWRlcyBpbnRvIGEgc2luZ2xlIHNldC4KCgkqIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvc2Nyb2xsLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU29sdmUgcmVtYWluaW5nIHByb2JsZW1zIHdpdGggc2Nyb2xsIGJhcnMgaW4gdGhlIGVkaXQgY29udHJvbC4KCjIwMDEtMDEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgZGIyaHRtbC13aW5laHEgSFRNTCBnZW5lcmF0aW9uIHNjcmlwdC4gIFdvcmtzIGluIERlYmlhbiwgYW5kCgltYXkgYWN0dWFsbHkgd29yayBpbiBSZWRoYXQgbm93LCB0b28uCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFNIRUxMMzIuSXNOZXREcml2ZSBhbmQgU0hFTEwzMi5JTFNhdmVUb1N0cmVhbSBuZWVkZWQgZm9yCglJRSA1LgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwsIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglVcGRhdGVkIGZvciBjaGFuZ2UgaW4gY29uZmlnIGZpbGUgbmFtZS4gIFJlbW92ZWQgcmVmZXJlbmNlcyB0bwoJb2Jzb2xldGUgZ2xvYmFsIHdpbmUgY29uZmlndXJhdGlvbiBmaWxlIHdoZXJlIGFwcHJvcHJpYXRlLiAgVXBkYXRlZAoJY29uZmlnIG9wdGlvbiBmb3JtYXQgdG8gbWF0Y2ggdGhlIG5ldyBzeW50YXguICBNaXNjIGNsZWFudXBzLgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2N1cnNvcnMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2ljb25zLnJjLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9vY3JfYXBwc3RhcnRpbmcsIGluY2x1ZGUvYml0bWFwcy9vY3JfYnVtbWVyLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2Nyb3NzLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2RyYWdvYmplY3QsIGluY2x1ZGUvYml0bWFwcy9vY3JfaGFuZCwgaW5jbHVkZS9iaXRtYXBzL29jcl9oZWxwLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2liZWFtLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2ljb24sIGluY2x1ZGUvYml0bWFwcy9vY3Jfbm8sIGluY2x1ZGUvYml0bWFwcy9vY3Jfbm9ybWFsLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemUsIGluY2x1ZGUvYml0bWFwcy9vY3Jfc2l6ZW5lc3csIGluY2x1ZGUvYml0bWFwcy9vY3Jfc2l6ZW5zLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemVud3NlLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemV3ZSwgaW5jbHVkZS9iaXRtYXBzL29jcl91cCwgaW5jbHVkZS9iaXRtYXBzL29jcl93YWl0LCBpbmNsdWRlL2JpdG1hcHMvb2ljX2JhbmcsIGluY2x1ZGUvYml0bWFwcy9vaWNfYmFuZ185NSwgaW5jbHVkZS9iaXRtYXBzL29pY19jZHJvbSwgaW5jbHVkZS9iaXRtYXBzL29pY19mbG9wcHksIGluY2x1ZGUvYml0bWFwcy9vaWNfZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2ZvbGRlcjIsIGluY2x1ZGUvYml0bWFwcy9vaWNfaGFuZCwgaW5jbHVkZS9iaXRtYXBzL29pY19oYW5kXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2ljX2hkaXNrLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2xhbmRzY2FwZSwgaW5jbHVkZS9iaXRtYXBzL29pY19uZXR3b3JrLCBpbmNsdWRlL2JpdG1hcHMvb2ljX25vdGUsIGluY2x1ZGUvYml0bWFwcy9vaWNfbm90ZV85NSwgaW5jbHVkZS9iaXRtYXBzL29pY19wb3J0cmFpdCwgaW5jbHVkZS9iaXRtYXBzL29pY19xdWVzLCBpbmNsdWRlL2JpdG1hcHMvb2ljX3F1ZXNfOTUsIGluY2x1ZGUvYml0bWFwcy9vaWNfc2FtcGxlLCBpbmNsdWRlL2JpdG1hcHMvb2ljX3dpbmVpY29uLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9jdXJzb3JpY29uLmM6CglTdG9yZSBVU0VSIGljb25zIGFuZCBjdXJzb3JzIGFzIHJlc291cmNlcyBpbnN0ZWFkIG9mIHhwbSBiaXRtYXBzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggb2ZmIGJ5IG9uZSBlcnJvciBpbiBidWZmZXIgbGVuZ3RoIGNoZWNrLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJU3dpdGNoZWQgZnJvbSB3aW5lLmNvbmZpZyBiYWNrIHRvIHdpbmUuY29uZiwgbm8gbmVlZCB0byB1c2Ugc29tZXRoaW5nCglub3QgbGludXggc3RhbmRhcmQuICBSZW1vdmVkIHVzZSBvZiBvYnNvbGV0ZSAiLS1jb25maWciIG9wdGlvbiB3aGVuCgljYWxsaW5nIHJlZ2FwaS4gIExvdHMgb2YgY2xlYW51cCBhbmQgcmVvcmdhbml6YXRpb24uICBDaGVjayB0byBzZWUgaWYKCXdpbmUgaXMgaW5zdGFsbGVkIHdoZW4gd2luZWluc3RhbGwgaXMgbm90IHJ1biBhcyByb290LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIDMgbWlzc2luZyBGU194eHggbWFjcm9zLgoKMjAwMS0wMS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCVJlcGxhY2VkIHNvbWUgR2V0UHJvY0FkZHJlc3MoKSBpbXBvcnRzIGJ5IHRoZSBzdGFuZGFyZCBkbGwgaW1wb3J0CgltZWNoYW5pc20uCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9pbW0zMi9tYWluLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5oLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tbWRsZy9nZW5lcmljLmM6CglDbGVhbmVkIHVwIGRsbCBzdGFydHVwIHJvdXRpbmVzIG5vdyB0aGF0IHdlIGhhdmUgc2VwYXJhdGUgYWRkcmVzcwoJc3BhY2VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL3dpbm1tL2RyaXZlci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDb3NtZXRpY3MuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzb21lIG5vaXNlIGluIGEgZmV3IGNhc2VzIHdoZXJlIHRoZSBYMTFkcnYgZG9lc24ndCBsb2FkLCBidXQgdXNlZAoJdG8gZmFpbCBzaWxlbnRseS4KCgkqIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJU0VSVklDRV9DcmVhdGVTZXJ2aWNlVGFibGUgc3RpbGwgcmV0dXJuZWQgVFJVRSBpZiBDcmVhdGVUaHJlYWQgZmFpbGVkLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9NYWtlZmlsZS5pbiwgbGlicmFyeS9lcnJuby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS94MTFkcnYuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglDbGVhbmVkIHVwIHRoZSB2YXJpb3VzIGVycm5vIGxvY2F0aW9uIHRlc3RzIGluIGNvbmZpZ3VyZS4KCUFkZGVkIChoXyllcnJub19sb2NhdGlvbiBwb2ludGVycyBpbiB0aGUgbGlicmFyeSB0aGF0IGFsbG93IHJlbWFwcGluZwoJdGhlIGNhbGxzIGluIGhpZ2hlciBsZXZlbCBkbGxzLgoJTW92ZWQgWDExRFJWX0NyaXRTZWN0aW9uIG91dCBvZiBzeXNkZXBzLmMgYW5kIGludG8geDExZHJ2LmRsbC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93c29jazMyL3NvY2tldC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJSW4gV3NDb250cm9sLCBkb24ndCBtaXggTGludXggYW5kIFdpbmUgc29ja2V0IGNhbGxzLiBBbHdheXMgdXNlIFdpbmUgY2FsbHMuCglBZGRlZCBoYWNrIGZvciBtaXNzaW5nIFdJTkFQSSBpbiBVbml4IHNvY2tldCgpIGRlZmluaXRpb24uCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgaW5jbHVkZS9zZXR1cGFwaS5oOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGRlZCBzb21lIHN0dWJzIG5lZWRlZCBmb3IgSUUgNS41IHNldHVwLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmlzZWQgd2luZXNoZWxsbGluayB0byB3YWtlIHVwIEtERSAxLnggc28gdGhhdCBhcHBsaWNhdGlvbnMgdGhhdCBnZXQKCWluc3RhbGxlZCBzaG93IHVwIHdpdGhvdXQgYSBtYW51YWwgS0RFIG1lbnUgcmVmcmVzaCByZXF1aXJlZC4KCUFkZGVkIGEgZmV3IHVzYWdlIGNoZWNrcyB0byBtYWtlIG1hbnVhbCBpbnZvY2F0aW9uIGEgbGl0dGxlIGxlc3MKCXBhaW5mdWwuCgoJKiB0b29scy9iaW4ycmVzLmM6IEZpeGVkIHRtcGZpbGUgYnVmZmVyIHNpemUuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUZpeGVkIHR5cG8gaW4gd2luZV9nZXRfdW5peF9maWxlX25hbWUoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmlzZWQgc2hlbGwgbGluayBwcm9jZXNzIHRvIHRyZWF0IGVtcHR5IChlLmcuICIiKSBzdHJpbmdzCglpZGVudGljYWxseSB0byBOVUxMIHN0cmluZ3MuIE1ha2VzIG1hbnkgbW9yZSBpbnN0YWxsZXJzIHRha2UgdXNlZnVsCglhY3Rpb24uIEFkZGVkIG1hbnkgdHJhY2UgbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglPbmx5IGFkanVzdCBpdGVtIHJlY3QgYnkgaG9yaXpvbnRhbCBzY3JvbGxiYXIgb2Zmc2V0IGluIHJlcG9ydCB2aWV3LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQ2hhbmdlIFdTQUNsZWFudXAgLSB3c2luZm8gaXMgYSBzdGF0aWMgc3RydWN0dXJlIG5vdy4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugd2luZWxhdW5jaGVyIHRlc3QgZm9yIHhtZXNzYWdlIGFuZCB3YXJuIHRoZSB1c2VyIGlmIHRoZXkgZG9uJ3QKCWhhdmUgaXQuCgoyMDAxLTAxLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGluY2x1ZGUvd2luZV9nbC5oLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVJlcGxhY2VkIFgxMURSVl9Dcml0U2VjdGlvbiByZWZlcmVuY2VzIGJ5IHdpbmVfdHN4MTFfKHVuKWxvY2suCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUveDExZHJ2LmgsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglSZW1vdmVkIENBTExfTEFSR0VfU1RBQ0sgc3VwcG9ydC4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNhbGwgYSBORSBETEwncyBEbGxFbnRyeVBvaW50IHR3aWNlIGR1cmluZyBvbmUgc2luZ2xlCglMb2FkTW9kdWxlKCkgY2FsbC4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYXBWaWV3T2ZGaWxlRXg6IG1ha2UgdGhlIHJldHVybmVkIGVycm9yIGRlcGVuZGVudCBvbiB0aGUgV2luZG93cwoJdmVyc2lvbiB1c2VkLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJVXBkYXRlZCBkZWJ1ZyBjaGFubmVscy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCB3aW5kb3dzL3dpbnByb2MuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBoZWFkZXJzLgoKCSogd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIE1FTlVJVEVNSU5GTyBzdHJ1Y3R1cmUgYmVmb3JlIGNhbGxpbmcgR2V0TWVudUl0ZW1JbmZvLgoKCSogZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYW4gaW50ZXJmYWNlIGNhc3QgaW4gREQyLT5ERDcgdGh1bmsuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG9uZSBtaXNzaW5nIGJ1ZmZlciBzaXplIHJvdW5kaW5nIGluIHRoZSBlZGl0IGNvbnRyb2wuCglNYWtlIHJvdW5kaW5nIGNvZGUgc2xpZ2h0bHkgbW9yZSByZWFkYWJsZS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIGlmMTYzMi9idWlsdGluLmM6CglSZXBsYWNlZCBHTE9CQUxfQWxsb2MgYnkgR2xvYmFsQWxsb2MxNiB3aGVyZSBwb3NzaWJsZS4KCgkqIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvdHdlYWsuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvdXNlci9jYWNoZS5jLCBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvY2FjaGUuaCwgaW5jbHVkZS90d2Vhay5oLCBpbmNsdWRlL3VzZXIuaDoKCU1vdmVkIHR3ZWFrIHN1cHBvcnQgdG8gVVNFUiBkbGwuIFJlbW92ZWQgdHdlYWsuaCBhbmQgY2FjaGUuaC4KCgkqIG1lbW9yeS9sb2NhbC5jLCBtc2Rvcy9pbnQyMC5jLCBtc2Rvcy9pbnQyZi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW4zMi9pbml0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXhwci5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9maWxlLmMsIGlmMTYzMi9yZWxheS5jOgoJUmVtb3ZlZCBzb21lIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgMTYtYml0IHRhc2sgc3RydWN0dXJlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbXN2Y3J0L2N0eXBlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRml4ZWQgdG91cHBlci9fdG91cHBlciBtaXh1cC4KCjIwMDEtMDEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMTAxMTIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmM6CglBZGRlZCBtaXNzaW5nIFdJTl9SZWxlYXNlV25kUHRyLgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjOgoJd2lubW0uZGxsIGNhbiBub3cgYmUgcHJvcGVybHkgc2VwYXJhdGVkLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXYXJuaW5nIGZpeC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVzIGZvciB2YXJpb3VzIHVuZGVycnVuLXJlbGF0ZWQgcHJvYmxlbXMuIEFsc28gYWRkZWQgYSBtZWNoYW5pc20KCWZvciB0aGUgc291bmQgZHJpdmVyIHRvIHJlcXVlc3QgdGhhdCBhIFN0b3Agc2hvdWxkIGNsb3NlIGFuZCByZW9wZW4KCXRoZSBkZXZpY2UuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmUgbXVsdGltZWRpYSB0aW1lcnMgZnJvbSB0aGUgc2VydmljZSB0aHJlYWQsIHVzZSBhIHNlcGFyYXRlIHRocmVhZAoJaW5zdGVhZC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW4gU1RBVFVTQkFSX0dldFRpcFRleHR7YSxXLCBhbHdheXMgcHV0IGEgdGVybWluYXRpbmcgJ1wwJyBpbiB0aGUKCWJ1ZmZlci4KCVBhc3MgYSBidWZmZXIgb2Ygc3VmZmljaWVudCBzaXplIHRvIFRUTV9HRVRURVhUQS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EyX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jLCBkbGxzL2RkcmF3L21haW4uYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglXYXJuaW5nIGZpeGVzLgoKCSogZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9uc3BhcGkuaCwgaW5jbHVkZS93c2hpc290cC5oLCBpbmNsdWRlL3dzaXB4LmgsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3Byb3RvY29sLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUltcGxlbWVudGVkIEVudW1Qcm90b2NvbEEvVy4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicmFyeS9wb3J0LmMsIGNvbmZpZ3VyZToKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTmV0QlNEIDEuNSBpcyBsYWNraW5nIGVjdnQsIGZjdnQsIGdjdnQgZm9yIGNydGRsbC4KCgkqIHNlcnZlci9maWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVdvcmthcm91bmQgZm9yIFN1U0UgNyAyLjIuMTYga2VybmVsIGJ1Zy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUd1YXJkIGFnYWluc3QgaW5jb21pbmcgc3RyaW5nIG9mIE5VTEwgaW4gV01fU0VUVEVYVC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jb25zb2xlLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2V4aXQuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9sb2NhbGUuYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvbWVtb3J5LmMsIGRsbHMvY3J0ZGxsL3NwYXduLmMsIGRsbHMvY3J0ZGxsL3N0cmluZy5jLCBkbGxzL2NydGRsbC90aW1lLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVHVybiBjcnRkbGwgaW50byBmb3J3YXJkcyB0byBtc3ZjcnQuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBzb21lIGV4Y2VwdGlvbiBoYW5kbGluZyBmdW5jdGlvbnMuCgoJKiBkbGxzL21zdmNydC9tYXRoLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIG1pc3R5cGVkIHZhcmlhYmxlIG5hbWUgaW4gTVNWQ1JUX19mcGNsYXNzKCkuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJQWRkZWQgZmxhZyB0byBkaWZmZXJlbnRpYXRlIGZpbGUgbWFwcGluZ3MgYW5kIFZpcnR1YWxBbGxvYygpIGJsb2NrcywKCWFuZCByZWplY3QgVmlydHVhbEZyZWUoKSBjYWxscyBvbiBmaWxlIG1hcHBpbmdzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJUmVtb3ZlZCBvYnNvbGV0ZSBnZXRfcmVxX2J1ZmZlcigpIGZ1bmN0aW9uLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglTd2FwIGxwT3ZlcmxhcHBlZCBwYXJhbWV0ZXJzIGluIFJlYWRGaWxlIGFuZCBXcml0ZUZpbGUuCglUaGUgSW50ZXJuYWxIaWdoIG1lbWJlciBzaG91bGQgY29udGFpbiB0aGUgbnVtYmVyIG9mCglieXRlcyB0cmFuc2ZlcnJlZC4KCgkqIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXhlcyBhcyBhIHJlc3VsdCBvZiB0ZXN0aW5nIGJ1aWx0aW4gY3J0ZGxsIGFnYWluc3QgYnVpbHRpbiBtc3ZjcnQuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZHJpdmUuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglVcGRhdGVkIG1lc3NhZ2VzIHdpdGggbmV3IGNvbmZpZyBmaWxlcyBpbiBtaW5kIHRvIGtlZXAgZnJvbSBjb25mdXNpbmcKCXVzZXJzLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBtb3N0IGZ1bmN0aW9uYWxpdHkuICBUT0RPIGxpc3RzIHdoYXRzIGxlZnQuCgoyMDAxLTAxLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy8uY3ZzaWdub3JlLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLCBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5lL29ial93ZWJicm93c2VyLmgsIHdpbmVkZWZhdWx0LnJlZzoKCUpvaG4gUi4gU2hlZXRzIDxkdXNrQHJhdmVuZHVzay5vcmc+CglJbXBsZW1lbnRlZCBzdHVicyBmb3IgSVdlYkJyb3dzZXIgaW4gc2hkb2N2dy5kbGwuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOgoJTmF0aGFuIE5ldWxpbmdlciA8bm5ldWxAdW1yLmVkdT4KCVJlbmFtZWQgc3RydWN0IG9wdGlvbiB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBnZXRvcHQuaC4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBiaW5hcnkgY29tcGF0aWJsZSBfX0VIX3Byb2xvZy4KCgkqIHNlcnZlci9tYWluLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHNpbXBsZSB1c2FnZSgpIGZ1bmN0aW9uLgoKCSogZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmM6CglObyBsb25nZXIgdXNlZC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oOgoJSm9obiBSLiBTaGVldHMgPGR1c2tAcmF2ZW5kdXNrLm9yZz4KCUNvcnJlY3Qgc29tZSBjdXQgJiBwYXN0ZSB0eXBvcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBmb3IgdGhlIG5ldyBjb25maWcgZm9ybWF0IGFuZCBsb2NhdGlvbiBvZiB0aGUgZGVmYXVsdCBjb25maWcKCWZpbGUuICBBZGQgYSBjb25mX3F1ZXNpb24gdG8gY29udmVydCBhbiBvbGQgdXNlciBjb25maWcgZmlsZSwgb3IgdXNlCgl0aGUgZGVmYXVsdCBXaW5lIGNvbmZpZyBmaWxlLiAgUmVtb3ZlZCB0aGUgc2V0dGluZyBvZiBvYnNvbGV0ZQoJRVhUUkFfTERfTElCUkFSWV9QQVRILiAgQWRkZWQgYSBjb25mX3F1ZXN0aW9uIHRvIGdpdmUgdGhlIHVzZXIgdGhlCglvcHRpb24gdG8gaW5zdGFsbCBsb2NhbCBjb25maWcgYW5kIHJlZ2lzdHJ5IGZpbGVzIHdoZW4gdGhlIHNjcmlwdCBpcwoJYmVpbmcgcnVuIGJ5IHJvb3QuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIHRoZSBtYWluX3RhcmdldCBpbiBzaW5nbGUtdGFyZ2V0IG1vZGUuCglUaGUgZGVmaW5lZChAYXJyYXkpIGNvbnN0cnVjdCBpcyBzYWlkIHRvIGJlIGRlcHJlY2F0ZWQsIGF2b2lkIGl0LgoJU2ltcGxpZnkgdGhlIHVzYWdlIHJlcG9ydGluZy4KCUFkZCBhIHdvcmQgb2YgY2F1dGlvbiB0byB0aGUgdXNhZ2UgbWVzc2FnZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHJldHVybiB2YWx1ZSBvZiBXTV9HRVRURVhUIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBjb250cm9scy9jb21iby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVZhcmlvdXMgY29tYm9ib3ggZml4ZXMuCgoJKiBmaWxlcy9NYWtlZmlsZS5pbjoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgZGVmaW5lcyBhZnRlciBwcm9maWxlLmMgY2xlYW51cC4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgdW5uYW1lZCB1bmlvbiBkdW1teSBuYW1lcy4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBpbmNsdWRlL3dpbm50LmgsIGNvbmZpZ3VyZToKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVwbGFjZWQgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBjb25maWd1cmUgY2hlY2tzIGJ5IGhhcmRjb2RlZAoJZGVmaW5pdGlvbnMgaW4gd2lubnQuaCAodG8gYXZvaWQgY29uZmlnLmggZGVwZW5kZW5jeSkuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIHByb3RvdHlwZXMgdG8gYXZvaWQgY29tcGlsZSB3YXJuaW5ncyBvbiBTb2xhcmlzLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdvcmsgYXJvdW5kIHByb2JsZW1zIG9uIFNvbGFyaXMgaWYgY29uZmlnLmggaXMgbm90IGluY2x1ZGVkLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJ5dGVvcmRlciBwcm9ibGVtcyBjYXVzZWQgYnkgbm9uLXBvcnRhYmxlIGNvZGUuCgoyMDAxLTAxLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2N0eXBlLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L21zX2Vycm5vLmgsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsIGRsbHMvbXN2Y3J0L3RpbWUuYywgZGxscy9tc3ZjcnQvd2NzLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGxvYWRlci9sb2Fkb3JkZXIuYywgREVWRUxPUEVSUy1ISU5UUywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0Ly5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9jb25zb2xlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBNaWdyYXRlIENSVERMTCB0byBNU1ZDUlQuCgktIE1hbnkgZml4ZXMgYW5kIGEgbG9hZCBvZiBuZXcgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9vcHRpb25zLmgsIG1pc2Mvb3B0aW9ucy5jOgoJUmVtb3ZlZCBhbGwgdHJhY2VzIG9mIHRoZSAtLWNvbmZpZyBvcHRpb24uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJUmVlbmFibGVkIERYR3JhYiBvcHRpb24uCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU3luY2hyb25pemUgdGhlIHNpemVzIG9mIHRoZSBleHRlcm5hbCBhbmQgaW50ZXJuYWwgYnVmZmVycyBhdCBzdGFydAoJYW5kIGVuZCBvZiBtZXNzYWdlIHByb2Nlc3NpbmcgaW4gdGhlIGVkaXQgY29udHJvbC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeGVkIHJldHVybmVkIGxlbmd0aCBmb3IgTEJfR0VUVEVYVC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJQWRkZWQgbmxzIHRvIEVYVFJBU1VCRElSUy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHVzZSBvZiBvdXRkYXRlZCBXSU5FX0lOSSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIFJlbW92ZWQKCW9ic29sZXRlIC0tY29uZmlnIG9wdGlvbi4gIFJlbW92ZWQgbG9hZGluZyBvZiBnbG9iYWwgd2luZSBjb25maWcgZmlsZS4KCUNsZWFuZWQgdXAgc29tZSBtZXNzYWdlcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCWVzLT5idWZmZXJfc2l6ZSBpcyBub3QgYWx3YXlzIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgY3VycmVudGx5IGluIHRoZQoJZWRpdGJveCwgc28gdXNlIC0xIGluc3RlYWQuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQWRkZWQgYSBzcGVjaWZpYyBkZWJ1ZyBjaGFubmVsIGZvciBkbGwgbG9hZGluZyAoYnVpbHRpbi9uYXRpdmUpLgoKCSogb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3RleHQuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJRml4ZWQgc29tZSBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIGFzeW5jaHJvbm91cyBSZWFkRmlsZSBhbmQgV3JpdGVGaWxlLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcXVpcmUgdGhhdCB0aGUgdXNlciBzcGVjaWZ5IGEgd29yayBkaXJlY3RvcnkuIFRoaXMgcHJvdmlkZXMgYQoJc2FmZWd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbCBpbnZvY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT25seSBjb3B5IHRoZSBkd1NpemUgYnl0ZXMgcmVhbGx5IG9jY3VwaWVkIGJ5IGxwUHJvcFNoZWV0UGFnZS4KCgkqIGluY2x1ZGUvd2luZG93c3guaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRm9yIHRoZSBHbG9iYWwqUHRyKiBzZXQgb2YgbWFjcm9zLCByZXBsYWNlIHRoZSAxNmJpdCB2ZXJzaW9uIHdpdGgKCXRoZWlyIDMyIGJpdCBlcXVpdi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJT25seSBjYWxsIFRPT0xCQVJfQ2FsY1Rvb2xiYXIgd2hlbiBwYXJhbWV0ZXJzIGNoYW5nZS4KCjIwMDEtMDEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvdXNlci9jb250cm9scy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHVuaWNvZGUgd2luZG93IHByb2MgZm9yIHRoZSBsaXN0Ym94IGNvbnRyb2wuCglSZXBsYWNlZCBhbGwgYW5zaSBjYWxscyBieSB0aGVpciB1bmljb2RlIGVxdWl2YWxlbnRzLgoJUmVtb3ZlZCB1c2Ugb2YgdGhlIGN1c3RvbSBsb2NhbCBoZWFwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgZm9yIE5VTEwgYW5kIExQU1RSX1RFWFRDQUxMQkFDSyBiZWZvcmUgdXNpbmcgbHBDb2x1bW4tPnBzelRleHQuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgc29tZSBpbmNvcnJlY3QgZm9ybWF0IHN0cmluZ3MuCgoJKiBkZWJ1Z2dlci9kYmdtYWluLmM6IFJlbW92ZWQgb2Jzb2xldGUgZmlsZS4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3VzZXIuYywgZGxscy91c2VyL21pc2MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlIEhEV1AgdG8gd2ludXNlci5oLgoJQ29udmVydCBIV0lOU1RBIHRvIFNUUklDVC4KCgkqIGZpbGVzL2RyaXZlLmMsIG1pc2MvY2Ryb20uYzoKCVJ5YW4gQ3VtbWluZyA8Ym9kbmFyNDJAYm9kbmFyNDIuZGhzLm9yZz4KCU1ha2UgQ0RST01fR2V0TGFiZWwgcmV0dXJuIDAgaW4gdGhlIGV2ZW50IG9mIGZhaWx1cmUsIGFuZCBtYWtlIHRoZQoJZGVmYXVsdCBsYWJlbCBmb3IgZHJpdmVzIGEgc3RyaW5nIG9mIDExIHNwYWNlcy4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJRml4ZWQgdXNhZ2Ugb2YgUmVnRW51bVZhbHVlQS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHRoZSBFbnVtUHJpbnRlcnMoKSBmbGFnIFBSSU5URVJfRU5VTV9ERUZBVUxUIGluIHRoZSBzYW1lIHdheQoJdGhhdCBOVCBkb2VzIC0gdGhhdCBpcyBpZ25vcmUgaXQgYW5kIHJldHVybiBUUlVFLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBY3R1YWxseSBjYWxsIENEUk9NX0F1ZGlvX0dldFRyYWNrc0luZm8gd2hlbiByZXRyaWV2aW5nCglNQ0lfQ0RBX1NUQVRVU19UUkFDS19UWVBFLgoJV0lORV9DREFfT1BFTiBtYXBzIHRvIE1DSUVSUl9IQVJEV0FSRS4KCgkqIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNFUlZJQ0VfQWRkT2JqZWN0IGNoZWNrIGZvciBOVUxMIGhhbmRsZXMgaW4gYWRkaXRpb24gdG8KCUlOVkFMSURfSEFORExFX1ZBTFVFLgoKCSogZmlsZXMvZmlsZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBsYXN0IHBhcmFtZXRlciBvZiBDcmVhdGVGaWxlIHNob3VsZCBiZSAwIChha2EgTlVMTCksIG5vdCAtMS4KCUNyZWF0ZUZpbGUgcmV0dXJucyBJTlZBTElEX0hBTkRMRV9WQUxVRSB3aGVuIGl0IGZhaWxzLCBub3QKCUhGSUxFX0VSUk9SLgoJQWRkZWQgY29tbWVudHMuCgoJKiB3aW4zMi9jb25zb2xlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJcHR5X2hhbmRsZSBpcyBhIEhBTkRMRSwgbm90IGFuIGludC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CgkoY29uZmlndXJlKSBMb29rIGZvciB0aGUgaGVhZGVycyBpbiAkV0lORV9ST09UL2luY2x1ZGUvd2luZSBhbmQKCS9vcHQvd2luZS9pbmNsdWRlL3dpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTZW5kIHRoZSBjcmVhdGlvbiBub3RpZmljYXRpb24gdG8gdGhlIHRydWUgb3duZXIgb2YgdGhlIHRvb2x0aXAuCgoJKiBjb250cm9scy9jb21iby5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJRW5zdXJlIHRoZXJlIGlzIGFuIGVkaXQgY29udHJvbCB3aGVuIHdlIHJlc2V0IGNvbnRlbnRzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJQWRqdXN0IGl0ZW0gcmVjdHMgYnkgaG9yaXpvbnRhbCBzY3JvbGxiYXIgb2Zmc2V0LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeGVkIFRDTV9HZXRSb3dDb3VudC4KCjIwMDEtMDEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi90dHlkcnYuc3BlYzoKCU5lZWQgdG8gaW1wb3J0IHVzZXIzMiBldmVuIHRob3VnaCB3ZSBkb24ndCB1c2Ugc3ltYm9scyBmcm9tIGl0IHlldC4KCgkqIHRvb2xzL3NwZWNtYWtlci9NYWtlZmlsZS5pbjoKCUxlb25hcmQgTm9ycmflcmQgPHZpbnNjaUBuaWMuZnVuZXQuZmk+CglSZWZlcmVuY2UgJChTUkNESVIpIHdoZW4gaW5zdGFsbGluZyB0aGUgcGVybCBzY3JpcHQgKGl0IGRvZXNuJ3QgZXhpc3QKCWluIHRoZSBidWlsZCBkaXJlY3RvcnkpLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQ2hhbmdlZCBzdHJpbmcgcG9pbnRlciBjYWxjdWxhdGlvbi4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBhbGwgdGhlIGRvY3VtZW50ZWQgc2hsd2FwaSBmdW5jdGlvbnMgb3V0IG9mIHVuZG9jc2hlbGwuaCBpbnRvCglzaGx3YXBpLmguICBOb3RoaW5nIGJ1dCBmaWxlcyBpbiBkbGxzL3NoZWxsMzIgd2lsbCBub3cgaW5jbHVkZQoJdW5kb2NzaGVsbC5oLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgb25lICYsIG5vdyBDb0NyZWF0ZUluc3RhbmNlKCkgb2YgZGRyYXcgb2JqZWN0cyB3b3JrcyBhZ2Fpbi4KCgkqIHNlcnZlci9hc3luYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglDYWxjdWxhdGUgdGhlIHRpbWVvdXQgdGltZSBvbmNlIHdoZW4gdGhlIGFzeW5jIGlzIGNyZWF0ZWQuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgSGFzT3ZlcmxhcHBlZENvbXBsZXRlZCBtYWNyby4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtaXNzaW5nIG1hcHBpbmcgZm9yIExCX0ZJTkRTVFJJTkdFWEFDVCBtZXNzYWdlICh0aGFua3MgdG8gR2VyYXJkCglQYXRlbCBmb3IgcmVwb3J0aW5nIHRoZSBidWcpLgoKCSogY29udHJvbHMvY29tYm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb21ib2JveCBzaG91bGQgY2xlYXIgaXRzIGN1cnJlbnQgc2VsZWN0aW9uIG9uIHJlc3BvbnNlIHRvCglDQl9TRVRDVVJTRUwoLTEpIG1lc3NhZ2UuCgoyMDAxLTAxLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVc2UgdGhlIGV4ZSBuYW1lIGFuZCBmaWxlIGhhbmRsZSB3ZSBnb3QgZnJvbSB0aGUgc2VydmVyIGFsc28gd2hlbgoJc3RhcnRpbmcgV2luMTYgb3IgRE9TIHByb2dyYW1zLCB0byBhdm9pZCBkZXBlbmRpbmcgb24gdGhlIGNvbnRlbnRzIG9mCgl0aGUgY29tbWFuZC1saW5lLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2RlYnVnZ2VyLmM6CglBZGRlZCBzZXBhcmF0ZSBxdWV1ZSBmb3IgInN5c3RlbSIgQVBDcyB0aGF0IGdldCBjYWxsZWQgZXZlbiB3aGVuIHRoZQoJdGhyZWFkIGlzIG5vdCBpbiBhbiBhbGVydGFibGUgc3RhdGUuCglTcGVjaWZ5IHRoZSBzZWxlY3RfcmVxdWVzdCB0aW1lb3V0IGFzIGFic29sdXRlIHZhbHVlIHNvIHRoYXQgd2UgY2FuCglyZXN0YXJ0IHRoZSByZXF1ZXN0IHdoZW4gaW50ZXJydXB0ZWQuCgoJKiB3aW5lLmluaTogUmVtb3ZlZCBvbGQgZm9ybWF0IGNvbmZpZyBmaWxlLgoKCSogY29udHJvbHMvbWVudS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vZGlmeSB0aGUgbG9vayBvZiBiaXRtYXAgbWVudSBpdGVtcyB0byBtYXRjaCBXaW45NSBhbmQgV2luOTgKCUZpeCB0aGUgc3Vua2VuIGVkZ2UvYml0bWFwIG92ZXJsYXAgaW4gdGhlIFdpbjk4IGxvb2sKCUludHJvZHVjZSBhbiBJU19NQUdJQ19JVEVNIG1hY3JvIHRvIHRlc3QgaWYgdGhlIGl0ZW0gaXMgJ21hZ2ljJwoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1zZG9zL2ludDIxLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy93aW5lZG9zL21vZHVsZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgSEZJTEUgdnMuIEhBTkRMRSBtaXNtYXRjaGVzLgoJSWYgbm90IHVzZWQgdGhlIGxhc3QgcGFyYW1ldGVyIG9mIENyZWF0ZUZpbGUgbXVzdCBiZSAwLCBub3QgLTEuCgoJKiBkbGxzL21zYWNtL21zYWNtLnNwZWMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZvcmNlZCBsb2FkaW5nIG9mIG1zYWNtMzIgd2hlbiBtc2FjbSBpcyBsb2FkZWQuCglBZGRlZCBtc2FjbSBETEwgcGFpciBpbiBjb25maWcgZmlsZXMuCglBZGRlZCBzb21lIGR1bWIgY2FsbHMgZnJvbSAxNiB0byAzMi4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEludGVybmV0Q2Fub25pY2FsaXplVXJsLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCUFkZGVkIGEgbW9yZSB0cnV0aGZ1bCBtZXNzYWdlIGFib3V0IHdoYXQgcmVhbGx5IGlzIHdyb25nLgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYywgaW5jbHVkZS93aW5lL3dpbmdkaTE2Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvbid0IGNhbGwgUXVlcnlBYm9ydDE2KCkgaW4gV3JpdGVTcG9vbDE2KCksIHNpbmNlIGl0IG1pZ2h0IGJlIGNhbGxlZAoJd2l0aCBsb2NrcyBoZWxkIChhbmQgd2UgZG8gbm90IG5lZWQgdG8gY2FsbCBpdCBoZXJlKS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVG9vayBhIHN0YWIgYXQgaW1wbGVtZW50aW5nIExCU19OT1NFTC4KCjIwMDEtMDEtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVNlbmQgdGhlIGV4ZSBmaWxlIGhhbmRsZSBpbiBpbml0X3Byb2Nlc3NfZG9uZSByZXF1ZXN0LgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJQXZvaWQgY3Jhc2hpbmcgb24gaW52YWxpZCBsaW5lcyBkdXJpbmcgY29uZmlnIGZpbGUgY29udmVyc2lvbi4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3VybC5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIGEgZmV3IFVybCogZnVuY3Rpb25zLgoKCSogY29udHJvbHMvY29tYm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB1bmljb2RlIHdpbmRvdyBwcm9jIGZvciBjb21ib2JveCBjb250cm9sLgoJUmVwbGFjZWQgYW5zaSBjYWxscyBieSB0aGVpciB1bmljb2RlIGVxdWl2YWxlbnRzLgoKCSogY29udHJvbHMvc3RhdGljLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdW5pY29kZSB3aW5kb3cgcHJvYyBmb3IgdGhlIHN0YXRpYyBjb250cm9sLgoJUmVwbGFjZWQgYW5zaSBjYWxscyBieSB0aGVpciB1bmljb2RlIGVxdWl2YWxlbnRzLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglSZXR1cm5pbmcgc3VjY2VzcyBmb3IgdW5rbm93biBXU0NOVExfVENQSVBfUVVFUllfSU5GTyBjb2RlIG1ha2VzIHdpbjk4Cgl3aW5pcGNmZyB3b3JrLgoKCSogZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNb3VzZSBldmVudHMgZml4LgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luZG93cy9xdWV1ZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvcmVnaXN0cnkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFkZGVkIGhhbmRsZV90IHR5cGUgdG8gc2VydmVyIGludGVyZmFjZSBzbyB0aGF0IHdlIGNhbiBtYWtlIGhhbmRsZXMKCXBvaW50ZXJzIGxhdGVyIG9uLgoJQWx3YXlzIHVzZSAwIHRvIHNpZ25hbCBpbnZhbGlkIGhhbmRsZSBpbiBzZXJ2ZXIgcmVxdWVzdHMuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJIHRyaXBsZSBjaGVja2VkIGJ1dCB5ZXMsIENIT09TRUNPTE9SLmhJbnN0YW5jZSBpcyBhbiBIV05ELi4uCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBtc2Rvcy92Z2EuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IGNhc3QgdGhlIHJldHVybiB2YWx1ZSBvZiBHZXRQcm9jQWRkcmVzcy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZGlhbG9nLmMsIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBXbmRQcm9jIGZ1bmN0aW9uIHdhcyBtaXNzaW5nIHRoZSBDQUxMQkFDSyBtb2RpZmllci4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgZmlyc3QgMiBwYXJhbWV0ZXJzIG9mIFdpbk1haW4gYXJlIEhJTlNUQU5DRXMsIG5vdCBIQU5ETEVzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgcHJvYmxlbXMgd2l0aCBzY3JvbGxpbmcgaW4gdGhlIGVkaXQgY29udHJvbC4KCjIwMDEtMDEtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmVkIHRoZSAnZm4nIHByZWZpeCAoaS5lLiBJQ09NX0ZOKS4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kZHJhdy5oLCBtc2Rvcy92Z2EuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmgsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuaCwgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5oLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmgsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYywgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5oLCBkbGxzL2RkcmF3L2RwYWxldHRlL3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGlidGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYnRleHR1cmUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uaCwgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuYywgZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRvY3VtZW50YXRpb24vZGRyYXcudHh0LCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9jb252ZXJ0LmMsIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGRjb21pbXBsLmgsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3N0cnVjdF9jb252ZXJ0LmMsIGRsbHMvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaDoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFqb3IgRGlyZWN0RHJhdyByZXN0cnVjdHVyZS9yZWltcGxlbWVudGF0aW9uLCB1c2luZyBhbiBpbXByb3ZlZCBjb21wb25lbnQKCW9iamVjdCBtb2RlbCBoaWVyYXJjaHkuIFRoZSBpbXBsZW1lbnRhdGlvbiBjdXJyZW50bHkgc3VwcG9ydHM6CgktIERpcmVjdERyYXcgb3ZlciBHREkvVVNFUiBpbiBhIHdpbmRvdyAodXNpbmcgRElCc2VjdGlvbnMgYW5kCgkgIGFzeW5jaHJvbm91cyB1cGRhdGVzKQoJLSBYVmlkTW9kZQoJLSBYRjg2REdBMgoJLSBBbGwgRGlyZWN0RHJhdyBpbnRlcmZhY2VzIGZyb20gdmVyc2lvbnMgMSB0byA3IChhdCBsZWFzdCBpbiB0aGVvcnkpCgktIEhvb2tzIGZvciBEaXJlY3QzRCBpbnRlcmZhY2VzCgoJKiBkbGxzL21zYWNtL3dpbmVhY20uaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbXNhY21kbGcuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBwYXJ0cy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgdGhlIGFsaWdubWVudCBvZiB0aGUgTUZfUklHSFRKVVNUSUZZIG1lbnUgaXRlbXMuCgoJKiBtaXNjL21haW4uYzogUmVtb3ZlZCBvYnNvbGV0ZSBjb2RlLgoKCSogZGxscy9NYWtlZmlsZS5pbjogRml4ZWQgZGxsIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGluY2x1ZGUvbW1kZGsuaCwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIG1hbmlmZXN0IGNvbnN0YW50IGluc3RlYWQgb2YgcmF3IHZhbHVlcyBmb3IgYWxsIHRoZQoJRFJWX1FVRVJZPz8/IHZhbHVlcy4KCgkqIGRsbHMva2VybmVsL3RodW5rLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZGVkIFVscmljaCBXZWlnYW5kJ3MgZGVzY3JpcHRpb24gb2YgS0VSTkVMMzJfOTkuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglNaWtlIE1jQ29ybWFjayAgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglTb21lIGJvcmtlbiBtZW1vcnkgbW9uaXRvcmluZyBwcm9ncmFtcyBkaXZpZGUgYnkgZHdUb3RhbFBhZ2VGaWxlLAoJd2hpY2ggcHJvYmFibHkgaXNuJ3QgemVybyBvbiB3aW5kb3dzLgoKCSogY29uZmlndXJlLmluLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvc3BlY21ha2VyLy5jdnNpZ25vcmUsIHRvb2xzL3NwZWNtYWtlci9NYWtlZmlsZS5pbiwgdG9vbHMvc3BlY21ha2VyL1JFQURNRSwgdG9vbHMvc3BlY21ha2VyL2RsbC5jLCB0b29scy9zcGVjbWFrZXIvZnVuY3Rpb25fZ3JlcC5wbCwgdG9vbHMvc3BlY21ha2VyL21haW4uYywgdG9vbHMvc3BlY21ha2VyL21pc2MuYywgdG9vbHMvc3BlY21ha2VyL21zbWFuZ2xlLmMsIHRvb2xzL3NwZWNtYWtlci9vdXRwdXQuYywgdG9vbHMvc3BlY21ha2VyL3NlYXJjaC5jLCB0b29scy9zcGVjbWFrZXIvc3BlY21ha2VyLmgsIHRvb2xzL3NwZWNtYWtlci9zeW1ib2wuYywgY29uZmlndXJlOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIHNwZWMgZ2VuZXJhdGlvbiB0b29sIHNwZWNtYWtlci4KCgkqIG1pc2Mvb3B0aW9ucy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVJlaW1wbGVtZW50ZWQgInJlbGF5PSIgYW5kICJzbm9vcD0iIHN1Ym9wdGlvbnMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCB0aGUgZnVuY3Rpb24gcG9pbnRlciB0eXBlcyB0byB0aGVpciByaWdodGZ1bCBoZWFkZXJzLgoJVGhlIGRlZmluaXRpb24gb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZXMgbXVzdCBiZSBiYXNlZCBvbiBTVFJJQ1QuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXJjcmFmdCB3YXMgY29uZnVzZWQgYnkgYSB3cm9uZyBGQUxTRSBCaXRCbHQgcmV0dXJuLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldCBmcmFnbWVudHMgZm9yIHdhdmUgaW5wdXQgdG8gNyB4IDEwMjQgYnl0ZS4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbG9hZGluZyBvZiAxNiBiaXQgZHJpdmVycy4KCUJldHRlciBzdXBwb3J0IGZvciBuYXRpdmUgbWFwcGVycy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIHByb2JsZW0gd2hlcmUgd2hlbiBkZWxldGluZyBhbiBpdGVtIHVzaW5nIGluZGV4IC0xIG9uIGFuIGVtcHR5CglsaXN0Ym94IHdlIHdvdWxkIHBhc3MgdGhyb3VnaCBhbiBpbGxlZ2FsIG5lZ2F0aXZlIGluZGV4IGFuZCBjYXVzZQoJcHJvYmxlbXMuCgoyMDAxLTAxLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVBhc3MgdGhlIGFwcGxpY2F0aW9uIG5hbWUgYWxzbyB3aGVuIHN0YXJ0aW5nIGEgVW5peCBhcHAsIGFuZCB1c2UgaXQgdG8KCWxvYWQgdGhlIG1haW4gZXhlIC5zbyBmaWxlLgoJRml4ZWQgYnVnIGluIGRpcmVjdG9yeSBoYW5kbGluZyBpbiBQUk9DRVNTX0NyZWF0ZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJSm9uIEdyaWZmaXRocyA8dG50anBncmlmZkB0c254dC5jby51az4KCUFkZGVkIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb25BbmRTcGluQ291bnQgcHJvdG90eXBlLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgd2luZG93cy91c2VyLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBIREVTSyB0byBTVFJJQ1QuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGR1cGxpY2F0ZSBmaWVsZCBpbiBpbnRlcm5hbCBzdHJ1Y3R1cmUuCglTaWxlbmNlZCB3YXJuaW5nIGZvciBNQ0lfQ09ORklHVVJFIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBEUlZNX01BUFBFUl9TVEFUVVMgbWVzc2FnZS4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5kcnYuc3BlYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVwbGFjZWQgcG9pbnRlcnMgdG8gZXh0ZXJuYWwgZnVuY3Rpb25zIGJ5IGEgRExMIGltcG9ydC4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGJpdG1hcCBzaXplIGhhbmRsaW5nLgoKMjAwMS0wMS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBjb25maWd1cmU6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVR1cm4gb24gZGV0ZWN0YWJsZSBhdXRvcmVwZWF0IGlmIHRoZSBYIEtleWJvYXJkIEV4dGVuc2lvbiBpcwoJZGV0ZWN0ZWQuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIEhNRVRBRklMRVBJQ1QgdG8gd3R5cGVzLmguIE5vdGUsIEhNRVRBRklMRVBJQ1QgaXMgYWx3YXlzIGEKCSd2b2lkKicgdW5saWtlIHJlZ3VsYXIgaGFuZGxlcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnQgUHJpbnREbGcxNiBiZXR0ZXIgKGFkZGluZyBQcmludERsZ1Byb2MxNiBhbmQgc2V2ZXJhbCBvdGhlcgoJMTZiaXQgZGVwZW5kZW50IGZ1bmN0aW9ucykKCUlmIHdlIGFyZSB1c2luZyBhIHRlbXBsYXRlIHdlIG1pZ2h0IG5vdCBoYXZlIHRoZSBkZWZhdWx0IGNvbWJvYm94IGZvcgoJcHJpbnRlcnMsIHVzZSB0aGUgZGVmYXVsdCBwcmludGVyIGluIHRob3NlIGNhc2VzLgoJTW9yZSBlcnJvciBtZXNzYWdlcyBhbmQgY2hlY2tzLgoJQWRkZWQgR2xvYmFsRmxhZ3MxNiBhbmQgR2xvYmFsUmVBbGxvYzE2IHRvIGtlcm5lbDMyLnNwZWMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURlbGF5ZWQgaW1wb3J0IHRodW5rcyBmb3IgU3BhcmMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIGFuICcjaWZkZWYgU1RSSUNUJy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUJ1Z2ZpeCBmb3Igc291bmQgZHJvcHBpbmcgb3V0LCBhbmQgd29ya2Fyb3VuZCBmb3IgSGFsZi1MaWZlJ3MKCWJyYWluZGVhZCBzZWNvbmRhcnkgc291bmQgYnVmZmVyIG1hbmFnZW1lbnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3dpbmRlZi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIEhEUk9QIHRvIHNoZWxsYXBpLmguCgoJKiBpbmNsdWRlL29iamJhc2UuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTaG91bGQgaW5jbHVkZSBjZ3VpZC5oLgoKCSogaW5jbHVkZS9vbGUyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdHdvIGVycm9yIGNvZGVzOiBFX0RSQVcgYW5kIERBVEFfRV9GT1JNQVRFVEMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gOC4zIGZpbGUgbmFtZXMuCglGaXhlZCBzaXplb2YoV0NIQVIpIGJ1Z3MuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCS0gRml4ZWQgYSBieXRlb3JkZXIgY29udmVyc2lvbiBwcm9ibGVtIHdpdGggbWVzc2FnZSB0YWJsZXMuCgktIENhcmVmdWxseSByZWFkIGFuZCB3cml0ZSAocG9zc2libHkpIG1pc2FsaWduZWQgZGF0YSBlbGVtZW50cwoJICB0byBhdm9pZCBjcmFzaGVzIG9uIGFyY2hpdGVjdHVyZXMgd2hlcmUgdGhpcyBpcyBub3QgYWxsb3dlZC4KCgkqIHByb2dyYW1zL3ZpZXcvdmlldy5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlZCBjYWxscyB0byBPcGVuRmlsZSB3aXRoIHRoZSBlcXVpdmFsZW50IGNhbGwgdG8KCUNyZWF0ZUZpbGUuIFJlbW92ZXMgdGhlIG5lZWQgdG8gY2FzdCB0aGUgcmVzdWx0IHRvIEhBTkRMRS4KCgkqIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIGxhc3QgcGFyYW1ldGVyIG9mIENyZWF0ZUZpbGUgaXMgYSBIQU5ETEUgYW5kIHNob3VsZCB0aHVzIGJlIE5VTEwuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUEgc29ja2V0IGJlY29tZXMgcmVhZGFibGUgYWZ0ZXIgY29ubmVjdCBpbiBMaW51eCAyLjQgKGV2ZW4gZm9yCgljb25uZWN0aW9uIHJlZnVzZWQpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlYWQgNCBieXRlcyB0byB3YWtlIHVwIEdFVElTUEFDRS4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBvbmUgc2FmZXR5IGNoZWNrIHRvIEFGTSBwYXJzaW5nLgoKCSogZGxscy91c2VyL3VzZXIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJMTZiaXQgdXNlciBHZXRQcm9wL1NldFByb3AgZ2V0IHN0cmluZ3Mgb3IgYXRvbXMsIHNvIHdlIGNhbiB1c2UgJ3N0cicuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIDAgdnMuIEZBTFNFIG1pc21hdGNoZXMuCglGaXhlZCBhICcleCcgdnMuICclbHgnIG1pc21hdGNoLgoJRml4ZWQgc29tZSBEV09SRCB2cy4gU0NfSEFORExFIG1pc21hdGNoZXMuCgoJKiBpbmNsdWRlL3dpbnN2Yy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNDX0hBTkRMRSBpcyBhIEhBTkRMRSwgbm90IGEgJ0RFQ0xBUkVfSEFORExFJwoJU0VSVklDRV9TVEFUVVNfSEFORExFIGlzIGEgRFdPUkQKCgkqIG1lbW9yeS9sb2NhbC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGlnbiBtb3ZlYWJsZSBibG9ja3MgaWYgdGhlIGFyY2hpdGVjdHVyZSByZXF1aXJlcyBpdC4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW9yZGVyZWQgdGhlIGRlZmluaXRpb25zIGFjY29yZGluZyB0byB0aGVpciB2YWx1ZS4KCUluc2VydGVkIHRoZSAqX1NfKiBtYWNyb3MgcmlnaHQgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICpfRV8qIGJsb2NrCglSZWluZGVudGVkIHRoZSB2YWx1ZXMuCglSZW1vdmVkIHRoZSBkdXBsaWNhdGUgc2V0IG9mIEVfeHh4IG1hY3JvcyBzaW5jZSB0aGV5IGFyZSBvbmx5IHVzZWQgb24KCW5vbiBXSU4zMiBwbGF0Zm9ybXMuCglVbmNvbW1lbnRlZCB0aGUgQ09fRV9JTklUXyBzZXQgb2YgbWFjcm9zLgoJUmVtb3ZlZCBzb21lIGR1cGxpY2F0ZSBtYWNybyBkZWZpbml0aW9ucyBhbmQgZml4ZWQgdmFyaW91cyB0eXBvcy4KCUFkZGVkIHRoZSBkZWZpbml0aW9ucyBuZWVkZWQgYnkgdGhlIE1GQy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBSZXNlcnZlZDUgLT4gbHN0cmNtcDE2LgoKCSogZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvZGUgd2FzIGNoZWNraW5nIGZvciAwIG9yIEhGSUxFX0VSUk9SIGluc3RlYWQgb2YgbmVnYXRpdmUgZXJyb3IKCXZhbHVlcy4KCjIwMDAtMTItMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgkiSW1wbGVtZW50IiBHZXRLQkNvZGVQYWdlIGFuZCBHZXRLQkNvZGVQYWdlMTYuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIEdldE92ZXJsYXBwZWRSZXN1bHQuCgoJKiBvYmplY3RzL2ZvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlRm9udEluZGlyZWN0KCkgY2FuIGdldCBOVUxMIHBvaW50ZXJzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXByb3ZlIGFzeW5jIGkvbyBjb21wYXRhYmlsaXR5LiBscE92ZXJsYXBwZWQtPkludGVybmFsIHNob3VsZCBob2xkCgl0aGUgb3ZlcmxhcHBlZCB0cmFuc2ZlciBzdGF0dXMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJ1aWx0aW4gaW1wb3J0cyBicm9rZW4gYnkgbGF0ZXN0IGNoYW5nZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHVuYWxpZ25lZCBhY2Nlc3MgdGVzdCBlZmZlY3RpdmUuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBldmlsaXNoIGN1dCBhbmQgcGFzdGUuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29tcGlsZSB0aGUgZGVidWdnZXIgd2l0aCBTVFJJQ1Qgb24uCgoJKiBkbGxzL3dpbmVwcy9mb250LmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCVVzZSBhIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbiB0byBtYXRjaCBQb3N0U2NyaXB0IGZvbnQgbmFtZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBJQ09NX0ZOIHRoYXQgZ2VuZXJhdGVzIGVpdGhlciBmbiMjeGZuIG9yIHNmbiBhcyBhcHByb3ByaWF0ZS4KCVVzZSBJQ09NX0ZOIHRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSAnSUNPTV9WP01FVEhPRC4qJyBkZWZpbml0aW9ucy4KCVJlbW92ZSB0aGUgb2Jzb2xldGUgSUNPTV9DVk1FVEhPRCBtYWNyb3MuCglVc2UgdGhlIElDT01fVlRCTCBtYWNybyB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgJ0lDT01fQ0FMTC4qJwoJZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGltcGxlbWVudGVkIHBhc3NpdmUgRlRQIHRyYW5zZmVycyAoUEFTViwgbmVlZGVkIGZvciBmaXJld2FsbHMpCgktIGZpeGVkIGxzdG5Tb2NrZXQgY2xvc2luZwoKCSogaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS93aW5udC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHdpbmVidWlsZCB0byB3b3JrIG9uIG5vbi1JbnRlbCBhcmNoaXRlY3R1cmVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQcmV2ZW50IHVuYWxpZ25lZCBhY2Nlc3MgdG8gTkUgaW4tbWVtb3J5IG1vZHVsZSBkYXRhLgoKCSogbWVtb3J5L2NvZGVwYWdlLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY29tcG9zZS5jLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL21idG93Yy5jLCB1bmljb2RlL3djdG9tYi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgY29tcG9zaXRlIFVuaWNvZGUgY2hhcmFjdGVycyBpbiBNdWx0aUJ5dGVUb1dpZGVDaGFyCglhbmQgV2lkZUNoYXJUb011bHRpQnl0ZS4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBwcm90b3R5cGUgZm9yIEdldExvZ0NvbG9yU3BhY2UuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgSENPTE9SU1BBQ0UgdG8gU1RSSUNUIG1vZGUuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglXaWxidXIgTi4gRGFsZSA8d2lsYnVyLmRhbGVAbHVtaW4ubmw+CglVcGRhdGVkIGZpcnN0IGV4YW1wbGUgdXNpbmcgbGF0ZXN0IHdpbmVidWlsZCBkbGwvc28gcHJvY2VkdXJlLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBzbWFsbCByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHZtODZfZW50ZXIoKSBhbmQgc2lnbmFsIGhhbmRsaW5nLgoJTWFkZSBzZXBhcmF0ZSBzYXZlX3ZtODZfY29udGV4dCBhbmQgcmVzdG9yZV92bTg2X2NvbnRleHQgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFsbG93IHN0dWJzIGZvciBleHBvcnRzIHRoYXQgYXJlIG5vdCBsZWdhbCBDIGlkZW50aWZpZXJzLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVRlc3QgcG9pbnRlciBiZWZvcmUgaXQgaXMgZGVyZWZlcmVuY2VkIGluIENyZWF0ZUV2ZW50VygpLgoKMjAwMC0xMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZW1ha2VyLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCVJlbmFtZWQgbGlidXVpZC5hIHRvIGxpYndpbmVfdXVpZC5hCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgbGluayB3aXRoIGxpYncgaWYgbGliYyBhbHJlYWR5IGNvbnRhaW5zIHcqIHJvdXRpbmVzLgoJTGluayBldmVyeSBsaWJyYXJ5IHdpdGggbGlibnNsIGlmIHJlcXVpcmVkLgoJSW5jbHVkZSBpZWVlZnAuaCB3aGVyZSBuZWNlc3NhcnkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNvbXBpbGUgZml4IGlmIEhBVkVfT1NTIGlzIG5vdCBkZWZpbmVkLgoKCSogaWYxNjMyL3JlbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJyb2tlbiBwcm90b3R5cGVzLgoKCSogaWYxNjMyL3Nub29wLmMsIHJlbGF5MzIvc25vb3AuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2lsZW5jZSBzaWxseSBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcG9ydCBrZXJuZWwzMiAoZm9yIFNldExhc3RFcnJvcigpKS4KCgkqIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvaGVhcC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGlhbG9nLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBjaGVjayB3aGV0aGVyIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzIGlzIGFsbG93ZWQuCglBZGRlZCBtYWNyb3MgdG8gYWNjZXNzIHVuYWxpZ25lZCBXT1JEcyAvIERXT1JEcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZHJpdmUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9maWxlLmMsIFJFQURNRSwgY29uc29sZS9nZW5lcmljLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGNsYXJpZnkgbWFueSBlcnJvciBtZXNzYWdlcwoJLSBhZGQgZGF0YSBjb3JydXB0aW9uIHdhcm5pbmcgdG8gUkVBRE1FIGZpbGUKCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSB0aGUgWCBzdGF0ZSBpbnN0ZWFkIG9mIHRoZSBWSyBrZXkgc3RhdGUgdG8gY2hlY2sgZm9yIGVhdGFibGUKCWNoYXJhY3RlcnMsIHNpbmNlIHRoZSBWSyBrZXkgc3RhdGUgaXNuJ3QgYSBmYW4gb2YgQWx0R3IuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUFsbG93IGFuIGFwcGxpY2F0aW9uIHRvIG9wZW4gYSBkb3MgZGV2aWNlIGVuZGluZyB3aXRoICc6Jy4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVsZWFzZSB0aGUgV2luMTYgbG9jayBiZWZvcmUgc3RhcnRpbmcgdGhlIERPUyBwcm9jZXNzLCBzaW5jZSBpdCdzIG5vdAoJcmVhbGx5IGEgV2luMTYgYXBwLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNpbmNlIERPU1ZNX1dhaXQoKSBibG9ja3MgdGhlIG5vcm1hbCBldmVudCBwcm9jZXNzaW5nLCBpdCBzaG91bGQKCWRpc3BhdGNoIHBlbmRpbmcgZXZlbnRzIGl0c2VsZi4KCjIwMDAtMTItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJRml4IHRoZSB0cml2aWFsIGNvbXBpbGVyIHdhcm5pbmdzIGluIGRlYnVnZ2VyLyB3aGVuIGNvbXBpbGluZyB3aXRoIC1XCgktIG1vdmVkIGlubGluZSBzdGF0ZW1lbnRzIHRvIGZyb250CgktIGZpeGVkIHRoZSB0cml2aWFsIGNhc2VzIG9mIHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29ucwoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHVzaW5nIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHdpbm1tIGFuZCBtc3ZmdzMyLCBidXQgZGVsYXkKCWxvYWRpbmcgaW5zdGVhZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYWJpbGl0eSB0byBkZWxheSBsb2FkaW5nIG9mIGFuIGltcG9ydGVkIERMTCB1bnRpbCBpdCdzIG5lZWRlZAoJKG5ldyAtZGVsYXkgb3B0aW9uIGZvciBpbXBvcnQgZGlyZWN0aXZlIGluIHNwZWMgZmlsZSkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglGaXhlZCBlcnJvciByZWNvdmVyeSBkdXJpbmcgdGhyZWFkIGNyZWF0aW9uLgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBsb2FkZXIvZG9zL01ha2VmaWxlLmluLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MjAuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MzMuYywgbXNkb3MvaW9wb3J0cy5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zLy5jdnNpZ25vcmU6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNlcGFyYXRlZCB0aGUgTVogbG9hZGVyIGFuZCBjb3JlIERPUyBWTSBpbnRvIGRsbHMvd2luZWRvcy4KCgkqIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnN2Yy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgYWxsIGhhbmRsZXMgd2l0aCBERUNMQVJFX09MRF9IQU5ETEUgdG8gZWFzZSBjb252ZXJzaW9uIHRvCglTVFJJQ1QuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBHZXREQ0JydXNoQ29sb3IgYW5kIEdldERDUGVuQ29sb3IuCgoyMDAwLTEyLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVJlbW92ZWQgLS1jb25maWcgZnJvbSBtYW4gd2luZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglSZW1vdmVkIHRyYWlsaW5nIGdhcmJhZ2UgYWZ0ZXIgW3NlcmlhbHBvcnRzXSBkZXZpY2UgbmFtZS4KCjIwMDAtMTItMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBpbmNsdWRlL3Jhcy5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIEhSQVNDT05OIGZyb20gd2luZGVmLmguCglBZGRlZCBtaXNzaW5nIFVuaWNvZGUgdHlwZSBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCglBZGRlZCBhIGZldyBtaXNzaW5nIG1hY3JvIGRlZmluaXRpb25zLgoJRW5jbG9zZSBpbiBhbiBleHRlcm4gIkMiIGZvciBDKysgV2luZWxpYiBhcHBsaWNhdGlvbnMuCglBZGRlZCB0aGUgc3RydWN0dXJlIHBhY2tpbmcgc3BlY2lmaWNhdGlvbi4KCgkqIGZpbGVzL2NoYW5nZS5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIHNjaGVkdWxlci9oYW5kbGUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGZldyB0eXBlIGNsYXNoZXMgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBzd2l0Y2ggdG8gU1RSSUNULgoKCSogZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZWQgdGhlIGxvb2sgb2YgZG90cyBhbmQgZGFzaGVzIHRvIG1hdGNoIHRoZSBXaW4zMiBsb29rLgoJSXNzdWUgYSBGSVhNRSBhYm91dCBQU19VU0VSU1RZTEUuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgZW52aXJvbm1lbnQgdmFyaWFibGUgVE1QIGFzIGFuIGFsaWFzIGZvciBURU1QLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+Cgk8bWFsbG9jLmg+IGlzIG5vdCBJU08gQywgPHN0ZGxpYi5oPiBpcy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4ZWQgbG9vcCB0ZXN0IGZvciBuZWdhdGl2ZSB2YWx1ZS4KCjIwMDAtMTItMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMDEyMjIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMTItMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNhbmNlbCBhIGZldyBjaGFuZ2VzIHRvIGdldCBiYWNrIGJhc2ljIHRleHQgY2xpcGJvYXJkIGZ1bmN0aW9uYWxpdHkuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW5oZWxwLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlcGxhY2VkIGNhbGxzIHRvIEtFUk5FTC5ZaWVsZDE2IGJ5IGNhbGxzIHRvIEtFUk5FTDMyLkszMldPV1lpZWxkIGZyb20KCW91dHNpZGUgbGlia2VybmVsLnNvLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJTm8gbG9uZ2VyIHRyeSB0byBsb2FkIGJ1aWx0aW4gbGlicmFyeSB3aGVuIGxvYWRvcmRlciBpcyAnc28nLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgbGlicmFyeS9NYWtlZmlsZS5pbiwgdHN4MTEvTWFrZWZpbGUuaW4sIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvd2luZV91bmljb2RlLmRlZjoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglVc2UgZGxsd3JhcCBmb3IgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcyBpbiBjeWd3aW4uCgoJKiBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglBdm9pZCBkdXAnaW5nIGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBub3QgbmVjZXNzYXJ5LgoJRG8gbm90IHNlbmQgZmQgdG8gdGhlIGNsaWVudCBpZiBvcHMtPmdldF9mZCgpIGZhaWxzLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJRml4ZWQgY29weS9wYXN0ZSBidWcgKHRoYW5rcyB0byBHZXJhcmQgUGF0ZWwpLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW9yZSBpbnRlbGxpZ2VudCBEaXJlY3RTb3VuZCBwcmVidWZmZXJpbmcuIEJ5IHRyYWNraW5nIHRoZQoJbGFzdC13cml0dGVuIHBvc2l0aW9uIG9mIHN0cmVhbWluZyBidWZmZXJzLCBpdCBhdHRlbXB0cyB0byBhdm9pZAoJcHJlYnVmZmVyaW5nIHBhc3QgdGhpcyBwb3NpdGlvbiB1bmxlc3MgbmVjZXNzYXJ5OyB0aGlzIG1heSBhdm9pZCBhCgludW1iZXIgb2Ygc291bmQgcHJvYmxlbXMgaW4gdmFyaW91cyBzaXR1YXRpb25zLiBNZXJnZWQgSEVMIGFuZCBIQUwKCW1peGluZyBjb2RlLCB3aGljaCBzaG91bGQgcmVkdWNlIHRoZSBIRUwgbW9kZSdzIENQVSB1c2FnZSBzbGlnaHRseS4KCgkqIHdpbmRvd3Mvd2luLmM6IEpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJV2FybiB3aGVuIEZpbmRXaW5kb3cgbmVlZHMgdG8gY2hlY2sgb3RoZXIgcHJvY2Vzc2VzIHdpbmRvd3MuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglEb24ndCBzdXBwcmVzcyBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJQWRkICVmcyBpbmZvIHRvIHRoZSBjcml0aWNhbCBzZWN0aW9uIHRpbWVvdXQgbWVzc2FnZS4KCgkqIGluY2x1ZGUvZGVidWd0b29scy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgJzsnIGF0IHRoZSBlbmQgb2YgbGluZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggcmVtYWluaW5nIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaGVzLgoKCSogZGxscy9udGRsbC9vbS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L3ZpcnR1YWwuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVVzZSBhIHNlcGFyYXRlIEZJRk8gcGFpciBmb3Igc2VydmVyIHJlcXVlc3RzIHRoYXQgZG9uJ3QgbmVlZCB0byBwYXNzIGEKCWZpbGUgZGVzY3JpcHRvci4KCUFzc29jaWF0ZSBmaWxlIGRlc2NyaXB0b3JzIHdpdGggaGFuZGxlcyBvbiB0aGUgc2VydmVyIHNpZGUgc28gdGhhdCB3ZQoJZG9uJ3QgbmVlZCB0byBwYXNzIHRoZSBmZCBldmVyeSB0aW1lIHRoZSBjbGllbnQgd2FudHMgdG8gdXNlIGl0LgoKCSogd2luZS5pbmk6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJTmF0aXZlIElNTTMyLkRMTCBjcmFzaGVzIHdpbmUgLSB1c2UgYnVpbHRpbiBETEwuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglQcmludCBhbGwgcHJvYmxlbXMgYXMgRVJSKCkgZXhjZXB0IGZvciAiY291bGQgbm90IG9wZW4iIGxpYnJhcnksIHdoaWNoCglpcyBXQVJOKCkuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSURpcmVjdERyYXdTdXJmYWNlOjpCbHQ6OlNSQ0NPUFkgaXMgdGhlIGRlZmF1bHQgUk9QIG9wZXJhdGlvbiwgZG8gbm90Cgl0aHJvdyBlcnJvci4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglWYXJpb3VzIGRvY3VtZW50YXRpb24gZml4ZXMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJUmVtb3ZlZCB0aGUgZHVtbXkgbW91c2UgZXZlbnQgaW4gU2V0V2luZG93UG9zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIDE2IGJpdCBlbnRyeSBwb2ludHMgbmVlZGVkIGJ5IG11bHRpbWVkaWEgRExMcy4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci9yZXNvdXJjZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9sb2NhbC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIGNvbnRyb2xzL2VkaXQuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy93aW5tbS9tbWlvLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jOgoJUmVwbGFjZWQgV0lOMTZfR2xvYmFsTG9jazE2IGJ5ICJvZmZpY2lhbCIgZnVuY3Rpb24gSzMyV09XR2xvYmFsTG9jazE2LgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglNb3JlIERJQiBzZWN0aW9uIGNvcHktYmxpdHRpbmcgaW1wcm92ZW1lbnRzOiBIYW5kbGUgOGJwcCBESUJzLCBEQwoJbWFwcGluZyBtb2RlcywgYW5kIGNsaXBwaW5nLiBUYWtlIGFkdmFudGFnZSBvZiB0aGUgRElCc2VjdGlvbidzCglYU2htSW1hZ2UgbWVjaGFuaXNtIHRvIGdldCBhIHJlYWxseSBmYXN0IGJsaXQgdG8gdGhlIGRpc3BsYXkuCgoyMDAwLTEyLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3VzZXIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZSB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCS0gQWRkZWQgbmV3IG9wdGlvbiBvbiAtLWRvY3VtZW50YXRpb24tb3JkaW5hbCAob2ZmIGJ5IGRlZmF1bHQpLgoJLSBBZGRlZCBuZXcgb3B0aW9uIG9uIC0tZG9jdW1lbnRhdGlvbi1wZWRhbnRpYyAob2ZmIGJ5IGRlZmF1bHQpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBlcnJvcnMgZm9yIElEc0RyaXZlcl9HZXRQb3NpdGlvbi4KCVJlcG9ydCBEU0VSUl9VTklOSVRJQUxJWkVEIG9uIG5vbi1vcGVuZWQgV2luZU9TUyBhdWRpbyBkZXZpY2UuCgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2RyaXZlci5jLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhbmVkIHVwIHRoZSBjb2RlIGEgYml0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUVuYWJsZSB0aGUgRGlyZWN0U291bmQgSEFMIGZvciBzb3VuZCBkcml2ZXJzIHRoYXQgZG8gbm90IHJlcG9ydAoJRFNQX0NBUF9SRUFMVElNRS4gU2V0IHByZWNpc2lvbiBvZiB0aGVzZSB0byAyNTYgYnl0ZXMgKGFib3V0IDNtcykuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gVExCX0RvRnVuY3M6IGNvZGUgY2xlYW51cCBhbmQgZWxlbWRlc2NGdW5jIHJlYWQgY29ycmVjdGx5IGZyb20gVExCLgoJLSBUTEJfTG9hZFR5cGVMaWI6IHJlZiBjb3VudCBwcm9ibGVtLgoJLSBJVHlwZUxpYjo6R2V0VHlwZUluZm9PZkd1aWQ6IHNhZmVyIGltcGxlbWVudGF0aW9uIChwb2ludGVyIHRlc3RpbmcpLgoJLSBJVHlwZUluZm86OkdldFJlZlR5cGVPZkltcGxUeXBlOiBzYWZlciBpbXBsZW1lbnRhdGlvbiAocG9pbnRlciB0ZXN0aW5nKS4KCS0gSVR5cGVJbmZvMjo6R2V0RG9jdW1lbnRhdGlvbkwgcmV0dXJuIGVycm9ycyBpZiBTeXNBbGxvY1N0cmluZyBmYWlsZWQuCgktIFRMQiBsb2FkZXIgZnVuY3Rpb25zIG5vdyB0cmFjZSBpbiAidHlwZWxpYiIgY2hhbm5lbC4KCS0gSW1wcm92ZWQgdHJhY2VzIGluIEFkZFJlZi9SZWxlYXNlIGFuZCBpbXByb3ZlZCBkdW1wXyogZnVuY3Rpb25zIGZvcgoJICBkZWJ1Z2dpbmcuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgd3JpdGUgdG8gYnVmZmVyIHdpdGggemVybyBsZW5ndGguCglSZW1vdmVkIHNvbWUgdW51c2VkIGZ1bmN0aW9uIHBhcmFtZXRlcnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBmcmVlIHRoZSBub3Qgb3duZWQgZXJyb3Igc3RyaW5nLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgU2FmZUFycmF5R2V0VUJvdW5kIGFuZCBTYWZlQXJyYXlHZXRMQm91bmQgd2l0aCBtb3JlIHNhbml0eQoJY2hlY2tzOiBhbiBhcnJheSBoYXMgYXQgbGVhc3Qgb25lIGRpbWVuc2lvbi4KCVVwZGF0ZWQgdmFsaWRDb29yZGluYXRlcywgd2hlcmUgU2FmZUFycmF5R2V0TEJvdW5kIHdhcyBjYWxsZWQgb24KCWRpbWVuc2lvbiAwLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZXdyb3RlIHRoZSBhbGxvY2F0aW9uIG9mIE1NIGRyaXZlciBkZXNjcmlwdG9ycy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJVXNlIGhhbmRsZSB0byBwYWxldHRlIGluc3RlYWQgb2YgaW5kZXggZm9yIEVNUl9TRUxFQ1RQQUxFVFRFLgoJSW1wbGVtZW50ZWQgc2ltcGxlIGNhc2UgZm9yIEVNUl9FWFRTRUxFQ1RDTElQUkdOLgoKMjAwMC0xMi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJRml4ZWQgZGVidWcgcm91dGluZXMgdG8gd29yayBiZWZvcmUgdGhlIHByb2Nlc3MgaGVhcCBpcyBjcmVhdGVkLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRG8gbm90IGNhbGwgdGhyZWFkIGF0dGFjaC9kZXRhY2ggcm91dGluZXMgZHVyaW5nIHByb2Nlc3MgZXhpdCB0byBhdm9pZAoJcG90ZW50aWFsIGRlYWRsb2Nrcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVNldCB0aGUgY29sb3IgbWFzayB3aXRoIEJJX0JJVEZJRUxEIGRpYnMsIGRvbid0IHVzZSB0aGUKCWFwcGxpY2F0aW9uLXByb3ZpZGVkIHZhbHVlLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBuZXcgZWRpdCBjb250cm9sIGFsbG9jYXRlIGl0cyBidWZmZXJzIHdpdGggZ3JhbnVsYXJpdHkgMzIgYnl0ZS4KCUVuc3VyZSB0aGF0IGFsbCBjb3BpZWQgc3RyaW5ncyBhcmUgMCB0ZXJtaW5hdGVkLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIHByaW50IG91dCBXTV9OT1RJRlkgbWVzc2FnZSBjb2RlIGlmIHdlIGtub3cgaXQuCgktIHByaW50IG91dCBtZW1vcnkgcGFzdCBlbmQgb2YgTk1IRFIgc3RydWN0dXJlIGZvciB0aGUgc2l6ZSBvZgoJICB0aGUgbm9ybWFsIE5NeHh4eHggc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSBjb2RlLgoJLSBzZXR1cCBub3RpZnkgY29kZSB0YWJsZSBmb3IgY29tbW9uLCBSRUJBUiwgVE9PTEJBUiwgYW5kIENPTUJPRVggKGF0CgkgIGxlYXN0IHBhcnRpYWxseSkuCgoyMDAwLTEyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jOiBTZXQgbGFzdCBlcnJvciBpbiBHbG9iYWxVbmxvY2suCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3RpbWUuYzoKCUFuZHJldyBKb2huc3RvbiA8YWpvaG5zdG9uQHN3aXRjaC5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCgkqIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL3dpbm50LmgsIGxpYnJhcnkvbG9hZGVyLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURVTU1ZU1RSVUNUTkFNRTIgY3JlYXRlcyBhIGNvbmZsaWN0IHdoZW4gdXNpbmcgYW5vbnltb3VzIHVuaW9uIG5hbWVzLgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglBZGRlZCBkZXNjcmlwdGlvbiBvZiBwcmludGVycG9ydHMgc2VjdGlvbiBvZiB0aGUgd2luLmluaSBmaWxlIGZvciB3aW5lcHMuZHJ2LgoKCSogaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglGaXggSUNvbm5lY3Rpb25Qb2ludENvbnRhaW5lciBpbnRlcmZhY2UgbWFjcm9zLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBEaXNwYXRjaCBBUEkuCgoJKiBkbGxzL2NydGRsbC9jb25zb2xlLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2V4aXQuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9sb2NhbGUuYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGk6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBBZGQgc2V2ZXJhbCBtYmNzIGFuZCBDUCA5MzIgZnVuY3Rpb25zLCBmaXggc29tZSBleGlzdGluZyBjYWxscwoJLSBCdWcgZml4ZXMsIC1XIHdhcm5pbmdzIGFuZCB3aW5hcGlfY2hlY2sgdXBkYXRlcy4KCS0gRG9uJ3QgYmUgc28gc3RyaWN0IHNldHRpbmcgZGVmYXVsdCBsb2NhbGUsIHN0b3JlIGNvZGVwYWdlCgoJKiBsaWJyYXJ5L3BvcnQuYzoKCUluY2x1ZGUgc3RkbGliLmggaW5zdGVhZCBvZiB3Y2hhci5oLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJc2hsd2FwaSBmb3J3YXJkZXJzIGZvciBTZXRXaW5kb3dMb25nVyBhbmQgQ2FsbFdpbmRvd1Byb2NXLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyB1bmljb2RlIGVkaXQgY29udHJvbC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IGFnYWluc3QgTlVMTCBidWZmZXIgaW4gdGhlIHByb2ZpbGUgZnVuY3Rpb25zLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyB1bmljb2RlIGVkaXQgY29udHJvbC4KCgkqIG9sZS9vbGUybmxzLmMsIHRvb2xzL2JpbjJyZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvcGFyc2VyLnksIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZGkuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5wb3MuaCwgbWlzYy90d2Vhay5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQzMy5jLCBjb250cm9scy9pY29udGl0bGUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9yaWNoZWRpdC9ydGYuaCwgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vdGltZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCXdpbnVzZXIuaCBub3cgcmVxdWlyZXMgdGhhdCB3ZSBpbmNsdWRlIHdpbmJhc2UuaCBmaXJzdC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENyZWF0ZVdpbmRvd1N0YXRpb24uCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSAnZXh0ZXJuICJDIiB7IC4uLiB9JyBzdGF0ZW1lbnQuIEl0IGlzIG5vdCBzdXBwb3NlZCB0byBiZQoJdGhlcmUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIGEgbWlzcGxhY2VkICdleHRlcm4gIkMiIHsgLi4uIH0nIHN0YXRlbWVudC4KCgkqIGxpYnJhcnkvcG9ydC5jLCBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBiZXR0ZXIgc3VwcG9ydCBmb3IgVW5pY29kZToKCUFkZGVkIHN1cHBvcnQgZm9yIDE2LWJpdCB3Y2hhcl90CglBZGRlZCBzdXBwb3J0IGZvciByZXdyaXRpbmcgNC1ieXRlIFVuaWNvZGUgbGl0ZXJhbHMgdG8gMTZiaXQgVW5pY29kZQoKCSogZGxscy91c2VyL2V4dGljb24uYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIElNQUdFX1JFU09VUkNFX0RJUkVDVE9SWV9FTlRSWSBvbiBiaWctZW5kaWFuIG1hY2hpbmVzLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVN0dWIgZm9yIERsbERlYnVnT2JqZWN0UlBDSG9vay4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJTWlzYyBmaXhlcyBmb3IgUXVlcnlQYXRoT2ZSZWdUeXBlTGliLCBUTEJfUmVhZFR5cGVMaWIsCglJVHlwZUluZm9fZm5HZXRDb250YWluaW5nVHlwZUxpYi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURvIG5vdCBzZW5kIGEgV01fTk9USUZZRk9STUFUIHRvIGEgbm9uLWV4aXN0ZW50IG93bmVyLgoKCSogc2VydmVyL2F0b20uYywgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvYXN5bmMuYzoKCU1lcmdlZCB0aGUgZ2V0X3JlYWRfZmQgYW5kIGdldF93cml0ZV9mZCByZXF1ZXN0cy4KCgkqIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRElHRERfUEVFSyBmb3IgU3lzTW91c2VBOjpHZXREZXZpY2VEYXRhLgoKCSogaW5jbHVkZS90Y2hhci5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCV9zdHJ7ZGVjLGluY306IENhc3QgdGhlIHBhcmFtZXRlcnMgdG8gdGhlIHByb3BlciB0eXBlIGZpcnN0CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgX3RmaW5kZGF0YSoKCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgc29tZSBvZiB0aGUgU1RETUVUSE9EL1NUREFQSSB0byB3aW5udC5oLgoJTW92ZWQgdGhlIEVYVEVSTl9DIG1hY3JvIHRvIHdpbm50LmguCglBZGRlZCBhICcjaWZuZGVmIF9fV0lORV9fJyBhcm91bmQgdGhlIHJlbWFpbmluZyBtYWNyb3MuCgoJKiBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgc29tZSBvZiB0aGUgU0VDVVJJVFlfeHh4IHR5cGVzLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgU2V0VXNlck9iamVjdFNlY3VyaXR5LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBub3RpZnkgc3RydWN0dXJlcyBOTU1PVVNFLCBOTU9CSkVDVE5PVElGWSwgTk1LRVksIGFuZCBOTUNIQVIuCgoyMDAwLTEyLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbWMuYywgZGxscy9pbW0zMi9pbWVrbC5jLCBkbGxzL2ltbTMyL2ltZXduZC5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9pbW0zMi9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQga2V5Ym9hcmQgbGF5b3V0IGFuZCBjb250ZXh0ICAtIGZhciBmcm9tIGNvbXBsZXRlLgoKCSogbGlicmFyeS9wb3J0LmM6CglNb3J0ZW4gV2VsaW5kZXIgPHRlcnJhLXdpbmVAZGlrdS5kaz4KCShzdHJjYXNlY21wKTogQ29uZm9ybSB0byBBTlNJIHNwZWNzIGZvciB0b3VwcGVyLgoJKHN0cm5jYXNlY21wKTogRGl0dG8uICBBbHNvIGRvIG5vdCB1c2Ugc2lkZS1lZmZlY3RzIGluIG1hY3JvIGFyZ3MuCgkod2luZV9vcGVucHR5KTogUGx1ZyBkZXNjcmlwdG9yIGxlYWsuICBBbHdheXMgc2V0IGVycm5vIG9uIGZhaWx1cmUuCgkod2luZV9hbm9uX21tYXApOiBGaXggY29tbWVudCBsb2NhdGlvbi4KCgkqIG1pc2Mvb3B0aW9ucy5jOgoJTW9ydGVuIFdlbGluZGVyIDx0ZXJyYS13aW5lQGRpa3UuZGs+CgkocGFyc2Vfb3B0aW9ucyk6IEFsbG93IEdOVS1saWtlIG9wdGlvbiBhcmd1bWVudHMgbGlrZQoJIi0tZGVza3RvcD04MDB4NjAwIi4gIChOb3QgcGVyZmVjdCAtLSB3ZSBkb24ndCBhbGxvdyBzaG9ydGhhbmRzLikKCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgZHJhZyBmb3IgdmVydGljYWwgcmViYXJzIChkcmFnIHVwIGFuZCBkb3duKS4KCS0gQmV0dGVyIGFsZ29yaXRoaW1zIGZvciBpbnNlcnRpbmcgbmV3IGJhbmRzIC0gbWF0Y2hlcyBuYXRpdmUgdmVyc2lvbgoJICBjbG9zZXIuCgktIE1ha2UgZHJhd2luZyBvZiByZWJhciBhdHRlbXB0IHRvIG1hdGNoIG5hdGl2ZSBwaXhlbCBieSBwaXhlbCAobm90ZQoJICB0aGlzIGRvZXMgbm90IGZpeCB0aGUgZW1iZWRkZWQgY29udHJvbHMgaW4gZWFjaCBiYW5kIC0gdGhleSBzdGlsbCBhcmUKCSAgYXMgZ29vZCBvciBiYWQgYXMgYmVmb3JlLikKCS0gSW1wbGVtZW50IHNvbWUgb2YgdGhlIG5vdGlmaWNhdGlvbnMgKFJCTl9IRUlHSFRDSEFOR0UsIF9DSElMRFNJWkUsCgkgIF9ERUxFVElOR0JBTkQsIF9ERUxFVEVEQkFORCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglQYXNzIFdNX0NPTU1BTkQgYW5kIFdNX05PVElGWSB0byBwYXJlbnQgYXMgcmVjZWl2ZWQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQ2hhbmdlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhcyB0aGUgdXNlciBicm93c2VzIHRoZSBkaXJlY3RvcnkgdHJlZS4KCgkqIGRsbHMvY3J0ZGxsL2ZpbGUuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglDaGFuZ2VkIHR5cG8gdmFfbGlzdCB0byB2YWxpc3QuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQWxsb3cgZm9yIHRoZSBkaWFsb2cgZm9udCBzaXplIHRvIGJlIHNldCBkaXJlY3RseSBpbiBwaXhlbHMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJV01fR0VUTUlOTUFYSU5GTyB0cmFjayBtaW4gc2l6ZSBzaG91bGQgYmUgdXNlZCBpbiBTZXRXaW5kb3dQb3MgYWxzbwoJZm9yIDMyIGJpdHMgYXBwcy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFwcGluZyBmb3IgSUNNX1NFVFNUQVRFIChwdHIgaW4gbFBhcmFtMSB0byBwcml2YXRlIGRhdGEpLgoKMjAwMC0xMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgbWVtb3J5L2Vudmlyb24uYywgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvaW1tMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9vbGVjbGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGUgdXBkYXRlLgoJLSBUdXJuZWQgb24gLS1kb2N1bWVudGF0aW9uLWFyZ3VtZW50cyBieSBkZWZhdWx0LgoKCSogZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbG9jYWxlLmMsIGRsbHMvY3J0ZGxsL3NwYXduLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2NvbnNvbGUuYywgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gRml4IF9mdWxscGF0aCAmIHNwbGl0cGF0aCwgd2luYXBpX2NoZWNrIGZpeGVzCgktIEFkZCBjcHJpbnRmLGNzY2FuZixfZmdldHdjaGFyLF9mZ2V0d2MsX2ZwdXR3Y2hhcixfZnB1dHdjLAoJICBfd3RvaSAmIF93dG9sIChmd2QpLHNjYW5mLF90aW1lem9uZV9kbGwKCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgaW5jbHVkZS9pbnB1dC5oLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQXZvaWQgYSBjb3VwbGUgb2YgZGVwZW5kZW5jaWVzIG9uIGlucHV0LmMgaW50ZXJuYWwgdmFyaWFibGVzLgoKCSogZGxscy9jcnRkbGwvZmlsZS5jOgoJRml4ZWQgaW5maW5pdGUgbG9vcCBpbiBDUlRETExfX2ZjbG9zZWFsbC4KCgkqIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1ld25kLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9pbW0zMi9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgc29tZSBBUElzIGFuZCBJTUUgY2xhc3MgLSBmYXIgZnJvbSBjb21wbGV0ZS4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTlVMTCBiZWZvcmUgZG9pbmcgSXNFcXVhbEdVSUQoKS4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGxvYWRpbmcgb2YgMTYgYml0IE1DSSBkcml2ZXJzIChmb3IgY29tbWFuZCB0YWJsZXMpLgoJRml4ZWQgYWxpYXMgaGFuZGxpbmcgaW4gbWNpU2VuZFN0cmluZy4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBkb24ndCBpbml0aWFsaXplIHdpdGggcEZpcnN0TEREIGlmIHBGaXJzdExERCBpc24ndCBpbml0aWFsaXplZCB5ZXQgZWl0aGVyCgktIGNvcnJlY3RlZCBWY3BDbG9zZSAuc3BlYwoKMjAwMC0xMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBbGxvY2F0ZSBlbnRyeSBwb2ludHMgZHluYW1pY2FsbHkgdG8gYWxsb3cgZm9yIGEgbGFyZ2VyIG51bWJlciBvZgoJb3JkaW5hbHMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9pbW0zMi9pbW1kZGsuaCwgZGxscy9pbW0zMi9tYWluLmMsIGRsbHMvaW1tMzIvbWVtb3J5LmMsIGRsbHMvaW1tMzIvc3RyaW5nLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgc29tZSBEREsgQVBJcyAtIGZhciBmcm9tIGNvbXBsZXRlLgoKCSogTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgc3ltYm9saWMgbGluayB0byBvbGUvbGlidXVpZC5hLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBsaW5rIHdpdGggdXVpZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb2Rld2VhdmVycy5jb20+CglPbmx5IGNhcHR1cmUgbW91c2Ugd2hlbiBhbiBpdGVtIGlzIHNlbGVjdGVkLgoKCSogaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgc29tZSBtYWNyb3MgbGlrZSBOVUxMLCBGQUxTRSB0byB3aW5udC5oCglNb3ZlZCB0aGUgYW5vbnltb3VzIHN0cnVjdC91bmlvbnMgdG8gd2lubnQuaAoJTW92ZWQgY2FsbGluZyBjb252ZW50aW9uIG1hY3JvcyB0byB3aW5udC5oCglNb3ZlZCBzb21lIGJhc2ljIHR5cGVzIGxpa2UgQk9PTCwgSU5ULCBMT05HLCBldGMuIHRvIHdpbm50LmgKCU1vdmVkIEhBTkRMRSBhbmQgREVDTEFSRV9IQU5ETEUgdG8gd2lubnQuaAoJTW92ZWQgc3RydWN0dXJlIHBhY2tpbmcgbWFjcm9zIHRvIHdpbm50LmgKCgkqIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHNlcnZlci9zbmFwc2hvdC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU5lZWRzIHRvIGluY2x1ZGUgd2luZGVmLmguCgoJKiBpbmNsdWRlL29sZTIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBPbGVJc0N1cnJlbnRDbGlwYm9hcmQgYW5kIE9sZVNldENsaXBib2FyZC4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBwcm90b3R5cGUgb2YgR2V0Q2xhc3NGaWxlLgoKCSogd2luZG93cy93aW4uYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURvbid0IHJldHVybiBsYXN0IGFjdGl2ZSBwb3B1cCBpZiBpdCBpcyBwb2ludGluZyB0byBhIGRlbGV0ZWQgd2luZG93LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgbWlzYy9vcHRpb25zLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmVkIHVzYWdlIG1lc3NhZ2UuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmMsIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglDb252ZXJ0ZWQgZW51bV9rZXlfdmFsdWUgcmVxdWVzdCB0byB0aGUgbmV3IHJlcXVlc3QgbWVjaGFuaXNtLgoKCSogbWlzYy9jZHJvbS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3RhdHVzIG9mIENEUk9NX0FVRElPX0lOVkFMSUQgc2VlbXMgdG8gbWVhbiB0aGUgZGlzayBpcyBzdG9wcGVkLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIGRpZmZpY3VsdGllcyB3aXRoIHRoZSBmb250IG9uIHZlcnRpY2FsIHRhYnMuIEFsc28gcGx1Z2dlZCBhCglyZXNvdXJjZSBsZWFrLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb2Rld2VhdmVycy5jb20+CglNYXJrIHdpZHRoIGFzIHZhbGlkIHdoZW4gd2Ugc2VuZCBIRE5fRU5EVFJBQ0tBLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdndlcnMuY29tPgoJQ2hlY2sgdG8gc2VlIHdoZXRoZXIgYW55IGFuY2VzdG9yIHdpbmRvd3MgYXJlIGRyb3AgdGFyZ2V0cy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3BlbGxpbmcgZml4LgoKCSogaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIHRoZSB0eXBlIG9mIEZ1bmN0aW9uIHRvIFBEV09SRCBhcyBvbiBXaW5kb3dzLgoKCSogZGxscy9kcGxheXgvZHBsYXlzcC5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdGhlIGRlY2xzcGVjIHNwZWNpZmllci4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgbWlzYy9vcHRpb25zLmMsIG1pc2NlbXUvbWFpbi5jLCBtaXNjZW11L3dpbmUuc3BlYywgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBVbmljb2RlIGFwcGxpY2F0aW9ucyBpbiB3aW5lYnVpbGQuCglSZW1vdmVkIGN1aWV4ZV9ub19tYWluIGhhY2suCglBdm9pZCBzdGRjYWxsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbnNpZGUgZnVuY3Rpb25zIGJlY2F1c2Ugb2YgZ2NjIGJ1Zy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gcmVnaXN0cnkgbG9hZGluZyBzcGVlZCB1cCAocmVkdWNlZCBjbGllbnQgPC0+IHNlcnZlciBjb21tdW5pY2F0aW9uKQoJLSBtYWtlIHRoZSBjb2RlIGEgYml0IG1vcmUgdW5kZXJzdGFuZGFibGUKCjIwMDAtMTItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgImlnbm9yZSIgZGlyZWN0aXZlIGZvciBza2lwcGluZyBpbmRpdmlkdWFsIHN5bWJvbCByZXNvbHV0aW9uLgoKCSogZGxscy9jb21tZGxnL2NkbGdfUnUucmM6CglWYXNpbHkgSS4gVm9sY2hlbmtvIDxWYXNpbHkuVm9sY2hlbmtvQG1zdHUuZWR1LnJ1PgoJQWRkZWQgbW9yZSBSdXNzaWFuIHN1cHBvcnQuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0uc3BlYywgZGxscy93aW5ubHMvLmN2c2lnbm9yZSwgZGxscy93aW5ubHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubmxzL3dpbm5scy5jLCBkbGxzL3dpbm5scy93aW5ubHMuc3BlYywgZGxscy93aW5ubHMvd2lubmxzMzIuc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIHNwZWMgZmlsZSBmb3IgMTZiaXQgaW1tLgoJQWRkZWQgc3BlYyBmaWxlcyBmb3Igd2lubmxzIGFuZCB3aW5ubHMzMi4KCgkqIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaDoKCUFkZGVkIGlubGluZSBkZWZpbml0aW9uIGZvciBNYXBTTC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGFuIHVucXVvdGVkIHN0cmluZy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kcml2ZS5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJQWRkIHN0cmVycm9yKCkgdG8gdGhlICJDb3VsZCBub3Qgc3RhdCIgYW5kICJJbnZhbGlkIHBhdGgiIHN0YXJ0dXAKCWVycm9yIG1lc3NhZ2VzLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzoKCUNvbW1lbnRlZCBvdXQgbGFyZ2Ugc3RhY2sgaW5pdCBub3cgdGhhdCB0aHJlYWQgc3RhY2tzIGFyZSBhdCBsZWFzdCAxTWIuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgRGlyZWN0RHJhd0NyZWF0ZSBnZXRzIHBhc3NlZCBhIElEaXJlY3REcmF3ezIsNCw3fSBpbnRlcmZhY2UsIGdldAoJdGhpcyBpbnRlcmZhY2UgYW5kIGRvIG5vdCB1c2UgSURpcmVjdERyYXcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgbmFtZSBvZiBBUElzIGV4cG9ydGVkIGJ5IG9yZGluYWwuCgoJKiBkbGxzL2tlcm5lbC9ubHMvaHVuLm5sczoKCU5lbWV0aCBQZXRlciA8cWdlbnBldGVAZ29sZC51bmktbWlza29sYy5odT4KCVNvbWUgTkxTIHVwZGF0ZXMuCgoyMDAwLTEyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwgZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudCwgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vYnVpbGQuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocSwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLCBkb2N1bWVudGF0aW9uL2RlZmF1bHQuZHNsLCBkb2N1bWVudGF0aW9uL2RsbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaTE4bi5zZ21sLCBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL29sZS5zZ21sLCBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sLCBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sLCBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi90b29scy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWhxLmRzbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbDoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlLgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvbG9hZGVyLmMsIGxpYnJhcnkvcG9ydC5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglXb3JrIGFyb3VuZCBnbGliYyAyLjEueCBkbG9wZW4gYnVnIChhZ2FpbikuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfcHJpdmF0ZS5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGltcGxlbWVudGVkIHByb3BlciBMREQvTERJRCBoYW5kbGluZwoJLSBpbXBsZW1lbnQgQ3RsKkxkZCgpLCBDdGxbR1NdZXRMZGRQYXRoLCBHZW5JbnN0YWxsIChubyByZWFsIG9wZXJhdGlvbnMKCSAgeWV0LCBJIHdhbnQgaGVscCksIEluc3RhbGxIaW5mU2VjdGlvbgoJLSBTdHViYmVkIG91dCBEaUdldENsYXNzRGV2czE2IChuZWVkZWQgZm9yIGUuZy4gTW9ua2V5IElzbGFuZCAzIDspCgktIG1hbnkgbmV3IC5zcGVjIHN0dWJzCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVNIR2V0TWFsbG9jIG11c3QgdXNlIE1FTUNUWF9UQVNLLCBvdGhlcndpc2UgQ29HZXRNYWxsb2Mgd2lsbAoJYmFkbHkgZmFpbCB3aXRoIEVfSU5WQUxJREFSRyBpbiBjYXNlIG5hdGl2ZSBPTEUzMiBpcyB1c2VkLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tYXBpLmgsIGluY2x1ZGUvbWFwaWRlZnMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtYXBpLmggd2l0aCB0aGUgZGVmaW5pdGlvbnMgbmVlZGVkIGJ5IHRoZSBNRkMuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBfdWx0b3coKSBhbmQgZXhwb3J0IFtOdC9ad11RdWVyeVZvbHVtZUluZm9ybWF0aW9uRmlsZSgpLgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwYXRoIHJlc29sdXRpb24gZm9yIGEvYi5jIHNvdXJjZSBmaWxlcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCUludmFsaWRhdGUgdGhlIGZvY3VzIHJlY3Qgd2hlbiBhIGxpc3Rib3ggaXMgcmVzaXplZC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3NlbGVjdG9ycy5oLCBtaXNjL2xzdHIuYywgbXNkb3MvZG9zYXNwaS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBvYmplY3RzL2dkaW9iai5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoJR290IHJpZCBvZiBsZHQuaC4KCgkqIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY3B1LmMsIG1zZG9zL3htcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCB3aW4zMi9kZXZpY2UuYzoKCVVzZSBnZXRwYWdlc2l6ZSgpIGluc3RlYWQgb2YgVklSVFVBTF9HZXRQYWdlU2l6ZSgpLgoKCSogd2luZG93cy93aW4uYywgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBtc2Rvcy9pbnQ1Yy5jLCBtc2Rvcy92eGQuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbWV0YWZpbGUuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYywgbWlzYy9lcnJvci5jLCBtc2Rvcy9kZXZpY2VzLmMsIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2luc3RyLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3N0cmluZy5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvZGlnaXRhbHYuaCwgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubnQuaCwgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3dzcHJpbnRmLmMsIGRsbHMvdmVyc2lvbi92ZXIxNi5jLCBkbGxzL3dpbjMycy93aW4zMnMxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVjbGkvb2xlY2xpLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvY29tYm8uYzoKCVJlcGxhY2VkIFBUUl9TRUdfVE9fTElOIG1hY3JvIGJ5IGV4cG9ydGVkIE1hcFNMIGZ1bmN0aW9uLgoJRml4ZWQgYSBmZXcgcHRyL3NlZ3B0ciBtaXNtYXRjaGVzLgoJTW92ZWQgQ09OVl9SRUNUL1BPSU5UIG1hY3JvcyB0byB3aW5nZGkxNi5oLgoKCSogZGVidWdnZXIvZGVidWcubCwgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHdpbmRvd3MvZHJpdmVyLmMsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNwbGl0IGRyaXZlciBmdW5jdGlvbnMgaW50byBVU0VSICgxNiBiaXQgcGFydCkgYW5kIFdJTk1NICgzMiBiaXQgcGFydCkuCglGaXhlZCBzb21lIGJ1Z3MgaW4gMTYgYml0IHBhcnQgYXMgd2VsbC4KCU5vdyBjb3JyZWN0bHkgcGFyc2luZyB0aGUgc3lzdGVtLmluaSBleHRyYSBwYXJhbWV0ZXJzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgY3J0ZGxsIGNvbXBpbGUgcHJvYmxlbSByZWdhcmRpbmcgZnBvc190IGluIGdsaWJjMi4yLgoKCSogZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NvbnNvbGUuYywgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9kaXIuYywgZGxscy9jcnRkbGwvZXhpdC5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL3NwYXduLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBJbXBsZW1lbnQgY29uc29sZSBJL08KCS0gU3VwcG9ydCB0ZW1wb3JhcnkgZmlsZXMsIGFkZCB0bXBmaWxlLCBybXRtcAoJLSBzcGF3biogZnVuY3Rpb25zOiBmaXggYXJncywgYWRkIGN3YWl0LCBzZWFyY2hlbnYKCgkqIHByb2dyYW1zL2Nsb2NrL21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBhIGNyYXNoIGluIHByb2dyYW0vY2xvY2suCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJRXJpYyBLb2hsIDxla29obEByei1vbmxpbmUuZGU+CglGaXhlZCBjcmFzaCBvZiBXaW5aaXAgOC4wIGR1ZSB0byBpbnZhbGlkIGltYWdlIGxpc3QgaGFuZGxlLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgTlVMTCBhcyBpbiBXaW4zMi4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmV0dXJuIHZhbHVlcyBmcm9tIERSVl9FTkFCTEUgc2hvdWxkIG5vdCBiZSBjaGVja2VkLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGb3JtYXRNZXNzYWdlQSB3YXNuJ3QgcHJvcGVybHkgaGFuZGxpbmcgdGhlICVscyBtb2RpZmllci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbnZhbGlkIGJ1dHRvbnMgYXJlICJoaWRkZW4iLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGFsbCB2YWx1ZXMgb2YgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEgaW50byBhbiBhcnJheSwgYWRkIHNvbWUKCW90aGVyIHJlZ2lzdHJ5IGxvY2F0aW9ucyBhbmQgaW1wcm92ZSB0aGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBDU0lETHMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCUNoYW5nZWQgRklMRURMRzk1X09uT3BlbiB0byAiZG91YmxlIHRlcm1pbmF0ZSIgdGhlIHJldHVybmVkIHN0cmluZyBpZgoJT0ZOX0FMTE9XTVVMVElTRUxFQ1QgaXMgc2V0LgoKMjAwMC0xMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJR290IHJpZCBvZiBtYWluLmguCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCVVzZSBfX0FTTV9HTE9CQUxfRlVOQyBkaXJlY3RseSBpbiBpMzg2LW9ubHkgY29kZS4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUNoYW5nZWQgTG9hZEltYWdlMTYgdG8gdGFrZSBhbiBMUENTVFIgaW5zdGVhZCBvZiBhIFNFR1BUUi4KCgkqIGluY2x1ZGUvZHJpdmUuaCwgaW5jbHVkZS93aW5iYXNlLmgsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MTcuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmYuYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy91c2VyL25ldHdvcmsuYywgZmlsZXMvZHJpdmUuYzoKCVVzZSB0aGUgRFJJVkVfKiBBUEkgY29uc3RhbnRzIGluc3RlYWQgb2YgdGhlIERSSVZFVFlQRSBlbnVtLgoJQ2hhbmdlZCBEUklWRV9DQU5OT1RERVRFUk1JTkUgYW5kIERSSVZFX0RPRVNOT1RFWElTVCB0byB1c2UgdGhlCgljb3JyZWN0IG5hbWVzLgoJQ2xlYW5lZCB1cCBhIGZldyBkZXBlbmRlbmNpZXMgb24gaW50ZXJuYWwgZHJpdmUuYyBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGlucHV0Lmg6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgcHJlZmVyZW5jZXMgdG8gZGlucHV0IGRyaXZlcnMgKHNvIHdlIGNhbiBoYXZlIHR3byBqb3lzdGljawoJZHJpdmVycykuIEltcGxlbWVudGVkIGEgam95c3RpY2sgZHJpdmVyIGZvciB0aGUgTGludXggMi40CglkZXYvaW5wdXQvZXZlbnQgQVBJLgoKCSogaW5jbHVkZS93aW5ubHMuaCwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvbG9jYWxlLmMsIGRsbHMvY3J0ZGxsL3RpbWUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEltcGxlbWVudGVkIHNldGxvY2FsZSBwYXJzaW5nIGFuZCBMQ19UWVBFIGJlaGF2aW9yLgoJLSBJbXBsZW1lbnRlZCBpc2xlYWRieXRlLCBzbnByaW50Zi4KCS0gQWRkZWQgTkxTIElzVmFsaWRDb2RlUGFnZSBwcm90b3R5cGUsIG1pc2MgQ1JURExMIGZpeGVzLgoKCSogaW5jbHVkZS9zaGVsbGFwaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgcHJvdG90eXBlIGZvciBTSEFwcEJhck1lc3NhZ2UuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUZpeGVkIGluZGVudGF0aW9uIHByb2JsZW1zIHJlc3VsdGluZyBmcm9tIGF1dG9tYXRpYyByZW5hbWluZywgb3RoZXIKCWFlc3RoZXRpYyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglVc2UgRHJhd1RleHQgdG8gZGlzcGxheSB0ZXh0IGluIGhvcml6b250YWwgdGFicy4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCB0aGUgY29uZGl0aW9uIHNvIGl0IGFsc28gd29ya3MgaW4gY2FzZSB3aGVuIHNzY2FuZiByZXR1cm5zIEVPRi4KCjIwMDAtMTItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3VzZXIuYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvdmVyc2lvbi5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy92eGQuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIHdpbjMyL2ZpbGUuYywgZGxscy9jcnRkbGwvZXhpdC5jLCBkbGxzL2NydGRsbC9zcGF3bi5jLCBkbGxzL2NydGRsbC90aW1lLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jOgoJTW92ZWQgYWxsIFdpbmUgaW50ZXJuYWwgZGVmaW5pdGlvbnMgb3V0IG9mIHByb2Nlc3MuaC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU91dHB1dCB0aGUgZXhwb3J0cyB0YWJsZSBpbiBhc3NlbWJseSBjb2RlIHRvIG1ha2UgaXQgcG9zc2libGUgdG8KCWV4cG9ydCBDKysgbWFuZ2xlZCBuYW1lcy4KCgkqIGRsbHMvbnRkbGwvcnRsLmM6CglJbXBsZW1lbnRlZCBSdGxBY3F1aXJlUGViTG9jayBhbmQgUnRsUmVsZWFzZVBlYkxvY2suCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJSW1wbGVtZW50ZWQgRHJhd1RleHRXIGFzIFVuaWNvZGUgYW5kIERyYXdUZXh0QSBhcyBjYWxsIHRvIERyYXdUZXh0Vy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBDRl9VTklDT0RFVEVYVCBhcyBwcmltYXJ5IHRleHQgY2xpcGJvYXJkIGZvcm1hdC4KCVVzZSBbeDExZHJ2XS5UZXh0Q1AgZm9yIGludGVyY2hhbmdlIHdpdGggWC4KCjIwMDAtMTItMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCURlbm5pcyBCam9ya2x1bmQgPGRiQHppZ28uZGhzLm9yZz4KCVJlbW92ZSBvbGQgbGluayBiZWZvcmUgY3JlYXRpbmcgdGhlIG5ldyBvbmUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS9idXR0b24uaCwgaW5jbHVkZS9jb21iby5oLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9kaWFsb2cuaCwgaW5jbHVkZS9tZGkuaCwgaW5jbHVkZS9tZW51LmgsIGluY2x1ZGUvc2Nyb2xsLmgsIGluY2x1ZGUvc3RhdGljLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYywgTWFrZS5ydWxlcy5pbiwgY29udHJvbHMvTWFrZWZpbGUuaW4sIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmMsIGNvbnRyb2xzL3dpZGdldHMuYzoKCU1vdmVkIG1vc3QgYnVpbHRpbiBjb250cm9scyBzdHJ1Y3R1cmVzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBDIGZpbGUuCglDcmVhdGVkIG5ldyBjb250cm9scy5oIGZpbGUgcHJpdmF0ZSB0byB1c2VyMzIuZGxsIGFuZCBtb3ZlZCByZW1haW5pbmcKCWJ1aWx0aW4gY29udHJvbHMgZGVmaW5pdGlvbnMgdGhlcmUuCgoyMDAwLTEyLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL2VsZmRsbC5oLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIGVsZmRsbCBsb2FkZXIuCgoJKiB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3duYXNwaTMyLmgsIG1pc2MvbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIFJFQURNRToKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBSRUFETUUgdXBkYXRlCgktIGFkZCBvZmZzZXRzIHRvIEFTUEkgc3RydWN0IGRlZmluZXMKCS0gc3BlbGxpbmcKCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGZhaWwgb24gcG9pbnRlciBhZGRyZXNzIGNoZWNraW5nIHdoZW4gZm9yZWlnbiBoZWFwLgoKCSogaW5jbHVkZS9vbGVhdXRvLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgZHVwbGljYXRlIGRlZmluZXMuCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBNZXNzYWdlQm94KCkgdXNhZ2UuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IENEQiBhcmVhLgoKMjAwMC0xMi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgaGFuZGxlcnMgZm9yIHNvbWUgSU1FIG1lc3NhZ2VzIGluIERlZldpbmRvd1Byb2MuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaWxlb2tzdHJpbmcgbm90aWZpY2F0aW9uIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjdXN0b20gY2hpbGQgZGlhbG9nLAoJbm90IHRvIHRoZSBtYWluIGRpYWxvZy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEZS1zdHViIHNpbigpIGFuZCBjb3MoKS4KCUFkZCBub2ltcG9ydCBmbGFnIHRvIHNpbigpLCBjb3MoKSwgYW5kIHBvdygpLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3VzZXIuc3BlYywgaW5jbHVkZS9idXR0b24uaCwgaW5jbHVkZS9jbGFzcy5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL3dpZGdldHMuYzoKCVJlbW92ZWQgZGVwZW5kZW5jaWVzIG9uIHRoZSBpbnRlcm5hbHMgb2YgdGhlIENMQVNTIHN0cnVjdHVyZS4KCUFkZGVkIHN1cHBvcnQgZm9yIGhhdmluZyBib3RoIEFTQ0lJIGFuZCBVbmljb2RlIHdpbmRvdyBwcm9jZWR1cmVzIGZvcgoJYnVpbHRpbiBjbGFzc2VzLgoKCSogd2luZG93cy9kZWZkbGcuYywgd2luZG93cy93aW5wcm9jLmM6CglSZW1vdmVkIGNhbGxzIHRvIFdJREdFVFNfSXNDb250cm9sLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVW5jb21tZW50IEdPUEhFUl9BVFRSSUJVVEVfVFlQRSBhbmQgR29waGVyR2V0QXR0cmlidXRlLgoJQ3JlYXRlIEEvVyB2ZXJzaW9ucyBvZiBHT1BIRVJfQVRUUklCVVRFX1RZUEUgYW5kCglHT1BIRVJfQVRUUklCVVRFX0VOVU1FUkFUT1IuCgoJKiBpbmNsdWRlL3dpbnNvY2suaCwgdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgcHJvdG90eXBlIGZvciBjbG9zZXNvY2tldC4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBoYW5kbGluZyBvZiBEaWFsb2dCb3hJbmRpcmVjdFBhcmFtQSByZXR1cm4gdmFsdWUuCgoyMDAwLTEyLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBmaWxlcy9wcm9maWxlLmMsIFJFQURNRSwgd2luZS5pbmk6CglBZGRlZCBhdXRvbWF0aWMgdHJhbnNsYXRpb24gb2YgdGhlIGNvbmZpZyBmaWxlIHRvIHRoZSBuZXcKCWZvcm1hdC4gVXBkYXRlZCBkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDoKCUFkZGVkIGRlZmluZSBmb3IgU19JU0xOSyBpZiBtaXNzaW5nLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEb24ndCBtYWtlIHRoZSBzcGVjIGZpbGUgY29uc3RydWN0b3JzIHN0YXRpYyBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0CglvcHRpbWl6ZWQgb3V0LgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS94MTFkcnYuaCwgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCURJQiBzZWN0aW9uIGltcHJvdmVtZW50czsgVXBkYXRlRElCU2VjdGlvbiBoYXMgYmVlbiByZXBsYWNlZCB3aXRoCglMb2NrRElCU2VjdGlvbiBhbmQgVW5sb2NrRElCU2VjdGlvbiwgZm9yIGltcHJvdmVkIHRocmVhZCBzYWZldHkuCglESUJfU3RhdHVzXyogaXMgbm93IGRyaXZlci1pbmRlcGVuZGVudCwgYW5kIHRoZXJlJ3MgYSBuZXcKCURJQl9TdGF0dXNfQXV4TW9kLiBCZXR0ZXIgaGFuZGxpbmcgb2YgRElCIHN1cmZhY2VzIHdpdGggbm9uc3RhbmRhcmQKCXBpdGNoLiBTbGlnaHQgb3B0aW1pemF0aW9uIG9mIERJQnNlY3Rpb24tPmRpc3BsYXkgQml0Qmx0LgoKCSogZGxscy9rZXJuZWwvbmxzL2hlYi5ubHMsIG1pc2Mvb3B0aW9ucy5jLCB0b29scy93cmMvdXRpbHMuYywgZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZCBiYXNpYyBOTFMgaW5mb3JtYXRpb24gbmVlZGVkIGZvciBIZWJyZXcuCgoJKiBkbGxzL2tlcm5lbC9ubHMvY3ltLm5sczoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVdlbHNoIG5lZWRzIGlzbzg4NTktMTQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgU2VuZE5vdGlmeU1lc3NhZ2UoKSBmb3IgV01fU1lOQ1BBSU5ULgoKCSogZGxscy9udGRsbC9udC5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglSZXR1cm4gYSBtYXhpbXVtIHJlZ2lzdHJ5IHNpemUgb2YgMzIgTUIgaW4gTnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUFkZGVkIHNhbXBsZSBjb25maWcgZmlsZSBpbiB0aGUgbmV3IGZvcm1hdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJU2V0IC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTIgZmxhZyBpZiBzdXBwb3J0ZWQgdG8gYXZvaWQgd2FzdGVmdWwKCXN0YWNrIGFsaWdubWVudHMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBwcmludHMgbGluZSBudW1iZXIgZm9yICd4LmRsbCBpbXBvcnRlZCBidXQgbm8gc3ltYm9scyB1c2VkJyB3YXJuaW5nLgoKCSogY29udHJvbHMvY29tYm8uYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZSBpbnRlcm5hbCBjb250cm9scyBvbiBXTV9XSU5ET1dQT1NDSEFOR0VELgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2V4dF9kZWJ1Z2dlci5jLCBNYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2V4dF9kZWJ1Z2dlci5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglCdWlsZCB0aGUgZGVidWdnZXIgYXMgYSAuc28uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgaW5jbHVkZS9kcGxheS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS91dWlkLmMsIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglDcmVhdGVkIGEgc21hbGwgc3RhdGljIGxpYnJhcnkgaW4gb2xlL2xpYnV1aWQuYSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUKCVVVSUQgZGVmaW5pdGlvbnMgKHdpdGggdGhlIGhlbHAgb2YgRnJhbmNvaXMgR291Z2V0KS4KCgkqIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgaWYxNjMyL01ha2VmaWxlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHNlcnZlci9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW46CglVc2UgbGlid2luZSBhbmQgbGlid2luZV91bmljb2RlIGRpcmVjdGx5IGZyb20gdGhlaXIgYnVpbGQgZGlyZWN0b3J5CglpbnN0ZWFkIG9mIHVzaW5nIHN5bWxpbmtzLgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvdHNfc2hhcGUuaCwgaW5jbHVkZS90c194Zjg2ZGdhLmgsIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHBtLmgsIGluY2x1ZGUvdHNfeHJlc291cmNlLmgsIGluY2x1ZGUvdHNfeHNobS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsIGluY2x1ZGUvdHNfeHZpZGVvLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExLy5jdnNpZ25vcmUsIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9sb2NraW5nLmMsIHRzeDExL3RzX3NoYXBlLmMsIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NmRnYTIuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jLCB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmMsIHRzeDExL3RzX3h2aWRlby5jLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglCdWlsZCB0c3gxMSBsYXllciBhcyBhIHNlcGFyYXRlIHNoYXJlZCBsaWJyYXJ5LgoKMjAwMC0xMi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBpZjE2MzIvYnVpbHRpbi5jLCBsaWJyYXJ5L2xvYWRlci5jLCBsb2FkZXIvZWxmLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBbHdheXMgcGFzcyBsb3dlci1jYXNlIGZpbGVuYW1lcyB0byB3aW5lX2RsbF9sb2FkKCkuCglDbGVhciBkbGVycm9yKCkgYmVmb3JlIGFuZCBhZnRlciBjYWxscyB0byBkbG9wZW4vZGxzeW0gdG8gd29yayBhcm91bmQKCWEgZ2xpYmMgYnVnICh0aGFua3MgdG8gSmFtZXMgQWJiYXRpZWxsbyBmb3IgdHJhY2tpbmcgdGhlIGJ1ZykuCgoJKiBkbGxzL2tlcm5lbC9ubHMvc3JiLm5scywgdG9vbHMvd3JjL3V0aWxzLmM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUZpeGVkIFNlcmJpYW4gbGFuZ3VhZ2UgY29kZSBwYWdlLgoKCSogY29udHJvbHMvY29tYm8uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIHByb2JsZW0gd2hlcmUgdGhlIHN0cmluZyBpbiBhIGNvbWJvIGJveCBmbGlja2VycyBpZiB5b3UKCXJhcGlkbHkgcmVzZXQgdGhlIGNvbnRlbnQgYW5kIHRoZW4gcmVwbGFjZSB0aGUgY29udGVudC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZSBmb3IgZm9yd2FyZHMuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfWmgucmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQ2hpbmVzZSByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL2ltbS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUNvbXBpbGUgZml4IGZvciBnY2MgMi43LjIuMy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSB0aGUgYXBwcm9yaWF0ZSBjb21tYW5kIGZvciBjb21iaW5pbmcgLm8gZmlsZXMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSBjb2RlIGR1cGxpY2F0aW9uLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRG9uJ3QgZm9yZ2V0IHRvIG1hcCB0aGUgbWVzc2FnZSBpbiBXSU5QUk9DX01hcE1zZzE2VG8zMlcoKS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGRsZXJyb3IoKSBjaGVjayB0byB1c2Ugc3Ryc3RyKCkuCgoJKiBkbGxzL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSBATElCRVhUQCBpbnN0ZWFkIG9mIC5zbyBmb3IgdGhlIGludGVyLWRsbHMgZGVwZW5kZW5jaWVzLgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCS0gb3ZlcndyaXRlIChyYXRoZXIgdGhhbiBhcHBlbmQpIHRoZSBvdXRwdXQgZmlsZSBpZiB3ZSBoYXZlIG5vIHNlcGFyYXRvcgoJLSBhdm9pZCBvdXRwdXQgaWYgdGhlcmUgaXMgbm90aGluZyB0byBkbwoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jOgoJS2VuIENvbGVtYW4gPGtlbl9jb2xlbWFuQGluYW1lLmNvbT4KCUFkZGVkIGEgZmlyc3QtY3V0IHZlcnNpb24gb2YgTWFwVmlydHVhbEtleUV4VygpIHRoYXQgaGFzIHRoZSBzYW1lCglmdW5jdGlvbmFsaXR5IChhbmQgbGltaXRhdGlvbnMpIGFzIHRoZSBBTlNJIHZlcnNpb24uCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJd2luZWluc3RhbGwgZGlkbid0IGNyZWF0ZSB0aGUgZGVmYXVsdCBuby13aW5kb3dzIGRpcmVjdG9yeSAvYwoJd2hlbiBqdXN0IHByZXNzaW5nIGVudGVyLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gY29ycmVjdCBudW1iZXIgb2YgY29sb3JtYXAgZW50cmllcyBsb29rZWQgYXQgaW4gR2V0RElCQ29sb3JUYWJsZS4KCS0gY29ycmVjdCBudW1iZXIgb2YgY29sb3JtYXAgZW50cmllcyBwcm9jZXNzZWQgaW4gU2V0RElCQ29sb3JUYWJsZS4KCgkqIGRsbHMva2VybmVsL25scy9ubGIubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxkLm5sczoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglTb21lcyBmaXhlcyBmb3IgRHV0Y2ggbG9jYWxlcy4KCgkqIGRsbHMvaW1tMzIvaW1tMzIuc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoKMjAwMC0xMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAwMTIwMi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0xMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9tYXBwaW5nLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSAqY3VycmVudCogc2VjdGlvbiwgbm90IG9ubHkgdGhlIGF0dHJpYnV0ZXMKCW9mIHRoZSAqZmlyc3QqIHNlY3Rpb24uLi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRml4ZWQgV0lOUFJPQ19HZXRQdHIoKSB0byBhbHdheXMgcGFzcyB0aGUgc3RhcnQgb2YgdGhlIGJsb2NrIHRvCglIZWFwVmFsaWRhdGUoKS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglEaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgaWYgbG9hZGluZyBhIFdpbmVsaWIgYXBwIGZhaWxlZCAoc3VnZ2VzdGVkIGJ5CglGcmFuY29pcyBHb3VnZXQpLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2UgdGhlIERVTU1ZVU5JT05OQU1FIG1hY3JvcyBzbyB0aGF0IHRoZSBoZWFkZXJzIGNhbiBiZSB1c2VkIGluCglXaW5lbGliLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBBU0NJSS1vbmx5IHZlcnNpb24gb2YgdG91cHBlciwgdG9sb3dlciwgc3RyY2FzZWNtcCBhbmQgdGhlIGxpa2UKCWZvciBmaWxlIGFuZCBtb2R1bGUgSS9PLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglVc2UgaW9jdGxzb2NrZXQoKSBpbnN0ZWFkIG9mIGlvY3RsKCkgc28gdGhhdCB3ZSBjYW4gaW1wb3J0IHdzMl8zMi5kbGwKCWFnYWluICh1bnRlc3RlZCkuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9udGRsbC9taXNjLmMsIGxvYWRlci9yZXNvdXJjZS5jLCB3aW4zMi9jb25zb2xlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkL21vZGlmaWVkIGRvY3VtZW50YXRpb24gZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2tlcm5lbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5zb2NrLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dwcm9jcy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmlsZU9wZW5EbGdQcm9jOTU6IG5vdGlmeSBhcHBsaWNhdGlvbiBvZiBjaGFuZ2VkIHNlbGVjdGlvbiBhZnRlcgoJZmlsbGluZyB0ZW1wbGF0ZS4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBtaXNjL2Nkcm9tLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z3Mgd2hlbiB0cmF5IHdhcyBvcGVuLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc2V2ZXJhbCBhZGRpdGlvbmFsIHRvL2Zyb20gdW5pY29kZSBtZXNzYWdlIG1hcHBpbmdzLgoKCSogcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBkbGxzL01ha2VkbGwucnVsZXMuaW46CglBbHdheXMgcHV0IHRoZSBkbGwgY29uc3RydWN0b3IgaW4gdGhlIC5pbml0IHNlY3Rpb24sIGFuZCBsaWtlIHRoZQoJLnNwZWMubyBmaWxlIGZpcnN0IHRvIGVuc3VyZSBjb3JyZWN0IGNhbGxpbmcgb3JkZXIgb2YgdGhlIGNvbnN0cnVjdG9ycy4KCgkqIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDE1LmMsIG9iamVjdHMvYnJ1c2guYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBtaXNjZWxsYW5lb3VzIHR5cG9zLCBzeW50YWN0aWMgYW5kIGdyYW1tYXRpY2FsIGVycm9ycy4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2lubmxzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIGNhc2Ugb2YgIldpbmVsaWIiLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgV2luZWxpYiBjYXNlLgoJVGhlIGxpbmtpbmcgYXNwZWN0cyBoYXZlIGJlZW4gc29sdmVkIGJ5IHRoZSBsYXN0IHdpbmVidWlsZCB1cGRhdGUgLT4KCXJlbW92ZWQgZnJvbSB0aGUgdG9kbyBsaXN0LgoJVGhlIGNvbmZpZ3VyZSBzY3JpcHQgaGFzIGJlZW4gdXBkYXRlZCAtPiByZW1vdmVkIGZyb20gdGhlIHRvZG8gbGlzdC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiB0aGVyZSBpcyBhIHNpbmdsZSB0YXJnZXQsIGl0IHNob3VsZCBhbHNvIGdldCB0aGUgJ3Byb2plY3Rfc2V0dGluZ3MKCXNvdXJjZXMnLgoJSWYgYSBzdWJkaXJlY3RvcnkgaXMgY2FsbGVkICdpbmNsdWRlJyB0aGVuIGFkZCBpdCB0byB0aGUgaW5jbHVkZSBwYXRoLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJSW5jbHVkZSBjb25maWcuaC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNldmVyYWwgY2xpcGJvYXJkIGZvcm1hdHMuCgoJKiBNYWtlLnJ1bGVzLmluOgoJRGVubmlzIEJq9nJrbHVuZCA8ZGJAemlnby5kaHMub3JnPgoJQ29tcGlsZSBmaXggZm9yIGJ1aWxkaW5nIHdpbmUgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW50ZXJuZXRDbG9zZUhhbmRsZSBkaWRuJ3QgcmV0dXJuIFRSVUUgaW4gYWxsIGFwcHJvcHJpYXRlIGNhc2VzLgoKCSogd2luMzIvZGV2aWNlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgLS13aW52ZXIgbnQ0MCBoaW50IHRvIFZ4RCBlcnJvciBtZXNzYWdlLgoKCSogZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CgktIFRha2UgdGhlIG1vdXNlIGNhcHR1cmUgb24gYSBXTV9OQ1JCVVRUT05ET1dOIG9uIHRoZSBjYXB0aW9uIGJhciwKCSAgcmVsZWFzZSBpdCBvbiBhIFdNX1JCVVRUT05VUAoJLSBEb24ndCBzZW5kIFdNX0NPTlRFWFRNRU5VIG9uIGEgV01fTkNSQlVUVE9OVVAKCS0gVXNlIHBhcmVudC1yZWxhdGl2ZSBjb29yZGluYXRlcyB3aGVuIGNhbGxpbmcgTkNfSGFuZGxlTkNIaXRUZXN0CgoyMDAwLTEyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy90ZXh0LmMsIG9sZS9vbGUybmxzLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3N5c3RlbS5jLCBtc2Rvcy9pbnQxMC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZGMuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGZpbGVzL2RyaXZlLmMsIGdyYXBoaWNzL2Rpc3BkaWIuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL2xzdHIuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2tlcm5lbC9jb21tLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkL21vZGlmaWVkIGRvY3VtZW50YXRpb24gZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIFdpbjE2IGRvY3VtZW50YXRpb24gbm90IGZpeGVkIGJlY2F1c2Ugb2YgYSBidWcgaW4gd2luYXBpX2NoZWNrLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy93aW5pbmV0L2Z0cC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZ2RpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2NvbXBvYmouYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEZpeGVkIGEgYnVnIGNvbmNlcm5pbmcgV2luMTYgZG9jdW1lbnRhdGlvbi4KCS0gRml4ZWQgc29tZSBidWdzIGNvbmNlcm5pbmcgYXJndW1lbnQgZG9jdW1lbnRhdGlvbgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmgsIHRvb2xzL2ZudDJiZGYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zcHkuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgaWYxNjMyL3RodW5rLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL3ZlcnNpb24uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy92eGQuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NydGRsbC90aW1lLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvbW91c2UuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkZWJ1Z2dlci9tc2MuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL25lZXhlLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaDoKCU1vdmVkIHVzZWZ1bCBORSBmb3JtYXQgZGVmaW5pdGlvbnMgdG8gd2luYmFzZTE2LmguCgoJKiBpbmNsdWRlL3dpbm50LmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNb2RpZmllZCB3aW5lYnVpbGQgdG8gdXNlIHRoZSBfX0FTTV9GVU5DIG1hY3JvIGZvciBncmVhdGVyIHBvcnRhYmlsaXR5LgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50ZXJydXB0cy5jOgoJTW92ZWQgdGhlIGZldyByZW1haW5pbmcgZnVuY3Rpb25zIGluIHdwcm9jcy5kbGwgdG8ga2VybmVsLmRsbC4KCU5vIGxvbmdlciBsb2FkIHdwcm9jcy5kbGwgdW5jb25kaXRpb25hbGx5LgoJUmVzdG9yZWQgZGVmYXVsdCBpbnRlcnJ1cHQgaGFuZGxlciBiZWhhdmlvciAocmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jOgoJRmluaXNoZWQgc2VwYXJhdGlvbiBvZiBzaGVsbDMyIGFuZCB3c29jazMyLgoKCSogbGlicmFyeS9wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVN1cHBseSBkdW1teSBnZXRybGltaXQgaWYgYWJzZW50LgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNlZ3N0ciB0byBzdHIgcHJvdG8uCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci90eXBlcy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhbmVkIHVwIGludGVybmFsIHR5cGVzIGRlZmluaXRpb24uCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXByb3ZlZCBzdGFicyBsb2FkaW5nIChub3cgdXNpbmcgcmVjdXJzaXZlIHBhcnNpbmcsIHJlcXVpcmVkIGJ5IHN0YWJzCglnZW5lcmF0ZWQgYnkgbGF0ZXN0IGdjYyB2ZXJzaW9ucykuCgoJKiBkZWJ1Z2dlci9leHByLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdvcmsgYXJvdW5kIGZvciBkZXJlZiBpc3N1ZXMgKGxlYXN0IGltcGFjdCBzb2x1dGlvbiB0YWtlbiwgZXZlbiBpZiBpc3N1ZXMgcmVtYWluKS4KCgkqIGRsbHMva2VybmVsL25scy9jaHQubmxzLCBkbGxzL2tlcm5lbC9ubHMvY3plLm5scywgZGxscy9rZXJuZWwvbmxzL2Rhbi5ubHMsIGRsbHMva2VybmVsL25scy9maW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvdHJrLm5scywgZGxscy9rZXJuZWwvbmxzL3poaS5ubHM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQSBudW1iZXIgb2YgYWRkaXRpb25zIHRvIHRoZSBubHMgZmlsZXMuIEFsc28gb25lIGNvcnJlY3Rpb24sIHdlIGhhZAoJODk1IGZvciB0aGUgQ3plY2ggZGVmYXVsdCBjb2RlcGFnZSBidXQgYWNjb3JkaW5nIHRvIG1pY3Jvc29mdCBpdAoJc2hvdWxkIGJlIDg1Mi4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugd2luZWxhdW5jaGVyIHdvcmsgYmV0dGVyIGZvciBzb3VyY2UgdHJlZSBidWlsZHMuCglNYWtlIHdpbmVsYXVuY2hlciBkZXRlY3QgdGhlIGxhY2sgb2YgYSB+Ly53aW5lcmMgZmlsZSBhbmQgcHJvbXB0IHRoZQoJdXNlciBhYm91dCBpdC4KCVBhc3MgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgYSBiaXQgbW9yZSBncmFjaW91c2x5OyBpbXByb3ZlcwoJaW50ZXJhY3Rpb24gd2l0aCBnbWMgYW5kIGtmbS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB0aGUgS0RFIDIgYmV0YSBhbmQgZmluYWwgbWV0aG9kIG9mIHNwZWNpZnlpbmcgc3lzdHJheSB3aW5kb3dzLgoKMjAwMC0xMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCURvbid0IHVwZGF0ZSBzY3JvbGxiYXJzIHdoZW4gcHJvY2Vzc2luZyBXTV9ERVNUUk9ZLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglDaGVjayBmb3IgTlVMTCBoYW5kbGUgYmVmb3JlIGNhbGxpbmcgSGVhcFZhbGlkYXRlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUJyaW5nIHRoZSBtYW4gcGFnZSBpbiBsaW5lIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHdpbmVtYWtlci4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CgktIEluIGludGVyYWN0aXZlIG1vZGUsIGRvbid0IGlnbm9yZSBpbnZhbGlkIG9wdGlvbnMsIGFzayB0aGUgdXNlciBhZ2FpbgoJLSBVcHBlcmNhc2UgZXh0ZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCBhZnRlciBhbGwgKGhpbnQ6ICQoU1JDOi5jPS5vKSkKCS0gUGFzcyB0aGUgZ2xvYmFsIGRlZmluZXMgYW5kIGluY2x1ZGUgcGF0aCB0byBXUkMKCS0gQmFzZSB0aGUgY2xlYW51cCBvbiB0aGUgT0JKUyB2YXJpYWJsZSBzbyB0aGF0IGl0IHdvcmtzIGV2ZW4gaWYgdGhlCgkgIHNvdXJjZXMgYXJlIGluIGEgc3ViZGlyZWN0b3J5CgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggdGhlIGhhbmRsaW5nIG9mIHJlbGF0aXZlIGluY2x1ZGUvbGlicmFyeSBwYXRocwoJLSBJbiBpbnRlcmFjdGl2ZSBtb2RlLCBwcmludCAiLi8iIGZvciB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeSByYXRoZXIKCSAgdGhhbiBhbiBlbXB0eSBzdHJpbmcKCS0gV2UgZG9uJ3QgbmVlZCB0byBmb3JjZSBhIHNwYWNlIGJlZm9yZSBhc3NpZ25tZW50cwoJLSBBbGlnbiBUT1BTUkNESVIgJiBjbyBsaWtlIGFsbCB0aGUgb3RoZXIgYXNzaWduZW1lbnRzCgktIENvbXBpbGUgRGxscyBmaXJzdCAoZGVwZW5kZW5jaWVzIHdvdWxkIGRvIGl0IG1vcmUgb3IgbGVzcyBhbnl3YXkpCgktIFdvcmRpbmcgY2hhbmdlIGluIHRoZSB1c2FnZQoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgbWlzYy9yZWdpc3RyeS5jLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvZ2RpL01ha2VmaWxlLmluOgoJRmluaXNoZWQgc2VwYXJhdGlvbiBvZiBhZHZhcGkzMi4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcuc3BlYzoKCUZpbmlzaGVkIHNlcGFyYXRpb24gb2Ygb2xlMzIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnQgYmV0dGVyIHZlcnNpb24gb2YgRFBBX01lcmdlLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgbWlzc2luZyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPiB0byBnZXQgc3RydWN0IGluX2FkZHIgb24gYWxsIHBsYXRmb3Jtcy4KCgkqIG1lbW9yeS9oZWFwLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGNyYXNoIGluIFVuTWFwTFMgZm9yIHBvaW50ZXJzIG5vdCBiZWxvbmdpbmcgdG8gdGhlIHNlZ3B0ciBoZWFwLgoKCSogZGxscy93aW5tbS9tY2l3YXZlLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWlkaW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dhdmVtYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93aW5lb3NzLy5jdnNpZ25vcmUsIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsIGRsbHMvd293MzIvLmN2c2lnbm9yZSwgZGxscy93c29jazMyLy5jdnNpZ25vcmUsIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwgZGxscy93aW4zMnMvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsIGRsbHMvd2luaW5ldC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vam95c3RpY2svLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lhbmltLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpYXZpLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpY2RhLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpc2VxLy5jdnNpZ25vcmUsIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwgZGxscy9wc2FwaS8uY3ZzaWdub3JlLCBkbGxzL3Jhc2FwaTMyLy5jdnNpZ25vcmUsIGRsbHMvcmljaGVkaXQvLmN2c2lnbm9yZSwgZGxscy9ycGNydDQvLmN2c2lnbm9yZSwgZGxscy9zZXJpYWx1aS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZm9sZGVyLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS8uY3ZzaWdub3JlLCBkbGxzL3RhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3R0eWRydi8uY3ZzaWdub3JlLCBkbGxzL3VybG1vbi8uY3ZzaWdub3JlLCBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNuZXQzMi8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL29kYmMzMi8uY3ZzaWdub3JlLCBkbGxzL29sZTMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwgZGxscy9vbGVjbGkvLmN2c2lnbm9yZSwgZGxscy9vbGVkbGcvLmN2c2lnbm9yZSwgZGxscy9vbGVwcm8zMi8uY3ZzaWdub3JlLCBkbGxzL29sZXN2ci8uY3ZzaWdub3JlLCBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2RjaW1hbjMyLy5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQvLmN2c2lnbm9yZSwgZGxscy9kcGxheS8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC8uY3ZzaWdub3JlLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2ljbXAvLmN2c2lnbm9yZSwgZGxscy9pbWFnZWhscC8uY3ZzaWdub3JlLCBkbGxzL2ltbTMyLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMvbHpleHBhbmQvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnLy5jdnNpZ25vcmU6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJUmVtb3ZlIGxpYlhYWFguc28uMS4wIGxpbmVzIGZyb20gLmN2c2lnbm9yZSBmaWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglGaW5pc2hlZCBzZXBhcmF0aW9uIG9mIGNvbWNsdDMyIGFuZCBjb21kbGczMi4KCgkqIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYzoKCUZpeGVkIHByb2dtYW4gaW50ZXJuYWwgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBpdCBsaWtlIHRoZSBvdGhlcgoJcHJvZ3JhbXMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglFeHBvcnQgYSBmZXcgMTYtYml0IGZ1bmN0aW9ucyBuZWVkZWQgYnkgaGlnaGVyLWxldmVsIGRsbHMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCUV4cG9ydCB0aGUgd2luZSBzZXJ2ZXIgZnVuY3Rpb25zIGZyb20gbnRkbGwuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdG9vbGhlbHAuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBuZXcgb3B0aW9uIC0tZG9jdW1lbnRhdGlvbi1hcmd1bWVudHMKCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZQoKCSogZGxscy9yaWNoZWRpdC9jaGFybGlzdC5jLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3Vua253bi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgbXNkb3MvaW50MTEuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi9zdHVicy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb24ndCBpbmNsdWRlIHdpbmRvd3MuaCBpbnRlcm5hbGx5LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFsaWFzIGNhcGFiaWxpdHkgdG8gLS13aW52ZXIuCgl3aW4yMDAwIGlzIHRoZSBvZmZpY2lhbCB2YWx1ZS4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L2hlYXAuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluOgoJVXNlIHRoZSBIRUFQX1dJTkVfU0VHUFRSIGZsYWcgdG8gc3BlY2lmeSBhbGxvY2F0aW9ucyBvbiB0aGUgc2VncHRyIGhlYXAuCglBZGRlZCBhIGhhY2sgaW4gTWFwTFMgdG8gcmVjb2duaXplIHN1Y2ggYWxsb2NhdGlvbnMgYW5kIHVzZSB0aGUgaGVhcAoJc2VsZWN0b3IgaW4gdGhpcyBjYXNlLgoKCSogZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6CglSZW1vdmVkIGRlcGVuZGVuY2llcyBvbiBXaW5lIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWx3YXlzIGluaXRpYWxpemUgbXNnMTYgYW5kIHdwYXJhbTE2IGluIFdJTlBST0NfTWFwTXNnMzJXVG8xNi4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9sb2Fkb3JkZXIuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgcmVsYXkzMi9idWlsdGluMzIuYywgd2luZS5pbmk6CglSZW1vdmVkICJlbGZkbGwiIGxvYWQgb3JkZXIgb3B0aW9uIGFuZCB1cGRhdGVkIGRvY3VtZW50YXRpb24uCgoyMDAwLTExLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZGV2aWNlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCURvIG5vdCBpbmNsdWRlIHN5cy9wdHJhY2UuaCBhbmQgc3lzL3VzZXIuaCB1bmNvbmRpdGlvbmFsbHkuCglPdGhlciBwb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jOgoJQnJpYW4gVGVhZ3VlIDxidGVhZ3VlQHJpY2UuZWR1PgoJQWRkIGEgc3R1YiBmb3IgdGhlIENBUFMxIGNhcGFiaWxpdHkgaW4gR2V0RGV2aWNlQ2Fwcy4KCURlZmluZSB0aGUgQ0FQUzEgYml0IGZsYWdzIGluIHdpbmdkaS5oCglNYWtlIHZhcmlvdXMgY2FsbHMgdG8gR2V0RGV2aWNlQ2FwcyBpbiBETExTIHVzZSAjZGVmaW5lZCB2YWx1ZXMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy93aW5wcm9jLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvdXNlci9tb3VzZS5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1pc2Mvc3lzdGVtLmMsIG1zZG9zL2RwbWkuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCVJlbmFtZWQgQ2FsbFRvMTYqIGZ1bmN0aW9ucyB0byB3aW5lX2NhbGxfdG9fMTYqIGFuZCBleHBvcnQgdGhlbSBmcm9tCglrZXJuZWwzMi5zcGVjLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeGVkIHJldHVybmVkIGxlbmd0aCBvZiBmaWxlcy4KCgkqIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvc3RhYnMuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCURvIG5vdCB1c2UgYS5vdXQuaC4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci93bmV0LmMsIGRsbHMvd2lubW0vbWNpYW5pbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgaW5jbHVkZS93aW5nZGkuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUNsZWFuZWQgdXAgc29tZSBtb3JlIGRlcGVuZGVuY2llcyBvbiBXaW5lIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmMsIHNjaGVkdWxlci9jbGllbnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBsc3RhdCB0byBwb3J0LmMuCgoJKiB3aW4zMi9kZXZpY2UuYzoKCUtlZXMgU2Nob2VubWFrZXJzIDxrZWVzc0BtaWxsdHJvbmljcy5jb20+CglBZGRlZCBIQVNQIGRldmljZSBzdHViLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCB0aGUgc2l6ZSBvZiB0aGUgbGFyZ2VfaGFuZGxlcyBhcnJheS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suZHJ2LnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRml4ZWQgYSBmZXcgY29tcGlsYXRpb24gd2FybmluZ3MuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9zdGF0aWMuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJV01fU0VUVEVYVCBzaG91bGQgcmV0dXJuIFRSVUUgb24gc3VjY2Vzcy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVZpcnR1YWxRdWVyeSBzaG91bGQgcmV0dXJuIDAgZm9yIGFsbCBhZGRyZXNzZXMgPj0gMHhjMDAwMDAwMC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglPd25lcmRhdGEgbGlzdHZpZXdzIHdlcmUgbm90IGNsZWFyaW5nIHByZXZpb3VzbHkgc2VsZWN0ZWQgaXRlbXMgd2hlbiBhCgluZXcgaXRlbSBpcyBzZXQgYXMgc2VsZWN0ZWQgdXNpbmcgU2V0SXRlbSBhbmQgdGhlIGxpc3R2aWV3IGhhcwoJTFZJU19TSU5HTEVTRUwuCgoyMDAwLTExLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXZSB3ZXJlIHJldHVybmluZyBjaGFyYWN0ZXJzIGZvciB2YXJpb3VzIENUUkwgKyBTeW1ib2wga2V5c3Ryb2tlcwoJd2hpY2ggc2hvdWxkIG5vdCByZXR1cm4gY2hhcmFjdGVycy4KCgkqIG1pc2MvY3B1LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJbGludXgtMi40LjAtdGVzdDEwIG5vdyBjYWxscyAnZmxhZ3MnIGFzICdmZWF0dXJlcycuCgoJKiB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglTbGlnaHRseSByZWFycmFuZ2UgV0lOMTYvV0lOMzJBL1dJTjMyIHdpbmRvdyBjcmVhdGlvbi4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy93aWRnZXRzLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCU1hZGUgYnV0dG9uIGNvbnRyb2wgZnVsbHkgdW5pY29kZSBhd2FyZS4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGZpeCBjcmFzaCBpbiBTRVRVUFhfVHJhbnNsYXRlTERJRCgpCgktIGltcGxlbWVudCBjdXN0b20gTERJRCBsb29rdXAKCgkqIG1pc2MvY2Ryb20uYywgbWlzYy9jcHUuYywgbWlzYy92ZXJzaW9uLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9sZS9vbGUybmxzLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvaW5pdC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbnByb2MuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWVtb3J5L3N0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tcHIvd25ldC5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUdvdCByaWQgb2YgdGhlIFdpbmUgaW50ZXJuYWwgbHN0cmNweSogZnVuY3Rpb25zIGFuZCBvZiB3aW5lc3RyaW5nLmguCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglVcGRhdGVkIG1hbiBwYWdlLgoKCSogbWVtb3J5L2hlYXAuYywgaW5jbHVkZS9oZWFwLmg6CglNYWRlIEhFQVBfc3RyZHVwKiBmdW5jdGlvbnMgaW5saW5lICh0ZW1wb3JhcnkpLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIHdpbjMyL25ld2Zucy5jOgoJTW92ZWQgRW51bVBvcnRzQSB0byBkbGxzL3dpbnNwb29sLgoKMjAwMC0xMS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovKi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlcXVpcmUge0RFQ0xBUkUsREVGQVVMVH1fREVCVUdfQ0hBTk5FTCBzdGF0ZW1lbnRzIHRvIGVuZCBpbiBhIDsKCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJU2V0IGRlYnVnZ2luZyBvcHRpb24gYmFzZWQgb24gTk9fVFJBQ0VfTVNHUyBkZWZpbmUuIE9ubHkgb3V0cHV0IDMyLWJpdAoJcmVsYXkgc3R1YnMgaWYgZGVidWdnaW5nIGlzIG9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5udC5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVRlc3QgaWYgd2UgbmVlZCB0byBwdXQgdGhlIC50eXBlIGRpcmVjdGl2ZSBpbnNpZGUgYSAuZGVmIGRpcmVjdGl2ZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnVuY2F0ZSBkZXN0IGJsaXQgcmVjdGFuZ2xlIGRvd24gdG8gc3VyZmFjZSBzaXplLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV0FSTigpIGFib3V0IG1pc3NpbmcgL2Rldi9zZXF1ZW5jZXIsIGl0J3MgdG9vIGNvbmZ1c2luZyBmb3IgbmV3Ymllcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWxzbyBtZW50aW9uIHhwbS1kZXZlbCBpbiB0aGUgZXJyb3IgbXNnLgoKCSogbWlzYy9jcHUuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGQgRmxvYXRpbmdQb2ludFByb2Nlc3NvciBlbXB0eSBlbnRyeSB0byB0aGUgcmVnaXN0cnkuCgoJKiBjb250cm9scy9tZW51LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglXaGVuIHByb2Nlc3NpbmcgbW91c2UgbWVzc2FnZXMgaW4gTUVOVV9UcmFja01lbnUsIHVzZSB0aGUgY29vcmRpbmF0ZXMKCWluIGxQYXJhbSBpbnN0ZWFkIG9mIHRob3NlIGluIE1TRzo6cHQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCURpc3BsYXkgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHdoZW4gaW1wb3J0IGZhaWxlZC4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3VzZXIvbmV0d29yay5jLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLCBkbGxzL3dpbjMycy93MzJzeXMuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zeXNjb2xvci5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvbXByL3duZXQuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9zdGF0aWMuYzoKCUZpeGVkIGEgZmV3IGRlcGVuZGVuY2llcyBvbiAxNi1iaXQgb3IgaW50ZXJuYWwgZnVuY3Rpb25zLiBGaXhlZCBhIGZldwoJd2FybmluZ3MuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2lubW0vbW1pby5jOgoJRml4ZWQgU0VHUFRSX0dFVCB1c2FnZS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUFkZGVkIGVudHJ5IGZvciBQcml2YXRlRXh0cmFjdEljb25zQS4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL3Z4ZC5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglJbXBsZW1lbnRlZCBEb3NGaWxlSGFuZGxlVG9XaW4zMkhhbmRsZSwgV2luMzJIYW5kbGVUb0Rvc0ZpbGVIYW5kbGUgYW5kCglEaXNwb3NlTFozMkhhbmRsZSBhbmQgdXNlIHRoZW0gdG8gcmVwbGFjZSBmaWxlLmMgaW50ZXJuYWwgZnVuY3Rpb25zLgoJUmVuYW1lZCBXT1cqIGZ1bmN0aW9ucyBpbnRvIEszMldPVyouCgoJKiBkbGxzL2tlcm5lbC90b29saGVscC5zcGVjOgoJQWRkZWQgZW50cnkgZm9yIFRlcm1pbmF0ZUFwcDE2LgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3Mvd2luLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci91c2VyLnNwZWM6CglDaGFuZ2VkIEdldFByb2NBZGRyZXNzMTYgYW5kIDE2LWJpdCByZXNvdXJjZSBmdW5jdGlvbnMgdG8gdGFrZSBub3JtYWwKCXBvaW50ZXJzIGluc3RlYWQgb2YgU0VHUFRScy4KCVJlbW92ZWQgV0lOMTZfR2V0VGVtcERyaXZlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgbWlzYy9vcHRpb25zLmMsIG1pc2MvdmVyc2lvbi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBhZGRlZCB3aW52ZXIgc2V0dGluZ3MgbnQyaywgd2luMzAgYW5kIHdpbjIwICh5ZXMsIHNvbWUgcmFyZSBwcm9ncmFtcyBuZWVkIHRoaXMpCgkgIGFuZCAqZG9jdW1lbnQqIGl0ICh3aW45OCB3YXMgbm90IGRvY3VtZW50ZWQgcHJldmlvdXNseSkKCS0gT2FCdWlsZFZlcnNpb246IGFkZCB2YWx1ZSBmb3IgTlQ0IFNQNgoJLSBzcGVsbGluZyBmaXhlcwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGk6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBjb25maWd1cmUgdGVzdHMgZm9yIGZpbml0ZSgpL2ZwY2xhc3MoKSwgZml4ZXMgQlNEIGNvbXBpbGUKCS0gd2luYXBpX2NoZWNrIHVwZGF0ZXMsIGZpeCBlcnJubyBpbiBtb3JlIG1hdGggY2FsbHMKCgkqIHdpbjMyL2V4Y2VwdC5jLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIGxvYWRlci90YXNrLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFRlcm1pbmF0ZUFwcCBuZWVkZWQgZm9yIERCYXNlIDUuMC4KCU1hZGUgRmF0YWxBcHBFeGl0MTYgaG9ub3IgdGhlIFNFTV9OT0dQRkFVTFRFUlJPUkJPWCBlcnJvcl9tb2RlIGZsYWcuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUdlbmVyYWwgY2xlYW4gdXAgb2YgdGhlIGVkaXQgY29udHJvbDogcmVtb3ZlZCB0cmFuc2ZlciBvZiB1bnVzZWQKCXZhcmlhYmxlcywgZml4ZWQgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoZXMuCgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIGluaXQgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBtYWluLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglHbG9iYWxBbGxvYyBhcyBHbG9iYWxBbGxvYzE2IHNob3VsZCByb3VuZCBzaXplIHRvIDMyLgoJQ2FsbCBTZXRMYXN0RXJyb3IgaW4gR2xvYmFsTG9jay4KCjIwMDAtMTEtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbjMycy93aW4zMnMxNi5jLCBtZW1vcnkvc2VsZWN0b3IuYzoKCU1vdmVkIFVUU2VsZWN0b3JPZmZzZXRUb0xpbmVhciBhbmQgVVRMaW5lYXJUb1NlbGVjdG9yT2Zmc2V0IHRvCglkbGxzL3dpbjMycy4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oOgoJUmVtb3ZlZCBkZXBlbmRlbmN5IG9uIDE2LWJpdCBmaWxlIEkvTyBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvd3NwcmludGYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy93c3ByaW50Zi5jLCBtc2Rvcy9pbnQxMS5jLCBvbGUvb2xlMm5scy5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmM6CglNb3ZlZCB3c3ByaW50ZiBmdW5jdGlvbnMgdG8gZGxscy91c2VyLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZHJhdyBzY3JvbGxiYXJzIGlmIHRoZWlyIGNsaWVudCByZWN0YW5nbGUgaXMgZW1wdHkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlnbm9yZSBTT0xfU09DS0VUL1NPX0RFQlVHIHNldHNvY2tvcHQoKSBjYWxscy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBzdHJhbmdlIGNoZWNraiBmb3IgIWZpbGVuYW1lLCBzbyB3ZSBkb24ndCBnZXQgc2VjdGlvbiBOVUxMCglhY2Nlc3NlcyBsYXRlci4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVJlcGxhY2VkIHVfY2hhci91X3Nob3J0L3VfbG9uZyBieSBCWVRFL1dPUkQvRFdPUkQgZm9yIGluY3JlYXNlZCBwb3J0YWJpbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQ29ycmVjdGVkIGRlZmF1bHQgdmFsdWVzIHdpdGggaGVscCBmcm9tIFVscmljaCBDemVrYWxsYS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFkZGVkIGVudHJ5IHBvaW50IGZsYWdzIC1ub2ltcG9ydCwgLW5vcmVsYXksIC1yZXQ2NCBhbmQgLWkzODYuCglSZXBsYWNlZCAnYnl0ZScsICd3b3JkJyBhbmQgJ2xvbmcnIGJ5ICd2YXJpYWJsZScgYW5kIG1hZGUgaXQgd29yayBmb3IKCVdpbjMyIHRvby4KCU1hZGUgcGFyc2VyIG1vcmUgcm9idXN0IGFnYWluc3QgdHJ1bmNhdGVkIGZpbGVzLgoKCSogaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2VsZmRsbC5oLCB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmgsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNYWtlIHN1cmUgYWxsIGZpbGVzIHVzaW5nIGNvbmZpZy5oIGNvbnN0YW50cyBhY3R1YWxseSAjaW5jbHVkZSAiY29uZmlnLmgiCgoJKiBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvYXZpZmlsZS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9kY2ltYW4zMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRoZSBfX3dpbmVfY2FsbF9mcm9tXzE2XyBjYWxscyBpbiB0aGUgaW1wb3J0IHRhYmxlIHNob3VsZCB1c2UgYSB2YWxpZAoJc2VnbWVudCBmb3IgZGVyZWZlcmVuY2luZyB0aGVpciBwb2ludGVyICh1c2luZyBDUykuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbnNvY2suaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBjaGVja2luZyBmb3IgbmV0ZGIuaC4KCURvbid0IGluY2x1ZGUgYXJwYS9pbmV0LmggYW5kIHN5cy9zb2NrZXQuaCBpZiBzeXN0ZW0gZG9lc24ndCBoYXZlIHRoZXNlIGhlYWRlcnMuCgoJKiBpbmNsdWRlL3gxMWRydi5oLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRG8gbm90IGNvbXBpbGUgY29kZSB0aGF0IG1ha2VzIHVzZSBvZiB0aGUgWCBTaG0gZXh0ZW5zaW9uLgoKMjAwMC0xMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvd2lubnQuaDoKCU1vdmVkIEdFVF9JUCBvdXQgb2Ygd2lubnQuaC4KCgkqIHByb2dyYW1zL3Byb2dtYW4vQ2hhbmdlTG9nLCBwcm9ncmFtcy9wcm9nbWFuL1J1LnJjLCBwcm9ncmFtcy9wcm9nbWFuL2RpYWxvZy5jLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmM6CglWYXNpbHkgSS4gVm9sY2hlbmtvIDxGb29kVGVjaG5vbG9naXN0QHBpc2VtLm5ldD4KCUFkZGVkIFJ1c3NpYW4gbGFuZ3VhZ2Ugc3VwcG9ydC4KCUZpeGVkIGJ1ZyBvZiBmaWxlIGJyb3dzaW5nIG9wZXJhdGlvbiAoZmlsZXBhdGggbGVuZ3RoIGNvcnJlY3RlZCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvYmluMnJlcy5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgY2hlY2tpbmcgZm9yIG1tYXAuCgoJKiB0b29scy93cmMvdXRpbHMuYzoKCUFkZGVkIGEgZmV3IG1pc3NpbmcgbGFuZ3VhZ2VzLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjLCBkbGxzL2tlcm5lbC9ubHMvaGtnLm5scywgZGxscy9rZXJuZWwvbmxzL3ByYy5ubHMsIGRsbHMva2VybmVsL25scy9zZ3AubmxzOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglBZGRlZCBtaXNzaW5nIGxvY2FsZXMgdG8gbG9jYWxlX3JjLnJjLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNYWRlIFgxMURSVl9ESUJfR2V0SW1hZ2VCaXRzXzE2IGF3YXJlIG9mIDU2NSBESUJzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIHN1cHBvcnQgZm9yIGFyZ3VtZW50cyB3aXRoIHJlZmVyZW5jZWQgdHlwZXMKCS0gaW1wb3J0ZWQgdHlwZSBsaWJyYXJpZXMKCS0gZGlzcGludGVyZmFjZXMKCS0gZHVhbCBpbnRlcmZhY2VzCgktIHJlZiBjb3VudCBwcm9ibGVtcwoJLSBtZW1vcnkgbGVha3MgZml4ZWQKCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWdsaWJjMi4yIG5lZWRzIF9fVVNFX0lTT0M5OSBmb3IgRlBfTkFOIGFuZCBpc2Zpbml0ZSgpLgoKCSogd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3dpbmNvbi5oLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRml4ZWQgR2V0TGFyZ2VzdENvbnNvbGVXaW5kb3dTaXplIHJldHVybiB0eXBlIGZvciBXaW5lbGliIGFwcHMuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYzoKCUFkZGVkIGEgZmV3IGZvcndhcmRzLgoKCSogZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRml4ZWQgdHlwb3MuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgR2V0L1NldERJQkNvbG9yVGFibGUuCgoJKiBkbGxzL2tlcm5lbC9ubHMvbHRoLm5scywgZGxscy9rZXJuZWwvbmxzL2x2aS5ubHM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUNvbXBsZXRlZCBsdmkubmxzIGFuZCBsdGgubmxzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoZWNrIHdoZXRoZXIgc2VuZGVyUSBpcyBOVUxMIGJlZm9yZSB0cnlpbmcgdG8gbG9jayBpdC4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEZpeCBjdHlwZSgpLCBtYWtlIGlzKiBmdW5jdGlvbnMgYmluYXJ5IGNvbXBhdGlibGUKCS0gQWRkIDEzIGZ1bmN0aW9ucywgc2V0IGVycm5vIGluIG1hdGggY2FsbHMKCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgaWYxNjMyL3JlbGF5LmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NldHVwYXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9ycGMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlIHRoZSBzYW1lIGhlYWRlcnMgYXMgb24gV2luZG93cy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBpbmNsdWRlL2NvbXBvYmouaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cgljb21wb2JqLmggaXMgYSBzeW5vbnltIGZvciBvYmpiYXNlLmgKCU1vdmVkIGFsbCB0aGUgb3RoZXIgY29udGVudHMgdG8gZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaAoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbm90aWZpY2F0aW9uIGZvcm1hdCBoYW5kbGluZy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBXaW4xNiBiZWhhdmlvdXIgb2YgRERMX0RSSVZFUyBpbiBEbGdEaXJMaXN0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgVG9Vbmljb2RlIFRSQUNFIG1lc3NhZ2UuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEFkZCBtYXRoIGNhbGxzOiBzY2FsYiwgZnBjbGFzcywgbmV4dGFmdGVyLCBsb2diLCBfQ0kqCgktIEFkZCBmdXRpbWUsIHV0aW1lLCBwdXJlY2FsbCwgZ2V0cGlkCgoJKiBkbGxzL250ZGxsL21pc2MuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglOVERMTF9fQ0lwb3cgcmV0dXJucyBkb3VibGUsIG5vdCBMT05HLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gUmVhZCBhbGwgdGhlIGZyYWdtZW50cyBhdmFpbGFibGUsIG5vdCBvbmx5IG9uZSBmcmFnbWVudCBiZWZvcmUKCSAgZ29pbmcgYmFjayB0byBzbGVlcC4KCS0gVXNlIFNORENUTF9EU1BfU0VUVFJJR0dFUiBpb2N0bCBjb21tYW5kIHRvIHRyaWdnZXIgdGhlIHN0YXJ0IHRoZQoJICByZWNvcmRpbmcuIElmIHRoaXMgY29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UsIHJlYWQgNAoJICBieXRlcyBpbiB0aGUgc291bmQgZGV2aWNlIGluc3RlYWQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgbmF0aW9uYWwgY2hhcmFjdGVycyBhcyBhY2NlbGVyYXRvcnMgaW4gZGlhbG9ncy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgZ2VuZXJhdGUgdW5pY29kZSBDSEFSIG1lc3NhZ2VzLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jOgoJRml4ZWQgd2FybmluZ3MuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kcml2ZXIuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL29sZTMyL2lmcy5jLCBtc2Rvcy9kb3NtZW0uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWNzLgoKCSogaW5jbHVkZS93aW5lL3dpbmdkaTE2Lmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEdkaVNlZUdkaURvMTYuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgZG91YmxlIEFOWVNJWkVfQVJSQVkgZGVmaW5lLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gYXV0b2RldGVjdGVkIHRoZSBNRkMgd2VyZSBzdGlsbCBnZW5lcmF0aW5nIHdyYXBwZXJzLgoJRml4ZWQgaW5jb25zaXN0ZW5jaWVzIGluIHRoZSB1c2Ugb2YgJ25vJyBpbiB0aGUgb3B0aW9uIG5hbWVzLgoJVXBkYXRlZCB0aGUgTUZDIGxpbmstbGlzdCAoY29uZmlndXJlLmluKS4KCU1hZGUgdGhlIE1ha2VmaWxlLmluIGxheW91dCBtb3JlIHJlYWRhYmxlLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVcGRhdGUgY29tbWVudHMsIGNsZWFudXAgd2FybmluZyBtZXNzYWdlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTEuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2VydmVyL3RyYWNlLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJSW5jbHVkZSBjb25maWcuaCBpbiBmaWxlcyB0aGF0IHRlc3QgZm9yIGNvbnN0YW50cyBkZWZpbmVkIGluIGl0LgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUF2b2lkIHVzaW5nIFRJT0NNXyogY29uc3RhbnRzIGlmIG5vdCBhdmFpbGFibGUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglGaXhlZCB0eXBvIGluIG1hY3JvIElDT01fTUVUSE9EMTEgcGFyYW1ldGVyIGxpc3QuCgoJKiBkbGxzL2ltYWdlaGxwL21vZGlmeS5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBQRSBmaWxlIGNoZWNrc3VtIGNhbGN1bGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIGNhbGxzIHRvIGludGVybmFsIChub24tZXhwb3J0ZWQpIHdpbmUgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSB0dXJraXNoIGxvY2FsZS4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgZm9yIHplcm8tbGVuZ3RoIHN0cmluZyBzZWxlY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbmQgSEROX0lURU1DSEFOR0lORyBhbmQgSEROX0lURU1DSEFOR0VEIHdoZW4gcmVzaXppbmcuCgoJKiBvbGUvb2xlMm5scy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDb21wYXJlU3RyaW5nVyByZXR1cm5lZCB3cm9uZyByZXN1bHRzIHNvbWV0aW1lcy4KCgkqIG9sZS9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglXZSBubyBsb25nZXIgaGF2ZSBhbiBvbGUvbmxzIGRpcmVjdG9yeS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBvcmRpbmFsIHN0dWJzLCBpbXBsZW1lbnRlZCBTSERlbGV0ZVZhbHVlKiwgU0hTZXRWYWx1ZSouCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgU2VuZE5vdGlmeU1lc3NhZ2UoKS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNYWRlIHdpbmVpbnN0YWxsIGEgYml0IG1vcmUgdmVyYm9zZS4KCgkqIGRsbHMvZ2RpL3dpbmcuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXaW5HIHdhcyB3cml0dGVuIGZvciA4YnBwIERJQnMsIHNvIHNvbWUgYXBwcyBhc3N1bWUgdGhhdCwgc28gYWx3YXlzCglyZWNvbW1lbmQgOGJwcCwgcmVnYXJkbGVzcyBvZiB0aGUgYWN0dWFsIGRpc3BsYXkgZGVwdGguCgoJKiBncmFwaGljcy9wYWludGluZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRQaXhlbCBuZWVkcyB0byByZXR1cm4gQ0xSX0lOVkFMSUQgaWYgbm90IGluc2lkZSBjbGlwcGluZyByZWdpb24uCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBPTEUzMi5EbGxSZWdpc3RlclNlcnZlciBzdHViLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJvdXRlZCBhIGNvdXBsZSBvZiAxNi1iaXQgYXZpZmlsZS5kbGwgaGFuZGxlcnMgdG8gdGhlIDMyLWJpdAoJaGFuZGxlcnMuLi4gd2VsbCwgd29ya3MgZm9yIENpdmlsaXphdGlvbiBJSS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcG93KCkgZm9yd2FyZC4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QgdGVzdCAhSElXT1JEIHZhbHVlcyBmb3IgcG9pbnRlcm5lc3MuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUZpeGVkIGNvbXBpbGF0aW9uIHdhcm5pbmcgb24gQ3lnd2luLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU11bHRpQnl0ZVRvV2lkZUNoYXIoKSByZXR1cm5zIGNoYXJhY3RlcnMsIG5vdCBieXRlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgVlRfRU1QVFkgdG8gVlRfQlNUUiB0eXBlIGNvZXJjaW9uLgoKCSogaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwcm90b3R5cGVzIGZvciBPbGV7RyxTfWV0QXV0b0NvbnZlcnQsIExIYXNoVmFsT2ZOYW1lU3lzeyxBfS4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlICVscyBzYW1lIGFzICVzLgoKCSogZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIERDSU9wZW5Qcm92aWRlci4KCjIwMDAtMTEtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbjoKCUF2b2lkIGxpbmtpbmcgd2l0aCBudGRsbCB3aGVyZSBwb3NzaWJsZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9kaXIuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jOgoJUmVtb3ZlZCBjYWxscyB0byBXaW5lIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJUmVwbGFjZWQgSEVBUF9zdHJkdXAqIGFuZCBsc3RyY3B5bkF0b1cgY2FsbHMgYnkgZXhwb3J0ZWQgZnVuY3Rpb25zLgoKMjAwMC0xMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZ2Rpb2JqLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9zeXNsZXZlbC5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5zb2NrLmg6CglNb3ZlZCBzdGFuZGFyZCBzeXNsZXZlbCBBUElzIGRlY2xhcmF0aW9uIHRvIHdpbmJhc2UuaC4KCVVzZSBleHBvcnRlZCBzeXNsZXZlbCBmdW5jdGlvbiB3aGVyZXZlciBwb3NzaWJsZS4KCU1vdmVkIFNFR1BUUiBkZWNsYXJhdGlvbiB0byB3aW5kZWYxNi5oLgoKCSogaW5jbHVkZS93aW5wcm9jLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWFwcGluZyB0by9mcm9tIHVuaWNvZGUgZm9yIFdNX0NIQVIsIFdNX0RFQURDSEFSLCBXTV9TWVNDSEFSLAoJV01fU1lTREVBRENIQVIgbWVzc2FnZXMuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbGxvdyB0aGUgdXNlciB0byBzdGljayB0aGUgb3B0aW9uIGFuZCBpdHMgYXJndW1lbnQgdG9nZXRoZXIuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbWVtb3J5LmMsIGRsbHMvY3J0ZGxsL3N0cmluZy5jLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIENvbXBsZXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoZWFwIGZ1bmN0aW9ucwoJLSBGb3J3YXJkIGowLGoxLGpuLHkwLHkxLHluIG1hdGggY2FsbHMgdG8gbGliYwoJLSBBZGQgc3RybmV4dGMsIHBhc3MgdGV4dCBmbGFnIGluIGNyZWF0LCB3aW5hcGlfY2hlY2sgZml4ZXMKCgkqIGNvbnRyb2xzL3dpZGdldHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJUHJlcGFyZSBzd2l0Y2hpbmcgdG8gdW5pY29kZSBvZiBidWlsdGluIHdpZGdldHMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUluY3JlYXNlIG51bWJlciBvZiBwYXJhbWV0ZXJzIHBvc3NpYmxlIGZvciBJQ09NXyogbWFjcm9zIHRvIDExLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJU2tpcCBkaXJlY3RvcmllcyB3aGVuIGxvYWRpbmcgZGVidWcgc3ltYm9scy4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUltcHJvdmVkIGludGVybmFsIG1vZHVsZSBoYW5kbGluZyAobW9kdWxlIG5vdyBoYXZlIGEgc2l6ZSwgbWFwIG9mCglsb2FkZWQgbW9kdWxlIGlzIGNsZWFyZXIsIGJldHRlciBlcnJvciByZXBvcnRpbmcsIHNlcGVyYXRlZCBtb2R1bGUKCWxvYWRpbmcgY29kZSBmcm9tIHN5bWJvbCBleHRyYWN0aW9uKS4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZXMuCglFbGltaW5hdGUgdXNlIG9mIFVTRVIgaW50ZXJuYWwgc3RydWN0dXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBpbnRlcm5hbCB1bmljb2RlIHN0cmluZ3MuCglBZGRlZCB1bmljb2RlIG1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJTmV3IHVuaWNvZGUgc3VwcG9ydCBmdW5jdGlvbnMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJSW5jbHVkZSBjb25maWcuaC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTaW1wbGlmaWVkIHJlZyBoYW5kbGluZyBpbiBDb0dldENsYXNzT2JqZWN0LCBkbyBub3QgdXNlIFJlZ1F1ZXJ5VmFsdWVXLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWdTZXRWYWx1ZUV4MTYgbWlnaHQgZ2V0IHBhc3NlZCAwIGFzIGNvdW50IG9mIGRhdGFieXRlcywgZGV0ZXJtaW5lCglzdHJpbmcgbGVuZ3RoIGZvciBvdXJzZWx2ZXMgaW4gdGhpcyBjYXNlLgoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvdW5rbnduLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWF0Y2ggdGhlIFdpbmRvd3MgaGVhZGVyIGRlcGVuZGVuY2llcy4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNNX0FSUkFOR0UgaXMgQVJXX0hJREUsIGkuZS4gOAoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3Rpbmd1aXNoIGJldHdlZW4gSU1QT1JUUyBhbmQgTElCUkFSSUVTLgoJUmVuYW1lZCBMSUJSQVJJRVMgdG8gRExMUyB0byBhdm9pZCBjb25mdXNpb24gd2l0aCB0aGUgYWJvdmUsIHJlbmFtZWQKCVBST0dSQU1TIHRvIEVYRVMgdG8gbWF0Y2guCglBZGRlZCBhICctaScgb3B0aW9uIGZvciBpbXBvcnRpbmcgYSBXaW5lbGliIGxpYnJhcnkuICctbCcgaXMgc3RpbGwKCXRoZXJlIGJ1dCBpcyBvbmx5IHVzZWQgZm9yIGxpbmtpbmcgaW4gdGhlIFVuaXggc2Vuc2UuCglEaXNhYmxlZCB0aGUgJ3dyYXBwZXInIG9wdGlvbnMuIEl0IHdpbGwgYmUgcmVtb3ZlZCBhcyBhIHNlcGFyYXRlCglwYXRjaC4KCU5vIGxvbmdlciBsaW5rIHdpdGggYWxsIG9mIFdpbmUncyBsaWJyYXJpZXMuCglJbXBvcnQgdGhlIHNhbWUgZGVmYXVsdCBzZXQgb2YgZGxscyBhcyBWaXN1YWwgU3R1ZGlvLgoJQXZvaWQgZHVwbGljYXRlIGltcG9ydHMgd2hlbiBnZW5lcmF0aW5nIHRoZSAuc3BlYyBmaWxlLgoJVXBkYXRlZCB0aGUgd2F5IHdpbmVidWlsZCBpcyB1c2VkLgoJTGluayBhcHBsaWNhdGlvbnMgYXMgbGlicmFyaWVzIGFuZCBjcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHRvIHdpbmUuCglEZXRlY3Qgd2hlcmUgJ3dpbmUnIGlzIGxvY2F0ZWQgaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCglSZW1vdmVkIHVudXNlZC9ubyBsb25nZXIgdXNlZCB2YXJpYWJsZXM6IERMTEZMQUdTLCBYTElCLCBYX0RMTFMsCglYRklMRVMsIERMTFMgKGNvbmZpZ3VyZS5pbikKCVVwZGF0ZWQgTERTSEFSRUQgQU5EIExERExMRkxBR1MgZGV0ZWN0aW9uIChjb25maWd1cmUuaW4pLgoJUmVtb3ZlZCB0aGUgcnVsZXMgcGVydGFpbmluZyB0byBzcGVjIGZpbGVzIGZyb20gdGhlIE1ha2UucnVsZXMuCglVcGRhdGVkIHRoZSBjbGVhbiBjb21tYW5kIHRvIHJlbW92ZSB0aGUgc3ltYm9saWMgbGlua3MuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBycGNydDQgc3R1YnMuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgZGVza3RvcD1OIGluIHRoZSBbeDExZHJ2XSBzZWN0aW9uIG9mIC53aW5lcmMsIGluc3RlYWQgb2YKCWRlZmF1bHRpbmcgdG8gZGVza3RvcD02NDB4NDgwLgoKMjAwMC0xMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvaW5zdHIuYywgbWVtb3J5L2xkdC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvdnhkLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2dsb2JhbC5oLCBpbmNsdWRlL2xkdC5oLCBpbmNsdWRlL3NlbGVjdG9ycy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L2xkdC5jLCBsb2FkZXIvdGFzay5jOgoJTW92ZWQgTERUIGhhbmRsaW5nIHRvIGxpYndpbmUuc28uIENoYW5nZWQgdGhlIGludGVyZmFjZSB0byB1c2UgdGhlCglleHBvcnRlZCBMRFRfRU5UUlkgc3RydWN0dXJlLgoKMjAwMC0xMS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWM6CglUZW1wIGhhY2s6IGRvIG5vdCBpbXBvcnQgZGxscyB0aGF0IHdlIGxpbmsgd2l0aCBhdCB0aGUgRUxGIGxldmVsLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUZpeGVkIGNvcHkvcGFzdGUgdHlwbyBzcG90dGVkIGJ5IERpbWl0cmllIE8uIFBhdW4uCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IGRyYWdnaW5nIG9uIGdyaXBwZXIgdG8gZXhwYW5kIGFuZCBjb21wcmVzcyBiYW5kcy4gQWN0dWFsCgltb3ZpbmcgYmFuZHMgdG8gZGlmZmVyZW50IHJvd3Mgd2lsbCBiZSBsYXRlci4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CgktIGNyZWF0ZWQgc2VydmVyIG9iamVjdCBmb3IgaGFuZGxpbmcgYXN5bmMgaS9vCgktIGltcGxlbWVudGVkIFdhaXRDb21tRXZlbnQgd2l0aCB0aGUgRVZfUlhDSEFSIGZsYWcKCS0gaW1wbGVtZW50ZWQgR2V0T3ZlcmxhcHBlZFJlc3VsdAoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGh1bmsuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUV4cG9ydCB0aGUgQ2FsbEZyb20xNnh4eCBmdW5jdGlvbnMgZnJvbSBrZXJuZWwzMi4gUmVuYW1lZCB0aGVtCglfX3dpbmVfY2FsbF9mcm9tXzE2IHRvIGZvbGxvdyB0aGUgbmFtaW5nIGNvbnZlbnRpb24uCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEbyBub3Qgd2FybiBmb3IgdW51c2VkIGltcG9ydGVkIGRsbHMgd2hlbiBmb3J3YXJkcyB0byB0aGUgc2FtZSBkbGxzCglhcmUgcHJlc2VudC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURvbid0IGluY2x1ZGUgd2luZSBpbnRlcm5hbCBmdW5jdGlvbnMgaW4gdGhlIHJlbGF5IGRlYnVnZ2luZyB0YWJsZS4KCgkqIE1ha2UucnVsZXMuaW46CglEbyBhIHN0cmlwIC0tc3RyaXAtdW5uZWVkZWQgb24gdGhlIC50bXAubyBmaWxlIHRvIHJlZHVjZSBkaXNrIHVzYWdlLgoKCSogZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIG1lbW9yeS9nbG9iYWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jOgoJUmVwbGFjZWQgYSBmZXcgaW50ZXJuYWwgZnVuY3Rpb25zIGJ5IGV4cG9ydGVkIG9uZXMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVbml4OTggcHRocmVhZF9yd2xvY2sqIHN0dWJzIGZvciBnbGliYzIuMiBjb21wYXRpYmlsaXR5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNpbmNlIHdlIGNhbiBubyBsb25nZXIgYnVpbHQgLmEgZmlsZXM6CgktIHJlbW92ZSAtZGlzYWJsZS8tZW5hYmxlLWRsbCBvcHRpb24KCS0gZXJyb3IgYW5kIGFib3J0IGlmIG5vIHN1aXRhYmxlIHNoYXJlZCBsaWJyYXJ5IGxpbmtpbmcgaXMgcG9zc2libGUKCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgZGV0ZWN0aW9uIG9mIHRoZSBsaW5rIGZsYWdzIGZvciBOZXRCU0QvQ3lnd2luIChjb25maWd1cmUuaW4pCglBZGRlZCBBQ19QQVRIX0hFQURFUiBhbmQgQUNfUEFUSF9MSUJSQVJZCglCZXR0ZXIgaGVhZGVyL2xpYnJhcnkgZGV0ZWN0aW9uLiBOb3cgd29ya3MgaWYgdGhpbmdzIGFyZSBhbHJlYWR5IGluCgl0aGUgaW5jbHVkZS9saWJyYXJ5IHBhdGgKCUxvb2sgZm9yIHRoZSB3aW5lL01GQyBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgaW4gbW9yZSBwbGFjZXMgc28gdGhhdCBpdAoJd29ya3Mgb3V0IG9mIHRoZSBib3ggaWYgV2luZS9NRkMgaXMgaW5zdGFsbGVkIGluIGEgc3RhbmRhcmQgcGxhY2UKCShhbHRob3VnaCB0aGVyZSBpcyBub3QgcmVhbGx5IGEgc3RhbmRhcmQgcGxhY2UgeWV0IGZvciB0aGUgTUZDKQoJUmVuYW1lZCB0aGUgJy0td2l0aC14eHgnIG9wdGlvbnMgdG8gaGF2ZSBzaW1wbGVyIG1vcmUgbmF0dXJhbCBuYW1lcwoJUmVuYW1lZCB0aGUgY29ycmVzcG9uZGluZyAnV0lORUxJQl94eHgnIHZhcmlhYmxlcyB0byAnV0lORV94eHgnCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2hlbiBhIFdpbjE2IGFwcCBzZXRzIGEgc2VsZWN0b3IgYmFzZSB0byBsb3cgRE9TIG1lbW9yeSwgbWFrZSBzdXJlIGxvdwoJRE9TIG1lbW9yeSBpcyBtYXBwZWQgZmlyc3QuCgoJKiBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSB0aGUgdmlydHVhbCByZWFsLW1vZGUgaW50ZXJydXB0IHRhYmxlIGlmIGxvdyBET1MgbWVtb3J5IGlzbid0CgltYXBwZWQuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlb3JnYW5pemVkIERPUyBtZW1vcnkgcmVtYXBwaW5nIHNsaWdodGx5LCBzbyB0aGF0IHRoZSByZWFsLW1vZGUKCWludGVycnVwdCB0YWJsZSBjYW4gZXhpc3QgZXZlbiB3aGVuIGxvdyBET1MgbWVtb3J5IGlzbid0IG1hcHBlZCwKCWFuZCBpcyBjb3BpZWQgZG93biBhbG9uZyB3aXRoIHRoZSBCSU9TIGFyZWEgd2hlbmV2ZXIgaXQgaXMgbWFwcGVkLgoJQWRkZWQgRE9TTUVNX1N5c3RlbUJhc2UoKSB3aGljaCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmlydHVhbAoJcmVhbC1tb2RlIGludGVycnVwdCB0YWJsZSBhbmQgQklPUyBkYXRhIHNlZ21lbnQuCglBbGxvd2VkIERPU01FTV9Jbml0KFRSVUUpIHRvIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KCjIwMDAtMTEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBkbGxzL3dvdzMyL01ha2VmaWxlLmluLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW46CglTdGFydCB1c2luZyBpbXBvcnQgdGFibGVzIGZvciBkbGxzIHRoYXQgY2FuIGFscmVhZHkgc3VwcG9ydCBpdC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9vbGUzMi9jb21wb2JqLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBsb2FkZXIvdGFzay5jLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCVJhaXNlIGFuIGV4Y2VwdGlvbiBmb3IgdW5pbXBsZW1lbnRlZCAxNi1iaXQgZW50cnkgcG9pbnRzIHRvby4KCUFkZGVkIGNoZWNrIGZvciBkdXBsaWNhdGUgbmFtZXMgaW4gMTYtYml0IHNwZWMgZmlsZXMuCgoJKiB3aW4zMi9leGNlcHQuYywgd2luZWRlZmF1bHQucmVnOgoJVGhlIGRlYnVnZ2VyICJBdXRvIiByZWdpc3RyeSB2YWx1ZSBzaG91bGQgYmUgYSBzdHJpbmcuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCB3aW5lLmluaToKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdGhlIERlc2t0b3A9WFhYeFlZWSBzZXR0aW5nIGluIHRoZSBbeDExZHJ2XSBzZWN0aW9uIG9mIHRoZQoJY29uZmlnIGZpbGUuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSB1c2Ugb2YgV2luZG93cyBzdHJ1Y3R1cmUgZm9yIENPRkYgaW5mby4KCUZpeGVkIGEgZmV3IGlzc3VlcyBpbiBDT0ZGIGxvYWRpbmcuCglDbGVhbmVkIHVwIHRoZSBjb2RlLgoKCSogdG9vbHMvYzJtYW4ucGw6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciBBUElzIHRoYXQgZG9uJ3QgaGF2ZSBhbnkgb3JkaW5hbCAob3JkaW5hbD1AKS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglNYWRlIFdJTlNQT09MX0dldFByaW50ZXJEcml2ZXIgd29yayBhZ2Fpbi4KCjIwMDAtMTEtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25zb2xlL2dlbmVyaWMuYywgY29udHJvbHMvYnV0dG9uLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHRvb2xzL2JpbjJyZXMuYywgdG9vbHMvbWFrZWRlcC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93bWMvbGFuZy5jLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJR2V0IHJpZCBvZiBzb21lIHdhcm5pbmdzIGFib3V0IHVudXNlZCB2YXJpYWJsZXMsIHNpZ25lZC91bnNpZ25lZAoJY29tcGFyaXNvbnMgYW5kIGluY29tcGxldGUgaW5pdGlhbGl6YXRpb25zLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luZ2RpLmgsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18yODU5Mi5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk0LmMsIHVuaWNvZGUvY18yODU5OS5jLCB1bmljb2RlL2NfMjg2MDAuYywgdW5pY29kZS9jXzI4NjAzLmMsIHVuaWNvZGUvY18yODYwNC5jLCB1bmljb2RlL2NfMjg2MDUuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9jcHRhYmxlLmM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUFkZCBuZXcgZW5jb2RpbmdzIElTTyA4ODU5LTEwIChjcDI4NjAwKSwgODg1OS0xMyAoY3AyODYwMyksIDg4NTktMTQgKGNwMjg2MDQpLAoJODg1OS0xNSAoY3AyODYwNSkuIEFkZCBMaXRodWFuaWFuIChCYWx0aWMpIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBXTV9QQUlOVCBpbiBBTklNQVRFX1dpbmRvd1Byb2M7IGNhbGwgRGVmV2luZG93UHJvY0EgZm9yIGRlZmF1bHQgaGFuZGxpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYW5vdGhlciBkZXRlY3Rpb24gb2Ygc3RyZW5ndGgtcmVkdWNlIGJ1ZyBpbiBHQ0MuCgoyMDAwLTExLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvd2ludmVyLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLnNwZWMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluOgoJQnVpbGQgbW9zdCBwcm9ncmFtcyBhcyAuc28gZmlsZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJQWRkZWQgTWFrZXByb2cucnVsZXMuaW4gY29udGFpbmluZyBydWxlcyBmb3IgYnVpbGRpbmcgV2luZWxpYgoJcHJvZ3JhbXMuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZGVidWd0b29scy5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSB2YXJpYWJsZSBhcmd1bWVudCBtYWNyb3Mgd2hlbiBjb21waWxpbmcgd2l0aCBnY2MuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHdpbmVsYXVuY2hlciBzbWFydGVyIGFib3V0IGZpbmRpbmcgdGhlIFdpbmUgbGlicmFyaWVzIGFuZAoJYmluYXJpZXMuICBDaGFuZ2UgdGhlIGNvbG9yIHNjaGVtZS4gIEhhbmRsZSBsYXVuY2hlcyB3aXRoIG5vCglhcmd1bWVudHMsIGNvcnJlY3RseSBoYW5kbGUgaW52b2NhdGlvbiBhcyBhIG1pbWUtdHlwZSBoYW5kbGVyIGZyb20KCUtERS4KCgkqIG1lbW9yeS9oZWFwLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL3NxbGV4dC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCBsaWJyYXJ5L2xvYWRlci5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVc2UgRFVNTVl4eHhOQU1FIGZvciBhbm9ueW1vdXMgc3RydWN0L3VuaW9ucy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWlzc2luZyBwb2ludGVyIHR5cGVzOiBQeHh4IG9yIExQeHh4CglGaXhlZCB0aGUgZGVmaW5pdGlvbiBvZiBGT05URU5VTVBST0MKCUZpeGVkIHR5cG86IFRBX1JUTEVBRElORyBpcyBpbiBmYWN0IFRBX1JUTFJFQURJTkcgKHJpZ2h0IHRvIGxlZnQKCXJlYWRpbmcgSSBiZWxpZXZlKQoJQWRkZWQgbWlzc2luZyBkZWZpbml0aW9uczogUENfVFJBUEVaT0lECglVc2UgRFVNTVl4eHhOQU1FIGZvciBhbm9ueW1vdXMgc3RydWN0L3VuaW9ucyBpbiBERVZNT0RFCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIFNUTl94eHggbWFjcm9zLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglISUNPTiBhbmQgSENVUlNPUiBzaG91bGQgYmUgaW50ZXJjaGFuZ2VhYmxlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIExQVURBQ0NFTCBhbmQgSERGX1JUTFJFQURJTkcuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBpbmNsdWRlIHN0YXRlbWVudHMgb2Ygbm90LWZvdW5kIGZpbGVzIHRvIGxvd2VyIGNhc2UgYnkKCWRlZmF1bHQKCUFkZGVkIC0tbm8tbG93ZXItaW5jbHVkZSBvcHRpb24gdG8gb3ZlcnJpZGUgdGhlIGFib3ZlCglCZWF1dGlmaWVkIHRoZSBpbnRlcmFjdGl2ZSBtb2RlIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0byBmb2xsb3cKCUludGVyYWN0aXZlIG1vZGU6IHN1cHBvcnQgdGhlIC0tbWZjIGFuZCAtLXdyYXAgb3B0aW9ucyBmb3IgYm90aAoJcHJvamVjdHMgYW5kIHRhcmdldHMKCUZpeGVkIHRoZSBtZmMvd3JhcCBwcm9wYWdhdGlvbiBiZXR3ZWVuIHByb2plY3QgYW5kIHRhcmdldHMgKGdvZXMgYm90aAoJd2F5cykKCUF1dG9kZXRlY3QgTUZDIGJhc2VkIHByb2plY3RzIGJ5IGxvb2tpbmcgZm9yIGFuICdzdGRhZnguKGNwcHxoKScgZmlsZQoJRG9uJ3QgcHV0IHRoZSBzdGRhZnguY3BwIGZpbGUgaW4gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gY29tcGlsZSAoaXQncwoJanVzdCB0aGVyZSBmb3IgcHJlLWNvbXBpbGVkIGhlYWRlcnMsIHl1aykKCUZpeGVkIExEX0xJQlJBUllfUEFUSCB3aGVuIGxpbmtpbmcgYW4gYXBwbGljYXRpb24gd2l0aCBhIGxpYnJhcnkgZnJvbQoJdGhlIHNhbWUgbWFrZWZpbGUKCURvbid0IGZvcmdldCAnZXh0cmEnIHNvdXJjZXMgd2hlbiBsb29raW5nIGZvciBhIGZpbGUgZm9yIGNvbmZpZ3VyZS5pbgoJUmVuYW1lZCB0aGUgJy0tbm8tbWFrZWZpbGUnIG9wdGlvbiB0byAnLW5vLWdlbmVyYXRlZC1maWxlJwoKCSogZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvY3VtZW50IHRoZSAtLWxvd2VyLWluY2x1ZGUgb3B0aW9ucy4KCURvY3VtZW50IHRoZSAtLW5vLWdlbmVyYXRlZC1maWxlcyBvcHRpb25zLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogUmVwYWlyZWQgcmVsYXkgZGVidWdnaW5nLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJV2UgZG8gbm90IG5lZWQgdG8gc2V0IFNPVkVSU0lPTiBmb3IgZGxscy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvZXhwYW5kLnNwZWMsIGxpYnRlc3QvaGVsbG8uc3BlYywgbGlidGVzdC9oZWxsbzIuc3BlYywgbGlidGVzdC9oZWxsbzMuc3BlYywgbGlidGVzdC9oZWxsbzQuYywgbGlidGVzdC9oZWxsbzQuc3BlYywgbGlidGVzdC9oZWxsbzUuc3BlYywgbGlidGVzdC9uZXcuc3BlYywgbGlidGVzdC9yb2xleC5zcGVjLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgbGlidGVzdC92YXJ0ZXN0LnNwZWMsIGxpYnRlc3Qvdm9saW5mby5zcGVjOgoJQnVpbGQgdGVzdCBwcm9ncmFtcyBhcyAuc28gZmlsZXMuIEFkZGVkIG1pc3NpbmcgaW1wb3J0cy4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvbG9hZGVyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIGEgV2luZWxpYiBhcHAgbGlua2VkIGFzIGEgLnNvIGZyb20gdGhlIHdpbmUKCWxhdW5jaGVyLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgYXJndlswXS4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW46CglEb24ndCBsaW5rIGxpYndpbmVfdW5pY29kZSBpbnRvIGFsbCBkbGxzLgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuaCwgcHJvZ3JhbXMvY2xvY2svbGljZW5zZS5jLCBwcm9ncmFtcy9jbG9jay9saWNlbnNlLmgsIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuaCwgcHJvZ3JhbXMvbm90ZXBhZC9saWNlbnNlLmMsIHByb2dyYW1zL25vdGVwYWQvbGljZW5zZS5oLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJRml4ZWQgbGFuZ3VhZ2UgaGFuZGxpbmcuIFJlbW92ZWQgc29tZSBkZXBlbmRlbmNpZXMgb24gV2luZSBpbnRlcm5hbHMuCgoJKiB3aW5lLmluaTogQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBleHBsYW5hdGlvbiBmb3IgdGhlIGRpcmVjdG9yeSBzeW1saW5rIHN0dWZmLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUNvcnJlY3RlZCB1c2VkIHJlZ2lzdHJ5IGtleS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIG5Tb2NrZXRGRCB0byBJTlZBTElEX1NPQ0tFVC4KCjIwMDAtMTEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci91bmluc3RhbGxlci5zcGVjLCBwcm9ncmFtcy92aWV3L3ZpZXcuc3BlYywgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3dpbmVtaW5lL3dpbmVtaW5lLnNwZWMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLCBwcm9ncmFtcy93aW52ZXIvd2ludmVyLnNwZWMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYywgcHJvZ3JhbXMvY2xvY2svY2xvY2suc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLnNwZWMsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5zcGVjLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5zcGVjLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5zcGVjLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3Quc3BlYzoKCUFkZGVkIHNvbWUgbWlzc2luZyBpbXBvcnRzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFkZGVkIHN1cHBvcnQgaW4gd2luZWJ1aWxkIGZvciByZXNvbHZpbmcgZnVuY3Rpb24gaW1wb3J0cyAoLXN5bSBvcHRpb24pLgoJQWRkZWQgLUwgb3B0aW9uIGZvciBsb2NhdGluZyBpbXBvcnRlZCBkbGxzLgoJQ2hhbmdlZCBnZW5lcmF0ZWQgZXhlIGluaXQgY29kZSB0byB1c2UgX193aW5lX2dldF9tYWluX2FyZ3MuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIG1pc2Mvb3B0aW9ucy5jOgoJQWRkZWQgX193aW5lX2dldF9tYWluX2FyZ3MgdG8gcmV0cmlldmUgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBmb3IgdGhlCglhcHBsaWNhdGlvbi4KCgkqIGxvYWRlci9lbGZkbGwuYzoKCURvbid0IHN0cmlwIHRoZSBsaWJyYXJ5IGV4dGVuc2lvbiBpZiBpdCdzIG5vdCAiLmRsbCIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUZpeGVkIE5ldEJTRCBkbGwgY2hlY2suCglBZGRlZCBjaGVjayBmb3IgLUJzeW1ib2xpYy4KCUZpeGVkIExEU0hBUkVEIGRlZmluaXRpb24gdG8gc3VwcG9ydCB1bmRlZmluZWQgU09OQU1FLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhlYWRlciBjb250cm9sIGN1cnNvcnMgYW5kIGRyYWcgbGlzdCBhcnJvdyBpY29uLgoKCSogZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX0VuLnJjLCBkbGxzL3dpbmVwcy93cHNfUnUucmMsIGRsbHMvd2luZXBzL3dwc19Tay5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgUnVzc2lhbiByZXNvdXJjZXMgdG8gdGhlIFBvc3RzY3JpcHQgZHJpdmVyLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBhIGNvcHkgb2YgdGhlIGRpYWxvZyByZXNvdXJjZSBiZWZvcmUgY29ycmVjdGluZyBzdHlsZXMuCgoyMDAwLTExLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9sb2FkZXIuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCURvIGJ1aWx0aW4gbW9kdWxlcyBmaXh1cHMgaW4gbGlicmFyeS9sb2FkZXIuYyBiZWZvcmUgY2FsbGluZyB0aGUKCWxvYWRfZGxsIGNhbGxiYWNrLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYywgb2JqZWN0cy9wYWxldHRlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL2NvbW0uYzoKCUNoZWNrIGFsbCBDYWxsb3V0cyBmdW5jdGlvbiBwb2ludGVycyBmb3IgTlVMTCBiZWZvcmUgdXNpbmcgdGhlbS4KCURvbid0IGxvYWQgVVNFUiBkbGwgaWYgbm90IG5lZWRlZCBieSB0aGUgYXBwbGljYXRpb24uCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9leGl0LmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvbWVtb3J5LmMsIGRsbHMvY3J0ZGxsL3NwYXduLmMsIGRsbHMvY3J0ZGxsL3N0cmluZy5jLCBkbGxzL2NydGRsbC90aW1lLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbjoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEltcGxlbWVudGVkIDczIENSVCBmdW5jdGlvbnMKCS0gUmVpbXBsZW1lbnRlZCBmaWxlIEkvTyB1c2luZyBXaW4zMiBjYWxscwoJLSBTZXQgZXJybm8vZG9zZXJybm8gaW4gbW9zdCBjYWxscwoKCSogZGxscy93aW5pbmV0L2Z0cC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgbWlzc2luZyAjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPiBhbmQgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4uCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6CglBZGRlZCBtaWRkbGUgbW91c2UgYnV0dG9uIGhhbmRsaW5nLgoKCSogZGxscy91c2VyLy5jdnNpZ25vcmU6IFJlbW92ZWQgLnMgZmlsZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbWNhdC5oLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY2RjZS5oLCBpbmNsdWRlL3JwY2RjZXAuaCwgaW5jbHVkZS9ycGNuZHIuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCB0aGluZ3MgdG8gdGhlIHByb3BlciBycGN4eHguaCBoZWFkZXIuCglBZGRlZCBzb21lIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSB0aGUgTUZDLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IGluY2x1ZGUgd2luZGVmLmggYmVmb3JlIHd0eXBlcy5oIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIERNX1JFUE9TSVRJT04uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IGluY2x1ZGUgc3RkYXJnLmguCglBZGRlZCBhIGZldyBtaXNzaW5nIGV4Y2VwdGlvbiByZWxhdGVkIHR5cGVzLgoKCSogaW5jbHVkZS93aW5udC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG11c3QgaW5jbHVkZSBjdHlwZS5oIHNvIHRoYXQgYXBwbGljYXRpb25zIGdldCBpc2FsbnVtICYgY28uCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDQ19TT0xJRENPTE9SIGFuZCBDQ19BTllDT0xPUi4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvZGVidWcuYywgbGlicmFyeS9sb2FkZXIuYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU1vdmVkIGJ1aWx0aW4gZGxsIHJlZ2lzdHJhdGlvbiB0byBsaWJ3aW5lLgoJQ2hhbmdlZCBwcm9jZXNzIGluaXRpYWxpemF0aW9uIHRvIG5vdCBsb2FkIGltcG9ydGVkIGRsbHMgdG9vIGVhcmx5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFZLX1BSSU9SIGFuZCBWS19ORVhUIHByb2Nlc3NpbmcgKG1lcmdlZCBmcm9tIENvcmVsIHRyZWUpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUb1VuaWNvZGU6IGlnbm9yZSBDVFJMK251bWJlciBrZXlzdHJva2VzLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2Mvb3B0aW9ucy5jOgoJQWRkZWQgbmV3IGxpYnJhcnkuaCBoZWFkZXIgZm9yIGxpYndpbmUgZGVmaW5pdGlvbnMuCglBZGRlZCBnZXRwYWdlc2l6ZSgpIGFuZCB3aW5lX2Fub25fbW1hcCgpIHBvcnRhYmlsaXR5IGZ1bmN0aW9ucy4KCjIwMDAtMTEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJcHRocmVhZF9hdGZvcms6IGRvbid0IGNhbGwgY3JpdGljYWwgc2VjdGlvbiBmdW5jdGlvbnMgYmVmb3JlCglpbml0aWFsaXphdGlvbiBpcyBkb25lLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUZpeGVkIDAvLTEgbWl4dXAgZm9yIGluZGljYXRpbmcgbm8gbWFwcGluZyBoYW5kbGUuCgoJKiBjb250cm9scy91aXRvb2xzLmMsIGluY2x1ZGUvdGNoYXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgdHlwb3MgaW4gY29tbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRvb2xiYXIgY3VzdG9taXphdGlvbiBkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBuZXcgbWVzc2FnZXMuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJLSBUYWtlIE9NQVAgcmVjb3JkcyBpbnRvIGFjY291bnQgdG8gY29ycmVjdCBzeW1ib2wgYWRkcmVzc2VzLgoJLSBVbmRlcnN0YW5kIENvZGVWaWV3IGRhdGEgZW1iZWRkZWQgaW4gdGhlIFBFIGZpbGUgaXRzZWxmLgoJLSBVbmRlcnN0YW5kIE5CMTEgc2lnbmF0dXJlIENvZGVWaWV3IGRhdGEuCgktIE5vIG1vcmUgYm9ndXMgJ3RpbWVzdGFtcCBtaXNtYXRjaCcgZXJyb3JzLgoJLSBHZW5lcmFsIGNsZWFudXAgLyByZW1vdmFsIG9mIGR1cGxpY2F0ZSBjb2RlLgoKCSogaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIElNQUdFX0RFQlVHX01JU0MgZGVmaW5pdGlvbi4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbmQgdGhlIGxvY2FsIGlwIGFkZHJlc3Mgd2l0aCB0aGUgUE9SVCBjb21tYW5kIGFuZCBub3QgdGhhdCBvZiB0aGUKCXNlcnZlci4KCUZpeCBoYW5kbGluZyBvZiBtdWx0aS1saW5lIHJlc3BvbnNlcy4KCVJlYWQgYSByZXNwb25zZSBhZnRlciB0aGUgU1RPUiBjb21tYW5kLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRoZSBSZWRyYXdJdGVtcyBtZXNzYWdlIGZvciBhIGxpc3R2aWV3LgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU5ldyBwYXRoIGZvciBBRk0gZG9jdW1lbnRhdGlvbiBvbiB0aGUgbmV0LgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgaW5jbHVkZSBwYXRoIGhhbmRsaW5nIGluIGdldF9yZWFsX2luY2x1ZGVfbmFtZQoJTW9kaWZpZWQgZ2V0X3JlYWxfaW5jbHVkZV9uYW1lIHNvIHRoYXQgaXQgY2FuIGZvbGxvdyBhbiBpbmNsdWRlIHBhdGgKCXN0YXJ0aW5nIHdpdGggJChUT1BTUkNESVIpCglJbmRlbnQgdGhlIGRlYnVnIG1lc3NhZ2VzIGEgYml0IG1vcmUgc28gdGhhdCB3aW5lbWFrZXIncyBpcyBzdGlsbAoJcmVhZGFibGUgd2hlbiB0aGV5IGFyZSBvbgoJVGhlIEFUTF9JTkNMVURFX1JPT1QgdmFyaWFibGUgd2FzIHNldCB3cm9uZyAoY29uZmlndXJlLmluKQoJVGhlIE1GQyBpbmNsdWRlIHBhdGggbXVzdCBjb250YWluIHRoZSBwYXRoIHRvIHRoZSBBVEwgaGVhZGVycwoJKGNvbmZpZ3VyZS5pbikKCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBEcmF3Rm9jdXNSZWN0IHRvIGRyYXcgdGhlIGZvY3VzIHJlY3RhbmdsZS4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZm9ydGlmeSBBU1BJIC9wcm9jIGZpbGUgcGFyc2luZyAoU0NTSV9nZXRwcm9jZW50cnkoKSkgYWdhaW5zdAoJICBDRC1ST00gZHJpdmVzIHRoYXQgYXJlIGRvaW5nIG1hZCB0aGluZ3Mgd2l0aCBzcGFjZXMKCS0gYWRkIEVSUigpcyBpbiBjYXNlIG9mIHBhcnNpbmcgcHJvYmxlbXMKCgkqIGluY2x1ZGUvYml0bWFwcy93aW5lX3NtYWxsLnhwbToKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCAxNngxNiB3aW5lIGxvZ28uCgoyMDAwLTExLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5tbS5zcGVjOgoJUmVtb3ZlZCBTVUJESVJTIGluIHdpbm1tIE1ha2VmaWxlLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN0dWJzIGFuZCBzZXR1cGFwaS5oLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNCRU1fU0VUSVRFTVcgZG9uZSBieSBleGFtcGxlIGZyb20gU0VUSVRFTUEsIGNvbnZlcnRlZCBTRVRJVEVNQSB0byB1c2UKCWl0LgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmVtYWtlcidzIG1hbiBwYWdlIGluaXRpYWwgcmVsZWFzZS4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VkZXAuYywgdG9vbHMvd21jL01ha2VmaWxlLmluOgoJQmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBpbmNsdWRlIGZpbGUgaXMgbm90IGZvdW5kIGJ5IG1ha2VkZXAuCglBZGRlZCBzdXBwb3J0IGZvciAubWMgZXh0ZW5zaW9uLgoJRG8gbm90IHRyeSB0byBvcGVuICoudGFiLmggYW5kICoubWMucmMgaW5jbHVkZSBmaWxlcy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCUFkZGVkIG1pc3NpbmcgZGVwZW5kZW5jeSBmb3IgMTYtYml0IHJlc291cmNlIGZpbGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbC5yYywgZGxscy9rZXJuZWwvbWVzc2FnZXMvLmN2c2lnbm9yZToKCVVzZSAubWMucmMgZXh0ZW5zaW9uIGZvciByYyBmaWxlcyBnZW5lcmF0ZWQgYnkgdGhlIG1lc3NhZ2UgY29tcGlsZXIuCgoJKiBsb2FkZXIvZWxmLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCBFTEZfTG9hZExpYnJhcnlFeEEgYmFjayBpbnRvIGEgd29ya2luZyBzdGF0ZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglFbmFibGUgdGhlIGZ1bmN0aW9ucyBBZGRQcmludGVyVywgV0lOU1BPT0xfR2V0UHJpbnRlckRyaXZlciwKCUFkZFByaW50ZXJEcml2ZXJBLCBXSU5TUE9PTF9FbnVtUHJpbnRlckRyaXZlcnMgdG8gZGlzdGluZ3Vpc2ggdGhlCglyZWdpc3RyeSBlbnRyeXMgb2YgV2luOVs1OF0gYW5kIFdpbk5UIHByaW50ZXIgZHJpdmVycy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGFrZSBpbnRvIGFjY291bnQgdGhlIHN1bmtlbiBib3JkZXIgZm9yIFdpbjk4IGxvb2suCglMZWF2ZSBhIDEgcGl4ZWwgZ2FwIHRvIHRoZSBsZWZ0IG9mIG1lbnUgYml0bWFwIGl0ZW1zIGZvciBzeW1ldHJ5IChhbmQKCWJlY2F1c2UgV2luOXggZG9lcyBpdCkuCglMZWF2ZSBhIDEgcGl4ZWwgZ2FwIGFib3ZlIG1lbnUgYmFyIGl0ZW1zIGZvciBzeW1ldHJ5IChhbmQgYmVjYXVzZQoJV2luOXggZG9lcyBpdCkuCgoyMDAwLTExLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgaW5jbHVkZS9kaW5wdXQuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZW9yZ2FuaXplZCBESW5wdXQgRExMCgktIGFkZGVkIHN0dWJiaW5nIGZvciBESW5wdXQgN2EKCS0gJ2ZpeGVkJyB0aGUgbW91c2UgcHJvYmxlbSBpbiBGYWxsb3V0CgoJKiBkbGxzL29sZTMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uaCwgZGxscy9vbGUzMi9vbGUzMnJlcy5yYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIERuRCBjdXJzb3JzIGFzIG9sZTMyIHJlc291cmNlcy4KCgkqIGluY2x1ZGUvc3B5LmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3NweS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCB0aGUgYWJpbGl0eSB0byBzZWUgbmFtZXMgb2YgdGhlIHZpcnR1YWwga2V5IGNvZGVzLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB3aW5lbGF1bmNoZXIgc2hlbGwgc2NyaXB0IHdoaWNoIG1ha2VzIHRoZSBwcm9jZXNzIG9mIHJ1bm5pbmcKCVdpbmUgYSBsaXR0bGUgbmljZXIgZm9yIGFuIGVuZCB1c2VyLiAgVGhlIGludGVudCBvZiB3aW5lbGF1bmNoZXIgaXMgdG8KCWJlIHVzZWQgaW5zaWRlIG9mIGEgZGlzdHJpYnV0aW9uIHBhY2thZ2UuCgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyBzY3JpcHQgZm9yIHBvcnRpbmcgV2luZG93cyBzb3VyY2UgY29kZSB0byBXaW5lTGliLgoKCSogZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpYW5pbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXNlcS9tY2lzZXEuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuZHJ2LnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLmRydi5zcGVjLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suZHJ2LnNwZWMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvb2xlc3ZyMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL3BzYXBpL01ha2VmaWxlLmluLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9sejMyLnNwZWMsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglEZWNsYXJlIGRlYnVnIGNoYW5uZWxzIGluIGFsbCBkbGxzIHRoYXQgbmVlZCB0aGVtOyBhZGRlZCBpbXBvcnRzIG9mCgludGRsbCB3aGVyZSBuZWNlc3NhcnkuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS9tYWluLmgsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvZGVidWcuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9kZWJ1Z3N0ci5jLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2ZpbmRfZGVidWdfY2hhbm5lbHMsIHRvb2xzL21ha2VfZGVidWc6CglOZXcgZGVidWcgY2hhbm5lbCBtZWNoYW5pc20gYWxsb3dpbmcgZGVjZW50cmFsaXplZCBjaGFubmVsCglkZWNsYXJhdGlvbnMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGRlZCBkZWJ1Z19jaGFubmVscyBzdXBwb3J0LgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgZGxscy90dHlkcnYvZGMuYywgZGxscy93aW5lcHMvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvbWV0YWZpbGVkcnYuaCwgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJT3B0aW1pemVkIHsscH1Nb3ZlVG97LEV4fXssMTZ9LgoKCSogd2luZG93cy9kY2UuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHdlIGhhdmUgYW4gRVJSIHJhdGhlciB0aGFuIGEgV0FSTi4KCgkqIG1zZG9zL2Rvc21lbS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGRlZCBtaXNzaW5nICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRm9yd2FyZCBDQkVNX1NFVEVYU1RZTEUgdG8gQ0JFTV9TRVRFWFRFTkRFRFNUWUxFLCBwYXNzIFdNX1NFVFRFWFQgYW5kCglXTV9HRVRURVhUIGRvd24gdG8gY29tYm8gYm94LgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglDbGVhbnVwIFN5c3RlbVBhcmFtZXRlcnNJbmZvPDE2fEF8Vz4uCgoJKiBjb250cm9scy9tZW51LmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcmVzZXQgTUZfUE9QVVAgZmxhZyBpbiBTZXRNZW51KCkuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJRml4IHRlc3QgZm9yIHBlbmRpbmcgbWVzc2FnZSBpbiBRVUVVRV9SZWNlaXZlTWVzc2FnZSgpLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2RjLmgsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLCBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLCBkbGxzL3dpbmVwcy9jb2xvci5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy90ZXh0LmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3Mvd2luMTZkcnYvYnJ1c2guYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3Blbi5jLCBncmFwaGljcy93aW4xNmRydi90ZXh0LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi93bmQuYzoKCUFsbG9jYXRlIERDIG9iamVjdHMgb24gdGhlIHByb2Nlc3MgaGVhcCwgYW5kIHJlbW92ZWQgV0lOX0RDX0lORk8KCXN0cnVjdHVyZSAoYmFzZWQgb24gYSBwYXRjaCBieSBLZW4gQ29sZW1hbikuCgoyMDAwLTExLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJUmVtb3ZlZCBsZWZ0b3ZlciBkZWJ1ZyBvdXRwdXQuCgoJKiBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGZpeCBpbmYgZmlsZSBvcGVuL2Nsb3NlCgkgIC0gZG8gTk9UIHJldHVybiBoYW5kbGVzIGJhc2VkIG9uIGxpc3Qgb2Zmc2V0CgkgIC0gd2UgbWlnaHQgd2FudCB0byB1c2UgSEVBUF9zdHJkdXBBIGluc3RlYWQgb2YgYXNzaWduaW5nIHN0cmluZyBwb2ludGVycy4uLgoJLSBpbXBsZW1lbnQgKG1vcmUgb3IgbGVzcykgR2VuRm9ybVN0cldpdGhvdXRQbGFjZWhvbGRlcnMKCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglQcm90ZWN0IHRoZSBiYWNrc2xhc2hlcyB3ZSBtZWFuIHRvIGhhdmUgc2hvdyBmcm9tIGdyb2ZmLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIG9mZiBieSBvbmUgZXJyb3IgaW4gRFBBIGhhbmRsaW5nLCBhZGRlZCBzb21lIHdhcm5pbmdzLgoKCSogZmlsZXMvZmlsZS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSBkZWJ1Z2dpbmcgQVBJIGluc3RlYWQgb2Ygb3V0cHV0aW5nIHRvIHN0ZGVyciBkaXJlY3RseS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBkaXZpc2lvbiBieSB6ZXJvLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQYXNzIHVwIFdNX0RSQVdJVEVNIG1lc3NhZ2VzIHRvIHBhcmVudC4KCjIwMDAtMTEtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGluY2x1ZGUvYml0bWFwcy93aW5lLnhwbSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVzaGVsbGxpbmssIHdpbmUuaW5pOgoJQ3JlYXRlIEdub21lL0tERSBkZXNrdG9wIGFuZCBtZW51IGVudHJpZXMgZnJvbSBJU2hlbGxMaW5rCglpbnRlcmZhY2UuIEJhc2VkIG9uIHRoZSB3b3JrIG9mIEphbWVzIFRob21zb24gYW5kIER1c2FuIExhY2tvLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRyZWV2aWV3IGl0ZW0gc29ydGluZyBjb3VsZCBtZXNzIHVwIHRoZSB2aXNpYmxlT3JkZXIgb2YgdGhlIGl0ZW1zLgoKCSogd2luZG93cy93aW4uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmUgZm9jdXMgcmVjYWxjdWxhdGlvbiBvdXQgb2YgdGhlIHdpbmRvdyBkZXN0cm95IHJlY3Vyc2lvbgoJc28gd2UgZG8gbm90IHNlbmQgV01fU0VURk9DVVMgdG8gYWxyZWFkeSBkZXN0cm95ZWQgd2luZG93cy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGludmVydCAibWFnaWMiIGJpdG1hcCBtZW51IGl0ZW1zLgoKCSogdG9vbHMvZmluZF9kZWJ1Z19jaGFubmVsczoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBzdXJlIHRvIGNhcmVmdWxseSBxdW90ZSBmaWxlIG5hbWVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN3YXAgQ2FsY1Rvb2xiYXIgYW5kIHBhaW50IHJlY3RhbmdsZSBjb21wdXRhdGlvbiB0byB0aGUgY29ycmVjdCBvcmRlci4KCgkqIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCVBhdXNlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgd2hpbGUgZXhlY3V0aW5nIGEgY29uc29sZS1tb2RlIGFwcC4KCjIwMDAtMTEtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCUZpeGVkIFNlYXJjaFBhdGggdG8gaGFuZGxlIGEgJzsnLXNlcGFyYXRlZCBwYXRoIGFzIGZpcnN0IGFyZ3VtZW50LgoKCSogZGxscy9udGRsbC9udC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIE50UXVlcnlJbmZvcm1hdGlvblRva2VuKCkgdG8gZmlsbCBvdXQgYSB2YWxpZCBUT0tFTl9HUk9VUCB3aXRoCglhZG1pbiBwcml2aWxlZ2VzLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyYXdJY29uRXg6IHdoZW4gZmxhZ3M9MCB1c2UgZmxhZ3M9RElfTk9STUFMIGluc3RlYWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRXhwb3J0IFNIR2V0U2V0dGluZ3MgYnkgbmFtZS4gTmV3IHN0dWIgZm9yIHNoZWxsLjY4LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYXZlIEludGVybmV0IEV4cGxvcmVyIDMgc2hvdyBpdHMgdG9vbGJhcnMgYnkgcGFzc2luZyBSQl9HRVRCQU5ESU5GTwoJdG8gUkJfR0VUQkFORElORk9BLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglVc2UgR0RJU2VsZWN0UGFsZXR0ZTE2IGluc3RlYWQgb2YgU2VsZWN0UGFsZXR0ZSBhbmQKCUdESVJlYWxpemVQYWxldHRlMTYgaW5zdGVhZCBvZiBSZWFsaXplUGFsZXR0ZSBpbiBvcmRlciB0byBnZXQgcmlkIG9mCglwb3NzaWJsZSBkZWFkbG9ja3MuCgoJKiByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHdpbjMyL2NvbnNvbGUuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9rZXJuZWwvd2luODdlbS5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtaXNjL2NwdS5jLCBtaXNjL2Vycm9yLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvdmdhLmMsIG1zZG9zL3Z4ZC5jLCBvYmplY3RzL2RpYi5jLCBjb250cm9scy9lZGl0LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVmFyaW91cyB3YXJuaW5nIGZpeGVzLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBpbmNsdWRlL3BhdGguaDoKCU1hcmsgRHVmb3VyIDxtLmR1Zm91ckBzdHVkZW50LnR1ZGVsZnQubmw+CglNYWtlIHRoZSBmdW5jdGlvbnMgUGllLCBDaG9yZCwgUm91bmRSZWN0LCBBbmdsZUFyYywgUG9seURyYXcgYW5kCglFbGxpcHNlIHdvcmsgd2l0aCBhbiBvcGVuIHBhdGguCgoJKiBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgYml0bWFwIG1lbnUgaXRlbXMgbG9vayBsaWtlIGluIHdpbmRvd3Mgd2hlbiBzZWxlY3RlZCwKCWkuZS4gaW52ZXJ0ZWQgYW5kIGhpbGl0ZWQgKGluIFdpbjk4IGxvb2spLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoZWNrIGZvciBTQl9DVEwgYmVmb3JlIGRpc3BsYXlpbmcgYSBjYXJldC4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCURvIG5vdCB0cnVuY2F0ZSBoaWdoIHdvcmQgb2YgbWVzc2FnZSBpZC4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL3dpbmUvb2JqX3NlcnZpY2Vwcm92aWRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmV0dGVyIGhhbmRsaW5nIG9mIGN1c3RvbSB0ZW1wbGF0ZXMgYW5kIGhvb2tzLgoJQnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgY2FsbHMgb2YgVE9PTEJBUl9DYWxjVG9vbGJhcigpICh3aGljaCB3b3VsZCBiZQoJcmVjYWxjdWxhdGVkIGR1ZSB0byBJbnZhbGlkYXRlUmVjdCgpLT5XTV9QQUlOVCBhbnl3YXkpLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZSBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5pbmV0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJR2FicmllbCBHYXJjaWEgPEdhcmNpYUdAb3JpZ2VuZXMuY29tLmFyPgoJQWRkZWQgTGF0aW4gQW1lcmljYW4gbGF5b3V0LgoKCSogZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglTdHVicyBmb3IgVXJsTWtTZXRTZXNzaW9uT3B0aW9uLCBTSExXQVBJXzEzMiwgU0hHZXRJbnZlcnNlQ01BUC4KCVJlZGlyZWN0ZWQgZm9yd2FyZCBvZiBzaGx3YXBpLjU0IHRvIGdkaTMyLkNyZWF0ZUlDVy4KCjIwMDAtMTAtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2UgUFNfQUxURVJOQVRFIHJhdGhlciB0aGFuIFBTX0RPVC4KCVVzZSBSZWN0YW5nbGUgdG8gZHJhdyBmb2N1cyByZWN0YW5nbGVzLgoKCSogb2JqZWN0cy9wZW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbGxvdyBwZW5zIHdpdGggc3R5bGVzIGdyZWF0ZXIgdGhhbiBQU19JTlNJREVGUkFNRSB0byBiZSBjcmVhdGVkIHdpdGgKCUNyZWF0ZVBlbkluZGlyZWN0IGFuZCBFeHRDcmVhdGVQZW4uCgoJKiBncmFwaGljcy94MTFkcnYvcGVuLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBzaXplb2YgZm9yIG1haW50YWluYWJpbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJZ25vcmUgUkJCU19CUkVBSyBzdHlsZSBvbiBmaXJzdCBiYW5kLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgYSBmZXcgZGV2aWNlIGNhcHMgdmFsdWVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCV9udF9wYXJzZV9uaygpIHNob3VsZCBub3QgY2xvc2Uga2V5cyB0aGF0IGl0IGRvZXMgbm90IG9wZW4uCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTZXQgdGhlIHRoaWNrbmVzcyBvZiBzdG9jayBwZW5zIHRvIDAgc28gdGhhdCB0aGV5IGFyZSBub3Qgc2NhbGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGNhbmNlbHMgZWRpdGluZyBvZiBhIGxpc3R2aWV3IGxhYmVsIGlmIHRoZSBsaXN0dmlldyBpcwoJc2Nyb2xsZWQuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHRoZSB2YWx1ZSBvZiBzb21lIHN5c3RlbSBjb2xvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciBhdm9pZGluZyBzdWJ0cmFjdGlvbiBmcm9tIHVuc2lnbmVkIHplcm8uCgoJKiBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93cHNfU2sucmMsIGRsbHMvd2lubW0vd2lubW1fU2sucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjLCBkb2N1bWVudGF0aW9uL2kxOG4uc2dtbCwgcHJvZ3JhbXMvY2xvY2svU2sucmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsIHByb2dyYW1zL25vdGVwYWQvU2sucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9Tay5yYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL1NrLnJjLCBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU2sucmM6CglQZXRlciBJdmFueWkgPGl2YW55aUBpbnRlcm5ldC5zaz4KCUFkZGVkL3VwZ3JhZGVkIFNsb3ZhayBtZXNzYWdlcywgYW5kIFNsb3ZhayBhbmQgQ3plY2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUhpZGUgdGhlIGNhcmV0IG9ubHkgb24gdGhlIGZpcnN0IFdNX0tFWURPV04uCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIG1vdXNlIFVuQWNxdWlyZSB0byBOT1QgdW5hY3F1aXJlIGl0IG9uIG11bHRpcGxlIHVuYWNxdWlyZXMuCglJbXBsZW1lbnRlZCBESVBST1BfQVhJU01PREUgZm9yIFN5c01vdXNlQUltcGxfU2V0UHJvcGVydHkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVVuZGVyIHNvbWUgY29uZGl0aW9ucyBpdHMgbmVjZXNzYXJ5IHRvIGV4cGxpY2l0bHkgc2hvdyB0aGUKCXNjcm9sbGJhcnMuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEaXNwbGF5IGFuIEVSUiBvbiBlcnJvcnMgd2hpbGUgaW5pdGlhbGl6aW5nIFVTRVIuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJUmV0dXJuIFRJTUVfWk9ORV9JRF9TVEFOREFSRCBpbiBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGl0ZW1JRCA9IC0xIChzcGVjaWFsIGZvY3VzIHJlY3QgZHJhdykuCgoJKiBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBpbnN1ZmZpY2llbnQgcmVjdCB3aWR0aCB2YWx1ZSBpbiByZXNvdXJjZSBmaWxlLgoKCSogd2luMzIvY29uc29sZS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCU5lZWQgdG8gZ2V0IGFueSBvdXRzdGFuZGluZyBpbnB1dCBwcmlvciB0byByZXR1cm5pbmcgbnVtYmVyLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNvbWUgYnVnZml4ZXMsIGFub3RoZXIgZnVuY3Rpb24gZm9yIHBhY2thZ2luZywgYW5kIHNvbWUgdGV4dAoJcmVmb3JtYXR0aW5nIGZyb20gRXJpYyBNYXJ5bmlhay4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgb2Jzb2xldGUgVE9PTFNVQkRJUlMgZGVwZW5kZW5jeS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbWlzY2VtdS93aW5lLnNwZWMsIHByb2dyYW1zL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvbXNuZXQzMi5zcGVjOgoJQWRkZWQgaW1wb3J0IG9mIG50ZGxsLgoKCSogdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdW5pY29kZS9NYWtlZmlsZS5pbiwgLmN2c2lnbm9yZSwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBsaWJyYXJ5Ly5jdnNpZ25vcmUsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvcG9ydC5jLCBsaWJyYXJ5L3dpbmVzdHViLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcG9ydC5jOgoJQnVpbGQgbnRkbGwgYXMgYSByZWFsIGRsbCwgaW5jbHVkaW5nIGV2ZXJ5dGhpbmcgdGhhdCB3YXMgcHJldmlvdXNseSBpbgoJbGlid2luZS5zby4gQ3JlYXRlZCBhIG5ldyAobW9zdGx5IGVtcHR5KSBsaWJ3aW5lLnNvIGluIGxpYnJhcnkvIHN1YmRpci4KCjIwMDAtMTAtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9tc2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURFQlVHX1Byb2Nlc3NEQkdGaWxlOiB1c2UgYSBzdGFjayB2YXJpYWJsZSBmb3IgdGhlIGV4dHJhX2luZm8uCgoJKiByZWxheTMyL3Nub29wLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5oLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGxvYWRlci90YXNrLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRml4ZWQgYSBmZXcgY29tcGlsYXRpb24gd2FybmluZ3MKCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmgsIHNlcnZlci9oYW5kbGUuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJTW92ZSBpbmxpbmUgYW5kIHN0YXRpYyB0byB0aGUgYmVnaW5uaW5nIG9mIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ09NQk9FWF9EcmF3SXRlbTogY2hlY2sgcmV0dXJuIHZhbHVlIG9mIFNlbmRNZXNzYWdlQSguLi4sQ0JfR0VUSVRFTURBVEEsLi4uKQoKCSogdG9vbHMvd2luZWNvbmY6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgYSAnLWluaWZpbGUnIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgd2luZS5pbmkgZmlsZQoJdXNlZCBpbiB0aGUgYnVpbGRpbmcgb2YgdGhlIG5ldyB3aW5lLmluaSBmaWxlLgoKCSogZGVidWdnZXIvbXNjLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gZW5hYmxlIGxvYWRpbmcgb2YgcGRiIGZpbGVzIG5hbWVkIGluIE5CMTAgcmVjb3JkcyBvZiBhIGRiZyBmaWxlCgktIGRpc2FibGUgdGltZXN0YW1wIGNoZWNrIGZvciBwZGIgZmlsZXMKCgkqIHdpbjMyL2RldmljZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglRdWlldGVuIFZ4RENhbGxfVk1NIG91dHB1dC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+Cgl3aW5laW5zdGFsbCBpbXByb3ZlbWVudHMsIG1vc3RseSBmb3IgdXNhZ2UgaW4gcGFja2FnZSBwb3N0aW5zdGFsbAoJc2NyaXB0cy4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCVBhdGNoIGZsYXQgY3Mgb2YgMTYtYml0IGVudHJ5IHBvaW50cyBpZiBjdXJyZW50ICVjcyBpcyBkaWZmZXJlbnQgZnJvbQoJY29tcGlsZWQgdmFsdWUsIGFuZCByZXRyaWV2ZSBmbGF0IGRzIGZyb20gYSBnbG9iYWwgdmFyaWFibGUuIFRoaXMKCXNob3VsZCBhdm9pZCBwcm9ibGVtcyB3aXRoIHdpbjRsaW4ga2VybmVscy4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBmaWxlcy9kaXJlY3RvcnkuYywgaW5jbHVkZS9udGRkay5oLCBtZW1vcnkvcmVnaXN0cnkuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglBZGRlZCBiYXNpYyB3b3JraW5nIHN0dWJzIG9mIG5ldyBXaW5kb3dzIDIwMDAgQVBJIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbG9jYWwuaCwgbWVtb3J5L2xvY2FsLmM6CglSZW1vdmVkIHVudXNlZCBMT0NBTF9Mb2NrU2VncHRyLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9wYWludGluZy5jOgoJVXNlIEdldFN0b2NrT2JqZWN0KCkgaW5zdGVhZCBvZiB0aGUgbWFnaWMgU1RPQ0tfKiBoYW5kbGVzLgoKCSogZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglERUJVR19Qcm9jZXNzREJHRmlsZTogYWxsb2NhdGUgTVNDX0RCR19JTkZPIGJlZm9yZSB3cml0aW5nIHRvIG1lbWJlcnMKCW9mIHRoYXQgc3RydWN0dXJlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglJbXBsZW1lbnQgU0hHRklfRVhFVFlQRSBmdW5jdGlvbiBvZiBTSEdldEZpbGVJbmZvLgoKCSogd2luZG93cy93aW5oZWxwLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcG9ydCBlcnJvcnMgb24gV2luSGVscCgpIGZhaWx1cmVzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBpbXByb3ZlZCB0cmFjZSBpbmZvcm1hdGlvbgoJLSBpbXBsZW1lbnRlZCBDQl9TRVRJVEVNSEVJR0hULCBXTV9XSU5ET1dQT1NDSEFOR0lORywKCSAgV01fTUVBU1VSRUlURU0sIFdNX0RSQVdJVEVNCgktIGNoYW5nZWQgQ0JFTV9JTlNFUlRJVEVNQSwgQ0JFTV9TRVRJTUFHRUxJU1QsCgkgIFdNX0NSRUFURSwgV01fREVTVFJPWQoJLSBhYm92ZSBjaGFuZ2VzIGNvcnJlY3Qgd2luZG93IHJlY3RhbmdsZSwgZHJhd3MgaXRlbXMsIGFuZCBjcmVhdGVzCgkgIGNvbnRyb2wgY29ycmVjdGx5LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gY29ycmVjdCBwcm9jZXNzaW5nIG9mIFJCQlNfQlJFQUsgc3R5bGUuCgktIGhhbmRsZSBjYXNlcyB3aGVyZSBjeUNoaWxkIHdhcyBzZXQgdG8gLTEgYnkgYXBwbC4gLSB1bmRvY3VtZW50ZWQuCgktIHJlbW92ZSBzcGVjaWFsIGNvZGUgZm9yIENvbWJvYm94ZXggcHJvYmxlbSAobm93IHNvbHZlZCkuCgktIGZpeCBzb21lIHBhaW50aW5nIHByb2JsZW1zCgoyMDAwLTEwLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUgZm9yIGR3VG90YWxWaXJ0dWFsLgoJUmV0dXJuIGEgbW9yZSBwbGF1c2libGUgdmFsdWUgZm9yIGR3QXZhaWxWaXJ0dWFsLgoKCSogbWlzYy9jcHUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXR1cm4gYSBtb3JlIHBsYXVzaWJsZSB2YWx1ZSBmb3IgTWluaW11bUFwcGxpY2F0aW9uQWRkcmVzcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCUZlZGVyaWNvIFNjaHdpbmR0IDxmZ3NjaEBjb3JlLXNkaS5jb20+CglGaXhlcyBmb3IgT3BlbkJTRC4KCgkqIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlSXRlbU1vbmlrZXIgbWF5IGdldCBOVUxMIGFzIHN6RGVsaW0sIHNvbWUgY2xlYW51cHMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBPbGVMb2FkRnJvbVN0cmVhbTogRGVyZWZlcmVuY2UgcHB2T2JqIGFuZCBnZXQgSVBlcnNpc3RTdHJlYW0KCWluc3RlYWQgb2YgYWNjZXNzaW5nIElVbmtub3duLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBmb3IgSHR0cFNlbmRSZXF1ZXN0RXhBLgoKCSogY29udHJvbHMvY29tYm8uYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIHNldCB0aGUgaXRlbSBoZWlnaHQgbm90IG9ubHkgZm9yIHRoZSBsaXN0Ym94LCBidXQgYWxzbyBmb3IgdGhlIHRleHQgZmllbGQKCS0gY2VudGVyIHRleHQgdmVydGljYWxseQoJLSBiZWF1dGlmeSBjb21tZW50cwoKCSogZGxscy91c2VyL01ha2VmaWxlLmluOgoJTWF0dGhldyBDbGFya2UgPE1hdHRoZXdfQ2xhcmtlQG1pbmRsaW5rLmJjLmNhPgoJRG9uJ3QgYXNzdW1lIHdlIGFyZSBidWlsZGluZyBpbiB0aGUgc291cmNlIHRyZWUsIGJ1dCBhbGxvdyBtYWtlIHRvCglsb2NhdGUgcmVzb3VyY2VzL2Rpc3BsYXkucmMgYW5kIHJlc291cmNlcy9tb3VzZS5yYyB2aWEgVlBBVEguCgoyMDAwLTEwLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgd2luMzIvZXhjZXB0LmM6CglSYWlzZSBhbiBleGNlcHRpb24gd2hlbiBhIHN0dWIgZW50cnkgcG9pbnQgaXMgY2FsbGVkLgoKCSogd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsIHdpbmRvd3Mvc3RydWN0MzIuaDoKCVJlbW92ZWQgdW51c2VkIFNUUlVDVDMyX05DQ0FMQ1NJWkUgZnVuY3Rpb25zLgoKCSogd2luZG93cy9pbnB1dC5jLCBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFzayBhcHBsaWNhdGlvbiB0byByZWluaXRpYWxpemUgaXRzIG1lbnUgYmVmb3JlIHByb2Nlc3NpbmcgYW4KCWFjY2VsZXJhdG9yIGtleS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCSJTdGFydE1lbnUiIC0tPiAiU3RhcnQgTWVudSIsICJTdGFydHVwIiAtLT4gIlN0YXJ0VXAiLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRml4ZWQgdHlwbyBkdWUgdG8gbWVyZ2UgZXJyb3IuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgdGhlIGxvYWQgcHJvY2VzcyBzbyB0aGF0IGFsbCB0eXBlbGlicyAoYW5kIG5vdCBqdXN0IHRoZSBmaXJzdAoJb25lLCBhcyBpdCB1c2VkIHRvKSBzdG9yZWQgaW4gYSBETEwgY2FuIGJlIGxvYWRlZC4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6CglNYXJrIER1Zm91ciA8bS5kdWZvdXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoJSW1wbGVtZW50ZWQgUG9seURyYXcoKSBhbmQgQW5nbGVBcmMoKS4KCjIwMDAtMTAtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDEwMjYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMTAtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB3aW4zMi9leGNlcHQuYzoKCVJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIGEgc3R1YiBlbnRyeSBwb2ludCBpcyBjYWxsZWQuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvc3RydWN0MzIuYywgd2luZG93cy9zdHJ1Y3QzMi5oOgoJUmVtb3ZlZCB1bnVzZWQgU1RSVUNUMzJfTkNDQUxDU0laRSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2lucHV0LmMsIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQXNrIGFwcGxpY2F0aW9uIHRvIHJlaW5pdGlhbGl6ZSBpdHMgbWVudSBiZWZvcmUgcHJvY2Vzc2luZyBhbgoJYWNjZWxlcmF0b3Iga2V5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJIlN0YXJ0TWVudSIgLS0+ICJTdGFydCBNZW51IiwgIlN0YXJ0dXAiIC0tPiAiU3RhcnRVcCIuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglGaXhlZCB0eXBvIGR1ZSB0byBtZXJnZSBlcnJvci4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlZCB0aGUgbG9hZCBwcm9jZXNzIHNvIHRoYXQgYWxsIHR5cGVsaWJzIChhbmQgbm90IGp1c3QgdGhlIGZpcnN0CglvbmUsIGFzIGl0IHVzZWQgdG8pIHN0b3JlZCBpbiBhIERMTCBjYW4gYmUgbG9hZGVkLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCU1hcmsgRHVmb3VyIDxtLmR1Zm91ckBzdHVkZW50LnR1ZGVsZnQubmw+CglJbXBsZW1lbnRlZCBQb2x5RHJhdygpIGFuZCBBbmdsZUFyYygpLgoKMjAwMC0xMC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIGFuIGFub3RoZXIgc3BlY2lhbCBjYXNlIGhhbmRsaW5nIGZvciBTaGlmdCtbTnVtUGFkXURFTC4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW46CglLcmlzdG9mZmVyIEdsZWRpdHNjaCA8dG9mZmVyQHBpbmcudWlvLm5vPgoJQWRkZWQgTERGTEFHUyB0byBsaW5raW5nIG9mIHdpbmUtcmVsYXRlZCBiaW5hcmllcy4KCgkqIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVwbGFjZWQgVG9Bc2NpaSBieSBUb1VuaWNvZGUgaW4gdGhlIFVzZXIgZHJpdmVyIGludGVyZmFjZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglXaWxsaWFtIFdhZ2hvcm4gPHd3YWdob3JuQGxpdGFueS5kZW1vbi5jby51az4KCXhmODZ2bW9kZV9zZXRkaXNwbGF5bW9kZSgpIHdhc24ndCBwcm9wZXJseSBzYXZpbmcgdGhlICdwcml2YXRlJyBmaWVsZAoJb2YgdGhlIFhGODZWaWRNb2RlTW9kZUxpbmUgc3RydWN0dXJlLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBNZXRob3QgPGZyYW5jb2lzbUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgb2YgYmxpbmtpbmcgdGh1bWIgYXMgZm91bmQgaW4gV2luZG93cyBzY3JvbGxiYXIuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgdHlwZWxpYiBsb2FkZXIuIFR5cGVsaWIgY29udGVudHMgY2FuIGJlIHN0b3JlZCBhcyBtdWx0aWJ5dGUKCXN0cmluZ3MuIEhvd2V2ZXIsIHRoZXkgYXJlIGFsd2F5cyByZXR1cm5lZCB0byB0aGUgYXBwbGljYXRpb24gYXMgQlNUUiwKCWUuZy4gVU5JQ09ERSBzdHJpbmdzLiBBbGwgc3RyaW5ncyBhcmUgbm93IHN0b3JlZCBhcyBCU1RSIGluc3RlYWQgb2YKCUFTQ0lJIHN0cmluZ3MuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGcmVlIHRoZSBXaW4xNiBkdW1teSBtb2R1bGUgYW5kIHdtLT5kZXBzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglNYXJrIER1Zm91ciA8bS5kdWZvdXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoJWDExRFJWX0RyYXdBcmM6IHN3YXAgdGhlIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIHdoZW4gZHJhd2luZyBpbgoJY2xvY2t3aXNlIGRpcmVjdGlvbi4KCgkqIG9iamVjdHMvcmVnaW9uLmM6CglBdmlhZCBQaW5lbGVzIDxwYXZpYWRAbmV0dmlzaW9uLm5ldC5pbD4KCUF2b2lkIGluZmluaXRlIGxvb3AgaW4gQ3JlYXRlUm91bmRSZWN0UmduKCkuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci9tb3VzZS5zcGVjLCBkbGxzL3VzZXIvcmVzb3VyY2VzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9yZXNvdXJjZXMvZGlzcGxheS5yYywgZGxscy91c2VyL3Jlc291cmNlcy9kaXNwbGF5LnJjMTYsIGRsbHMvdXNlci9yZXNvdXJjZXMvbW91c2UucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvbW91c2UucmMxNiwgaWYxNjMyL2J1aWx0aW4uYywgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIC5yZXMgZmlsZXMgZm9yIDE2LWJpdCByZXNvdXJjZXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KCgkqIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJMTYtYml0IHJlc291cmNlIHNpemUgbXVzdCBiZSBzY2FsZWQgYnkgYWxpZ25tZW50LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgVENTX1ZFUlRJQ0FMIHN0eWxlLiAgRml4IHRhYiBib3JkZXJzIHRvIGhhdmUgc2hhZGluZyB0aGF0CgltYXRjaGVzIFdpbmRvd3MuICBDZW50ZXIgaW1hZ2UgYW5kIHRleHQgaW4gdGFicy4gIFNpemUgdGFicyB0bwoJY29tcGxldGVseSBmaWxsIGVhY2ggcm93IHdpdGggbXVsdGlsaW5lIHN0eWxlLiAgRml4IHBvc2l0aW9uaW5nIG9mCgl0YWJzIGZvciBUQ1NfQk9UVE9NIHN0eWxlLiAgRml4IHZhcmlvdXMgZHJhd2luZyBpc3N1ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2hlbiBpbnNlcnRpbmcgYW4gaXRlbSwgZG8gbm90IGludmFsaWRhdGUgdGhlIGFyZWEgYWJvdmUgdGhlIG5ldwoJICBpdGVtLgoJLSBUaGUgZGVidWcgZnVuY3Rpb24gdGhhdCB2ZXJpZmllcyB0aGUgdHJlZSBhZnRlciBlYWNoIGluc2VydGlvbgoJICBzaG91bGQgYmUgZGlzYWJsZWQgYnkgZGVmYXVsdC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlaW1wbGVtZW50IHBhdGNoIGJ5IE1hcmN1cyBNZWlzc25lciAoJzk4KSB0byAiZml4IiBwcm9ibGVtcyB3aXRoCglEU0NBUFNfRU1VTERSSVZFUiBmbGFnIGZvciBnYW1lcyBsaWtlIFF1YWtlIDIgYW5kIFVucmVhbCBUb3VybmFtZW50LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYW5zZm9ybSBkZXZpY2Ugb3BlbiBlcnJvciBUUkFDRSgpcyBpbnRvIFdBUk4oKTsgYmV0dGVyIGVycm9yIG1zZ3MuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUluIFNXUF9Eb05DQ2FsY1NpemUoKSB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIGNsaWVudCBhcmVhIGhhcwoJbW92ZWQsIHVzZSB0aGUgY2xpZW50IGNvb3JkaW5hdGVzIGFzIHRoZXkgYXJlOiBub3QgcmVsYXRpdmUgdG8gaXRzCgl3aW5kb3cgY29vcmRpbmF0ZXMuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBTUElfR0VUV0lORE9XU0VYVEVOU0lPTi4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBhIFdJTkVMT0FERVIgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hpY2ggYWxsb3dzIHRoZQoJc3BlY2lmaWNhdGlvbiBvZiBhIGRpZmZlcmVudCBiaW5hcnkgbG9hZGVyLgoKMjAwMC0xMC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJUmVtb3ZlZCBHZXRSZXNEaXJFbnRyeUEvVy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsLmM6CglJbXBsZW1lbnQgSW50ZXJuYWxFeHRyYWN0SWNvbiBieSBjYWxsaW5nIFByaXZhdGVFeHRyYWN0SWNvbnMgaW5zdGVhZAoJb2YgZHVwbGljYXRpbmcgYWxsIHRoZSBjb2RlLgoKCSogdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglBZGRlZCBjb2RlcGFnZSB0cmFuc2xhdGlvbiBiYXNlZCBvbiB0aGUgbGFuZ3VhZ2UgaWQgKGJhc2VkIG9uIGEgcGF0Y2gKCWJ5IEp1bmljaGkgS3VjaGluaXNoaSA8amt1Y2hpQG1haG9yb2JhLm5lLmpwPikuCgoJKiBjb250cm9scy9tZW51LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydGVkIG1lbnUgc3RyaW5nIGhhbmRsaW5nIHRvIFVuaWNvZGUuCgoJKiBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZm9yd2FyZCBmb3IgV1NBUmVzZXRFdmVudC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb252ZXJ0IHRoZSB2YWx1ZSBvZiBsZXZlbCB3aGVuIHNldHNvY2tvcHQgaXMgY2FsbGVkIHdpdGgKCVdTX1NPX0RPTlRMSU5HRVIuCgoJKiBtaXNjL29wdGlvbnMuYywgc2VydmVyL3JlcXVlc3QuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvd2luZXBzL2luaXQuYywgaWYxNjMyL3RodW5rLmMsIGxvYWRlci90YXNrLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBzdHJ1Y3R1cmVzLgoKCSogb2JqZWN0cy9wYWxldHRlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRXhwbGljaXRseSBpbml0aWFsaXplIHN0cnVjdHVyZXMuCgktIEZpeGVkIHN0cmFuZ2UgY29kZSBwcm9iYWJseSBjYXVzZWQgYnkgYSBtZXJnZSBjb25mbGljdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBBbGwgYXVkaW8gZGV2aWNlIGhhbmRsZXMgYXJlIGluaXRpYWxpemVkIHRvIC0xIGFuZCBzZXQgdG8gLTEgd2hlbiBjbG9zZWQuCgktIFdJTkVfV01fSEVBREVSIGV2ZW50IHNob3VsZCAqTk9UKiBtYWtlIHRoZSByZWNvcmRpbmcgdGhyZWFkIHN0YXJ0LiBUaGUKCSAgdGhyZWFkIHNob3VsZCBvbmx5IHN0YXJ0IHRocm91Z2ggd2F2ZUluU3RhcnQuIFRoZSBhcHBsaWNhdGlvbiBjYWxsaW5nCgkgIHdhdmVJbkFkZEJ1ZmZlciBtaWdodCBub3QgYmUgaW4gYSBzdGF0ZSB0byBwcm92aWRlIGFub3RoZXIgYnVmZmVyIGluCgkgIGEgcGVyaW9kIG9mIHRpbWUgc2hvcnQgZW5vdWdoIHRvIGF2b2lkIGJ1ZmZlciB1bmRlcnJ1biBpbiB3aWRSZWNvcmRlcgoJICB0aHJlYWQuCgktIHdpZFJlY29yZGVyIC0gaW1wcm92ZWQgcm9idXN0bmVzcyBvZiB3aWRSZWNvcmRlciB0byBhdm9pZCBzb21lIGRhdGEKCSAgbG9zcyB0aGF0IG9jY3VyZWQgd2hlbiBub3QgcmVhZGluZyBvbmUgZnVsbCBmcmFnbWVudCBmcm9tIHRoZSBPU1MKCSAgYXVkaW8gZHJpdmVyLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvY2Ryb20uaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMgZm9yIG5vbi1MaW51eC4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCUZpeGVkIE9GRlNFVE9GIG1hY3JvIGRlZmluaXRpb24gZm9yIGdjYyAyLjk2LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdHVicyBmb3IgQ3J5cHRHZW5SYW5kb20oKSwgQ3J5cHRSZWxlYXNlQ29udGV4dCgpLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGJsb2NrIENCTl9FRElUQ0hBTkdFIGZvciBXTV9QQVNURSBvciBXTV9DVVQgd2l0aCB0aGUKCU5PRURJVE5PVElGWSBmbGFnLCBhcyB0aGVzZSBtc2dzIGNhbiBjb21lIGRpcmVjdGx5IGZyb20gdGhlIGFwcCB0byB0aGUKCWNvbWJvIHduZHByb2MuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgRW51bUVuaE1ldGFGaWxlIHdvcmsuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBScGNTdHJpbmdGcmVlQSBhbmQgVXVpZFRvU3RyaW5nQS4KCjIwMDAtMTAtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvdW5pbnN0YWxsZXIuc3BlYywgcHJvZ3JhbXMvdmlldy8uY3ZzaWdub3JlLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L3ZpZXcuc3BlYywgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgcHJvZ3JhbXMvd2luZW1pbmUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL3dpbmVtaW5lLnNwZWMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLnNwZWMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL21ha2VkZXAuYywgZGxscy91c2VyL3Jlc291cmNlcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5tbS5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGxpYnRlc3QvLmN2c2lnbm9yZSwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9oZWxsbzMuc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9jbG9jay5zcGVjLCBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYywgTWFrZS5ydWxlcy5pbiwgZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9zZXJpYWx1aS8uY3ZzaWdub3JlLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL21vdXNlLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUJ1aWxkIFdpbjMyIHJlc291cmNlcyBhcyAucmVzIGZpbGVzIGFuZCBkdW1wIHRoZW0gaW50byB0aGUgLnNwZWMuYyBmaWxlLgoKCSogdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgV2luMzIgLnJlcyBmaWxlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL3VzZXIvZGlzcC5yYywgZGxscy91c2VyL21vdXNlcmMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvVE9ETywgZGxscy91c2VyL3Jlc291cmNlcy9kaXNwbGF5LnJjMTYsIGRsbHMvdXNlci9yZXNvdXJjZXMvbW91c2UucmMxNiwgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0NhLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Dcy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRGEucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0RlLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fbi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRW8ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9GaS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRnIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0h1LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9JdC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSmEucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0tvLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9ObC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfTm8ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1BsLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9QdC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUnUucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1NrLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Tdi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfV2EucmM6CglNb3ZlZCBhbGwgVVNFUiByZXNvdXJjZXMgdG8gbmV3IGRsbHMvdXNlci9yZXNvdXJjZXMgZGlyZWN0b3J5LgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnZlci5oLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy92ZXJzaW9uL3Zlci5zcGVjLCBkbGxzL3ZlcnNpb24vdmVyMTYuYzoKCUR1cGxpY2F0ZSByZXNvdXJjZSBkaXJlY3Rvcnkgc2VhcmNoaW5nIHJvdXRpbmVzIGluc3RlYWQgb2YgY2FsbGluZwoJcGVfcmVzb3VyY2UuYyBpbnRlcm5hbCBmdW5jdGlvbnMuCglNYWRlIEdldEZpbGVSZXNvdXJjZTE2IGFuZCBHZXRGaWxlUmVzb3VyY2VTaXplMTYgY2FsbGFibGUgZGlyZWN0bHkKCWluc3RlYWQgb2YgZGVmaW5pbmcgZXh0cmEgaW50ZXJuYWwgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL2V4dGljb24uYzoKCUR1cGxpY2F0ZSByZXNvdXJjZSBkaXJlY3Rvcnkgc2VhcmNoaW5nIHJvdXRpbmVzIGluc3RlYWQgb2YgY2FsbGluZwoJcGVfcmVzb3VyY2UuYyBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiB0b29scy93cmMvd3JpdGVyZXMuYzoKCUZpeGVkIGR1cGxpY2F0aW9uIG9mIHR5cGVuYW1lIGluIDE2LWJpdCBhc3NlbWJseSBvdXRwdXQuCgoJKiBtZW1vcnkvaGVhcC5jOgoJRml4ZWQgbXVsdGlieXRlIGhhbmRsaW5nIGluIEhFQVBfc3RyZHVwQXRvVy4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBpbmNsdWRlL2Nkcm9tLmgsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIG9wZW4vY2xvc2UgdGhlIENELVJPTSBkZXZpY2UgZm9yIGV2ZXJ5IFdpbmRvd3MgQVBJIENELVJPTQoJYWNjZXNzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEbyBub3Qgc2VuZCBFTl9VUERBVEUgdG8gbXVsdGktbGluZSBlZGl0IGNvbnRyb2xzLgoKCSogY29udHJvbHMvbWVudS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCB0aGUgdGV4dCBjb2xvciBvZiBoaWdsaWdodGVkIG1lbnUgYmFyIGl0ZW0gZm9yIHRoZSBXaW45OCBsb29rLgoJQ2xpY2tpbmcgb24gYSBzZXBhcmF0b3Igc2hvdWxkIG5vdCBjbG9zZSB0aGUgbWVudS4KCURvIG5vdCByaWdodCBhbGlnbiAnYml0bWFwJyBpdGVtcyBhbmQgdGhlIGhlbHAgbWVudSBmb3IgdGhlIFdpbjl4IGxvb2sKCWFuZCBmZWVscy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiB3ZSBoYXZlIGEgZHJpdmUgcG9pbnRpbmcgdG8gLywgd2UgbXVzdCBub3QgcmVtb3ZlIHRoZSBmaW5hbCAvIG9yIHdlCglnZXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGRvdWJsZWQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIGJhc2ljIElEaXJlY3REcmF3NyBpbnRlcmZhY2Ugc3VwcG9ydCwgZml4ZWQgYXJndW1lbnQgY291bnQKCW9mIElEaXJlY3REcmF3ezQsN31fU2V0RGlzcGxheU1vZGUgZGVmaW5lcy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CgktIENhbGN1bGF0ZSBjaGFuZ2VzIGluIHRoZSBjbGllbnQgYXJlYSByZWxhdGl2ZSB0byB0aGUgd2luZG93CgkgIGluc3RlYWQgb2YgaXRzIHBhcmVudCB3aGVuIHVzaW5nIFNXUF9FWF9QQUlOVFNFTEYuCgktIFdpdGggU1dQX0VYX1BBSU5UU0VMRiwgY29weSBvbmx5IGlmIGNsaWVudCBhcmVhIGNoYW5nZWQsIHNpbmNlIGEKCSAgd2luZG93IGNhbid0IG1vdmUgcmVsYXRpdmUgdG8gaXRzZWxmLgoJLSBJbiBTV1BfRG9OQ0NhbGNTaXplLCB3aGVuIGRldGVybWluaW5nIGlmIHRoZSBjbGllbnQgYXJlYQoJICBjaGFuZ2VkLCB1c2UgdmFsdWVzIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3cgaXRzZWxmLCBub3QgaXRzIHBhcmVudC4KCgkqIG9iamVjdHMvcmVnaW9uLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgcGFpbnRpbmcgcHJvYmxlbXMgaW4gbm9uLU1NX1RFWFQgbW9kZXMuCgoyMDAwLTEwLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmMsIG1zZG9zL2Rvc2NvbmYuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJUmVkdWNlIHRoZSBudW1iZXIgb2Ygd2FybmluZ3MgYWJvdXQgbWlzc2luZyBpbml0aWFsaXplcnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdvdCByaWQgb2YgbWlzbGVhZGluZyAiTm8gVGxzIFNwYWNlIiBlcnJvciBtZXNzYWdlLgoKCSogaW5jbHVkZS93aW5nZGkuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWUgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVc2UgaW50ZXJtZWRpYXRlIHR5cGVkZWYuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9vbGUyZGlzcC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi90eXBlbGliLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zYWNtMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3NweS5jLCBpbmNsdWRlL3NweS5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIHdQYXJhbSBhbmQgbFBhcmFtIGFzIHBhcmFtZXRlcnMgaW4gU1BZX0V4aXRNZXNzYWdlCglBZGRlZCBkdW1wIGZvciB0aGUgU1RZTEVDSEFOR1tJTkd8RURdIG1lc3NhZ2VzLgoJRHVtcCBzdHJ1Y3R1cmVzIG9uIGV4aXQgb25seSBpZiBtZXNzYWdlIGFsbG93cyBjaGFuZ2VzLgoKCSogd2luMzIvZXhjZXB0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUHJpbnQgQ1MgcmVnIGF0IGNyYXNoIE1lc3NhZ2VCb3ggKG5lZWRlZCBmb3IgV2luMTYgcHJvZ3JhbXMpLgoJLSBBZGQgImhpbnQiIGZvciBkZWJ1Z2dlciBzZXR1cC4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFkdmFwaTMyIHRvIGltcG9ydGVkIERMTHMgbGlzdC4KCgkqIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1vcmUgY29udmVyc2lvbiByb3V0aW5lcyAocmF0ZSBjb252ZXJzaW9uIGlzIGltcGxlbWVudGVkKS4KCUNsZWFuZWQgdXAgdGhlIGNvZGUuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUERCIHN5bWJvbCBoZWFkZXIgZm9ybWF0IGRlcGVuZHMgb25seSBvbiB2ZXJzaW9uIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBzZXQgdGhlIGlTdWJJdGVtIHBhcnQgb2YgdGhlIHN0cnVjdCBmb3IgTFZNX0hJVFRFU1QsCglhcHBsaWNhdGlvbnMgb25seSBuZWVkIHRvIHBhc3MgbWVtb3J5IHNwYWNlIHVwIHRvIGlJdGVtLgoKCSogUkVBRE1FOiBBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU1lbnRpb24gdGhhdCB5b3UgbmVlZCB0aGUgWDExIGRldmVsIGZpbGVzLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURpcmVjdERyYXdDcmVhdGVFeCgpIHNob3VsZCBhbHJlYWR5IHJldHVybiB0aGUgaW50ZXJmYWNlIGZvciB0aGUKCXBhc3NlZCByZWZpaWQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGFuZ2UgdGhlIHdpZHRoIC8gaGVpZ2h0IHBhcmFtZXRlciBvbiBhIFNldERpc3BsYXlNb2RlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnIHdoZW4gY2hhbmdpbmcgZHJpdmVzIGluIDE2IGJpdCBzdHlsZSBkaWFsb2cgZm9yIGEgMzIgYml0IGFwcAoJKyBtaXNjZWxsYW5lb3VzIGZpeGVzLgoKCSogZGxscy91c2VyL2V4dGljb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgdHdvIGNoZWNrcyBmb3Igb3V0IG9mIHJhbmdlIHBvaW50ZXIgYWNjZXNzZXMuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmbG9hdGluZyBwb2ludCBkYXRhIHByaW50aW5nIGFuZCBtYWRlIGJhc2ljIHR5cGVzIHJlYWRpbmcgbW9yZQoJcm9idXN0LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUphc29uIE1hd2RzbGV5IDxqYXNvbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNvbWUgZmxpY2tlcmluZyB0aGF0IHdhcyBvY2N1cnJpbmcgaW4gdGhlIGltYWdlIGxpc3QgY29udHJvbAoJd2hlbiBpdCByZXBhaW50ZWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc2xlZXAgdGltZSBjYWxjdWxhdGlvbiBmb3IgdGhlIHdvZFBsYXllciB0aHJlYWQuCglDaGFuZ2VkIHRoZSB3b2RQbGF5ZXIgdGhyZWFkIG1lc3NhZ2luZyB0byB1c2UgaXRzIG93biBmYXN0IDMwIGVudHJpZXMKCXJpbmcgYnVmZmVyIGxpc3QuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCByZWR1bmRhbnQgdGhyZWFkIHByaW9yaXR5IGRlZmluZXMuCgoyMDAwLTEwLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9wcm9jZXNzLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgY3J0L21zdmNydCB0aHJlYWQgcHJvdG90eXBlcy4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhc3luY2hyb25vdXMgcmVjb3JkaW5nIGluIE1DSSBsYXllci4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBzdXBwb3J0IGZvciBBWkVSVFkga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJU2VxdWVuY2VyIGVycm9yIG1lc3NhZ2UgZml4LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJRml4IG1lc3NhZ2VzIHNlbnQgd2hlbiByaWdodC1jbGlja2luZyBpbiBhIGJsYW5rIChub24taXRlbSkgYXJlYSBvZiBhCglsaXN0dmlldy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUGFzcyB0aGUgY29ycmVjdCBoRmlsZSB0byBQRV9DcmVhdGVNb2R1bGUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRHJhdyB0ZXh0IGFuZCBpY29ucywgaW1wbGVtZW50IG9yZGVyaW5nIGZ1bmN0aW9ucywgYWxsb3cgcmVvcmRlcmluZwoJd2l0aCBtb3VzZSBhbmQgZml4IHRoZSBXTV9OT1RJRlkgdGFyZ2V0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgc3VwcG9ydCBmb3IgQVpFUlRZIGtleWJvYXJkIGxheW91dC4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9ncnBmaWxlLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5oLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYzoKCTxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCUNoYW5nZWQgR1JPVVAgdG8gUFJPR0dST1VQLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5udC5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglTa2lwIGRpcmVjdG9yeSBzeW1saW5rcyBpbiBET1NGU19GaW5kTmV4dEV4LgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmM6IEJyaWFuIFBpcmllCglBZGRlZCBzdXBwb3J0IGZvciBQQVNTVEhST1VHSCBhbmQgUE9TVFNDUklQVF9QQVNTVEhST1VHSCBlc2NhcGVzLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW5pbmV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQvZml4ZWQgbWlzc2luZyBleHRlcm4gIkMiLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGNoYXIvTlVMTCBjb21wYXJpc29uLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSB7SFJFU1VMVCxTQ09ERX1fU0VWRVJJVFkgbWFjcm9zLgoKCSogZGxscy91c2VyL2V4dGljb24uYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCVVzZSBhIGJpbmFyeSBzZWFyY2ggdG8gZmluZCBlbnRyaWVzIGluIHJlc291cmNlIGRpcmVjdG9yaWVzLgoJRml4ZWQgR2V0UmVzRGlyRW50cnlBL1cgcHJvdG90eXBlcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgaW5jbHVkZS93aW51c2VyLmg6CglDYWxsIFByaXZhdGVFeHRyYWN0SWNvbiBpbiB1c2VyMzIgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGUgY29kZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJU2hvdWxkIHRlc3QgdW5peGRldiBhZ2FpbnN0IC0xIChzZWUgd29kT3Blbi93aWRPcGVuKS4KCXdpZFJlY29yZGVyOiBieXRlc1JlYWQgaXMgbm93IHRlc3RlZCBhZ2FpbnN0IChEV09SRCkgLTEuCgoJKiBsb2FkZXIvZWxmZGxsLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUJhY2sgb3V0IG15IEVMRkRMTF9kbG9wZW4gcGF0Y2ggYW5kIGFkZCBhIHdhcm5pbmcgZm9yIGZ1dHVyZSBtaXNndWlkZWQKCWhhY2tlcnMuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IGZyZWVpbmcgbG9ja2VkIGdsb2JhbCBtZW1vcnkgaGFuZGxlcy4KCgkqIHdpbmRvd3MvbWRpLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdhdGNoIG91dCBmb3IgRGVmTURJQ2hpbGRQcm9jIGNhbGxzIG9uIG5vbi1NREktY2hpbGQgd2luZG93cy4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgaG9sZCB0aGUgWDExIGxvY2sgd2hpbGUgY2FsbGluZyBHREkgb2JqZWN0IHJvdXRpbmVzLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEbyBub3QgZG8gYW55IEdMWCBjYWxscyBvbiBhIGRpc3BsYXkgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IEdMWC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglSZWNhbGN1bGF0ZSBuSXRlbUhlaWdodCB3aGVuIExWU19TRVRJTUFHRUxJU1QgaXMgY2FsbGVkLiAgRml4ZXMgaWNvbnMKCWJlaW5nIGNob3BwZWQgb2ZmIGluIHRoZSBmaWxlIGRpYWxvZyB3aW5kb3cuICBBbGlnbiBpdGVtcyB0byB0b3AgYW5kCglyZWZyZXNoIGFmdGVyIHNvcnRpbmcsIGFzIHdpbmRvd3MgZG9lcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJU3R1YiBDcmVhdGVEaXNwVHlwZUluZm8sIENyZWF0ZVN0ZERpc3BhdGNoMTYgYW5kIENyZWF0ZVN0ZERpc3BhdGNoLgoKCSogZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGQgcHJvcGVyIG1lc3NhZ2UgcmVwbHkgbWVjaGFuaXNtIGFuZCBzcCBwbGF5ZXIgZGF0YSBzdG9yYWdlCgktIE1vcmUgaW1wbGVtZW50YXRpb24gYW5kIGZpeGVzCgoJKiBpbmNsdWRlL3BvcHBhY2suaCwgaW5jbHVkZS9wc2hwYWNrMS5oLCBpbmNsdWRlL3BzaHBhY2syLmgsIGluY2x1ZGUvcHNocGFjazQuaCwgaW5jbHVkZS9wc2hwYWNrOC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRocmVlIGxldmVscyBvZiBuZXN0aW5nIG9mIHRoZSAncHJhZ21hIHBhY2snCglkaXJlY3RpdmVzLgoKMjAwMC0xMC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDIwLmMsIG1zZG9zL2ludDIxLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBET1MgSU5UMjEgQUg9NEIgKEVYRUMpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgaW5jbHVkZS93aW51c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIGtleWJvYXJkIGlucHV0IGluIHZhcmlvdXMgbG9jYWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTFZNX1NFVElURU1QT1NJVElPTjMyLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVtZW1iZXIgb3duZXIgSFdORCB3aGVuIGNyZWF0aW5nIGFuZCB1c2UgdGhpcyBod25kIGZvciB0aGUgV01fTk9USUZZCgltZXNzYWdlIHRhcmdldC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBmbGFnIGFuZCBub3RpZmljYXRpb24gZGVmaW5pdGlvbnMgZm9yIENvbWJvQm94RXguCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgb2xkIFdpbiAyLnggc3RyaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJV2FybmluZyBmaXguCgoJKiBzZXJ2ZXIvcHRyYWNlLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZCBhcHByb3ByaWF0ZSBjYXN0cyB0byBjYWRkcl90IGZvciB0aGUgdGhpcmQgcGFyYW1ldGVyIG9mIHB0cmFjZSgpLgoKMjAwMC0xMC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgcmVjZW50IGJ1Z3MsIGFuZCBhZGRlZCBzb21lIG1vcmUgc2FmZWd1YXJkcyAoY291bGQKCWJlIGhhbmR5IGZvciBwb3J0YWJpbGl0eSBhbnl3YXkpIGFuZCB0cmFjZSBzdGF0ZW1lbnRzLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIG1pc2MvcmVnaXN0cnkuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIGluY2x1ZGUvc2VydmVyLmgsIGRsbHMva2VybmVsL2NvbW0uYywgZmlsZXMvZG9zX2ZzLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUNvbnZlcnRlZCBhIGZldyBtb3JlIHNlcnZlciByZXF1ZXN0cyB0byB0aGUgbmV3IG1lY2hhbmlzbS4KCgkqIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9yZWcuYywgaW5jbHVkZS9udGRkay5oOgoJRml4ZWQgYSBmZXcgcHJvdG90eXBlcy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCVNldCBzZWxlY3RvciAwMDAwSCBiYXNlIHRvIDB4ZjAwMDAgdW50aWwgdGhlIGZpcnN0IDY0SyBhcmUKCXVucHJvdGVjdGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgU2hlbGxNZXNzYWdlQm94W0FXXSBidWZmZXJzIHVzYWdlIChpbiBzb21lIGNhc2VzLCB3cm9uZyBidWZmZXJzCgl3ZXJlIHVzZWQgOyBkZXN0aW5hdGlvbiBidWZmZXIgZG9lc24ndCBoYXZlIGEgZml4ZWQgc2l6ZSkuCglGaXhlZCBGb3JtYXRNZXNzYWdlIHBhcmFtZXRlciB3YXJuaW5ncyAoaXQncyBub3cgYSB2YV9saXN0KikuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlIG9yaWdfbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEcmF3IHRoZSBzY3JvbGxiYXIgYmVzaWRlIHRoZSBidWRkeSB3aGVuIG5laXRoZXIgVURTX0FMSUdOW1JJR0hUfExFRlRdCglpcyBnaXZlbi4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUxvY2FsaXphdGlvbiBhbmQgZXhwZWN0IGxlYXBkYXlzIHdoZW4gbG9va2luZyBmb3IgdGhlIGxlbmd0aCBvZiBhCgltb250aC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUxvY2FsaXphdGlvbiBhbmQgbWFueSBjaGFuZ2VzIHRvIGJlaGF2aW91ciBhbmQgb3V0bG9vay4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3BsaXQgb3V0IHJlc291cmNlcyB0aGF0IG1pZ2h0IGJlIGxvY2FsaXplZC4KCUFkZGVkIEdlcm1hbiByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhZGRpdGlvbmFsIHJlc291cmNlIElEcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViYmVkIExvb2t1cEFjY291bnROYW1lQS4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXR1cm4gImRlZmF1bHQiIERpcmVjdERyYXcgZHJpdmVyIGlmIHdlIGhhdmUgYXQgbGVhc3Qgb25lIGRyaXZlcgoJcmVnaXN0ZXJlZC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUZpeGVkIGJlaGF2aW91ciBvZiB3aW5kb3cncyBzeXN0ZW0gYnV0dG9ucy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUxvYWRTdHJpbmdBIGluc2VydHMgdGVybWluYXRpbmcgbnVsbCBpbiB0aGUgYnVmZmVyIHdoZW4gdGhlIHN0cmluZwoJcmVzb3VyY2UgaXMgYW4gZW1wdHkgc3RyaW5nIG9yIHdoZW4gaXQgY2FuIG5vdCBiZSBmb3VuZC4KCjIwMDAtMTAtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9vY3JfaGFuZCwgaW5jbHVkZS93aW51c2VyLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdGhlIElEQ19IQU5EIGN1cnNvci4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIHNpZ25hdHVyZSBvZiB0aGUgRm9ybWF0TWVzc2FnZSBBUElzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tY3guaCwgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIE1PREVNIHN0dWZmIGhhcyBiZWVuIHNwdW4gb2ZmIHRvIGl0cyByaWdodGZ1bCBwbGFjZTogbWN4LmguCgoJKiBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb21wbGV0ZWQvY29ycmVjdGVkIHRoZSBsaXN0IG9mIGluY2x1ZGUgZmlsZXMuCglIYW5kbGUgV0lOMzJfTEVBTl9BTkRfTUVBTiBhbmQgdGhlIE5PeHh4IG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBOT0dESSBwcm90ZWN0aW9uLgoJUmVwbGFjZWQgX01BWF9QQVRIIHdpdGggTUFYX1BBVEguCgkjdW5kZWYgY2FuIGJlIHVzZWQgZGlyZWN0bHkgb24gVFJBTlNQQVJFTlQuCgoJKiBpbmNsdWRlL29sZTIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNdXN0IGluY2x1ZGUgb2JqYmFzZS5oLgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGluY2x1ZGUvd2luZGVmLmgsIGRsbHMva2VybmVsL2NvbW0uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglIRklMRSBpcyBhbiBpbnQsIG5vdCBhIHJlZ3VsYXIgSEFORExFLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBNU0dGX0RERU1HUi4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGluY29ycmVjdCBmb3JtYXQgc3RyaW5nLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGNoYW5naW5nIG1vdXNlIGN1cnNvciB3aGVuIG92ZXIgYSBoZWxwIHRvcGljIGxpbmsuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRGlyZWN0SW5wdXRDcmVhdGVFeC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCURvIG5vdCBzZW5kIGEgV01fQ09OVEVYVE1FTlUgbWVzc2FnZSB3aGVuIGEgVHJlZVZpZXcgcmVjZWl2ZXMgYQoJV01fUkJVVFRPTlVQLgoKCSogaWYxNjMyL2ZpbmRmdW5jLCB0b29scy9maW5kZnVuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU1ha2UgZmluZGZ1bmMgbG9vayBmb3IgLnNwZWMgZmlsZXMsIGFuZCBwdXQgaXQgd2l0aCB0aGUgb3RoZXIgdG9vbHMuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVZhbGlkYXRlIGFjY2VzcyBldmVuIGlmIHdyYXAgcGFzdCBhZGRyZXNzIDAgZm9yIElzQmFkU3RyaW5nUHRyW0F8V10KCWFuZCBJc0JhZFtSZWFkfFdyaXRlXVB0ci4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbWVtb3J5L3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gc3R1cGlkIHNwZWxsaW5nIGZpeGVzCgktIHNvbWUgbW9yZSBsb2Fkb3JkZXIgYXJyYXkgd29yawoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9udGRkay5oLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJQWRkZWQgYSBmZXcgbW9yZSBsYXJnZSBpbnRlZ2VyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIG9iamVjdHMvZGMuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglTdHViYmVkIEdldERldmljZUdhbW1hUmFtcC4KCgkqIG1zZG9zL2ludDIxLmM6CglQZXRlciBIYXdraW5zIDxwZXRlckBoYXdraW5zLmVtdS5pZC5hdT4KCUFkZGVkIERPUyBpbnQgMjFoIGZ1bmN0aW9uIDQ0NTJoIHN1cHBvcnQgKERSLURPUyB2ZXJzaW9uIGNoZWNrKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRmlsbCBpbiB0aGUgZHNCbWloLmJpU2l6ZUltYWdlIGZpZWxkIG9mIERJQlNlY3Rpb25zIHdpdGggdGhlCgljYWxjdWxhdGVkIGJpdG1hcCBzaXplLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW5kaWNhdGUgdGhhdCB0aGUgTUlESSBlcnJvciBtZXNzYWdlIG9ubHkgYWZmZWN0cyBwcm9ncmFtcyB0aGF0IG5lZWQgTUlESS4KCgkqIG1lbW9yeS9oZWFwLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCByaWQgb2Ygc2hhcmVkIGhlYXAgZml4bWUgbWVzc2FnZXMuCglTbGlnaHRseSBjb3JyZWN0ZWQgbXkgaGVhcCBjb21taXQgcGF0Y2ggKFhpbGlueCkuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1lcmdlZCBET1NWTV9JbnQgd2l0aCBET1NWTV9TaW11bGF0ZUludCwgYW5kIG1hZGUgaXQgaGFuZGxlIGFwcHMgdGhhdAoJcHVycG9zZWZ1bGx5IHNodWZmbGUgdGhlIGludGVycnVwdCB2ZWN0b3JzIGFyb3VuZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglUbyBpbXByb3ZlIGN1c3RvbS1kcmF3biBpdGVtcywgYWRkIGZvY3VzIGJvcmRlciB0byBpdGVtUmVjdHMgYW5kIGRvCglub3Qgb3ZlcmxhcCB0aGVtLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvY29tbS5oLCBpbmNsdWRlL21zZG9zLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvY29tbS5jLCBtc2Rvcy9pbnQxMS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglNb3ZlZCBjb21tLmMgaW50byBrZXJuZWwzMi4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2xhaW0gdGhhdCBvdXIgaGVhZGVycyBjb25mb3JtIHRvIHRoZSB2ZXJzaW9uIDUuMC4KCgkqIGluY2x1ZGUvcHJzaHQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgc3RyaW5nIGZpZWxkcyBpbiBQUk9QU0hFRVRQQUdFQSBzaG91bGQgYmUgQU5TSSBzdHJpbmdzLgoKCSogaW5jbHVkZS9vbGVjdGwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSBEVU1NWV9VTklPTl9OQU1FIGluIGZhdm9yIG9mIERVTU1ZVU5JT05OQU1FLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBtaXNzaW5nIFRWSU5TRVJUU1RSVUNUIHN5bm9ueW1zLgoJQWRkZWQgbWlzc2luZyBDQkVJRl94eHggZGVmaW5pdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGluY2x1ZGUvb2xlYXV0by5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBzaWduYXR1cmUgb2YgU3lzQWxsb2NTdHJpbmdCeXRlTGVuLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYywgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXR1cyBiYXJzIG9uIG1hbmFnZWQgd2luZG93cyBzaG91bGQgbm90IGhhdmUgU0laRUdSSVAgc3R5bGUuCgoJKiBkbGxzL250ZGxsL3JlZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSByZWcgdGhlIGRlZmF1bHQgb3V0cHV0IGNoYW5lbC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJZ25vcmUgc2V0c29ja29wdCBjYWxscyB0aGF0IG1ha2UgdGhlIHNpemUgb2YgdGhlIHJlY2VpdmUgYnVmZmVyIHRvbwoJc21hbGwuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVN1Yml0ZW1zIG9mIGxpc3R2aWV3cyB3ZXJlIG5vdCBwYWludGVkIHdpdGggdGhlIHJpZ2h0IGJhY2tncm91bmQgd2hlbjoKCS1MVlNfRVhfRlVMTFJPV1NFTEVDVCBzdHlsZSBpcyBkZWZpbmVkCgktaXRlbSBpcyBzZWxlY3RlZAoJLUxpc3R2aWV3IGRvZXNuJ3QgaGF2ZSB0aGUgZm9jdXMuCgoJKiBzZXJ2ZXIvc29jay5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglBZnRlciBhY2NlcHQgaXMgY2FsbGVkIG9uIHRoZSBzb2NrZXQsIHRoZSBsaXN0ZW5pbmcgc29ja2V0IG5lZWRzIHRvIGJlCglyZXNlbGVjdGVkLgoKCSogbWVtb3J5L3JlZ2lzdHJ5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzIG9uIGRhdGEgcmV0dXJucyBmcm9tIFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOiBLb25yYWQgUmllY2sgPGtyQHIwcS5jeD4KCUNoYW5nZWQgcmVwbmUgdG8gcmVwbnogZm9yIFNvbGFyaXMgYXNzZW1ibGVyLgoKMjAwMC0xMC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2lubnQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBMQ1RZUEUsIEdldExvY2FsZUluZm8sIE5VTUJFUkZNVCwgQ1VSUkVOQ1lGTVQgYW5kIHRoZSByZWxhdGVkCglBUEkgdG8gd2lubmxzLmguCglNb3ZlZCBMQU5HX3h4eCwgU1VCTEFOR194eHgsIFNPUlRfeHh4IGFuZCBJU19URVhUX1VOSUNPREVfeHh4IHRvCgl3aW5udC5oLgoKCSogZGxscy91c2VyL3Jlc291cmNlLmMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy93aW5oZWxwLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWFueSBtaXNzaW5nICpQeHh4IHR5cGVzLgoJUmVtb3ZlZCBhIGZldyAqTFB4eHggdHlwZXMgdGhhdCBhcmUgbm90IHN1cHBvc2VkIHRvIGJlIHRoZXJlIChpbgoJcGFydGljdWxhciBMUElDT05JTkZPKS4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgKkxQQ3h4eCB0eXBlcyAoTUVOVUlURU1JTkZPLCBTQ1JPTExJTkZPLAoJRExHSVRFTVRFTVBMQVRFKS4KCVdJTkhFTFAgYW5kIFBFX0FDQ0VMIGFyZSBpbnRlcm5hbCB0eXBlcy4KCU1VTFRJS0VZSEVMUCBhbmQgSEVMUFdJTklORk8gYm90aCBoYXZlIGFuIEEgYW5kIFcgdmFyaWFudC4KCU5VTUJFUkZNVCwgQ1VSUkVOQ1lGTVQgYW5kIHRoZSByZWxhdGVkIEFQSSBiZWxvbmcgdG8gd2lubmxzLmguCglBZGRlZCBtaXNzaW5nIEFSV194eHggZGVmaW5lcyAoZm9yIHN5c21ldHJpY3MpLgoKCSogaW5jbHVkZS93dHlwZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglST1RGTEFHUyBoYXZlIHRoZWlyIG93biBpZmRlZiBwcm90ZWN0aW9uLCB0YWtlIHRoZW0gb3V0IG9mIHRoZQoJX1NFQ1VSSVRZX0RFRklORUQgaWZkZWYgYmxvY2suCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgZGVjbGFyYXRpb24gZm9yIEdldEVuaE1ldGFGaWxlRGVzY3JpcHRpb24uCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIEZvbnRzIHJlZ2lzdHJ5IGtleS4KCgkqIHdpbjMyL2V4Y2VwdC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9uIGZvciBkZWJ1Z2dlciBzdGFydHVwIGV2ZW50IGNyZWF0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRml4IGRlcHJlc3NlZCBzdGF0ZSB3aXRoIGZsYXQgdG9vbGJhcnMgc28gcHJlc3NpbmcgdGhlIGJ1dHRvbnMgZHJhd3MKCXRoZSBidXR0b24gaW4gYSBkZXByZXNzZWQgc3RhdGUuICBGaXggYml0bWFwIG9mZnNldHMsIGZpeGVzIGJpdG1hcAoJb2Zmc2V0IHByb2JsZW1zIGluIGZpbGUgY29tbW9uIGRpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglPbiBJbnNlcnRJdGVtIHdpdGggVFZJX0ZJUlNULCB0aGUgY2hlY2sgZm9yIHJlc2V0dGluZyBmaXJzdFZpc2libGUKCW11c3QgYmUgZG9uZSAqYmVmb3JlKiB0aGUgcGFyZW50J3MgZmlyc3RDaGlsZCBjaGFuZ2VzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IG5vbi1idWZmZXJlZCBvdmVybGF5cy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSZXdyaXRlIHRvIHN1cHBvcnQgcm93cyBvZiBiYW5kcy4KCURyYXcgc2VwYXJhdG9ycyBiZXR3ZWVuIGJhbmRzIGluIHJvd3MgYW5kIGJldHdlZW4gcm93cy4KCVN1cHBvcnQgdGV4dCBhbmQgYmFja2dyb3VuZCBjb2xvciBhbmQgY29sb3IgcHJvcGFnYXRpb24uCglJbXByb3ZlIGxheW91dCBjb2RlLgoJTWFrZSBmTWFzayBpbiBpbnRlcm5hbCBzdHJ1Y3R1cmUgdGhlIGluZGljYXRvciBvZiB2YWxpZCBpbmZvcm1hdGlvbi4KCUZpeCBzaXplIG9mIGdyaXBwZXJzLgoJQWRkIGRlYnVnZ2luZyB0cmFjZXMgZm9yIGZ1dHVyZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jb20+CglTaW1wbGUgTlVMTCBjaGVjay4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBCYWNrZ3JvdW5kIHNob3VsZCBub3QgYmUgZHJhd24gaWYgdGhlIGJhY2tncm91bmQgY29sb3IgaXMgQ0xSX05PTkUuCgktIERvbid0IGNoYW5nZSB0aGUgc2l6ZSB0byAwIGZvciB0aGUgaGVhZGVyIGNvbnRyb2wgb2YgbGlzdHZpZXcgd2l0aAoJICBMVlNfTk9DT0xVTU5IRUFERVIgc3R5bGUuIEluIGZhY3QganVzdCBzZXR0aW5nIEhEU19ISURERU4gdG8gdGhlCgkgIGhlYWRlciBjb250cm9sIGlzIGVub3VnaC4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2NvbnZlcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgMTYgKDU2NSkgLT4gMTUgKDU1NSkgYml0IGRlcHRoIGNvbnZlcnRlci4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN1cHBvcnQgZm9yIGNwOTM2LgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOiBXb3JrLWFyb3VuZCBmb3IgZ2NjIGJ1Zy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW1udGVkIEdldEZvdXJDQ0NvZGVzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVuYWJsZSBYRjg2dm1vZGUgc3dpdGNoaW5nIHBvc3NpYmxlIGZvciBYMTEgdG9vLgoKCSogZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc2FjbS93aW5lYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFBDTSBjb252ZXJ0ZXIgaW50ZXJuYWwgZHJpdmVyLgoJQSBmZXcgZHJpdmVyIGhhbmRsaW5nIGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgdGhlIE9wZW5HTCBkZXRlY3Rpb24gY29kZS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGxvYWRpbmcgb2Ygc3ltYm9scyBmcm9tIGxpYnJhcmllcy4KCgkqIHdpbjMyL2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVByZXZlbnQgU2V0RmlsZUF0dHJpYnV0ZUEgZnJvbSBtYWtpbmcgZGlyZWN0b3J5IHJlYWQtb25seS4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUVuYWJsZSBhbm9ueW1vdXMgc3RydWN0L3VuaW9uIHN1cHBvcnQgYnkgZGVmYXVsdCBpbiBib3RoIEMgYW5kIEMrKy4KCURpc2FibGUgdGhlbSBmb3IgY29tcGlsZXJzIGtub3duIG5vdCB0byBzdXBwb3J0IHRoZW0uCglEaXNhYmxlIHRoZW0gZm9yIHRoZSBXSU5FIGNvZGUuCgoJKiBpbmNsdWRlL2RkZS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBmb3VyIERERWxQYXJhbSBmdW5jdGlvbnMuCglOb3cgbmVlZHMgYW4gJ2V4dGVybiAiQyInIHByb3RlY3Rpb24gZm9yIEMrKy4KCgkqIGRsbHMvdXNlci9kZGVtbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgcGFyYW1ldGVyIHR5cGVzIGFuZCBjb21tZW50cyBvZiB0aGUgRERFbFBhcmFtIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmluZXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlZCBzdHJheSBBL1cgZnJvbSBpbnZvY2F0aW9ucyBvZiBXSU5FTElCX05BTUVfQVcuCgoJKiBtc2Rvcy9pbnQxMS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglSZW1vdmVkIGRlcGVuZGVuY3kgb24gZ2xvYmFscyBMUFRbXSBhbmQgQ09Ne30uCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvb2xlYXV0by5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBzb21lIG9mIHRoZSBBUElzIGludHJvZHVjZWQgaW4gV2luOTgsIG1vc3RseSB0aGUgVmFyWHh4IG1hdGhzIEFQSXMuCgoJKiBtc2Rvcy92Z2EuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJUmVwbGFjZSBudWxsIGJ5dGVzIGJ5IHNwYWNlcyBpbiBXcml0ZUNvbnNvbGVPdXRwdXRBIGNhbGwuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1DSUNEQSBkaWRuJ3Qgb3Blbi9jbG9zZSB0aGUgZG9vciB3aGVuIGNhbGxpbmcgdGhlIGNvbW1hbmQgd2l0aG91dAoJdmFsaWQgcGFyYW1ldGVyIGJsb2NrIChpLmUuID09IE5VTEwpLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIE9sZUxvY2tSdW5uaW5nIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3RlZCBzb21lIHNlZ3ZzIHRoYXQgb2NjdXIgd2l0aCBvd25lcmRhdGEgbGlzdHZpZXdzLgoKCSogb2JqZWN0cy9yZWdpb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuIHZhbHVlcyBhcmUgcmV2ZXJzZWQgaW4gZmFpbHVyZS9yZ2RhdGEgPT0gTlVMTCBjYXNlIGluCglHZXRSZWdpb25EYXRhICh3YXMgbWVyZ2UgZXJyb3IgYnkgbWUpLgoKCSogd2luMzIvZXhjZXB0LmMsIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUNoYW5nZWQgZGVidWdnZXIgbGF1bmNoaW5nIHRvIGF1dG8gcGVyIGRlZmF1bHQuCgoJKiBkbGxzL2tlcm5lbC9ubHMvZGFuLm5sczoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJRGVmaW5lIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFIGZvciBEYW5pc2ggbG9jYWxlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN1cHByZXNzIGp1bmsgbm9pc2UgYXQgc3RhcnR1cCBvZiBEaXJlY3RTb3VuZCBvbiBTQiBMaXZlISBhbmQgRVMgMTM3MS4KCjIwMDAtMTAtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RyaXZlLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGZpbGVzL2RyaXZlLmM6CglVc2Ugc3BlY2lhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdHJhbnNtaXQgdGhlIGN3ZCBvZiB0aGUgdmFyaW91cwoJZHJpdmVzIHRvIGNoaWxkIHByb2Nlc3NlcyAoYmFzZWQgb24gYSBwYXRjaCBieSBBbmRyZWFzIE1vaHIpLgoKCSogaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2luaW5ldC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdGhlICc7JyBlbmRpbmcgb24gbGluZXMgdXNpbmcgdGhlIERFQ0xfV0lORUxJQl9UWVBFX0FXIGFuZAoJV0lORUxJQl9OQU1FX0FXIG1hY3Jvcy4KCgkqIGluY2x1ZGUvb2xlYXV0by5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgbWlzc2luZyAnU3lzQWxsb2NTdHJpbmcnIHByb3RvdHlwZXMuCglBZGRlZCBzb21lIG1pc3NpbmcgJ1R5cGVMaWInIHByb3RvdHlwZXMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL2JpdG1hcHMvb2NyX2liZWFtOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgd2hpdGUgYm9yZGVyIGFyb3VuZCB0aGUgSS1iZWFtIGN1cnNvci4KCjIwMDAtMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglQcm90ZWN0IEdsb2JhbEhhbmRsZSgpIGFnYWluc3QgYmFkIHBhcmFtZXRlcnMuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOgoJRml4ZWQgYmFja3RyYWNlIGZvciBhcHBzIHRoYXQgbmV2ZXIgY2FsbGVkIGRvd24gdG8gMTYtYml0IGNvZGUuCm4KCSogbG9hZGVyL3Rhc2suYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBzdXJlIHRoYXQgd2Ugc2tpcCB0YXNrcyB3aXRoIG1pc3NpbmcgaEluc3RhbmNlLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglJbnRyb2R1Y2VkIGEgbmV3IGFyZW5hIGZsYWcgY2FsbGVkIEdBX0RPU01FTSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCglET1NNRU0gYW5kIG5vcm1hbCAid2luZG93cyIgZ2xvYmFsIG1lbS4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeGVzIGluIG1taW8sIHJlbGF0ZWQgdG8gYnVmZmVyaW5nIGluIHJlY29yZCBtb2RlLgoKMjAwMC0xMC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFOgoJUmVsZWFzZSAyMDAwMTAwMi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0xMC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVByb3RlY3QgR2xvYmFsSGFuZGxlKCkgYWdhaW5zdCBiYWQgcGFyYW1ldGVycy4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6CglGaXhlZCBiYWNrdHJhY2UgZm9yIGFwcHMgdGhhdCBuZXZlciBjYWxsZWQgZG93biB0byAxNi1iaXQgY29kZS4KCgkqIGxvYWRlci90YXNrLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2Ugc3VyZSB0aGF0IHdlIHNraXAgdGFza3Mgd2l0aCBtaXNzaW5nIGhJbnN0YW5jZS4KCgkqIG1lbW9yeS9nbG9iYWwuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJSW50cm9kdWNlZCBhIG5ldyBhcmVuYSBmbGFnIGNhbGxlZCBHQV9ET1NNRU0gdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgoJRE9TTUVNIGFuZCBub3JtYWwgIndpbmRvd3MiIGdsb2JhbCBtZW0uCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXhlcyBpbiBtbWlvLCByZWxhdGVkIHRvIGJ1ZmZlcmluZyBpbiByZWNvcmQgbW9kZS4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgZGxscy9udGRsbC9yZWcuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJQ29udmVydCBOdFF1ZXJ5S2V5IGFuZCBOdEVudW1lcmF0ZUtleSB0byB0aGUgbmV3IHJlcXVlc3QgbWVjaGFuaXNtLgoJRml4ZWQgYSBmZXcgYnVncy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglGb3J3YXJkIGFsbCBsYXJnZSBpbnRlZ2VyIGZ1bmN0aW9ucyB0byBudGRsbC4KCgkqIG9sZS9vbGUybmxzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXREYXRlRm9ybWF0QTogQ2hlY2sgcmFuZ2UgYW5kIHJlY2FsY3VsYXRlIHdEYXlPZldlZWsuCglPTEVfR2V0Rm9ybWF0QXxXOiBGaXggdHJhbnNmb3JtYXRpb24gb2Ygd0RheU9mV2VlayB0bwoJTE9DQUxFX1MoQUJCUkVWKURBWU5BTUV4LgoKCSogaW5jbHVkZS93bmFzcGkzMi5oLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93bmFzcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9tbXN5c3RlbS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdXNlci5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBTdXBwb3J0IGZvciBzdGRjYWxsNjQKCS0gTWlub3IgQVBJIHVwZGF0ZXMuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglCZWF1dGlmaWVkIHRoZSBsb2Fkb3JkZXIgYXJyYXkgKGdyb3VwIERMTHMgYWNjb3JkaW5nIHRvIGZ1bmN0aW9uYWxpdHksCglhZGQgZ3JvdXAgaGVhZGVyIGNvbW1lbnRzLCAuLi4pLCBhZGRlZCBidWlsdGluIHgxMWRydiBhbmQgd2luYXNwaS4KCgkqIGRsbHMvbXNhY20vaW50ZXJuYWwuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVNpbGVuY2UgdW5uZWVkZWQgZXhjZXB0aW9uIHRvIGFsbG93IGVhc2llciBBQ00gZGVidWdnaW5nLgoKMjAwMC0xMC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYzoKCUNvbnZlcnRlZCBzb21lIG9mIHRoZSByZWdpc3RyeSBzZXJ2ZXIgcmVxdWVzdHMgdG8gdGhlIG5ldyByZXF1ZXN0CgltZWNoYW5pc20uCgoJKiB3aW4zMi90aW1lLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC90aW1lLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvdGltZXIuYywgZGxscy9rZXJuZWwvdGltZS5jOgoJSW1wbGVtZW50ZWQgYSBidW5jaCBvZiBsYXJnZSBpbnRlZ2VyIGZ1bmN0aW9ucyBpbiBudGRsbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jOgoJQWRkZWQgc3RkY2FsbDY0IGVudHJ5IHBvaW50IHR5cGUgdG8gYWxsb3cgY29ycmVjdCByZWxheSBkZWJ1Z2dpbmcKCXN1cHBvcnQgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiA2NC1iaXQgdmFsdWVzLgoKMjAwMC0wOS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9oZWFwLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2Ugc3VyZSB3ZSBjb21taXQgZW5vdWdoIG1lbW9yeSBpbiBhIG5ldyBzdWJoZWFwLgoKCSogZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgZGxscy93aW5zcG9vbC9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCS0gbW92ZWQgc29tZSBjb2RlIGZyb20gV0lOU1BPT0xfR2V0UHJpbnRlckRyaXZlciBpbnRvIG5ldyBmdW5jdGlvbgoJICBXSU5TUE9PTF9HZXREcml2ZXJJbmZvRnJvbVJlZwoJLSBidWcgZml4IGluIGZ1bmN0aW9uIEdldFByaW50ZXJEaXJlY3RvcnlXOiBmcmVlIGxvY2FsIHZhcmlhYmxlIG5vdAoJICB0aGUgb25lIGZyb20gZnVuY3Rpb24gaW50ZXJmYWNlCgktIGltcGxlbWVudGVkIEVudW1QcmludGVyRHJpdmVyc0F8VwoKCSogZmlsZXMvcHJvZmlsZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB0aGUgZGVmYXVsdCB2YWx1ZSBoYW5kbGluZyAodHJhaWxpbmcgc3BhY2VzIG9mIHRoZSBkZWZhdWx0IHZhbHVlCglhcmUgY2xpcHBlZCkuCglzZWN0aW9uID09IE5VTEwsIGtleV9uYW1lID09IE5VTEwgdW5kb2MuIGZlYXR1cmUgaXMgb25seSB2YWxpZCBpbiBXaW4zMi4KCgkqIGRsbHMvbnRkbGwvc3luYy5jLCBpbmNsdWRlL250ZGRrLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9leGNlcHQuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvbmV3Zm5zLmMsIHdpbjMyL3Byb2Nlc3MuYywgd2luMzIvdGltZS5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aW1lLmM6CglNb3ZlZCBhIGJ1bmNoIG9mIHJvdXRpbmVzIHRvIGtlcm5lbDMyLmRsbCAod2l0aCB0aGUgaGVscCBvZgoJRGltaXRyaWUgTy4gUGF1bikuCgoJKiBvYmplY3RzL3BhbGV0dGUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdESVNlbGVjdFBhbGV0dGUxNiBjaGVja2VkIEdldE9iamVjdFR5cGUoKSByZXR1cm4gdmFsdWUgZm9yCglQQUxFVFRFX01BR0lDIGluc3RlYWQgb2YgT0JKX1BBTC4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBETExWRVJTSU9OSU5GTyB0byBzaGx3YXBpLmguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUxldCBJbnRlcm5hbEV4dHJhY3RJY29uMTYgbG9hZCBpY29ucyBmcm9tIGJ1aWx0aW4gRExMcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vZGlmaWVkIHRoZSBiaXRtYXAgY2VudGVyaW5nIGFsZ29yaXRobSB0byB0YWtlIHRoZSBidXR0b24ncyBib3JkZXIKCWludG8gYWNjb3VudC4KCgkqIHdpbmRvd3MvdGltZXIuYywgaW5jbHVkZS9tZXNzYWdlLmgsIHdpbmRvd3MvbWVzc2FnZS5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglCZWZvcmUgY2FsbGluZyB0aGUgdGltZXIgd2luZG93IHByb2MsIG1ha2Ugc3VyZSBpdCBpcyB2YWxpZC4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9zZWMuYzoKCVJlbW92ZWQgYSBmZXcgZGVwZW5kZW5jaWVzIG9uIGtlcm5lbDMyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCU1vdmVkIGNyaXRpY2FsIHNlY3Rpb24gaW1wbGVtZW50YXRpb24gdG8gbnRkbGwuCgoJKiB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luMzIvTWFrZWZpbGUuaW4sIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgdHN4MTEvTWFrZWZpbGUuaW4sIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2xlL01ha2VmaWxlLmluLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjZW11L01ha2VmaWxlLmluLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbG9hZGVyL25lL01ha2VmaWxlLmluLCBtZW1vcnkvTWFrZWZpbGUuaW4sIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2Rvcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3dpbjE2ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvTWFrZWZpbGUuaW4sIGZpbGVzL01ha2VmaWxlLmluLCBncmFwaGljcy9NYWtlZmlsZS5pbiwgY29uc29sZS9NYWtlZmlsZS5pbiwgY29udHJvbHMvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW46CglNb3ZlZCAkKE1PRFVMRSkubyBydWxlIG91dCBvZiBNYWtlLnJ1bGVzIGludG8gdGhlIGluZGl2aWR1YWwKCU1ha2VmaWxlcy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NobHdhcGkvcmVnLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIFNIRGVsZXRlRW1wdHlLZXlBLCBTSERlbGV0ZUtleUEuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOgoJU2VyZ2VpIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNvbT4KCUZpeGVkIHJldHVybiB2YWx1ZXMgb2YgR2V0UmVnaW9uRGF0YS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgUmVsZWFzZUNhcHR1cmUgKHdoaWNoIHRyaWdnZXJzIFdNX0NBUFRVUkVDSEFOR0VEKSBhZnRlciB0aGUKCVdNX0NPTU1BTkQgZm9yIHRoZSBidXR0b24gaGFzIGJlZW4gc2VudCwgcmF0aGVyIHRoYW4gYmVmb3JlLgoKCSogZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVc2Ugd2F2ZWF1ZGlvLCBub3Qgd2F2ZWZvcm0uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGNvdXBsZSBvZiBUUkFDRSBtZXNzYWdlcy4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZGVkIG1pc3NpbmcgY2FzdC4KCgkqIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHJldHVybiB0eXBlIG9mIG1peGVyTWVzc2FnZTE2LgoKCSogaW5jbHVkZS93aW52ZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW5hbWVkIFZTX1VTRVJfSU5GTyB0byBWU19VU0VSX0RFRklORUQuCgoyMDAwLTA5LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9idWlsdGluMzIuaCwgbWlzY2VtdS8uY3ZzaWdub3JlLCBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L21haW4uYywgbWlzY2VtdS93aW5lLnNwZWMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLCBNYWtlLnJ1bGVzLmluOgoJQ2hhbmdlZCB0aGUgV2luMzIgZGxsIGRlc2NyaXB0b3IgdG8gYmUgaW4gSU1BR0VfTlRfSEVBREVSUyBmb3JtYXQuCglHZW5lcmF0ZSB0aGUgaW1wb3J0IHRhYmxlIGRpcmVjdGx5IGluIFBFIGZvcm1hdC4KCUFkZGVkIGd1aS9jdWlleGVfbm9fbWFpbiBtb2RlcyBpbiBFWEUgc3BlYyBmaWxlcywgYW5kIHVzZSB0aGlzIGZvciB0aGUKCW1haW4gd2luZSBiaW5hcnkuCgoJKiBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYzoKCUFkZGVkIGEgZmV3IG1pc3NpbmcgaW1wb3J0cy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHZhcmlvdXMgdHlwZSBhbmQgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdCBhcmUgbmVlZGVkIHRvIGNvbXBpbGUKCXRoZSBsYXRlc3QgTUZDLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RvcmUgYSBjb3B5IG9mIE1JRElPUEVOREVTQyBpbmZvcm1hdGlvbiBpbnN0ZWFkIG9mIHBvaW50ZXIuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVubG9jayB3aW4xNiBjcnN0IHdoaWxlIHRodW5raW5nIHVwIHRvIDMyIGJpdCBkbGwuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJSW5jbHVkZSA8dW5pc3RkLmg+IGZvciBwcm90b3R5cGUgb2Ygc2VsZWN0KCkuCgoJKiBzZXJ2ZXIvc29jay5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTb2NrZXQgcmV0dXJuZWQgYnkgYWNjZXB0IGZ1bmN0aW9uIG9mIE1pY3Jvc29mdCBBUEkgc2hvdWxkIGtlZXAgdGhlCglwcm9wZXJ0aWVzIG9mIHRoZSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGFsc28gdHJ1ZSBmb3Igbm9uLWJsb2NraW5nCglwcm9wZXJ0eS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUlmIHdpbmRvdyB3YXMgbm90IHJlc2l6ZWQgYW5kIG5vdCBtb3ZlZCwgcmVwYWludCBvbmx5IGl0c2VsZiBleGNsdWRpbmcKCXBhcmVudC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMzIuaCwgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglHZW5lcmF0ZSBXaW4zMiBkbGwgZGVzY3JpcHRvciBzdHJ1Y3R1cmUgaW4gdGhlIC5zcGVjLmMgZmlsZSBzbyB0aGF0IHdlCglkb24ndCBuZWVkIHRvIGRlcGVuZCBvbiBidWlsdGluMzIuaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS96bW91c2UuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZWQgem1vdXNlLmgsIG1vdmVkIHdoZWVsIGNvZGUgZnJvbSBtb3VzZS5oIGludG8gaXQuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJTUNJX1NUQVRVU19MRU5HVEggb24gV2luZG93cyByZXR1cm5zIG9uZSBmcmFtZSBsZXNzIHRoYW4gdGhlIHRvdGFsCgl0cmFjayBsZW5ndGggZm9yIHRoZSBsYXN0IHRyYWNrIG9uIGEgQ0QuICBUaGlzIGFsc28gYWZmZWN0cyBxdWVyaWVzCglmb3IgdGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgQ0QuCgoJKiBtc2Rvcy9kb3Nhc3BpLmMsIGluY2x1ZGUvd2luZS93aW5hc3BpLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93bmFzcGkzMi5oLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzoKCUZpeGVkIGEgZmV3IG5vbiBwb3J0YWJsZSB6ZXJvLXNpemUgYXJyYXkgZGVjbGFyYXRpb25zLgoKCSogZmlsZXMvZHJpdmUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGF2ZSB0aGUgVU5JWCBjd2QgZm9sbG93IHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvbiB0aGUgY3VycmVudCBkcml2ZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU9uIHJlY2VwdGlvbiBvZiBhIEZvY3VzT3V0IGV2ZW50LCBkb24ndCBkZWFjdGl2YXRlIHRoZSBhcHBsaWNhdGlvbiBpZiB0aGUKCW5leHQgd2luZG93IHRvIGdldCB0aGUgZm9jdXMgaXMgYSBXaW5lIHdpbmRvdy4KCjIwMDAtMDktMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW46CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBSZW1vdmUgd2lubW0gaGFjayBpbiBkcGxheSBjb2RlCgktIEZpeCB1cCBzb21lIG1pc3NpbmcgaG9sZXMgaW4gdGhlIGNvZGUKCS0gTW9yZSBtZXNzYWdlIGltcGxlbWVudGF0aW9uCgktIFN0YXR1cyBkb2N1bWVudGF0aW9uIHVwZGF0ZQoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJTWlncmF0ZSAkTERGTEFHUyBmcm9tIGNvbmZpZ3VyZSB0byBNYWtlZmlsZSBhbmQgaW50byBtYWluIHdpbmUKCWV4ZWN1dGFibGUuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRGlzcGxheSBhbiBFUlIoKSBpbiBjYXNlIG9mIHVuZGVmaW5lZCBzeW1ib2xzLgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVN0YXJ0ZWQgc29tZSBiYXNpYyB3b3JrIG9uIHRoZSBtb3JlIG9yIGxlc3MgdW5kb2N1bWVudGVkIFNFVFVQWAoJZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJU3VwcG9ydCBmb3IgVEJTVFlMRV9FWF9EUkFXRERBUlJPV1Mgc3R5bGU7IHJlc2V0IGNhcHR1cmUgYW5kIGJ1dHRvbgoJcHJlc3NlZCBmbGFncyBvbiBXTV9DQVBUVVJFQ0hBTkdFRC4KCgkqIG9iamVjdHMvZGMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV09SRCBpcyB1bnNpZ25lZCwgc28gd2UgbmVlZCB0byB0cmFuc2FsdGUgMHhmZmZmIGludG8gLTEuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbXNkb3MvZG9zYXNwaS5jLCBtc2Rvcy94bXMuYywgb2xlL29sZTJubHMuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbmUva2V5Ym9hcmQxNi5oLCBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL3dpbmFzcGkuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZS93aW5uZXQxNi5oLCBpbmNsdWRlL3dpbmUvd2luc29jazE2LmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbnByb2MuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd2luc29jazIuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd2ludmVyLmgsIGluY2x1ZGUvd25hc3BpMzIuaCwgaW5jbHVkZS93b3dudDMyLmgsIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvbmVleGUuaCwgaW5jbHVkZS9ub25jbGllbnQuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvdG9vbGhlbHAuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5hc3BpLmgsIGluY2x1ZGUvYXNwaS5oLCBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kY2UuaCwgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9nbG9iYWwuaCwgaW5jbHVkZS9sb2NhbC5oLCBpbmNsdWRlL2x6ZXhwYW5kLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaWYxNjMyL3Nub29wLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBmaWxlcy9maWxlLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3NvdW5kMTYuYywgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5hc3BpL2FzcGkuaCwgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywgZGxscy92ZXJzaW9uL3ZlcjE2LmMsIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvZGRlbWwxNi5oLCBkbGxzL3VzZXIvYmlkaTE2LmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbXN2aWRlby92ZncxNi5oLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc2FjbS9tc2FjbWRydi5oLCBkbGxzL21zYWNtL3dpbmVhY20uaCwgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9nZGkvYmlkaTE2LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL3N0cmVzcy5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYzoKCU1vdmVkIGFsbCBXaW4xNiBkZWZpbml0aW9ucyBvdXQgb2YgdGhlIHN0YW5kYXJkIFdpbmRvd3MgaGVhZGVycy4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBdm9pZCBjcmFzaGVzIGlmIDE2LWJpdCBtb2R1bGUgaGFuZGxlIHdhcyBwYXNzZWQgdG8gdGhlIDMyLWJpdAoJcmVzb3VyY2UgZW51bWVyYXRvci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGluY2x1ZGUvZGRyYXcuaCwgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaCwgd2luZS5pbmk6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgRGlyZWN0RHJhdyBvdmVybGF5cyB1c2luZyB0aGUgWFZpZGVvIGV4dGVuc2lvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUNvZGUgY2xlYW51cC4KCUFkZCBjaGVja2luZyBmb3IgaW52YWxpZCBEQkNTIHRyYWlsZXIgYnl0ZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgY29tbWN0bCBoZWFkZXIgaXNzdWVzIHJlcG9ydGVkIGluIG5ld3Nncm91cC4KCgkqIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5lL3czMnNrcm5sLmgsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIHJlc291cmNlcy9zeXNyZXNfV2EucmM6CglBIGZldyBpbmNsdWRlcyBjbGVhbnVwLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIGxvYWRlci9tYWluLmMsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL29ial9xdWVyeWFzc29jaWF0aW9ucy5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9lcnJvcmluZm8uaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBpbmNsdWRlL2RsZ3MuaCwgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwgZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmM6CglSZW1vdmVkIHNoZWxsLmguIENsZWFuZWQgdXAgdGhlIG5lc3RlZCBpbmNsdWRlcyBtZXNzIGluIHdpbmUvb2JqXyouaC4KCjIwMDAtMDktMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVzZSBkb2N1bWVudGVkIERST1BGSUxFUyBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBpbnRlcm5hbCBEUk9QRklMRVNUUlVDVC4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9kZXZpY2UuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3dpbnByb2MuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQxNS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBtc2Rvcy9pbnQ1Yy5jLCBtc2Rvcy92eGQuYywgbXNkb3MveG1zLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5L2luc3RyLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL2Vycm9yLmMsIG1pc2Mvc3lzdGVtLmMsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zYXNwaS5jLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywgZGxscy9udGRsbC9ydGwuYywgZGxscy91c2VyL21vdXNlLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmM6CglSZW1vdmVkIHNvbWUgb2YgdGhlIFhYWF9yZWcgbWFjcm9zIG5vdyB0aGF0IHdlIGFyZSB1c2luZyB0aGUgc3RhbmRhcmQKCUNPTlRFWFQ4NiBzdHJ1Y3R1cmUgZXZlcnl3aGVyZS4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy91c2VyLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci90aW1lci5jLCB3aW4zMi9jb25zb2xlLmMsIG1pc2MvY29tbS5jLCBtaXNjL2NwdS5jLCBtaXNjL21haW4uYywgbWlzYy92ZXJzaW9uLmMsIG9sZS9vbGUybmxzLmMsIHNjaGVkdWxlci9ldmVudC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jZHJvbS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL21wci93bmV0LmMsIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jOgoJUmVtb3ZlZCBpbmNsdXNpb24gb2Ygd2luZS93aW5lc3RyaW5nLmggZnJvbSB3aW5iYXNlLmggYW5kIGFkZGVkIGl0IHRvCgl0aGUgQyBmaWxlcyB0aGF0IG5lZWQgaXQuCgoyMDAwLTA5LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBtZW1vcnkvaW5zdHIuYywgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBpbmNsdWRlL2xkdC5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL2Rvc2V4ZS5oOgoJTW92ZWQgbW9zdCBnbG9iYWwgZGF0YSBvdXQgb2YgdGhlIExQRE9TVEFTSyBzdHJ1Y3R1cmUuCglBbGxvY2F0ZSBEUE1JIHJlYWwtbW9kZSBzZWdtZW50cyBnbG9iYWxseSBhdCBzdGFydHVwLgoJVHJ5IHRvIGFsbG9jYXRlIERPUyBtZW1vcnkgYXQgYWRkcmVzcyAwLgoKCSogd2luZG93cy93aW4uYywgd2luZG93cy9tZXNzYWdlLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgZGxscy91c2VyL3VzZXIuc3BlYzoKCUNhbGwgV0hfR0VUTUVTU0FHRSBob29rIGluIFBlZWtNZXNzYWdlIHRvbyAoYmFzZWQgb24gYSBwYXRjaCBieSBSb2IKCUZhcm51bSkuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglMb2NrcyB0aGUgdmlydHVhbCB2aWV3cyBsaW5rZWQgbGlzdC4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgY29uZmlndXJlLmluLCBjb25maWd1cmU6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTWFrZSBjYWxscyB0byBnZXRob3N0YnluYW1lLCBnZXRob3N0YnlhZGRyLCBnZXRzZXJ2YnluYW1lLAoJZ2V0c2VydmJ5cG9ydCwgZ2V0cHJvdG9ieW5hbWUgYW5kIGdldHByb3RvYnludW1iZXIgdGhyZWFkLXNhZmUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglVc2UgYXBwcm9wcmlhdGUgY2hhcnNldCBpZiBmYWNlbmFtZXMgb2YgZm9udCBpcyBrbm93bi4KCVVzZSBDUF9BQ1AgaWYgREVGQVVMVF9DSEFSU0VUIGlzIHJlcXVlc3RlZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJSW4gV01fRFJBV0lURU0sIGFsd2F5cyBjYWxscyB0aGUgYXBwIHdpdGggYSB2YWxpZCBjdXJyZW50IGZvY3VzX2l0ZW0uCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvYnJlYWsuYzoKCUltcHJvdmVkIHN1cHBvcnQgZm9yIHZtODYgbW9kZS4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIHdoaWxlIGluIHZtODYgbW9kZS4KCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gdm04NiBzdXBwb3J0LgoKCSogd2luZG93cy9kaWFsb2cuYywgb2JqZWN0cy9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgZm9ybWF0IHN0cmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIHNldCBXU19DSElMRCBhbmQgQ0NTX1RPUCB0byB0aGUgdG9vbGJhcidzIHN0eWxlLgoJVE9PTEJBUl9DYWxjVG9vbGJhcigpOiBpZiB0aGUgYml0bWFwIHNpemUgaXMgMCwgdXNlIHRoZSBidWlsdGluCglkZWZhdWx0cy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgc2l6ZSBvZiB0aGUgY29tY3RsMzIgaW50ZXJuYWwgYml0bWFwcyBpcyAyNHgyNCBub3QgMjZ4MjYuCglGaXhlZCBtaW5vciB0eXBvcy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL1JFQURNRS53cmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpbGVuYW1lcyBtYXkgY29udGFpbiAnLycgYW5kICdcJy4KCVNtYWxsIHR5cG8gZml4ZXMuCgoyMDAwLTA5LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhaW50IGJhY2tncm91bmQgYmVmb3JlIGRyYXdpbmcgaXRlbSBhbmQgc3ViaXRlbXMuICBQYWludCBhbnkgYXJlYSBvZgoJdGhlIGNvbnRyb2wgbm90IG9jY3VwaWVkIGJ5IGl0ZW1zLiAgRWFybHkgb3V0IG9mIExJU1RWSUVXX1JlZnJlc2hYWFgKCWlmIG5vIGl0ZW1zIGV4aXN0LiBJbnZhbGlkYXRlUmVjdCgpIG9uIExCVVRUT05ET1dOIG9ubHkgaWYgdGhlIGNvbnRyb2wKCWhhcyBpdGVtcyB0byBkcmF3LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgbWlzYy9tYWluLmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBHZXRUaWNrQ291bnQgbm90IHVzZSB0aGUgd2hvbGUgVW5peCBlcG9jaCAoc2luY2UgMTk3MCkgYW55IG1vcmUsCglzaW5jZSB0aGF0IGNyYXNoZWQgc2V2ZXJhbCBnYW1lcyBvciBjYXVzZWQgcHJvYmxlbXMgd2l0aCB0aGVtIGFzIHRoZXkKCWFyZW4ndCB1c2VkIHRvIGEgaGlnaCBXaW5kb3dzIHVwdGltZSBvZiBtb3JlIHRoYW4gMjQuOSBkYXlzLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJUm9iZXJ0byBBdWd1c3RvIFB1bmdhcnRuaWsgPHB1bmdAa2FyaW5hLmV0Y29tLnVmcmdzLmJyPgoJQWRkZWQgU19JU0ZJRk8gY2hlY2sgZm9yIFNvbGFyaXMuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgbWFjcm8gZm9yIF9kZWNsc3BlYyAoYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzeW5vbnltIG9mCglfX2RlY2xzcGVjKS4KCVJlbW92ZWQgdGhlIGRsbGltcG9ydCBhbmQgZGxsZXhwb3J0IG1hY3Jvcy4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU11c3QgaW5jbHVkZSAnc3RkbGliLmgnLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEhBTkRMRV9XTV9OT1RJRlkgYW5kIEZPUldBUkRfV01fTk9USUZZLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9wc2RsZy5oLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5lcHMvd3BzX0VuLnJjLCBkbGxzL3dpbmVwcy93cHNfeHgucmMsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsIGRsbHMvTWFrZWZpbGUuaW46CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglQYXBlciBzaXplIGFuZCBvcmllbnRhdGlvbiBwcm9wIHNoZWV0IGZvciB3aW5lcHMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgRFRfUEFUSF9FTExJUFNJUywgRFRfRU5EX0VMTElQU0lTLCBhbmQgRFRfV09SRF9FTExJUFNJUwoJZmxhZ3MgaW4gRHJhd1RleHQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIFdpbkV4ZWMxNiB0byBoYW5kbGUgcXVvdGVkIGZpbGVuYW1lcyBjb3JyZWN0bHkuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Vycm9yaW5mby5oLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jOgoJRGFteWFuIE9nbnlhbm9mZiA8RGFteWFuQHJvY2tldG1haWwuY29tPgoJSUVycm9ySW5mbyBpcyBub3cgZGVyaXZlZCBmcm9tIElVbmtub3duLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3Qgc29tZSBzaXR1YXRpb25zIHdpdGggbGlzdHZpZXcgc2VsZWN0aW9ucy4gU3BlY2lmaWNhbGx5IGZpeGVkCglzaXR1YXRpb25zIHdoZXJlIGluIGFuIE9XTkVSREFUQSBsaXN0dmlldyB0aGUgc2VsZWN0aW9uIHJhbmdlcyBiZWNvbWUKCWludmFsaWQgaWYgdGhlIG51bWJlciBvZiBpdGVtcyBpcyBjaGFuZ2VkLiBBZGRpdGlvbmFsIGZpeGVzIGEgZmV3Cglwcm9ibGVtcyByZXN1bHRpbmcgaW4gbG9vcHMgaW4gUmVtb3ZlQWxsU2VsZWN0aW9ucy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgbWFjcm9zLCB0eXBlcyBhbmQgcHJvdG90eXBlcy4KCgkqIGluY2x1ZGUvd2lucmVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU5ldyBmaWxlLiBBbGwgUkMgZmlsZXMgZ2VuZXJhdGVkIGJ5IFZDNiBpbmNsdWRlIGFmeHJlcy5oIHdoaWNoIGluIHR1cm4KCWluY2x1ZGVzIHRoaXMgZmlsZS4KCgkqIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVsbGluZywgdHJhY2UgZml4ZXMuCgoJKiBtZW1vcnkvZW52aXJvbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgU2V0TGFzdEVycm9yKCkgaW4gR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJRGFteWFuIE9nbnlhbm9mZiA8RGFteWFuQHJvY2tldG1haWwuY29tPgoJQWRkZWQgZXJyb3IgY29ycmVjdGlvbiB3aGVuIHVzaW5nIHN5bWJvbCBvZmZzZXRzLgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHZvaWxhLmZyPgoJRml4ZWQgcmVlbnRyYW5jeSBpc3N1ZXMgaW4gcGxheS9zdG9wIG9wZXJhdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBQcmludERsZyBjb2xsYXRlIGljb25zLiAgQWRkIG9yaWVudGF0aW9uIGljb25zLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWJzIGZvciBzaGx3YXBpLjE1MSBhbmQgc2hsd2FwaS4xNTMuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHViIGZvciBDb0lzT2xlMUNsYXNzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTZXQgY2xvc2Ugb24gZXhlYygpIGZsYWcgYXQgdGltZXMgd2hlbiB3ZSBsZWF2ZSAvZGV2L2RzcCBhbmQKCS9kZXYvc2VxdWVuY2VyIG9wZW4uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIEZMQVRCVVRUT04gc3R5bGUgdGFicy4KCU1hZGUgd2lkdGggb2YgQlVUVE9OIHN0eWxlIHRhYnMgbm8gbGVzcyB0aGFuIDJ4IHRoZWlyIGhlaWdodC4KCUV4cGFuZGVkIGZvY3VzIHJlY3QgdG8gYmUganVzdCBpbnNpZGUgdGhlIGJvcmRlci4KCgkqIGRsbHMva2VybmVsL3Rvb2xoZWxwLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGQgRklYTUVzIGZvciBhbGwgdGhlc2UgbmljZSBjb21wbGV0ZWx5IHVuaW1wbGVtZW50ZWQgVE9PTEhFTFAKCWZ1bmN0aW9ucy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJZml4ZWQgdGhlIHdpbjk1IHJlZ2lzdHJ5IGxvYWRlciB0byBoYXZlIHNvbWV3aGF0IHN0cmljdGVyIGNoZWNraW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYnV0dG9uIGltYWdlIHRvIGJlIG9mZnNldCB0byB0aGUgY2VudGVyIG9mIHRoZSBidXR0b24gaG9yaXpvbnRhbGx5LAoJdmlzaWJsZSB3aXRoIFdpblppcCBhbmQgQ3V0ZUZUUCA0LjAuICBGaXhlZCBjb21waWxlIHdhcm5pbmdzIGZyb20gZm9ybWF0IHR5cGUKCXNwZWNpZmllcnMgaW4gdHdvIFRSQUNFJ3MuICBSZW1vdmVkIFRSQUNFIGluIFRPT0xCQVJfR2V0SXRlbVJlY3QoKS4gIEFkZGVkCglidXR0b24gd2lkdGggdG8gVFJBQ0UgaW4gVE9PTEJBUl9DYWxjVG9vbGJhcigpLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCBSZWRyYXdXaW5kb3coKSdzIHRvIEludmFsaWRhdGVSZWN0KCkncy4gIFJlZHJhd1dpbmRvdygpIHdhcwoJYmVpbmcgY2FsbGVkIHdpdGggUkRXX1VQREFURU5PVywgZm9yY2luZyBpbW1lZGlhdGUgcGFpbnRpbmcuICBBZGRlZAoJcmVkcmF3aW5nIGxvZ2ljIHRvIFNUQVRVU0JBUl9TZXRUZXh0VygpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBiZWhhdmlvciBvZiBUVlNfU0lOR0xFRVhQQU5EIHN0eWxlIGJyb2tlbiBpbiBDb3JlbCBtZXJnZS4gIE9wdGltaXplCglyZWRyYXdpbmcgaW4gVFJFRVZJRVdfU2V0SXRlbUEoKSB0byByZWRyYXcgb25seSBpZiB0aGUgaXRlbSBjaGFuZ2VzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmFpc2VkIE1BWF9ETExTIHRvIDEwMC4KCjIwMDAtMDktMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5zb2NrMi5oLCBpbmNsdWRlL3dpbnN2Yy5oLCBpbmNsdWRlL3d0eXBlcy5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIHNvbWUgbWlzc2luZyBXSU5FTElCX05BTUVfQVcgZGVmaW5pdGlvbnMsIHR5cGVzIGFuZCBtZXNzYWdlcwoJLSBTbWFsbCBwcm90b3R5cGUgZml4ZXMKCgkqIHJlbGF5MzIvc25vb3AuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDYXRjaCBFWENFUFRJT05fUFJJVl9JTlNUUlVDVElPTiBleGNlcHRpb24gdG9vLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglOb3RpZmljYXRpb24gTk1fQ0xJQ0ssIE5NX1JDTElDSyBhbmQgTk1fREJMQ0xLIHNlbnQgYnkgdGhlIGxpc3R2aWV3CglzaG91bGQgc2V0IGxQYXJhbSB0byBhIE5NTElTVFZJRVcgaW5zdGVhZCBvZiBhIE5NSERSLiBBY2NvcmRpbmcgdG8KCU1TRE4gZG9jLCBpdCBpcyBsaWtlIHRoYXQgc2luY2UgdmVyc2lvbiA0LjcxLCBXaW5lIGlzIHJldHVybmluZyA1LjAgYXMKCXRoZSBETEwgdmVyc2lvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgd2luZG93IGxvY2sgcHJvYmxlbSBpbiBTZXRNZW51KCkuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEhlbm5pbmcgSG9mZm1hbm4KCUF2b2lkIGRlYWRsb2NrcyBpbiBFbnVtTWV0YUZpbGUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQXZvaWQgaW5maW5pdGUgbG9vcCBpZiBRdWVyeVBhdGhPZlJlZ1R5cGVMaWIgaXMgY2FsbGVkIHdpdGggbGNpZD0wLgoKMjAwMC0wOS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludGVycnVwdHMuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgbWVtb3J5L2luc3RyLmM6CglNaXNjIGNsZWFudXBzLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmg6CglBZGRlZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBzd2l0Y2hpbmcgdG8gdm04NiBtb2RlIHdpdGggcHJvcGVyCglleGNlcHRpb24gaGFuZGxpbmcuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJTW92ZWQgRklMRV9kb21tYXAoKSB0byBtZW1vcnkvdmlydHVhbC5jIChhbmQgcmVuYW1lZCBpdCBWSVJUVUFMX21tYXApLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUNoYW5nZSBGSVhNRSgiQnV0dG9uIHNpemUgc2V0IGFmdGVyIGJ1dHRvbiBpbiB0b29sYmFyXG4iKSBpbgoJU2V0QnV0dG9uU2l6ZSgpIHRvIFdBUk4gYXMgcXVpdGUgYSBmZXcgYXBwbGljYXRpb25zIGFyZSBkb2luZyB0aGlzCglhZnRlciBhZGRpbmcgZWFjaCBidXR0b24gdG8gdGhlIHRvb2xiYXIgYW5kIHRoZXJlIGlzIG5vIHdheSB3ZSBjYW4KCXN0b3AgdGhlbS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVJlbW92ZSB1bnVzZWQgbG9jYWwgdmFyaWFibGUgaW4gREdBX0lEaXJlY3REcmF3U3VyZmFjZTRJbXBsX1NldFBhbGV0dGUoKS4KCgkqIG1pc2MvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CgktIHJlbW92ZWQgcmVkdW5kYW50IGZ1bmN0aW9ucyBDT01NX0dldChSZWFkL1dyaXRlKUZkCgktIGNvcnJlY3RlZCB0aGUgbmFtZSBvZiAxNmJpdCBmdW5jdGlvbnMgaW4gY29tbWVudHMKCS0gcmVtb3ZlZCB1bnVzZWQgc3RhdGljIHZhcmlhYmxlCgoJKiBSRUFETUU6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gcHJlZmVyIHdpbmVpbnN0YWxsCgktIG1lbnRpb24gZGVidWdnZXIgc2V0dXAgKHRlbXBvcmFyeSkKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NobG9iai5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglGaXhlZCBpbmNvcnJlY3QgYXJnIGNvdW50IGluIFNIR2V0U2V0dGluZ3MgdGhhdCBjYXVzZXMgd2luemlwMzIuZXhlIHRvCglyZXBvcnQgYW4gZXJyb3IuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVNvcnRpbmcgaXRlbXMgaW4gYSBsaXN0dmlldyB1c2luZyBMVldfU09SVElURU1TIGlzIG9ubHkgc29ydGluZyB0aGUgaXRlbXMKCWFuZCBub3QgdGhlIHN1Yml0ZW1zLiBUaGlzIHBhdGNoIGZpeCB0aGlzIGlzc3VlLiBJJ3ZlIHJlbW92ZSB0aGUgdGVtcG9yYXJ5CglTb3J0bGlzdCwgaXQgd2FzIG5vdCBuZWNlc3NhcnkgdG8gY3JlYXRlIGFub3RoZXIgbGlzdCwgYW5kIGl0IHdhcyBidWdneS4KCjIwMDAtMDktMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGlmMTYzMi90aHVuay5jOgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiB1bnVzZWQgZnVuY3Rpb25zIGluIHRoZSBDYWxsb3V0IHN0cnVjdHVyZS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9wYWludGluZy5jOgoJTW92ZWQgU2VsZWN0L1JlYWxpemVQYWxldHRlIGltcGxlbWVudGF0aW9uIHRvIFVTRVIgYW5kIHVzZQoJcGZuU2VsZWN0L1JlYWxpemVQYWxldHRlIGZ1bmN0aW9uIHBvaW50ZXJzIGluIEdESS4KCU1ha2Ugc3VyZSB0aGUgcGFsZXR0ZSBoYW5kbGUgaXMgdmFsaWQgaW4gR0RJU2VsZWN0UGFsZXR0ZTE2ICh0aGFua3MgdG8KCVV3ZSBCb25uZXMpLgoKCSogc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgbWlzYy9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIFNldENvbW1NYXNrLCBTZXRDb21tVGltZW91dHMsIEdldENvbW1NYXNrLCBHZXRDb21tVGltZW91dHMuCgoJKiBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy93aW4xNmRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9zeXNjb2xvci5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzdXBwb3J0IGZvciBub24tZGVsZXRhYmxlIHN5c3RlbSBicnVzaGVzIGFuZCBwZW5zIGNyZWF0ZWQgYnkKCVVTRVIuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglKb2huIEdpbG1vcmUgPGdudUB0b2FkLmNvbT4KCUNsZWFuZWQgaXQgdXAgc28gdGhhdCBjb2RlIHBhdGhzIHdoaWNoIGhhdmUgdW5zdXBwb3J0ZWQgV1NfU08gdmFsdWVzCgluZXZlciBhY3R1YWxseSBwYXNzIHRoZW0gdG8gVW5peCBzeXN0ZW0gY2FsbHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBtZW1vcnkvdmlydHVhbC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgVmlydHVhbEFsbG9jRXguCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBHZXRUaW1lWm9uZUluZm9ybWF0aW9uIGFuZCBUSU1FX1pPTkVfSURfSU5WQUxJRC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB0YWIgY29udHJvbCB0byB1c2UgSFRUUkFOU1BBUkVOVCB3aGVuIG1vdXNlIGhpdHMgY2xpZW50IGFyZWEsCglidXQgbm90IHRhYiBjb250cm9sIGJ1dHRvbnMuCgoJKiBtaXNjL2Nkcm9tLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNpbGVuY2Ugc29tZSBib2d1cyBlcnJvciBtZXNzYWdlLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGp1c3RlZCB0byBhbGxvdyBNRkMgY29tcGlsYXRpb247IHByZXZlbnQgZGVmaW5pdGlvbiBvZiBzdHJ1Y3QgZmRfc2V0Cgl3aGljaCBjb25mbGljdHMgd2l0aCB0aGUgZmRfc2V0IHR5cGVkZWYuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFBXTkRDTEFTUyBkZWZpbml0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglBbGxvdyBoYXZpbmcgYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIHRleHQgY29sb3IgZm9yIHRoZSBsaXN0dmlldy4KCgkqIG9sZS9vbGUybmxzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVXNlIHRoZSBzeXN0ZW0gbG9jYWwgdGltZSBpZiBscFRpbWU9TlVMTC4KCjIwMDAtMDktMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVcGRhdGUgRVNQIGNvcnJlY3RseSBvbiByZXR1cm4gZnJvbSBmbGF0IHRodW5rIHJvdXRpbmVzLgoKCSogd2luZG93cy93aW5wcm9jLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIGlmMTYzMi9yZWxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZmllZCBDYWxsVG8xNlJlZ2lzdGVyIHJvdXRpbmVzIHRvIHVwZGF0ZSByZWdpc3RlciBjb250ZXh0IGFmdGVyCgljYWxsIHJldHVybnMuIENhbGxlcnMgYWRhcHRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgU3RyKiBwcm90b3R5cGVzIHRvIHNobHdhcGkuaC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCU1lcmdlZCBtYWluIFdpbmUgY2hhbmdlcyBpbnRvIENvcmVsJ3MgdHJlZXZpZXcgY29udHJvbCByZXdyaXR0ZW4gYnkKCVNlcmdlIEl2YW5vdiBhbmQgQW5kcmV3IExld3lja3kuICBGaXhlZCBpdGVtIGZvY3VzIGJlaGF2aW9yIHRvIG1hdGNoCglXaW5kb3dzLiAgRml4ZWQgaXRlbSBzZWxlY3Rpb24gd2hlbiB1bi9leHBhbmRpbmcgaXRlbXMuICBJbXBsZW1lbnRlZAoJV01fU0VUUkVEUkFXLiAgQWRkZWQgQ29yZWwncyBDT01DVEwzMl9DcmVhdGVUb29sVGlwKCkgaGVscGVyIGZ1bmN0aW9uCgl0byBjb21tY3RybC5jLgoKCSogd2luZG93cy9wYWludGluZy5jLCBjb250cm9scy9idXR0b24uYzoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJKE1lcmdlZCBieSBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4pCglGaXhlZCBwcm9ibGVtIHdpdGggb3JpZ2luIGZvciBEU1RfQ09NUExFWCBzdHlsZS4KCUZpeGVkIGhhbmRsaW5nIG9mIERTU19ESVNBQkxFRCBhbmQgRFNTX0RFRkFVTFQgc3R5bGVzLgoKCUFkZGVkIGhhbmRsaW5nIG9mIEJTX01VTFRJTElORSBzdHlsZSwgbGFiZWwgYWxpZ25tZW50CglzdHlsZXMgKEJTX1JJR0hULCBldGMuKSBhbmQgc29tZSBleG90aWMgc3R5bGVzIEJTX0ZMQVQgKG9ubHkKCXB1c2hidXR0b25zIGZvciBub3cpLCBhbmQgQlNfUFVTSExJS0UuCgoJTW9kaWZpZWQgbGFiZWwgZHJhd2luZyBwcm9jZWR1cmU6IG5vdyBhbGwga2luZHMgb2YgYnV0dG9ucwoJdXNlIGNvbW1vbiBCVVRUT05fRHJhd0xhYmVsIGZ1bmN0aW9uLiBBY3R1YWwgbGFiZWwgZHJhd2luZyBpcwoJcGVyZm9ybWVkIGJ5IERyYXdTdGF0ZVcgZnVuY3Rpb24uCgoJR3JvdXBCb3ggbXVzdCB1c2UgV01fQ1RMQ09MT1JTVEFUSUMgaW5zdGVhZCBvZiBXTV9DVExDT0xPUkJUTiBtZXNzYWdlLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXBncmFkZSBhbHNvIDE1YnBwIHRvIDE2YnBwIHN1cmZhY2VzLgoKMjAwMC0wOS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglLREUgMS54IGhhcyBwcm9ibGVtcyB3aXRoIHVzaW5nIFhTaGFwZUNvbWJpbmVNYXNrIHdoZW4gdGhlcmUgd2FzIG5vCglwcmV2aW91cyByZWdpb24uCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0U2Nyb2xsSW5mbyA6IGRvbid0IHNob3cvaGlkZSBzY3JvbGxiYXIgaWYgbm8gcGFyYW1ldGVyIChtaW52YWwsCgltYXh2YWwpIGNoYW5nZS4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglBZGRlZCBtaXNzaW5nIF9fdm9sYXRpbGVfXy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZ2RpL2dkaS5zcGVjLCBmaWxlcy9maWxlLmMsIG1pc2MvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgY29udHJvbHMvYnV0dG9uLmMsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBmaXhlcyBkZWJ1Z2dlciBvdXRwdXQKCS0gZ2V0IHJpZCBvZiB3cm9uZyBjb21tZW50cwoJLSBmaXggY29tbWVudHMKCS0gLnNwZWMgc3BlbGxpbmcgZml4CgktIGltcHJvdmUgd2FybmluZyBtZXNzYWdlCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi90aW1lLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgkiaW1wbGVtZW50ZWQiIEdldFN5c3RlbVRpbWVBZGp1c3RtZW50LgoKCSogd2luZG93cy9jbGFzcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdHJ5IHRvIGRlbGV0ZSBhIHduZGNsYXNzIGJhY2tncm91bmQgYnJ1c2ggaWYgaXQncyBhIENPTE9SXyoKCWNvbnN0YW50LgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJTWFrZSBzdXJlIE5DX0hhbmRsZU5DQ2FsY1NpemUgcmV0dXJucyBhIHZhbGlkIHJlY3RhbmdsZS4KCVBhaW50aW5nIGZhaWxzIGlmIHRoZSByZWN0YW5nbGUgaXMgaW52YWxpZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSGlkZSB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIHdoZW4gbGlzdHZpZXcgc3R5bGUgaXMgTFZTX0xJU1QuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBXTV9VU0VSQ0hBTkdFRC4KCgkqIGRlYnVnZ2VyL2luZm8uYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgaW5jbHVkZS90bGhlbHAzMi5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIHRwWFhYIGluc3RlYWQgb2YgdGJYWFggaW4gdGFnVEhSRUFERU5UUlkzMi4KCgkqIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIERHQSAvIERHQSAyIHBhbGV0dGUgY3JlYXRpb24uCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggYSBtZW1vcnkgbGVhayBpbiBYMTFEUlZfR2V0VGV4dEV4dGVudFBvaW50LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA5LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJQWRkZWQgV0lORVNFUlZFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhbGxvdyBvdmVycmlkaW5nIHRoZSBub3JtYWwKCXNlcnZlciBzZWFyY2ggc2VxdWVuY2UuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCVJlbW92ZWQgY2hkaXIoIi8iKSB1bnRpbCB3ZSBoYXZlIHByb3BlciBVbml4IGN3ZCBtYW5hZ2VtZW50LgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCUltcGxlbWVudGVkIFJ0bHBXYWl0Rm9yQ3JpdGljYWxTZWN0aW9uIGFuZCBSdGxwVW5XYWl0Q3JpdGljYWxTZWN0aW9uLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgTkVfTG9hZEV4ZUhlYWRlciBlcnJvciBoYW5kbGluZy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbG9hZGVyIC0gYnJva2VuIHNlYXJjaCBmb3IgYWxyZWFkeSBsb2FkZWQgbW9kdWxlcy4KCgkqIG9iamVjdHMvZGliLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZhbGxiYWNrIGNvZGUgZm9yIFN0cmV0Y2hCbHQgb24gUkxFIERJQnMgd2l0aCBnYXBzLgoKMjAwMC0wOS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYmRmdG9wY2YgY29tbWFuZC4KCgkqIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vc3RyZWFtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkICpGaWx0ZXIqIGZ1bmN0aW9ucy4KCU1pc2MgYnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgVENNX0dFVFJPV0NPVU5ULgoKCSogcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIG1pc3NpbmcgbGlicmFyeSBkZXBlbmRlbmNpZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NndWlkLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgY2d1aWQuaC4KCgkqIGRsbHMvZGRyYXcvZGdhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRG8gbm90IHN1cHBvcnQgREdBIHdoZW4gRGlyZWN0VmlkZW8gbm90IHByZXNlbnQuCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglVbmlmeSBXTV9TRVRURVhUIGhhbmRsaW5nIGFtb25nIERlZldpbmRvd1Byb2MxNi9EZWZXaW5kb3dQcm9jQS9EZWZXaW5kb3dQcm9jVy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQXZvaWQgZGl2aWRlIGJ5IHplcm8gd2hlbiBsaXN0Ym94IHNldCB0byB6ZXJvIGhlaWdodC4KCgkqIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVNpbXBsaWZ5IGEgYml0IE1ESSBjaGlsZCB3aW5kb3cgY3JlYXRpb24uCgoJKiBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUdldE1lbnUgbWlnaHQgYmUgdXNlZCB0byBnZXQgY2hpbGQgd2luZG93IGlkLgoKMjAwMC0wOS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglHaW92YW5uaSBQYW5jb3R0aSA8Z2lvdmFubmkucGFuY290dGlAY2VkZWNyYS5pdD4KCUl0YWxpYW4ga2V5Ym9hcmQgZml4ZXMuCgoJKiBmaWxlcy9kb3NfZnMuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRE9TRlNfTWF0Y2hMb25nIGlnbm9yZWQgc2V2ZXJhbCB0aGluZ3MgYWJvdXQgZmlsZSBtYXNrIG1hdGNoaW5nIGZvcgoJbG9uZyBmaWxlIG5hbWVzLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUVyaWsgSG9mbWFuIDxlcmlrLmhvZm1hbkBhMS5ubD4KCUFkZGVkIG1pc3NpbmcgY29uc3QgdG8gZXh0ZXJuYWwgdGFibGVzIGRlZmluaXRpb25zLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvY29tbS5oLCBpbmNsdWRlL3NlcnZlci5oLCBtaXNjL2NvbW0uYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGRlZCBzZXJpYWwgcG9ydCBvYmplY3QgdG8gdGhlIHNlcnZlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gTWFrZSBzdXJlIHRvb2x0aXBzIGFyZSBoaWRkZW4gYmVmb3JlIGRlbGV0aW5nIHRoZW0uCgktIEdsaXRjaCBoYXBwZW5lZCB3aGlsZSBtb3ZpbmcgZnJvbSBhIHRvb2x0aXAgdG8gYW5vdGhlciAoZml4ZWQpLgoKCSogb2JqZWN0cy9kYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1ha2UgR2V0RGV2aWNlQ2FwczE2IChoZGMsIE5VTUNPTE9SUykgbm90IHJldHVybiAtMSBmb3IgMTYgYml0cyBwcm9ncmFtcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN1cHBvcnQgZm9yIGNwOTQ5LgoKMjAwMC0wOS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9hdG9tLmM6IEZpeGVkIGN1dCZwYXN0ZSB0eXBvLgoKCSogdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHZpZGVvLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdHNfeHZpZGVvLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgcG9zc2liaWxpdHkgdG8gdXNlIFhWaWRlby4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIGJvdGggY3VzdG9tZHJhdyBtZXNzYWdlIHNlbmRpbmcgYW5kIGhhbmRsaW5nIChiYXNlZCBvZmYKCXRoZSB0cmVldmlldyBtZXRob2QpIGFzIHdlbGwgYXMgTFZTX09XTkVSRFJBV0ZJWEVELgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUZpeGVkIGEgYnVnIChpbmNvcnJlY3Qgc2l6ZSBpbiBtZW1tb3ZlKSB0aGF0IEkgaW50cm9kdWNlZCB3aXRoIGFuCgllYXJsaWVyIHBhdGNoLiBUZXN0ZWQgd2l0aCB3b3Jkdmlldy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJUGhpbCBDb2xlIDx1a3BnY0BwLmNvbGUuZWFzeW5ldC5jby51az4KCUFkZGVkIHR3byBkaXJlY3RvcmllcyB0byBkZWZhdWx0IG5vbi13aW5kb3dzIGluc3RhbGwuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgbmV3ZXIgKEFTUEkgMy4wID8pIGZ1bmN0aW9uIHN0dWJzIHRvIFdOQVNQSTMyLgoJQmV0dGVyIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVN5c3RyYXkgc2hvdWxkIGtlZXAgYSBjb3B5IG9mIGl0cyBpY29ucy4KCgkqIHNlcnZlci9zb2NrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRhcHRlZCBXaW5zb2NrIHRvIExpbnV4IDIuNCBUQ1Agc29ja2V0IHBvbGwoKSBiZWhhdmlvdXIKCSh0aGFua3MgdG8gQmVyZW5kIE96Y2VyaSBmb3IgZmluZGluZyB0aGUgcHJvYmxlbSkuCgoJKiB3aW5kb3dzL21kaS5jOiBTZXJnZSBJdmFub3YKCURlbGF5IGRlc3Ryb3lpbmcgbWVudSBlbnRyeSB1bnRpbCBhbGwgbWVzc2FnZXMgYXJlIHNlbnQuCgoyMDAwLTA5LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2F0b20uYzoKCUZpeGVkIFVuaWNvZGUgY29udmVyc2lvbiBpbiBHZXRBdG9tTmFtZUEgKHRoYW5rcyB0byBHZXJhcmQgUGF0ZWwpLgoKCSogZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9udGRsbC9ydGxzdHIuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvY29tcG9iai5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkIGppc3gwMjEyIGVuY29kaW5nLgoJUmVtb3ZlIEZJWE1FcyBmb3IgaW1wbGVtZW50ZWQgREJDUyBoYW5kbGluZy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZGVkIG1pc3NpbmcgY29tbWEuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJUmV3cm90ZSBxdWlja3NvcnQgdG8gc29sdmUgaW5maW5pdGUgcmVjdXJzaW9ucyBXaW45OCBleHBsb3Jlci5leGUuCgoyMDAwLTA5LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2UgeHRlcm0gbW91c2UgdHJhY2tpbmcgbW9kZSB0byBCVE5fRVZFTlRfTU9VU0UgKHRyYWNrIGlmIHByZXNzZWQpLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUF2b2lkIGNyYXNoIG9uIGVtcHR5IGNvbW1hbmQtbGluZS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZGVkIHR3byBtaXNzaW5nIGNhc3RzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIDxqY2JAbWFjYWRhbWlhbi5jb20+CglVc2UgU2V0RElCaXRzIGluc3RlYWQgb2YgU3RyZXRjaERJQml0cyAoaW4gQU5JTUFURV9QYWludEZyYW1lKS4KCjIwMDAtMDktMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvYnVpbHRpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJQXZvaWQgYnVmZmVyIG92ZXJmbG93cyBpbiBidWlsdGluIGRsbCBsb2FkaW5nICh3aXRoIHRoZSBoZWxwIG9mIERtaXRyeQoJVGltb3Noa292KS4KCgkqIHdpbmRvd3MvbWRpLmM6IEhlbm5pbmcgSG9mZm1hbm4KCUF1Z21lbnQgbWVudSB3aGVuIGEgbWRpIHdpbmRvdyBzdGFydHMgbWF4aW1pemVkLgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNpcyBCZWF1ZGV0CglNREkgUGF0Y2ggd2hpY2ggZml4ZXMgcHJvYmxlbXMgaW4gUFIsIFFQLCBXUCBhbmQgUGFyYWRveC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCURvbid0IHVzZSBjb3BpZXMgb2YgY3JpdGljYWwgc2VjdGlvbnMgbWFkZSBieSBtZW1jcHkoKQoJQWRkZWQgbWlzc2luZyBXSU5BUElzCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeCBmb3IgZGVidWdnZXIgZGlzYXNzZW1ibHkgYmVpbmcgb2ZmIGJ5IG9uZSBieXRlIGFmdGVyIHVzaW5nIG5leHRpCglvbiBhICJjYWxsIiBpbnN0cnVjdGlvbi4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJV2hlbiBjaGVja2luZyB0aGUgc29ja2V0IHJldHVybiBieSB0aGUgc2VydmVyIHJlcXVlc3QsIHdlIHNob3VsZCBkbyBhCgkic2lnbmVkIiBjaGVjay4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBDb0dldFBTQ2xzaWQoKS4KCjIwMDAtMDgtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lY29uZjoKCVBoaWwgQ29sZSA8dWtwZ2NAcC5jb2xlLmVhc3luZXQuY28udWs+CglUaGUgUGF0aCB2YXJpYWJsZSBpbiB0aGUgY3JlYXRlZCAud2luZXJjIG11c3QgYmUgaW4gZG9zIGZvcm1hdC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJUGhpbCBDb2xlIDx1a3BnY0BwLmNvbGUuZWFzeW5ldC5jby51az4KCVNtYWxsIGZpeC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIGEgc3RyaW5nIGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSA8amNiQG1hY2FkYW1pYW4uY29tPgoJLSBpbXByb3ZlZCBBQ1NfVFJBTlNQQVJFTlQgYW5kIEFDU19DRU5URVIgc3VwcG9ydAoJLSBhZGRlZCBSTEU4IGluY3JlbWVudGFsIGRlY29tcHJlc3Npb24KCS0gZWFjaCBhbmltYXRpb24gaXMgbm93IGNvbnRyb2xsZWQgYnkgaXRzIG93biBXaW5kb3dzIHRocmVhZAoJLSBhZGRlZCB1c2Ugb2YgQ3JpdGljYWwgU2VjdGlvbnMgaW4gdGhlIFdNX1BBSU5UIGhhbmRsZXIuCgoJKiB3aW4zMi9jb25zb2xlLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVwbGFjZWQgVVNFUjMyLkRMTCB1c2UgYnkgaGFyZGNvZGVkIHRhYmxlcyBmb3IgVmtLZXlTY2FuQSBhbmQKCU1hcFZpcnR1YWxLZXlBLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jb21tLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNvbnZlcnRlZCBhIGxvdCBvZiBzZXJ2ZXIgcmVxdWVzdHMgdG8gdGhlIG5ldyBleGNlcHRpb24gaGFuZGxpbmcKCW1lY2hhbmlzbS4KCjIwMDAtMDgtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJRml4ZWQgbm9uLU9wZW5HTCBjb21waWxlLgoKCSogZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbmRvd3MvcXVldWUuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvc3luYy5jOgoJQWRkZWQgZXhjZXB0aW9uIGhhbmRsaW5nIHdyYXBwZXIgdG8gYSBudW1iZXIgb2Ygc2VydmVyIHJlcXVlc3RzLgoJQ2hhbmdlZCBhIGZldyByZXF1ZXN0cyB0byB1c2UgdGhlIG5ldyB2YXJhcmcgbWVjaGFuaXNtLgoKMjAwMC0wOC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBtaXNjL2Nkcm9tLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB2ZXJib3NlIENELVJPTSBzZXJpYWwgbnVtYmVyIHdhcm5pbmdzIGFuZCBzb21lIHNwZWxsaW5nIGVycm9ycy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJTmV3YmllIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgZm9yIDNEIGNyZWF0aW9uIGZhaWx1cmUuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIE1vcmUgaW1wbGVtZW50YXRpb24KCS0gU2hvdWxkIGJlIGFibGUgdG8gZW51bWVyYXRlIHNlc3Npb25zIGFueXdoZXJlIHdpdGggYXQgbGVhc3QgdGNwL2lwCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzOgoJQWRkZWQgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgbWFjcm9zIHRoYXQgd2lsbCBiZSBuZWVkZWQgdG8gc3VwcG9ydAoJcmVlbnRyYW50IHNlcnZlciByZXF1ZXN0cy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvaW5wdXQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gZml4IG9uZSBsb2NraW5nIGlnbm9yYW50IHJldHVybiAwOyBpbiBNU0dfU2VuZE1lc3NhZ2VJbnRlclRocmVhZCgpCgktIGZpeCBhIGNyYXNoIGluIFFVRVVFX1JlbW92ZVNNU0coKQoJLSBjb252ZXJ0IHNvbWUgcXVldWUgV0FSTigpIHRvIEVSUigpCgktIHNwYWlsZW5nIGZpa3NlcwoKCSogY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBbHdheXMgY2FsbCBMSVNUVklFV19TZXRTZWxlY3Rpb24oKSBmb3IgYW4gaXRlbSwgZXZlbiBpZiB0aGF0IGl0ZW0KCWhhcyBiZWVuIHNlbGVjdGVkIGJlZm9yZSwgaW4gb3JkZXIgdG8gbGV0IG90aGVyIGl0ZW1zIGdldCBlcmFzZWQuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCUNvbnZlcnQgdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIGlkIHRvIGEgZ2x5cGggaWQgaW4KCVgxMURSVl9HZXRUZXh0RXh0ZW50UG9pbnQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CgktIGVuaGFuY2VkIHJlcG9ydGluZyBvZiB1bnN1cHBvcnRlZCBYIGZvbnQgZW5jb2RpbmdzCgktIGFkZGVkIC1jcC0qLSBkYXRhIHRvIGZvbnQgZW5jb2RpbmcgbG9va3VwIHN0cnVjdHVyZXMKCjIwMDAtMDgtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL2xvYWRvcmRlci5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL29wdGlvbnMuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCS0gQWx3YXlzIHN0b3JlIHRoZSBmdWxsIHBhdGggbmFtZSBvZiAzMmJpdCBtb2R1bGVzIGluIFdJTkVfTU9EUkVGCgktIEFkZCB0aGUgcG9zc2liaWxpdHkgdG8gdXNlIHBhdGggbmFtZXMgd2l0aCB0aGUgLS1kbGwgY29tbWFuZCBsaW5lCgkgIG9wdGlvbgoJLSBBZGQgdGhlIHBvc3NpYmlsaXR5IHRvIHVzZSB0aGUgLS1kbGwgY29tbWFuZCBsaW5lIG9wdGlvbiBzZXZlcmFsCgkgIHRpbWVzLgoJLSBOb3RlOiBUaGUgY29sb24tc2lnbiBpcyBub3cgZXhjaGFuZ2VkIHdpdGggdGhlIHBsdXMtc2lnbiwgYXMgaXQgaXMKCSAgcGFydCBvZiBkb3MgcGF0aCBuYW1lcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgYSB3aW5lIHJwbSB1bmluc3RhbGwgc2VjdGlvbiB0byB3aW5laW5zdGFsbC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY29pcyBNZXRob3QgPGZyYW5jb2lzbUBtYWNhZGFtaWFuLmNvbT4KCURvIG5vdCBjaGVjayBmb3Igc3lzdGVtIG1lbnUgaWYgdGhlIHdpbmRvdyBoYXMgc3R5bGUgV1NfRVhfVE9PTF9XSU5ET1cuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIEFSR0IgMTU1NSBmb3JtYXQKCS0gZml4ZWQgcmVmY291bnQgcHJvYmxlbSBmb3IgQWRkL0RlbGV0ZUF0dGFjaGVkU3VyZmFjZQoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJRml4ZWQgdHlwbyBpbiBIS0VZX0NVUlJFTlRfQ09ORklHIG5hbWUuCgoJKiBkbGxzL2tlcm5lbC9tZXNzYWdlcy93aW5lcnJfZW51Lm1jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgbWlzc2luZyBtZXNzYWdlIHRvIHdpbmVycl9lbnUubWMuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbmNyZWFzZSBudW1iZXIgb2Ygc3VwcG9ydGVkIGFyZ3MgZm9yIFdPV19DYWxsUHJvYzMyVzE2IGZyb20gMTEgdG8gMTMKCShmb3IgQ3JlYXRlU2VydmljZSkuCgoJKiBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgbXNkb3MvdnhkLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCVN0dWIgc3VwcG9ydCBmb3IgaW50MmYvYXg9MTY4NC9ieD0wMDI3IChWWERMRFIpLgoKMjAwMC0wOC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2V4Y2VwdC5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgbG9hZGVyL3Rhc2suYzoKCVJlbW92ZWQgY2FsbHMgdG8gQ29udmVydFRvR2xvYmFsSGFuZGxlIGFuZCBNYWtlQ3JpdGljYWxTZWN0aW9uR2xvYmFsLgoKCSogZGxscy9udGRsbC9yZWcuYywgaW5jbHVkZS9udGRkay5oOgoJU2ltcGxpZmllZCByb290IGtleSBoYW5kbGluZyBub3cgdGhhdCB0aGUgc2VydmVyIHN1cHBvcnRzIGEgcmVhbCByb290CglrZXkuIEZpeGVkIGEgZmV3IHByb3RvdHlwZXMuIEltcGxlbWVudGVkIE50RGVsZXRlS2V5L050RGVsZXRlVmFsdWVLZXkuCgoJKiBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmg6CglGaXhlZCBkZWJ1Z3N0cl9hcy91cyBwcm90b3R5cGVzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL2NvbW0uYywgbWlzYy9leHRfZGVidWdnZXIuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIGNvbnNvbGUveHRlcm0uYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jLCBkbGxzL3dpbmluZXQvZnRwLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIG1hZGUgdGhlIE1JREkgc2VxdWVuY2VyIGVycm9yIG1lc3NhZ2UgbXVjaCBiZXR0ZXIgZm9yIGNvbmZ1c2VkIHVzZXJzCgkgIHRvIGJlIGZvdW5kIG9uICNXaW5lSFEKCS0gdXNlIHN0cmVycm9yIGluc3RlYWQgb2YgZXJybm8gYXQgaW1wb3J0YW50IHBsYWNlcwoJLSBnb3QgcmlkIG9mIEhBVkVfU1RSRVJST1IgbWFjcm8KCS0gcmVtb3ZlZCBzb21lICNpbmNsdWRlOnMgKGhvcGVmdWxseSBJIGRpZG4ndCBicmVhayBhbnl0aGluZykKCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglSZXBsYWNlZCBjQ3VySW1hZ2UgYnkgY01heEltYWdlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCSJGaXhlZCIgaG9ycmlibHkgbWlzYWxpZ25lZCBwYWdlcyBpbiBwcm9wZXJ0eSBzaGVldHMgb2YgYXBwYXJlbnRseQoJbmV3ZXIgSW5zdGFsbFNoaWVsZHMuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlZ2lzdGVyIFdpbmUgUG9zdHNjcmlwdCBEcml2ZXIgYXMgIldJTkVQUyIsICJXSU5FUFMuRExMIiBhbmQKCSJXSU5FUFMuRFJWIiB0byBhbGxvdyBhbiBlYXN5IGNvbmZpZ3VyaW5nIGZvciB1c2Vycy4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCSAgaW1wbGVtZW50cyBEcmF3VGV4dCBmb3IgY3A5MzIuCgoJKiBkbGxzL3VzZXIvZGRlbWwuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURvbid0IG1ha2UgRERFTUwgbXV0ZXhlcyBnbG9iYWwgYW55IG1vcmUuCgoJKiBmaWxlcy9wcm9maWxlLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5oOgoJQWRkZWQgYSByZWFsIHJvb3Qga2V5IGFuZCBzaW1wbGlmaWVkIGNyZWF0aW9uIG9mIHRoZSBIS0VZXyogc3BlY2lhbCByb290IGtleXMuCglEbyBub3QgcHJlZml4IGFsbCBrZXlzIHdpdGggdGhlIG5hbWUgb2YgdGhlIHRvcCBrZXkgd2hlbiBzYXZpbmcgdG8gYSBmaWxlLgoJVHJ5IHRvIGxvYWQgJFdJTkVQUkVGSVgvY29uZmlnIGludG8gdGhlIFdpbmUgY29uZmlnIGJyYW5jaCBhdCBzdGFydHVwLgoKCSogZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLCBkbGxzL21zYWNtL3dpbmVhY20uaCwgaW5jbHVkZS9tc2FjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBtb3N0IG9mICcqRm9ybWF0KicgQVBJLgoJSW1wcm92ZWQgaW50ZXJuYWwgb2JqZWN0IGFuZCBtZXNzYWdlcyBoYW5kbGluZy4KCVN0YXJ0ZWQgc29tZSAnKkZpbHRlcionIGZ1bmN0aW9ucy4KCUZpeGVkIHN0YW5kYXJkIGhlYWRlcnMgZm9yIFdpbmVsaWIuCglGaXhlZCBhY21NZXRyaWNzLgoKMjAwMC0wOC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS9udGRkay5oOgoJRml4ZWQgUnRsKiBzdHJpbmcgZnVuY3Rpb25zIGZvciBwcm9wZXIgTUJDUy9jb2RlcGFnZSBzdXBwb3J0LiBBZGRlZCBhCglmZXcgbW9yZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgVEFTS19DcmVhdGUgY2FsbCB0byBLRVJORUwgaW5pdGlhbGlzYXRpb24gcm91dGluZS4KCUNsZWFyIGxhc3QgZXJyb3IgY29kZSBiZWZvcmUgY2FsbGluZyBtYWluIGVudHJ5IHBvaW50IChyZXBvcnRlZCBieQoJSmFtZXMgSnVyYW4pLgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIG1lbW9yeS9zdHJpbmcuYzoKCUZpeGVkIGEgY291cGxlIG9mIFdJTkFQSSBpc3N1ZXMgd2l0aCAxNi1iaXQgc3BlYyBmaWxlcyAodGhhbmtzIHRvCglNYXJjdXMgTWVpc3NuZXIpLgoKCSogZGxscy9kcGxheXgvZHBsYXlfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5oLCBpbmNsdWRlL2RwbGF5LmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2d1aWQuYywgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwaW5pdC5oLCBkbGxzL2RwbGF5eC9kcGxheS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gSW1wbGVtZW50ZWQgbG9hZGluZyBhbmQgaW5pdGlhbGl6YXRpb24gb2Ygc2VydmljZSBwcm92aWRlcnMKCS0gQ3JlYXRlZCBzZXJ2aWNlIHByb3ZpZGVyIENPTSBvYmplY3QKCS0gTG90cyBvZiBkcGxheS9kcGxvYmJ5IGltcGxlbWVudGF0aW9uL2ZpeGVzCgktIENsZWFuIHVwIG9mIG9sZS9ndWlkLmMKCgkqIG9iamVjdHMvZGMuYzogQmFja2VkIG91dCBmb250IGNvZGVwYWdlIGNoYW5nZS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtaXNjL2NvbW0uYywgbWlzYy92ZXJzaW9uLmMsIG1zZG9zL2ludDJmLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWlub3IgY29zbWV0aWMgY2hhbmdlcy4KCgkqIG1pc2MvdHdlYWsuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQ2xlYW51cCBhbmQgc3BlZWR1cCBvZiBpbml0IGNvZGUuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXN0b3JlZCB0aGUgaFBzZXVkb0JpdG1hcCBoYWNrIGZvciBwcm9ncmFtcyBkZWxldGluZyB0aGUgMXgxIGJpdG1hcAoJaW4gbWVtb3J5IERDcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmM6CglCYWNrZWQgb3V0IGZvbnQgY29kZXBhZ2UgY2hhbmdlLgoKCSogZGxscy9kZHJhdy9oZWxwZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCB0aGUgZGlzcGxheWluZyBvZiB0aGUgRk9VUkNDIGNvZGVzIGluIF9kdW1wX3BpeGVsZm9ybWF0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlY29yZGluZyBmb3JtYXQgc2V0dGluZ3MgKDE2IGJpdCB3YXMgYnJva2VuKSBhbmQgcmVlbnRyYW5jeQoJaXNzdWVzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLCBpbmNsdWRlL3NobG9iai5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXByb3ZlZCBhIGJpdCB0aGUgZm9sZGVyIGJyb3dzaW5nIGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglNYXR0aGV3IExha2UgPE1hc3RlclJfTEB5YWhvby5jb20+CglBZGRlZCBMSE5ELgoKCSogdG9vbHMvd3JjLy5jdnNpZ25vcmUsIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCUZpeGVkIGEgTEFMUigyKSBwcm9ibGVtIHdoaWxlIHNjYW5uaW5nIHVzZXJ0eXBlIHJlc291cmNlcyB3aGljaCBoYWQKCWlkZW50aWZpZXJzIGZvciBib3RoIG5hbWUgYW5kIHR5cGUuCgoJKiBtaXNjL3dzcHJpbnRmLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJVXNlIGludCBpbnN0ZWFkIG9mIENIQVIvV0NIQVIgaW4gdmFfYXJnKCkgKGZpeGVzIGdjYy1jdXJyZW50IGNvbXBpbGUKCXByb2JsZW0pLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hhbmdlIHBpeGVsIGZvcm1hdCBmb3IgMjQgQlBQIHN1cmZhY2VzIHdoZW4gdGhlIEREcmF3IEJQUCBpcyAzMi4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglHZXRPYmplY3RBOiB1bmxvY2sgdGhlIG9iamVjdCBhZ2FpbiBldmVuIGluIGNhc2Ugb2YgZmFpbHVyZS4KCjIwMDAtMDgtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmg6CglGaXhlZCBmaW5hbGx5IGhhbmRsZXIgbmFtZS4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCUZpeGVkIFJlZ2lzdGVyQ2xhc3MgbGFzdCBlcnJvciBjb2RlIG9uIGF0b20gY3JlYXRpb24gZmFpbHVyZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJQ2xlYW5lZCB1cCBtYWpvciB1Z2xpbmVzcyBpbiBfX2xmQ2hlY2tTdW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJTGFyZ2UgY2FwdGlvbiBpY29ucyBzaG91bGQgZW5kIGluICcuLi4nIHdoZW4gdGhleSBhcmUgYWJicmV2aWF0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUZyYW5jb2lzIE1ldGhvdCA8ZnJhbmNvaXNtQG1hY2FkYW1pYW4uY29tPgoJRm9yIHRoZSB0cmFuc3BhcmVuY3kgaXNzdWUsIGltcGxlbWVudGVkIGEgc3dpdGNoLWNhc2UgZm9yIHRoZSBiaXRjb3VudAoJKGJpdCBwZXIgcGl4ZWwpIG9mIHRoZSBhbmltYXRpb24gZmlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2luZSB3YXMgbm90IGRyYXdpbmcgdHJhY2tiYXJzIHdpdGggbWluaW11bSByYW5nZXMgb2YgbW9yZSB0aGFuIDAKCWNvcnJlY3RseS4KCjIwMDAtMDgtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gcmVtb3ZlZCB1bm5lY2Vzc2FyeSByZWN1cnNpb24KCS0gdXBvbiBxdWVyeSBmYWlsdXJlIG9uIG1haW4gcHJpbWFyeSBsY2lkIGFuZCBzZWNvbmRhcnkgbGNpZCwKCSAgYXR0ZW1wdHMgYSBxdWVyeSBvbiBzeXN0ZW0gbGNpZCAoMCkKCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBpZjE2MzIvc25vb3AuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIG1zZG9zL2lvcG9ydHMuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZXMgZm9yIHJlYWRpbmcgbGF0Y2hlZCB2YWx1ZXMgd2l0aCBwb3J0cyAweDQwLTB4NDMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRG9uJ3QgY3Jhc2ggd2hlbiBjYWxsaW5nIERpcmVjdERyYXdTdXJmYWNlOjpFbnVtQXR0YWNoZWRTdXJmYWNlcyBvbiBhCglzdXJmYWNlIHdpdGggbm8gYXR0YWNoZWQgc3VyZmFjZXMuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFsbG93IEZvcm1hdE1lc3NhZ2UgdG8gbG9hZCBVbmljb2RlIHN0cmluZyByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBBUEMgc3VwcG9ydCBpbiB3YWl0YWJsZSB0aW1lcnMuCgoJKiBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjYWxscyB0byBDTElQUElOR19VcGRhdGVHQ1JlZ2lvbi4gRml4ZWQgUGF0Qmx0IHRvCgl1c2UgRENfR2V0RENVcGRhdGUuCgoyMDAwLTA4LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDAwODIxLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA4LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGRvbid0IHJldHVybiBGQUxTRSBmb3Igc3lzdGVtIHByb2Nlc3MgY2hhbmdlcwoJLSBTSFVURE9XTl9OT1JFVFJZIGlzIDEgYW5kIGhhcyB0byBiZSBpbiB3aW5iYXNlLmgKCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCZWdpbm5pbmcgb2Ygc29tZSBzaW1wbGUgb3B0aW1pemF0aW9uIG9mIHRoZSBsaXN0dmlldwoJZHJhd2luZy4gU3BlY2lmaWNhbGx5IGl0IHJlZHVjZXMgZmxpY2tlciB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzLgoKCSogbG9hZGVyL3Rhc2suYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVHJhbnNmb3JtIGV2ZXJ5IEVSUigpIHRvIFdBUk4oKSBpbiBNYWtlUHJvY0luc3RhbmNlLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNhbGwgV3JpdGVPdXRQcm9maWxlczE2IHRvIG1ha2Ugc3VyZSB0aGF0IGxhc3QgcHJvZmlsZSBnZXRzIHdyaXR0ZW4uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL2RpYWxvZy5oLCB3aW5kb3dzL2RpYWxvZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEaXNhYmxlIHRoZSBvd25lciBvZiBhIG1vZGFsIGRpYWxvZyBib3gganVzdCBiZWZvcmUgY3JlYXRpbmcgdGhlCglkaWFsb2cgd2luZG93LgoKCSogZmlsZXMvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkoZnJvbSBJQk0gVG9wUGFnZSBwYXRjaCkgcmV0dXJuIGNvcnJlY3QgZXJyb3IgZm9yIGFscmVhZHkgZXhpc3RpbmcKCWZpbGUuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJSGFuZGxlIHRoZSBMQl9HRVRURVhUIGFuZCBDQl9HRVRMQlRFWFQgY2FzZXMgZm9yIDMyVyB0byAxNiBtYXBwaW5nLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRW5hYmxlcyBzaG93aW5nIG9mIGhpZGRlbiB3aW5kb3dzIHdoZW4gdGhlIGFwcCBhc2sgKm9ubHkqIHRvIG1heGltaXplIGl0LgoKMjAwMC0wOC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglIYW5kbGUgdGhlIGNvZGVwYWdlIG9mIGZvbnRzIGlmIHN1cHBvcnRlZCBieSB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBpbnRlcm5hbCBjaGFyc2V0cyBmb3Igc3VwcG9ydGluZyBEQkNTIGNoYXJzZXRzLgoKCSogb2JqZWN0cy9kYy5jOgoJRml4ZWQgR0RJIGxvY2tpbmcgaW4gR2V0RGV2aWNlQ2Fwcy4KCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglLYWkgTW9yaWNoIDxtYWlsQGthaS1tb3JpY2guZGU+CglGaXhlZCBidWcgaW4gcmVwZWF0ZWRseSBpY29uaXNhdGlvbiwgY29kZSBjbGVhbnVwLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0IFgxMURSVl9EZXZpY2VDYXBzLm51bUNvbG9ycyBhY2NvcmRpbmcgdG8gZG9jIChmaXhlcyBDdWJhc2UgVlNUMjQKCXN0YXJ0dXAgcHJvYmxlbSkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUltcGxlbWVudGVkIER1cGxpY2F0ZUljb24oKS4KCgkqIG1zZG9zL2ludDE1LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJU3R1YmJlZCBJTlQgMTUgZnVuY3Rpb24gODRoLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCS0gU2VwYXJhdGUgYXBwbGljYXRpb24gY2FsbHMgdG8gU2hvd093bmVkUG9wdXBzIGZyb20gV2luZSBjYWxscyAoaW4KCSAgRVZFTlRfTWFwTm90aWZ5KSBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbi4KCS0gRml4IFNob3dPd25lZFBvcHVwcyBzbyBpdCBzZW5kcyBtZXNzYWdlcyB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMKCSAgaW4gV2luZG93cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJUmVtb3ZlZCBkaXJlY3QgY2FsbHMgdG8gVFJFRVZJRVdfUmVmcmVzaCgpLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgcGxheWJhY2sgb2YgRU1SX1BPTFlCRVpJRVJ7VE99MTYsIEVNUl9QT0xZTElORTE2IGFuZAoJRU1SX1BPTFlQT0xZTElORS4KCgkqIGluY2x1ZGUvbWFpbi5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgbmV3IGxhbmd1YWdlIGRldGVjdGlvbiBzY2hlbWUgdGhhdCB1c2VzIE5MUyBkYXRhIGJhc2UgaW5zdGVhZCBvZgoJaGFyZCBjb2RlZCB2YWx1ZXMuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCUR1c2FuIExhY2tvIDxkbGFja29AY29kZXdlYXZlcnMuY29tPgoJUGFzcyB0aGUgdHlwZS9uYW1lIGFzIGEgQyBzdHJpbmcgaW5zdGVhZCBvZiBhbgoJSU1BR0VfUkVTT1VSQ0VfRElSX1NUUklOR19VIHN0cnVjdHVyZSB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uCgoyMDAwLTA4LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9nbG9iYWwuaCwgaW5jbHVkZS9wYXRoLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3gxMWRydi5oLCBtZW1vcnkvbG9jYWwuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy93aW5lcHMvYnJ1c2guYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2RjLmgsIGluY2x1ZGUvZ2RpLmg6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CglBZGRlZCBzeXNsZXZlbCBsb2NraW5nIGZvciBHREkgb3BlcmF0aW9ucy4KCVByb3BhZ2F0ZSB0aGUgY2hhbmdlcyB0aHJvdWdoIHRoZSBncmFwaGljcyBjb2RlLgoKCSogbWlzYy9jZHJvbS5jOgoJRWQgU25vdyA8ZWRfc25vd0B0dG1lbmdpbmVlcmluZy5jb20+CglDb3JyZWN0ZWQgc2VyaWFsIG51bWJlciBnZW5lcmF0aW9uIGZvciBDRCdzIHdpdGggMSBvciAyIHRyYWNrcy4KCjIwMDAtMDgtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2Nkcm9tLmMsIGZpbGVzL2Rvc19mcy5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglGaXhlZCByZXR1cm4gdmFsdWUgb2YgQ0RST01fR2V0TGFiZWwgaWYgQ0RST01fT3BlbiBmYWlsZWQgKGUuZy4gbm8KCURldmljZSBlbnRyeSBmb3IgZHJpdmUgaW4gd2luZS5jb25mKS4KCgkqIGluY2x1ZGUveDExZm9udC5oLCBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJU2VwYXJhdGUgR2V0VGV4dE1ldHJpY3MgYW5kIGltcGxlbWVudCBpdCBmb3IgU0JDUy9Vbmljb2RlL2NwOTMyLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglGaXhlZCBTVEFUVVNfR2V0VGV4dFcgaW4gcmVnYXJkIHRvIE5VTEwgcG9pbnRlcnMuCgoJKiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQXBwZW5kIC5EUlYgdG8gbmFtZSBvbmx5IGlmIG5vIGV4dGVuc2lvbiBwcmVzZW50LgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGNyYXNoIGlmIHBhdGggaXMgTlVMTCBpbiBERUJVR19Qcm9jZXNzRWxmRmlsZUZyb21QYXRoLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglFZCBTbm93IDxlZF9zbm93QHR0bWVuZ2luZWVyaW5nLmNvbT4KCUNsZWFuIG91dCB0aGUgaGFjayBvbiBCQVNTL1RSRUJMRSBhbmQgc3VwcHJlc3MgdGhlbSBpbiB0aGUgbWFzayBhcyB3YXMKCXJlY29tbWVuZGVkIG9oIHNvIGxvbmcgYWdvLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCS0gQWRkZWQgYSBoZWxwZXIgZnVuY3Rpb24gVE9PTEJBUl9HZXRUZXh0KCkgYW5kIG1hY3JvIFRPT0xCQVJfSGFzVGV4dCgpIHRvCgkgIGRldGVybWluZSB3aGV0aGVyIHdlIG5lZWQgdG8gY2FsbCBJbnZhbGlkYXRlUmVjdCgpIHdpdGggYkVyYXNlIG9mIFRSVUUgb3IKCSAgRkFMU0UuICBSZWR1Y2VzIGJhY2tncm91bmQgZXJhc2VzIGluIG5vbi10ZXh0IHRvb2xiYXJzIGJ5IDgwLTg1JS4KCS0gRml4ZWQgYnV0dG9uIHN0YXRlIG5vdCBiZWluZyB1cGRhdGVkIHByb3Blcmx5IHdoZW4gTEJVVFRPTkRPV04gYW5kIGN1cnNvcgoJICBsZWF2ZXMgdGhlIHRvb2xiYXIuCgktIFJlbW92ZWQgRklYTUUoKSBpbiBUT09MQkFSX0RyYXdTdHJpbmcgZm9yIGJ0blB0ci0+aVN0cmluZyA9PSAtMSwgcmVwbGFjZWQKCSAgd2l0aCBhIHNvdXJjZSBjb2RlIGNvbW1lbnQuCgktIFJlbW92ZWQgdW5lY2Vzc2FyeSBjYWxsIHRvIFRPT0xCQVJfQ2FsY1Rvb2xiYXIoKSBpbgoJICBUT09MQkFSX0dldEl0ZW1SZWN0KCkuICBPcHRpbWl6ZWQgVE9PTEJBUl9DYWxjU3RyaW5ncygpLiBGaXhlcyB2ZXJ5CgkgIHNsb3cgcmVzcG9uZGluZyB0b29sYmFycyBpbiBVbHRyYWVkaXQgZHVlIHRvIHByb2Nlc3NpbmcgVEJfR0VUSVRFTVJFQ1QKCSAgbWVzc2FnZXMuCgktIE9wdGltaXplZCBUT09MQkFSX1NldEludGVudCgpLCBTZXRSb3dzKCkgYW5kIFNldFN0eWxlKCkuCgoJKiBzY2hlZHVsZXIvc3luY2hyby5jOgoJTWlrZSBNY0Nvcm1hY2sgIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJU2F2ZSBHRVRfQVBDUyBkYXRhIGJlZm9yZSBjYWxsaW5nIGFueSBhc3luY2hyb25vdXMgcHJvY2VkdXJlIGNhbGxzLCBpbgoJY2FzZSB0aGUgc2VydmVyIGlzIGNhbGxlZCBkdXJpbmcgdGhlIEFQQy4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGluY2x1ZGUvZGlhbG9nLmgsIHdpbmRvd3MvZGlhbG9nLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVR1cm5zIHRoZSBoYW5kbGluZyB0byBwdXJlIDE2IGJpdHMsIHJlbW92ZSByZWZlcmVuY2VzIHRvIGRpYWxvZy5oLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJUmVtb3ZlIHVudXNlZCBjcml0aWNhbCBzZWN0aW9uIGdsb2JhbCB2YXJpYWJsZSBQUklOVDMyX1JlZ2lzdHJ5QmxvY2tlci4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUF2b2lkcyBjaGFuZ2luZyAyIGxldmVscyB3aGVuIGNsaWNraW5nIC4uIGluIHRoZSBkaXJlY3RvcnkgbGlzdC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2NvbnNvbGUuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJU3R1YmJlZCBTZXRDb25zb2xlSW5wdXRFeGVOYW1lQS9XLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJV01fR0VURk9OVCBzaG91bGQgcmV0dXJuIGEgcmVhbCBmb250IGhhbmRsZSBpbnN0ZWFkIG9mIE5VTEwuCgoyMDAwLTA4LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglOaWNsYXMgS2FybHNzb24gTUFURSA8bmthcmxzc29AcmEuYWJvLmZpPgoJV0FUQ09NIGNvbXBpbGVkIHByb2dyYW1zIGxlYXZlIFZpcnR1YWxTaXplIHRvIHplcm8gd2hpY2ggdHJpZ2dlcnMgdGhlCgl2aXJ1cyBjaGVjay4gVXNlIFNpemVPZlJhd0RhdGEgaW5zdGVhZC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJTmljbGFzIEthcmxzc29uIE1BVEUgPG5rYXJsc3NvQHJhLmFiby5maT4KCUltcGxlbWVudGVkIEFDU19DRU5URVIgZm9yIGFuaW1hdGlvbiBjb250cm9scy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJQXZvaWQgZ29pbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWxvY2F0aW9uIHNlY3Rpb24uIFNraXAgc2FuaXR5IGNoZWNrcwoJZm9yIGVtcHR5IHJlbG9jYXRpb24gYmxvY2tzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglGcmFuY29pcyBNZXRob3QgPGZyYW5jb2lzbUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIGJhY2tncm91bmQgdHJhbnNwYXJlbmN5IG9uIGFuaW1hdGlvbiBjb250cm9sIGZvciBhdmkKCWNvbXBvc2VkIG9mIDggYnBwKG9yIGxlc3MpIGltYWdlLiBJIGFkZGVkIHN1cHBvcnQgZm9yIDggYnBwIG9yIG1vcmUsCglidXQgaXQgaGFzIG5vdCBiZWVuIHRlc3RlZC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJV2hpbGUgZHJhZ2dpbmcsIGNhdGNoIGtleWJvYXJkIG1lc3NhZ2VzIGJldHdlZW4gV01fS0VZRklSU1QgYW5kCglXTV9LRVlMQVNULCBub3QganVzdCBXTV9LRVlGSVJTVC4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglJZiBhIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgaW4gTG9hZExpYnJhcnlFeDMyVzE2LCBjYWxsIExvYWRMaWJyYXJ5RXgKCWFueXdheSwgc2luY2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIG1vZHVsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2VkIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgZXZlcnkgYXJndW1lbnQgaW4gQ29tbWFuZExpbmVUb0FyZ3YuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkIGFuIGVycm9yIG1lc3NhZ2UgaWYgZGV2bW9kZSBzdHJ1Y3R1cmUgaW4gcmVnaXN0cnkgaXMgaW52YWxpZDsKCWF0dGVtcHQgdG8gcHJvdmlkZSBwbGF1c2libGUgdmFsdWVzLgoKMjAwMC0wOC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUveDExZm9udC5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBmb3IgREJDUyhjcDkzMi9jcDk0OSkgY29kZXBhZ2UgY29udmVyc2lvbi4KCUltcGxlbWVudGVkIGNwOTMyIGhhbmRsaW5nIHBhcnRseShidXQgc3RpbGwgaW5jb21wbGV0ZSkuCglBZGRlZCBzdXBwb3J0aW5nIG11bHRpcGxlIGZvbnRzIGZvciBEQkNTIGhhbmRsaW5nLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvc3RhYnMuYywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlZCBFTEYgZmlsZXMgbG9va3VwIGZvciBzeW1ib2xpYyBpbmZvLgoKCSogZGVidWdnZXIvYnJlYWsuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbiBpbiBicmVhayBjb21tYW5kLgoKMjAwMC0wOC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCByZXR1cm4gdmFsdWUgdG8gMTYgYml0cyBmb3IgMTYgYml0IGhvb2s7IHJlbW92ZSBsZWFkaW5nIHNwYWNlIGZvcgoJZmlsZSBzcGVjaWZpY2F0aW9uLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglUaHJlYWRzIHdpdGhvdXQgYWN0aXZlIG9yIGZvY3VzIHdpbmRvdyBzaG91bGQgbm90IHJlY2VpdmUga2V5Ym9hcmQKCW1lc3NhZ2VzLgoKCSogc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvdmlydHVhbC5jOgoJSW1wbGVtZW50ZWQgU0VDX0lNQUdFIG1hcHBpbmdzIGFuZCBzaGFyZWQgUEUgc2VjdGlvbnMgKHdpdGggdGhlIGhlbHAKCW9mIFBldGVyIEdhbnRlbikuCgoJKiBpbmNsdWRlL250ZGRrLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9sc3RyLmMsIG1pc2MvbWFpbi5jLCBtc2Rvcy9pbnQyMS5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL3Byb2ZpbGUuYzoKCU1vdmVkIENoYXJVcHBlciogYW5kIENoYXJMb3dlciogZnVuY3Rpb25zIHRvIGRsbHMvdXNlci4KCgkqIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWFsIHRyZWF0bWVudHMgKHVzZSAyIG9yIG1vcmUgZm9udHMsIGNvZGVwYWdlCgljb252ZXJzaW9uLCBldGMuLi4pIGZvciBEQkNTIHRleHQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5lZGVmYXVsdC5yZWc6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCAiRnVsbFdpbmRvd0RyYWciIGZlYXR1cmUgZm9yIG5vdCBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBjb250cm9scy9jb21iby5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSB0aGUgZWRpdCBib3ggYmVmb3JlIHJvbGxpbmcgdXAgdGhlIGxpc3Rib3gsIHNvIHRoZQoJc2VsZWN0aW9uIGlzbid0IGxvc3QuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIHJlZmVyZW5jZWQgZGxscyBmb3IgbGlidGVzdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU5pY2xhcyBLYXJsc3NvbiBNQVRFIDxua2FybHNzb0ByYS5hYm8uZmk+CglMUFNUUl9URVhUQ0FMTEJBQ0sgd291bGRuJ3Qgd29yayBpZiB0aGUgYXBwbGljYXRpb24gc3VwcGxpZWQgdGhlIGl0ZW0KCXRleHQgaW4gaXRzIG93biBidWZmZXIuCgoJKiB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvZXJyb3IuYywgd2luMzIvZmlsZS5jLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzoKCUNsZWFuZWQgdXAgYSBmZXcgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4gQWRkZWQgYSBmZXcgaW1wb3J0cy4KCgkqIG9sZS9vbGUybmxzLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc3B5LmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBsb2FkZXIvbmUvY29udmVydC5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvcmVnaXN0cnkuYywgb2JqZWN0cy9wYWxldHRlLmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbGlzdGJveC5jOgoJUmVwbGFjZWQgYWxsIGxzdHIqIGNhbGxzIGZyb20gaW5zaWRlIFdpbmUgY29kZSBieSB0aGVpciBzdHIqIGVxdWl2YWxlbnQuCgoJKiBtc2Rvcy9kcG1pLmM6CglSZXBsYWNlZCBnbG9iYWwgQ2FsbGJhY2tzIHN0cnVjdHVyZSBieSBhcHByb3ByaWF0ZSBnbHVlIGNvZGUKCWdlbmVyYXRpb24uIFJlbW92ZWQgYSBmZXcgdW51c2VkIGVudHJpZXMgaW4gdGhlIENhbGxvdXQgc3RydWN0dXJlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgaW5jbHVkZS93aW52ZXJzaW9uLmgsIG1pc2MvdmVyc2lvbi5jLCB3aW4zMi9kZXZpY2UuYywgd2luZG93cy93aW5oZWxwLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJUmVwbGFjZWQgVkVSU0lPTl8qIGNhbGxzIGJ5IGV4cG9ydGVkIEFQSSBlcXVpdmFsZW50cy4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgbG9hZGVyL25lLy5jdnNpZ25vcmUsIGxvYWRlci9uZS9NYWtlZmlsZS5pbiwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5Ly5jdnNpZ25vcmUsIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L2xvY2FsLmMsIG1pc2MvY29tbS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIGNvbnRyb2xzLy5jdnNpZ25vcmUsIGNvbnRyb2xzL01ha2VmaWxlLmluLCBjb250cm9scy9lZGl0LmMsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oOgoJUmVwbGFjZWQgZ2xvYmFsIENhbGxiYWNrcyBzdHJ1Y3R1cmUgYnkgYXBwcm9wcmlhdGUgZ2x1ZSBjb2RlCglnZW5lcmF0aW9uLiBSZW1vdmVkIGEgZmV3IHVudXNlZCBlbnRyaWVzIGluIHRoZSBDYWxsb3V0IHN0cnVjdHVyZS4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkZWQgbG9hZCBhZGRyZXNzIGZvciB0aGUgc2hhcmVkIG1lbW9yeSBvZiBCREUgKEJvcmxhbmQgZGF0YWJhc2UKCW1hbmFnZXIpLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IGZvciBzdGFydGluZyBzZXJ2ZXIgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBjaGVja2luZyBmb3IgYnJva2VuIGZvbnQgY2FjaGUuCglBZGRlZCBzdXBwb3J0aW5nIGZvciBpc28xMDY0NiBlbmNvZGluZy4KCjIwMDAtMDgtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9yZXF1ZXN0LmM6CglNYWRlIHNlcnZlciBzdGFydHVwIG1vcmUgcm9idXN0IGFnYWluc3QgcmFjZXMgY2F1c2VkIGJ5IGEgcHJldmlvdXMKCXNlcnZlciB0ZXJtaW5hdGluZyBhdCB0aGUgc2FtZSB0aW1lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHRvb2xzL2MybWFuLnBsOgoJTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJQ3JlYXRlZCBkZWZhdWx0IGMybWFuIGNvbXBhdGlibGUgcGVybCBzY3JpcHQgZm9yIGdlbmVyYXRpbmcKCWRvY3VtZW50YXRpb24sIGluIGNhc2UgYzJtYW4gaXNuJ3QgaW5zdGFsbGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNlbmRpbmcgb2YgTFZOX0lURU1DSEFOR0lORyBhbmQgTFZOX0lURU1DSEFOR0VEIG1lc3NhZ2VzLAoJY2xlYW5lZCB1cCBzb21lIG9mIHRoZSBkcmF3aW5nLCBpbXBsZW1lbnRlZCB0aGUgaUluZGVudCBmb3IgTFZTX1JFUE9SVAoJYW5kIGZpeGVkIGEgcHJvYmxlbSB3aGVyZSBzdWIgaXRlbXMgd2hlcmUgbm90IGJlaW5nIHByb3Blcmx5Cglhc3NvY2lhdGVkIHdpdGggdGhlaXIgaXRlbSBmb3IgdmlydHVhbCBsaXN0IHZpZXdzLgoKCSogbWVtb3J5L2NvZGVwYWdlLmMsIG1pc2MvbHN0ci5jLCBvbGUvb2xlMm5scy5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL3djdHlwZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBkbGxzL3VzZXIvbHN0ci5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUFkZGVkIFVuaWNvZGUgY3R5cGUgc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCU1vdmVkIE5NX1VQRE9XTiBkZWZpbml0aW9uIHRvIGNvbW1jdHJsLmguCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglUaGUgdXNlciBkcml2ZXIgZnVuY3Rpb25zIG1pZ2h0IGJlIGNhbGxlZCB3aXRoIHRoZSB3aW5kb3cgbG9jayBoZWxkLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIEZpbmRSZXNvdXJjZSBhbmQgRmluZFJlc291cmNlRXggZnVsbHkgd2luZG93cyBjb21wYXRpYmxlLgoKCSogaW5jbHVkZS90Y2hhci5oOgoJRGFteWFuIE9nbnlhbm9mZiA8RGFteWFuQHJvY2tldG1haWwuY29tPgoJUmVtb3ZlIHNvbWUgb2Jzb2xldGUgI2RlZmluZSdzIC0gc3RybHdyIGFuZCBzdHJ1cHIgYXJlIGluIE5URExMIG5vdy4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIG1lbW9yeS9jb2RlcGFnZS5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL3V0ZjguYzoKCUFkZGVkIFVURi04IGNvbnZlcnNpb24gc3VwcG9ydC4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbnN0ZWFkIG9mIG5vdCBkb2luZyB0aGUgWiBvcmRlcmluZyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBhc2tzIHRvIHBsYWNlCgl0aGUgd2luZG93IHVuZGVyIGEgemVyby1zaXplZCB3aW5kb3csIG5vdyB0aGUgd2luZG93IGFib3ZlIHRoZQoJemVyby1zaXplZCB3aW5kb3csIGlzIHVzZWQgdG8gZG8gdGhlIFogb3JkZXJpbmcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUluaXRpYWxpemUgbHBzdHJJbml0aWFsRGlyIHRvIHJlYWxseSBib2d1cyB2YWx1ZSB0byByZXN0b3JlIG9yaWdpbmFsCgl2YWx1ZSBsYXRlci4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGEgZmV3IG1vcmUgYW5vbnltb3VzIHVuaW9uIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS9ndWlkZGVmLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIEMrKyBvcGVyYXRvcnMgcmV0dXJuIHZhbHVlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgZm9wZW4oKSBhcHBlbmQgbW9kZSwgYW5kIGEgcmVhbGx5IGNoZWVzeSBmc2NhbmYoKQoJaW1wbGVtZW50YXRpb24uLi4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJMS4gTWFrZSBidWZmZXIgZm9yIG1lc3NhZ2UgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdmVyeSBsb25nIGZpbGUgbmFtZXMuCgkyLiBQYXNzIEZPUk1BVF9NRVNTQUdFX0FSR1VNRU5UX0FSUkFZIGZvciBGb3JtYXRNZXNzYWdlQSB0byBub3QgYXNzdW1lCgkgICBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBiZWhhdmlvdXIuCgkzLiBTaG93IGFjdHVhbCBtZXNzYWdlIHRvIHVzZXIsIG5vdCBub24tZm9ybWF0dGVkIG9uZS4KCjIwMDAtMDgtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgbWlzYy9tYWluLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgY29udHJvbHMvZGVza3RvcC5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvcGFsZXR0ZS5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9tb3VzZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJTWVyZ2VkIGNsaXBib2FyZCBkcml2ZXIgaW50byBVU0VSIGRyaXZlci4KCU1vdmVkIGFsbCB0dHlkcnYgc291cmNlIGZpbGVzIHRvIGRsbHMvdHR5ZHJ2LgoJTG9hZCBmdW5jdGlvbnMgcG9pbnRlciBmb3IgdGhlIFVTRVIgZHJpdmVyIGZyb20gdGhlIGdyYXBoaWNzIGRyaXZlcgoJZGxsIHdpdGggR2V0UHJvY0FkZHJlc3MuCgoyMDAwLTA4LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYywgcHJvZ3JhbXMvbm90ZXBhZC9zZWFyY2guYywgc2NoZWR1bGVyL3N5bmNocm8uYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9wYWludGluZy5jLCBpbmNsdWRlL21zYWNtZHJ2LmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIG1pc2MvY29tbS5jLCBtaXNjL21haW4uYywgbXNkb3MvaW50MDkuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL21zYWNtL21zYWNtZHJ2LmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvd2lkZ2V0cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5ICNpbmNsdWRlcyBhbmQgZGxsIGRlcGVuZGVuY2llcy4KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvaW5pdC5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmM6CglNYWtlIFBEQiwgRU5WREIgYW5kIFNUQVJUVVBJTkZPIGdsb2JhbCB2YXJpYWJsZXMuCglBZGRlZCAnbW9kdWxlJyBmaWVsZCBpbiBQREIsIGFuZCByZW1vdmVkIFdpbmUtc3BlY2lmaWMgZmllbGRzLgoKCSogbWlzYy92ZXJzaW9uLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJUmVtb3ZlZCB3aW52ZXIgYW5kIHNlcnZpY2VfdGFibGUgZnJvbSB0aGUgUERCIGFuZCBtYWRlIHRoZW0gc3RhdGljCgl2YXJpYWJsZXMuCgoJKiBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBmaWxlcy9maWxlLmM6CglSZW1vdmVkIHRoZSBET1MgaGFuZGxlcyB0YWJsZSBmcm9tIHRoZSBQREIgYW5kIG1hZGUgaXQgYSBzdGF0aWMKCXZhcmlhYmxlLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L2dsb2JhbC5jLCBtc2Rvcy9kb3NtZW0uYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJUmVtb3ZlZCBvYnNvbGV0ZSBTSE1EQVRBIHBhcmFtZXRlciBpbiBHTE9CQUxfQ3JlYXRlQmxvY2suCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gQXZvaWQgbnVsbC1wb2ludGVyIGV4Y2VwdGlvbnMgYnkgdGVzdGluZyBsaXN0bm9kZXMgdmFsaWRpdHkgYmVmb3JlIGRvaW5nCgkgIGFueSB3b3JrIHdpdGggdGhvc2UuCgktIFRMQl9SZWFkVHlwZUxpYiBub3cgcmV0cmlldmVzIHRoZSBsZW5ndGggb2YgdGhlIFRMQiBhbmQgcGFzc2VzIGl0IHRvCgkgIHRoZSBUTEIgY29uc3RydWN0b3Igd2hpY2ggaW5pdGlhbGl6ZXMgVExCQ29udGV4dDo6bGVuZ3RoIHRvIHRoYXQKCSAgdmFsdWUuCgktIEZvciBub24tc3RhbmRhcmQgcG9pbnRlZCB0eXBlcywgdGRbM10gaXMgYWx3YXlzIDAuIEkgb2JzZXJ2ZWQgdGhhdAoJICB0aGUgdHlwZSBpcyBzdG9yZWQgYXQgdGRbMl0vOCBhbmQgbm90IHRkWzNdLzguCgktIE51bGwtcG9pbnRlciBleGNlcHRpb24gb2NjdXJzIHdoZW4gR2V0UmVmVHlwZU9mSW1wbFR5cGUgaXMgY2FsbGVkIG9uIGEKCSAgdHlwZSB3aXRoIG5vIGluaGVyaXRlZCBpbnRlcmZhY2VzLiBJZiB0aGUgaW1wbGVtZW50ZWQgdHlwZXMgbGlua2VkIGxpc3QKCSAgaXMgZW1wdHksIHNldCBwUmVmVHlwZSBhcyAwIGFuZCByZXR1cm4gU19PSy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0eXBvIGluIHRoZSBJRGlzcGF0Y2hfR2V0VHlwZUluZm8gbWFjcm8uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSByZW1haW5pbmcgcHJvYmxlbXMgd2l0aCB0b29sdGlwcy4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBPcGVuR0wgY29uZmlndXJlOiBtb3ZlIEhBVkVfT1BFTkdMIGRlZmluZSB0byB3aGVyZSBpdCBiZWxvbmdzLAoJZml4ZWQgZ2xleHQuaCBwcmVzZW5jZSBpbiBjb25maWd1cmUgY2hlY2sgZm9yIFBGTkdMQ09MT1JUQUJMRUVYVFBST0MuCgoJKiBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9jcnRkbGwuaCwgaW5jbHVkZS9kZXZpY2UuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS93MzJzeXMuaCwgdG9vbHMvbWFrZV9hdXRob3JzLCB3aW4zMi9maWxlLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3NoZWxsMzIvYXV0aG9ycy5oLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9tZXRhZmlsZWRydi5oLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCU1vdmVkIGEgZmV3IG5vbi1zdGFuZGFyZCBoZWFkZXJzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGxzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUluc3RhbGwgYWxsIHN0YW5kYXJkIFdpbmRvd3MgaW5jbHVkZXMsIHBsdXMgc29tZSBmcm9tIHRoZSB3aW5lIHN1YmRpci4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuaCwgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9hbmltYXRlLmgsIGluY2x1ZGUvY29tYm9leC5oLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGF0ZXRpbWUuaCwgaW5jbHVkZS9mbGF0c2IuaCwgaW5jbHVkZS9oZWFkZXIuaCwgaW5jbHVkZS9ob3RrZXkuaCwgaW5jbHVkZS9pbWFnZWxpc3QuaCwgaW5jbHVkZS9pcGFkZHJlc3MuaCwgaW5jbHVkZS9saXN0dmlldy5oLCBpbmNsdWRlL21vbnRoY2FsLmgsIGluY2x1ZGUvbmF0aXZlZm9udC5oLCBpbmNsdWRlL3BhZ2VyLmgsIGluY2x1ZGUvcHJvZ3Jlc3MuaCwgaW5jbHVkZS9yZWJhci5oLCBpbmNsdWRlL3N0YXR1cy5oLCBpbmNsdWRlL3RhYi5oLCBpbmNsdWRlL3Rvb2xiYXIuaCwgaW5jbHVkZS90b29sdGlwcy5oLCBpbmNsdWRlL3RyYWNrYmFyLmgsIGluY2x1ZGUvdHJlZXZpZXcuaCwgaW5jbHVkZS91cGRvd24uaCwgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglSZW1vdmVkIGFsbCBub24tc3RhbmRhcmQgY29tbW9uIGNvbnRyb2wgaGVhZGVycyBmcm9tIHRoZSBpbmNsdWRlCglkaXJlY3RvcnkuCgoJKiB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL3N0cnVjdDMyLmMsIHdpbmRvd3Mvc3RydWN0MzIuaCwgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvc3RydWN0MzIuaCwgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL3N0cnVjdDMyLmM6CglNb3ZlZCBzdHJ1Y3QzMi5jIHRvIHdpbmRvd3MgZGlyZWN0b3J5LgoKMjAwMC0wOC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglNYWtlIHN1cmUgYnVpbHRpbiBkbGxzIGFyZSBuZXZlciBmcmVlZCBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IGRsY2xvc2UKCXByb3Blcmx5IHlldC4KCgkqIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCVNtYWxsIGRsbCBpbnRlcmZhY2VzIGNsZWFudXBzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvd2luZV9nbC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFYXNlZCByZXN0cmljdGlvbnMgb24gT3BlbkdML01FU0EgdXNhZ2UgYSBiaXQuIEl0IGNvbXBpbGVzIGp1c3QgZmluZQoJdXNpbmcgbWVzYS0zLjIgZXZlbiB3aXRob3V0IGdsZXh0LmguCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmtlZCBob3cgc2VsZWN0aW9ucyBhcmUga2VwdCB0cmFjayBvZiBpbiB0aGUgbGlzdCB2aWV3LiBTZWxlY3Rpb25zCglhcmUgbm93IGxpc3RlZCBhcyBhIHNvcnRlZCByYW5nZSBvZiBwYWlyZWQgaW50ZWdlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglXaGVuIHVuc3ViY2xhc3NpbmcgdG9vbHMsIHVzZSB0b29sUHRyLT5od25kIGluc3RlYWQgb2YgdG9vbFB0ci0+dUlkIGlmCgl0b29sUHRyLT5mbGFncyBkb2VzIG5vdCBjb250YWluIFRURl9JRElTSFdORCAobWVhbmluZyB1SWQgaXMgbm90IGEKCXZhbGlkIHdpbmRvdyBoYW5kbGUpLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJV2lsYnVyIE4uIERhbGUgPHdpbGJ1ci5kYWxlQGx1bWluLm5sPgoJQWRkZWQgZGVzY3JpcHRpb24gb2YgdXNpbmcgRExMcyB3aXRoIFdpbmVMaWIuCgoJKiBkb2N1bWVudGF0aW9uLyo6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0ZWQgV2luZSBkb2N1bWVudGF0aW9uIHRvIFNHTUwgZm9ybWF0LgoKMjAwMC0wOC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2ljb250aXRsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbml0aWFsaXplICdzdHInIGluIElDT05USVRMRV9HZXRUaXRsZVBvcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmM6CglGaXhlZCByZXNvdXJjZSBmdW5jdGlvbnMgdG8gd29yayB3aXRoIDMyLWJpdCBtb2R1bGVzIHRoYXQgZG9uJ3QgaGF2ZSBhCgkxNi1iaXQgY291bnRlcnBhcnQgKG5lY2Vzc2FyeSBmb3IgTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIHN1cHBvcnQpLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGQgYW4gZWRpdCBjb250cm9sIHNob3dpbmcgdGhlIGNvbW1hbmQgbGluZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkCglkZWluc3RhbGwgaXRlbS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglXSU5QT1NfV2luZG93RnJvbVBvaW50IHNob3VsZCByZXNwZWN0IGhyZ25XbmQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVNldCB1cCBleGVfbW9kcmVmIGJlZm9yZSBsb2FkaW5nIGltcGxpY2l0bHkgbGlua2VkIGRsbHMuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVByZXZlbnQgZW5kbGVzcyBsb29waW5nIGluIGxpbmVicmVhayBoYW5kbGluZy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIHdlIGFyZSBsb29raW5nIGZvciBhbiBleGlzdGluZyBwaXhtYXAgZm9ybWF0LCB3ZSBkbyBub3QgbmVlZCB0aGUKCXNhbWUgYml0c3BlcnBpeGVsIChmaXhlcyBkZXB0aCAxNS9iaXRzcGl4ZWwgMTYgbW9kZSkuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBhIGZldyBEaXJlY3RJbnB1dCA3IGRlZmluaXRpb25zIGFuZCBDKysgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJTG9hZExpYnJhcnlFeDMyVzE2IHNob3VsZCB1c2UgdGhlIHNlYXJjaCBhbGdvcml0aG0gb2YgMTYtYml0IGxpYnJhcmllcy4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvd2lucG9zLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgbG9jYWwgdmFyaWFibGUgc2hhZG93cyB3YXJuaW5ncy4KCgkqIHdpbjMyL3Byb2Nlc3MuYywgaW5jbHVkZS9lbGZkbGwuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1pc2MvdmVyc2lvbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJLSBGaXhlZCByZXNvdXJjZSBmdW5jdGlvbnMgdG8gd29yayBkaXJlY3RseSBmcm9tIHRoZSBITU9EVUxFIGluc3RlYWQgb2YKCSAgcmVxdWlyaW5nIGEgbW9kcmVmLgoJLSBBdHRlbXB0ZWQgdG8gZ2V0IExPQURfTElCUkFSWV9BU19EQVRBRklMRSByaWdodCAoYmFzZWQgb24gcGF0Y2hlcyBieQoJICBFcmljIFBvdWVjaCBhbmQgRHVzYW4gTGFja28pLgoJLSBTaW1wbGlmaWVkIG1vZHJlZiBzdHJ1Y3R1cmUgYW5kIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVByb3RlY3QgdGhlIHByb3RvdHlwZXMgaW4gaGVyZSBmcm9tIEMrKyBuYW1lIG1hbmdsaW5nLi4uCgoJKiBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglWSUZfT1VUT0ZTUEFDRSBhbmQgVklGX09VVE9GTUVNIHdlcmUgcmV2ZXJzZWQuCgoJKiBpbmNsdWRlL3Zmdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglpbmxpbmUgbXVzdCBiZSBmaXJzdCBhdHRyaWJ1dGUgaW4gZnVuY3Rpb24gZGVmaW5pdGlvbi4KCgkqIGRsbHMvdXNlci9sc3RyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIENoYXJOZXh0Vy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzX1JMRTg6IGJyZWFrIGltYWdlIGxpbmVzLgoKMjAwMC0wOC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5tbS5zcGVjLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgZGxscy9pY21wL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvaWNtcC5zcGVjLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJQWRkZWQgaW1wb3J0cyBvZiBrZXJuZWwzMi5kbGwgd2hlcmUgbmVjZXNzYXJ5LgoKCSogTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCUxpbmsgVVNFUiByZXNvdXJjZXMgaW50byBsaWJ1c2VyLnNvLgoKCSogb2xlL29sZTJubHMuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIGNhbGxpbmcgY3R5cGUgZnVuY3Rpb25zIHdpdGggVW5pY29kZSBjaGFyYWN0ZXJzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUNvbnZlcnRlZCBhbGwgY2FsbHMgdG8gUmVkcmF3V2luZG93IHRvIEludmFsaWRhdGVSZWN0LiAgUHJldmlvdXNseQoJUmVkcmF3V2luZG93IHdhcyBiZWluZyB1c2VkIGZvciB0aGUgUkRXX1VQREFURU5PVyBmbGFnIHdoaWNoIGZvcmNlZCBhbgoJaW1tZWRpYXRlIFdNX1BBSU5UIG1lc3NhZ2UuICBNb3ZpbmcgdG8gSW52YWxpZGF0ZVJlY3Qgc2hvdWxkIGxldAoJV01fUEFJTlRzIG9jY3VyIG5vcm1hbGx5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIHJlc2V0dGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciB3aGVuIGNsZWFyaW5nIG91dCBibGFuayBhcmVhcywgYXMKCWl0IG1heSBoYXZlIGJlZW4gc2V0IHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIENPTE9SX1dJTkRPVyBieSB0aGUKCWFwcGxpY2F0aW9uLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVRvcCBsZXZlbCB3aW5kb3dzIHdpdGggMCB3aWR0aCBvciBoZWlnaHQgYXJlIGNyZWF0ZWQgd2l0aCBhIHNpemUgb2YgMXgxIGluCgl0aGUgWDExIGRyaXZlci4gSSd2ZSBhZGRlZCBzb21lIGNvZGUgdG8gbWFrZSBzdXJlIHRob3NlIHdpbmRvd3MgYXJlIG5ldmVyCgltYXBwZWQgd2hpbGUgdGhlIHNpemUgPD0gMC4KCgkqIG1pc2MvbHN0ci5jLCBtaXNjL21haW4uYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2R1bW15LmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbWVtb3J5L3N0cmluZy5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCU1vdmVkIG1vc3QgVVNFUiBzdHJpbmcgZnVuY3Rpb25zIHRvIGRsbHMvdXNlci4KCUNsZWFuZWQgdXAgYSBmZXcgbW9yZSBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLgoKCSogb2xlL29sZTJubHMuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvaW5pdC5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWlzYy9yZWdpc3RyeS5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3VzZXIvdGV4dC5jOgoJUmVwbGFjZWQgbHN0cmxlbi9sc3RyY21wIGJ5IGxpYmMgZXF1aXZhbGVudHMgZXZlcnl3aGVyZSB3ZSBkb24ndCBuZWVkCgl0byB0cmFwIGV4Y2VwdGlvbnMuCgoyMDAwLTA4LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21jdGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3NvY2szMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gV2FybiBhYm91dCBkaXJlY3RvcmllcyBzcGVjaWZpZWQgaW4gbW9kdWxlcy5kYXQgdGhhdCBhcmUgbm90IHVzZWQuCgktIEVsaW1pbmF0ZWQgdGhlIHdhcm5pbmdzIGNhdXNlZCBieSB0aGUgY2hhbmdlIGFib3ZlLgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGVidWdnZXIvc3RhY2suYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW46CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBpbXBvcnRzLgoKCSogb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvdGV4dC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9uZXdmbnMuYywgd2luMzIvb3JkaW5hbHMuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jYWNoZS5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy91c2VyL3RleHQuYywgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2NhY2hlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2xzdHIuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCU1vdmVkIGEgYnVuY2ggb2YgZnVuY3Rpb25zIG91dCBvZiBsaWJ3aW5lL2tlcm5lbC9nZGkgaW50byBVU0VSLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9tZXRhZmlsZS5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmM6CglSZW1vdmVkIGEgZmV3IGRlcGVuZGVuY2llcyBvbiBHREkgaW50ZXJuYWxzIGZyb20gVVNFUiBkbGwuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglBZGRlZCBhIGZldyBtaXNzaW5nIGltcG9ydHMuCgoyMDAwLTA4LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jLCBNYWtlZmlsZS5pbiwgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9wcmludGRydi5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQxNi5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglNYWtlIFVTRVIgYW5kIEdESSBzZXBhcmF0ZSBkbGxzLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5lL3dpbnNvY2sxNi5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW5zb2NrMi5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCB0aGUgV2luMTYvV2luMzIgc3RydWN0dXJlIHNpemUvYWxpZ25tZW50IGRpZmZlcmVuY2VzIG9mCgl3c19ob3N0ZW50LCB3c19wcm90b2VudCwgd3Nfc2VydmVudCwgd3NfbmV0ZW50LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBpbmNsdWRlL3Rvb2x0aXBzLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVkbyB0aGUgc2hvdy9oaWRlIGxvZ2ljIGFuZCBhZGQgYSBjb21tZW50IHRvIGV4cGxhaW4gd2hhdCdzIGdvaW5nIG9uLgoJRml4IFRUTV97U3xHfUVUREVMQVlUSU1FIHRvIHVzZSB0aGUgZG91YmxlIGNsaWNrIHRpbWUgYXMgZGVmYXVsdC4KCUZpeCBoYW5kbGluZyBvZiBUVERUX0FVVE9NQVRJQy4KCVJlbGF5ZWQgbW91c2UgbWVzc2FnZXMgc2hvdWxkIGV4dHJhY3QgdGhlIHBvc2l0aW9uIGZyb20gbFBhcmFtIG5vdAoJbXNnLnB0CglTdWJjbGFzc1Byb2Mgbm93IHVuaWZpZWQgd2l0aCBUVE1fUkVMQVlFVkVOVC4KCUNoYW5nZSBhbGwgbHN0cmNweXh0b3ggdG8gdXNlIHdpbjMyIEFQSXMuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQ2hhbmdlZCB0aGUgQUZNIG1ldHJpY3Mgc3RydWN0dXJlIHRvIHVzZSBhbiBhcnJheSBpbnN0ZWFkIG9mIGEgbGlua2VkCglsaXN0LiBUaGlzIGF2b2lkcyBkb2luZyB0d28gaGVhcCBhbGxvY2F0aW9ucyBmb3IgZXZlcnkgY2hhcmFjdGVyLCBhbmQKCXJlZHVjZXMgdGhlIG1ldHJpY3MgcGFyc2luZyB0aW1lIGJ5IGFwcHJveCAyNSUuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgIk1pbWUtVmVyc2lvbiIgdG8gc3RhbmRhcmQgTUlNRSBoZWFkZXJzIHBhcnNlZCBpbgoJSFRUUF9HZXRTdGRIZWFkZXJJbmRleCgpLgoKCSogZGxscy9vbGUzMi9lcnJvcmluZm8uYywgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9vYmpfZXJyb3JpbmZvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUltcGxlbWVudGVkIHRoZSBFcnJvckluZm8gaW50ZXJmYWNlcy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJQWRkZWQgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBtZXNzYWdlIGZpbGVzIGZvciBwZW9wbGUgd2hvIGRvbid0IHJ1bgoJbWFrZSBkZXBlbmQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgb2xlL2d1aWQuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jOgoJTW92ZWQgR1VJRCBkZWZpbml0aW9ucyB0byB0aGVpciByZXNwZWN0aXZlIGRsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaDoKCUZpeGVkIElTaGVsbExpbmtBL1cgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGluY2x1ZGUvZ3VpZGRlZi5oLCBpbmNsdWRlL2luaXRndWlkLmgsIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUFkZGVkIGd1aWRkZWYuaCBhbmQgbW92ZWQgYSBmZXcgR1VJRCBkZWZpbml0aW9ucyB0byB0aGUgY29ycmVjdCBmaWxlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUZpeGVkIElzRXF1YWxHVUlEIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBvbGUvb2xlMm5scy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglMT0NBTEVfTk9VU0VST1ZFUlJJREUgbWVhbnM6IGRvIG5vdCBnZXQgdXNlciByZWRlZmluZWQgc2V0dGluZ3MgZnJvbQoJdGhlIHJlZ2lzdHJ5LiBJbnN0ZWFkLCB1c2Ugc3lzdGVtIGRlZmF1bHQgdmFsdWVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4ZWQgYnVnIHdoZXJlIEluaXRTdWJJdGVtIHdhcyBkb2luZyBhIFplcm9NZW1vcnkgb24gdGhlIGl0ZW0uCgktIENsZWFuZWQgdXAgYSBzaXQgb2YgZXh0cmEgYmx1ZSBhdCB0aGUgZW5kIG9mIGEgRlVMTFJPV1NFTEVDVCBsaXN0IHZpZXcKCSAgaWYgdGhlcmUgaXMgb25seSBvbmUgY29sdW1uLgoJLSBDb3JyZWN0ZWQgYSBidWcgSSBpbnRyb2R1Y2VkIHdpdGggYW4gZWFybGllciBwYXRjaCB3aGljaCBjYXVzZWQKCSAgcHJvYmxlbXMgd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb25zLgoKCSogZGxscy9kZHJhdy9jb252ZXJ0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9uZSBvZiB0aGUgMjQvMzIgY29udmVydCBjb2xvciBtYXNrcyB3YXMgd3JvbmcuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldFByb3BBL1cgaGF2ZSBzdHJpbmcgYXJncy4KCgkqIGlmMTYzMi90aHVuay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzLyovTWFrZWZpbGUuaW4sIGRsbHMvKi8qLnNwZWM6CglBZGRlZCBpbXBvcnRzIG9mIHVzZXIzMi9nZGkzMi9rZXJuZWwzMiB3aGVyZXZlciBuZWNlc3NhcnkuCgoyMDAwLTA4LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDAwODAxLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA4LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFdNX1RDQVJEIGFuZCBEV09SRExPTkcuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIHRvb2xzL3dtYy93cml0ZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQRV9NRVNTQUdFX0hFQURFUi5MZW5ndGggY29udGFpbnMgdGhlIGhlYWRlciBpdHNlbGYgdG9vLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQ29tbWl0dGluZyBhIHBhZ2Ugb2YgYSBzaGFyZWQgbWFwcGluZyBpbiBvbmUgcHJvY2VzcyBsZXRzIGl0IGFwcGVhcgoJY29tbWl0dGVkIGluIG90aGVyIHByb2Nlc3NlcywgdG9vLiBUbyBmYWtlIHRoaXMsIHdlIGNvbW1pdCB0aGVtIGFzCglzb29uIGFzIHRoZXkgYXJlIG1hcHBlZC4KCgkqIGluY2x1ZGUvd2lubnQuaCwgbWVtb3J5L2hlYXAuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCU1vdmVkIFdpbmUgcHJpdmF0ZSBoZWFwIGNyZWF0aW9uIGZsYWdzIHRvIG90aGVyIHZhbHVlcy4KCVJldHVybiBzeXN0ZW0gaGVhcCB3aGVuIGEgc2hhcmVkIGhlYXAgaXMgcmVxdWVzdGVkLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglPbmx5IHNldCBDT01TUEVDIGlmIG5vdCBkZWZpbmVkIGFscmVhZHkuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDaGFuZ2VkIHRoZSB3aW4zMSBzdHlsZSBmaWxlIGRpYWxvZyB0byAzMiBiaXRzIHN0cnVjdHVyZXMgYW5kCgltZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU2VyZ2UgSXZhbm92CglBbmRyZXcgTGV3eWNreQoJSW1wcm92ZWQgZHJhd2luZyBvZiBpdGVtIHRleHQsIGFkZGVkIFNIT1dTRUxBTFdBWVMgY2FwYWJpbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1hdHRoZXcgTGFrZSA8TWFzdGVyUl9MQHlhaG9vLmNvbT4KCUZpeGVkIGEgc2VnZmF1bHQgcHJvYmxlbSB1c2luZyB0aGUgc3RhbmRhcmQgZmlsZSBvcGVuIGRpYWxvZyBib3guCgoJKiBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3ZnYS5jLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvdmdhLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglNb3ZlZCBNdWxEaXYoKSBhbmQgVkdBIHJvdXRpbmVzIG91dCBvZiBHREkuCgoJKiBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9SRUFETUUsIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBFUlJPUkxFVkVMLgoJTW9zdCBlcnJvcnMgcmVwb3J0ZWQgdmlhIEZvcm1hdE1lc3NhZ2UoKS4KCUNPUFkgY29tbWFuZCBub3cgd29ya3MgY29ycmVjdGx5IGlmIG91dHB1dCBzcGVjaWZpZXIgaXMgYSBkaXJlY3RvcnkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJTW9yZSBjb25zaXN0ZW50IGNhbGN1bGF0aW9uIG9mIGxpbmUgaGVpZ2h0LCBzY3JvbGxzIGEgZnVsbCBpdGVtIG9uCglsaW5lIHVwL2Rvd24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGZldyBidWdzIGluY2x1ZGluZyBvbmUgd2l0aCBzZXR0aW5nIGV4dGVuZGVkIHN0eWxlcyBhbmQKCWVkaXRpbmcgbGFiZWxzLgoJSW1wbGVtZW50ZWQgdGhlIExWU19FWF9GVUxMUk9XU0VMRUNUIGV4dGVuZGVkIHN0eWxlLgoJQmVnaW4gYW4gaW1wbGVtZW50YXRpb24gb2YgdmlydHVhbCBsaXN0IHZpZXdzIChMVlNfT1dORVJEQVRBIHN0eWxlCglzZXQpLgoKCSogaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHVubmVjZXNzYXJ5IFgxMSBpbmNsdWRlcyBmcm9tIGRkcmF3LmguCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVdpbkV4ZWMxNiBzaG91bGQgbm90IHNwbGl0IHF1b3RlZCBmaWxlbmFtZXMgd2l0aCBzcGFjZXMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBJbnRlcm5ldENoZWNrQ29ubmVjdGlvbkEuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGFub3RoZXIgbm9uLUxpbnV4IGJ1aWxkIGZhaWx1cmUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgMiBmb3J3YXJkIGVudHJpZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHNvbWUgZmxpY2tlciBieSBkZXRlY3RpbmcgaWYgd2Ugc2V0IHRoZSBzYW1lIHZhbHVlIGFnYWluLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNoYW5nZSBsb2dpYyBvZiBsaXN0Ym94IHJlc2l6aW5nIGZvciAxNiBiaXRzIGFwcHMgZm9yIGxpc3RzIHdpdGhvdXQKCUxCU19OT0lOVEVHUkFMSEVJR0hUIHN0eWxlLgoKCSogb2JqZWN0cy9kYy5jOiBQaGlsbGlwIEV6b2x0IDxlem9sdEBwZXJmLnprby5kZWMuY29tPgoJRml4ZWQgQ3JlYXRlREMgdG8gd29yayBwcm9wZXJseSB3aGVuIGl0IGlzIGNhbGxlZCB3aXRoIGEgZGV2aWNlLgoKCSogcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglKYXNvbiBFZG1lYWRlcyA8amFzb25AdGhlLWVkbWVhZGVzLmZzbmV0LmNvLnVrPgoJLSBTdXBwb3J0IHdoaXRlc3BhY2UgYXJvdW5kIGNvbW1hbmRzIGJldHRlciwgYW5kIHN1cHBvcnQgdGhlIEAKCSAgcHJlZml4IGJldHRlcgoJLSBFbmhhbmNlIHRoZSBzZXQgc3VwcG9ydCB0byB1bnNldCwgZGlzcGxheSB2YWx1ZSBlcnJvciBjb3JyZWN0bHkKCS0gRW5oYW5jZSB0aGUgY29tbWFuZCBsaW5lIHN1cHBvcnQgZm9yIHBhcm1zLCBhbmQgZW52IHZhciBleHBhbnNpb24KCS0gRW5oYW5jZSB0aGUgZWNobyBjb21tYW5kIHRvIG5vdCBsb29zZSB3aGl0ZXNwYWNlLCBhbmQgZGlzcGxheQoJICBvdXRwdXQgd2l0aCAlIHNpZ25zIGJldHRlcgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvcmVnc3RyLmgsIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvUkVBRE1FLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uaCwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvdW5pbnN0YWxsZXIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgYW4gdW5pbnN0YWxsZXIgZm9yIEluc3RhbGxTaGllbGQsIFdJU0UgZXRjLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIDxqY2JAbWFjYWRhbWlhbi5jb20+CglQcm92aWRlIHBvc2l0aW9uIGhpbnRzIGZvciB3aW5kb3cgbWFuYWdlcnMuCgoyMDAwLTA3LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9tb25pdG9yLmgsIGluY2x1ZGUvc3lzbWV0cmljcy5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBtaXNjL21haW4uYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvdHR5ZHJ2L2RjLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy94MTEuYzoKCUNsZWFuZWQgdXAgc29tZSBtb3JlIFVTRVIgZGVwZW5kZW5jaWVzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNb3ZlZCBzeXN0ZW0gbWV0cmljcyBkZWZpbml0aW9ucyB0byB3aW51c2VyLmguCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRpZHllZCB1cCBzdGFjayBiYWNrdHJhY2UgY29kZSBhIGJpdCwgYW5kIGFkZGVkIGEgc2ltcGxlIHNwZWNpYWwKCWNhc2UgZm9yIGJhY2t0cmFjaW5nIGZyb20gYSBudWxsIEVJUC4KCgkqIGZpbGVzL2ZpbGUuYywgc2VydmVyL2ZpbGUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIDY0LWJpdCBuZWdhdGl2ZSBzZWVrIHZhbHVlLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbXNkb3MvaW50MmYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCBET1MgdGFzayBmaWVsZHMgZnJvbSB0aGUgTkVfTU9EVUxFIHN0cnVjdHVyZS4KCgkqIGxvYWRlci90YXNrLmM6CglTa2lwIHF1b3RlZCBwcm9ncmFtIG5hbWUgd2hlbiBidWlsZGluZyBjb21tYW5kIGxpbmUuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURPUyBiaW5hcnkgc3VwcG9ydCBoYXMgYmVlbiByZXN0b3JlZC4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy90b29saGVscC5jLCB3aW5kb3dzL3VzZXIuYzoKCU1vdmVkIHRvb2xoZWxwIGltcGxlbWVudGF0aW9uIGludG8ga2VybmVsMzIgZGxsLgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmM6CglCYWNrZWQgb3V0IEZpbmRSZXNvdXJjZSBsYW5ndWFnZSBwYXRjaC4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbXNkb3MvaW50MDkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBmZXcgcHJvYmxlbXMuCgoJKiBkbGxzL2tlcm5lbC9tZXNzYWdlcy93aW5lcnJfZW51Lm1jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglBZGRlZCB0ZXh0IGZvciBhbGwgbWVzc2FnZXMgaW5jbHVkZWQgaW4gd2luOTUgYW5kIHdpbk5ULgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB7IH0gYXJvdW5kIHN0dWZmIGluIEFERF9UT19UIG1hY3Jvcy4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNvbnZlcnQgRE9TIChNWikgYmluYXJ5IGxvYWRlciB0byB0aGUgbmV3IERPUyBwcm9jZXNzIG1vZGVsLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBNWl9DdXJyZW50KCkgaW5zdGVhZCBvZiBwTW9kdWxlLT5scERvc1Rhc2suIENsZWFuZWQgdXAgdGhlIFJNQ0IzMgoJYXNzZW1ibHkgY29kZSBhIGJpdCwgYW5kIHdyYXBwZWQgaXQgaW4gI2lmZGVmIF9faTM4Nl9fLgoKMjAwMC0wNy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtaXNjL21haW4uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCUNsZWFuZWQgdXAgYSBmZXcgVVNFUiBkZXBlbmRlbmNpZXMuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kcG1pLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgaE1vZHVsZSBwYXJhbWV0ZXIgZnJvbSBNWl9BbGxvY0RQTUlUYXNrKCksIGFuZCByZW5hbWVkCglNWl9LaWxsTW9kdWxlKCkgdG8gTVpfS2lsbFRhc2soKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQ3JlYXRlIGRsbC9rZXJuZWwvbWVzc2FnZXMgZGlyZWN0b3J5LgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIERPU01FTV9Jbml0KCkgdGFrZSBhIEJPT0wgcGFyYW1ldGVyIGluc3RlYWQgb2YgYSBITU9EVUxFMTYsIGFuZAoJaW5pdGlhbGl6ZSBET1MgbWVtb3J5IHByb3Blcmx5IGluIHRoZSBuZXcgcHJvY2VzcyBtb2RlbC4gTWFkZQoJRE9TTUVNX01lbW9yeUJhc2UoKSB1c2UgTVpfQ3VycmVudCgpLT5pbWcgaW5zdGVhZCBvZiBwTW9kdWxlLT5kb3NfaW1hZ2UuCgoJKiBsb2FkZXIvdGFzay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgdXNhZ2Ugb2Ygb2Jzb2xldGUgcE1vZHVsZS0+bHBEb3NUYXNrLgoKMjAwMC0wNy0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL3Jlc291cmNlLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2MvY29tbS5jLCBtaXNjL2xzdHIuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvc25vb3AuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaWYxNjMyL3Nub29wLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW5jbHVzaW9ucyBvZiB3aW5nZGkuaCBhbmQgd2ludXNlci5oCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIGluY2x1ZGUvbnRkZGsuaCwgbG9hZGVyL21vZHVsZS5jOgoJUmVtb3ZlZCBhIGZldyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgZnJvbSBudGRsbC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zdHVicy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgQ3JlYXRlVHlwZUxpYixMSGFzaFZhbE9mTmFtZVN5cyBzdHVicy4KCUNoZWNrIGZvciBjb3JyZWN0IHN0cnVjdCBtYWdpYyBiZWZvcmUgcmVhZGluZyBvdXQgb2YgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvc21vb3Roc2Nyb2xsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFNtb290aFNjcm9sbFdpbmRvdy4KCgkqIG1zZG9zL2Rvc21lbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpbGwgQklPUyBzZWdtZW50cyB1c2luZyBwb2ludGVycyBmcm9tIERPU01FTV9CaW9zKiBmdW5jdGlvbnMsIGluc3RlYWQKCW9mIHBvaW50ZXJzIGZyb20gZ2xvYmFsIGhlYXAgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXQgcmlkIG9mIFVTRVIzMiBmdW5jdGlvbnMgaW4gS0VSTkVMMzIuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBXaW4zMiBDb25zb2xlIGludGVyZmFjZSB0byB0aGUgbWFpbiBET1NWTSBldmVudAoJbG9vcC4gQ2xlYW5lZCB1cCBldmVudCBkaXNwYXRjaGluZyBjb2RlIGEgYml0LgoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWtlIGRpcmVjdCBjb25zb2xlIGlucHV0IHJvdXRpbmVzIGdvIHRocm91Z2ggaW50MTYsIHJhdGhlciB0aGFuCglyZWFkaW5nIGRpcmVjdGx5IGZyb20gdGhlIGNvbnNvbGUgZHJpdmVyLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCW9sZTMyIG5vdyByZXF1aXJlcyBsaW5raW5nIHdpdGgga2VybmVsMzIKCXNoZWxsMzIgbm93IHJlcXVpcmVzIGxpbmtpbmcgd2l0aCBrZXJuZWwzMiBhbmQgc2hsd2FwaQoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXZSBhbHdheXMgaGF2ZSBzdHJlcnJvciwgc28gbm8gbmVlZCB0byBpZmRlZiBIQVZFX1NUUkVSUk9SLgoKCSogd2luZG93cy93aW4uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgaHJnblduZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCB0aGUgR0xFWFQgZnVuY3Rpb24gcHJvdG90eXBlIHR5cGVkZWZzIGRldGVjdGlvbi4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW9wb3J0cy5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTGV0IEludDA5IHJvdXRpbmVzIHJlbWVtYmVyIGEga2V5c3Ryb2tlJ3MgQVNDSUkgY29kZSwgaWYgYXZhaWxhYmxlLgoKCSogbXNkb3MvaW50MzMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb21lIGludDMzIGZ1bmN0aW9uIHN0dWJzLgoKCSogbXNkb3MvaW50MTAuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGFuZ2VkIGEgZmV3IGNvcmUgaW50MTAgcm91dGluZXMgdG8gdXNlIHRoZSBCSU9TIGRhdGEgc2VnbWVudCBjdXJzb3IKCXBvc2l0aW9ucyBhbmQgdGhlIFZHQSByb3V0aW5lcywgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlCgljb25zb2xlIGRyaXZlci4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIE9sZUdldEF1dG9Db252ZXJ0LgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglGaW5kUmVzb3VyY2VFeEEvVyBzaG91bGQgc2VhcmNoIGZvciB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIHJlc291cmNlIG9ubHkuCglGaW5kUmVzb3VyY2VBL1cgc2hvdWxkIHNlYXJjaCBmb3IgYW55IGxhbmd1YWdlIHJlc291cmNlLgoKCSogaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglObyBsb25nZXIgY3Jhc2ggd2hlbiBydW5uaW5nIHdpdGggRGlyZWN0RHJhdyB3aXRoIGEgRERDbGlwcGVyIGluCgktZGVza3RvcCBtb2RlLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU5DX0RvTkNIaXRUZXN0IG5vdyByZXR1cm5zIEhUTk9XSEVSRSBsaWtlIFdpbmRvd3MgaXMgZG9pbmcgd2hlbgoJY2xpY2tpbmcgb24gYSB3aW5kb3cgaGF2aW5nIGEgY3VzdG9taXplIG5vbiBjbGllbnQgYXJlYS4KCjIwMDAtMDctMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZCBYMTFEUlZfRElCX1VwZGF0ZURJQlNlY3Rpb24yIHRoYXQgdGFrZXMgYSBIQklUTUFQIHBhcmFtZXRlci4KCgkqIG1lbW9yeS9jb2RlcGFnZS5jOgoJV29sZmdhbmcgU2Nod290emVyIDx3b3NjaHdvdEBnbXgubmV0PgoJQWRkZWQgTlVMTCBwb2ludGVyIGNoZWNrcy4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c19zaGFwZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c19zaGFwZS5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gaW1wbGVtZW50YXRpb24gb2YgU2V0V2luZG93c1JnbiBhbmQgR2V0V2luZG93UmduCgktIFgxMURSViBhbmQgVFRZRFJWIHVwZGF0ZWQgd2l0aCBuZXcgQVBJIFNldFdpbmRvd1JnbgoKCSogaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWVtb3J5L2dsb2JhbC5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgdGhlIGhNb2R1bGUgcGFyYW1ldGVyIGZyb20gdmFyaW91cyBET1NNRU0gcm91dGluZXMsIHRoZSBET1NNRU0KCXJvdXRpbmVzIG5vdyBhbHdheXMgdXNlIHRoZSBjdXJyZW50IG1lbW9yeSBzcGFjZS4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHRvb2xzL3dtYy9tY3kueTogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIHNwZWNpZmljIGZpeGVzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy9kZWZ3bmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTm93IHRoZSBzZXJ2aWNlIHRocmVhZCBpcyBubyBtb3JlIGluIGNoYXJnZSBvZiBlcmFzaW5nIHRoZSBiYWNrZ3JvdW5kCglvZiB0aGUgV2luZG93LiBTZXJ2aWNlIHRocmVhZCBpcyBkb2luZyB0aGUgaW52YWxpZGF0aW9uIHBhcnQsIGFuZCB0aGUKCWFwcGxpY2F0aW9uIHRocmVhZCBpcyBkb2luZyB0aGUgZXJhc2luZyBwYXJ0LiBBbGwgdGhpcyBoYXMgYmVlbgoJaW1wbGVtZW50ZWQgdXNpbmcgV01fU1lOQ1BBSU5UIG1lc3NhZ2UuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHN0dWIgZm9yIE9MRTMyLk9sZVNldEF1dG9Db252ZXJ0IG5lZWRlZCBieSBBZG9iZSBQaG90b3Nob3AgNC4wLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGNyYXNoIGlmIHdpbmRvdyB3YXMgbm90IGZvdW5kLgoKCSogd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9wYWludGluZy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIFVwZGF0ZVdpbmRvdyBzaG91bGQgcmVmcmVzaCBhbGwgY2hpbGRyZW4gdGhhdCBoYXZlIGFuIHVwZGF0ZSByZWdpb24uCgktIEluIERJQUxPR19DcmVhdGVJbmRpcmVjdCBVcGRhdGVXaW5kb3cgc2hvdWxkbid0IGJlIGNhbGxlZC4gV2luZSB3aWxsIGdlbmVyYXRlCgkgIGEgV01fUEFJTlQgZXZlbnR1YWxseSBmb3IgdGhlIGRpYWxvZywgbm8gbmVlZCB0byBmb3JjZSBhIHBhaW50IHJpZ2h0IGF3YXkuCgkoYmFzZWQgb24gYSBwYXRjaCBmcm9tIEphbWVzIEhhdGhld2F5IGluIHRoZSBDb3JlbCB0cmVlKQoKCSogbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSnVzdCBnZXQgRE9TIHRhc2sgc3RydWN0dXJlIGZyb20gTVpfQ3VycmVudCgpLCBpbnN0ZWFkIG9mIChjbHVtc2lseSkKCXRyeWluZyB0byBmaW5kIGFuZCByZWFkIGZyb20gdGhlIGN1cnJlbnQgdGFzaydzIG1vZHVsZSBzdHJ1Y3R1cmVzLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1ha2UgYSBnbG9iYWwgYXNtIGhlbHBlciBmdW5jdGlvbiB0byBoYW5kbGUgMzItYml0IFJNQ0IgY2FsbHMsIHNvIHdlCglkb24ndCBuZWVkIHRob3NlIGNvbXBsZXggY29uc3RyYWludHMgZWl0aGVyLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWx3YXlzIGdldCBhIGhhcmR3YXJlIG1lc3NhZ2UgZnJvbSB0aGUgc3lzdGVtIHF1ZXVlIGluIFBlZWtNZXNzYWdlLAoJZXZlbiBpZiBubyBzdWNoIHdha2UgYml0cyBhcmUgc2V0LCBiZWNhdXNlIGluIGEgUGVla01lc3NhZ2UgbG9vcCwKCXRoZXJlJ3Mgbm8gc2xlZXBpbmcsIHNvIHRoZSBuZWNlc3Nhcnkgd2FrZSBiaXRzIGFyZSBuZXZlciBzZXQuLi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBpbmNsdWRlL29sZWN0bC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIENvbm5lY3Rpb24gUG9pbnQgc3VwcG9ydCB0byBPTEUgZm9udCBvYmplY3RzLgoJQWRkIHNvbWUgbW9yZSBUUkFDRSgpcy4KCgkqIGRsbHMvKi8qLnNwZWM6CglBZGRlZCAnb3duZXInIGZpZWxkIHRvIDE2LWJpdCBzcGVjIGZpbGVzIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlCgkzMi1iaXQgZGxsIHRoYXQgY29udGFpbnMgaXQuCgoyMDAwLTA3LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9zb3VuZC5zcGVjLCBkbGxzL3dpbm1tL3NvdW5kMTYuYywgaW5jbHVkZS9zdHJlc3MuaCwgaW5jbHVkZS93aW5lL3dpbmVzb3VuZC5oLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3N0cmVzcy5jLCBkbGxzL2tlcm5lbC9zdHJlc3Muc3BlYywgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglNZXJnZWQgc2V0dXB4LmRsbCBpbnRvIHNldHVwYXBpLmRsbC4KCU1lcmdlZCBzb3VuZC5kbGwgaW50byB3aW5tbS5kbGwuCglNZXJnZWQgc3RyZXNzLmRsbCBpbnRvIGtlcm5lbDMyLmRsbC4KCgkqIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYywgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS9kcGxheV9tYWluLmMsIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyL21zbmV0X21haW4uYywgZGxscy9zaGZvbGRlci9NYWtlZmlsZS5pbiwgZGxscy9zaGZvbGRlci9zaGZvbGRlci5zcGVjLCBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyX21haW4uYywgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy93b3czMi93b3dfbWFpbi5jOgoJQWRkZWQgYSBmZXcgZW1wdHkgc291cmNlIGZpbGVzIHNvIHRoYXQgZWFjaCBkbGwgaGFzIGF0IGxlYXN0IG9uZSBDCglmaWxlLgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsIGluY2x1ZGUvZHJpdmVyLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3Zmdy5oLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYywgd2luZG93cy9kcml2ZXIuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gcmVtb3ZlZCAobm93IG9ic29sZXRlKSBkcml2ZXIuaCBmaWxlIChpdCdzIGNvbnRlbnQgaXMgbm93IGluIG1tc3lzdGVtLmgpCgktIHVwZ3JhZGVkIHZmdy5oIGNvbnRlbnQKCgkqIG1zZG9zL2RwbWkuYzogQXZvaWQgY2xvYmJlcmluZyAlZWJ4LgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJUmV0dXJuIHRoZSBwcm9wZXIgZXJyb3IgY29kZSB3aGVuIGEgMTYtYml0IHRhc2sgZmFpbGVkIHRvIHN0YXJ0CgkodGhhbmtzIHRvIFBldGVyIEdhbnRlbikuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkYXB0ZWQgdG8gdGhlIHJlY2VudCB3aW5lYnVpbGQgcmVuYW1lLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBkZXRlY3Rpb24gY29kZSBmb3IgdmVyeSBvbGQgV2luZG93cyAoMS4xLCAyLjAsIC4uLikgYmluYXJpZXMgdG8KCU1PRFVMRV9HZXRCaW5hcnlUeXBlKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJTW92ZWQgc2hsd2FwaSByb3V0aW5lcyBmcm9tIHNoZWxsMzIuZGxsIHRvIHNobHdhcGkuZGxsLgoKMjAwMC0wNy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9hdG9tLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdW5pY29kZS5jLCBzZXJ2ZXIvdW5pY29kZS5oLCB0b29scy93bWMvTWFrZWZpbGUuaW4sIHVuaWNvZGUvLmN2c2lnbm9yZSwgdW5pY29kZS9NYWtlZmlsZS5pbjoKCU1ha2UgdW5pY29kZS5vIGludG8gYSBzZXBhcmF0ZSBFTEYgbGlicmFyeSBzbyB0aGF0IHdlIGNhbiB1c2UgaXQgZnJvbQoJdGhlIHdpbmVzZXJ2ZXIgdG9vLgoKCSogZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jZHJvbS5oLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gZml4ZWQgYSBncm9zcyBidWcgaW4gU2V0Q3VycmVudERpcmVjdG9yeUEgKHdoZXJlIGNoYW5naW5nIHRvIGEgbmV3CgkgIG5vbi1leGlzdGVudCBkaXJlY3Rvcnkgd291bGQgbGVhdmUgdGhlIG5ldyBkcml2ZSBlbmFibGVkIHVwb24gYWJvcnRpbmcKCSAgKGZpeGVzIEN1dGVGVFAgaW5zdGFsbCBhbmQgc2hvdWxkIGZpeCBNQU5ZIGFwcHMpCgkgIFRoaXMgaGFzIHByb2JhYmx5IGJlZW4gY2F1c2VkIGJ5IG15c2VsZi4gKmJyb3ducGFwZXJiYWcqCgktIGFkZGVkIEdldFZvbHVtZUluZm9ybWF0aW9uIHNlcmlhbCBudW1iZXIgYnVnLWZvci1idWcgY29tcGF0aWJpbGl0eQoJLSBjb3JyZWN0ZWQgVW5pY29kZSBsYWJlbHMgKGJldHRlciBDRC1ST00gaGFuZGxpbmcgaW4gZ2VuZXJhbCkKCS0gbW92ZWQgQ0QtUk9NIGxhYmVsIGRldGVjdGlvbiBjb2RlIHRvIG1pc2MvY2Ryb20uYwoJLSBwb3NzaWJsZSB0byB1c2UgbG9vcGJhY2sgbW91bnRlZCBJU085NjYwIGZpbGVzCgktIGluaXQgc29tZSB1bmluaXRpYWxpc2VkIGRyaXZlIGZpZWxkcwoJLSByZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBoZWFkZXIgaW5jbHVkZXMKCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZGVzdHJveSB0aGUgY2FyZXQgb24gU1dQX0hJREVXSU5ET1cuCgoJKiBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2tlcm5lbC9rZXJuZWwucmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL21lc3NhZ2VzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL21lc3NhZ2VzL3dpbmVycl9lbnUubWMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2xzdHIuYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJSW1wcm92ZWQgRm9ybWF0TWVzc2FnZToKCS0gQWRkZWQgZnVsbCBzdXBwb3J0IGZvciBGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTQoJLSBJbXBsZW1lbnRlZCBsYW5ndWFnZSBzZWFyY2ggYXMgZG9jdW1lbnRlZAoJLSBJbGxlZ2FsIGNvbWJpbmF0aW9ucyBvZiBvcHRpb25zIHRyYXBwZWQuCgktIE1lc3NhZ2UgdGFibGUgZm9yIHN5c3RlbSBtZXNzYWdlcyBhZGRlZC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIEZPUk1BVF9NRVNTQUdFIGZsYWdzIGRlZmluaXRpb24gdG8gd2luYmFzZS5oLgoKCSogTWFrZS5ydWxlcy5pbjoKCUFkZGVkIHJ1bGVzIGZvciBtZXNzYWdlIGNvbXBpbGVyIC5tYyBmaWxlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgbWlzYy9jb21tLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcmFzYXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NlcmlhbHVpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEltcGxlbWVudGVkIGEgYnVnLXdvcmstYXJvdW5kIGZvciBCZXJrZWxleSB5YWNjIChieWFjYykgd2hpY2gKCSAgZG9lcyBub3QgZ2VuZXJhdGUgcHJvcGVyIGRlZmF1bHQgdHJhbnNpdGlvbiBydWxlcyBmb3Igbm9uLXRlcm1pbmFscy4KCSAgU2VlIGNvbW1lbnRzIGluIHBhcnNlci55IGhvdyB0aGUgZml4IHdvcmtzLgoJLSBDaGFuZ2VkIHRoZSBlcnJvci1saW5lL2NoYXIgcG9zaXRpb24gdG8gbWFrZSBlbWFjcyBoYXBweSBwYXJzaW5nCgkgIHRoZSBwb3NpdGlvbiBvZiB0aGUgZXJyb3IuCgktIEFkZGVkIGNvbW1lbnRzIGluIHRoZSBkb2N1bWVudGF0aW9uIGluIHdoaWNoIG9yZGVyIHRoZSBsaW5lLW51bWVyCgkgIGFuZCBjaGFyYWN0ZXItcG9zaXRpb24gb2YgdGhlIGVycm9yIGlzIHdyaXR0ZW4uCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIGxjYWxsIG9wY29kZXMsIHNvIGFsbCBnYXMtZXMgdW5kZXJzdGFuZCBpdC4uLgoKCSogZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9mbGF0dGh1bmsuaCwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy93MzJzY29tYi5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL3V0dGh1bmsuYywgcmVsYXkzMi93b3d0aHVuay5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZmxhdHRodW5rLmgsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTW92ZWQgdGh1bmtpbmcgZnVuY3Rpb25zIG9mZiB0byBrZXJuZWwzMi5kbGwuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3NlYy5jLCBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9yZWdpc3RyeS5jOgoJVGVtcG9yYXJpbHkgbW92ZWQgYWR2YXBpMzIgcmVnaXN0cnkgc3VwcG9ydCBiYWNrIGludG8gbGlid2luZS5zbywgYW5kCgltYWRlIGFkdmFwaTMyIGEgc2VwYXJhdGUgZGxsLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJZml4ZWQgYSBudW1iZXIgb2YgbG9uZyBzdGFuZGluZyBidWdzOgoJICAgIC0gc2VnbWVudGVkIGV4cHJlc3Npb25zIGRpZG4ndCBkaXNwbGF5IGNvcnJlY3RseQoJICAgIC0gdXNpbmcgZHluYW1pYyBzaXplIGFycmF5IGZvciBuZXN0ZWQgdHlwZXMgcGFyc2luZwoJICAgIC0gY29ycmVjdCBkaXNwbGF5IG9mIHNvdXJjZSBjb2RlIGFmdGVyIGEgY3Jhc2gKCWZhY3Rvcml6ZWQgc29tZSBjb2RlCgoJKiBkbGxzL2dkaS93aW5nLmMsIGRsbHMvZ2RpL3dpbmcuc3BlYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluOgoJTWVyZ2VkIHdpbmcuZGxsIGludG8gZ2RpMzIuZGxsLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgdGhlIGF0dGVtcHQgdG8gZHJhdyBpbnZhbGlkIGltYWdlIGluZGV4ZXMuCglQcm92aWRlIHRoZSB0d28gcGl4ZWwgYnVmZmVyIGJldHdlZW4gdGhlIGltYWdlIGFuZCB0aGUgbGFiZWwuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQSBnZW5lcmljIGltcGxlbWVudGlvbiBvZiBJQ29ubmVjdGlvblBvaW50L0lFbnVtQ29ubmVjdGlvbnMuCgoJKiB0b29scy9mbnQyYmRmLmMsIHRvb2xzL2ZudDJiZGYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgZm50MmJkZiBwcm9kdWNlIGNvcnJlY3QgZm9udHMuCgoJKiBtc2Rvcy9pbnQxNi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1ha2UgaW50MTYgcmVhZCBmcm9tIHRoZSBCSU9TIGtleWJvYXJkIGJ1ZmZlciwgbm90IGRpcmVjdGx5IGZyb20gdGhlCgljb25zb2xlIGRyaXZlci4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBicm9rZW4gYXNzZW1ibGVyLiBSZW1vdmVkIHN1cHBvcnQgZm9yIG9sZCBwcm90ZWN0ZWQtbW9kZSBoYWNrCglmb3IgcnVubmluZyByZWFsLW1vZGUgY29kZSBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IHZtODY7IHRoZQoJY3VycmVudCBDYWxsUk0tPlJNQ0Igc2hvcnRjdXQgY29kZSBzaG91bGQgdGFrZSBjYXJlIG9mIGFsbAoJV2luZS1zdXBwbGllZCBSTSBBUElzIChzdWNoIGFzIERPU0FTUEkpIGFueXdheS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jOgoJUGVyZm9ybSBORV9Jbml0UHJvY2VzcyBpbiB0aGUgY29udGV4dCBvZiB0aGUgbmV3IHRhc2suCgoyMDAwLTA3LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLCBkbGxzL21zYWNtL3dpbmVhY20uaCwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uc3BlYywgZGxscy9rZXJuZWwvd2luZGVidWcuYywgZGxscy9rZXJuZWwvd2luZGVidWcuc3BlYzoKCU1lcmdlZCBtc2FjbSBhbmQgbXNhY20zMiBkbGxzLgoJTWVyZ2VkIHdpbjg3ZW0gYW5kIHdpbmRlYnVnIGludG8ga2VybmVsMzIuZGxsLgoKMjAwMC0wNy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9ncnBmaWxlLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGludC9IQU5ETEUgbWlzbWF0Y2hlcyByZXZlYWxlZCBieSAtRFNUUklDVC4KCVJlcGxhY2VkIHRoZSBXaW4xNiBobWVtY3B5MTYgKG9ic29sZXRlKSB3aXRoIG1lbWNweS4KCgkqIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBXaW5NYWluJ3Mgc2lnbmF0dXJlLgoJUmVwbGFjZWQgdGhlIFdpbjE2IGhtZW1jcHkxNiAob2Jzb2xldGUpIHdpdGggbWVtY3B5LgoJUmVtb3ZlZCBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIHRoZSBMYW5ndWFnZXMgYXJyYXkuCgoJKiBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsIHByb2dyYW1zL3Byb2dtYW4vc3RyaW5nLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byB0aGUgTGFuZ3VhZ2VzIGFycmF5LgoKCSogcHJvZ3JhbXMvY2xvY2svbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBXaW5NYWluJ3Mgc2lnbmF0dXJlLgoJRml4ZWQgcGFyYW1ldGVyIG9yZGVyIGZvciB0aGUgY2FsbCB0byBDcmVhdGVXaW5kb3cuCgoJKiBsaWJ0ZXN0L2hlbGxvLmMsIGxpYnRlc3QvaGVsbG8yLmMsIGxpYnRlc3QvaGVsbG8zLmMsIGxpYnRlc3QvaGVsbG80LmMsIGxpYnRlc3QvaGVsbG81LmMsIGxpYnRlc3QvbmV3LmMsIGxpYnRlc3Qvcm9sZXguYywgbGlidGVzdC92YXJ0ZXN0LmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy93aW52ZXIvd2ludmVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIFdpbk1haW4ncyBzaWduYXR1cmUuCgoJKiBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIC1EU1RSSUNULgoJQWRkZWQgbWlzc2luZyBsaWJyYXJpZXMgY29tY3RsMzIgYW5kIHJwY3J0NC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUFkZHMgYW4gaW5pdGlhbCBXU0FJb2N0bCBmdW5jdGlvbiB3aXRoIHN1cHBvcnQgZm9yIG9ubHkgdGhlCglTSU9fR0VUX0lOVEVSRkFDRV9MSVNUIGNvbW1hbmQuICBBZGRzIGluaXRpYWwgY29kZSB0byBXc0NvbnRyb2wKCWZ1bmN0aW9uIHRvIHN1cHBvcnQgdGhlIFdTQ05UTF9UQ1BJUF9RVUVSWV9JTkZPIGNvbW1hbmQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb21waWxhdGlvbiBmaXhlcyBmb3IgT3BlbkdMLgoKCSogTWFrZS5ydWxlcy5pbjogTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJQ29ycmVjdGVkIGMybWFuIGZsYWdzLiBJdCBzdGlsbCBjcmFzaGVzIGFueWhvdyA6LS8KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEZXRlY3QgYnJva2VuIGdsZXh0LmggaGVhZGVycy4KCgkqIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uaDoKCU1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUFkZGVkIHNvbWUgYmFzaWMgdGV4dCBkaXNwbGF5IGFuZCBlZGl0aW5nIGNhcGFiaWxpdGllcywgY3Vyc29yCglwb3NpdGlvbmluZywgYSBiaXQgb2Ygc2Nyb2xsaW5nIGFuZCBhIHRleHQgZmlsZSBsb2FkZXIuCgoJKiBpbmNsdWRlL3RhcGkuaDogTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJSW1wbGVtZW50ZWQgbGluZUdldENvdW50cnkuICh3b3JrcyB3aXRoIEh5cGVyVHJtLmV4ZSkKCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRW8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywgZGxscy9jb21tZGxnL2NkbGdfTm8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGb2N1cyBoYW5kbGluZywgdmlzdWFsIGNoYW5nZXMgKyBtaXNjIGZpeGVzLgoKCSogZGxscy90YXBpMzIvbGluZS5jOiBNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglJbXBsZW1lbnRlZCBsaW5lR2V0Q291bnRyeS4gKHdvcmtzIHdpdGggSHlwZXJUcm0uZXhlKQoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBkdXBsaWNhdGUgZGVjbGFyYXRpb24gb2YgQWRkQWNjZXNzQWxsb3dlZEFjZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGZ1bmN0aW9uIFNldEl0ZW0gaXMgY2FsbGVkIHRvIHNlbGVjdCBhbiBpdGVtCglvciBzZXQgaXRzIGZvY3VzLgoKCSogZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2QzZHR5cGVzLmgsIGluY2x1ZGUvZDNkdmVjLmlubDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgYSBmZXcgQysrIG9wZXJhdG9ycyB0byBEaXJlY3QzRCBzdHJ1Y3R1cmVzLCBhbmQgbWFkZSBzb21lIHVuaW9ucwoJJ25hbWVsZXNzJy4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnN1cmVkIHRoYXQgYWxsIHBhcmFtZXRlcnMgb2YgYXN5bmMgZnVuY3Rpb25zIGFyZSBjb3BpZWQgYmVmb3JlCglyZXR1cm5pZyBmcm9tIHJlcXVlc3QuCgoJKiBjb250cm9scy9zY3JvbGwuYywgZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnMsIGRvY3VtZW50YXRpb24veDExZHJ2LCB0b29scy93aW5lY29uZjoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IGEgZmV3IHR5cG9zIGFuZCBzdWNoLgoKCSogaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzb21lIERpcmVjdERyYXc3LXJlbGF0ZWQgZGVmaW5pdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFrZSBub24tZXhpc3RlbmNlIG9mIChmKWxleCBhbiBlcnJvci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlEaXJlY3REcmF3LElEaXJlY3REcmF3MixJRGlyZWN0RHJhdzQgZml4ZWQgdXAgaW4gcmVnYXJkIHRvIENPTSB1c2FnZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgZmV3IFdpbjMyIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlZHVjZSBzY29wZSBvZiAiU3RhdHVzIiAjaWZkZWYgaGFjay4KCgkqIGlmMTYzMi9yZWxheS5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTYXkgdGhhdCAiTm8gaGFuZGxlciIgbWVzc2FnZXMgYXMgZmF0YWwuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEZpeGVkIFNoYXJlZERpciBsb2NhdGlvbi4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbXNkb3MvZHBtaS5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvd2lubnQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hhbmdlIHRoZSBWODZCQVNFIG1hY3JvIHRvIGNhbGwgRE9TTUVNX01lbW9yeUJhc2UoKSBpbnN0ZWFkIG9mIHVzaW5nCgl0aGUgdWdseSBEcjcgaGFjay4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmlyc3Qgc2VlayBvbiBNRU0gbW1pbyBmaWxlcy4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSBjYWxscyB0byBESUFMT0dfRG9EaWFsb2dCb3ggYW5kIERJQUxPR19DcmVhdGVJbmRpcmVjdC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBmZXcgbW9yZSBmaWVsZHMgdG8gSFRUUF9HZXRTdGRIZWFkZXJJbmRleCgpIGFuZCBmaXggc29tZSB0eXBvcy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJUHV0IHRoZSBVUkwgcGFyYW1ldGVyIGxpc3QgaW4gd2l0aCB0aGUgVVJMIHBhdGggaWYgdGhlIEV4dHJhSW5mbwoJYnVmZmVyIGlzbid0IHNwZWNpZmllZC4KCgkqIGNvbnRyb2xzL2ljb250aXRsZS5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlZCBjYWxjdWxhdGlvbiBvZiBidWZmZXIgbGVuZ3RoIGFmdGVyIHN3aXRjaCBvZiB3aW5kb3cgdGV4dCB0bwoJdW5pY29kZS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNvbW1lbnQgb3V0IGEgbm9uZnVuY3Rpb25hbCBET1MgcGFydCBvZiBkZWJ1Z2dlci4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc3R1YiBmb3IgUmFzSGFuZ1VwQSgpLgoKCSogd2luZG93cy9kZWZ3bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZWZXaW5kb3dQcm9jIHNob3VsZCBwYXNzIHVuaGFuZGxlZCBXTV9NT1VTRVdIRUVMIHRvIHBhcmVudCwgYWNjb3JkaW5nCgl0byBkb2N1bWVudGF0aW9uLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBmZXcgcHJvYmxlbXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CgktIENoYW5nZWQgdGhlIHRlbXBvcmFyeSBidWZmZXIgZm9yIGxvYWRpbmcgcmVzb3VyY2VzIGZyb20gMjU2IHRvIDUxMgoJLSBEZWZpbmUgTUFYX1JFU09VUkNFX1NUUklOR19MRU5HVEggaW5zdGVhZCBvZiB1c2luZyBpdCBtYWdpY2FsbHkgdGhyb3VnaG91dAoJICB0aGUgZnVuY3Rpb24KCS0gVXNlIGxzdHJjcHluVyBpbnN0ZWFkIG9mIGxzdHJjcHlXCgoyMDAwLTA3LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDAwNzE2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA3LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wcm9jLmM6CglBZGRlZCBhc3NlbWJseSB3cmFwcGVyIGZvciBjYWxsaW5nIHdpbmRvdyBwcm9jZWR1cmVzLgoKCSogaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21haW4uYywgbWlzYy9vcHRpb25zLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUdldCBmdWxsIHBhdGggb2YgYXJndlswXSBiZWZvcmUgd2UgY2hhbmdlIGRpcmVjdG9yaWVzLgoJTWFrZSBzdXJlIHByb2Nlc3MgbmFtZXMgYXJlIGxvbmcgcGF0aCBuYW1lcy4KCUNsZWFuZWQgdXAgaW5pdGlhbGlzYXRpb24gYSBiaXQuCgoJKiBzZXJ2ZXIvc29jay5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbiBzZXRfc29ja2V0X2V2ZW50LCB0aGUgZXZlbnQgc2hvdWxkIGJlIHNpZ25hbGVkIGlmIHRoZXJlJ3MgYSBwZW5kaW5nCgluZXR3b3JrIGV2ZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGV2ZW50cyB0aGUgYXBwbGljYXRpb24gd2FudGVkIHRvIGJlCglub3RpZmllZC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL2NsYXNzLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL25lL21vZHVsZS5jLCB0b29scy93aW5laW5zdGFsbCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS93aW51c2VyLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURvYyBhbmQgdHJhY2UgdXBkYXRlcy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyYW5zbWl0IGN1cnJlbnQgZGlyZWN0b3J5IHNldHRpbmdzIHRvIG5ld2x5IGNyZWF0ZWQgcHJvY2Vzc2VzLgoKCSogZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQWRkZWQgR2VybWFuIGluc3RhbGxhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBtYW51YWwuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJUmF1bCBGZXJuYW5kZXMgPHJnZkBpZWcuY29tLmJyPgoJQWRkZWQgQnJhemlsaWFuIGtleWJvYXJkLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCBjbGlwcGluZyByZWdpb24gdG8gY2xpZW50IHdpbmRvdyBiZWZvcmUgb3duZXItZHJhd24gcGFpbnRpbmcuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHRoZSAiU2hhcmVkRGlyIiByZWdpc3RyeSBrZXkuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggRGlyZWN0M0Qgc3VwcG9ydCBhbmQgYSBsb3Qgb2Ygd2FybmluZ3MKCS0gYWRkIHN1cHBvcnQgZm9yIEREcmF3IGluIGEgd2luZG93IChub3Qgb3B0aW1pemVkIHlldCkKCS0gY2xlYW5zIHVwIE9wZW5HTCBleHRlbnNpb25zIGhhbmRsaW5nIGZvciBEM0QKCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUJhY2tncm91bmQgb2YgU1NfU0lNUExFIHN0YXRpYyBjb250cm9sIGlzIG5vdCBmaWxsZWQgKHVubGVzcyBpdCBoYXMKCVNTX05PUFJFRklYIHRvbykuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJvcCBVTklYIGN3ZCB0byAvIGFmdGVyIGNhbGN1bGF0aW5nIFdJTkUgY3VycmVudCBkaXJlY3RvcnkgKHRvIGFsbG93CglDRCB1bm1vdW50cykuCgoyMDAwLTA3LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglOZXcgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggZnJvbSBGcmFuY29pcyBKYWNxdWVzIHdpdGggYSBtb2RpZmljYXRpb24gb2YKCW15IG93biB0aGF0IG1ha2VzIGV2ZXJ5Ym9keSBoYXBweSA6LSkKCgkqIG1pc2MvY29tbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglIb29rIHNlcmlhbHVpIGRsbCBpbnRvIGV4aXN0aW5nIGNvbW0gZnVuY3Rpb25zLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvLmN2c2lnbm9yZSwgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuaCwgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBzZXJpYWx1aSBkbGwgY29udGFpbmluZyBDb21tQ29uZmlnRGlhbG9nLAoJR2V0RGVmYXVsdENvbW1Db25maWcgYW5kIFNldERlZmF1bHRDb21tQ29uZmlnLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NldHVwYXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMuCgktIE1pbm9yIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBjb250cm9scy9idXR0b24uYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJQWxsIHN0YW5kYXJkIHdpbmRvdyBjb250cm9scyBzaG91bGQgaGF2ZSBDU19QQVJFTlREQywgYnV0IHNob3VsZCBzdGlsbAoJY2xpcCB0byB0aGUgY29udHJvbCB3aW5kb3cuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCUpvaG4gUiAuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglXZSBhbHNvIGhhdmUgdG8gdmFsaWRhdGUgdGhlIGZyYW1lIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hlbiB0aGUKCWFwcCBkb2Vzbid0IGNhbGwgQmVnaW5QYWludC4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRXh0ZW5kIHRoZSBXU09DSzMyIHdhcm5pbmcgaW4gY2VydGFpbiBmdW5jdGlvbnMgdG8gbWVudGlvbiBXUzJfMzIgdG9vLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglFZCBTbm93IDxlZF9zbm93QHR0bWVuZ2luZWVyaW5nLmNvbT4KCUZpeGVzIHVubXV0aW5nIHdoZW4gdW5tdXRlZC4KCVVuaWZpZXMgc2NhbGUgcmVwb3J0ZWQgd2l0aCBzY2FsZSB1c2VkIGZvciB2b2x1bWUgY29udHJvbC4KCUhhY2sgZm9yIEJhc3MvVHJlYmxlIHVudGlsIGJldHRlciBmaXggaXMgY29tcGxldGUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBEQkNTL3VuaWNvZGUgZW5jb2RpbmcgdGVtcGxhdGVzLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBjbGVhciBzZWxlY3Rpb24gd2hlbiBpbml0aWFsIGVudHJ5IGlzIG5vdCBpbiB0aGUgbGlzdC4KCgkqIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG9sZS9vbGUybmxzLmM6CglNYWRlIC0tbGFuZ3VhZ2UgYmVoYXZlIHRoZSBzYW1lIGFzIHNldHRpbmcgdGhlIExBTkdVQUdFIGVudmlyb25tZW50Cgl2YXJpYWJsZS4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL3JwY3J0NC8uY3ZzaWdub3JlLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvd3R5cGVzLmgsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBycGNydDQuZGxsLgoJSW1wbGVtZW50IFV1aWRDcmVhdGUgKHVzaW5nIGV4aXN0aW5nIGNvZGUgZnJvbSBDb0NyZWF0ZUd1aWQpLgoJQ29DcmVhdGVHdWlkIGNhbGxzIFV1aWRDcmVhdGUuCgoJKiBtZW1vcnkvaGVhcC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3Igc3VwcG9ydGluZyBEQkNTLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglSb2IgRmFybnVtIDxyZmFybnVtQG1pbmRzcHJpbmcuY29tPgoJSWdub3JlIGlCaXRtYXAgd2lkdGggd2hlbiBkcmF3aW5nIGZsYXQgdG9vbGJhci4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglGaXhlZCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIHRoZSBQRSBsb2FkZXIuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSA8amNiQG1hY2FkYW1pYW4uY29tPgoJRW5zdXJlIHRoZSB2YWxpZGl0eSBvZiBoT2xkRm9jdXMgYmVmb3JlIGNhbGxpbmcgV0lOX0dldFRvcFBhcmVudC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJRHJldyBSb25uZWJlcmcgPGRyZXdAY29kb24ucHJpbmNldG9uLmVkdT4KCUlnbm9yZSBicm9rZW4gZm9udHMgd2hlbiBidWlsZGluZyBjYWNoZSBmaWxlLgoKCSogd2luZG93cy93aW4uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBbGxvdyBTZXRXaW5kb3dMb25nKC4uLiBHV0xfU1RZTEUpIHRvIGNoYW5nZSB2aXNpYmxlIGJpdC4KCgkqIGRvY3VtZW50YXRpb24vcmVnaXN0cnk6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz5ECglUZXh0IG9mIFdXTiBhcnRpY2xlICJUaGUgUmVnaXN0cnkiLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaDoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CgktIE5ldyBmdW5jdGlvbiBpbiBhc3BpLmMgU0NTSV9GaXhfQ01EX0xFTiB3aGljaCBkZXRlcm1pbmVzIGlmIExpbnV4IGlzCgkgIGd1ZXNzaW5nIHRoZSBjb21tYW5kIGxlbmd0aCBjb3JyZWN0bHksIGFuZCBpZiBub3QsIHRlbGwncyBpdCB3aGF0J3MgdXAuCgktIENoYW5nZWQgc3RyY2F0IHRvIHN0cmNweSBpbiBTZW5kQVNQSTMyQ29tbWFuZCB0byBhdm9pZCByZXF1aXJpbmcgdGhlCgkgIGNhbGxlciB0byBjbGVhciB0aGUgZmllbGRzLgoJLSBBZGRlZCBhIG5ldyBmaWVsZCB0byBIQV9VbmlxdWUgY29udGVudCB0byBmaXggc29tZSBhcHBsaWNhdGlvbnMuICBXaWxsCgkgIGZpeCB0aGlzIGZvciBnb29kIGF0IGEgbGF0ZXIgZGF0ZS4KCS0gQWRkZWQgVFJBQ0UgdG8gR2V0QVNQSTMyRExMVmVyc2lvbiAoYW5kIEZJWE1FIHdoZW4gbm90IHJ1bm5pbmcgdW5kZXIKCSAgTGludXgpCgktIEFkZGVkIHNvbWUgY29uc3RhbnRzIHRvIHdpbmVzY3NpLmgKCSh3aXRoIHRoZSBoZWxwIG9mIEJlcm5kIEJlcm5pZSBNZXllciA8Ym1leWVyQGNzLm1vbmFzaC5lZHUuYXU+KQoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVN0dWJzIGZvciBDcmVhdGVEZXNrdG9wQSBhbmQgRW51bURlc2t0b3BXaW5kb3dzLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCB3czJfMzIgbG9hZG9yZGVyLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVRyeSB0byB1bmxpbmsgb3V0cHV0IGZpbGUgYmVmb3JlIG9wZW5pbmcgaXQuCgoJKiBjb250cm9scy9lZGl0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkICVzIGJ5ICVwIGluIEVESVRfV01fU2V0VGV4dC4KCgkqIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgV1NBV2FpdEZvck11bHRpcGxlRXZlbnRzIChhbGlhcyB0byBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgpLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkIGEgd2FybmluZyB3aGVuIHRoZSBub3JtYWwgbG9hZCBhZGRyZXNzIGZvciBhIHdpbjMyIHByb2dyYW0gaXMgbm90CglhdmFpbGFibGUuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi9zdHVicy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJT0xFIHBpY3R1cmUgb2JqZWN0IGltcGxlbWVudGF0aW9uLgoKCSogbWlzYy9jb21tLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGFuIGluY29ycmVjdCBmb3JtYXQgc3RyaW5nLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBsb2Fkb3JkZXIgZW50cnkgZm9yIHRoZSBMaW51eCBnbGlkZTN4IGxpYnJhcnkuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCAiQ29tbW9uRmlsZXNEaXIiPSJDOlxQcm9ncmFtIEZpbGVzXENvbW1vbiBGaWxlcyIuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgUGVudGl1bSBQcm8vMi8zLzQgY29uZGl0aW9uYWwgbW92ZSBpbnN0cnVjdGlvbnMuCgoyMDAwLTA3LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgbWVtb3J5L2NvZGVwYWdlLmM6CglTZXQgYW5zaS9vZW0vbWFjIGNvZGUgcGFnZXMgZnJvbSBjdXJyZW50IGxvY2FsZS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQmV0dGVyIGVycm9yIG1lc3NhZ2UgZm9yIHJlYWxseSBjbHVlbGVzcyBuZXdiaWVzLgoKCSogZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU3R1YiBmb3IgdGhlIEFDTV9NRVRSSUNfTUFYX1NJWkVfRk9STUFUIGNvbW1hbmQgb2YgYWNtTWV0cmljcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTlVMTCBmbGlwY2hhaW4gYW5kIGp1c3QgcmV0dXJuIHRoZSBjdXJyZW50IHN1cmZhY2UgaWYgaXQKCWhhcHBlbnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgX3ZzbnByaW50ZiBieSBjYWxsaW5nIHd2c25wcmludGZBLgoKCSogb2JqZWN0cy9kaWIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW4gQ3JlYXRlRElCU2VjdGlvbiBmdW5jdGlvbiwgaWYgaGRjIGlzIE5VTEwgaXQgbm93IHVzZXMgdGhlIGRlc2t0b3AgREMKCWluc3RlYWQgb2YgZmFpbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBUT09MQkFSX0RyYXdTdHJpbmcoKSB0byBvZmZzZXQgYnV0dG9uIHRleHQgaWYgaW5mb1B0ci0+aGltbERlZgoJaXMgbm9uLXplcm8uICBCZXR0ZXIgZml4IHRoYW4gbXkgcHJldmlvdXMgcGF0Y2guCgoyMDAwLTA3LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJTGF6eSBpbml0aWFsaXNhdGlvbiBvZiB0aHJlYWQgbG9jYWxlLgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGluY2x1ZGUvZHBsb2JieS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gTWFrZSByZWYgY291bnRpbmcgYSBsaXR0bGUgbW9yZSBlZmZpY2llbnQKCS0gQ29ycmVjdCBzdXNwZW5kZWQgcHJvY2VzcyByZXN1bXB0aW9uCgktIERvbid0IHVzZSBzeXMvcXVldWUuaCBhbnltb3JlCgktIFByb3Blcmx5IGluaXRpYWxpemUgdGhlIGdsb2JhbCBzZW1hcGhvcmUgYWNyb3NzIHByb2Nlc3NlcwoJLSBDcmVhdGUgYSBtYXBwZWQgZmlsZSBmb3Igc2hhcmVkIGRhdGEgc3RydWN0dXJlcwoJLSBDaGFuZ2Ugc29tZSB0cmFjZSBtZXNzYWdlcwoJLSBBbGxvY2F0ZSBkeW5hbWljIHNoYXJlZCBkYXRhIGZyb20gdGhlIG1hcHBlZCBmaWxlCgktIFJld29yayBzZXR0aW5nIGFuZCByZXRyaWV2aW5nIGxvYmJ5IHNldHRpbmdzIGZyb20gc2hhcmVkIG1lbW9yeQoJLSBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIHN5bmNyb25pemF0aW9uIGFmdGVyIGFwcCBsYXVuY2gKCS0gU21hbGwgZG9jdW1lbnRhdGlvbiB1cGRhdGUKCS0gSW5jbHVkZSBzb21lIHN0dWZmIG1pc3NpbmcgZnJvbSBoZWFkZXIKCS0gU3RhcnQgb24gZHAgYW5kIGRwbCBtZXNzYWdlIGluZnJhc3RydWN0dXJlCgktIFVuaWNvZGUgdmVyc2lvbnMgb2YgcGxheWVyL2dyb3VwIGNvbW1hbmRzIGFkZGVkCgktIENvbWJpbmVkIENvbm5lY3QvQ29ubmVjdEV4IGFuZCBPcGVuL1NlY3VyZU9wZW4KCS0gTW9yZSBpbXBsZW1lbnRhdGlvbgoKCSogZGxscy9rZXJuZWwvbmxzLyosIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1vdmVkIGFsbCBOTFMgZGVwZW5kZW50IGRhdGEgdG8gdGhlIEtFUk5FTCByZXNvdXJjZXMuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1vdmVkIHNldHRpbmcgdGhlIGxvY2FsZSB2YWx1ZSB0byB0aGUgcmlnaHQgcG9zaXRpb24uCgoJKiBtaXNjL2xzdHIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBGb3JtYXRNZXNzYWdlW0F8MTZdIGFnYWluc3Qgc29tZSBidWZmZXIgb3ZlcmZsb3cgY2FzZXMuCgoJKiBkZWJ1Z2dlci9pbmZvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBleHRyYW5lb3VzIHRyYWNlIG1lc3NhZ2UuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVuY29uZGl0aW9ubmFsbHkgcHJpbnQgbWVzc2FnZXMgb24gRExMIGxvYWQgYnJlYWtwb2ludC4KCgkqIGRlYnVnZ2VyL2JyZWFrLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIHdpbmVkYmcgd2F0Y2hwb2ludHMuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglQcmV2ZW50IFN5c0FsbG9jU3RyaW5nIGFuZCBTeXNBbGxvY1N0cmluZzE2IHRvIHBlcmZvcm0gYW55IHByb2Nlc3NpbmcKCW9uIE5VTEwgc3RyaW5ncy4KCgkqIHRvb2xzL2ZudDJiZGYuYzoKCVN0YXMgU2VyZ2VldiA8c3Rhcy5vcmVsQG1haWxjaXR5LmNvbT4KCU1ha2UgaXQgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBlbmNvZGluZyBvZiBmb250cyBmcm9tIHRoZSBjb21tYW5kCglsaW5lLCBldmVuIGlmIGF1dG9kZXRlY3RlZC4KCgkqIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9zdGF0aWMuYywgaW5jbHVkZS9tZGkuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZS5pbmk6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUNvbnZlcnQgV05ELnRleHQgZmllbGQgdG8gVW5pY29kZS4KCUFkZCBuZXcga2V5IHRvIHdpbmUuaW5pIGluIHRoZSBzZWN0aW9uIFt4MTFkcnZdIC0gVGV4dENQLCB3aGljaCBtZWFucwoJY29kZSBwYWdlIHVzZWQgZm9yIHRleHRzIHBhc3NlZCB0byBYLgoJQWNjb3JkaW5nbHkgZml4IGhhbmRsZXJzIG9mIFdNX1NFVFRFWFQvV01fR0VUVEVYVC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogQmFja2VkIG91dCBwcmV2aW91cyBwYXRjaC4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvdXNlci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBSZWdpc3RlckRldmljZU5vdGlmaWNhdGlvbkEuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZha2VzIGEgbmVnb3RpYXRpb24gb2YgdGhlIHdpbnNvY2sgdmVyc2lvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGJldHRlciBsb2FkaW5nIG9mICoudGxiIGZpbGVzCgktIHNlcGVyYXRlZCBjb2RlIGZvciBsb2FkaW5nIHRsYiByZXNvdXJjZSBpbnRvIG1lbW9yeSBmcm9tIGNvZGUgZm9yCgkgIHBhcnNpbmcgdGhlIHRsYiByZXNvdXJjZS4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUltcGxlbWVudGVkIE9sZUNyZWF0ZS4KCjIwMDAtMDctMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2NsYXNzLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJR2V0Q2xhc3NJbmZvIHNob3VsZCByZXR1cm4gZ2xvYmFsIGNsYXNzZXMgZXZlbiBpZiB0aGUgaEluc3RhbmNlCglwYXJhbWV0ZXIgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9uZSBwYXNzZWQgdG8gdGhlIFJlZ2lzdGVyQ2xhc3MKCWZ1bmN0aW9uLgoKCSogbWlzYy9jb21tLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJRml4ZXMgdGhlIEJ1aWxkQ29tbURDQkEgZnVuY3Rpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9wb3J0LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBsaWJ1dGlsLmguCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFrZSB0aGUgZm9jdXMgZm9sbG93IHRoZSBsYXN0IHNlbGVjdGVkIGl0ZW0gZm9yIG11bHRpc2VsZWN0IGxpc3Rib3hlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIExIYXNoVmFsT2ZOYW1lU3lzQS4KCURvbid0IGNyYXNoIGlmIHdlIGVuY291bnRlciBhIEJTVFIgd2l0aCBsZW5ndGggPD0gMC4KCUZpeCB0eXBvcyBpbiBJVHlwZUxpYjo6R2V0RG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglXaXRoIHNvbWUgYXBwcyBhIGZhdWx0IHdhcyBwb3NzaWJsZSBpbiBFeHRyYWN0QXNzb2NpYXRlZEljb24uCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJR2V0SWNvbkluZm8gZGlkIG5vIGNvcnJlY3RseSBpZGVudGlmeSBpY29ucyBmcm9tIGN1cnNvcnMuCgoJKiB3aW5kb3dzL21zZ2JveC5jOgoJSGFpdGhlbSBIbWlkYSA8aGFpdGhlbUBtYWNhZGFtaWFuLmNvbT4KCVVuZGVyIFdpbmRvd3MgOTUvOTgvTlQsIG1lc3NhZ2UgYm94ZXMgZG8gbm90IGhhdmUgYSBkZWZhdWx0IGljb24uCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglGaXhlZCBsc3RyY3B5bkF0b1cgdXNhZ2UgKHJlcG9ydGVkIGJ5IFN0YXMgU2VyZ2VldikuCglTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvd3NvY2szMi8uY3ZzaWdub3JlLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgZGxscy9kcGxheS8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L2RwbGF5LnNwZWMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5zcGVjLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvd293MzIuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGZvbGRlci5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3NoZm9sZGVyLy5jdnNpZ25vcmUsIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGx3YXBpLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93aW5zb2NrL3dzb2NrMzIuc3BlYywgZGxscy93b3czMi8uY3ZzaWdub3JlLCBkbGxzL3dvdzMyL01ha2VmaWxlLmluLCBkbGxzL3dvdzMyL3dvdzMyLnNwZWMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJQ3JlYXRlZCBzZXBhcmF0ZSBsaWJyYXJpZXMgZm9yIGRwbGF5LCBzaGZvbGRlciwgc2hsd2FwaSwgd293MzIgYW5kCgl3c29jazMyIHNvIHRoYXQgd2UgaGF2ZSBhdCBtb3N0IG9uZSBXaW4zMiBkbGwgaW4gZWFjaCAuc28gbGlicmFyeS4KCjIwMDAtMDctMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVcGRhdGVkIFgxMURSVl9ESUJfR2V0RElCaXRzIHRvIHByb3Blcmx5IGhhbmRsZSBib3R0b20tdXAgRElCcwoJbWFuaXB1bGF0aW9uLgoJQ29ycmVjdGVkIFhHZXRTdWJJbWFnZSBhcmd1bWVudHMgb3JkZXIuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1hdHRoZXcgTGFrZSA8TUxha2VAc3VuYmVsdC1wbGIuY29tPgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluaXRpb25zLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgU2FmZUFycmF5R2V0VmFyVHlwZS4KCUFkZGVkIGEgVlRfUkVDT1JEIHZhcmlhbnQgdHlwZSBkZWZpbml0aW9uLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgbWlzYy9jb21tLmM6CglTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZ1bmN0aW9ucyBHZXREZWZhdWx0Q29tbUNvbmZpZ0EvVy4KCgkqIGRsbHMvZGRyYXcvY29udmVydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUNvcnJlY3RlZCAyNC0+MzIgY29udmVyc2lvbi4gU3RpbGwgb25seSBjb3JyZWN0IGZvciBsaXR0bGUgZW5kaWFuLgoKCSogd2luZG93cy93aW5wb3MuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglDaGVjayBmb3IgV1NfRElTQUJMRUQgcGFyZW50IGluIFdpbmRvd0Zyb21Qb2ludCBmb3IgdW4tbWFuYWdlZCB3aW5kb3dzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglSZW5hbWUgTU9EVUxFX0luaXREbGwgdG8gTU9EVUxFX0luaXRETEwgZm9yIHRoZSBzYWtlIG9mIGNvbnNpc3RlbmN5LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIFRPT0xCQVJfRHJhd1N0cmluZygpIHRvIG9mZnNldCBidXR0b24gdGV4dCBpZiB0aGUgaGltbCBwYXJhbWV0ZXIKCWlzIG5vbi16ZXJvIG9yIHRoZSBkZWZhdWx0IGhpbWwsIGhpbWxEZWYsIGlzIG5vbi16ZXJvLiAgRml4ZXMgYSBidWcgaW4KCVdpblppcCA4LjAgd2hlcmUgdGV4dCBpcyBub3Qgc2hpZnRlZCBkb3duIGJ5IHRoZSBoZWlnaHQgb2YgdGhlIGJ1dHRvbgoJaW1hZ2UuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJQ2hlY2sgdGhlIHZhbHVlIHJldHVybmVkIGJ5IERJQUxPR19HZXRDaGFyU2l6ZS4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc2V0dXBhcGkgc2hhcmVkIGxpYnJhcnkgYW5kIFNldHVwSXRlcmF0ZUNhYmluZXQgc3R1Yi4KCgkqIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgaW5jbHVkZS92ZncuaCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L21zdmlkZW8uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2ZnczMi5hcGksIHdpbmRvd3MvZHJpdmVyLmM6CglCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUltcGxlbWVudGVkIGEgbGFyZ2UgbnVtYmVyIG9mIHRoZSBtc3ZpZGVvIGRsbCByb3V0aW5lcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBbGxvdyB0aGUgc2l6ZSBvZiBiaXRtYXBzIHRvIGJlIGNoYW5nZWQgYWZ0ZXIgdG9vbGJhciBidXR0b25zIGhhdmUKCWJlZW4gYWRkZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCU9uIFdpbmRvd3MgcHJvcGVydHkgc2hlZXQgaGFzIERXTF9VU0VSIGR3b3JkIHBvaW50aW5nIHRvIGEgc3RydWN0dXJlCgl0aGF0IHN0YXJ0cyB3aXRoIEhXTkQgYW5kIFBST1BTSEVFVEhFQURFUiBmaWVsZHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIEdldC9TZXRUaHJlYWRQcmlvcml0eUJvb3N0LgoKCSogZG9jdW1lbnRhdGlvbi9wc2RyaXZlcjoKCVN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJQWRkZWQgZG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gc2V0dXAgd2luZSdzIEJ1aWxkaW4gUG9zdHNjcmlwdCBEcml2ZXIKCXdvcmtpbmcgd2l0aCBnaG9zdHNjcmlwdCAoYWZtZmlsZXMsIHBwZGZpbGUpLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gRXhwbGljaXQgaW5pdCBvZiBydG4uY29va2llIGluIERFQlVHX0V2YWxFeHByIHRvIGJhZCB2YWx1ZSB0bwoJICBleHBvc2UgZnVydGhlciBiYWQgY29kZQoJLSBQcmludCBvZiBwb2ludGVyIHVzZWQgYXMgYXJyYXkgbm93IHdvcmtzCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglPbmx5IHVzZSB0aGUgY29sdW1uIGhlYWRlcnMgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiBhCglMRFNfUkVQT1JULXR5cGUgbGlzdGJveCBpZiBpdCBhY3R1YWxseSBoYXMgY29sdW1uIGhlYWRlcnMuCgkoaWUuIExWU19OT0NPTFVNTkhFQURFUiBiaXQgaXMgbm90IHNldC4pCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJQmVnaW5EZWZlcldpbmRvd1BvcyBzaG91bGQgYWxsb3cgemVybyBjb3VudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc2VtaS1zdHViLgoKCSogZGxscy93aW5tbS9tY2kuYzoKCUJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJSGFuZGxlIG1jaVNlbmRTdHJpbmcoIm9wZW4gPG1jaXR5cGU+IiwuLi4pCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCS0gQnVnZml4OiBNYWNybyBleHBhbnNpb24gb2Ygc3RyaW5ncyB3b3VsZCBhc3NlcnQgYW4gaW50ZXJuYWwgZXJyb3IKCSAgb3IgYSBzZWdmYXVsdCBkdWUgdG8gYSBsYWNraW5nICdcMCcgaW4gdGhlIGV4cGFuc2lvbi4KCS0gQnVnZml4OiBQcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyBpbiByZWFsbG9jYXRpb24gb2YgbWFjcm8gZXhwYW5zaW9uCgkgIGJ1ZmZlcnMuCgktIEJ1Z2ZpeDogV3JjJ3MgdmVyc2lvbiBpbmZvcm1hdGlvbiB3YXMgbm90IHBhc3NlZCBhcyBudW1lcmljYWwgdG8gdGhlCgkgIHByZXByb2Nlc3NvciBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIG1hY3JvLgoJLSBSZWxheGVkIHRoZSBuZXdsaW5lIGNvbnN0cmFpbnQgaW4gZ2xvYmFsIExBTkdVQUdFIHN0YXRlbWVudHMsIHdoaWNoCgkgIHdhcyBpbnRyb2R1Y2VkIGluIHZlcnNpb24gMS4xLjMsIHNvIHRoYXQgc29tZSBmYW5jeSBwcmVwcm9jZXNzb3IKCSAgY29uc3RydWN0cyBjYW4gd29yay4KCS0gUmVtb3ZlZCB0aGUgZ2NjLXN0eWxlICNsaW5lIGhhbmRsaW5nIGZyb20gdGhlIHJlc291cmNlLXBhcnNlciB0byB0aGUKCSAgcmVzb3VyY2Utc2Nhbm5lciBzbyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGluY2x1ZGUgZmlsZXMgYXQgYW55IHN0YWdlCgkgIG9mIHRoZSBzb3VyY2UsIGluZGVwZW5kZW50IG9mIHRoZSBwYXJzZXItc3RhdGUuCgktIEJ1Z2ZpeDogU3RyaW5ndGFibGVzIHdlcmUgbm90IGNvcnJlY3RseSBzZWFyY2hlZCBmb3IgZHVwbGljYXRlcwoJICBiZWNhdXNlIHRoZSBsYW5ndWFnZSBjb21wYXJpc29uIGRpc3JlZ2FyZGVkIHRoZSBzdWJsYW5ndWFnZS4KCS0gRWxpbWluYXRlZCBhIHJlcGV0aXRpdmUgd2FybmluZyB3aGVuIHdyaXRpbmcgc3RyaW5ndGFibGVzIHdpdGggemVybwoJICBsZW5ndGggc3RyaW5nIGVudHJpZXMuIFRoZXNlIGFyZSBwZXJmZWN0bHkgdmFsaWQgKGJ1dCBtYWtlIG5vIHNlbnNlOi0pLgoJICBXYXJuaW5ncyBhcmUgbm93IG9ubHkgZ2VuZXJhdGVkIGR1cmluZyBwYXJzZSBpbiBwZWRhbnRpYyBtb2RlLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IFN5c1N0cmluZ0J5dGVMZW4gdG8gcmVhbGx5IHJldHVybiB0aGUgbGVuZ3RoIGluIGJ5dGVzLgoKCSogZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCUNoYW5nZWQgdGhlIHNpemUgb2YgcHJvcGVydHkgc2hlZXQgdGVtcGxhdGUgdG8gYmUgdGhlIHNhbWUgYXMgdGhlCglvcmlnaW5hbCBvbmUgKHdhcyAyOTJ4MTU5LCBub3cgMjIweDE0MCkuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGVvYmouYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBJRGF0YUFkdmlzZUhvbGRlci4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHR5cG8gaW4gSVR5cGVMaWI6OklzTmFtZS4KCgkqIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ3JlYXRlU3RyZWFtT25IR2xvYmFsIHNob3VsZCBhbGxvYyBhIHNoYXJlZCBtZW1vcnkgYmxvY2sgaWYgc3VwcGxpZWQKCWhhbmRsZSBpcyAwLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3QgY3Jhc2ggaWYgdGhlcmUgd2FzIG5vIGZpbGVzIHNlbGVjdGVkIGFuZCBPSyBidXR0b24gd2FzIHByZXNzZWQuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXggYSBjb3VwbGUgb2YgcHJvYmxlbXMgd2l0aCB1bmRlcnJ1bnMgYW5kIHN0b3BwaW5nL3Jlc3RhcnRpbmcuCgoJKiBtaXNjL21haW4uYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCUZpeGVkIHRoZSBkZWJ1Z21zZyBoZWxwLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmg6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJTWFwIGVhY2ggY2hhbm5lbCBvbiBldmVyeSBob3N0IHRvIGFuIEFTUEkgY29udHJvbGxlciBudW1iZXIuCglTdG9yZSBtYXAgaW4gSEtFWV9EWU5fREFUQS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEU0FfSW5zZXJ0SXRlbSByZXR1cm5zIG5JbmRleCwgbm90IG5JdGVtQ291bnQuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIGJhY2tncm91bmQgcmVkcmF3aW5nIHdoZW4gY29udHJvbCBpcyBjb3ZlcmVkLiAgRml4ZWQgYSByZWFsbHkKCWR1bWIgbWlzdGFrZSBJIG1hZGUgd2l0aCBib3JkZXIgZHJhd2luZyBtYW55IHBhdGNoZXMgYWdvLiAgRml4ZWQKCW9mZnNldCBieSAxIGFsaWdubWVudCBpc3N1ZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZW1vdmVkIGFub3RoZXIgYmFkIGFzc2VydCBhbmQgdHdvIG5vIGxvbmdlciBuZWVkZWQgb25lcy4KCjIwMDAtMDYtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9leGNlcHQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBiYWQgZXhjZXB0aW9uIGhhbmRsZXIgY2hhaW4gdGVybWluYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgd2luZG93cy93aW4uYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU1vdmVkIHplcm8tc2l6ZWQgd2luZG93IGhhY2sgdG8geDExZHJ2LgoKCSogZGxscy9udGRsbC9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXR1cm4gIm5vIGRlYnVnZ2VyIGF0dGFjaGVkIiBpbiBOdFF1ZXJ5SW5mb3JtYXRpb25Qcm9jZXNzIHRvIHNhdGlzZnkKCXNvbWUgY29weSBwcm90ZWN0aW9uIG1lY2hhbmlzbXMuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBscFRlbXBsYXRlTmFtZSBpcyBnb3R0ZW4gZnJvbSBNQUtFSU5UUkVTT1VSQ0UuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdHdvIGFzc2VydHMgaW4gQmx0KCkuCgoJKiBkbGxzL2RkcmF3L2hlbHBlci5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglQcm9wZXJseSBjYXN0IGFyZ3VtZW50cyB0byBwcmludGYgdG8gbWF0Y2ggdGhlIGludGVuZGVkIG91dHB1dC4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNldmVyYWwgZml4ZXMgc3BvdHRlZCBieSBDb3JlbCAoSmVhbi1DbGF1ZGUgQmF0aXN0YSAmIFNlYW4gTGFuZ2xleSkuCglTZWVraW5nIGZyb20gU0VFS19FTkQgd2FzIHdyb25nLgoJU2Vla2luZyBvbiBlbXB0eSBidWZmZXIgd2FzIHdyb25nLgoJU29tZSBpbnN0YWxsZWQgaW9Qcm9jcyBoYWQgdW5pbml0aWFsaXplZCBmaWVsZHMuCglBIGZldyBtb3JlIGJpdHMgZm9yIHJlbmFtZSBmdW5jdGlvbnMuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZG9jdW1lbnRhdGlvbi93aW5lZGJnOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBCcmVha09uRGxsTG9hZCBpbnRlcm5hbCB2YXIsIGNsZWFuZWQgdXAgcmVnaXN0ZXIgdmFsaWRhdGlvbiBvbgoJZXhjZXB0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNaWtlIE1jQ29ybWFjayA8TWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZCB3b3JrYXJvdW5kcyBmb3IgbnVsbCBzdHJpbmdzIGluIFRPT0xCQVJfSW5zZXJ0QnV0dG9uQSBhbmQgY2FsbGluZwoJVE9PTEJBUl9TZXRCdXR0b25TaXplIGFmdGVyIGJ1dHRvbiBhZGRlZCB0byB0aGUgdG9vbGJhciAobGF0dGVyIGZvcgoJV0lOWklQMzIuRVhFKQoKCSogY29udHJvbHMvY29tYm8uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgdGhlIG1pbmltdW0gZHJvcHBlZCBoZWlnaHQgdG8gdGhlIGNvbWJvIGxpc3QgaGVpZ2h0IGlmIGFueSBpbgoJQ0JEcm9wRG93bi4KCgkqIGZpbGVzL2Rvc19mcy5jOiBEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUlmIHdoaXRlc3BhY2Ugb3IgZG90cyBhcmUgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiBhbnkgY29tcG9uZW50IGluIGEKCXBhdGggdGhlbiBpdCBzaG91bGQgYmUgaWdub3JlZC4KCjIwMDAtMDYtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oOgoJTWFrZSBzdXJlIHRoZSBjbWRsaW5lIHBhc3NlZCB0byBDcmVhdGVQcm9jZXNzQSBpcyB3cml0ZWFibGUgKHRoYW5rcyB0bwoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPikuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNsZWFuZWQgdXAgbG9hZGluZy9pbml0IGNvZGUgaW4gT1NTLgoJQ2xlYW5lZCB1cCBnZXREZXZDYXBzIGluIG1pZGkgcGFydC4KCUltcGxlbWVudGVkIGFzeW5jaHJvbm91cyB3YXZlSW4gcmVjb3JkaW5nIHVzaW5nIGEgdGhyZWFkLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgd2luMzIvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBIGZldyBtaXNzaW5nIGNvbnNvbGUgc3R1YnMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYW5pbWF0aW9uIGxvYWRpbmcgZm9yIFJMRSBlbmNvZGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIHJlbW92ZWQgaGFjayB0byBmaW5kIHRoZSByaWdodCByZXNvdXJjZQoJLSB1cGRhdGVkIHRvIHVzZSB0aGUgSUNPTSBtYWNyb3MKCS0gY2xlYW5lZCB1cCB1c2UgdHlwZWxpYiBhbmQgdHlwZWxpYjIgKHdhcyBtaXhlZCB1cCkKCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGZpeGVkIHJlcG9ydGVkIGJ1Z3MKCS0gZml4ZWQgZGVmYXVsdCBleHRlbnNpb25zCgktIGltcGxlbWVudGVkICJicm93c2UgdG8gZGVza3RvcCIgYnV0dG9uCgoJKiBtZW1vcnkvZW52aXJvbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUdldENvbW1hbmRMaW5lIHNob3VsZCByZXR1cm4gbm9uLWNvbnN0IHN0cmluZ3MuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQ2FsbFByb2NFeDMyVyBzaG91bGQgYmUgbmFtZWQgX0NhbGxQcm9jRXgzMlcuCgoJKiBmaWxlcy9jaGFuZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc29tZSBzdHVmZiBzYXlpbmcgdGhhdCB0aGlzIGlzIE5PVCBzdXBwb3J0ZWQuCgoJKiByZWxheTMyL3Nub29wLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUF2b2lkIGNhbGxpbmcgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyIGluIHNvbWUgY2FzZXMuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG1hbnkgbmV3IFBhdGgqIHN0dWJzCgktIG1hbnkgYnVnZml4ZXMKCS0gY2xhc3MgZnVuY3Rpb25zIGV4cGFuZGluZyBlbnZpcm9ubWVudHMgdmFyaWFibGVzIG5vdwoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCB0aGUgRGlyZWN0U291bmQgSEFMIGluIHdpbm1tJ3Mgd2luZW9zcyAoT3BlbiBTb3VuZCBTeXN0ZW0pCglkcml2ZXIsIGFuZCB3aW5tbSdzIGludGVyZmFjZSBmb3IgRGlyZWN0U291bmQgdG8gYWNjZXNzIGl0LiBJdAoJcmVxdWlyZXMgdGhlIGFiaWxpdHkgdG8gbW1hcCAvZGV2L2RzcCwgdG8gdHJpZ2dlciBwbGF5YmFjaywgYW5kCglzYW1wbGUtYWNjdXJhdGUgcG9zaXRpb24gcmVhZG91dHMuIChJZiB0aGUgc291bmRjYXJkJ3MgZGV2aWNlIGRyaXZlcgoJZG9lcyBub3QgcmVwb3J0IHRoZXNlIGNhcGFiaWxpdGllcywgd2luZW9zcyB3aWxsIHJlcG9ydCB0aGUgSEFMIGFzCgl1bmF2YWlsYWJsZSBhbmQgZm9yY2UgRGlyZWN0U291bmQgdG8gdXNlIGl0cyBIRUwgaW5zdGVhZC4pCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBEaXJlY3RTb3VuZCBIQUwgbW9kZSBmb3IgRE1BIHByaW1hcnkgYnVmZmVycywgd2l0aCBhCgkxMG1zIGxhdGVuY3kgKG5vdCBub3RpY2VhYmxlKSwgYW5kIGFib3V0IDMwMG1zIG9mIHByZWJ1ZmZlcmluZy4gRml4ZWQKCWEgZmV3IGJ1Z3MuIEFkZGVkIGEgV2luZS1vbmx5IFdJTk1NIGZsYWcgZm9yIHdhdmVPdXRPcGVuIGZvcgoJRGlyZWN0U291bmQgdG8gdXNlIChzbyBkcml2ZXJzIGxpa2Ugd2luZW9zcyBoYXZlIHNvbWUgd2F5IG9mIGtub3dpbmcKCXdoYXQgdG8gcHJlcGFyZSBpdHNlbGYgZm9yKS4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkL3N0dWJiZWQgSWNvblNpemUoKSBhbmQgQ29udHJvbFBhbmVsSW5mbygpIG5lZWRlZCBmb3IgV2luCgkyLjAgY29udHJvbC5leGUgYW5kIHBhaW50LmV4ZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIElESV9XSU5MT0dPLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEb24ndCBibG9jayBlbmRsZXNzbHkgYWZ0ZXIgbGFzdCBkZWJ1Z2dlZCBwcm9jZXNzIGhhcyBleGl0ZWQuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgKGJhY2spIGNvcnJlY3QgYmVoYXZpb3IgZm9yIE5VTEwgcHRycyBpbiBDaGFyVG9PZW0gZnVuY3MuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBPT00gY29uZGl0aW9ucyBpbiBHbG9iYWxBbGxvYy4KCgkqIGRsbHMvbnRkbGwvbWlzYy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGRlZCBtaXNzaW5nICNpbmNsdWRlIDxtYXRoLmg+LgoKCSogaW5jbHVkZS93aW5yZXNyYy5oOiBSZW1vdmVkIE1JTUUgZ2FyYmFnZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZSB4bGliIGRkc3VyZmFjZXMgd2l0aCBjb3JyZWN0IHJlZmVyZW5jZSBjb3VudHMuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvYmlkaTE2LmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2JpZGkxNi5jLCBkbGxzL3VzZXIvbmV0d29yay5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2JpZGkxNi5jLCBtaXNjL25ldHdvcmsuYzoKCVNwbGl0IGJpZGkxNi5jIGFuZCBuZXR3b3JrLmMgb3V0IG9mIG1pc2MvIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGxzLgoKMjAwMC0wNi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYywgdG9vbHMvd2luZWJ1aWxkLy5jdnNpZ25vcmUsIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbjoKCVNwbGl0IHRoZSBidWlsZCBwcm9ncmFtIGluIHNldmVyYWwgZmlsZXMuCglSZW5hbWVkIGl0ICd3aW5lYnVpbGQnIHRvIGF2b2lkIHBvc3NpYmxlIGNvbmZsaWN0cy4KCUNsZWFuZWQgdXAgY29tbWFuZC1saW5lIHBhcnNpbmcuCglNYWtlIGl0IHVuZGVyc3RhbmQgLWZQSUMgaW5zdGVhZCBvZiAtcGljLgoJTWVyZ2VkIGNhbGwxNi5zIGFuZCBjYWxsMzIucyBnZW5lcmF0ZWQgZmlsZXMuCgoJKiBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL3N5c3RlbS5zcGVjLCBkbGxzL3NvdW5kL3NvdW5kLnNwZWMsIGRsbHMvdXNlci91c2VyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIG1vcmUgb3JkaW5hbHMgdG8gS0VSTkVMLCBHREksIFVTRVIgYW5kIHN5c3RlbSBkcml2ZXJzCgkoV2luZG93cyAxLjEsIDIuMCkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJX2NvbW1vbl9kZXB0aF90b19waXhlbGZvcm1hdCgpIHJldHVybnMgLTEgYW5kIG5vdCB6ZXJvLCBpZiBhIG1vZGUgaXMKCXN1cHBvcnRlZC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglBdm9pZCBncmF0dWl0b3VzbHkgY2hhbmdpbmcgdGhlIFpPUkRFUi4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgY29ycmVjdCBicHAgZm9yIHRoZSBYIHNpZGUgb2YgdGhlIHN1cmZhY2UgWEltYWdlcy4KCUNsZWFuZWQgdXAgWGxpYl9TdXJmYWNlX1JlbGVhc2Ugc28gaXQgaXMgYSBiaXQgbW9yZSByZWFkYWJsZS4KCXVzZSBWaXJ0dWFsQWxsb2MgZm9yIGNvbnZlcnNpb24tcHJvZ3JhbXNpZGUgYnVmZmVyIHRvIHNpbXBsaWZ5CgloYW5kbGluZy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglHbG9iYWxGcmVlMTYgcmV0dXJucyBOVUxMIG9uIHN1Y2Nlc3MsIGJ1dCBEZXN0cm95QWNjZWxlcmF0b3JUYWJsZQoJc2hvdWxkIHJldHVybiBUUlVFIG9uIHN1Y2Nlc3MuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHVtcCBGb3VyQ0MgY29ycmVjdGx5LCBwcmludCBjb252ZXJzaW9uIG1lc3NhZ2VzLCBhZGQgcmVmZXJlbmNlIHRvCglkZHJhdyBpbiBERFN1cmZhY2U6OkdldERESW50ZXJmYWNlLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVzdHJpY3QgblRpbWVvdXQgdG8gMC0zMjc2Nywgc2luY2UgaXQgaXMgYSAxNmJpdCB2YWx1ZSBpbiBYLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglFeGNlcHRpb24gaGFuZGxpbmcgZm9yIFNJR0ZQRSBtdXN0IGFsd2F5cyBjbGVhciB0aGUgRlBVIGludGVycnVwdAoJc3RhdHVzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc3RyaW5nLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgaW5jbHVkZS9jcnRkbGwuaCwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglNb3ZlZCBzaGFyZWQgY3J0ZGxsL250ZGxsIGZ1bmN0aW9ucyBpbnRvIG50ZGxsLgoJTWFkZSBjcnRkbGwgYSBzZXBhcmF0ZSBkbGwuCgoJKiBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBtaXNjL2xzdHIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUNsZWFuZWQgdXAgYSBmZXcgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWNsaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29wZW5nbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmluZXQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmZ3MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyBmaXhlcy4KCS0gTWlub3IgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBpbmNsdWRlL2RzZHJpdmVyLmgsIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVzdHJ1Y3R1cmUgRGlyZWN0U291bmQuIFJlbW92ZSBkc291bmQgdGhyZWFkLCB1c2UgTU0gdGltZXJzCglpbnN0ZWFkLiBJbXBsZW1lbnRlZCB0aGUgRGlyZWN0U291bmQgSEVMLCB3aXRoIHRoZSBhYmlsaXR5IHRvCglwcmVidWZmZXIgMzAwbXMgb2Ygc291bmQsIHdoaWxlIG1haW50YWluaW5nIHBsYXkgbGF0ZW5jeSBvZiA0MG1zLCBhbmQKCXRoZSBleGFjdCBwbGF5cG9zaXRpb24gKFN0YXJjcmFmdCBjaW5lbWF0aWNzIGFyZSBsaXAtc3luY2hlZCkuICBTb21lCglpbml0aWFsIEhBTCBzdXBwb3J0LgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlcGxhY2VkIHRoZSBCVUlMVElOMzJfZGxvcGVuKCkgRVJSKCkgYnkgYSBXQVJOKCkuCgoJKiBpbmNsdWRlL3dpbnJlc3JjLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgaW5jbHVkZS93aW5yZXNyYy5oIGZvciBwb3J0aW5nIHdpdGggd2luZWxpYi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNZXJnZWQgRGV2aWNlQ2FwYWJpbGl0aWVzIGFuZCBEZXZpY2VDYXBhYmlsaXRpZXNBLgoKCSogZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBpbmNsdWRlL3Zmdy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNZXJnZWQgTUNJV25kQ3JlYXRlIGFuZCBNQ0lXbmRDcmVhdGVBLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDTFNJREZyb21TdHJpbmcgYXBwYXJlbnRseSBhbHNvIGFjY2VwdHMgUHJvZ0lEcyBhcyBhbiBpbnB1dCBzdHJpbmcuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBTQ19JQ09OL1NDX1pPT00gKG9ic29sZXRlIG1hY3JvcykuCgoJKiBpbmNsdWRlL3dpbmluZXQuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgbmV3IEludGVybmV0Q2hlY2tDb25uZWN0aW9uKi4KCjIwMDAtMDYtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglDbGVhbmVkIHVwIGEgZmV3IGludGVyLWRsbCBkZXBlbmRlbmNpZXMuCgoJKiB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCUFsZXhhbmRlciBWLiBMdWt5YW5vdiA8bGF2QGxvbmcueWFyLnJ1PgoJRml4ZWQgcHJvYmxlbXMgd2l0aCBjb21waWxhdGlvbi9pbnN0YWxsIG91dCBvZiBzb3VyY2UgdHJlZS4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCU9sZUNvbnZlcnRPTEVTVFJFQU1Ub0lTdG9yYWdlIGZhaWxzIChyZXR1cm5zIFJFR0RCX0VfQ0xBU1NOT1RSRUcpIHdoZW4KCXRoZSBDTFNJRCBvZiB0aGUgT0xFIG9iamVjdCBpcyBub3QgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LiBGaXhlZC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgV3JpdGVQcml2YXRlUHJvZmlsZVNlY3Rpb25BIGNhcmUgZm9yICIiIGFuZCBOVUxMIGFzIHRoZQoJc3RyaW5nIGFyZ3VtZW50LiBOZXcgZnVuY3Rpb24gUFJPRklMRV9EZWxldGVBbGxLZXlzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgZm9ybWF0IHN0cmluZ3MuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXggYSBjcmFzaCBpbiB3aW5oZWxwIGNhdXNlZCBieSBobWVtY3B5MTYgd2l0aG91dCBwcm90b3R5cGUuCglGaXggc29tZSBjb21waWxlciB3YXJuaW5ncy4KCgkqIGRsbHMvKi9NYWtlZmlsZS5pbjoKCUZvciBkbGxzLCBkZXJpdmUgU1BFQ19TUkNTIGZyb20gTU9EVUxFIGFuZCBBTFROQU1FUy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBXSERSX0RPTkUgcmFjZSBjb25kaXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIFN0ckNhdEJ1ZmYuCgoJKiBpbmNsdWRlL3NobG9iai5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHR5cGVkZWYgb2YgRFJPUEZJTEVTLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIFJlc3VsdEZyb21TY29kZS9HZXRTY29kZSAob2Jzb2xldGUgbWFjcm9zKS4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCU1vdmVUb0V4OiByZXR1cm4gVFJVRSBldmVuIGlmIHRoZXJlIGlzIG5vIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVByb3RlY3QgYWdhaW5zdCBwcm9ncmFtcyBjcmVhdGluZyBwYXJ0cyB3aXRoIG5lZ2F0aXZlIHdpZHRoLgoKMjAwMC0wNi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9yZXNvdXJjZS5jLCBtc2Rvcy9pbnQyMS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglVc2UgR2V0U3lzdGVtRGVmYXVsdExhbmdJRCgpIGluc3RlYWQgb2YgV0lORV9MYW5ndWFnZUlkLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lZGJnLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBjbGVhbmVkLXVwIGJyZWFrIGhhbmRsaW5nCgktIGJldHRlciBpbnRlZ3JhdGlvbiBvZiBkZWJ1Z2dlciBpbm5lciBsb29wcyAocGFyc2VyICYgZXZlbnRzKQoJLSBhZGRlZCBhdHRhY2ggY29tbWFuZAoJLSBpbXByb3ZlZCBwYXJzZXIgc28gdGhhdCBpdCBjYW4gYmUgZW50ZXJlZCB3aXRob3V0IGFueSBwcm9jZXNzIGxvYWRlZAoJLSBhZGRlZCBCcmVha09uRmlyc3RDaGFuY2UgaW50ZXJuYWwgdmFyaWFibGUKCS0gZGlzYWJsZWQgTkUgbW9kdWxlIHN5bWJvbCBtb2R1bGUgKHdoaWNoIGlzIGJyb2tlbiB3aXRoIEFTUykKCS0gbWlzYyBwb3J0YWJpbGl0eSBjbGVhbnVwcwoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBGaXhlZCBhIG1lbW9yeSBjb3JydXB0aW9uIGluIHNhZmUgYXJyYXlzIHdoZW4gdXNpbmcgU2FmZUFycmF5Q29weSgpCgkgIGZ1bmN0aW9uIHdpdGggYSBTYWZlQXJyYXkgY3JlYXRlZCB3aXRoIEZBREZfRklYRURTSVpFLgoJLSBBZGRlZCBtb3JlIEZBREYgZmxhZ3MgaW4gdGhlIC5oIGZpbGUuCgktIEZBREYgZmxhZ3Mgd2VyZSBkZWZpbmVkIHR3aWNlLCBjb3JyZWN0ZWQgdGhlIHNpdHVhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBhc3N1bWUgdGhhdCBkb3VibGUgYnl0ZSBmb250ID09IHVuaWNvZGUgZm9udC4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmgsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZmdzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHdpbmRvd3MvdXNlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgcHJvdG90eXBlcy4KCURlZmluZSB0aGUgSERSQVdESUIgaGFuZGxlIHR5cGUuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJaG1lbWNweTE2IGlzIGEgV2luMTYgQVBJLCB0aGUgbWFjcm8gaXMgaG1lbWNweS4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZWQgYW4gaW5pdGlhbCBXaW5zb2NrIDIgKHdzMl8zMikgRExMLiBNYWtlcyB1c2Ugb2YgdGhlIFdpbnNvY2sgMQoJZnVuY3Rpb25zIGFscmVhZHkgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHBvcnQgc3RhdHVzIHF1ZXJ5LgoKCSogaW5jbHVkZS9kc2RyaXZlci5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIERpcmVjdFNvdW5kIGRldmljZSBkcml2ZXIgaGVhZGVyIGZpbGUuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWtlIHRoZSBiYXNlIHJlbG9jYXRpb24gbWVzc2FnZSBhIFdBUk4sIG5vdCBhIEZJWE1FLgoKCSogdG9vbHMvTWFrZWZpbGUuaW46CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCURpc3Rpbmd1aXNoIGJldHdlZW4gU1VCRElSUyBhbmQgSU5TVEFMTFNVQkRJUlMuCgoJKiBjb250cm9scy9jb21iby5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNCX1NFVENVUlNFTCBzaG91bGQgbm90IGdlbmVyYXRlIGFub3RoZXIgbGlzdGJveCBldmVudCBhZnRlciB1cGRhdGluZwoJdGhlIGVkaXQgYm94LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglXTV9QQUlOVCBzaG91bGQgYmUgcHJvY2Vzc2VkIG9ubHkgYnkgdGhlIFRSRUVWSUVXX1BhaW50IGZ1bmN0aW9uLCBzbwoJd2UgZG9uJ3QgbmVlZCB0byBjYWxsIERlZldpbmRvd1Byb2NBIGZ1bmN0aW9uIHdpdGhpbiBUUkVFVklFV19QYWludC4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVdlIG11c3QgcmV0dXJuIHRoZSBhdG9tIG9mIHRoZSBjbGFzcyBpbiBHZXRDbGFzc0luZm9FeCBpbnN0ZWFkIG9mIGp1c3QKCVRSVUUuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBzdHViIGZvciBDb0NyZWF0ZUZyZWVUaHJlYWRlZE1hcnNoYWxlcigpLgoKCSogbWVtb3J5L3N0cmluZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlaW1wbGVtZW50IENoYXJUb09lbUEvVywgQ2hhclRvT2VtQnVmZkEvVywgT2VtVG9DaGFyQS9XLAoJT2VtVG9DaGFyQnVmZkEvVyB1c2luZyBNdWx0aUJ5dGVUb1dpZGVDaGFyL1dpZGVDaGFyVG9NdWx0aUJ5dGUuCgoJKiBjb250cm9scy9tZW51LmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglHZXRTeXN0ZW1NZW51IGNhbGxlZCB3aXRoIGJSZXZlcnQgYXJndW1lbnQgc2V0IHRvIFRSVUUgbm93IHJldHVybnMKCU5VTEwgYXMgc3BlY2lmaWVkIGluIFBsYXRmb3JtIFNESy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgbWVtb3J5IGFjY2VzcyBvdXRzaWRlIG9mIHRoZSByYW5nZSBmb3Igc291cmNlIGJpdHMgaW4gMjQtYml0IGJpdG1hcHMuCgoyMDAwLTA2LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBJSURGcm9tU3RyaW5nIHBvaW50IHRvIENMU0lERnJvbVN0cmluZy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBiZXR0ZXIgZXJyb3IgY2hlY2sgd2hlbiBpbXBvcnRpbmcgZnVuY3Rpb25zIHZpYSBHZXRQcm9jQWRyZXNzCgktIHJlcGxhY2VkIFNIR2V0U3BlY2lhbEZvbGRlclBhdGggKG5vdCBhdmlhYmxlIGluIGFsbCBzaGVsbDMyIHZlcnNpb25zKQoJLSBjaGFuZ2VkIGNhbGwgb3JkZXIgd2hlbiBicm93c2luZyB0byBkaWZmZXJlbnQgZm9sZGVyIChjcmFzaCB3aXRoIG5hdGl2ZSBzaGVsbCkKCS0gcmVtb3ZlZCBNb3ZlIGNhbGwgc2luY2UgSVNoZWxsdmlld19DcmVhdGVWaWV3V2luZG93IGNyZWF0ZXMgaXQgYWxyZWFkeSBpbgoJICB0aGUgcmlnaHQgcmVjdAoKCSogZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGZpeGVkIG51bGwtcGlkbCBmcm9tIF9JTENyZWF0ZUNvbnRyb2wKCS0gc29tZSBtb3JlIG5vLW5hbWUgZnVuY3Rpb25zIGluIHNobHdhcGkKCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglLZWVwIGFuIGludGVybmFsIGNvcHkgb2YgdGhlIGljb24uCgoJKiBpbmNsdWRlL29iamJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW9yZGVyIHRoZSBfX2F0dHJpYnV0ZV9fIGRpcmVjdGl2ZSBpbiB0aGUgbGVnYWN5IG1hY3JvcyBmb3IKCWNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZysrIGNvbXBpbGVycy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUtlbiBDb2xlbWFuIDxrZW5fY29sZW1hbkBpbmFtZS5jb20+CglGaXhlcyB0byBDcmVhdGVESUJTZWN0aW9uIGFuZCBvdGhlciBhcmVhcyB3aGVyZSBiaVNpemVJbWFnZSBpcwoJaW5jb3JyZWN0bHkgYXNzdW1lZCB0byBiZSBjb3JyZWN0IGlmIGl0IG5vbi16ZXJvLiAgVGhpcyBmaXhlcyBhCgljcmFzaGluZyBwcm9ibGVtIGluIFNpZCBNZWllcidzIEFscGhhIENlbnRhdXJpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA2LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tZGkuYywgaW5jbHVkZS9tZGkuaCwgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYywgcmVzb3VyY2VzL3VzZXIzMi5yYzoKCURhdmlkIExhc3NvbmRlIDxkYXZpZGxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgTW9yZSBXaW5kb3dzLi4uIG1lbnUgaXRlbSBmb3IgTURJLgoKCSogd2luZG93cy9kaWFsb2cuYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgYWdhaW4gZm9yIEdldE5leHREbGdUYWJJdGVtIGFmdGVyIHJldHVybiBmcm9tIFdNX0lOSVRESUFMT0cKCW1lc3NhZ2UgaW4gZGlhbG9nIGNyZWF0aW9uLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCBjbGlwcGluZyByZWdpb24gdG8gY2xpZW50IHdpbmRvdyBpbiBMSVNUQk9YX1BhaW50LgoKCSogc2VydmVyL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTW9yZSB2ZXJib3NlIGVycm9yIG1lc3NhZ2UuCgoJKiB1bmljb2RlL21idG93Yy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJY3BfbWJzdG93Y3M6IGNoZWNrIGZ1bmN0aW9ucyByZXR1cm4gemVybyBvbiBzdWNjZXNzLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRGdWxsUGF0aE5hbWU6IGdldCAiZHJpdmUiIHZhbHVlIHRvbyBmb3IgYWJzb2x1dGUgcGF0aHMuCgoJKiBtaXNjL3ByaW50ZHJ2LmM6CglGcmVkZXJpYyBCb3VsYW5nZXIgPGZyZWRlcmljQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlU3Bvb2xGaWxlIGlzIGNhbGxlZCB3aXRoIGEgZG9zIG5hbWUsIHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQKCXdoZW4gd2UgY3JlYXRlIHRoZSBzcG9vbGZpbGUgd2UgdXNlIHRoZSB1bml4IG5hbWUgYXNzb2NpYXRlZCB0byB0aGUKCWRvcyBmaWxlIG5hbWUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgbWlzYy9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCS0gYWRkIHByb3RvdHlwZXMgZm9yIHNlcmlhbCBBUEkgZnVuY3Rpb25zCgktIGNvcnJlY3QgZXhpc3Rpbmcgc2VyaWFsIEFQSSBwcm90b3R5cGVzIGluY29ycmVjdGx5IHVzaW5nIERXT1JECgkgIGluc3RlYWQgb2YgSEFORExFCgktIGRlZmluZSBtb3JlIHN0cnVjdHVyZXMgYW5kIHZhbHVlcyBpbiBzZXJpYWwgQVBJCgoJKiB3aW5kb3dzL2RjZS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgTlVMTCBwb2ludGVyIGNoZWNrIHdpdGhpbiBEQ0VfQWRkQ2xpcFJlY3RzIGZ1bmN0aW9uLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBMb2FkU3RyaW5nQS4KCgkqIGRvY3VtZW50YXRpb24veDExZHJ2OiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRleHQgb2YgV1dOIGFydGljbGUgIlRoZSBYMTEgZHJpdmVyIi4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjoKCVdpbGJ1ciBOLiBEYWxlIDx3aWxidXIuZGFsZUBsdW1pbi5ubD4KCVdpbmVMaWIgZG9lcyBub3Qgc3VwcG9ydCBXaW4xNi4gUmVtb3ZlZCByZWZlcmVuY2VzIHRvIFdpbjE2IGFuZCBXaW4KCTMueCBpbiB0aGUgaW50cm9kdWN0aW9uLiBTdGFuZGFyZGl6ZWQgY2FwaXRhbGl6YXRpb24gb2YgV2luZSBhbmQKCVdpbmVMaWIuIEFkZGVkIGRvY3VtZW50YXRpb24gZm9yIGNvbXBpbGluZyBhIHNpbXBsZSAiSGVsbG8gV29ybGQiCglXaW5lTGliIHByb2dyYW0uCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc2V0dGluZyBvZiBjdXJzb3IgcG9zdGl0aW9uIHRvIE1TR19Qb3N0VG9RdWV1ZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglXTV9TRVRSRURSQVcgc2hvdWxkIHJlcGFpbnQgdGhlIGxpc3Rib3ggd2hlbiBzZXQgdG8gb24gaWYgc29tZXRoaW5nCgloYXMgYmVlbiBjaGFuZ2VkLgoKMjAwMC0wNi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9NYWtlZmlsZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL2N2ZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglSZW1vdmVkIEBQUk9HRVhUQCAoaXQgd2FzIGJyb2tlbiBhbnl3YXkpLgoJSW1wcm92ZWQgJ21ha2UgaW5zdGFsbCcuCglDbGVhbmVkIHVwIHRoZSBtYWluIE1ha2VmaWxlLgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglDb252ZXJ0VG9HbG9iYWxIYW5kbGU6IGZpeGVkIGhhbmRsZSBsZWFrLgoKCSogaW5jbHVkZS9vcHRpb25zLmg6CglGaXhlZCBvcHRpb25zIHN0cnVjdHVyZSBkZWZpbml0aW9uLgoKCSogd2luZG93cy93aW5wb3MuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJTWFkZSBTZXRXaW5kb3dQb3MgaGFuZGxlIHRoZSBjYXNlIHdoZW4gaW5zZXJ0aW5nIGEgd2luZG93IGFmdGVyIGl0c2VsZgoJKGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSBab3JkZXIpLgoKCSogZG9jdW1lbnRhdGlvbi9vcGVuZ2w6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXBkYXRlZCBPcGVuR0wgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IHRoZSBiYXNlIGZvciB0aGUgb3JkaW5hbHMgb2Ygb2xlcHJvMzIgdG8gMjQ4LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJTWF0dGhldyBKLiBGcmFuY2lzIDxtZnJhbmNpc0BwbHVzLm5ldC51az4KCUFsaWFzIE5NVVBET1dOIHRvIGJlIE5NX1VQRE9XTiwgcmF0aGVyIHRoYW4gb3ZlcndyaXRlIE5NX1VQRE9XTiB3aXRoCglOTVVQRE9XTi4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJamltcmVnYW5AbGl0c3UuaWUKCUFkZGVkIGRpZmZ0aW1lIGZ1bmN0aW9uLgoKMjAwMC0wNi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93bWMvLmN2c2lnbm9yZSwgdG9vbHMvd21jL0NIQU5HRVMsIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL2xhbmcuYywgdG9vbHMvd21jL2xhbmcuaCwgdG9vbHMvd21jL2xhbmd1YWdlLmMsIHRvb2xzL3dtYy9tY2wuYywgdG9vbHMvd21jL21jeS55LCB0b29scy93bWMvdXRpbHMuYywgdG9vbHMvd21jL3V0aWxzLmgsIHRvb2xzL3dtYy93bWMuYywgdG9vbHMvd21jL3dtYy5oLCB0b29scy93bWMvd21jLm1hbiwgdG9vbHMvd21jL3dtY3R5cGVzLmgsIHRvb2xzL3dtYy93cml0ZS5jLCB0b29scy93bWMvd3JpdGUuaCwgdW5pY29kZS93Y3RvbWIuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJSW5pdGlhbCByZWxlYXNlIG9mIHRoZSBtZXNzYWdlIGNvbXBpbGVyLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBuZXcgZGxsIHNoZm9sZGVyLmRsbAoJLSBzbWFsbCBmaXhlcwoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy9wcHkueSwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gQnVnZml4OiBDb3JyZWN0ZWQgIm9mZiBieSBvbmUiIGVycm9yIGluIHRoZSBsaW5lbnVtYmVyIHdoaWxlIHBhcnNpbmcKCSAgcmVzb3VyY2UuCgktIEJ1Z2ZpeDogQSBzZWdmYXVsdCB3b3VsZCBvY2N1ciBpZiBtZXNzYWdldGFibGVzIHdlcmUgcGFyc2VkIHdpdGhvdXQKCSAgbWVtb3J5IG9wdGlvbnMgYXR0YWNoZWQuIEFsc28gYWRkZWQgYnVmZmVyLW92ZXJmbG93IHNhZmVndWFyZCB3aGlsZQoJICBjb252ZXJ0aW5nIGJldHdlZW4gYnl0ZW9yZGVycy4KCS0gRmluaXNoZWQgcmVtYXBwaW5nIHVzZXJ0eXBlIHJlc291cmNlcyBvbnRvIHN0YW5kYXJzIHR5cGVzIGJ5IHRyaWNraW5nCgkgIHRoZSBwYXJzZXIgaW50byBhY2NlcHRpbmcgYSBkaWZmZXJlbnQgdG9rZW4uIFRoZSByZW1hcHBpbmcgY2FuIGJlCgkgIGRpc2FibGVkIHdpdGggYSBuZXcgY29tbWFuZGxpbmUgb3B0aW9uICctbScuCgktIFJlc29sdmVkIHNvbWUgd2FybmluZyBhYm91dCBjaGFycyB1c2VkIGFzIGluZGV4IG9uIFNHSSBPMiBtYWNoaW5lCgkgICh0aGUgY3R5cGUgaXNYWFgoKSByb3V0aW5lcyBhcmUgbWFjcm9zIHRoZXJlKS4KCgkqIG9sZS9vbGUybmxzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ29tbWVudGVkIG91dCBJc0JhZFdyaXRlUHRyIGNoZWNrLiBNYWtlcyB3aW5obHAzMi5leGUgaGFwcHkgaW4KCWV4dGVuZGVkIHNlYXJjaC4KCgkqIGRvY3VtZW50YXRpb24vb3BlbmdsOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU9wZW5HTCBkb2N1bWVudGF0aW9uLgoKCSogZmlsZXMvZHJpdmUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRFJJVkVfR2V0RnJlZVNwYWNlKCkgaXMgc3VwcG9zZWQgdG8gKmFsd2F5cyogcmV0dXJuIDAgZm9yICJhdmFpbCIKCW9uIENELVJPTXMsIGV2ZW4gaWYgQ0QtUk9NIGlzICpub3QqIG1vdW50ZWQgYW5kIHRodXMgdGhlIG1vdW50IHBvaW50Cglub3JtYWxseSByZXR1cm5zIHRoZSAiYXZhaWwiIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhcnRpdGlvbi4KCUNsZWFuZWQgdXAgR2V0RGlza0ZyZWVTcGFjZUEuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG8gbm90IGNoYW5nZSB0aGUgV1NfQ0hJTEQgc3R5bGUgaW4gU2V0UGFyZW50LgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmMsIG9sZS9vbGUybmxzLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVXNlIHRoZSBVbmljb2RlIHN0cmluZyBmdW5jdGlvbnMgZnJvbSB3aW5lL3VuaWNvZGUuaCBpbnN0ZWFkIG9mIHRoZQoJY3J0ZGxsIG9uZXMuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL3N0cmluZy5jOgoJQWRkZWQgYSBjb3VwbGUgb2YgVW5pY29kZSBzdHJpbmcgcm91dGluZXMuCgoJKiBkbGxzL2RkcmF3L2NvbnZlcnQuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIDI0LT4zMiBwYWNrZWQgcGl4ZWwgbWFwcGluZyBzdXBwb3J0IHRvIGNvbnZlcnQuCglTbGlnaHRseSByZXdyb3RlIHRoZSBjb252ZXJzaW9uIGluaXRpYWxpc2F0aW9uLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHJpcCB3aGl0ZXNwYWNlIGZyb20gZnJvbnQgb2YgcHJvZmlsZSB2YWx1ZXMuCgoyMDAwLTA2LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCB3aW4zMi9vcmRpbmFscy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRhdGlvbiBmb3IgUHJpdmF0ZUV4dHJhY3RJY29ucywgUHJpdmF0ZUV4dHJhY3RJY29uRXguCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gaW1wbGVtZW50ZWQgR2V0L1NldFRocmVhZExvY2FsZQoJLSBhZGRlZCBjb21tZW50IGFib3V0IE9sZUVycm9ySW5mbyBmaWVsZCBpbiBURUIKCgkqIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3RydWN0IG9mZnNldHMgc28gdW5kZXJzdGFuZGluZyBnYW1lIGRpc2Fzc2VtYmx5IGlzIGVhc2llci4KCgkqIGRsbHMvd2luZXBzL2JydXNoLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJZiBwcmludGVyIG9ubHkgc3VwcG9ydHMgbGV2ZWwgMSBQb3N0U2NyaXB0IHRoZW4gY29tcGxhaW4gcmF0aGVyIHRoYW4KCXRyeWluZyB0byB1c2UgYSBwYXR0ZXJuIGNvbG9yIHNwYWNlLiAgVGhhbmtzIHRvIERhdmlkIEdvb2Rlbm91Z2guCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29ycmVjdGVkIElzRXF1YWxHVUlEIHByb3RvdHlwZS4KCgkqIGRsbHMvZGRyYXcvZGdhMi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCXJlcGxhY2VkIGEgRFBSSU5URiBieSBhIFRSQUNFCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBtb3ZlZCB0aGUgJ2NvbnN0cnVjdG9yJyBpbnRvIGEgcmVhbCBETEwgaW5pdCBmdW5jdGlvbgoJLSBtYWtlIE9wZW5HTDMyIGRlcGVuZGFudCBvbiB0aGUgWDExIGRyaXZlcgoKCSogb2JqZWN0cy9kYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCWhvb2tUaHVuayB3YXMgbm90IGluaXRpYWxpemVkIGluIEdldERjU3RhdGUuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJVXNlIHRoZSBmb250IGRlZmF1bHQgY2hhciBmb3IgdW5kZWZpbmVkIGNoYXJhY3RlcnMgd2hlbiBtYXBwaW5nIGZyb20KCVVuaWNvZGUuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX2V4dCwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9ub3JtLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX3NwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglOZXcgT3BlbkdMIHRodW5rIGdlbmVyYXRpb24gc2NyaXB0LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZW1vdmVkIHRoZSBSZWxlYXNlIGluIGNhc2Ugb2YgZXJyb3IgYXMgd2UgZG8gbm90IEFkZFJlZiBhbnltb3JlLgoKCSogbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCU1hZGUgdGhlIERMTCB2ZXJzaW9uIGNsYXNoIGVycm9yIG1lc3NhZ2UgbW9yZSB2ZXJib3NlLgoKCSogdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywgdW5pY29kZS9jXzk1MC5jLCB1bmljb2RlL2Nhc2VtYXAuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9tYnRvd2MuYywgdW5pY29kZS93Y3RvbWIuYywgdW5pY29kZS9jXzA0Mi5jLCB1bmljb2RlL2NfMTAwMDAuYywgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMDAwNy5jLCB1bmljb2RlL2NfMTAwMjkuYywgdW5pY29kZS9jXzEwMDYuYywgdW5pY29kZS9jXzEwMDc5LmMsIHVuaWNvZGUvY18xMDA4MS5jLCB1bmljb2RlL2NfMTAyNi5jLCB1bmljb2RlL2NfMTI1MC5jLCB1bmljb2RlL2NfMTI1MS5jLCB1bmljb2RlL2NfMTI1Mi5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMTI1NC5jLCB1bmljb2RlL2NfMTI1NS5jLCB1bmljb2RlL2NfMTI1Ni5jLCB1bmljb2RlL2NfMTI1Ny5jLCB1bmljb2RlL2NfMTI1OC5jLCB1bmljb2RlL2NfMjA4NjYuYywgdW5pY29kZS9jXzI4NTkxLmMsIHVuaWNvZGUvY18yODU5Mi5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk0LmMsIHVuaWNvZGUvY18yODU5NS5jLCB1bmljb2RlL2NfMjg1OTYuYywgdW5pY29kZS9jXzI4NTk3LmMsIHVuaWNvZGUvY18yODU5OC5jLCB1bmljb2RlL2NfMjg1OTkuYywgdW5pY29kZS9jXzQyNC5jLCB1bmljb2RlL2NfNDM3LmMsIHVuaWNvZGUvY181MDAuYywgdW5pY29kZS9jXzczNy5jLCB1bmljb2RlL2NfNzc1LmMsIHVuaWNvZGUvY184NTAuYywgdW5pY29kZS9jXzg1Mi5jLCB1bmljb2RlL2NfODU1LmMsIHVuaWNvZGUvY184NTYuYywgdW5pY29kZS9jXzg1Ny5jLCB1bmljb2RlL2NfODYwLmMsIHVuaWNvZGUvY184NjEuYywgdW5pY29kZS9jXzg2Mi5jLCB1bmljb2RlL2NfODYzLmMsIHVuaWNvZGUvY184NjQuYywgdW5pY29kZS9jXzg2NS5jLCB1bmljb2RlL2NfODY2LmMsIHVuaWNvZGUvY184NjkuYywgdW5pY29kZS9jXzg3NC5jLCB1bmljb2RlL2NfODc1LmMsIHVuaWNvZGUvY184NzguYywgZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS9jYXNlbWFwLmgsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIG1lbW9yeS9zdHJpbmcuYywgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jXzAzNy5jOgoJUmVpbXBsZW1lbnRlZCBVbmljb2RlIGNhc2UgbWFwcGluZyBpbiBhIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHdheS4KCU1vdmVkIGNhc2UgbWFwcGluZyBzdXBwb3J0IHRvIHRoZSB1bmljb2RlIGRpcmVjdG9yeS4KCVNvbWUgY2xlYW51cHMgaW4gY3BtYXAucGwsIHVzZSBXQ0hBUiBpbnN0ZWFkIG9mIHVuc2lnbmVkIHNob3J0LgoKMjAwMC0wNi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2Ugd2VyZSBub3QgcHJvcGVybHkgbWFza2luZyB0aGUgaXRlbSB0aGF0IHdhcyBzZW50IHdpdGggdGhlIG1lc3NhZ2UKCWFuZCBhbHNvIHdlIHdoZXJlIG5vdCBzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gYXQgdGhlIHByb3BlciB0aW1lcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUphc29uIE1hd2RzbGV5IDxqYXNvbkBtYWNhZGFtaWFuLmNvbT4KCVRha2UgZm9jdXMgYmVmb3JlIHNldHRpbmcgdGhlIGNhcmV0IHBvc2l0aW9uIGFuZCBzZWxlY3Rpb25zLgoKCSogcmVsYXkzMi9zbm9vcC5jOiBKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeCBmb3IgY29tcGlsZXIgd2FybmluZyAoZHVlIHRvIHNldGptcC9sb25nam1wIGJlaW5nIHVzZWQgZm9yCglleGNlcHRpb24gaGFuZGxpbmcpLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNhdmUgYW5kIHJlc2V0IG9mIFNldEJLTW9kZSB2YWx1ZXMgaW4gV01fUEFJTlQuCglBZGRlZCBoYW5kbGluZyBvZiBsUGFyYW0gdmFsdWUgaW4gQk1fU0VUU1RZTEUuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvaW1tLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9uZXRzcGkuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS9yaWNoZWRpdC5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3RhcGkuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5pbmV0LmgsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnN2Yy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS9hbmltYXRlLmgsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9jcnRkbGwuaCwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kM2RjYXBzLmgsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kZGVtbC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW9yZGVyZWQgdGhlIENBTExCQUNLIGFuZCBXSU5BUEkgZGlyZWN0aXZlcyBzbyB0aGF0IGl0IGNvbXBpbGVzIHdpdGgKCW9sZCBnKysgdmVyc2lvbnMuCgoJKiBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIERlZmluZSBISUMgaW4gdGhpcyBoZWFkZXIgcmF0aGVyIHRoYW4gaW4gd2luZGVmLmggKHRoaXMgaXMgdGhlCgkgIGNvcnJlY3QgdGhpbmcgdG8gZG8gYWx0aG91Z2ggaXQgaXMgdW5yZWxhdGVkIHRvIHRoZSBDKysgaXNzdWVzKS4KCS0gV0lORV9ISUMgaXMgYW4gaW50ZXJuYWwgc3RydWN0dXJlIGFuZCBpdCB3b24ndCBjb21waWxlIGluIEMrKyBiZWNhdXNlCgkgIGl0IGNvbnRhaW5zIGEgZmllbGQgY2FsbGVkICdwcml2YXRlJy4gRW5jbG9zZWQgaW4gYSBfX1dJTkVfXyBpZmRlZi4KCS0gUmVvcmRlcmVkIHRoZSBDQUxMQkFDSyBhbmQgV0lOQVBJIGRpcmVjdGl2ZXMgc28gdGhhdCBpdCBjb21waWxlcyB3aXRoCgkgIG9sZCBnKysgdmVyc2lvbnMuCgoJKiBpbmNsdWRlL3dpbnNwb29sLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgYSB0eXBvIGluIHRoZSBuYW1lIG9mIEZyZWVQcmludGVyTm90aWZ5SW5mby4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglIVFRQIHByb3RvY29sIG5vdyBzdXBwb3J0ZWQsIEludGVybmV0Q3JhY2tVcmwgZml4ZWQsIGxvdHMgb2Ygb3RoZXIKCWZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgdG9vbHMvYnVpbGQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svb3V0cHV0LnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyBmaXhlcwoJLSBVc2Ugb3V0cHV0IHByZWZpeCBpbnN0ZWFkIG9mIGhpZ2ggb3JkZXIgZnVuY3Rpb25zIHRoYXQsIGZvciBzb21lCgkgIHJlYXNvbiwgbGVha3MgbWVtb3J5LiBUaGUgbWVtb3J5IHVzYWdlIG9mIHdpbmFwaV9jaGVjayBpcyBub3cgZ3JlYXRseQoJICByZWR1Y2VkLiA6LSkKCS0gVHVybmVkIG9uIGFyZ3VtZW50IGtpbmQgY2hlY2tpbmcgb2YgZG91YmxlcyBieSBkZWZhdWx0CgoJKiBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVJlbW92ZSBzZWNvbmQgaW1wb3J0IG9mIHdpbnNwb29sLmRydi4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIHN1cHBvcnQgZm9yIGljb25zIHNldCBieSBTVE1fU0VUSU1BR0UuCgoJKiBkbGxzL3dpbmVwcy9iaXRtYXAuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVRlcm1pbmF0ZSBpbWFnZSBkYXRhIHdpdGggYSAnPicgW1RoZSBQU0xSTSBpcyByYXRoZXIgdmFndWUgYWJvdXQgdGhpc10uCglUaGFua3MgdG8gQmVybmQgSGVyZC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSm9obiBFbGxpb3QgPGpjZUBzZWFzaXAuZGVtb24uY28udWs+CglTb21lIGZvbnRzIG1heSBoYXZlIG5vIGNoYXJhY3RlcnMgYXQgYWxsIGZvciBzb21lIHJlYXNvbiwgYXZvaWQgY3Jhc2hlcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFkZCBhIGZldyBtb3JlIGZsYWdzIHRvIHRob3NlIHJlY29nbml6ZWQgd2hlbiBkb2luZyB0cmFjZStkc291bmQuCgoJKiBvYmplY3RzL3RleHQuYzogSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglEb24ndCBwcmludCB1aUxlbmd0aERyYXduIGluIHRoZSBGSVhNRSBpbiBEcmF3VGV4dEV4QS4gIEl0cyBhbiBvdXRwdXQKCXZhcmlhYmxlLCBub3QgYW4gaW5wdXQgdmFyaWFibGUuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCVVzZSBYQ3JlYXRlSW1hZ2UvWEdldFN1YkltYWdlIGluc3RlYWQgb2YgWEdldEltYWdlIGZvcgoJWDExRFJWX0RJQl9HZXRJbWFnZUJpdHMuCgoyMDAwLTA2LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdW5pY29kZS9jXzk1MC5jLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL2NwdGFibGUuYywgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jXzA0Mi5jLCB1bmljb2RlL2NfMTAwMDAuYywgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMDA3OS5jLCB1bmljb2RlL2NfMTAwODEuYywgdW5pY29kZS9jXzEyNTMuYywgdW5pY29kZS9jXzEyNTUuYywgdW5pY29kZS9jXzEyNTcuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5Ni5jLCB1bmljb2RlL2NfMjg1OTcuYywgdW5pY29kZS9jXzI4NTk4LmMsIHVuaWNvZGUvY180MjQuYywgdW5pY29kZS9jXzg1Ni5jLCB1bmljb2RlL2NfODU3LmMsIHVuaWNvZGUvY184NjQuYywgdW5pY29kZS9jXzg3NC5jLCB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jLCBtZW1vcnkvY29kZXBhZ2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHN5bWJvbCBjb2RlcGFnZS4KCUltcHJvdmVkIGhhbmRsaW5nIG9mIHVuZGVmaW5lZCBjb2RlcGFnZSBjaGFyYWN0ZXJzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJTWFrZSBzdXJlIEdldE1vZHVsZUZpbGVOYW1lMTYgZG9lcyBub3QgcmV0dXJuIGdhcmJhZ2UgZXZlbiBpZiB0aGUgcGF0aAoJaXMgbm90IHZhbGlkICh0aGFua3MgdG8gQW5kcmVhcyBNb2hyKS4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQXNzaWduIGNvZGVwYWdlIGZvciBldmVyeSBYMTEgZm9udCBzdWZmaXgsIGFuZCB1c2UgaXQgZm9yIGNvbnZlcnRpbmcKCXRleHQgdG8gZGlzcGxheS4KCgkqIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9jb2RlX3BhZ2UuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L2NvZGVwYWdlLmMsIG1lbW9yeS9zdHJpbmcuYzoKCVJld3JvdGUgY29kZXBhZ2Ugc3VwcG9ydCB0byB1c2UgdGhlIG5ldyBjb2RlcGFnZSB0YWJsZXMuCgoJKiB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL21idG93Yy5jLCB1bmljb2RlL3djdG9tYi5jLCB1bmljb2RlL2NfODU3LmMsIHVuaWNvZGUvY184NjAuYywgdW5pY29kZS9jXzg2MS5jLCB1bmljb2RlL2NfODYyLmMsIHVuaWNvZGUvY184NjMuYywgdW5pY29kZS9jXzg2NC5jLCB1bmljb2RlL2NfODY1LmMsIHVuaWNvZGUvY184NjYuYywgdW5pY29kZS9jXzg2OS5jLCB1bmljb2RlL2NfODc0LmMsIHVuaWNvZGUvY184NzUuYywgdW5pY29kZS9jXzg3OC5jLCB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jLCB1bmljb2RlL2NfOTUwLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGluY2x1ZGUvd2lubmxzLmgsIHVuaWNvZGUvY18wMzcuYywgdW5pY29kZS9jXzEwMDAwLmMsIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTAwMDcuYywgdW5pY29kZS9jXzEwMDI5LmMsIHVuaWNvZGUvY18xMDA2LmMsIHVuaWNvZGUvY18xMDA3OS5jLCB1bmljb2RlL2NfMTAwODEuYywgdW5pY29kZS9jXzEwMjYuYywgdW5pY29kZS9jXzEyNTAuYywgdW5pY29kZS9jXzEyNTEuYywgdW5pY29kZS9jXzEyNTIuYywgdW5pY29kZS9jXzEyNTMuYywgdW5pY29kZS9jXzEyNTQuYywgdW5pY29kZS9jXzEyNTUuYywgdW5pY29kZS9jXzEyNTYuYywgdW5pY29kZS9jXzEyNTcuYywgdW5pY29kZS9jXzEyNTguYywgdW5pY29kZS9jXzIwODY2LmMsIHVuaWNvZGUvY18yODU5MS5jLCB1bmljb2RlL2NfMjg1OTIuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5NC5jLCB1bmljb2RlL2NfMjg1OTUuYywgdW5pY29kZS9jXzI4NTk2LmMsIHVuaWNvZGUvY18yODU5Ny5jLCB1bmljb2RlL2NfMjg1OTguYywgdW5pY29kZS9jXzI4NTk5LmMsIHVuaWNvZGUvY180MjQuYywgdW5pY29kZS9jXzQzNy5jLCB1bmljb2RlL2NfNTAwLmMsIHVuaWNvZGUvY183MzcuYywgdW5pY29kZS9jXzc3NS5jLCB1bmljb2RlL2NfODUwLmMsIHVuaWNvZGUvY184NTIuYywgdW5pY29kZS9jXzg1NS5jLCB1bmljb2RlL2NfODU2LmM6CglBZGRlZCBzdXBwb3J0IGZvciBXQ19OT19CRVNUX0ZJVF9DSEFSIGFuZCBkZWZhdWx0IGNoYXIgcGFyYW1ldGVycyBpbgoJY3Bfd2NzdG9tYnMuCglNaW5vciBjb3NtZXRpYyBmaXhlcy4KCgkqIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUNhbGwgVFNYRmx1c2ggYWZ0ZXIgc2V0dGluZyBER0EgcGFsZXR0ZSwgc28gaXQgdXBkYXRlcyBpbW1lZGlhdGVseS4KCjIwMDAtMDYtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB1bmljb2RlL2NfMjg1OTEuYywgdW5pY29kZS9jXzI4NTkyLmMsIHVuaWNvZGUvY18yODU5My5jLCB1bmljb2RlL2NfMjg1OTQuYywgdW5pY29kZS9jXzI4NTk1LmMsIHVuaWNvZGUvY18yODU5Ni5jLCB1bmljb2RlL2NfMjg1OTcuYywgdW5pY29kZS9jXzI4NTk4LmMsIHVuaWNvZGUvY18yODU5OS5jLCB1bmljb2RlL2NfNDI0LmMsIHVuaWNvZGUvY180MzcuYywgdW5pY29kZS9jXzUwMC5jLCB1bmljb2RlL2NfNzM3LmMsIHVuaWNvZGUvY183NzUuYywgdW5pY29kZS9jXzg1MC5jLCB1bmljb2RlL2NfODUyLmMsIHVuaWNvZGUvY184NTUuYywgdW5pY29kZS9jXzg1Ni5jLCB1bmljb2RlL2NfODU3LmMsIHVuaWNvZGUvY184NjAuYywgdW5pY29kZS9jXzg2MS5jLCB1bmljb2RlL2NfODYyLmMsIHVuaWNvZGUvY184NjMuYywgdW5pY29kZS9jXzg2NC5jLCB1bmljb2RlL2NfODY1LmMsIHVuaWNvZGUvY184NjYuYywgdW5pY29kZS9jXzg2OS5jLCB1bmljb2RlL2NfODc0LmMsIHVuaWNvZGUvY184NzUuYywgdW5pY29kZS9jXzg3OC5jLCB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jLCB1bmljb2RlL2NfOTUwLmMsIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvY3B0YWJsZS5jLCB1bmljb2RlL2RlZmF1bHRzLCB1bmljb2RlL21idG93Yy5jLCB1bmljb2RlL3djdG9tYi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIHVuaWNvZGUvLmN2c2lnbm9yZSwgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jXzAzNy5jLCB1bmljb2RlL2NfMTAwMDAuYywgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMDAwNy5jLCB1bmljb2RlL2NfMTAwMjkuYywgdW5pY29kZS9jXzEwMDYuYywgdW5pY29kZS9jXzEwMDc5LmMsIHVuaWNvZGUvY18xMDA4MS5jLCB1bmljb2RlL2NfMTAyNi5jLCB1bmljb2RlL2NfMTI1MC5jLCB1bmljb2RlL2NfMTI1MS5jLCB1bmljb2RlL2NfMTI1Mi5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMTI1NC5jLCB1bmljb2RlL2NfMTI1NS5jLCB1bmljb2RlL2NfMTI1Ni5jLCB1bmljb2RlL2NfMTI1Ny5jLCB1bmljb2RlL2NfMTI1OC5jLCB1bmljb2RlL2NfMjA4NjYuYzoKCUFkZGVkIGEgYnVuY2ggb2YgY29kZSBwYWdlIHRhYmxlcyBmb3IgbXVsdGlieXRlPC0+d2lkZSBjaGFyCgljb252ZXJzaW9ucyAod2l0aCB0aGUgaGVscCBvZiBEbWl0cnkgVGltb3Noa292KS4KCjIwMDAtMDYtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbm5scy5oLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvbHN0ci5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJSW1wbGVtZW50IE5URExMLnRvd3VwcGVyIGFuZCBOVERMTC50b3dsb3dlciB1c2luZyBhbHJlYWR5IGV4aXN0aW5nCgljYXNlIGNvbnZlcnNpb24gdGFibGVzLiBSZXBsYWNlIGFsbCBkaXJlY3QgY2FsbHMgdG8gdG93dXBwZXIvdG93bG93ZXIKCWVpdGhlciB0byBOVERMTCBmb3IgY29yZSBvciB0byBDUlRETEwgaWYgbGF0dGVyIGFscmVhZHkgdXNlZCBpbiB0aGUKCW5vbiBjb3JlIGRsbC4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzogU2hpIFF1YW4gSGUgKG9mIENvcmVsKQoJVGhlIGltcGxlbWVudGF0aW9uIG9mIFN0cmV0Y2hCbHQgaW4gV0lORSBkb2VzIG5vdCB1c2UgdGhlIGZvcmVncm91bmQgYW5kCgliYWNrZ3JvdW5kIGNvbG9yIHdoZW4gYSBiaXRtYXAgaXMgY29waWVkIGZyb20gbW9ubyB0byBtb25vLiAgVGhpcyBpcwoJbm90IHRoZSBjYXNlIGluIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gdW5kZXIgV2luZG93cyBidXQgTVNETiBkaWQKCW5vdCBkb2N1bWVudCBpdC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2luZG93cyBtdXN0IHVwZGF0ZSB0aGUgcmlnaHQgZWRnZSAoLTEpIG9mIHRoZSBsYXN0IHBhbmVsIHVwb24gZHJhd2luZwoJaW5zdGVhZCBvZiByZWx5aW5nIG9uIFdNX1NJWkUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUHJvcGVybHkgaGFuZGxlIEluc2VydEl0ZW0gd2l0aCBhbiBpbnZhbGlkIEhUUkVFSVRFTS4gV2luZG93cyBoYW5kbGVzCgl0aGVzZSBsaWtlIGEgVFZJX0xBU1QuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVHVyY2hhbm92IFNlcmdlaSA8dHVyY2hhbm92QG90dnByaW0ucnU+CglER0EgY29tcGlsZSBmaXguCgoJKiBkbGxzL01ha2VmaWxlLmluOiBBZGRlZCBtaXNzaW5nIGRlcGVuZGVuY3kuCgoJKiBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvd2luZWRiZy5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJUmVtb3ZlZCB0aGUgLnhjbmxuayBzZWN0aW9uIGhhY2ssIGFuZCByZXBsYWNlZCBpdCBieSBhbm90aGVyIGhhY2sgaW4KCXRoZSBkZWJ1Z2dlciBDUkVBVEVfUFJPQ0VTUyBldmVudCBoYW5kbGluZy4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IE1lcmdlZCBtb3VzZSBkbGwgaW50byBVU0VSLgoKCSogcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jOiBDb21waWxlIGZpeC4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi90aHVuay5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvYXRvbS5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2tlcm5lbDMyLmM6CglSZW1vdmVkIGEgZmV3IHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdXNlci9tb3VzZS5zcGVjLCBkbGxzL3VzZXIvbW91c2VyYy5yYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYzoKCU1lcmdlZCBtb3VzZSBkbGwgaW50byBVU0VSLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2lubW0uc3BlYywgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbjoKCVNpbXBsaWZpZWQgd3JjIGZsYWdzIGhhbmRsaW5nLgoKCSogd2luZG93cy93aW4uYzoKCVlldCBhbm90aGVyIGF0dGVtcHQgYXQgZml4aW5nIENXX1VTRURFRkFVTFQgaGFuZGxpbmcuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglVc2UgRklMRV9TSEFSRV9SRUFEIHRvIG9wZW4gdGhlIGZpbGUgaW4gR2V0QmluYXJ5VHlwZUEuCgoJKiBkZWJ1Z2dlci9tb2R1bGUuYzoKCVN0cmlwIHBhdGggbmFtZSBmcm9tIGRsbCB3aGVuIGFkZGluZyBzeW1ib2xzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglTZW5kIGZ1bGwgcGF0aCBuYW1lIGFuZCBkZWJ1ZyBpbmZvcm1hdGlvbiBpbiBsb2FkX2RsbCBldmVudC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9tb2R1bGUuaDoKCVBhc3MgdGhlIG1haW4gZXhlIG5hbWUgaW4gdGhlIENSRUFURV9QUk9DRVNTIGRlYnVnIGV2ZW50LgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFrZSBhIGJldHRlciBndWVzcyB0byBmaW5kIHRoZSB0b3Agb2YgdGhlIGluaXRpYWwgc3RhY2suCglGaXhlZCBGcmVlQlNEIGNvbXBpbGUgcHJvYmxlbSAodGhhbmtzIHRvIEdlcmFsZCBQZmVpZmZlcikuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUxvdWlzLVBoaWxpcHBlIEdhZ25vbiAob2YgTWFjYWRhbWlhbiBmb3IgQ29yZWwpCglTZWFyY2ggZm9yIGFscmVhZHkgbG9hZGVkIEN1cnNvckljb24gd2FzIGRvbmUgd2l0aCB0aGUgd3JvbmcgaGFuZGxlLAoJc28gaXQgd2FzIGxlYWtpbmcgaWNvbnMuIEZpeGVkLgoKCSogdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gSW1wbGVtZW50ZWQgTUVTU0FHRVRBQkxFIHJlc291cmNlIHR5cGUuCgktIFVzZXJ0eXBlIHJlc291cmNlcyB0aGF0IGNhdXNlIGEgdHlwZS1jbGFzaCB3aXRoIGRlZmluZWQgcmVzb3VyY2VzCgkgIGFyZSBub3cgZGV0ZWN0ZWQgYW5kIGEgd2FybmluZyBpcyBnZW5lcmF0ZWQuIFNvbWUgdHlwZXMgc2hvdWxkIGJlCgkgIHJlcm91dGVkIHRocm91Z2ggb3RoZXIgY29kZSBzbyB0aGF0IHRoZXkgd2lsbCBiZSAocmUtKWludGVycHJldGVkLgoJLSBCdWdmaXg6IExpbmUtY29udGludWF0aW9uIGluIHN0cmluZ3MgaW4gcmVzb3VyY2VzIGluY2x1ZGUgYSBuZXdsaW5lLgoJICBUaGlzIGBmZWF0dXJlJyBnb3QgZGVsZXRlZCB3aXRoIHRoZSBidWlsdGluIHByZXByb2Nlc3NvciwgYnV0IGhhcyBiZWVuCgkgIHB1dCBiYWNrIGludG8gcGxhY2UgKHNlZSBsYXN0IGNoYW5nZXMgY29tbWVudCBmcm9tIHZlcnNpb24gMS4xLjApLgoJLSBCdWdmaXg6IFRoZSBwcmVwcm9jZXNzb3Igbm93IGNvcnJlY3RseSB3aWxsIHNlZSAiXFxcclxuIiBhcyBhIGxpbmUtCgkgIGNvbnRpbnVhdGlvbi4KCS0gQnVnZml4OiBBc3NlbWJsZXJzIG9uIHNvbWUgcGxhdGZvcm1zIGRvIG5vdCB1c2UgMTZiaXQgcXVhbnRpdGllcwoJICBmb3IgYC53b3JkJy4gVGhpcyBkaXJlY3RpdmUgaXMgbm93IGNoYW5nZWQgaW50byBgLnNob3J0Jy4KCS0gQWxsIHR5cGVzIHRoYXQgYWNjZXB0IGlubGluZSBkYXRhIGRlZmluaXRpb25zIChhIGxhIFJDREFUQSkgbm93CgkgIGFsc28gYWNjZXB0IGEgZmlsZSBzcGVjaWZpY2F0aW9uLiBUaGlzIHVuaWZpZXMgdGhlIHN0cnVjdHVyZSBhIGJpdC4KCjIwMDAtMDYtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2RsbC1vdmVycmlkZXM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRleHQgb2YgV1dOIGFydGljbGUgIkRMTCBvdmVycmlkZXMiLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJV2lsYnVyIE4uIERhbGUgPHdpbGJ1ci5kYWxlQGx1bWluLm5sPgoJQWRkZWQgdG8gcHJvamVjdC4gQ3VycmVudGx5IGluY29tcGxldGUgYnV0IHdpbGwgdXBkYXRlIHdlZWtseS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJU2V0dXAgc2lnbmFsIGhhbmRsaW5nIGFuZCBleGNlcHRpb25zIG9ubHkgYWZ0ZXIgUkVRX0lOSVRfUFJPQ0VTU19ET05FCgloYXMgYmVlbiBzZW50LCB0byBhdm9pZCBkZWFkbG9ja2luZyB0aGUgZGVidWdnZXIuCgoJKiBjb250cm9scy9jb21iby5jLCBpbmNsdWRlL2NvbWJvLmg6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCS0gQ29tYm9MQm94IGlzIGFsd2F5cyBjcmVhdGVkIGFzIGNoaWxkIG9mIENvbWJvQm94LiBJZiBDb21ib0JveCBoYXMgc3R5bGUKCSAgb3RoZXIgdGhhbiBDQlNfU0lNUExFLCBwYXJlbnQgb2YgbGlzdGJveCBpcyBzZXQgdG8gZGVza3RvcC4KCS0gSW4gQ0JEcm9wRG93bi4gQ29tYm9Cb3ggdXNlcyBvbmx5IGZpcnN0IGl0ZW0gdG8gY2FsY3VsYXRlIGhlaWdodCBvZgoJICBkcm9wcGVkIGxpc3Rib3guIEFsc28gaWYgbGlzdGJveCBpcyBlbXB0eSBpdHMgaGVpZ2h0IGlzIHVubW9kaWZpZWQKCSAgKHByZXZpb3VzbHkgaXQgd2FzIHNldCB0byAwKS4KCS0gQWRkZWQgY29ycmVjdCBoYW5kbGluZyBvZiBXTV9HRVRETEdDT0RFIGFuZCBXTV8oU1lTKUtFWURPV04gbWVzc2FnZXMuCgktIEdlbmVyYWwgY2xlYW4tdXAuIE1lc3NhZ2Ugb3JkZXIgaXMgbm93IG1vcmUgcHJlY2lzZSAoYXQgbGVhc3QKCSAgbm90aWZpY2F0aW9ucyB0byBjbGllbnQpOyBsaXN0Ym94IC0gY29tYm9ib3ggaW50ZXJhY3Rpb24gaGFzIHNsaWdodAoJICBkaWZmZXJlbmNlcyBjb21wYXJpbmcgdG8gV2luZG93cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CgktIFJlbW92ZWQgZGVwZW5kZW5jeSBvZiBlZGl0IGNvbnRyb2wgZnJvbSBjb21ib2JveCBpbXBsZW1lbnRhdGlvbi4KCS0gRWRpdCBjb250cm9sIHVzZXMgdW5kb2N1bWVudGVkIHdpbmRvdyBzdHlsZSAweDAyMDAgdG8gZGV0ZWN0IGlzIGl0IGEgcGFydAoJICBvZiBjb21ib2JveC4gSWYgc28gaXQgY2FsbHMgR2V0RGxnSXRlbShod25kQ29tYm8sIDEwMDApIHRvIGdldCBDb21ib0xCb3gKCSAgd2luZG93IGhhbmRsZSAoc2VlIGNvbW1lbnRzIGZvciBjb21iby5jIGJlbG93KS4KCS0gRURJVF9DaGVja0NvbWJvIC0gbW9kaWZpZWQgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2Yga2V5Ym9hcmQgbWVzc2FnZXMuCgktIFByb2Nlc3Npbmcgb2YgV01fR0VURExHQ09ERSBhbmQgV01fQ0hBUiBmb3IgVktfUkVUVVJOIGFuZCBWS19FU0NBUEUKCSAgZGVwZW5kcyBvbiB3aGV0aGVyIGxpc3Rib3ggaXMgZHJvcHBlZCBkb3duLiBUaGlzIHByZXZlbnRzIGNsb3Npbmcgb2YgZGlhbG9nCgkgIGlmIGxpc3Rib3ggaXMgZHJvcHBlZCBkb3duIGFuZCBhbGxvd3MgY29tYm9ib3ggdG8gcHJvY2VzcyB0aGVzZSBrZXlib2FyZAoJICBtZXNzYWdlcyBwcm9wZXJseS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CgktIFdlIGNhbiB1c2Ugd25kLT53SURtZW51IGZvciBDb21ib0xCb3ggKGl0IGlzIG5vdCByZXNldCBhbnltb3JlIGluIFNldFBhcmVudCkKCS0gV2hlbiB1c2VyIGNsaWNrcyBvdXRzaWRlIG9mIGRyb3BwZWQgbGlzdGJveCwgb3JpZ2luYWwgc2VsZWN0aW9uIG11c3QgYmUKCSAgcmVzdG9yZWQuCgktIENvbWJvTEJveCBoYXMgY2FyZXRfb24gPSBGQUxTRSBvbiBjcmVhdGlvbiwgdGhhdCdzIHdoeSBjb21ib2JveCBzZW5kcwoJICBMQl9DQVJFVE9OIG1lc3NhZ2UgYmVmb3JlIGRyb3BwaW5nIGxpc3Rib3ggZG93biAoYnV0IG9ubHkgZm9yCgkgIENCU19EUk9QRE9XTkxJU1QgLSBJIGRvbid0IG5vdyB3aHkpLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJV2VsbCwgU2V0UGFyZW50IGRvZXNuJ3Qgd29yayBwcm9wZXJseSBhdCBhbGwsIGJ1dCBhdCBsZWFzdCBpdCBtdXN0IHByZXNlcnZlCgl3aW5kb3cgSUQuICBJbiBmYWN0IGl0IGFsc28gbXVzdCBwcmVzZXJ2ZSB3aW5kb3cgc3R5bGVzLCBkZXN0cm95IFgKCWNvdW50ZXJwYXJ0IGlmIHBhcmVudCBvZiBwb3B1cCBvciBvdmVybGFwcGVkIHdpbmRvdyBpcyBzZXQgdG8gc29tZXRpbmcKCWRpZmZlcmVudCBmcm9tIERlc2t0b3AsIGFuZCBsb3Qgb2Ygb3RoZXIgc3R1ZmYgdGhhdCBpdCBtdXN0IGFuZCBtdXN0bid0IGRvLgoJQnV0IHByZXNlcnZpbmcgSUQgaXMgZ29vZCBlbm91Z2ggZm9yIG5vdy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUFkZGVkIHVuZG9jdW1lbnRlZCB3aW5kb3cgc3R5bGUuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheToKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFNtYWxsIHVwZGF0ZSB0byBkb2N1bWVudGF0aW9uCgktIE1vcmUgcGxheWVyL2dyb3VwIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiAobm90IHRlc3RlZCkKCgkqIHdpbjMyL2V4Y2VwdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjYWxsIE1lc3NhZ2VCb3hBIGJlZm9yZSBVU0VSIGlzIGluaXRpYWxpemVkLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTdGVwaGFuZSBMdXNzaWVyCglTaGVyaSBTdGVldmVzCglIYWl0aGVtIEhtaWRhCgktIEhlaWdodCBvZiB0aGUgbGlzdGJveCBzaG91bGQgYmUgYWRqdXN0IHdoZW4gTEJTX09XTkVSRFJBV0ZJWEVEIGlzIHNldAoJICBhbmQgbm90IGlmIExCU19PV05FUkRSQVdWQVJJQUJMRSBpcyBzZXQsIHByZXZpb3VzbHkgaXQgd2FzIG5vdCBhZGp1c3RpbmcKCSAgdGhlIHNpemUgaW4gYm90aCBjYXNlcy4KCS0gV2hlbiB0aGUgY2FyZXQgaW5kZXggY2hhbmdlLCBpdGVtcyByZXBhaW50aW5nIG5lZWQgdHAgYmUgaW4gdGhpcwoJICBvcmRlcgoJICBhKSBQYWludCBvbGQgY2FyZXQgaXRlbSB3aXRob3V0IHRoZSBmb2N1cwoJICBiKSBQYWludCBvbGQgY2FyZXQgaXRlbSB3aXRob3V0IHRoZSBzZWxlY3Rpb24KCSAgYykgUGFpbnQgbmV3IGNhcmV0IGl0ZW0gd2l0aCB0aGUgc2VsZWN0aW9uCgkgIGQpIFBhaW50IG5ldyBjYXJldCBpdGVtIHdpdGggdGhlIGZvY3VzLgoJLSBXaGVuIHJlcGFpbnRpbmcgdGhlIGxpc3Rib3gsIHdlIHNob3VsZCBwYWludCBhbGwgaXRlbXMgcmVnYXJkaW5nIGlmCgkgIHRoZXkgYXJlIHNsZWN0ZWQgb3Igbm90IGFuZCB0aGVuIHBhaW50IGFmdGVyIHRoZSBmb2N1cyBpdGVtLiBTbyBmb2N1cwoJICBpdGVtIHdpbGwgZW5kIG91dCBiZWluZyBwYWludGVkIHR3aWNlLiAoVGhhdCdzIHdoYXQgV2luZG93cyBkb2VzKS4KCgkqIGZpbGVzL2ZpbGUuYzogU3RhcyBTZXJnZWV2IDxzdGFzLm9yZWxAbWFpbGNpdHkuY29tPgoJbW1hcCgpIGZhaWxzIHdpdGggRU5PREVWIG9uIE5URlMgdW5kZXIgTGludXguCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBhdGhGaW5kTmV4dENvbXBvbmVudDogcmV0dXJuIHBvaW50ZXIgdG8gTlVMTCBhbmQgbm90IE5VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBoYW5kbGluZyBvZiBUQlNUWUxFX0FVVE9TSVpFLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS9jcnRkbGwuaCwgbXNkb3MvaW9wb3J0cy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBpbmNsdWRlL3VybG1vbi5oLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21kbGczMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vZGJjMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoJLSBUdXJuZWQgb24gY2FsbGluZyBjb252ZW50aW9uIGNoZWNraW5nIGZvciBXaW4zMiBmdW5jdGlvbnMgYnkKCSAgZGVmYXVsdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVE9PTEJBUl9EcmF3U3RyaW5nOiBjYXRjaCBpbmRleD09IC0xIChidXQgbm90IHlldCBoYW5kbGVkKS4KCgkqIG1pc2Mvb3B0aW9ucy5jOgoJRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvciBpbiBzdHJpbmcgYWxsb2NhdGlvbi4KCgkqIHdpbmRvd3Mvd2luLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gZm9yIENvcmVsCglUaGUgd2luZG93IGRpbWVuc2lvbnMgaGF2ZSB0byBiZSBpbml0aWFsaXplZCBiZWZvcmUgc2VuZGluZyB0aGUKCVdNX0dFVE1JTk1BWElORk8gbWVzc2FnZS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgbWlzLWFsaWduZWQgYWNjZXNzZXMgZHVyaW5nIEJJT1MvRE9TIGRhdGEgaW5pdGlhbGl6YXRpb24uCgoJKiB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzaXplIG9mIHBlX2hlYWRlciBvbiBtYWNoaW5lcyB3aXRoIG5vbi00SyBwYWdlcy4KCgkqIGlmMTYzMi9zbm9vcC5jLCByZWxheTMyL3Nub29wLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgIkNBTEwiIGFuZCAiUkVUIiBpbiBjYXBpdGFsIGxldHRlcnMgZm9yIGRpc3RpbmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJVGhlIGFjdGl2ZSBwYWdlIHNob3VsZCBiZSB1bmNoYW5nZWQgd2hlbiByZW1vdmluZyBhbiBhY3RpdmUgZmlyc3QgcGFnZQoJZnJvbSBhIHByb3BlcnR5IHNoZWV0cy4KCjIwMDAtMDYtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBtZW1vcnkvc2VsZWN0b3IuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnRleHRfc3BhcmMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXBkYXRlZCBzdXBwb3J0IGZvciBTb2xhcmlzL1NwYXJjIGFyY2hpdGVjdHVyZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbF9jYXJkZW5hc0BkZW5lYmEuY29tPgoJQ29ycmVjdGVkIGEgcG90ZW50aWFsIGNyYXNoLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBzdGFjayBzd2l0Y2ggaGFuZGxpbmcgKGxhcmdlIHN0YWNrKSB0byBzeXNkZXBzLmMKCUVuYWJsZSBleGNlcHRpb24gZGlzcGF0Y2ggd2hpbGUgb24gbGFyZ2Ugc3RhY2suCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpbmlzaGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBMSVNUVklFV19TZXRDb2x1bW5XaWR0aC4gIFRlc3RlZAoJYWdhaW5zdCB3aW5kb3dzIHRob3JvdWdobHkuICBGaXhlZCBidWcgcmVzdWx0aW5nIGluIHVuc2lnbmVkIHZhbHVlcwoJYmVpbmcgcGFzc2VkIGludG8gTElTVFZJRVdfU2V0Q29sdW1uV2lkdGggZnJvbSB0aGUgbGlzdHZpZXcgd2luZG93Cglwcm9jZWR1cmUuICBGaXhlZCBMSVNUVklFV19HZXRJdGVtSGVpZ2h0IHRvIGRpc3JlZ2FyZCB0aGUgaGVpZ2h0IG9mCglpY29ucyBpZiBubyBpY29ucyBleGlzdC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglBZGRlZCBkZWZpbmVzIGZvciBMVlNDV19BVVRPU0laRS9fVVNFSEVBREVSLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJUmVwbGFjZWQgY2FsbHMgdG8gSEVBREVSX1JlZnJlc2ggd2l0aCBJbnZhbGlkYXRlUmVjdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRXJpYyBLb2hsIDxla29obEByei1vbmxpbmUuZGU+CglTdGFydGVkIHN1cHBvcnQgZm9yIG1lbnViYXItbGlrZSB0b29sYmFycy4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNvbXBpbGUgZml4ZXMgZm9yIG5vbi1pMzg2IGFyY2hzLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL3VpdG9vbHMuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBdHRlbXB0IHRvIHBhaW50IHRoZSBjaGVja2JveCBhbmQgcmFkaW8gYnV0dG9ucyBiZXR0ZXIuCgoyMDAwLTA2LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYzogRml4ZWQgd2FybmluZy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRXJpYyBLb2hsIDxla29obEByei1vbmxpbmUuZGU+CglVcGRhdGVkIHRvIGRsbCB2ZXJzaW9uIDUuODEgKElFIDUuMDEpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRXJpYyBLb2hsIDxla29obEByei1vbmxpbmUuZGU+CglJbXBsZW1lbnRlZCBUVk1fR0VUSVRFTVcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUphc29uIE1hd2RzbGV5IDxqYXNvbkBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHR5cGluZyB0aGUgZmlsZW5hbWUgaW4gdGhlIGxpc3R2aWV3IGNvbnRyb2wgYW5kCgloYXZpbmcgdGhlIGNvbnRyb2wgc2VsZWN0IGl0LgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGluY2x1ZGUvbWVzc2FnZS5oLCBtaXNjL21haW4uYzoKCVJlbW92ZWQgTVNHX1dpbmVTdGFydFRpY2tzIChkb2VzIG5vdCB3b3JrIGZvciBtdWx0aXBsZSBhZGRyZXNzIHNwYWNlcwoJYW55d2F5KS4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYzoKCVJlcGxhY2VkIEdldERDIGJ5IENyZWF0ZURDLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9kaWIuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglNb3ZlZCBESUJfRml4Q29sb3JzVG9Mb2FkZmxhZ3MgdG8gY3Vyc29yaWNvbi5jLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCURvY3VtZW50ZWQgdGhlIG5ldyB3aW5lIGNvbW1hbmQgbGluZSBhbmQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCglXSU5FUFJFRklYLgoKCSogbXNkb3MvZHBtaS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbmVwczE2LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWRsZzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2Rzb3VuZC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luZXBzLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIG1lbW9yeS9pbnN0ci5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oOgoJRGVsYXkgbG9hZGluZyBvZiBpbnRlcnJ1cHQgdGFibGUgZnVuY3Rpb25zIHVudGlsIHRoZXkgYXJlIG5lZWRlZC4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pb3BvcnRzLmM6CglEZWxheSBpbml0aWFsaXphdGlvbiBvZiBJL08gcGVybWlzc2lvbnMgdW50aWwgdGhleSBhcmUgZmlyc3QgdXNlZC4KCgkqIGxvYWRlci9tYWluLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpZjE2MzIvcmVsYXkuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIGtlcm5lbCBpbml0aWFsaXphdGlvbiB0byBrZXJuZWxfbWFpbi5jCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGlzcC5yYywgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL2Rpc3BsYXkuaCwgbG9hZGVyL21haW4uYywgd2luZG93cy9jdXJzb3JpY29uLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglNZXJnZWQgZGlzcGxheS5kbGwgaW50byBVU0VSLgoKCSogbWlzYy93c3ByaW50Zi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBjcmFzaC4KCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3dvdzMyLnNwZWMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvY29tbS5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvc3lzdGVtLnNwZWMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLnNwZWMsIGRsbHMva2VybmVsL3dvdzMyLnNwZWMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvY29tbS5zcGVjLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9zeXN0ZW0uc3BlYywgaWYxNjMyL3Rvb2xoZWxwLnNwZWMsIGlmMTYzMi93cHJvY3Muc3BlYywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU3RhcnQgdG8gc2VwYXJhdGUgS0VSTkVMIG91dCBvZiBsaWJ3aW5lLgoKMjAwMC0wNi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdHNfeHV0aWwuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194dXRpbC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglQcmVzZXJ2ZSBXTSBoaW50cyB0aGF0IHdlcmUgc2V0IGR1cmluZyB3aW5kb3cgY3JlYXRpb24gYnkgY2FsbGluZwoJWEdldFdNSGludHMgcHJpb3IgdG8gWFNldFdNSGludHMuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWxfY2FyZGVuYXNAZGVuZWJhLmNvbT4KCUFkZGVkIGEgZmV3IG1lc3NhZ2UgY3JhY2tlcnMuCgoJKiB0b29scy93aW5lY29uZjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGQgIlVuaXggZHJpdmVzIiAvdG1wIGFuZCAke0hPTUV9LCBhbmQgRGV2aWNlIGFuZCBGaWxlc3lzdGVtCglzdGF0ZW1lbnRzLCB0byBhdXRvZ2VuZXJhdGVkIHdpbmUuY29uZi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gUmV3cml0ZSBvZiB0aGUgc2hlbGwgcmVsYXRlZCBwYXJ0cyBvZiB0aGUgZGlhbG9nIHRvIHVzZSB0aGUgYWxyZWFkeQoJICBpbiBzaGVsbDMyaW1wbGVtZW50ZWQgZnVuY3Rpb25zIChTaGVsbEZvbGRlci9QYXRoKikuIEVsaW1pbmF0ZWQgZGlyZWN0CgkgIGZpbGUgYWNjZXNzLgoJLSBSZXBsYWNlZCBMb2FkTGlicmFyeUEgd2l0aCBHZXRNb2R1bGVIYW5kbGVBIHNpbmNlIGNvbWRsZzMyIGlzIGltcG9ydHMKCSAgc29tZSBkbGxzIHBlciAqLnNwZWMgZmlsZQoJLSBNb3N0IE9wZW5GaWxlIEZsYWdzIChPRk5fKikgc2hvdWxkIHdvcmsgcHJvcGVybHkgbm93CgktIFRoZSBlZGl0IGJveCBzaG91bGQgd29yayByaWdodCB3aXRoIGFsbCBzdHVmZiBlbnRlcmVkIGluIGl0IGxpa2UKCSAgLi5cdGVtcFxmaWxlLnR4dCBvciBqdXN0IGM6IHRvIGNoYW5nZSBhIGRyaXZlCgktIE9wdGltaXplZCBEYXRhT2JqZWN0IGhhbmRsaW5nCgktIFNvbWUgYnVncyBmaXhlZCwgc2hvdWxkIHdvcmsgd2l0aCBuYXRpdmUgc2hlbGwzMiBhZ2Fpbi4KCS0gU3R1YnMgZm9yIFByaW50RGxnRXgKCjIwMDAtMDYtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZG9jdW1lbnRhdGlvbi9jb25maWcsIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzLCBkb2N1bWVudGF0aW9uL2ZvbnRzLCBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3MsIG1pc2MvcmVnaXN0cnkuYywgd2luMzIva2VybmVsMzIuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9tZXNzYWdlLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUxvdHMgb2Ygc3BlbGxpbmcgZml4ZXMgdGhhdCBhY2N1bXVsYXRlZCBpbiBteSB0cmVlIGFnYWluLCBtYWRlIHNldmVyYWwKCWVycm9yIG1zZ3MgbW9yZSB2ZXJib3NlLCBkb2MgdXBkYXRlcy4KCgkqIGRvY3VtZW50YXRpb24vc2hlbGwzMiwgaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIE5ldyAoc29tZSBzdHVicyk6IFNIR2V0Rm9sZGVyTG9jYXRpb24sIFBhdGhBZGRFeHRlbnNpb24sCgkgIFBhdGhJc1VOQ1NlcnZlciwgUGF0aElzVU5DU2VydmVyU2hhcmUsIFBhdGhNYWtlUHJldHR5LAoJICBTSENyZWF0ZVNoZWxsUGFsZXR0ZSwgU0hPcGVuUmVnU3RyZWFtLCBTSE9wZW5SZWdTdHJlYW0yCgktIE1hbnkgc3RyaW5nIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZAoJLSBTb21lIHN0dWJzIGZvciBleHBvcnRzIGJ5IG9yZGluYWwKCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglHaXZlIGEgZXJyb3IgbWVzc2FnZSBpZiBhIGZvcndhcmRlZCBleHBvcnQgaXMgbm90IHJlc29sdmVkLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUltcGxlbWVudGVkIEZpbmRGaXJzdEZpbGVFeCwgY2xlYW5lZCBvbGQgaW1wbGVtZW50YXRpb24gdXAuCgoJKiBjb250cm9scy93aWRnZXRzLmM6CglMb3Vpcy1QaGlsaXBwZSBHYWdub24gKG9mIE1hY2FkYW1pYW4gZm9yIENvcmVsKQoJU3RhdGljIGNvbnRyb2xzIHdlcmVuJ3QgcmVjZWl2aW5nIFdNX0xCVVRUT05EQkxDTEsgbWVzc2FnZXMgYmVjYXVzZSB0aGUKCVN0YXRpYyB3aW5kb3cgY2xhc3Mgd2FzIHJlZ2lzdGVyZWQgd2l0aG91dCB0aGUgQ1NfREJMQ0xLUyBzdHlsZSAod2hpY2ggaXQKCWhhcyBpbiBXaW5kb3dzKS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYWtlIHN1cmUgbWFpbl9leGVfbmFtZSBpcyBhIERPUyBmaWxlbmFtZSAodGhhbmtzIHRvIFV3ZSBCb25uZXMpLgoKCSogaW5jbHVkZS9kc291bmQuaCwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kcGxheS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgRGlyZWN0U291bmRDYXB0dXJlIGFuZCBEaXJlY3RTb3VuZENhcHR1cmVCdWZmZXIgaW50ZXJmYWNlcwoJLSBBZGRlZCBzb21lIFNvdW5kQ2FwdHVyZSBzdHVicwoJLSBDaGFuZ2VkIFJFRklJRCB0byBMUENHVUlEIGluIGEgZmV3IHBsYWNlcyBhcyBwZXIgTVMgaGVhZGVyIGZpbGUKCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3R1YiBmb3IgUnRsQ29udmVydFNpZFRvVW5pY29kZVN0cmluZy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCU1TRE46ICJXTV9OQ0hJVFRFU1QgLSBSZXR1cm5zIEhUQ0xJRU5UIGlmIHRoZSBjb250cm9sIHN0eWxlIGlzCglTU19OT1RJRlk7IG90aGVyd2lzZSwgcmV0dXJucyBIVFRSQU5TUEFSRU5ULiAiCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIHdhcm5pbmcuCgoyMDAwLTA1LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgYSBkZWZhdWx0IHNpemUgZm9yIHdpbmRvd3Mgd2hlbiBDV19VU0VERUZBVUxUIGlzIHVzZWQuCgoyMDAwLTA1LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL25scy9ocnYubmxzLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkb2N1bWVudGF0aW9uL2xhbmd1YWdlcywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJWm9yYW4gRHplbGFqbGlqYSA8amVsbHlAc3JrLmZlci5ocj4KCUJhc2ljIENyb2F0aWFuIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBjb250cm9scy9lZGl0LmM6IFNlcmdlIEl2YW5vdgoJUmV0dXJuaW5nIERMR0NfV0FOVEFMTEtFWVMgZm9yIG11bHRpbGluZSBlZGl0IGNvbnRyb2wgd2FzIG5vdCBnb29kIGJlY2F1c2UKCWl0IGJyZWFrcyBuYXZpZ2F0aW9uIGluIGRpYWxvZ3MuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gRml4ZWQgc29tZSBpbml0aWFsaXphdGlvbi9kZXN0cnVjdGlvbiBhbmQgcmVmZXJlbmNlIGNvdW50aW5nCgktIEFkZGVkIGEgbGl0dGxlIG1vcmUgZGVidWdnaW5nIGluZm9ybWF0aW9uCgoJKiB0b29scy9mb250X2NvbnZlcnQuc2g6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglBZGRlZCBhIHNoZWxsLXNjcmlwdCBmb3IgZWFzaWVyIGZvbnQtaW5zdGFsbGF0aW9uLgoKCSogZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsIGRsbHMvd2luZXBzL2NvbG9yLmMsIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL29iamVjdHMuYywgZGxscy93aW5lcHMvcGVuLmMsIGRsbHMvd2luZXBzL3BwZC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90ZXh0LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbmVwcy93aW5lcHMxNi5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvd2luZXBzLnNwZWMsIGluY2x1ZGUvcHNkcnYuaCwgbG9hZGVyL21haW4uYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2JpdGJsdC5jLCBNYWtlLnJ1bGVzLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVNlcGFyYXRlIHdpbmVwcyBvdXQgb2YgV2luZSdzIGNvcmUuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgYSBsaXR0bGUgbW9yZSBkbGwgbGV2ZWwgZGVidWdnaW5nIGFuZCBzbWFsbCBjaGFuZ2VzCgktIFN0YXJ0IG9uIGdyb3VwIGFuZCBwbGF5ZXIgaW50ZXJmYWNlcwoKCSogZGxscy9kc291bmQvZHNvdW5kLnNwZWMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZHNvdW5kLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGQgYW5vdGhlciB3YXkgdG8gY3JlYXRlIGEgM2QgbGlzdGVuZXIgaW50ZXJmYWNlLgoJLSBGaXggdXAgc29tZSByZWZlcmVuY2UgY291bnRpbmcgYnVncyBhbmQgaW50ZXJmYWNlIGNyZWF0aW9uIGJ1Z3MKCS0gQWRkIERpcmVjdFNvdW5kRW51bWVyYXRlVyBzdHViCgktIEFkZCBEaXJlY3RTb3VuZENhcHR1cmVFbnVtZXJhdGV7QSxXfSBzdHVicwoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBpbmNsdWRlL2RhdGV0aW1lLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUFkZGVkIDNEIGJvcmRlciBhcm91bmQgY29udHJvbC4gIEZpeGVkIG1vbnRoY2FsIGNvbnRyb2wgcG9wdXAuICBBZGRlZAoJV01fU0laRSBzdXBwb3J0LiAgT3B0aW1pemVkIGRyYXdpbmcuICBBZGRlZCBXTV9MQlVUVE9OVVAgaGFuZGxpbmcuCglIYW5kbGUgRFRTX1JJR0hUQUxJR04gc3R5bGUuICBGaXhlZCBoYW5kbGluZyBvZiBmb3JtYXR0aW5nIHN0eWxlcywKCWRhdGUgaXMgbm93IGRpc3BsYXllZCBwcm9wZXJseSBmb3IgRFRTX1NIT1JUREFURUZPUk1BVC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJUmVtb3ZlZCBhbGwgZGlyZWN0IGNhbGxzIHRvIE1PTlRIQ0FMX1JlZnJlc2goKSBhbmQgcmVwbGFjZWQgd2l0aAoJZWl0aGVyIFJlZHJhd1dpbmRvdyBvciBJbnZhbGlkYXRlUmVjdC4gT3B0aW1pemVkIGRyYXdpbmcgdXNpbmcKCVJlZHJhV2luZG93IGFuZCB1cGRhdGUgcmVnaW9ucy4gIEZpeGVkICJUb2RheSIgZGF0ZSBidWcgd2hlcmUgeWVhciB3YXMKCW9ubHkgb25lIGRpZ2l0LiAgRml4ZWQgZHJhd2luZyBvZiBjaXJjbGUgZHJhd24gbmV4dCB0byAiVG9kYXkiLiAgRml4ZWQKCW1vdmluZyB0byBwcmV2aW91cyBvciBuZXh0IG1vbnRoIGJ5IGNsaWNraW5nIG9uIGRheXMgYmVsb25naW5nIHRvCglwcmV2aW91cyBvciBuZXh0IG1vbnRocy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvY29uc29sZS5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCUFkZCBzdHViIGZvciBTZXRDb25zb2xlT3V0cHV0Q1AuCgoJKiB0b29scy93cmMvcHB5Lnk6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCBhIDsgbmVlZGVkIGJ5IHNvbWUgWUFDQ3MuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUluc3RhbGwgdGhlIGNvbG9ybWFwIG9ubHkgaWYgaXQgd2FzIGNyZWF0ZWQuCgoJKiBtc2Rvcy9pbnQyMS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZCBpbnQgMHgyMSBsb25nIGZpbGUgbmFtZSBmdW5jdGlvbiAweDcxYTA6IEdldCBWb2x1bWUgSW5mby4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50ZWQgd2dsU2hhcmVMaXN0cyBhbmQgd2dsR2V0Q3VycmVudERDLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJTW92ZWQgaWRsZSBldmVudCBoYW5kbGluZyB0byB0aGUgc2VydmVyLgoKCSogd2luZG93cy93aW4uYzoKCVVzZSBHZXRTdGFydHVwSW5mb0EoKSBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBwcm9jZXNzIHN0cnVjdHVyZQoJZGlyZWN0bHkuCgoJKiBsb2FkZXIvdGFzay5jOgoJTWFrZSBzdXJlIGluaXRpYWwgdGFzayBpcyBub3QgbWFya2VkIGFzIDMyLWJpdC4KCgkqIG1pc2Mvb3B0aW9ucy5jOgoJTWFrZSBjaGlsZCBwcm9jZXNzZXMgaW5oZXJpdCBjb21tYW5kLWxpbmUgb3B0aW9ucyB0aHJvdWdoIHRoZQoJV0lORU9QVElPTlMgZW52aXJvbm1lbnQgdmFyaWFibGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBTZXJnZSBJdmFub3YKCVNldFBhcmVudDogY2FsbCBTZXRXaW5kb3dQb3Mgd2l0aCBTV1BfTk9BQ1RJVkFURSBmbGFnIHNldC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9kaXNwZGliLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2Rpc3BkaWIuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNb3ZlZCBESVNQRElCIG91dCBvZiB0aGUga2VybmVsIGludG8gR0RJLgoKCSogY29udHJvbHMvY29tYm8uYywgaW5jbHVkZS9jb21iby5oOgoJRGF2aWQgR3JhbnQgPGRhdmlkZ3JhQGNvcmVsLmNhPgoJLSBDcmVhdGluZyBjb21ib2JveCB3aXRoIENCU19TSU1QTEUgc3R5bGUgc2hhbGwgc2V0IGludGVybmFsIGZsYWcgQ0JGX0VESVQuCgktIEVkaXQgdGV4dCBtdXN0IGJlIHNlbGVjdGVkIG9ubHkgaWYgQ0IgaXMgaW4gZm9jdXMuCgktIElmIENCIGhhcyBlZGl0IGNvbnRyb2wgd2UgaGF2ZSB0byBjYWxsIENCVXBkYXRlRWRpdCB0byB1cGRhdGUgaXRzCgkgIGNvbnRlbnRzLiBJbnZhbGlkYXRpbmcgdGV4dFJlY3Qgd2lsbCBub3QgZm9yY2UgdXBkYXRpbmcgb2YgY2hpbGQKCSAgZWRpdCBjb250cm9sLCBvYnZpb3VzbHkuCgktIFdlIGhhdmUgdG8gcHJvdGVjdCBvdXJzZWx2ZXMgZnJvbSBjaGFuZ2luZyBzZWxlY3Rpb24gaW4gbGlzdGJveCB3aGVuCgkgIHdlIHJlY2VpdmUgbGlzdGJveCBub3RpZmljYXRpb24uIFNvIExCTl9TRUxDSEFOR0UgLT4gQ0JVcGRhdGVFZGl0IC0+CgkgIEVOX0NIQU5HRSB3aWxsIG5vdCByZXNlbGVjdCBpdGVtIGluIHRoZSBsaXNib3guCgoJKiBkbGxzL2dkaS9nZGlfbWFpbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUFkZCBpbmNsdWRlIGZvciBMb2FkTGlicmFyeS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS9hdG9tLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2VydmVyL2F0b20uYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglUdXJjaGFub3YgU2VyZ2VpIDx0dXJjaGFub3ZAb3R2cHJpbS5ydT4KCUltcGxlbWVudGVkIGxvY2FsIGF0b21zIGluIHRoZSBzZXJ2ZXIuCgoJKiBpZjE2MzIvYnVpbHRpbi5jOiBEbyBub3QgbG9hZCB3aW5lcHMgb24gc3RhcnR1cC4KCgkqIG1pc2MvY29tbS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCB3YXJuaW5nLgoKCSogY29udHJvbHMvY29tYm8uYzogT3dlbiBXYW5nCglXaGVuIHlvdSBjbGljayBvbiBhbiBpY29uIHRvIG9wZW4gYSBjb21ibyBib3gsIHlvdSB3b3VsZCBleHBlY3QgaXQgdG8KCWJlIGVuYWJsZWQgc28geW91IGNhbiBjaG9vc2Ugc29tZXRoaW5nIGluIGl0LiBJbiBXaW5lIHRoaXMgd2FzIG5vdAoJZ3VhcmFudGVlZCBzaW5jZSB5b3VyIGRlZmF1bHQgZmxhZ3MgY291bGQgZ2V0IGxvc3QgaW4gdGhlIHByb2Nlc3MtaGVhcAoJb2YgdGhlIGFwcGxpY2F0aW9uLgoKMjAwMC0wNS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDIxLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9leGNlcHQuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2Vudmlyb24uYywgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvaW50MjAuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYzoKCUV4ZWMgYSBzZXBhcmF0ZSB3aW5lIGJpbmFyeSBmb3IgZXZlcnkgd2luMzIgcHJvY2VzcyBzbyB0aGF0IHRoZXkgcnVuCglpbiBzZXBhcmF0ZSBhZGRyZXNzIHNwYWNlcy4KCVJ1biAxNi1iaXQgdGFza3MgYXMgV2luMzIgdGhyZWFkcywgbm90IHByb2Nlc3Nlcy4KCjIwMDAtMDUtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMDA1MjYuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFNlcmdlIEl2YW5vdgoJLSBBZGRlZCBoYW5kbGluZyBvZiBXTV9NT1VTRUFDVElWQVRFIG1lc3NhZ2UKCS0gQWRkZWQgaW5fZm9jdXMgZmllbGQgdG8gaW50ZXJuYWwgbGlzdGJveCdzIHN0cnVjdHVyZS4gVGhpcyBmbGFnIGlzIHNldCBvbgoJICByZWNlaXZpbmcgV01fU0VURk9DVVMgbWVzc2FnZSBhbmQgaXMgcmVzZXRlZCBvbiBXTV9LSUxMRk9DVVMuIEFsbCBjYWxscyB0bwoJICBHZXRGb2N1cyBmdW5jdGlvbiB3ZXJlIHJlcGxhY2VkIHdpdGggY2hlY2tzIG9mIHRoaXMgZmxhZy4KCS0gSW4gTElTVEJPWF9IYW5kbGVMQnV0dG9uRG93bjogZm9jdXMgaXMgc2V0IG9ubHkgaWYgJ2luX2ZvY3VzJyBmbGFnIGlzCgkgIGNsZWFyCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglTdGFydGVkIGxvY2FsIG5hbWUgc2VydmVyIGZyYW1ld29yay4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaCwgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIFByaW50U2V0dXAgZGlhbG9nIGFuZCBzdXBwb3J0IGZvciBob29rcyBhbmQgdGVtcGxhdGVzLgoJTW92ZSAxNiBiaXQgYXBpIGRlZmluaXRpb25zIG91dCBvZiBjb21tZGxnLmggdG8gY2RsZy5oCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDUtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmM6IFNlcmdlIEl2YW5vdgoJLSBBZGRlZCBoYW5kbGluZyBvZiBXTV9NT1VTRUFDVElWQVRFIG1lc3NhZ2UKCS0gQWRkZWQgaW5fZm9jdXMgZmllbGQgdG8gaW50ZXJuYWwgbGlzdGJveCdzIHN0cnVjdHVyZS4gVGhpcyBmbGFnIGlzIHNldCBvbgoJICByZWNlaXZpbmcgV01fU0VURk9DVVMgbWVzc2FnZSBhbmQgaXMgcmVzZXRlZCBvbiBXTV9LSUxMRk9DVVMuIEFsbCBjYWxscyB0bwoJICBHZXRGb2N1cyBmdW5jdGlvbiB3ZXJlIHJlcGxhY2VkIHdpdGggY2hlY2tzIG9mIHRoaXMgZmxhZy4KCS0gSW4gTElTVEJPWF9IYW5kbGVMQnV0dG9uRG93bjogZm9jdXMgaXMgc2V0IG9ubHkgaWYgJ2luX2ZvY3VzJyBmbGFnIGlzCgkgIGNsZWFyCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglTdGFydGVkIGxvY2FsIG5hbWUgc2VydmVyIGZyYW1ld29yay4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaCwgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIFByaW50U2V0dXAgZGlhbG9nIGFuZCBzdXBwb3J0IGZvciBob29rcyBhbmQgdGVtcGxhdGVzLgoJTW92ZSAxNiBiaXQgYXBpIGRlZmluaXRpb25zIG91dCBvZiBjb21tZGxnLmggdG8gY2RsZy5oCgoJKiBjb250cm9scy9lZGl0LmM6IEhlbm5pbmcgSG9mZm1hbm4KCURvbid0IHNlbmQgRU5fQ0hBTkdFIGFmdGVyIHBhaW50aW5nIHRoZSBlZGl0LgoJU2VuZCBpdCB3aGVyZXZlciB0ZXh0IGlzIGNoYW5nZWQuCgoJKiBjb250cm9scy9lZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglNb3ZlZCB0aGUgRU5fVVBEQVRFIG5vdGlmaWNhdGlvbiBvdXQgb2YgdGhlIHBhaW50IGhhbmRsZXIuIEluc3RlYWQsCgl0aGUgbm90aWZpY2F0aW9uIGlzIHNlbnQgd2hlbiBhbiBJbnZhbGlkYXRlUmVjdCBpcyBtYWRlIGFmdGVyCgltb2RpZnlpbmcgdGhlIHRleHQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglGcmFuY29pcyBNZXRob3QgKE1hY2FkYW1pYW4pCglGaXhlZCB0aGUgYmxhbmsgY29sb3IgcGFsZXR0ZSB0b29sdGlwIGJ1ZyBieSB0cmlnZ2VyaW5nIGEgcmVmcmVzaCBvZgoJdGhlIHRvb2x0aXAgd2l0aCBVcGRhdGVXaW5kb3cgZnVuY3Rpb24gaW5zdGVhZCBvZiBjYWxsaW5nIGRpcmVjdGx5IHRoZQoJcmVmcmVzaCBmdW5jdGlvbi4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9leHRlcm5hbC5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2V4dF9kZWJ1Z2dlci5jOgoJSmFtZXMgSnVyYW4gPGp1cmFuQGNzZS5wc3UuZWR1PgoJREVCVUdfRXh0ZXJuYWxEZWJ1Z2dlcigpIG5lZWRzIHRvIGJlIGEgcGFydCBvZiB3aW5lLCBub3Qgd2luZWRiZy4KCjIwMDAtMDUtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluOgoJRG8gbm90IGNsZWFyIHN1ZmZpeGVzIGxpc3QgKGJyZWFrcyBCU0QgbWFrZSkuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTW92ZSB3aW5zcG9vbCB0byB1bmljb2RlLgoJTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29ya2VkIHRoZSB0aHVtYiBkcmF3aW5nIGNvZGUsIHRodW1iIGNhbGN1bGF0aW9uIGNvZGUsIGNoYW5uZWwKCWNhbGN1bGF0aW9uIGNvZGUsIGFuZCBjb3JyZWN0ZWQgc29tZSBidWdzIGluIGhvdyB0aWNzIGFyZSBkcmF3biBhbmQKCWhvdyBjbGlja3MgYXJlIGhhbmRsZWQuCgoJKiBjb250cm9scy9lZGl0LmM6CglMb3Vpcy1QaGlsaXBwZSBHYWdub24gKG9mIE1hY2FkYW1pYW4gVGVjaG5vbG9naWVzIGZvciBDb3JlbCkKCUFkZGVkIGV2ZW50IGhhbmRsZXIgZm9yIFdNX01CVVRUT05ET1dOIChzZW5kcyBXTV9QQVNURSBtZXNzYWdlKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglVc2UgY2xpcHBpbmcgcmVnaW9ucyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBwcm9jZXNzaW5nIHBlcmZvcm1lZCB3aGVuIHRoZQoJdG9vbGJhciBpcyByZXBhaW50aW5nLiAgUmVkdWNlcyBwcm9jZXNzaW5nIGJ5IGFwcHJveGltYXRlbHkgODUtOTUlIGluIG1vc3QKCWNhc2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlcyBjcmFzaCB3aGVuIGNhbGxpbmcgVHJlZXZpZXdfRW5kRWRpdExhYmVsTm93IGFuZCBubyBub2RlIGlzCgljdXJyZW50bHkgZWRpdGVkLgoKMjAwMC0wNS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvZmxhdHNiLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJRGVmZXIgdG8gc3RhbmRhcmQgc2Nyb2xsaW5nIEFQSXMgZm9yIG5vbi1mbGF0U0Igc3BlY2lmaWMgZnVuY3Rpb25zIHNvCgl0aGF0IGZsYXRTQnMgc2hvdyB1cCBhbmQgYmVoYXZlIHByb3Blcmx5LCBqdXN0IG5vdCB3aXRoIGZsYXQgcHJvcGVydGllcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVJvYiBGYXJudW0gPHJvYmZAY29kZXdlYXZlcnMuY29tPgoJU2VwYXJhdGUgb3V0IHRoZSAzMmJpdCBjYXNlIGZyb20gdGhlIDI0Yml0IGNhc2UsIGFuZCBjb3B5IDNieXRlcyBvZgoJc291cmNlIGZvciBldmVyeSA0Ynl0ZXMgb2YgaW5wdXQsIGludG8gdGhlIGRlc3RpbmF0aW9uIGZvciB0aGUgMjRiaXQKCWNhc2UuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCB3aW4zMi9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNvcnRlZCBvdXQgYSBmZXcgbWlzcGxhY2VkIGRlZmluaXRpb25zLgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gZmlsZSBoYW5kbGluZyBhbmQgdmlydHVhbAoJbWVtb3J5IG1hbmlwdWxhdGlvbi4KCUFkZGVkIElzVGV4dFVuaWNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaGFuZGxpbmcgZm9yIFRWU19TSU5HTEVFWFBBTkQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3RlZCB0aGUgcHJvYmxlbSB3aGVyZSBhIHRhYiBjb250cm9sIG1hcmtlZCBtdWx0aWxpbmUgYnV0IGhhcwoJb25seSBvbmUgdGFiIHdhcyBiZWluZyBqdXN0aWZpZWQgdG8gZmlsbCB0aGUgd2hvbGUgdGFiIHNwYWNlLgoKCSogbXNkb3MvZHBtaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvbW1lbnRlZCBvdXQgYnJva2VuIF9fYXNtX18sIGFkZGVkIGNvbW1lbnRzIHdoZXJlIGl0IGlzIGJyb2tlbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbnNlcnRlZCBhIG1pc3NpbmcgY2FsbCB0byBTZXRXaW5kb3dQb3MoKS4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgaGVhZGVyCgljb250cm9sIGlzIHZpc2libGUgYWdhaW4gaW4gbGlzdCB2aWV3cyB3aXRoIHJlcG9ydCBzdHlsZS4KCgkqIE1ha2UucnVsZXMuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCVJldml2ZWQgdGhlIEdFTl9DX1NSQ1MgdmFyaWFibGUgdG8gc3VwcG9ydCB3cmMgbGV4L3lhY2Mgc291cmNlcy4KCjIwMDAtMDUtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJU2VuZCBhIG5vcm1hbCBtb3VzZSBtZXNzYWdlIGNvZGUgaW4gV01fUEFSRU5UTk9USUZZLCBldmVuIGlmIHRoZQoJYWN0dWFsIG1lc3NhZ2Ugd2FzIGEgbm9uLWNsaWVudCBvbmUuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29wZW5nbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVwZGF0ZWQgQVBJIGZpbGVzCgktIEJldHRlciBoZWFkZXJzIGFuZCBwcm90b3R5cGUgY2hlY2tpbmcKCS0gUHJvdG90eXBlIGNoZWNraW5nIG5vdyBjYWxsZWQgLS1wcm90b3R5cGUgaW5zdGVhZCBvZiAtLWhlYWRlcnMKCS0gTmV3IG9wdGlvbnMgLS1oZWFkZXJzLXtkdXBsaWNhdGVkLG1pc3BsYWNlZH0gZm9yCgkgIGR1cGxpY2F0ZWQvbWlzcGxhY2VkIGZ1bmN0aW9ucyBjaGVja2luZyBvZiB0aGUgaGVhZGVycy4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSWYgc3lzdGVtIGRvZXNuJ3QgaGF2ZSBPcGVuR0wsIGRvbid0IHJlZmVyIHRvIGxpYm9wZW5nbDMyLnNvLgoKCSogZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOgoJQWJleSBHZW9yZ2UgKG9mIE1hY2FkYW1pYW4vQ29yZWwpCglXaGVuIHlvdSBvcGVuIGZpbGVzIHdpdGggRW1iZWRkZWQgb2JqZWN0cywgdGhleSB3ZXJlIG5vdCBnZXR0aW5nIGRyYXduCgljb3JyZWN0bHkuICBXaGVuIHlvdSBwYXN0ZSBPTEUgb2JqZWN0cyB3aXRoIHByZXNlbnRhdGlvbiBkYXRhLCB0aGV5Cgl3ZXJlIG5vdCBnZXR0aW5nIGRyYXduIGNvcnJlY3RseS4KCgkqIGNvbnRyb2xzL21lbnUuYzogUm9iIEZhcm51bSA8cm9iZkBjb2Rld2VhdmVycy5jb20+CglQb3N0IGEgV01fQ0FOQ0VMTU9ERSBtZXNzYWdlIHRvIHdha2UgdXAgdGhlIGludGVybmFsIG1lbnUgaGFuZGxpbmcKCWNvZGUuIFRoaXMgZml4ZXMgdGhlIHByb2JsZW0gb2YgYSBtZW51IGJlaW5nIG9ycGhhbmVkIHdoZW4gdGhlIHBhcmVudAoJd2luZG93IGRpc2FwcGVhcnMsIG9yIGlmIHRoZSBwYXJlbnQgbG9zZXMgZm9jdXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeCBhIG1pc21hdGNoIGJldHdlZW4gZm9ybWF0IHN0cmluZyBhbmQgcGFyYW1ldGVyLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglTZXRCdWRkeSBubyBsb25nZXIgb3ZlcndyaXRlcyBpdHMgc3VwZXJjbGFzcycgV25kUHJvYyBwcm9wZXJ0eSB3aGVuCgl0aGUgYnVkZHkgaGFzIGFscmVhZHkgYmVlbiBzdWJjbGFzc2VkLCBlbGltaW5hdGluZyB0aGUgaW5maW5pdGUgbG9vcAoJdGhhdCByZXN1bHRlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW5lZCB1cCBYMTEgZXh0ZW5zaW9uIHRlc3RzLgoKCSogY29udHJvbHMvZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJQ2FwdHVyZSBeVixeWCxeQyBhbmQgdHJhbnNsYXRlIGl0IHRvIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2UgZm9yCglwYXN0ZSwgY3V0LCBjb3B5LgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXhlZCB0aGUgT3BlbkdMMzIgc3BlYyBmaWxlIChhbmQgdGhlIG1ha2Vfb3BlbmdsX3NwZWMgdG9vbCkKCS0gcHJldmVudCBIYWxmTGlmZSBmcm9tIGNyYXNoaW5nIHdoZW4gaXQgZnJlZXMgdGhyZWUgdGltZXMgdGhlIHNhbWUKCSAgcmVuZGVyaW5nIGNvbnRleHQKCgkqIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3ZnYS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXByb3ZlZCBEaXJlY3REcmF3UGFsZXR0ZSBoYW5kbGluZyAoc2V0IGl0IG9uIGluaXQsIG5vdCBldmVyeSB0aW1lIGl0CgljaGFuZ2VzKS4gQWRkZWQgVkdBX1dyaXRlQ2hhcnMoKSBmdW5jdGlvbi4KCgkqIG1zZG9zL2ludDMzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2NhbGUgbW91c2UgY29vcmRpbmF0ZXMgdG8gZGVmYXVsdCB3aWR0aCA2NDAuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBXSU5FX0RpcmVjdERyYXcgYSBkZWNvcmF0aW9ubGVzcyBwb3B1cCB3aW5kb3cuIEZpeGVzIG1vdXNlCgljb29yZGluYXRlcyBwcmV2aW91c2x5IG9mZnNldCBieSB0aGUgaW52aXNpYmxlIGRlY29yYXRpb25zLgoKCSogaW5jbHVkZS93aW5udC5oOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjdW5kZWYgREVMRVRFIGJlZm9yZSAocmUpZGVmaW5pbmcgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIHRvb2x0aXBzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVJlZHVjZSB0b29sYmFyIHJlZHJhd2luZyBhbmQgZmxpY2tlciBieSBjYWxsaW5nIFJlZHJhd1dpbmRvdygpIGluCglUT09MQkFSX01vdXNlTW92ZSgpIG9ubHkgaWYgaG90IGVmZmVjdCBhcHBsaWVzIHRvIHRoZSBjdXJyZW50IGhvdAoJYnV0dG9uLiAgUmVzdG9yZSBiSG90IGZsYWcgb2YgaG90IGJ1dHRvbiBpbiBUT09MQkFSX0xCdXR0b25VcCgpIHRvCglyZXN0b3JlIGhvdCBlZmZlY3QgcHJvcGVybHkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFNlcmdlIEl2YW5vdgoJRml4ZWQgV01fTEJVVFRPTkRCTENMSyBoYW5kbGluZy4KCgkqIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBhbmQgcmV0cmlldmUgdGhlIHdpbmRvdyBpY29uIHRoYXQgaXMgZHJhd24gdW5kZXIgbWFuYWdlZCBtb2RlCgkoYmFzZWQgb24gdGhlIHdvcmsgb2YgQW5kcmV3IExld3lja3kgZm9yIENvcmVsKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3RlZCBhIHByb2JsZW0gb2Ygd2hlbiBvbGRIaXQgaXMgbmVnYXRpdmUgYW5kIHdlIHRyeSB0byB1c2UgaXQgYXMKCWFuIGluZGV4IGludG8gdGhlIGJ1dHRvbnMgYXJyYXkuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTaG91bGQgaW5jbHVkZSBjb21tZGxnLmguCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURlZmluZSB0aGUgX1g4Nl8gbWFjcm8gb24gSW50ZWwgcHJvY2Vzc29ycy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU29tZSBwYXJ0IG9mIEVESVRfRU1fTGluZUxlbmd0aCBjb2RlIHdhcyBjb21tZW50ZWQgKGJyb2tlbikuIFJlc3RvcmVkCgl0aGUgY2FwYWJpbGl0eSB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmluZyBub24tc2VsZWN0ZWQgY2hhcnMgb2YgYQoJc2VsZWN0aW9uIGFyZWEuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlbW92ZSB0aGUgUFJJTUFSWVNVUkZBQ0UgYXR0cmlidXRlIGZyb20gYmFjayBidWZmZXJzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGEgbGlzdHZpZXcgaXMgY3JlYXRlZCB3aXRoIExWU19OT0NPTFVNTkVIRUFERVIgdGhlbiB3aW5lIGNyZWF0ZXMgdGhlCgloZWFkZXIgbGlrZSBub3JtYWwgYnV0IGp1c3Qgc2V0cyBpdCBub3QgdmlzaWJsZS4gVGhpcyBmaXggbGF5cyBvdXQKCXRob3NlIHN1cHBvc2VkbHkgbm9uZXhpc3RlbnQgaGVhZGVycyB0byBzaXplIDAsMC4gU28gdGhhdCBldmVuIGlmIHRoZXkKCWJlY29tZSB2aXNpYmxlIHRoZXkgYXJlIG5vdCBkcmF3bi4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSB0aGUgZGlyZWN0IGNhbGwgaW50byBjb3JlIChESUFMT0dfRG9EaWFsb2dCb3gpLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbml0aWFsaXplIHRoZSBiYWNrLWJ1ZmZlciB3aXRoIHRoZSBjb3JyZWN0IFZUYWJsZS4KCgkqIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9zcGVjLCB3aW5lLmluaToKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIG9wdGlvbiB0byBnZXQgZG91YmxlLWJ1ZmZlcmVkIGRlc2t0b3AKCS0gaW1wbGVtZW50ZWQgd2dsVXNlRm9udEJpdG1hcHNBIGFuZCB3Z2xEZWxldGVDb250ZXh0CgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9kdW1wcmVzLmgsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW4sIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEltcGxlbWVudGVkIGFuaW1hdGVkIGN1cnNvcnMgYW5kIGljb25zIHJlc291cmNlIHR5cGVzLgoJLSBBZGRlZCBwYXJ0aWFsIHN1cHBvcnQgZm9yIGZvbnQgcmVzb3VyY2VzICh1c2VyIHN1cHBsaWVkIGZvbnRkaXIgaXMKCSAgcmVxdWlyZWQpLgoJLSBBbGwgcmVzb3VyY2VzIHdpdGggaW5saW5lIGRhdGEgKGEgbGEgUkNEQVRBKSBub3cgc3VwcG9ydCBsYW5ndWFnZSwKCSAgdmVyc2lvbiBhbmQgY2hhcmFjdGVyaXN0aWNzIGRhdGEuCgktIEltcGxlbWVudGVkIHJlc291cmNlIG5hbWUgZHVwbGljYXRlIGNoZWNrcy4gSXQgaXMgbm93IGFuIGVycm9yIGlmCgkgIHR3byByZXNvdXJjZXMgb2YgdGhlIHNhbWUgdHlwZSBoYXZlIHRoZSBzYW1lIG5hbWUuCgktIEJ1Z2ZpeDogTGFuZ3VhZ2UgcHJvcGFnYXRpb24gd2FzIG5vdCBjb3JyZWN0IHdoZW4gLnJlcyBmaWxlcyB3ZXJlCgkgIGdlbmVyYXRlZC4KCS0gQnVnZml4OiBWRVJTSU9OSU5GTyBub3cgaGFuZGxlcyBtZW1vcnkgb3B0aW9ucy4KCS0gQnVnZml4OiByZXNvdXJjZSBuYW1lcyBhbmQgdGhlIHJlc291cmNlIHR5cGUgbWF5IGJlIGVxdWFsIChlLmcuIE1FTlUKCSAgTUVOVSB7Li4ufSkuIFRoaXMgc3VwcG9ydCB3YXMgbWlzdGFraW5nbHkgZGVsZXRlZCBpbiB0aGUgdXBncmFkZSB0bwoJICB0aGUgYnVpbHRpbiBwcmVwcm9jZXNzb3IuCgkgIFRoZSBzdGFuZGFsb25lIExBTkdVQUdFIHNldHRpbmcgYmVjYW1lIGNvbnRleHQgc2Vuc2l0aXZlIGFzIGEgY29uc2VxdWVuY2UKCSAgb2YgdGhpcy4gTm93IGl0ICptdXN0KiBlbmQgd2l0aCBhIG5ld2xpbmUgKmFmdGVyKiBib3RoIGV4cHJlc3Npb25zIGFuZAoJICBubyBuZXdsaW5lcyBhcmUgYWxsb3dlZCB3aXRoaW4gdGhlIGxpbmUgKHRoZSBzdGF0ZW1lbnQgbXVzdCBmaXQgb24gb25lCgkgIGxpbmUpLiBUaGlzIGlzIG5vIHByYWN0aWNhbCBwcm9ibGVtIHRob3VnaC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNlbmQgcmVndWxhciBtZXNzYWdlcyB0byBzdGRvdXQgc28gdGhhdCB0aGV5IGFyZSBzZXBhcmF0ZSBmcm9tCglwcm9ncmVzcyBtZXNzYWdlcy4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0czoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVncmVzc2lvbiB0ZXN0aW5nIHVzaW5nIENWUy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheToKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFNtYWxsIGZpeGVzL3VwZGF0ZXMKCS0gQWRkIHN1cHBvcnQgZm9yIHRoZSBEUENPTk5FQ1RJT05fRElSRUNUUExBWUxPQkJZIGZsYWcKCgkqIGRvY3VtZW50YXRpb24vd2luZWRiZzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQSBiaXQgb2YgZG9jdW1lbnRhdGlvbiBvbiBuZXcgZGVidWdnaW5nIGZlYXR1cmVzLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEphbWVzIEp1cmFuIDxqdXJhbkBjc2UucHN1LmVkdT4KCVNlYXJjaFBhdGhBIG5lZWRzIHRvIHNldCB0aGUgbGFzdCBlcnJvciB0byBFUlJPUl9GSUxFX05PVF9GT1VORCB3aGVuCglpdCBkb2VzIG5vdCBmaW5kIHRoZSBmaWxlLgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVVzZSBXQVJOKCkgaW5zdGVhZCBvZiBUUkFDRSgpIGluIERlYnVnT3V0cHV0QSgpLgoKCSogbWVtb3J5L2hlYXAuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUhlYXBGcmVlIG9uIGEgTlVMTCBwdHIgc2hvdWxkIHJldHVybiBUUlVFLgoKMjAwMC0wNS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJVXBkYXRlIG5JdGVtV2lkdGggaW4gTElTVFZJRVdfU2V0SXRlbSgpIGlmIExWU19MSVNUIG9yIExWU19TTUFMTElDT04KCW1vZGUgYW5kIGl0ZW0gdGV4dCBpcyB3aWRlciB0aGFuIHRoZSBjdXJyZW50IG5JdGVtV2lkdGguCgoJKiBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+VQoJRml4ZWQgaW5pdGlhbGl6YXRpb24gb2YgSU5TVEFOQ0VEQVRBIGluIEluaXRUYXNrKCkuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVN0Z09wZW5TdG9yYWdlMTY6IGNvcnJlY3QgYXJndW1lbnRzIHRvIHRoZSBDcmVhdGVGaWxlIGNhbGwuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURPU0ZTX0RvR2V0RnVsbFBhdGhOYW1lOiB0ZXJtaW5hdGUgc3RyaW5nIHdlaCBjYWxsZWQgbGlrZSAuXFxmaWxlCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlcGxhY2UgdGhlIGNhbGxzIHRvIG1hbGxvYyBieSBjYWxscyB0byBIZWFwQWxsb2MgYW5kIGZyaWVuZHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlcyB0aGUgbGluZSBvZiBnYXJiYWdlIGF0IHRoZSBib3R0b20gb2YgaW1hZ2VzIGFuZCB0aGUgZmFjdCB0aGF0Cgl0aGUgYnV0dG9ucyBpbiB0aGUgb3BlbiBkaWFsb2cgYm94IHdoZXJlIHRvbyB0YWxsLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGUyY29udi5zcGVjLCBkbGxzL29sZTMyL29sZTJwcm94LnNwZWMsIGRsbHMvb2xlMzIvb2xlMnRoay5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvb2xlMmNvbnYuc3BlYywgaWYxNjMyL29sZTJwcm94LnNwZWMsIGlmMTYzMi9vbGUydGhrLnNwZWMsIGRsbHMvTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTW92ZWQgaWYxNjMyL29sZTJ7Y29udixwcm94LHRoa30uc3BlYyBpbnRvIGRsbHMvb2xlMzIuCgoyMDAwLTA1LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kM2RjYXBzLmgsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kc291bmQuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIHJlbWFpbmluZyBEaXJlY3RYIDNEMyA2JjcgM0QgaW50ZXJmYWNlcy4KCS0gQWRkZWQgZDNkY2Fwcy5oLCBkM2R0eXBlcy5oIGFuZCByZWFycmFuZ2VkIGNvbnRlbnRzIGFjY29yZGluZyB0bwoJICBEaXJlY3RYIDcgaGVhZGVycy4KCS0gRml4ZWQgZHNvdW5kLmggaW5jbHVkZSBsaXN0IChkM2QuaC0+ZDNkdHlwZXMuaCkuCgoJKiBwcm9ncmFtcy9yZWdhcGkvUkVBRE1FOgoJSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJTWlub3IgdXBkYXRlLgoKCSogbWlzYy9wcmludGRydi5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfdGVzdC4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglHZXRSZWxBYnMgZm9yIHNvbWUgcmVhc29uIHRha2VzIDIgcGFyYW1ldGVycywgZXZlbiB0aG91Z2ggdGhlIHNlY29uZAoJb25lIGlzIGlnbm9yZWQgYXQgbGVhc3Qgb24gV2luZG93cyBOVCAzLjUxIGFjY29yZGluZyB0byBNYXJjdXMgTWVpc3NuZXIuCgoJKiBjb250cm9scy9lZGl0LmM6IFNoZXJpIFN0ZWV2ZXMKCVRoZSBlZGl0IGlzIG5vdyBkZXRlY3RlZCBjb3JyZWN0bHkgaWYgdGhlIHBhcmVudCBpcyBhIGNvbWJvIGJveC4gSXQKCXdhc24ndCB3b3JraW5nIHdoZW4gdGhlIGNvbWJvYm94IHdhcyBzdXBlcmNsYXNzZWQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBGcmFuY29pcyBCb2lzdmVydAoJU3lzdGVtIGljb25zIGluIHRoZSBzbWFsbCBjYXB0aW9uIGJhcnMgYXJlIGRpc3BsYXllZCB3aXRoIHRoZSByaWdodCBzaXplLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9ub3JtLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vcGVuZ2wzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNvbnZlcnQgQysrIGNvbW1lbnRzIHRvIHJlZ3VsYXIgQyBjb21tZW50cy4KCgkqIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBJRGlyZWN0RHJhd1N1cmZhY2U6OlNldFBhbGV0dGUgc2V0IHRoZSBzdXJmYWNlJ3MgRElCU2VjdGlvbiBjb2xvcgoJbWFwIHRvIHBvaW50IHRvIHRoZSBJRGlyZWN0RHJhd1BhbGV0dGUncyBvd24gZGVwdGggY29udmVyc2lvbiBjb2xvciBtYXAuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUluaXRpYWxpemUgYW4gaWRlbnRpdHkgbWFwcGluZyBpbiBDcmVhdGVQYWxldHRlIGlmIG5vIGRlcHRoIGNvbnZlcnNpb24KCWlzIG5lY2Vzc2FyeS4gQWxzbyBmaXhlZCBhIHdhcm5pbmcuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBYMTFEUlZfRElCX01hcENvbG9yIG1hcCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjb2xvciBpbmRleCBpZiB0aGUKCVhJbWFnZSBwaXhlbCdzIHBoeXNpY2FsIGNvbG9yIGlzIHN0aWxsIHRoZSBzYW1lLgoKMjAwMC0wNS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJVXNlIHRoZSBjb3JyZWN0IGRpc3BsYXkgZm9yIGNhY2hlZCBtZXRyaWNzIGZpbGUgbmFtZS4KCVN0b3JlIG1ldHJpY3MgaW4gc3BlY2lmaWVkIGNvbmZpZyBkaXIuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL29wdGlvbnMuaCwgd2luZS5pbmk6CglNYWtlIHN1cmUgYWxsIFdpbmUgcHJvY2Vzc2VzIHNoYXJlIHRoZSBzYW1lIFggZGlzcGxheS4KCUluaGVyaXQgLS1tYW5hZ2VkIG9wdGlvbiBhY3Jvc3MgcHJvY2Vzc2VzLgoJQWRkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgZGlzcGxheSBhbmQgbWFuYWdlZCBtb2RlIGluIGNvbmZpZyBmaWxlLgoKCSogZGxscy9kZHJhdy9jb252ZXJ0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIHVuc2lnbmVkIGludCBpbnN0ZWFkIG9mIHVuc2lnbmVkIHNob3J0IGluIERpcmVjdERyYXcKCWRlcHRoLWNvbnZlcnNpb24gY29sb3IgbWFwLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGNhbGxzIHRvIFNldEZvY3VzIHdoZW4gdGhleSBhcmUgdW5uZWNlc3NhcnkuCgoyMDAwLTA1LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRGF2aWQgQmxhY2sgPGRibGFja0BidGludGVybmV0LmNvbT4KCUltcGxlbWVudGVkIFRWTV9FRElUTEFCRUxBLCBwbHVzIHNvbWUgaW1wcm92ZW1lbnRzIHRvIEVuZExhYmVsRWRpdE5vdy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCU1vcmUgdmVyYm9zZSBlcnJvcnMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIGJvcmRlcnMgb2Ygd2luZG93cyB3aGlsZSBkcmFnZ2luZyBvciBzaXppbmcgdG8gbWF0Y2gKCVRXRUFLX1dpbmVMb29rIHNldHRpbmcuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjaW5jbHVkZSA8c3lzL3R5cGVzLmg+IGJlZm9yZSA8c3lzL21tYW4uaD4uCgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2RkZW1sLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9kZGVtbC5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvZGRlbWwuc3BlYywgaWYxNjMyL29sZTJubHMuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNb3ZlZCBEREVNTCBpbnRvIGRsbHMvdXNlci4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzdXBwb3J0IGZvciByZWdpc3RyeSB2YWx1ZXMgbGFyZ2VyIHRoYW4gdGhlIHNlcnZlciBidWZmZXIuCglXaGVuIGxvYWRpbmcgYSByZWdpc3RyeSBmaWxlLCBhdXRvbWF0aWNhbGx5IGRldGVybWluZSBvdmVybGFwIGJldHdlZW4KCWtleSBuYW1lIGFuZCBmaWxlIGNvbnRlbnRzIGJhc2VkIG9uIHRoZSBmaXJzdCBrZXkgbmFtZS4KCVJlbW92ZWQgdjEgc2F2aW5nIGNvZGUuCglTYXZlIFVTRVJcLkRlZmF1bHQgc2VwYXJhdGVseSBpbnRvIH4vLndpbmUvdXNlcmRlZi5yZWcuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wcm92ZWQgRElCU2VjdGlvbiBzdXBwb3J0IGZvciBJRGlyZWN0RHJhd1N1cmZhY2U6OkdldERDLgoKCSogZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc2V0IGRlYnVnIG1lc3NhZ2VzIGFmdGVyIGEgVFJBQ0VfT04gdGVzdAoJLSBwcmV2ZW50IGNyYXNoIHdoZW4gbWFraW5nIHRoZSBOVUxMIGNvbnRleHQgY3VycmVudAoKCSogY29udHJvbHMvbWVudS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVdoZW4gbmV3IG1lbnUgSWQgaXMgbm90IGZvdW5kIG9yIGluZGV4ID4gbml0ZW1zLCBpbnNlcnQgdGhlIG5ldyBtZW51CglhdCBlbmQgb2YgY3VycmVudCBtZW51LgoKMjAwMC0wNS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGluY2x1ZGUvZGRyYXcuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIGFiaWxpdHkgdG8gY3JlYXRlIDNEMyBpbnRlcmZhY2VzIGZvciBYbGliCgktIENoYW5nZWQgRERfT0sgdG8gRDNEX09LIGluIHNvbWUgcGxhY2VzIGZvciBjb25zaXN0ZW5jeQoJLSBDbGVhbmVkIHVwIHNvbWUgY29tcGlsZXIgd2FybmluZ3MgcHJlc2VudCB3aXRob3V0IERHQTIKCS0gQ2hhbmdlZCBvcmRlciBmb3IgRGlyZWN0RHJhd0VudW1lcmF0ZUV4QSB0byBlbnVtZXJhdGUgYXQgbGVhc3QKCSAgd2hhdCBhYmlsaXRpZXMgYXJlIGtub3duIHJhdGhlciB0aGFuIGJhaWxpbmcgb24gdW5zdXBwb3J0ZWQgZmxhZ3MKCS0gQWRkZWQgRGlyZWN0RHJhd0NyZWF0ZUV4IHN0dWIKCjIwMDAtMDUtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJRGlzdGluZ3Vpc2ggUkFESU9DSEVDSyBzdHlsZSBtZW51IGl0ZW1zIGZyb20gc3RhbmRhcmQgY2hlY2ttYXJrIG1lbnUKCWl0ZW1zLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJTGlrZSB0aGUgQVVUT1JBRElPQlVUVE9OLCB0aGUgcGFyZW50IG9mIGEgUkFESU9CVVRUT04gc3R5bGUgYnV0dG9uCglzaG91bGQgYmUgc2VudCBhIEJOX0NMSUNLRUQgd2hlbiBpdCByZWNlaXZlcyB0aGUgZm9jdXMuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldEZ1bGxQYXRobmFtZTogYWRkIG1pc3NpbmcgdGVybWluYXRpb24gdG8gdGhlIHN0cmluZy4KCgkqIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBieXRlIG9yZGVyIG9uIFNvbGFyaXMgYW5kIEZyZWVCU0QuCgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbmVfZ2wuaCwgaW5jbHVkZS94MTFkcnYuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9leHQsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfbm9ybSwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuaCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL29wZW5nbDMyL3dnbC5oLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIE9wZW5HTC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYWJzb2x1dGUgcGF0aCB0byBwaWRsIGdlbmVyYXRpb24uCgoyMDAwLTA1LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglGaXhlZCBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2ltYWdlaGxwL2ludGVncml0eS5jLCBkbGxzL2ltYWdlaGxwL3N5bWJvbC5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsIHdpbmRvd3MvZHJpdmVyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgZGVidWcgbWVzc2FnZXMuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGluY2x1ZGUvcmljaGVkaXQuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvb2xlMmRpc3AuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2ltYWdlaGxwLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JpY2hlZDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBDaGVjayBmb3IgbWlzc2luZyBtb2R1bGVzIGluIG1vZHVsZXMuZGF0LgoJLSBOZXcgb3B0aW9ucyAtLWRlYnVnLW1lc3NhZ2VzIGZvciBkZWJ1ZyBtZXNzYWdlIGNoZWNraW5nICh0dXJuZWQgb2ZmCgkgIGJ5IGRlZmF1bHQpCgktIERvIG5vdCBkaXNjYXJkIHRoZSBhcmd1bWVudCBuYW1lICh1c2UgaW4gZGVidWcgbWVzc2FnZSBjaGVja2luZykKCS0gSW1wcm92ZWQgcGFyc2luZwoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglGaXhlZCBhc20oKSBjb25zdHJhaW50cy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkICVwIGluIHByaW50ZiAobm93IHVzaW5nIHdzcHJpbnRmIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBpdCkuCglBZGRlZCBUaHJlYWRJZCBhbmQgUHJvY2Vzc0lkIGludGVybmFsIHZhcnMuCglBbGxvdyBhdCBzdGFydHVwIHRvIHBpY2sgdXAgYSBwcm9jZXNzIHRvIGRlYnVnLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGRpdmlzaW9uIGJ5IHplcm8uCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgcXVpcmtzIChyYW5nZSBpcyAzMiBiaXQsIHBhZ2UgdXAvZG4gbWlzbWF0Y2ggb24gSFogdHJhY2tiYXJzKS4KCgkqIHdpbmRvd3Mvc2Nyb2xsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2Nyb2xsIG9mZi1zY3JlZW4gY29udHJvbHMgd2hlbiBzY3JvbGwgcmVjdGFuZ2xlIGlzIE5VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOgoJS2VuIFRob21hc2VzIDxrZW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdGFiIGNvbnRyb2wgc3R5bGUgVENTX0hPVFRSQUNLICh0YWJzIGFyZSBoaWdobGlnaHRlZCBvbgoJbW91c2Utb3ZlcikuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0aGUgYmFja2dyb3VuZCBmcm9tIHRoZSBuZXcgaW1hZ2Ugd2hlbiBpdCBpcyBiZWluZyByZXBsYWNlZAoJd2l0aCBhIFJlcGxhY2VJbWFnZS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Rhc2suYzoKCUJlcm5kIEhlcmQgPGluZm9AaGVyZHNvZnQuY29tPgoJTWFrZSBzdXJlIGhJbnN0YW5jZSBpcyBhIHByb3BlciBnbG9iYWwgaGFuZGxlIGFuZCBub3QgYSBzZWxlY3RvcgoJdmFsdWUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogSmVhbi1DbGF1ZGUgQmF0aXN0YQoJUHJpbnREaWFsb2cgbm93IGNyZWF0ZXMgYSBEQyB3aGVuIHJlY2VpdmluZyBhIFBEX1JFVFVSTkRDIGZsYWcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgdGhlIGRyYXdpbmcgY29kZSBhZnRlciBhIGxhYmVsIHVwZGF0ZS4gVGhlcmUgd2VyZSBwcm9ibGVtcyBpZgoJdGhlIG5ldyBsYWJlbCBpcyBzaG9ydGVyIHRoYXQgdGhlIG9sZCBsYWJlbCBmcmFnbWVudHMgb2YgdGhlIG9sZCBsYWJlbAoJd2VyZSBsZWZ0IGRyYXduLgoKCSogd2luZG93cy93aW4uYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNsZWFyIG1lbnUgaGFuZGxlIGFmdGVyIGRlc3Ryb3lpbmcgbWVudS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSZXZhbGlkYXRlIG1lbnUgaGFuZGxlIGluIG10LmhUb3BNZW51IGFmdGVyIERpc3BhdGNoTWVzc2FnZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEJlcm5kIEhlcmQgPGluZm9AaGVyZHNvZnQuY29tPgoJUGFzcyBDVExEQVRBIGFzIFNFR1BUUiBmb3IgMTYtYml0IHByb2dyYW1zLgoKCSogZGxscy92ZXJzaW9uL3ZlcjE2LmM6CglBbGV4YW5kZXIgRnJpbmsgPEFsZXhhbmRlci5Gcmlua0BVbmktTWFpbnouREU+CglQcmV2ZW50IHBvc3NpYmxlIE5VTEwgcG9pbnRlciBhY2Nlc3MuCgoyMDAwLTA1LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBXaW5lIHdhcyBwYXNzaW5nIHRoZSB3cm9uZyBod25kIGFzIHRoZSBvd25lciB3aGVuIHByb2Nlc3Npbmcgb3duZXIKCSAgZHJhd24gbWVudWJhcnMuCgktIFdoZW4gZG9pbmcgTUVOVV9DYWxjSXRlbVNpemUgZm9yIHRoZSBtZW51IGJhciB3ZSB3ZXJlIG5vdCBwcm9wZXJseQoJICBwYWRkaW5nIHRoZSByZXR1cm5lZCByZWN0LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IHRoZSB1c2VyIHRvIGNhbmNlbCBsYWJlbCBlZGl0aW5nIHdpdGggZXNjIGFuZCBjb25maXJtIHdpdGggcmV0dXJuLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUtlbiBUaG9tYXNlcyA8a2VuQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc3RvcmUgYWNjaWRlbnRhbGx5IHVuZG9uZSBjaGFuZ2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2luZSB3YXMgbm90IHByb3Blcmx5IHJlcG9ydGluZyBiYWNrIHRoZSBlZGl0ZWQgbGFiZWwgdG8gdGhlCgkgIGFwcGxpY2F0aW9uIGluIGEgdHJlZXZpZXcgd2hlbiB0aGUgbGFiZWwgaXMgYSBjYWxsYmFjay4KCS0gQmVjYXVzZSB3aW5kb3dzIGFwcGxpY2F0aW9ucyBhc3N1bWUgdGhleSBnZXQgYSBuZXcgZWRpdCBjb250cm9sCgkgIGV2ZXJ5IHRpbWUgdGhleSBvZnRlbiBzdWJjbGFzcyB0aGF0IGVkaXQgYm94IHdpbGx5LW5pbGx5IGFuZCBkbyBub3QKCSAgY2xlYW4gdXAuIFNvIGl0IGlzIG5lY2Vzc2FyeSB0byBhY3R1YWxseSBnaXZlIHRoZW0gYSBuZXcgZWRpdCBjb250cm9sCgkgIGVhY2ggdGltZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2xlYW5lZCB1cCBzb21lIG9mIHRoZSBkcmF3aW5nIGNvZGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGgKCSAgYXZvaWRpbmcgdHJ5aW5nIHRvIGRyYXcgaW52YWxpZCBiaXRtYXBzLgoJLSBBdm9pZCBkaXJlY3RseSBjYWxsaW5nIGRyYXdpbmcgZnVuY3Rpb25zIGluc3RlYWQgaW52YWxpZGF0aW5nIHJlY3RzCgkgIGFuZCByZWx5aW5nIG9uIFdNX1BBSU5ULgoJLSBGb3IgdGhlIGRyb3Bkb3duIGV2ZW50IGNoZWNrIHRoZSBidXR0b24gc3R5bGUgYXMgb3Bwb3NlZCB0byB0aGUKCSAgdG9vbGJhciBzdHlsZS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgaW50ZXJuYWwgYnVmZmVycyBzaXplIG11bHRpcGxlIG9mIDQuCgoJKiB3aW5kb3dzL21kaS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVZlcmlmeSB0aGUgbWVudSBoYW5kbGUgaXMgbm9uLXplcm8gcHJpb3IgdG8gdXNlLgoKCSogY29udHJvbHMvbWVudS5jOiBLZW4gVGhvbWFzZXMgPGtlbkBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0byBkaXNwbGF5IHBvcHVwLW1lbnUgYXJyb3cgb24gb3duZXItZHJhd24gcG9wdXAgbWVudXMuCglGaXhlZCBwb3NpdGlvbmluZyBvZiBzdWJtZW51cyByZWxhdGl2ZSB0byBwYXJlbnQgbWVudXMuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy93aW5tbS90aW1lLmMsIGdyYXBoaWNzL3ZnYS5jLCBtaXNjL3N5c3RlbS5jLCBzY2hlZHVsZXIvc2VydmljZXMuYywgd2luZG93cy90aW1lci5jOgoJU3BlY2lmeSB0aGUgc2VydmljZSB0aHJlYWQgdGltZXJzIGluIG1zIGluc3RlYWQgb2YgdXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9tYWluLmM6CglSZXNlcnZlIHNwYWNlIGZvciB0aGUgUEUgaGVhZGVyIGF0IHRoZSBzdGFydCBvZiB0aGUgLnNvIGZpbGUuCglTdG9yZSB0aGUgZXhwb3J0IHRhYmxlIGluc2lkZSB0aGUgZGF0YSBzZWN0aW9uIHNvIHRoYXQgc2VjdGlvbnMgY2FuIGJlCglwcm9wZXJseSBhbGlnbmVkLgoJQnVpbGQgdGhlIHJlbGF5IGZ1bmN0aW9uIHRhYmxlIGRpcmVjdGx5IGluIHRoZSAuc3BlYy5jIGZpbGUuCglNb3ZlZCByZWxheSBkZWJ1Z2dpbmcgZnVuY3Rpb25zIHRvIHJlbGF5Mzg2LmMuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUHJvdGVjdCBhZ2FpbnN0IHVzZSBvZiBjb21jdGwzMiBwcml2YXRlIGNvbnRyb2wgbWVtb3J5IGFmdGVyIGl0IGhhcwoJYmVlbiBmcmVlZC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU29tZSBwcm9ncmFtcyBzd2l0Y2ggdGhlaXIgc3RhdHVzIGJhciBiYWNrIGFuZCBmb3J0aCBmcm9tIHNpbXBsZSBtb2RlCgl3aGlsZSBydW5uaW5nLiBUaGlzIGZpeCBjb3JyZWN0cyBkcmF3aW5nIGFuZCB0ZXh0IHNldHRpbmcgcHJvYmxlbXMgdGhhdAoJcmVzdWx0IGZyb20gdGhpcyBiZWhhdmlvci4KCjIwMDAtMDUtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvaGVhcC5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglGaXhlZCBIZWFwQWxsb2MoSEVBUF9aRVJPX01FTU9SWSkgdG8gY2xlYXIgdGhlIHdob2xlIGFsbG9jYXRlZCBibG9jay4KCVZhcmlvdXMgb3B0aW1pemF0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIFdBVkVIRFIgbm90aWZpY2F0aW9uIGhldXJpc3RpYy4KCUFkZGVkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIGxvb3BzIGluIFdBVkVIRFJzLgoJRml4ZWQgaXNzdWVzIHdoZW4gbWl4aW5nIG9wZW4gYW5kIGdldENhcHMgY2FsbHMuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBCdWdmaXg6IENvcnJlY3RlZCBhIFNFR1YgaW4gdGhlIHJhd2RhdGEgaGFuZGxpbmcuIE1pc3Rha2luZ2x5IHRvb2sgdGhlCgkgIGFkZHJlc3Mgb2YgYSBwb2ludGVyIGluc3RlYWQgb2YgaXRzIHZhbHVlLiBUaGlzIHByb2JhYmx5IHNsaXBwZWQgaW4KCSAgZHVyaW5nIHRoZSBtZXJnZSBvZiBteSB0cmVlIGludG8gdGhlIHdpbmV0cmVlLgoJICBMZXNzb24gbGVhcm5lZDogYWx3YXlzIGRvdWJsZSBjaGVjay4KCS0gVmVyaWZpZWQgbW9zdCByZXNvdXJjZXMgc28gdGhhdCB3aW4xNiBjb21waWxlIGFsc28gZ2VuZXJhdGVzIGNvcnJlY3QKCSAgb3V0cHV0IGZvciByZXZlcnNlZCBlbmRpYW4uCgktIEltcGxlbWVudGVkIGJ5dGUtb3JkZXJpbmcgZm9yIHJlc291cmNlcy4gQWxsIHJlc291cmNlcyBjYW4gYmUgZm9yY2VkCgkgIHRvIGJlIGxpdHRsZS0sIGJpZy0gb3IgbmF0aXZlIGVuZGlhbiB3aXRoIGNvbW1hbmQtbGluZSBvcHRpb24gLUIuCgktIFJlYWRpbmcgcmVzb3VyY2VzIGZyb20gLnJlcy1maWxlcyBhcmUgb25seSBhY2NlcHRlZCBpbiBuYXRpdmUgYnl0ZS0KCSAgb3JkZXJpbmcgc28gdGhhdCBubyBhZGRpdGlvbmFsIHNlbWFudGljIGFuYWx5c2lzIGlzIHJlcXVpcmVkLgoJLSBSZXNvdXJjZSBkaXJlY3RvcnkgaXMgc3RpbGwgd3JpdHRlbiBpbiBuYXRpdmUtb25seSBmb3JtYXQsIGluY2x1ZGluZwoJICB0aGUgc3RyaW5ncy4KCS0gV3JjIGlzIG5vdyBpbnN0YWxsZWQgdGhyb3VnaCB0aGUgbWFrZWZpbGUgd2l0aCAnbWFrZSBpbnN0YWxsJyBhbmQgYWxzbwoJICB1bmluc3RhbGxlZCB3aXRoICdtYWtlIHVuaW5zdGFsbCcuCgktIFdyb3RlIGEgbWFuLXBhZ2UgZm9yIGJldHRlciByZWZlcmVuY2UuIFRoZSBtYW5wYWdlIGFsc28gZ2V0cyBpbnN0YWxsZWQKCSAgYW5kIHVuaW5zdGFsbGVkLgoJLSBDbGVhbmVkIHVwIHRoZSBuYW1lc3BhY2UgYSBiaXQgYnkgbW9yZSBhZ3Jlc3NpdmUgdXNlIG9mIHN0YXRpYy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIGFiaWxpdHkgdG8gdXNlIG11bHRpbGluZSB0YWIgY29udHJvbHMgdG8gd2luZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglOdW1iZXIgb2Ygc3VyZmFjZSBMb2NrL1VubG9ja3MgbXVzdCBOT1QgbWF0Y2gsIHNvIGRvIE5PVCB1c2UgaXQgZm9yCglyZWZlcmVuY2UgY291bnRpbmcuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVcGRhdGUgZm9yIG5ldyBXaW5lIGZlYXR1cmVzOyB1c2UgdHR5ZHJ2IGluc3RlYWQgb2YgeDExZHJ2IHdoZW4KCXJ1bm5pbmcgcmVnYXBpLCBhbmQgc2V0IGNvcnJlY3Qgd2luZWRiZyBwYXRoIGluIHRoZSByZWdpc3RyeS4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQganVtcF9hbGlhcyBmb3Igbm9uLVBJQywgYW5kIGRpc2FibGVkIGl0IGZvciBQSUMsIHNpbmNlIGl0Cglkb2Vzbid0IHdvcmsgZm9yIFBJQyByaWdodCBub3cuIFRoaXMgZml4ZXMgY3VycmVudCBjcmFzaGluZyBzaWdhY3Rpb24KCWNhbGxzLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHggL3MgY29tbWFuZC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc29tZSByZWcgdGVtcCBmaWxlIGNsdXR0ZXIgY2hlY2sgKG1vcmUgdGhhbiAxMDAgdGVtcCBmaWxlcyBpbgoJfi8ud2luZSkuCgoyMDAwLTA1LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXRJbWFnZUJpdHNfODogYWRkZWQgLT4xNSBjb252ZXJzaW9uIGluIG9wdGltaXplZCBhc3NlbWJsZXIuCgoJKiBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L2Fuc2lfZ2VuLmgsIGRsbHMvcmljaGVkaXQvYW5zaV9zeW0uaCwgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5jLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmgsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuaCwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyX21haW4uYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JpY2hlZGl0L3J0Zi5oLCBkbGxzL3JpY2hlZGl0L3J0ZjJ0ZXh0LmgsIGRsbHMvcmljaGVkaXQvc3RkY2hhcm5hbWVzLmgsIGRsbHMvcmljaGVkaXQvdGV4dC13cml0ZXIuYywgZGxscy9yaWNoZWRpdC90ZXh0X21hcC5oLCBpbmNsdWRlL3JpY2hlZGl0Lmg6CglKZWFuLUNsYXVkZSBCYXRpc3RhCglXcmFwcyBzb21lIFJpY2hFZGl0IGNvbnRyb2wgZnVuY3Rpb25hbGl0eSBvbiBhbiBFZGl0IGNvbnRyb2wuIEl0IHVzZXMKCWEgZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBhbiBSVEYgcGFyc2VyIHdyaXR0ZW4gYnkgUGF1bCBEdUJvaXMKCWh0dHA6Ly93d3cucHJpbWF0ZS53aXNjLmVkdS9zb2Z0d2FyZS9SVEYvIHdoaWNoIEkgbW9kaWZpZWQgYSBiaXQgdG8KCXdvcmsgd2l0aCB0aGUgY29udHJvbC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG8gbm90IHNlbmQgV01fU0laSU5HIHRvIDE2LWJpdCB3aW5kb3dzLgoKCSogZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJQ2xlYW5lZCB1cCBsb2NhbCBoZWFwIGluaXRpYWxpc2F0aW9uLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL29sZTMyL29sZTIuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHdpbmRvd3MvZHJpdmVyLmM6CglNb3ZlZCBMb2FkL0ZyZWVMaWJyYXJ5MTYgZGVmaW5pdGlvbiB0byB3aW5iYXNlMTYuaC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL29sZTJubHMuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBvbGUvb2xlMm5scy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVNlcGFyYXRlIE9MRTJOTFMgb3V0IG9mIEtFUk5FTC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQ2hlY2sgZm9yIG1pc3NpbmcgbW9kdWxlcyBpbiBtb2R1bGVzLmRhdC4KCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIChNYWNhZGFtaWFuL0NvcmVsKQoJVG9wLWRvd24gaW1hZ2VzIGhhdmUgYSBuZWdhdGl2ZSBiaUhlaWdodCwgdGhlIHNjYW5saW5lcyBvZiB0aGVzZXMKCWltYWdlcyB3ZXJlIGludmVydGVkIGluIFgxMURSVl9ESUJfR2V0SW1hZ2VCaXRzX3h4LiBUbyBwcmV2ZW50IHRoaXMgSQoJc2ltcGx5IGNoYW5nZWQgdGhlIHNpZ24gb2YgbGluZXMsIHRoZSBzY2FubGluZXMgd2VyZSBjb3JyZWN0bHkgaGFuZGxlZAoJYWZ0ZXJ3YXJkcwoKCSogZGVidWdnZXIvc3RhYnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT2xkIHZlcnNpb25zIG9mIGdsaWJjIG1pZ2h0IG5vdCBoYXZlIFNUTl9VTkRFRiBkZWZpbmVkLgoKCSogZmlsZXMvZmlsZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJldmVydCB0aGUgdGVzdCBmb3IgVmlydHVhbF9IYW5kbGVGYXVsdCBpbiBSZWFkRmlsZS9Xcml0ZUZpbGUuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgdGhlIGl0ZW1JRCBtZW1iZXIgb2YgdGhlIERSQVdJVEVNU1RSVUNUIHRvIHRoZSBudW1iZXIgb2YgdGhlCglzdGF0dXMgcGFydCBwYWludGVkLgoKCSogd2luZG93cy9tZGkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBbHdheXMgY2FsbHMgU2V0TWVudSBpbiBNRElTZXRNZW51LgoKCSogZGxscy90YXBpMzIvbGluZS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVNtYWxsIGRlYnVnIGNoYW5uZWwgY2xlYW51cC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBzY3JvbGxpbmcgYnVnLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUltcGxlbWVudGVkIExpc3RWaWV3X1NldEhvdmVyVGltZSgpLCBMaXN0Vmlld19HZXRIb3ZlclRpbWUoKSwgaW5pdGlhbAoJc3VwcG9ydCBmb3IgdGhlIExWU19FWF9UUkFDS1NFTEVDVCBmbGFnLiAgQWRkZWQgY29kZSB0byBkZWxldGUgaXRlbXMKCWluIExJU1RWSUVXX1NldEl0ZW1Db3VudCgpLgoKMjAwMC0wNS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFdNX1NJWklORyBtZXNzYWdlIHN1cHBvcnQuCgoJKiBncmFwaGljcy9wYXRoLmM6IFJvYiBGYXJudW0gPHJvYmZAdHdpbnV4LmNvbT4KCVJlbW92ZWQgd2FybmluZ3MgZnJvbSBmcmVlaW5nIHBhdGggaW4gRGVsZXRlREMuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgYnVnIHdpdGggdGhlIHByb2Nlc3Npbmcgb2YgSGl0VGVzdC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgXkMsIF5WIGFuZCBeWCBpbiBhbiBlZGl0IGNvbnRyb2wgcHJvcGVybHkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHJpcCB0aGUgJCQkUFJPVE8uSElWIGJpdCBmcm9tIHdpbjJrIFNZU1RFTSBhbmQgU09GVFdBUkUgaGl2ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBEQyBsZWFrLgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUlmIHdlIGRvIG5vdCBmaW5kIGEgcmVzb3VyY2UgZm9yIGJvdGggKHByaW1hcnkgbGFuZ3xzdWIgbGFuZyksIHdlIHRyeQoJanVzdCAocHJpbWFyeSBsYW5nKSBiZWZvcmUgdXNpbmcgdGhlIGRlZmF1bHQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCVdvcmtlZCBhcm91bmQgc29tZSB0b29sdGlwcyBoaWRlIHByb2JsZW1zIGJ5IGNoZWNraW5nIHRoZSBjdXJyZW50IHRvb2x0aXAuCgoJKiBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9yczoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgY29uZmlndXJhdGlvbiBoaW50IGZvciB0aGUgQ0QtUk9NICJ1bmhpZGUiIG9wdGlvbi4KCgkqIG9sZS9vbGUybmxzLmM6CglIZW5uaW5nIEhvZmZtYW5uIChvZiBNYWNhZGFtaWFuIGZvciBDb3JlbCkKCUltcGxlbWVudGVkIFNldExvY2FsZUluZm8oKS4gSXQgcmVxdWlyZWQgYSBjaGFuZ2UgdG8gR2V0TG9jYWxlSW5mbygpCglhcyB3ZWxsLCBiZWNhdXNlIEdldExvY2FsZUluZm8oKSBoYXMgdG8gZ2V0IGFueSB2YWx1ZXMgc2F2ZWQgYnkKCVNldExvY2FsZUluZm8oKSBpbiB0aGUgcmVnaXN0cnkuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVmZmVyIG92ZXJmbG93cy4KCU1hZGUgc3RhYiBwYXJzaW5nIG1vcmUgcm9idXN0IChub3cgaWdub3JlcyBDKysgc3RhYnMpLgoJRGlzcGxheSBjb3JyZWN0IGJhY2t0cmFjZSBhdCBmaXJzdCB3aGVuIGludm9rZWQgb24gdW5oYW5kbGVkIGV4Y2VwdGlvbi4KCUxvYWRzIHN0YWJzIGZyb20gLnNvIGZpbGVzIHdoZW4gdGhvc2UgYXJlIGxvYWRlZC4KCjIwMDAtMDUtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oOiBHZW5lcmF0ZWQgYWdhaW4uCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9wZV9pbWFnZS5jOgoJUEVfTG9hZEltYWdlOiByZW1vdmVkIHZlcnNpb24gcGFyYW1ldGVyLCBzZXQgbGFzdCBlcnJvciBjb3JyZWN0bHkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmg6CglTdG9yZSBwcm9jZXNzIGZpbGUgbmFtZSBpbiBzdGFydHVwIGluZm8uCglGaXhlZCBleGVfZmlsZSBoYW5kbGluZy4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IEZpeGVkIHR5cG8uCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC8uY3ZzaWdub3JlLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvcmljaGVkaXQvcmljaGVkMzJfbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzIGZvciByaWNoZWQzMi5kbGwuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNhbGwgWE9wZW5JTSBvbiB0aGUgbGFyZ2Ugc3RhY2suCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCUJhbmcgSnVuLVlvdW5nIDxiYW5nanlAZHJlYW13aXouY29tPgoJRnJlZUJTRCAzLjQgY29tcGlsZSBmaXguCgoJKiBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzZXJ2ZXIvY29uc29sZS5jLCB3aW4zMi9jb25zb2xlLmM6CglGaXhlZCBDT09SRCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KCUZpeGVkIEdldExhcmdlc3RDb25zb2xlV2luZG93U2l6ZSB0byBub3QgcmV0dXJuIGEgc3RydWN0dXJlIHdoZW4KCWNhbGxlZCBmcm9tIHRoZSBXaW5kb3cgYmluYXJ5LgoKCSogc2VydmVyL29iamVjdC5jOiBTbWFsbCBvcHRpbWl6YXRpb24uCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6IEZpeGVkIGRlZmF1bHQgdGhyZWFkIHN0YWNrIHNpemUuCgoJKiBvYmplY3RzL3RleHQuYzogRml4ZWQgRHJhd1RleHRXIGxlbmd0aCBoYW5kbGluZy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlbW92ZSB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlcmUgaXMgbm8gc291cmNlIHN1cmZhY2UuCgoJKiBpbmNsdWRlL29sZWF1dG8uaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBEb3NEYXRlVGltZVRvVmFyaWFudFRpbWUgcHJvdG90eXBlLgoKCSogZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1hcCBTdHJDaHJBIHRvIHN0cmNoci4gIEZpeCBTdHJDaHJXIGFyZyBsaXN0LgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBIV05EX01FU1NBR0UuCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFsbG93IElTZXF1ZW50aWFsU3RyZWFtX1dyaXRlIHRvIHdvcmsgaWYgYWNjZXNzIG1vZGUgaXMgU1RHTV9SRUFEV1JJVEUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJTW1hcCBkb2VzIG5vdCBmYWlsIG9uIHplcm8tbGVuZ3RoIGZpbGVzLgoKMjAwMC0wNS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglVc2UgZXhjZXB0aW9uIGhhbmRsaW5nIHRvIGltcGxlbWVudCB0aGUgSXNCYWQqIGZ1bmN0aW9ucy4KCVJlbW92ZWQgL3Byb2Mvc2VsZi9tYXBzIHBhcnNpbmcgYXMgaXQgaXMgbm90IHZlcnkgdXNlZnVsIHdpdGggLnNvIGxpYnMuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVNldHVwIHRoZSBpbml0aWFsIHRocmVhZCAlZnMgZnJvbSBhIGNvbnN0cnVjdG9yLgoKCSogZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcveDExLmMsIGluY2x1ZGUvd2lubnQuaDoKCUFkZGVkIERFQ0xfR0xPQkFMX0NPTlNUUlVDVE9SIG1hY3JvLgoKCSogcmVzb3VyY2VzL3VzZXIzMi5yYywgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy8uY3ZzaWdub3JlLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3BweS55LCB0b29scy93cmMvcHJlcHJvYy5jLCB0b29scy93cmMvcHJlcHJvYy5oLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JpdGVyZXMuYywgZGxscy9jb21tZGxnL3JzcmMucmMsIGRsbHMvZGlzcGxheS9kaXNwLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gSW1wbGVtZW50ZWQgYSBuZXcgcHJlcHJvY2Vzc29yIHRoYXQgaXMgKG5lYXJseSkgQU5TSS1DIGNvbXBsaWFudC4gVGhlCgkgIG9sZCBwYXJzZXIgaGFzIGJlZW4gc3RyaXBwZWQgZnJvbSB0aGUgb2xkIHByZXByb2Nlc3Nvci1jb2RlIHdoaWNoCgkgIGNsZWFuZWQgdXAgYm90aCByZXNvdXJjZS1zY2FubmVyIGFuZCAtcGFyc2VyLgoJLSBTdGFuZGFyZCBkZWZpbmVzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIChzZWUgUkVBRE1FLndyYykKCS0gQm90aCBwcmVwcm9jZXNzb3ItIGFuZCByZXNvdXJjZS1zY2FubmVyIGhhdmUgYmVlbiBvcHRpbWl6ZWQgc2xpZ2h0bHkKCSAgc28gdGhhdCBubyBiYWNraW5nIHVwIGlzIHJlcXVpcmVkIChvbmUgY2hhciBsb29rYWhlYWQgaXMgZW5vdWdoKS4KCS0gRmlsZW5hbWUtc2Nhbm5pbmcgaGFzIGJlZW4gY2xlYW5lZCB1cCwgdGhvdWdoIG5vdCBwZXJmZWN0IHlldC4KCS0gVXNlci10eXBlIHJlc291cmNlcyBhcmUgY29tcGF0aWJsZSBub3cuCgktIExpbmUtY29udGludWF0aW9uIGluIHN0cmluZ3MgaXMgY29ycmVjdGVkIHNvIHRoYXQgaXQgZG9lcyBub3QKCSAgaW50cm9kdWNlIGEgbmV3bGluZSBpbiB0aGUgb3V0cHV0LgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHdpbmRvd3MvcXVldWUuYywgbG9hZGVyL21vZHVsZS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tYWluLmM6CglSZXdyb3RlIFVuaXggcHJvY2VzcyBsYXVuY2hpbmcgdG8gYWxsb3cgcGFzc2luZyBzdGFydHVwIGluZm9ybWF0aW9uIHRvCglXaW5lbGliIGFwcHMuIEltcHJvdmVkIGhhbmRsaW5nIG9mIGV4ZWN2ZSgpIGZhaWx1cmVzLgoKCSogZmlsZXMvZmlsZS5jOiBBZGRlZCBFTk9FWEVDIGVycm9yIGNvZGUuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBBZGRlZCBhdGZvcmsgc3VwcG9ydC4KCgkqIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RnYTJfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLCBjb25maWd1cmU6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgREdBMiBkcml2ZXIgdG8gRGlyZWN0RHJhdy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNPTURMRzMyX0RsbEVudHJ5UG9pbnQsQ09NRExHMzJfU2V0Q29tbURsZ0V4dGVuZGVkRXJyb3I6IGRlbGF5CglhbGxvY2F0aW9uIG9mIFRscyBmb3IgQ29tbURsZ0V4dGVuZGVkRXJyb3IgdW50aWwgaXQgaXMgbmVlZGVkLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzZWd2IHdoZW4gZGVidWdnZXIgcmVnaXN0cnkga2V5IGRvZXNuJ3QgZXhpc3QuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVVzZSA8c3RkbGliLmg+IGluc3RlYWQgb2YgdGhlIGRlcHJlY2F0ZWQgYW5kIG5vbi1wb3J0YWJsZSA8bWFsbG9jLmg+LgoKMjAwMC0wNC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAwMDQzMC4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglYMTFEUlZfU2V0Rm9jdXM6IHJlYWxseSBkb24ndCBtZXNzIHdpdGggZm9jdXMgZm9yIG1hbmFnZWQgd2luZG93cy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgSEVBUF94YWxsb2MuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIEVuaGFuY2VkIGludGVybmFsIHZhcmlhYmxlcyBmcmFtZXdvcmsgKGluY2x1ZGluZyByZWFkL3NhdmUgdG8KCSAgcmVnaXN0cnkgYW5kIHR5cGluZykKCS0gRmluYWxpemVkIHVzZSBvZiBXaW5kb3dzJyBDb25zb2xlIEkvTyBpbnRlcmZhY2UgKGluc3RlYWQgb2YgVW5peCBzdGQKCSAgc3RyZWFtcykKCS0gTm93IGhhbmRsaW5nIHJlZ2lzdGVycyBhcyBpbnRlcm5hbCB2YXJpYWJsZXMgKHRoZXkgYXJlIG5vIGxvbmdlcgoJICBzZWVuIGFzIGEgc3BlY2lmaWMgdHlwZSkKCgkqIHdpbjMyL2V4Y2VwdC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluc3VyZSB3ZSBhbHdheXMgdHJ5IHRvIGxhdW5jaCBhIGRlYnVnZ2VyLgoKCSogcmVsYXkzMi93b3d0aHVuay5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIFRocmVhZCBwc2V1ZG8gaGFuZGxlIGFuZCBub3QgVGhyZWFkIElkIGFzIGFyZ3VtZW50IGZvciB0aGUgY2FsbCB0bwoJR2V0VGhyZWFkU2VsZWN0b3JFbnRyeS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wNC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglYMTFEUlZfU2V0Rm9jdXM6IHJlYWxseSBkb24ndCBtZXNzIHdpdGggZm9jdXMgZm9yIG1hbmFnZWQgd2luZG93cy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgSEVBUF94YWxsb2MuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIEVuaGFuY2VkIGludGVybmFsIHZhcmlhYmxlcyBmcmFtZXdvcmsgKGluY2x1ZGluZyByZWFkL3NhdmUgdG8KCSAgcmVnaXN0cnkgYW5kIHR5cGluZykKCS0gRmluYWxpemVkIHVzZSBvZiBXaW5kb3dzJyBDb25zb2xlIEkvTyBpbnRlcmZhY2UgKGluc3RlYWQgb2YgVW5peCBzdGQKCSAgc3RyZWFtcykKCS0gTm93IGhhbmRsaW5nIHJlZ2lzdGVycyBhcyBpbnRlcm5hbCB2YXJpYWJsZXMgKHRoZXkgYXJlIG5vIGxvbmdlcgoJICBzZWVuIGFzIGEgc3BlY2lmaWMgdHlwZSkKCgkqIHdpbjMyL2V4Y2VwdC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluc3VyZSB3ZSBhbHdheXMgdHJ5IHRvIGxhdW5jaCBhIGRlYnVnZ2VyLgoKCSogcmVsYXkzMi93b3d0aHVuay5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIFRocmVhZCBwc2V1ZG8gaGFuZGxlIGFuZCBub3QgVGhyZWFkIElkIGFzIGFyZ3VtZW50IGZvciB0aGUgY2FsbCB0bwoJR2V0VGhyZWFkU2VsZWN0b3JFbnRyeS4KCjIwMDAtMDQtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUNsZWFyIHRoZSByZW1haW5kZXIgb2YgdGhlIHBhZ2Ugd2hlbiBtYXBwaW5nIGEgc2VjdGlvbiB3aG9zZSBzaXplIG9uCglkaXNrIGlzIG5vdCBhIGZ1bGwgcGFnZSBtdWx0aXBsZS4KCVRlbXBvcmFyaWx5IGNvbW1lbnRlZCBvdXQgdGhlIFZpcnR1YWxGcmVlIGNhbGwgaW4gUEVfVW5sb2FkTGlicmFyeS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIHRocmVhZC1zYWZldHkgcHJvdGVjdGlvbiB0byBYTGlzdFBpeG1hcEZvcm1hdHMKCS0gbW92ZWQgcGl4bWFwIC8gaW1hZ2UgZm9ybWF0IG1hdGNoaW5nIEVSUnMgdG8gV0FSTnMKCgkqIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS93aW5iYXNlLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIEdldExhcmdlc3RDb25zb2xlV2luZG93U2l6ZSBwcm90b3R5cGUuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZyZWVCU0QgY29tcGlsZSBmaXguCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIERJQl9DcmVhdGVESUJTZWN0aW9uIHdpdGggZXh0cmEgcGFyYW1ldGVyIG92cl9waXRjaCwgYWRkZWQKCW92cl9waXRjaCB0byBwQ3JlYXRlRElCU2VjdGlvbiBpbiBEQ19GVU5DUy4gSWYgb3ZyX3BpdGNoIGlzIG5vbnplcm8sCglpdCBpcyBhIHBpdGNoIG92ZXJyaWRlIChzcGVjaWZpZXMgYnl0ZXMgcGVyIGxpbmUpLCBhbmQgdGVsbHMgdG8gdHJlYXQKCXRoZSBvZmZzZXQgcGFyYW1ldGVyIGFzIGFuIGFscmVhZHktbWFwcGVkIHZpcnR1YWwgbWVtb3J5IGFkZHJlc3MgKGlmCgl0aGUgc2VjdGlvbiBwYXJhbWV0ZXIgaXMgemVybykuIEZpeGVkIGEgRElCIHN0YXR1cyBpbml0IGJ1ZyBpbgoJY3JlYXRpbmcgRElCIHNlY3Rpb25zIGZyb20gZmlsZSBtYXBwaW5ncyAoaWYgY3JlYXRlZCBmcm9tIG1hcHBpbmcsIHRoZQoJRElCIGlzICpub3QqIHJlYWxseSBJblN5bmMpLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZCBXaW5lLWludGVybmFsIGFsbG9jYXRpb24gdHlwZSBNRU1fU1lTVEVNIGZvciBWaXJ0dWFsQWxsb2MgdG8KCXJlZ2lzdGVyIGV4dGVybmFsIG1hcHBpbmdzIChsaWtlIHZpZGVvIGZyYW1lIGJ1ZmZlcnMpLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzY2hlZHVsZXIvcHRocmVhZC5jLCBjb25maWd1cmU6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuaGFuY2VkIGxpYmMncyBwdGhyZWFkIGNvbmZpZ3VyYXRpb24gZGV0ZWN0aW9uLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBtc2Rvcy9kb3Nhc3BpLmMsIHdpbmRvd3MvbXVsdGltb24uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgY29tcGlsYXRpb24gd2FybmluZ3MuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgbWlzYy9jb21tLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCS0gQWRkZWQgbmV3IG9wdGlvbiAtLWNyb3NzLWNhbGwtdW5pY29kZS1hc2NpaSBmb3IgY2hlY2tpbmcgaWxsZWdhbAoJICBVbmljb2RlIHRvIEFTQ0lJIGNhbGxzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgJy0tZW5hYmxlLW9wZW5nbCcgZmxhZyB0byBieXBhc3MgdGhlIHRocmVhZC1zYWZldHkgY2hlY2suCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9wYWludGluZy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIHNvbWUgSEVBUF94YWxsb2MgY2FsbHMuCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWcgd2hlbiBmaWxlIGRvZXNuJ3QgZXhpc3QgaW4gTUNJX09QRU4gaGFuZGxpbmcuCglSZWR1Y2VkIHRpbWUgc3BlbnQgd2l0aCBjcml0IHNlY3QgbG9ja2VkLgoKCSogdG9vbHMvYnVpbGQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhcmd2IGhhbmRsaW5nIGZvciBjdWlleGUgd2luZWxpYiBwcm9ncmFtcy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBwdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucCBhbmQgcHRocmVhZF9hdGZvcmsgZml4bWVzIGxlc3MKCW9idHJ1c2l2ZS4KCgkqIHdpbmRvd3Mvd2luaGVscC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJV2luSGVscCBtdXN0IGFjY2VwdCBhIE5VTEwgcG9pbnRlciB0byB0aGUgaGVscCBrZXkgc3RyaW5nLgoKMjAwMC0wNC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgY2hlY2sgZm9yIG1pbmltdW0gYnVmZmVyIGxlbmd0aC4KCS0gQ29ycmVjdCBjYXNlcyB3aGVyZSBTaG93V2luZG93IGlzIGRvbmUvbm90IGRvbmUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4sIEphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgVE1FX1FVRVJZIGFuZCBUTUVfSE9WRVIgZmxhZ3MgaW4gX1RyYWNrTW91c2VFdmVudCBhbmQKCVRyYWNrTW91c2VFdmVudFByb2MuICBBZGRlZCBjb2RlIHRvIGFsbG93IGFkZGl0aW9uL2NhbmNlbGF0aW9uIG9mCgl0cmFja2luZyBmbGFncyBvbiBleGlzdGluZyBlbnRyaWVzIHJhdGhlciB0aGFuIGNyZWF0ZSBleHRyYSBlbnRyaWVzLgoJRml4ZWQgdGltZXIuICBBZGRlZCBjaGVjayB0byBfVHJhY2tNb3VzZUV2ZW50IHRvIHN0b3AgdGltZXIgaWYgdGhlCgl0cmFja2luZyBsaXN0IGlzIGVtcHR5LiAgRml4ZWQgVE1FX0NBTkNFTC4gIEZpeGVkIFRNRV9MRUFWRS9UTUVfSE9WRVIKCXdoZW4gaHduZFRyYWNrIGlzbid0IHRoZSBjdXJyZW50IGh3bmQuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURPU0ZTX0RvR2V0RnVsbFBhdGhOYW1lOiByZXdyaXRlIHRvIHJldHVybiByZXN1bHRzIGxpa2UgT1NSMi4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS92aXJ0dWFsLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+LCBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgbWVtb3J5IG1hcHBpbmcgb2YgNGsgYWxpZ25lZCBQRSBiaW5hcmllcy4gIFRoaXMgY2FuCglzcGVlZCB1cCBsb2FkIHRpbWVzIHNpZ25pZmljYW50bHkgZm9yIHNvbWUgYXBwbGljYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ29tcGxldGUgY2xlYW51cCwgYnVnZml4ZXMuCglOZXc6IFBhdGhTdHJpcFBhdGgsIFBhdGhNYWtlVW5pcXVlTmFtZSwgUGF0aFN0cmlwVG9Sb290LAoJUGF0aEdldFNob3J0UGF0aCwgUGF0aFBhcnNlSWNvbkxvY2F0aW9uLCBQYXRoUmVtb3ZlRXh0ZW5zaW9uLAoJUGF0aFJlbW92ZUFyZ3MsIFBhdGhBcHBlbmQsIFBhdGhCdWlsZFJvb3QsIFBhdGhDYW5vbmljYWxpemUsCglQYXRoRmluZE5leHRDb21wb25lbnQsIFBhdGhSZW1vdmVGaWxlU3BlYy4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGluY2x1ZGUvd2luZS9vYmpfcXVlcnlhc3NvY2lhdGlvbnMuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3R1YnMgZm9yIElRdWVyeUFzc29jaWF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNb3ZlZCBwb2xpY3kgcmVsYXRlZCBmdW5jdGlvbnMgdG8gc2hwb2xpY3kuYwoJTW92ZWQgZGlhbG9nIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGRpYWxvZ3MuYwoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRXhwbGljaXQgaW1wb3J0IHVzZXIzMi5kbGwuCglNYW55IGNvcnJlY3Rpb25zLCBleHBvcnRlZCBzb21lIGZ1bmN0aW9ucyBieSBuYW1lLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTZXBhcmF0ZWQgMzIgYml0IGZ1bmN0aW9ucyB0byBzaGVsbG9sZS5jLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkOiBleHRyYWN0IHRoZSBpY29uIGJ5IHJlc291cmNlIGlkLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZXMuCglVc2UgR2V0TW9kdWxlSGFuZGxlQSBpbnN0ZWFkIG9mIExvYWRMaWJyYXJ5IGZvciBkbGxzIGltcG9ydGVkIGJ5Cgl0aGUgc3BlYyBmaWxlLgoKCSogd2luZS5pbmk6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTWFrZSBXaW5lTG9vaz1XaW45NSB0aGUgZGVmYXVsdCBzZXR0aW5nLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBsZWF2aW5nIG9mIGNyaXRpY2FsIHNlY3Rpb24gb24gYWxsIHJldHVybiBjYXNlcy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCBpbml0X3NlY3QuIFVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluc3RlYWQuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLCByZW1vdmVkIGFzc2VydHMuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW46CglDaGFuZ2VkIGltcG9ydHMgb2Ygd2luc3Bvb2wgdG8gd2luc3Bvb2wuZHJ2LgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluOgoJQWRkZWQgbGlia2V5Ym9hcmQuc28gY3JlYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBpbmNsdWRlL2hlYWRlci5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gUmV0dXJuIG1vZGlmaWVkIHJlY3RhbmdsZSBhZnRlciBsYXlvdXRpbmcgaGVhZGVyIGNvbnRyb2wKCS0gT3V0cHV0IHRleHQgaW4gaGVhZGVyIGNvbnRyb2wgd2hlbiBubyBvdGhlciBGbGFnIHNwZWNpZmllZAoJLSBEZWxheSBib3VuZGluZyByZWN0YW5nbGUgY2FsY3VsYXRpb24gZm9yIGhlYWRlciBjb250cm9sIGl0ZW1zCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgVE9PTEJBUl9Nb3VzZUxlYXZlIHRvIGhhbmRsZSBXTV9NT1VTRUxFQVZFIG1lc3NhZ2VzLgoJQWRkZWQgVHJhY2tNb3VzZUV2ZW50IGNhbGxzIHRvIFRPT0xCQVJfTW91c2VNb3ZlLiAgSG90IGJ1dHRvbnMgbm93Cglsb29rL2JlaGF2ZSBhbG1vc3QgZXhhY3RseSB0aGUgc2FtZSBhcyBuYXRpdmUgd2luZG93cy4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQWRkZWQgZGVmYXVsdCB2YWx1ZXMgZm9yIFNQSV9HRVRNT1VTRUhPVkVSSEVJR0hULCBTUElfR0VUTU9VU0VIT1ZFUldJRFRIIGFuZAoJU1BJX0dFVE1PVVNFSE9WRVJUSU1FIHRvIFN5c3RlbVBhcmFtZXRlcnNJbmZvMTYoKS4KCgkqIG1pc2MvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW1wbGVtZW50IG1hcmsgYW5kIHNwYWNlIHBhcml0eSBnZW5lcmF0aW9uLiBBY2NlcHQgb25lLWFuZC0gYS1oYWxmCglzdG9wYml0czogdGhlIG1vc3QgY29tbW9uIHVhcnRzIHdpbGwgZ2VuZXJhdGUgdGhpcyBhdXRvbWF0aWNhbGx5IHdoZW4KCXRoZXJlIGFyZSA1IGRhdGFiaXRzLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglPdmVycmlkZSBmb3JrKCkuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2hlYXAuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglHZXQgcmlkIG9mIEhFQVBfeHJlYWxsb2MuCgoyMDAwLTA0LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciAtLXdpdGhvdXQteC4KCgkqIGxvYWRlci9tYWluLmMsIHdpbmUuaW5pOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBuZXcgY29uZmlndXJhdGlvbiBmaWxlIG9wdGlvbiBmb3Igc2VsZWN0aW5nIGdyYXBoaWNzIGRyaXZlci4KCgkqIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglMaW5rIHRoZSBUVFkgZHJpdmVyIHdpdGggdGhlIHN0YW5kYXJkIGxpYnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgd2luc3Bvb2woLmRydikgbG9hZGluZy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvdHNfeGY4NmRnYS5oLCBpbmNsdWRlL3RzX3hmODZkZ2EyLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3RzX3hwbS5oLCBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgaW5jbHVkZS90c194dXRpbC5oLCBpbmNsdWRlL3gxMWRydi5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZkZ2EyLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYywgdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIFhfRElTUExBWV9NSVNTSU5HLgoKCSogZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvbXNjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcHJvdmVkIENvZGVWaWV3IHR5cGUgaW5mb3JtYXRpb24gbG9hZGVyLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvbid0IHVzZSB0aGUgdGVtcGxhdGUgbWVtYmVyIHVubGVzcyB0aGUgY29ycmVzcG9uZGluZyBmbGFnIGlzIHNldC4KCjIwMDAtMDQtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBMSUNFTlNFLCBXQVJSQU5UWToKCVN3aXRjaGVkIHRvIHRoZSBYMTEgbGljZW5zZS4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBpZjE2MzIvcmVsYXkuYywgbWlzYy9kZGVtbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9tYWluLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dwcm9jcy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9kaW5wdXQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmluZXQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVXBkYXRlZCBBUEkgZmlsZXMuCgktIEltcHJvdmVkIG1pc3BsYWNlZCBmdW5jdGlvbiBjaGVja2luZy4KCS0gRml4ZWQgbWlub3IgYnVncy4KCgkqIGluY2x1ZGUvd2lubnQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJbmNsdWRlIHN0cmluZy5oIHRvIG1ha2Ugd2lubnQuaCBzZWxmLXN1ZmZpY2llbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IFBhdHJpY2sgWWFuZyAoQ29yZWwpCglpbmZvUHRyIHNvbWV0aW1lcyBjYW4gYmUgTlVMTC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRW8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywgZGxscy9jb21tZGxnL2NkbGdfTm8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaDoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJMzIgYml0cyBtZXNzYWdlIHByb2Nlc3NpbmcgZm9yIGNvbG9yIGRpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZWQgdG9vbGJhciBiaXRtYXAgc2l6ZSBoYW5kbGluZy4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgdGVzdCBmb3IgbGludXggMi4yIGpveXN0aWNrIEFQSSwgd2hpY2ggcmV0dXJuZWQgdHJ1ZSBpbiBldmVyeQoJY2FzZS4KCgkqIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgaW5jbHVkZS94bWFsbG9jLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MveG1hbGxvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgdGhlIGxhc3QgeG1hbGxvYyBjYWxscy4KCgkqIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcmVsYXkzMi9idWlsdGluMzIuYywgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL21vZHVsZS5oLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2hlbGxvM3Jlcy5yYywgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIHdpbmUuaW5pLCAuY3ZzaWdub3JlLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJSW1wbGVtZW50ZWQgb24tZGVtYW5kIGxvYWRpbmcgb2YgYnVpbHRpbiBkbGxzIHVzaW5nIGRsb3BlbigpLgoKMjAwMC0wNC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbjoKCUJ1aWxkIHdpbmVjbGlwc3J2IGFzIHBhcnQgb2YgdGhlIHgxMWRydiBkbGwuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCVJlbW92ZWQgYSBmZXcgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1ha2UgUkRXX1ZhbGlkYXRlUGFyZW50KCkgbW9kaWZ5IHRoZSB1cGRhdGUgcmVnaW9uIG9mIGFsbCBwYXJlbnRzLCBub3QKCWp1c3QgdGhlIGRpcmVjdCBwYXJlbnQuCgoJKiByZWxheTMyL3Nub29wLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTTk9PUF9QcmludEFyZzogcmVwbGFjZWQgSXNCYWQqIGZ1bmN0aW9ucyBieSBleGNlcHRpb24gaGFuZGxlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCAtLXdpdGhvdXQtY3Vyc2VzIGNvbXBpbGUgb3B0aW9uLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb21lIG1vcmUgcHRocmVhZCBvdmVycmlkZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgZGVidWdnZXIgcmVnaXN0cnkga2V5IGxvY2F0aW9uLgoKCSogaW5jbHVkZS9kZGVtbC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSBERUNMQVJFX0hBTkRMRSB0byBkZWNsYXJlIGhhbmRsZXMuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURFQ0xBUkVfSEFORExFIHNob3VsZCBub3QgYmUgdW5kZWYnZWQgYWZ0ZXIgdXNlLgoKCSogY29udHJvbHMvZWRpdC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeCBlZGl0IGNvbnRyb2wncyBXTV9HRVRURVhUIGJlaGF2aW91ci4KCgkqIG1pc2MvY29tbS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvIG5vdCBpbml0aWFsaXplIGRjYiBpbiBCdWlsZENvbW1EQ0JbQW5kVGltZW91dHNdLgoKCSogaW5jbHVkZS9jYXNlbWFwLmgsIHRvb2xzL3VuaW1hcC5wbDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRhcHRlZCB1bmltYXAucGwgc2NyaXB0IGFuZCBnZW5lcmF0ZWQgYnkgaXQgY2FzZW1hcC5oIHRvIHRoZSBVbmljb2RlCglTdGFuZGFyZCwgVmVyc2lvbiAzLjAuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNoZWNrIGlmIGRpYWxvZyBpcyB2aXNpYmxlIGJlZm9yZSBzZXR0aW5nIHRoZSBmb2N1cy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlbW92ZWQgdGhlIGxvbmdzdGFuZGluZyBoYWNrIGluIHJlc3BvbnNlIHRvIFdNX0FDVElWQVRFIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlZCBHZXROdW1iZXJGb3JtYXQgZGVjbGFyYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglSZWRyYXcgdG9vbGJhciBidXR0b24gaW5zaWRlIFRPT0xCQVJfRW5hYmxlQnV0dG9uKCkgb25seSBpZiB0aGUgc3RhdGUKCW9mIHRoZSBidXR0b24gY2hhbmdlcy4gIFN0b3BzIGZsaWNrZXJpbmcgaW4gdG9vbGJhcnMgY2F1c2VkIGJ5CglleGNlc3NpdmUgcmVkcmF3aW5nLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVN0dWIgZm9yIEludGVybmV0R2V0Q29ubmVjdGVkU3RhdGUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBHZXRQcm9jZXNzSGVhcCgpIGZvciB0aGUgU1RSSUNUIG1vZGUuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxzbyBjaGVjayBmb3IgZW1wdHkgR1VJRCBpbiBEaXJlY3REcmF3Q3JlYXRlLgoKMjAwMC0wNC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suc3BlYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uc3BlYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLnNwZWMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5zcGVjLCBkbGxzL3dpbm1tL21jaXNlcS9tY2lzZXEuc3BlYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuc3BlYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuc3BlYywgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLnNwZWMsIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglBZGRlZCBzb21lIG1pc3NpbmcgaW1wb3J0IGRpcmVjdGl2ZXMuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgd2lubW0gZnJvbSBpbXBvcnQgbGlzdC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBpbmNsdWRlL2FuaW1hdGUuaDoKCVVzZSBHZXRQcm9jQWRkcmVzcyBmb3IgbW1pbyogZnVuY3Rpb25zIHRvIGF2b2lkIGltcG9ydGluZyB3aW5tbS5kbGwuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjOgoJRml4ZWQgcmVzb3VyY2UgbG9hZGluZy4KCgkqIHRvb2xzL2N2ZHVtcC9jdmNydW5jaC5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmMsIHRvb2xzL2N2ZHVtcC9jdmluY2x1ZGUuaCwgdG9vbHMvY3ZkdW1wL2N2bG9hZC5jOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJTWlub3IgY2xlYW51cHMsIHBsdXMgZml4ZWQgYSBjb3VwbGUgYnVncyBpbiAuREJHIHBhcnNpbmcgY29kZS4KCUFkZGVkIGR1bXAgZm9yIE1JU0Mgc2VjdGlvbi4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgRGlyZWN0UGxheSByZWdpc3RyeSBrZXlzIHRvIHdpbmVkZWZhdWx0LnJlZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTW91c2V3aGVlbCBzdXBwb3J0LgoKMjAwMC0wNC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2N2ZHVtcC9jdmNydW5jaC5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmgsIHRvb2xzL2ZudDJiZGYuYywgaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL25lZXhlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wZWV4ZS5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3Nub29wLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYzoKCU1vdmVkIFBFIGhlYWRlciBkZWZpbml0aW9ucyB0byB3aW5udC5oIHdoZXJlIHRoZXkgYmVsb25nLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3NweS5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBNb3VzZXdoZWVsIHN1cHBvcnQuCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb252ZXJ0IHNlcnZpY2UgYW5kIHByb3RvY29sIG5hbWVzIHRvIGxvd2VyY2FzZSBiZWZvcmUgY2FsbGluZwoJZ2V0c2VydmJ5e25hbWV8cG9ydH0gYW5kIGdldHByb3RvYnl7bmFtZXxwb3J0fS4KCgkqIG9iamVjdHMvcmVnaW9uLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggcmV0dXJuIHZhbHVlIGZvciBPZmZzZXRSZ24gaWYgeCBhbmQgeSBhcmUgMC4KCgkqIGdyYXBoaWNzL3BhdGguYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBTdHJva2VBbmRGaWxsUGF0aC4KCUNhbGwgRGVsZXRlT2JqZWN0IHdoZW4gZmluaXNoZWQgd2l0aCBocmduIGluIFBBVEhfRmlsbFBhdGguCgoJKiBpbmNsdWRlL3dpbmluZXQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIHR5cG8uCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUVNUl9TRUxFQ1RPQkpFQ1QgcmVjb3JkcyBzdG9jayBvYmplY3RzIHdpdGggdGhlaXIgaWQgYXMgdGhlIG9iamVjdAoJaGFuZGxlIGFuZCB0aGUgaGlnaCBiaXQgc2V0LgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJVGlkeSB1cCBvZiBQbGF5RW5oTWV0YUZpbGVSZWNvcmQgLSBmaXhlcyBQb2x5UG9seSogZnVuY3Rpb25zLgoKMjAwMC0wNC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJUmVtb3ZlZCBwZXJtaXNzaW9uIGNoZWNrcyBpbiBjcmVhdGVfa2V5IGFuZCBkZWxldGVfa2V5LiBJdCBzZWVtcwoJV2luZG93cyBkb2Vzbid0IGNoZWNrIGFueXRoaW5nLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVdyYXAgYW4gZXhjZXB0aW9uIGhhbmRsZXIgYXJvdW5kIEZpbmRSZXNvdXJjZS4KCgkqIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ29ycmVjdGVkIFdpbk1haW4uCglBZGRlZCB0ZXN0IGNhc2UgZm9yIFJlZ0NyZWF0ZUtleUV4IHNob3dpbmcgd2luOTUgYmVoYXZpb3VyLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYzoKCUltcGxlbWVudGVkICd3YWxrIHByb2Nlc3MnIGFuZCAnd2FsayB0aHJlYWRzJyBjb21tYW5kcyB1c2luZyB0b29saGVscAoJc25hcHNob3RzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90bGhlbHAzMi5oLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1pc2MvdG9vbGhlbHAuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUltcGxlbWVudGVkIHRocmVhZCBhbmQgKHBhcnRpYWwpIG1vZHVsZSBzbmFwc2hvdHMsIGJhc2VkIG9uIHRoZSB3b3JrCglvZiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4uCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zaGVsbC5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOgoJU2F2ZSB0aGUgcmVnaXN0cnkgb24gc2VydmVyIGV4aXQgd2l0aG91dCBjbGllbnQgaW50ZXJ2ZW50aW9uLgoJUmVtb3ZlZCAiYWx0IiByZWdpc3RyeSBmaWxlcyBzaW5jZSB3ZSBub3cgaGF2ZSBzeW1saW5rcyBhbmQKCVdJTkVQUkVGSVggdG8gcmVwbGFjZSB0aGVtLgoKCSogaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTdXBwb3J0IHN3aXRjaGluZyB0aGUga2V5Ym9hcmQgbGF5b3V0IHdpdGggV0lORSBydW5uaW5nLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWZnZXRzOiBEb24ndCBzd2FsbG93IFxuLCB0cmVhdCBFT0YKCWZlb2Y6IENydWRlIGltcGxlbWVudGF0aW9uCglzaWduYWw6IFJldHVybiBlcnJvcgoKCSogd2luZWRlZmF1bHQucmVnOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIG1pc3NpbmcgYmFja3NsYXNoIGluIHRoZSBkZWJ1Z2dlciBkZWZpbml0aW9uLgoKCSogd2luMzIvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJU2V0TG9jYWxUaW1lKCkgYW5kIFNldFN5c3RlbVRpbWUoKSBidWdmaXhlcy4gQWRkZWQgYSBtYXhpbXVtIGNsb2NrCglhZGp1c3RtZW50IG9mIDIgbWludXRlcyBqdXN0IGluIGNhc2UuLi4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURTT1VORF9NaXhlck5vcm06IGRvIG5vdCBjb21wYXJlIHVucmVsYXRlZCBwb2ludGVycy4KCjIwMDAtMDQtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmM6CglSZXdyb3RlIGNvbW1hbmQtbGluZSBwYXJzaW5nIG9mIENyZWF0ZVByb2Nlc3NBIHRvIGJlIG1vcmUgY29tcGF0aWJsZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB0b29scy9idWlsZC5jLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLmMsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLnNwZWMsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3RocmVhZC5oLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL29wdGlvbnMuYywgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluOgoJSW1wcm92ZWQgV2luZWxpYiBhcHBzIGluaXRpYWxpc2F0aW9uIGNvZGUuIE5vIGxvbmdlciBuZWVkIHRvIGxpbmsKCXdpbmVzdHViLm8gd2l0aCBXaW5lbGliIGFwcHMuCgoJKiBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIHJlbGF5MzIvdXR0aHVuay5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvd2luODdlbS9lbXVsYXRlLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoJLSBBZGQgbmV3IG9wdGlvbnMgLS1hbGwgYW5kIC0tbm9uZSB0aGF0IGVuYWJsZS9kaXNhYmxlcyBhbGwgY2hlY2sKCSAgcmVzcGVjdGl2ZWx5LgoJLSBGaXhlZCBhbmQgaW1wcm92ZWQgc3R1YiBzdGF0aXN0aWNzLgoJLSBGaXhlZCBidWcgdGhhdCBwcmV2ZW50ZWQgY2hlY2tpbmcgb2YgdGhlIGZpcnN0IGZ1bmN0aW9uIGluIHRoZSAuc3BlYyBmaWxlcy4KCS0gUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBhIG1vcmUgYWR2YW5jZWQgbWlzcGxhY2VkIGZ1bmN0aW9uIGNoZWNraW5nLgoJLSBNaW5vciBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudCBDQ1NfTk9NT1ZFWSBmb3IgdG9vbCBiYXJzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU3ltbGluayByb290J3MgcmVnaXN0cnkgdG8gZ2xvYmFsIHJlZ2lzdHJ5LiBNaW5vciBjbGVhbnVwcy4KCgkqIG9sZS9vbGUybmxzLmM6IE93ZW4gV2FuZyA8b3dlbndAY29yZWwuY2E+CglBZGRlZCBmdXJ0aGVyIGltcGxlbWVudGF0aW9uIG9mIFdJTkFQSSBFbnVtRGF0ZUZvcm1hdHMoKSB0byBzdXBwb3J0Cgl0aHJlZSBtb3JlIGxvY2FsZXM6IEdlcm1hbihzdGFuZGFyZCksIEZyZW5jaChzdGFuZGFyZCkgYW5kIEZyZW5jaAoJKGNhbmFkaWFuKS4gQWxsIGRhdGUgZm9ybWF0cyBmb2xsb3cgY29udmVudGlvbnMgZnJvbSBXaW5kb3dzIE5UIDQuMAoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglBZGRlZCBwcm9wZXIgaGFuZGxpbmcgVFZJU19PVkVSTEFZTUFTSyBmbGFnIGFuZCBhbGxvd3MgdG8gZGlzcGxheQoJb3ZlcmxheSBpbWFnZXMuIEZpeGVkIG9mZiBieSBvbmUgZXJyb3Igd2l0aCBsaXN0aXRlbSBpbgoJVFJFRVZJRVdfSW5zZXJ0SXRlbUEgKHVOdW1JdGVtcyBpcyAwIGJhc2VkLCBjQ2hpbGRyZW4gaXMgYSBjb3VudCkuCgoyMDAwLTA0LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvcHRocmVhZC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglQT1NJWCB0aHJlYWRzIGVtdWxhdGlvbiwgdHJpY2tzIGdsaWJjIGludG8gYmVpbmcgdGhyZWFkc2FmZS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL21haW4uYywgc2VydmVyL3JlcXVlc3QuYzoKCU1hZGUgc2VydmVyIGxhdW5jaGluZyBzb21ld2hhdCBjbGVhbmVyIGFuZCBmYXN0ZXIuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYS5jLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCURldHlwb2VkIFgxMURSVl9FVkVOVF9TZXRJbnB1dE1ldGhvZC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVdoZW4gZGVhbGluZyB3aXRoIFhLQiBleHRlbnNpb25zLCBmb3JjZSB0aGUgQWx0R3Iga2V5IG1hc2sgdG8gdXNlIHRoZQoJZ3JvdXAgaW5kZXggaW5zdGVhZCBvZiB0aGUgbW9kaWZpZXIuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRGVmaW5lIF9fZmFzdGNhbGwuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBhIGZldyB0b29sYmFyIGRlZmluZXMuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBIGZldyBjb3JyZWN0aW9ucyB0byBib3VuZGluZyBib3hlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRG9uJ3QgY2xvc2UgZ3JvdXBzIG9mIHBvbHlsaW5lcy4KCgkqIG1pc2MvY29tbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBkZXJlZmVyZW5jZSBhIHB0ciB3ZSBqdXN0IGNoZWNrZWQgYmVpbmcgTlVMTC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDaGFuZ2VkIHRoZSBwbGFjZW1lbnQgb2YgV0lORV9VTlVTRUQgdG8gbWFrZSBnY2MgMi43LjIgaGFwcHkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRm9sbG93IHN5bWxpbmtzIHdoZW4gc2F2aW5nIHJlZ2lzdHJ5LgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW46CglBZGRlZCBtaXNzaW5nIHdpbmVzdHViIGRlcGVuZGVuY3kuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJTG9hZCBkb25lIGV2ZW50IG5vdyBjcmVhdGVkIGJ5IHRoZSBzZXJ2ZXIuCgoyMDAwLTA0LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvLmN2c2lnbm9yZSwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYywgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIE1ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHRoZSB3aW5lZGJnIGFuIGV4dGVybmFsIGFuZCBXaW5lTGliIHByb2dyYW0uCglDZW50cmFsaXplZCBvdXRwdXQgaGFuZGxpbmcgKHByZXBhcmF0aW9uIGZvciBjb25zb2xlIHVzYWdlKS4KCUZpeGVkIGEgZmV3IGRlYnVnIGluZm9ybWF0aW9uIHJlYWRpbmcgb3B0aW9ucyAoc3RhYnMgYW5kIHN5bSkuCglTdGFydGVkIGEgZnJhbWV3b3JrIHRvIGhvbGQgZGVidWdnZXIncyBpbnRlcm5hbCB2YXJpYWJsZXMuCgoJKiBtaXNjZW11L21haW4uYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiAtZGVidWcgd2luZSdzIG9wdGlvbiAod2luZSBub3cgcmVxdWlyZXMgYW4gZXh0ZXJuYWwgZGVidWdnZXIpLgoKCSogd2luMzIvZXhjZXB0LmMsIHdpbmVkZWZhdWx0LnJlZzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbGF1bmNoaW5nIG9mIGEgZGVidWdnZXIgd2hlbiB1bmhhbmRsZWQgZXhjZXB0aW9uIG9jY3Vycy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgLnhjbmxuayBzZWN0aW9uIHRvIGJ1aWx0aW4gS0VSTkVMMzIgUEUgaGVhZGVyLgoKCSogbG9hZGVyL21vZHVsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUxldCBDcmVhdGVQcm9jZXNzIGxhdW5jaCB1bml4IGV4ZWN1dGFibGUgd2l0aG91dCBhIC5leGUgZXh0ZW5zaW9uLgoJRml4ZWQgYXJndW1lbnRzIHBhc3NlZCB3aGVuIGNyZWF0aW5nIGEgdW5peCBwcm9jZXNzLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRml4ZWQgc2lnbmFsIHN0YWNrIGhhbmRsaW5nIG9uIExpbnV4IHdoZW4gc2lnYWx0c3RhY2sgaXMgYXZhaWxhYmxlLgoJQWRkZWQgYSBkaXJlY3Qgc2lnYWx0c3RhY2sgc3lzY2FsbCB0byB3b3JrLWFyb3VuZCB0aGUgZ2xpYmMgYnVnLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJSW1wbGVtZW50ZWQgZ3VhcmQgcGFnZXMgYW5kIHN0YWNrIG92ZXJmbG93IGV4Y2VwdGlvbnMuCgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglDbGVhbnVwIHRocmVhZCBzdGFjayBhbGxvY2F0aW9uLiBVc2UgYSBzaW5nbGUgVmlydHVhbEFsbG9jIGZvciBURUIgYW5kCgl0aGUgdmFyaW91cyBzdGFja3MuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNYWtlIHN1cmUgSEtMTVxTb2Z0d2FyZVxXaW5lXFdpbmUgaXMgYSBub24tdm9sYXRpbGUga2V5LgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgQWx0R3Iga2V5IGhhbmRsaW5nLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCU1ha2UgRGlyZWN0RHJhdyBjb21waWxlIHdpdGggREdBMiBwcmVzZW50LgoKCSogZmlsZXMvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGSUxFX0NyZWF0ZUZpbGUoKSdzIHJlYWQvd3JpdGUtY2hlY2sgd2FzIGJyb2tlbiBkdWUgdG8gY2hlY2tpbmcgb2YKCUVSUk9SX3h4eCBpbnN0ZWFkIG9mIFNUQVRVU194eHguCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBhbmQgY2xlYW5zIHVwIHNvbWUgb2YgdGhlIEdldEVuaE1ldGFGaWxlKiBmdW5jdGlvbnMuCglGaXhlcyBzY2FsaW5nIG9mIEVNRnMgaW4gcGxheWJhY2suICBXaWxsIHByb2JhYmx5IGJlIHJpZ2h0Cgl3aGVuIFdvcmxkIFRyYW5zZm9ybXMgd29yayBwcm9wZXJseS4uLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJR2xvYmFsUmVBbGxvYyByZXR1cm5zIDAgb24gZmFpbHVyZS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9vbS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTdHViIGZvciBOdEFsbG9jYXRlVXVpZHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDbGVhciBUb3BSb290SXRlbSB3aGVuIHdob2xlIHRyZWUgaXMgZGVsZXRlZC4KCUZpeCBvZmYgYnkgb25lIGxzdHJjcHluLgoJQ2xlYW4gdXAgYW5kIGZpeCBHZXROZXh0SXRlbS4KCjIwMDAtMDQtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmU6IElnbm9yZSBhbGwgb3V0cHV0IGZpbGVzLgoKCSogZGxscy93aW5pbmV0Ly5jdnNpZ25vcmUsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvd2luaW5ldC5oLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vLmN2c2lnbm9yZSwgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglNZXJnZWQgdXJsbW9uLmRsbCBhbmQgd2luaW5ldC5kbGwgZnJvbSB0aGUgQ29yZWwgdHJlZSAoaW1wbGVtZW50YXRpb24KCWJ5IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4pCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL3F1ZXVlLmM6CglNYWRlIEdldFByb2Nlc3NIZWFwKCksIEdldEN1cnJlbnRQcm9jZXNzSWQoKSwgR2V0Q3VycmVudFRocmVhZCgpIGFuZAoJR2V0Q3VycmVudFByb2Nlc3MoKSBpbmxpbmUuCgoJKiBBVVRIT1JTLCBpbmNsdWRlL2F1dGhvcnMuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWVyZ2VkIGluIENvcmVsJ3MgQVVUSE9Scy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT25seSBjb3B5IGRzdHdpZHRoKjMgYnl0ZXMgaW4gdGhlIDI0Yml0IGNhc2UuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGcmVlIHByaXZhdGUgc3RydWN0dXJlIGluIFhsaWJfRERTX1JlbGVhc2UuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJTVNHX1Byb2Nlc3NLYmRNc2cgY2FuIGJlIGNhbGxlZCBmcm9tIHBlZWssIHNvIG9ubHkgcHJvY2VzcyB3aGVuIHJlbW92ZSBpcyBzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCVRyZWVWaWV3IC0gbWlub3IgYnVnZml4IGFuZCBvcHRpbWl6YXRpb246CgkgICAtIEdldERDIGNhbGwgbW92ZWQgZG93biB0byBhdm9pZCBwb3NzaWJsZSByZXNvdXJjZSBsZWFrLgoJICAgLSBJbnZhcmlhbnQgY29kZSBpcyBtb3ZlZCBvdXQgb2YgbG9vcC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglfSUxHZXRGaWxlRGF0ZSBzaG91bGQgY29udmVydCB0aGUgZGF0ZSB0byBsb2NhbCB0aW1lIGJlZm9yZSBnZW5lcmF0aW5nCgl0aGUgc3RyaW5nIChfSUxHZXRGaWxlRGF0ZVRpbWUgZG9lcyBub3QpLgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIG90aGVyIGJ1Z3Mgd2l0aGluIE1NSU8gaW1wbGVtZW50YXRpb24uIE5vdywgaXQncyBwb3NzaWJsZSB0bwoJY29weS9jdXQgZnJvbSBQaG90b1BhaW50IGFuZCBwYXN0ZSB0byBDb3JlbERyYXcuCgoyMDAwLTA0LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJVXNlIGQzZGV4ZWN1dGVidWZmZXJfY3JlYXRlIG9ubHkgd2hlbiBjb21waWxpbmcgd2l0aCBNRVNBLgoKMjAwMC0wNC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZXBsYWNlZCB4bWFsbG9jIGNhbGxzIHdpdGggbWFsbG9jL0hlYXBBbGxvYyBjYWxscy4KCgkqIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS94dGVybS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3NtZXRpY3MuCgoJKiBtZW1vcnkvaGVhcC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZCBIZWFwV2FsaygpLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHdvIGxlZnQgb3ZlciBIZWFwVmFsaWRhdGUgYXNzZXJ0aW9ucyByZW1vdmVkLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNsZWFyIHN0YXR1cyBmb3Igc2VuZGluZyBleGNlcHRpb24gZXZlbnQuCgoJKiB0b29scy9nZW5wYXRjaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhYmlsaXR5IHRvIHB1dCBuZXctbGluZXMgaW4gY2hhbmdlbG9nIGVudHJ5LgoJQWRkZWQgLXAgdG8gbG9jYXRlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJR2V0SXRlbSB3YXMgcmV0dXJuaW5nIHRoZSBpdGVtIGluc3RlYWQgb2Ygc3ViaXRlbSBpbmZvLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglSZWdpc3RyeSBrZXkgdXNlZCBpbiBMb2FkQm9hcmQoKSB3YXMgbm90IHRoZSBzYW1lIGFzIHRoZSBvbmUgdXNlZCBpbgoJU2F2ZUJvYXJkKCkuIEFsc28gZml4ZWQgYSB0eXBvIGluIHRoZSBwb3NpdGlvbiBzYXZpbmcgY29kZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQ3JlYXRlIGRpcmVjdG9yaWVzIHRoYXQgZG9uJ3QgY29udGFpbiBhIE1ha2VmaWxlLgoKCSogdG9vbHMvd3JjL01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW4sIG9sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHRvb2xzL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW46CglJbXByb3ZlZCBzdXBwb3J0IGZvciBNYWtlZmlsZXMgdGhhdCBuZWVkIHRvIHJlY3Vyc2UgaW4gc3ViZGlyZWN0b3JpZXMuCgoJKiBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywgZGxscy9kZHJhdy9kcGFsZXR0ZS94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2NvbnZlcnQuYywgZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RkZXZpY2VzLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaCwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXN0cnVjdHVyZWQgRGlyZWN0RHJhdy4gU3BsaXQgaW50byBYMTEgYW5kIERHQSBkcml2ZXIsIGFuZCBtdWx0aXBsZQoJZmlsZXMvZGlycyBmb3IgZWFzaWVyIG1haW50ZW5hbmNlLiBDbGVhbmVkIHVwIHN0cnVjdHMgYW5kIGluY2x1ZGUKCWZpbGVzLiBSZWluZGVudGVkIHRoZSBjb2RlLiBTdGFydGVkIHRoZSBzYW1lIGZvciBEaXJlY3QzRC4gIERyaXZlcgoJaW5jbHVzaW9uIG5vdyBkb25lIGJ5IHVzaW5nIGNvbmZpZ3VyZS9NYWtlZmlsZS9FTEYgY29uc3RydWN0b3IgdHJpY2tzLgoKMjAwMC0wNC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvaGVhcC5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvdGltZXIuYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCVJlbW92ZWQgYSBudW1iZXIgb2YgZ2xvYmFsIGhhbmRsZSBhbGxvY2F0aW9ucyBhbmQgY3JpdGljYWwgc2VjdGlvbgoJaW5pdGlhbGl6YXRpb25zLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVRlbXBvcmFyeSBoYWNrIHRvIHNoYXJlIGhhbmRsZXMgYmV0d2VlbiBwcm9jZXNzZXMgc2hhcmluZyB0aGUgc2FtZQoJYWRkcmVzcyBzcGFjZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCUFkZGVkIGxhenkgaW5pdGlhbGl6YXRpb24gb2YgY3JpdGljYWwgc2VjdGlvbnMsIGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUFuZHJldyBMZXd5Y2t5LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogWXV4aSBaaGFuZyA8eXV4aUBjb3JlbC5jYT4KCVN0ZXBoZW4gTWVyZXUKCVRhYkN0cmwgbGVmdG1vc3RWaXNpYmxlIGlzIG5vdCB1cGRhdGVkIHByb3Blcmx5LiBJdCBjYXVzZWQgdGhlIFFQCglhcHBsaWNhdGlvbiBiYXIgb24gdGhlIGJvdHRvbSBmYWlsIHRvIGJyaW5nIGJhY2sgdGhlIGl0ZW1zIHdoZW4gdGhlcmUKCWlzIG5vIG5lZWQgdG8gc2Nyb2xsaW5nLiBBbHNvIGZpeGVkIGEgYnVnIHRoYXQgd2hlbiBhbiBpdGVtIGlzIGluc2VydGVkLAoJc2V0SXRlbUJvdW5kcyBzaG91bGQgYmUgY2FsbGVkIGZpcnN0LCB0aGVuIGl0J3MgdGltZSB0byBpbnZhbGlkYXRlLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9uZXdmbnMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgUGVla05hbWVkUGlwZSBzdHViLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgcGl4bWFwIGxlYWsgd2l0aCB0aGUgMXgxIGJpdG1hcCBpbiBtZW1vcnkgRENzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJd2luZWluc3RhbGwgbm93IHByb3Blcmx5IGNvbmZpZ3VyZXMgbm8td2luZG93cyBpbnN0YWxscywgYW5kIHNob3VsZCBub3cKCWJlIGVhc2llciB0byBhZGFwdCBmb3IgYmluYXJ5IHBhY2thZ2VzIHRvby4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZWZhdWx0IHN5c3RlbS5pbmkgKGZyb20gZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYSkuCgoyMDAwLTA0LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJRG8gbm90IHNlbmQgYSBkZWJ1ZyBldmVudCBmb3IgYSB0aHJlYWQgdW50aWwgdGhlIHByZXZpb3VzIGV2ZW50IGZvcgoJdGhlIHNhbWUgdGhyZWFkIGhhcyBiZWVuIGNvbnRpbnVlZC4KCgkqIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6CglNb3ZlZCBTYXZlT25seVVwZGF0ZWRLZXlzIHRvIHdpbmUuaW5pLgoJVXNlIGdldF9jb25maWdfZGlyKCkgaW5zdGVhZCBvZiBoYXJkY29kaW5nIH4vLndpbmUKCVNpbXBsaWZpZWQgbG9hZGluZyBhbmQgc2F2aW5nIHJvdXRpbmVzLgoKCSogZmlsZXMvcHJvZmlsZS5jLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgV0lORVBSRUZJWCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvbHN0ci5jLCBtaXNjL25ldHdvcmsuYywgbXNkb3MvaW50MjEuYywgb2JqZWN0cy9mb250LmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZXhjZXB0LmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsIGRsbHMvd2luODdlbS9lbXVsYXRlLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgbG9hZGVyL21vZHVsZS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgb2xlL29sZTJubHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jYT4KCUltcGxlbWVudGVkIEFQSSBFbnVtVGltZUZvcm1hdHNBKCkuIEl0IHN1cHBvcnRzIG5vdyBhbGwgZGlmZmVyZW50CglFbmdsaXNoIGxvY2FsZXMsIGFzIHdlbGwgYXMgR2VybWFuKHN0YW5kYXJkKSwgRnJlbmNoKHN0YW5kYXJkKSBhbmQKCUZyZW5jaChDYW5hZGlhbikuICBBbGwgdGltZSBmb3JtYXRzIGZvbGxvdyBjb252ZW50aW9ucyBpbiBXaW5kb3dzIE5UIDQuMAoKCUhhaXRoZW0gSG1pZGEgKG9mIE1hY2FkYW1pYW4gZm9yIENvcmVsKQoJSW1wbGVtZW50ZWQgR2V0Q3VycmVuY3lGb3JtYXRBKCkgQVBJOgoJLSBHZXRDdXJyZW5jeUZvcm1hdEEoKSBjYWxscyBHZXROdW1iZXJGb3JtYXRBKCkgdG8gZm9ybWF0IHRoZSBudW1iZXIKCSAgKGFzIGEgcG9zaXRpdmUgb25lKSwgdGhlbiBmb3JtYXRzIHRoZSBudW1iZXIgZGVwZW5kaW5nIG9uCgkgIE5lZ2F0aXZlT3JkZXIvUG9zaXRpdmVPcmRlciBmaWVsZHMuCgktIEdldE51bWJlckZvcm1hdEEoKSBoYXMgYmVlbiBzbGlnaHRseSBtb2RpZmllZC4KCgkqIG9iamVjdHMvdGV4dC5jOgoJSnVuaWNoaSBLdWNoaW5pc2hpIDxqa3VjaGlAbWFob3JvYmEubmUuanA+CglBZGRlZCBjb252ZXJzaW9uIGZyb20gREJDUyBscER4IHRvIFdDSEFSIGxwRHguCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBJbXBsZW1lbnRlZCBzdHViIHN0YXRpc3RpY3MuIFR1cm5lZCBvZmYgYnkgZGVmYXVsdC4gKFJlcXVlc3RlZCBieSBGcmFuY29pcwoJR291Z2V0KS4KCS0gSW1wbGVtZW50ZWQgbWlzc2luZyBwcm90b3R5cGUgY2hlY2tpbmcuIFR1cm5lZCBvZmYgYnkgZGVmYXVsdCAoUmVxdWVzdGVkCglieSBEaW1pdHJ5IFRpbW9zaGtvdikuCgktIEltcGxlbWVudGVkIC5zcGVjIGZpbGUgbmFtZSBzYW5pdHkgY2hlY2tpbmcuIFR1cm5lZCBvZmYgYnkgZGVmYXVsdC4KCS0gSW1wbGVtZW50ZWQgZG9jdW1lbnRhdGlvbiB3aWR0aCBjaGVja2luZy4gVHVybmVkIG9mZiBieSBkZWZhdWx0LgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNhPgoJRml4IFN0cmluZ0Zyb21HVUkyIHJldHVybiB2YWx1ZSBhcyBwZXIgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJTWFrZSBhdWRpb2RldmljZSBibG9ja2luZyBkaXJlY3RseSBhZnRlciB0aGUgbm9uLWJsb2NraW5nIG9wZW4sIHNpbmNlCgl3ZSB1c2UgdGhlIHdyaXRlKDIpIGFsc28gZm9yIHN5bmNocm9uaXphdGlvbi4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdGVkIGVycm9yIGhhbmRsaW5nIGZvciB3c19nZXRwcm90b2J5bmFtZS9udW1iZXIuCglNYWRlIHRoZSBBc3luYyBlcnJvciByZXR1cm5zIHRoZSBzYW1lIGFzIHRoZSBub3JtYWwgZnVuY3Rpb25zLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRTaG9ydFBhdGhOYW1lOiBhbHdheXMgZXJhc2UgY2hhcmFjdGVycyBhdCB0aGUgZW5kIG9mIHRoZSBuZXcKCXN0cmluZywgYW5kIHJldHVybiBvbmx5IHNpbmdsZSBiYWNrc2xhc2hlcy4KCjIwMDAtMDQtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RyaXZlLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3JlZ2lzdHJ5LmMsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUFkZGVkIGEgcGVyLWRyaXZlIEZhaWxSZWFkT25seSBmbGFnLCBhbmQgcmVtb3ZlZCB0aGUgZ2xvYmFsCgktLWZhaWxyZWFkb25seSBvcHRpb24uCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBmaWxlcy9maWxlLmMsIHNjaGVkdWxlci9jbGllbnQuYzoKCUZpeGVkIGZpbGUgZGVzY3JpcHRvciBsZWFrcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUNhbGwgUFJPRklMRV9HZXRXaW5lSW5pQm9vbCBiZWZvcmUgc3RhcnRpbmcgdG8gZmlsbCB0aGUgcmVxdWVzdAoJYnVmZmVyLiBNYWRlIG5ldyByZWdpc3RyeSBmb3JtYXQgdGhlIGRlZmF1bHQuCgoJKiBzZXJ2ZXIvcHRyYWNlLmM6CglJbmNyZW1lbnQgc3VzcGVuZCBjb3VudCBiZWZvcmUgYXR0ZW1wdGluZyBhdHRhY2ggaW4gc3VzcGVuZF9mb3JfcHRyYWNlLgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgc2VydmVyL2F0b20uYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2V2ZW50LmM6CglNYWRlIHJlcXVlc3QgdHJhY2luZyBtb3JlIHJvYnVzdCBhZ2FpbnN0IGJvZ3VzIGxlbmd0aHMuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglBZGFwdGVkIHRoZSBtYW51YWwgcGFnZXMgdG8gdGhlIG5ldyBsb25nIG9wdGlvbnMsIHVwZGF0ZWQgdGhlCgktZGVidWdtc2cgY2hhbm5lbHMgYW5kIGFkZGVkIGEgc21hbGwgaGFjayB0byBnZXQgdGhlIEBzeXNjb25mZGlyQAoJc3R1ZmYgaW4gdGhlIG1hbnVhbCBwYWdlcyByaWdodC4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0d28gc21hbGwgYnVncyB3aXRoaW4gTU1JT19JbnN0YWxsSU9Qcm9jIGFuZCBNTUlPX0Rlc3Ryb3kuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uaDoKCUpvc2h1YSBUaGllbGVuIDxmb3pleUBuZXR6ZXJvLmNvbT4KCUFkZGVkIERlc3Ryb3lCb2FyZCBmdW5jdGlvbiB0byBkZWxldGUgYml0bWFwIGhhbmRsZXMuCglNb3ZlZCBTZWxlY3RPYmplY3Qgb3V0c2lkZSBvZiBEcmF3TWluZS4KCVNlbGVjdGVkIG9sZCBvYmplY3QncyBiYWNrIGludG8gaE1lbURDLgoKCSogbXNkb3MvaW50MjEuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglJbXBsZW1lbnRlZCBGQVQzMiBmdW5jdGlvbiA3MzAyIChHZXQgRXh0ZW5kZWQgRFBCKS4KCgkqIHdpbjMyL2RldmljZS5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUltcGxlbWVudGVkIERldmljZUlvQ29udHJvbCBWV0lOMzJfRElPQ19ET1NfRFJJVkVJTkZPLCBuZWVkZWQgYnkKCUludGVybmV0IEV4cGxvcmVyLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY2E+CglUaGlzIHBhdGNoIGFkZHMgdGhlIGFiaWxpdHkgZm9yIHJlZ2FwaSB0byBjYWxsIHRoZSBEbGxSZWdpc3RlclNlcnZlciBvcgoJRGxsVW5yZWdpc3RlclNlcnZlciBmb3IgYSBsaXN0IG9mIERMTHMuCgoJKiBkbGxzL29sZTMyL29sZTIuYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY2E+CglPbGVSZWdHZXRVc2VyVHlwZSBkaWQgcmV0dXJuIGFuIHVudGVybWluYXRlZCBBU0NJSSBzdHJpbmcgaW5zdGVhZCBvZiBhbgoJT0xFU1RSICh3aWRlIGNoYXJhY3RlcnMpLgoKCSogbWlzYy9tYWluLmMsIG9sZS9ubHMvZW5hLm5scywgb2xlL25scy9lbmIubmxzLCBvbGUvbmxzL2VuYy5ubHMsIG9sZS9ubHMvZW5nLm5scywgb2xlL25scy9lbmkubmxzLCBvbGUvbmxzL2Vuai5ubHMsIG9sZS9ubHMvZW5sLm5scywgb2xlL25scy9lbnMubmxzLCBvbGUvbmxzL2VudC5ubHMsIG9sZS9ubHMvZW51Lm5scywgb2xlL25scy9lbnoubmxzLCBvbGUvbmxzL2lybC5ubHMsIG9sZS9vbGUybmxzLmM6CglNaWNoYWVsIEFiZC1FbC1NYWxlayAoQ29yZWwpCglDaGFuZ2VkIGlybC5ubHMgdG8gZW5pLm5scy4gUmV2aWV3ZWQgYW5kIGZpeGVkIGEgbG90IG9mIHRoZSBOTFMgZmlsZXMKCXRvIGJlIG1vcmUgY29tcGF0aWJsZSB0byBXaW5kb3dzLgoJQWRkZWQgZW5fR0IgKHVzZWQgYnkgQ29yZWwgTGludXggMS4wLDEuMSkgYXMgYWxpYXMgZm9yIGVuX1VLLgoKCUplZmYgVHJhbnRlciA8amVmZnRAY29yZWwuY2E+CglUaGUgbWVhc3VyZW1lbnQgdW5pdCBmb3IgQ2FuYWRpYW4gRW5nbGlzaCBzaG91bGQgYmUgbWV0cmljLgoJTEFOR19TVUJfRU5UUlkgZGlkIGFsd2F5cyByZXR1cm4gdGhlIGZpcnN0IGxhbmd1YWdlIGR1ZSB0byBtaXNzaW5nIHt9LgoKMjAwMC0wMy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzIGluIHJlZ2FyZHMgdG8gc2hhcmVkIGxpYnJhcmllcyBhbmQKCXNvbWUgbW9yZSB3aW5kb3dzIHNwZWNpZmljIGRpcnMuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9SRUFETUUsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gRml4IHBhaW50aW5nIGJ1ZyB3aXRoIG1pZGRsZSBidXR0b24gZG93biB3aGVuIGRyYWdnaW5nIG1vdXNlCgktIFNwZWVkIHVwIGRyYXdpbmcgYW5kIGhlbmNlIG92ZXJhbGwgc3BlZWQKCS0gRml4IGNvbXBpbGVyIHdhcm5pbmdzCgktIEFkZGVkIHNvbWUgb3B0aW9uYWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCgktIEFkZGVkIGEgbmV3IGtub3duIGJ1ZyB0byB0aGUgbGlzdAoKCSogbWlzYy9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBDVFMsIERTUiBhbmQgUmluZ0luZGljYXRvciBzdGF0ZXMgdG8gV2luZG93J3Mgc2VtaS1kb2N1bWVudGVkCgltb2RlbSBsaW5lIHN0YXR1cyByZWdpc3Rlci4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCURlbGV0ZSBvYmplY3RzIGFmdGVyIHVzZSBpbiBFbnVtRW5oTWV0YUZpbGUuCglNYWtlIFBsYXlFbmhNZXRhRmlsZSBjYWxsIEVudW1FbmhNZXRhRmlsZS4KCU1vdmUgRW51bUVuaE1ldGFGaWxlIHByb3RvdHlwZSB0byB3aW5nZGkuaC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCW9wZW4oKSB0aGUgT1NTIHNvdW5kZGV2aWNlIG5vbi1ibG9ja2luZyBpbiBjYXNlIGFub3RoZXIgcHJvY2VzcyBoYXMgaXQKCW9wZW4gYWxyZWFkeS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglDb21tZW50ZWQgb3V0IGV4aXQoKSBjYWxsIG9uIEV4aXRQcm9jZXNzIGZvciBub3cuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJU2V0IHRocmVhZCBzdGFydCBhZGRyZXNzIHRvIDAgb24gZXZlbnRzIGdlbmVyYXRlZCBieQoJRGVidWdBY3RpdmVQcm9jZXNzLgoJUmV0dXJuIGEgY29ycmVjdCBhZGRyZXNzIGluIHRoZSBzaW11bGF0ZWQgZXhjZXB0aW9uIGV2ZW50LgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L2RjLmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi93bmQuYzoKCUZpeGVkIHR0eWRydiBjb21waWxlIHdoZW4gdXNpbmcgY3Vyc2VzLiBDbGVhbmVkIHVwIGEgZmV3ICNpZmRlZnMuCgoyMDAwLTAzLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBncmFwaGljcy9wYXRoLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ueWFjYy55OgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CgktIEZpeCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzLgoJLSBSZW1vdmUgc3VwZXJmbHVvdXMgI2luY2x1ZGUgc3RhdGVtZW50LgoKCSogaW5jbHVkZS93aW5lL3dpbm5ldDE2LmgsIG1pc2MvbmV0d29yay5jOgoJUm9uIEdhZ2UgPHJvbmdhZ2VAYXR0Lm5ldD4KCUZpeGVkIGJ1ZyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiAqLyouYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQvZml4ZWQgc29tZSBkb2N1bWVudGF0aW9uIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJRml4ZWQgbWVtb3J5IGFsbG9jYXRpb25zLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZC9maXhlZCBzb21lIGRvY3VtZW50YXRpb24gcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrCgktIFJlbmFtZWQgTWFwVmlydHVhbEtleUV4MzJBIHRvIE1hcFZpcnR1YWxLZXlFeEEKCS0gUmVuYW1lZCBDUlRETExfX2RsbG9uZXhpdCB0byBDUlRETExfX19kbGxpbml0CgoJKiBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBtaXNjL3ByaW50ZHJ2LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVXBkYXRlZCB0aGUgQVBJIGZpbGVzLgoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEbyBhIExvYWRMaWJyYXJ5QSBvZiBXSU5NTSB1cG9uIEFOSU1BVEVfQ3JlYXRlIGFuZCBhIEZyZWVMaWJyYXJ5IHVwb24KCUFOSU1BVEVfRGVzdHJveS4KCgkqIHRvb2xzL3dyYy9wYXJzZXIubDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBmaXggaW4gd3JjIHRvIHN1cHBvcnQgdGhlIFNvbGFyaXMgcHJlcHJvY2Vzc29yLgoKCSogZGVidWdnZXIvbXNjLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBBTlNJIEMgdmlvbGF0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vbm8td2luZG93czoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkIHN0YXJ0IG1lbnUgZGlyZWN0b3JpZXMuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglQdXQgQ0xPTkVfRklMRVMgYmFjayBpbiwgaXQgaXMgc3RpbGwgYnJlYWtpbmcgdG9vIG1hbnkgdGhpbmdzLgoKCSogb2JqZWN0cy9iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS94MTFkcnYuaDoKCU1lcmdlZCBEREJpdG1hcCBhbmQgcGh5c0JpdG1hcCBpbnRvIHRoZSBnZW5lcmljIGJpdG1hcCBzdHJ1Y3R1cmUKCShzdWdnZXN0ZWQgYnkgQW5kcmV3IExld3lja3kpLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglJZ25vcmUgdHJhaWxpbmcgc3BhY2VzIGluIERPU0ZTX1RvRG9zRkNCRm9ybWF0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRml4ZWQgc21hbGwgYnVnIGluIFdTT0NLMzJfYWNjZXB0CgoyMDAwLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDAwMzI2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJRE9TRlNfVG9Eb3NGQ0JGb3JtYXQ6IGZhaWwgaWYgZXh0ZW5zaW9uIGxvbmdlciB0aGFuIDMgY2hhcmFjdGVycy4KCgkqIHRvb2xzL2N2ZHVtcC8uY3ZzaWdub3JlLCB0b29scy9jdmR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL2N2ZHVtcC9jdmNydW5jaC5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmMsIHRvb2xzL2N2ZHVtcC9jdmR1bXAuaCwgdG9vbHMvY3ZkdW1wL2N2aW5jbHVkZS5oLCB0b29scy9jdmR1bXAvY3Zsb2FkLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGN2ZHVtcCB0b29sIHRvIGR1bXAgQ29kZVZpZXcgc3ltYm9sIGluZm9ybWF0aW9uLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSGFuZGxlIFBPTExIVVAgYmV0dGVyIChkZWxheSBGRF9DTE9TRSBub3RpZmljYXRpb24gdW50aWwgYWxsIGRhdGEgaGFzCgliZWVuIHJlYWQpLiBNYWRlIFdTQUVudW1OZXR3b3JrRXZlbnRzIGF0b21pYy4gQ29udmVydCBzb2NrZXQgZXZlbnQKCWVycm9yIGNvZGVzIHByb3Blcmx5LiBNYWRlIGFjY2VwdCgpLWVkIHNvY2tldHMgaW5oZXJpdCB0aGUgbGlzdGVuaW5nCglzb2NrZXQncyBXU0FBc3luY1NlbGVjdCgpLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgZGVidWcgZm9ybWF0dGluZy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogRml4ZWQgZXJyb3IgY2hlY2tpbmcgaW4gcmVnaXN0cnkgc2F2aW5nLgoKCSogbWlzYy9jZHJvbS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2Ugc3RyZXJyb3IgaW4gZGVidWcgb3V0cHV0LgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU0hDaGFuZ2VOb3RpZnlbQXxXXTogZnJlZSBvbmx5IGl0ZW1zIHdlIGFsbG9jYXRlZC4KCgkqIGxvYWRlci9yZXNvdXJjZS5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYywgd2luMzIvY29uc29sZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVzIGZvciBpMThuLgoKCSogZGVidWdnZXIvc3RhYnMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcmVhZCAuc28gbGlzdCBmcm9tIGRlYnVnZ2VlJ3MgYWRkcmVzcyBzcGFjZS4KCgkqIGluY2x1ZGUvd2luZG93c3guaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBtaXNzaW5nIG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgc2VydmVyL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCU1vdmVkIHNvbWUgcmVnaXN0cnkgZGVmaW5pdGlvbnMgdG8gd2lubnQuaC4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5zcGVjLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgaW1wb3J0IG9mIGNvbWRsZzMyLmRsbCBpbiBzcGVjIGZpbGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFjdGl2YXRlIGEgaGlkZGVuIHdpbmRvdyBvbmx5IHdoZW4gZXhwbGljaXRlbHkgYXNrZWQgYnkgdGhlCglhcHBsaWNhdGlvbi4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglpbXByb3ZlZCBleGNlcHRpb24gaGFuZGxpbmcKCW1lcmdlZCBhbGwgbW9kdWxlIGhhbmRsaW5nIGNvZGUgaW4gbmV3IG1vZHVsZS5jIGZpbGUKCXJlZW5hYmxlZCAnd2FsayBtb2R1bGUnIGFuZCAnaW5mbyBtb2R1bGUnIGNvbW1hbmRzCglhZGRlZCBhYmlsaXR5IHRvIGRyaXZlIGJyZWFrIG9uIHRocmVhZCBzdGFydHVwCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWJzIGZvciBEbGxSZWdpc3RlclNlcnZlci9EbGxVbnJlZ2lzdGVyU2VydmVyLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHJldHVybiB2YWx1ZSBmb3IgU0NfR0VUX0RFVl9UWVBFLgoKMjAwMC0wMy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvYnVpbGQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbG9jYWwuYywgbWlzYy92ZXJzaW9uLmMsIG1zZG9zL2ludDIxLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9yZWdpb24uYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luZGVmLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIG1pbi9tYXggaW5zdGVhZCBvZiBNSU4vTUFYLgoKCSogc2VydmVyL3NvY2suYzogT3ZlIEthYXZlbiA8b3ZlaGtAcGluZy51aW8ubm8+CglIYW5kbGUgc29ja2V0IFBPTExFUlIvUE9MTEhVUCBjb25kaXRpb25zIHByb3Blcmx5LgoJQ2xlYXIgZXJyb3IgZmllbGQgZm9yIE9PQiBub3RpZmljYXRpb25zLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTZW5kIHRoZSBjb3JyZWN0IE9EQV8gY29kZSB3aGVuIGRlc2VsZWN0aW5nIGFuIGl0ZW0uCgoJKiB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgZmlsZSBkZXNjcmlwdG9yIGxlYWtzLgoJQWx3YXlzIGNhbGwgVVNFUiBzaWduYWwgcHJvYyBpbiB0aGUgcmlnaHQgY29udGV4dC4KCUNsZWFuZWQgdXAgVEhSRUFEX0NyZWF0ZS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46CglEbyBub3QgZXJhc2UgbG9jYWwgZmlsZXMgb24gdW5pbnN0YWxsIGlmIGluc3RhbGwgZGlyIGRvZXMgbm90IGV4aXN0LgoKCSogd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3R0eWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy90dHlkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L21vbml0b3IuYywgd2luZG93cy90dHlkcnYvd25kLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L2RjLmMsIGluY2x1ZGUvZGVza3RvcC5oLCBpbmNsdWRlL21vbml0b3IuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIG1pc2MvbWFpbi5jLCB3aW5kb3dzL2RjZS5jOgoJU3RvcmUgbW9uaXRvciBzaXplIGFuZCBkZXB0aCBpbiB0aGUgZ2VuZXJpYyBzdHJ1Y3R1cmUuCglNZXJnZWQgbW9uaXRvciBkcml2ZXIgaW50byBVU0VSIGRyaXZlci4KCgkqIHdpbmRvd3MvdHR5ZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9kZXNrdG9wLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS94MTFkcnYuaDoKCUEgZmV3IHNpbXBsaWZpY2F0aW9ucyBhbmQgb3B0aW1pemF0aW9ucyBpbiB0aGUgeDExIGRyaXZlci4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW46CglMaW5rIHR0eWRydiBhbmQgeDExZHJ2IG9iamVjdHMgaW50byB0aGVpciByZXNwZWN0aXZlIGRsbC4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbjogQWRkZWQgbWlzc2luZyBrZXlib2FyZC5zcGVjLgoKMjAwMC0wMy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbXNnYm94LmMsIG1pc2MvY29tbS5jLCBtaXNjL3ByaW50ZHJ2LmMsIHdpbjMyL2V4Y2VwdC5jOgoJTW92ZWQgRmF0YWxBcHBFeGl0IGZ1bmN0aW9ucyB0byB3aW4zMi9leGNlcHQuYy4KCUFkZGVkIGEgZmV3IHVzZXMgb2YgQ2FsbG91dCBpbnN0ZWFkIG9mIHJlZmVyZW5jaW5nIFVTRVIgZnVuY3Rpb25zCglkaXJlY3RseS4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jOgoJTW92ZWQgTG9hZEltYWdlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyB0byBjdXJzb3JpY29uLmMuCgoJKiBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvZ2RpL3RodW5rLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9rZXlib2FyZC5zcGVjLCBkbGxzL3VzZXIvdGh1bmsuYywgZGxscy91c2VyL3VzZXIuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2tleWJvYXJkLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG9iamVjdHMvbGluZWRkYS5jLCB3aW5kb3dzL3dpbi5jOgoJTW92ZWQgZ2RpL3VzZXIgdGh1bmtpbmcgZnVuY3Rpb25zIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGxzLgoJTW92ZWQga2V5Ym9hcmQuc3BlYyBpbnRvIHVzZXIgZGxsLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEaXNhYmxlIE9wZW5HTCBzdXBwb3J0IGlmIHRoZSBsYXR0ZXIgaXMgdGhyZWFkIHNhZmUuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvbWVtb3J5LmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZ3JhcGhpY3MvZGlzcGRpYi5jLCBpbmNsdWRlL2FuaW1hdGUuaCwgaW5jbHVkZS9idXR0b24uaCwgaW5jbHVkZS9jcnRkbGwuaCwgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kaXNwZGliLmgsIGluY2x1ZGUvZW5obWV0YWZpbGUuaCwgaW5jbHVkZS9pbWFnZWxpc3QuaCwgaW5jbHVkZS9tZXRhZmlsZS5oLCBpbmNsdWRlL3JlZ2lvbi5oLCBpbmNsdWRlL3NxbHR5cGVzLmgsIGluY2x1ZGUvd2luZS9pY21wYXBpLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5wb3MuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSB0aGUgaW5jbHVkZSBmaWxlcyBzZWxmIHN1ZmZpY2llbnQuCgoJKiBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3NvY2szMi5zcGVjLCBtaXNjL2RkZW1sLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9tcHIvbXByX21haW4uYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZC9maXhlZCBzb21lIGRvY3VtZW50YXRpb24gcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgd2luMzIvbmV3Zm5zLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiBpbmNsdWRlL3dpbm50LmgsIG9sZS9vbGUybmxzLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBBTlNJIEMgdmlvbGF0aW9ucy4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL25vdGVwYWQvRGEucmMsIHByb2dyYW1zL25vdGVwYWQvRGUucmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmMsIHByb2dyYW1zL3ZpZXcvdmlldy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBDIHJlbGF0ZWQgY29tcGlsZSBwcm9ibGVtcy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9nZGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2lubW0uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvZGRlbWwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVwZGF0ZWQgQVBJIGZpbGVzCgktIERvbid0IGNoZWNrIHRoZSAqLnNwZWMuYyBmaWxlcwoJLSBCZXR0ZXIgcGFyc2luZyBvZiBzdHJpbmdzCgktIEJldHRlciBkb2N1bWVudGF0aW9uIGNoZWNraW5nCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgc29tZSBkZWJ1ZyBjb2RlIGFuZCBjbGVhbmVkLXVwIHRoZSBtb3VzZSB3YXJwaW5nIGNvZGUKCS0gYmUgcmVhZHkgb25jZSBtb3VzZSB3aWxsIGJlIHJlcG9ydGVkIHJlbGF0aXZlbHkKCgkqIHdpbmRvd3MvbWRpLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGNvcHlpbmcgb2YgdGhlIE1ESSAnV2luZG93cycgbWVudSBpdGVtcyBpZiB0aGUgaXRlbXMgYXJlIG5vdCBvZgoJdHlwZSBNRlRfU1RSSU5HLgoKCSogY29udHJvbHMvbWVudS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTZXQgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIHRoZSBjY2ggZWxlbWVudCBvZiBNRU5VSVRFTUlORk8gaW4KCUdldE1lbnVJdGVtSW5mby4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBzcGVjIGZpbGUgZW50cmllcyBmb3IgRW51bUZvbnRGYW1pbGllc0V4Ki4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRnVydGhlciBjb2RlIHNpbXBsaWZpY2F0aW9ucyBhbmQgaW50ZXJmYWNlIChjb25zaXN0ZW5jeSkgaW1wcm92ZW1lbnRzLgoJRml4IHNlbGVjdGlvbiBvZiB0aGUgV2luZSBiaW5hcnkgd2hpY2ggd2FzIGJyb2tlbiBieSBhIHJlY2VudCBjaGFuZ2UuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHByb3BlciB0ZXJtaW5hdGlvbiB1cG9uIGZhaWx1cmUuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJhc2ljIHR5cGUgZXZhbHVhdGlvbi4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglFbnN1cmUgdGhhdCBub24tTlVMTCB0ZXJtaW5hdGVkIHN0aW5ncyBhcmUgc2F2ZWQgY29ycmVjdGx5LgoKCSogd2luZG93cy9pbnB1dC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCB0aGUgTm90aWZ5Q29kZSBpbiB0aGUgV01fQ09NTUFORCBtZXNzYWdlIHNlbnQgYnkKCUtCRF90cmFuc2xhdGVfYWNjZWxlcmF0b3IoKS4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbGlnaHRseSBiZXR0ZXIgUkVRVUVTVCBTRU5TRSBkdW1waW5nLCBmaXhlZCBHRVRfREVWX1RZUEUgcmV0dXJucywKCXdvcmsgYXJvdW5kIEVYRUMgU0NTSSBjb21tYW5kcyB3aGljaCBkbyBub3Qgc2V0IHRoZSBob3N0PC0+dGFyZ2V0IGRhdGEKCWZsYWdzLCBpZ25vcmUgZXJyb3JzIG9uIERWRCBSRVBPUlQgS0VZL0RWRCBTRU5EIEtFWS4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUNoYW5nZWQgUFRSQUNFX1BFRUtVU0VSIHRvIFBUUkFDRV9QRUVLVVNSIGFuZCBQVFJBQ0VfUE9LRVVTRVIgdG8KCVBUUkFDRV9QT0tFVVNSIGZvciBsaWJjNSg/KSBjb21waWxlLgoKCSogY29udHJvbHMvY29tYm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RvcCBhIFdNX1NFVFRFWFQgbWVzc2FnZSAoYW5kIGZyaWVuZHMpIHRvIGEgY29tYm8gc2VuZGluZyBDQk5fRURJVCoKCW1lc3NhZ2VzIHRvIHRoZSBwYXJlbnQuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L2hlYXAuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCAoY29ycmVjdCkgcHJvdG90eXBlIGZvciBIZWFwV2Fsay4KCgkqIGRsbHMvb2xlMzIvaWZzLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIFRoZSBJQ09NX0NNRVRIT0R4eHggY2F1c2UgcHJvYmxlbXMgYmVjYXVzZSB0aGUgJ2NvbnN0JyBjaGFuZ2VzIHRoZQoJICBzaWduYXR1cmUuIFRoZXJlJ3Mgbm8gc3VjaCB0aGluZyBvbiBXaW5kb3dzIGFueXdheSAoaXQncyBhIHNoYW1lKSBzbwoJICBqdXN0IHJlbW92ZSB0aGVtIGFsdG9nZXRoZXIuCgktIEhlYXBNaW5pbWl6ZSByZXR1cm5zIGEgdm9pZCwgbm90IGEgJ3ZvaWQqJwoKMjAwMC0wMy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9kZXNrdG9wLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy90dHlkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3dpbi5jLCBjb250cm9scy9kZXNrdG9wLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlzcGxheS9kaXNwbGF5X21haW4uYywgZGxscy9tb3VzZS9tb3VzZV9tYWluLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbW9uaXRvci5oLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oOgoJTW92ZWQgZ3JhcGhpY3MgaW5pdGlhbGlzYXRpb24gdG8gdGhlIHgxMWRydi90dHlkcnYgZGxsIGluaXQgY29kZS4KCU1lcmdlZCBldmVudCwga2V5Ym9hcmQgYW5kIG1vdXNlIGRyaXZlcnMgaW50byBVU0VSIGRyaXZlci4KCjIwMDAtMDMtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvb2xlMm5scy5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglJbXByb3ZlZCBDb21wYXJlU3RyaW5nQSBwZXJmb3JtYW5jZS4KCgkqIGxpYnJhcnkvd2luZXN0dWIuYzogQWRkZWQgbWlzc2luZyBkZWJ1Z3Rvb2xzLmggaW5jbHVkZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4LmwsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL3NlYXJjaC5jLCBwcm9ncmFtcy9wcm9nbWFuL2RpYWxvZy5jLCBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYywgcHJvZ3JhbXMvdmlldy9pbml0LmMsIHByb2dyYW1zL3ZpZXcvdmlldy5jOgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglGaXhlZCBzb21lIGNvbXBpbGVyIGVycm9ycyBhbmQgd2FybmluZ3MuCgoJKiBvbGUvb2xlMm5scy5jOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglUZW1wb3JhcmlseSBpbXBsZW1lbnRlZCB0aGUgTENNQVBfU09SVEtFWSBmbGFnIGluIHRoZSBMQ01hcFN0cmluZ1coKQoJZnVuY3Rpb24gcGVuZGluZyBhIG1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgbG9jYWxlcy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUhhY2s6IGFsd2F5cyB0cnkgYnVpbHRpbiBtb2R1bGUgYmVmb3JlIGVsZiBvciBlbGZkbGwgdG8gYXZvaWQgbG9hZGluZwoJYSBidWlsdGluIGRsbCAuc28gZmlsZSBpbiB0aGUgd3JvbmcgbW9kZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBvYmplY3RzL2ZvbnQuYzoKCU1vdmVkIGZvbnQgcmVzb3VyY2UgZnVuY3Rpb25zIG91dCBvZiB0aGUgWDExIGRyaXZlci4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHNvdXJjZSBmaWxlcyBzdG9yZWQgaW4gc3ViZGlyZWN0b3JpZXMuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RjLmM6CglBZGRlZCBHZXREQ09yZ0V4IGluIGdyYXBoaWNzIGRldmljZSBpbnRlcmZhY2UgYW5kIHJlbW92ZWQgWDExIGNvZGUKCWZyb20gZGMuYy4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzZWdtZW50ZWQvbGluZWFyIGJ1ZmZlcnMgbWFuaXB1bGF0aW9uLgoJQmV0dGVyIElPIGJ1ZmZlcmluZy4KCUFkZGVkIHNvbWUgbWlzc2luZyBwcm90b3R5cGVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUV4cGxpY2l0bHkgdXNlIHRoZSBUVk5feHh4QSB2ZXJzaW9uIG9mIHRoZSBtYWNyb3MuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBBZGRlZCB0aGUgVFZOX3h4eEEgbWFjcm9zCgktIEFkZGVkIG1pc3NpbmcgVEJOT1RJRlkgbWFjcm9zIGFuZCB0eXBlcwoJLSBBZGRlZCBTTkRNU0cKCgkqIGluY2x1ZGUvd2ludXNlci5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIFdNX0FQUC4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS94MTFkcnYuaCwgbGlicmFyeS93aW5lc3R1Yi5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL21haW4uYywgbWlzYy9wcmludGRydi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2MveG1hbGxvYy5jLCBvYmplY3RzL3BhbGV0dGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCBtb3N0IGNhbGxzIHRvIHhtYWxsb2MveHJlYWxsb2MuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gQWRkZWQgbWlzc2luZyBkZWZpbml0aW9uIGZvciBHTE9CQUxIQU5ETEUgYW5kIExPQ0FMSEFORExFCgktIEZpeGVkIHRoZSBwcm90b3R5cGUgb2YgV05ERU5VTVBST0MKCgkqIGluY2x1ZGUvZGRlbWwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5lcy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCVByb3BhZ2F0ZSBJc0RpYWxvZ01lc3NhZ2UgdG8gdGhlIHBhcmVudCBpZiB0aGUgZGlhbG9nIGhhcyB0aGUKCURTX0NPTlRST0wgZmxhZy4KCgkqIG1lbW9yeS9zdHJpbmcuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBhbiBleGNlcHRpb24gZnJhbWUgZm9yIGxzdHJjcHkxNi4KCgkqIGxvYWRlci9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IGF0dGFjaGluZyBpbXBvcnRlZCBETExzIG9mIGEgd2luZWxpYiBleGVjdXRhYmxlLgoKCSogaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSU9sZUl0ZW1Db250YWluZXIgaGFzIE9MRUdVSUQoMHgxMWMpLCBub3QgMHgxMWEuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBtZW1vcnkgY29ycnVwdGlvbiB3aXRoIENvVGFza01lbVJlYWxsb2MuCgoJKiB0b29scy9nZW5wYXRjaDogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJTWFkZSB2YXJpb3VzIGNoYW5nZXMgdG8gdG9vbHMvZ2VucGF0Y2ggaW5jbHVkaW5nIHN1Z2dlc3Rpb25zIGZyb20gT3ZlCglLYWF2ZW4gKFBsYWNlIGFkZGVkIGZpbGVzIGxhc3QgaW4gdGhlIHBhdGNoLiAgQWRkIGEgc3dpdGNoIHRoYXQKCXNwZWNpZmllcyBtb2RpZmllZCBmaWxlcy4pCgoJKiBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2lubnQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb3ZlZCB0aGUgZGVmaW5pdGlvbiBvZiBQVFNUUiBhbmQgTFBUU1RSIGZyb20gdGNoYXIuaCB0byB3aW5udC5oLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU2hvdWxkIGluY2x1ZGUgJ3dpbnNwb29sLmgnLgoKCSogdG9vbHMvd3JjL3BhcnNlci5oLCB0b29scy93cmMvcGFyc2VyLmw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gQW4gZXh0ZXJuIHN0YXRlbWVudCBmaW5pc2hlcyB3aXRoIHRoZSBmaXJzdCBjbG9zaW5nICd9JyBvciB0aGUgZmlyc3QKCSAgb3V0ZXIgJzsnCgktIEhhbmRsZSAnI2Vycm9yJywgJyNsaW5lJyBhbmQgJyNwcmFnbWEnIGV2ZW4gd2hlbiBpbiB0aGUgJ3BwX3N0cmlwcycsCgkgICdwcF9zdHJpcGUnLCAncHBfc3RyaXBwJyBvciAncHBfZmFsc2UnIGNvbnRleHRzIChqdXN0IGxpa2UgJyNpZicgYW5kCgkgIGNvKS4gIEJ1dCBzdGlsbCBkb24ndCBpc3N1ZSBhbiBlcnJvciBpZiAnI2Vycm9yJyBpcyBmb3VuZCB3aGVuIGluIHRoZQoJICAncHBfZmFsc2UnIHN0YXRlLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1ha2UgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBjb250cm9sJ3MgZGVmaW5pdGlvbiBvcHRpb25hbC4KCgkqIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCVN1cHBvcnQgbG9hZGluZyBhbnkgcHJlc2VudGF0aW9uIGFzcGVjdC4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQXZvaWQgYSBsaW5rIGVycm9yIGZyb20gYW5vdGhlciBETEwgb24gRnJlZUJTRC4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBqb3lzdGljayBJRC9kZXZpY2VJRC9kcml2ZXIgaGFuZGxlL2luc3RhbmNlIElEIG1peHVwLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglEZWxldGUgdGhlIHNobSBzZWdtZW50IGFzIHNvb24gYXMgd2luZSBhbmQgWCBoYXZlIGF0dGFjaGVkIGl0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBMYXJzIEhlZXRlIDxoZWxAYWRtaW4uZGU+CglDb3JyZWN0ZWQgaGFuZGxpbmcgb2YgcHJvdG89PU5VTEwgaW4gV0lOU09DS19nZXRzZXJ2YnluYW1lIGFuZAoJV0lOU09DS19nZXRzZXJ2Ynlwb3J0LgoKCSogd2luZG93cy9ldmVudC5jLCBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCBvYmplY3RzL2dkaW9iai5jLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvdHR5ZHJ2Ly5jdnNpZ25vcmUsIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmU6CglDcmVhdGVkIHNlcGFyYXRlIGRsbHMgZm9yIHVzZXIsZ2RpLHR0eWRydix4MTFkcnYuCglGaXhlZCBXaW5lbGliIGFyZ2MgaGFuZGxpbmcgKHRoYW5rcyB0byBFcmljIFBvdWVjaCkuCgoyMDAwLTAzLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS90d2Vhay5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgbG9hZGVyL21haW4uYywgbWlzYy90d2Vhay5jLCBvbGUvb2xlMm5scy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmM6CglNaXNjIHNtYWxsIGNsZWFudXBzLgoKCSogd2luZG93cy9zcHkuYywgd2luZG93cy9zeXNwYXJhbXMuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvbWFpbi5jLCBtaXNjL3NweS5jLCBvYmplY3RzL01ha2VmaWxlLmluLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJQXZvaWQgY2FsbGluZyB0aGUgKlJlY3QgVVNFUiBmdW5jdGlvbnMgZnJvbSBpbnNpZGUgR0RJLgoJTW92ZWQgYSBmZXcgVVNFUiBmdW5jdGlvbnMgdG8gYSBtb3JlIGFwcHJvcHJpYXRlIGxvY2F0aW9uLgoKCSogbG9hZGVyL21haW4uYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2MvdmVyc2lvbi5jLCBtaXNjZW11L21haW4uYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9zaGVsbC5oLCB3aW5lLmluaToKCU1vdmVkIGNvbW1hbmQtbGluZSBvcHRpb24gaGFuZGxpbmcgb3V0IG9mIHRoZSBYMTEgZHJpdmVyLgoJQWRkZWQgc3VwcG9ydCBmb3IgIi0tIiBwcmVmaXggb24gb3B0aW9ucy4KCVJlcGxhY2VkIGEgZmV3IFgxMSBjb21tYW5kLWxpbmUgb3B0aW9ucyBieSB3aW5lLmNvbmYgcGFyYW1ldGVycy4KCjIwMDAtMDMtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvdmdhLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvZGRyYXcuc3BlYywgcmVsYXkzMi9kaW5wdXQuc3BlYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9kaW5wdXQuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZXMuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOgoJTWFkZSBkZHJhdyBhbmQgZGlucHV0IHNlcGFyYXRlIGRsbHMuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglIYXZlIHRocmVhZHMgYW5kIHByb2Nlc3NlcyBleGl0IG1vcmUgY2xlYW5seSB3aGVuZXZlciBwb3NzaWJsZS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglJbmNsdWRlIHNwYWNlIGZvciByZXNvdXJjZXMgaW4gdGhlIG1vZHVsZSBoZWFkZXIgaW5zdGVhZCBvZiBkb2luZyBhCglzZXBhcmF0ZSBhbGxvY2F0aW9uLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXByLy5jdnNpZ25vcmUsIGRsbHMvbXByL01ha2VmaWxlLmluLCBtaXNjL25ldHdvcmsuYzoKCU1hZGUgTVBSIGEgc2VwYXJhdGUgZGxsLgoKCSogZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglSZXdyaXRlIHRoZSBCSUdCTE9DS0ZJTEUgaW1wbGVtZW50YXRpb24gZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRnVydGhlciBzaW1wbGlmeSB0aGUgY29kZSBhbmQgcmVtb3ZlIHNvbWUgcmVkdW5kYW50IGNvZGUuCglNYWtlIHRoZSB1c2VyIGludGVyZmFjZSBtb3JlIGNvbnNpc3RlbnQgYW5kIGFwcGVhbGluZy4KCgkqIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJQXZvaWQgYSByZWZjb3VudCBsZWFrIGluIFF1ZXJ5SW50ZXJmYWNlIHdoZW4gZGVsZWdhdGluZy4KCUFuZCBhIGNvdXBsZSBvZiBtaW5vciBidWdzLgoKMjAwMC0wMy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW50cm9kdWNlZCBEQkdfVkFMVUUgc3RydWN0IHRvIG1hbmlwdWxhdGUgZGVidWdnZXIvZGVidWdnZWUgYWRkcmVzcyBzcGFjZS4KCUFkZGVkIHdhdGNoIChoYXJkd2FyZSBhc3Npc3RlZCBkZWJ1Z2dpbmcpIGFuZCB3aGF0aXMgKHR5cGUgb2YgZXhwcikgY29tbWFuZHMuCglGaXhlZCBzb21lIGlzc3VlcyBpbiBsb2NhbCB2YXJzIGhhbmRsaW5nIChzdGFicyBwYXJzaW5nICYgcmVnaXN0ZXJzIG9wdGltaXphdGlvbikuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY2E+CglVcGRhdGUgRElCIHNlY3Rpb25zIGluIHRleHQgb3V0cHV0IGFuZCBmb3IgZ3JhcGhpY3MgcHJpbWl0aXZlcy4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglNaWNoYWVsIEFiZC1FbC1NYWxlayAob24gYmVoYWxmIG9mIENvcmVsKQoJV2hlbiB3ZSB3ZXJlIHN3aXRjaGluZyB0byBhbm90aGVyIGRlc2t0b3AsIHRoZSBwb3B1cCB3aW5kb3dzIGxvc3QKCXRoZWlyIFdTX1ZJU0lCTEUgZmxhZy4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCUF2b2lkIFNJR1NUT1AvU0lHQ09OVCByYWNlIHdoZW4gcHRyYWNlIGlzIGRpc2FibGVkLgoJRml4ZWQgY29udGV4dCBmbGFncyBoYW5kbGluZyAodGhhbmtzIHRvIEVyaWMgUG91ZWNoKS4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglBdm9pZCBTSUdTVE9QL1NJR0NPTlQgcmFjZSB3aGVuIHB0cmFjZSBpcyBkaXNhYmxlZC4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOiBGaXhlZCBidWcgaW4gZ2VuZXJhdGVfc3RhcnR1cF9kZWJ1Z19ldmVudHMoKS4KCgkqIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvUkVBRE1FLCBwcm9ncmFtcy93aW5lbWluZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZW1pbmUvZGlhbG9nLmgsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5oLCBwcm9ncmFtcy93aW5lbWluZS9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5lbWluZS93aW5lbWluZS5zcGVjLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUpvc2h1YSBUaGllbGVuIDxmb3pleUBuZXR6ZXJvLmNvbT4KCUFkZGVkIHdpbmVtaW5lIGFwcC4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJSW1wcm92ZWQgdGhlIHZpc3VhbCBhcHBlYXJlbmNlIG9mIHRoZSB1c2VyIGludGVyZmFjZS4gTWFkZSB0aGUgY29kZQoJc29tZXdoYXQgc2ltcGxlci4KCjIwMDAtMDMtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYzoKCVdhbGRlayBIZWJpc2NoIDxoZWJpc2NoQG1hdGgudW5pLndyb2MucGw+CglJbXBsZW1lbnRlZCBfcmVhZCBhbmQgX2xzZWVrLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCBjb252ZXJzaW9uIG9mIGxldmVsIHBhcmFtZXRlciBpZiBXSU5TT0NLX3NldHNvY2tvcHQgaXMgY2FsbGVkCglmb3Igb3B0aW9uIFdTX1NPX0RPTlRMSU5HRVIuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCByb3VuZGluZyBvZiB0aGUgcmVzdWx0IGluIE11bERpdjE2KCkuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaDoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgRnJlZUJTRCBjb21waWxhdGlvbi4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmgsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXk6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBNYWtlIHJlZ2lzdHJ5IHVzYWdlIGEgbGl0dGxlIG1vcmUgY29ycmVjdCBhbmQgbW9kZXJuCgktIENyZWF0ZSBob21lIGZvciBhbGwgZHBsYXkgbmFtZSBzZXJ2ZXIgZnVuY3Rpb25hbGl0eQoJLSBBZGQgdGhlIGZyYW1ld29yayBmb3IgRW51bVNlc3Npb25zCgktIERvY3VtZW50YXRpb24gdXBkYXRlCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJRGltaXRyaWUgUGF1biA8ZGltaUBiaWdmb290LmNvbT4KCUNsZWFuZWQgdXAgZGVidWcgY2hhbm5lbHMgYSBiaXQuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJSW1wbGVtZW50ZWQgc3RyZXRjaGVkIGJsdHMgZm9yIGRlcHRoIDI0ICh1bm9wdGltaXplZCkuCgoyMDAwLTAzLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jOiBGaXhlZCBPVVRQVVRfREVCVUdfU1RSSU5HIHBvaW50ZXIgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbWVtb3J5L3ZpcnR1YWwuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVJlbW92ZWQgUFJPQ0VTU19Jc0N1cnJlbnQoKS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglBZGRlZCBzcGVjaWZpYyByb3V0aW5lcyBmb3IgT1VUUFVUX0RFQlVHX1NUUklORyBhbmQgRVhDRVBUSU9OIGRlYnVnIGV2ZW50cy4KCUdlbmVyYXRlIGEgYnJlYWtwb2ludCBldmVudCBvbiBwcm9jZXNzIGF0dGFjaC4KCU1pc2MgY2xlYW51cHMgaW4gcmVxdWVzdCBoYW5kbGluZy4KCjIwMDAtMDMtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHJlbHlpbmcgb24gZXhjZXB0aW9uIGNvZGVzIHRvIGtub3cgd2hlbiBkZWJ1Z2dlciBpcyBlbnRlcmVkIGZvciBhCglzaW5nbGUgc3RlcCB0cmFwLgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBtaXNjZW11L21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgcHJvYyB0byBzdGFydCBkZWJ1Z2dpbmcgcHJvY2VzcyBmcm9tIGl0cyBjb21tYW5kIGxpbmUgKGJ5IGxhdW5jaGluZyBpdCkuCgoJKiBkZWJ1Z2dlci9leHByLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYW51cC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2FmbS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgQmxhY2sgYXMgYSB2YWxpZCBmb250IHdlaWdodC4KCUNvcGUgd2l0aCBhZm0gZmlsZXMgdGhhdCBkbyBub3QgY29udGFpbiB7RmFtaWx5fEZ1bGx9TmFtZSBlbnRyaWVzLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOiBEYXZpZCBFbGxpb3R0IDxkZmVAbmV0bml0Y28ubmV0PgoJLSBHb3QgcmlkIG9mIFBST0ZJTEUgZnVuY3Rpb25zLgoJLSBVc2UgZnVuY3Rpb25hbGl0eSBvZiBhc3BpLmMuCgktIEF1dG9tYWdpY2FsbHkgcmVhZCAvcHJvYy9zY3NpL3Njc2kgKHBhcnQgb2YgYXNwaS5jIHdoaWNoIGlzIGFscmVhZHkKCSAgaW4gdHJlZSkuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUhhbmRsZSAyNCBiaXQgRElCcyA8LT4gMjQgYml0IGRlZXAvMjQgYml0cyBwZXIgcGl4ZWwgWEltYWdlcy4KCgkqIHByb2dyYW1zL3ZpZXcvZ2xvYmFscy5oOiBNaWtlIENhc3RsZSA8ZGFsZ29kYUBpeC5uZXRjb20ubmV0PgoJQWRkZWQgcmVzb3VyY2UuaCBpbmNsdWRlLgoKCSogd2luZG93cy9yZWN0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSXNSZWN0RW1wdHkgYWxzbyByZXR1cm5zIHRydWUgZm9yIG5lZ2F0aXZlIHdpZHRoL2hlaWdodHMgKHZlcmlmaWVkCglhZ2FpbnN0IFdpbmRvd3MpLCBmb3VuZCBieSBCcmFkIE9saXZlciA8YnJhZG1hbkBwb2JveC5jb20+LgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVRha2UgdHlwZSBmcm9tIHJlZmVyZW5jZWQgdmFyaWFudCBmb3IgVlRfQllSRUYgJiYgVlRfVkFSSUFOVC4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9lbGZkbGwuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglTdG9yZSB0aGUgbGlzdCBvZiBsb2FkZWQgZGxscyBpbiB0aGUgc2VydmVyLCBhbmQgZ2VuZXJhdGUgZGVidWcgZXZlbnRzCglpbnRlcm5hbGx5LgoKMjAwMC0wMy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCUFkZGVkIHNlcnZlciBwcm90b2NvbCB2ZXJzaW9uIGNoZWNrLgoKCSogaW5jbHVkZS9hc3BpLmgsIGluY2x1ZGUvd2luYXNwaS5oLCBpbmNsdWRlL3duYXNwaTMyLmgsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9kb3Nhc3BpLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBuZXRuaXRjby5uZXQ+CgktIFNsaWdodGx5IHJld29ya2VkIGluY2x1ZGUgZmlsZXMgKGxlc3MgbWVzc3ksIG1vcmUgc3RyYWlnaHRmb3J3YXJkKS4KCS0gTW92ZWQgRE9TIEFTUEkgZnVuY3Rpb25hbGl0eSB0byBtc2Rvcy9kb3Nhc3BpLmMuCgktIEdvdCByaWQgdXNpbmcgUFJPRklMRSB0byBnZXQgU0NTSSBpbmZvIGZyb20gd2luZS5jb25mLgoJLSBSZWFkIHNjc2kgaW5mbyBmcm9tIC9wcm9jL3Njc2kvc2NzaS4KCS0gQWRkZWQgc2V0dGluZyBvZiBhIHJlYXNvbmFibGUgdGltZW91dCB3aGVuIG9wZW5pbmcgYSBTQ1NJIGRldmljZSAoNQoJICBtaW51dGVzLCBkZWZpbmVkIGluIHdpbmVzY3NpLmgpLgoJLSBFeGVjU2NzaUNvbW1hbmQgbm93IEFMV0FZUyBwb3N0cywgZXZlbiBvbiBlcnJvciAod2hpY2ggaXMgdGhlIGNvcnJlY3QKCSAgYmVoYXZpb3IpLgoKCSogZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIHJlc291cmNlcy9zeXNyZXNfU2sucmMsIHJlc291cmNlcy91c2VyMzIucmM6CglTaW1lbiBaYW1lY25payA8c2ltZW5AbmV4dHJhLnNrPgoJQWRkZWQgU2xvdmFrIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9KYS5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIHJlc291cmNlcy8uY3ZzaWdub3JlLCByZXNvdXJjZXMvc3lzcmVzX0phLnJjLCByZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL3JzcmMucmM6CglKdW5pY2hpIEt1Y2hpbmlzaGkgPGprdWNoaUBtYWhvcm9iYS5uZS5qcD4KCUFkZGVkIHNvbWUgSmFwYW5lc2UgcmVzb3VyY2VzLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9vbGUyaW1wbC5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZXN0ZC5oLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lcnJvci5oOgoJQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBPTEUgY2xpcGJvYXJkIGZ1bmN0aW9uYWxpdHkgZm9yIEVtYmVkIFNvdXJjZSBmb3JtYXQuCglJdCBoZWxwcyB5b3UgY3V0IGFuZCBwYXN0ZSBkYXRhIHdpdGggRW1iZWQgU291cmNlIGZvcm1hdCBiZXR3ZWVuCglhcHBsaWNhdGlvbnMuICBJdCBhbHNvIGltcGxlbWVudHMgT2xlQ3JlYXRlRnJvbURhdGEgYW5kCglPbGVRdWVyeUNyZWF0ZUZyb21EYXRhIGFuZCBmaXhlcyBzb21lIGJ1Z3MgaW4gZGF0YWNhY2hlLmMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCXdtLT5tb2RuYW1lIG1pZ2h0IGJlIGludmFsaWQgYXQgdGhlIGVuZCBvZiBGcmVlTGlicmFyeS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9kZWJ1Z3N0ci5jLCBtaXNjL2Vycm9yLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9kY2UuaCwgaW5jbHVkZS9tZW51LmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL25vbmNsaWVudC5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3N0cnVjdDMyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2lucG9zLmgsIGxvYWRlci9tb2R1bGUuYywgY29udHJvbHMvYnV0dG9uLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgaW5jbHVkZXMgYW5kIGZpeGVkIHRoZSBjb21waWxlIGVycm9ycy4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9zaGVsbC5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy93c3ByaW50Zi5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglDb3JyZWN0ZWQgdmFsdWUgZm9yIERBWVNfSU5fT05FX1lFQVIuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglDbGVhbmVkIHVwIENSVERMTF9fdW5saW5rLgoKCSogY29udHJvbHMvc3RhdGljLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVRoZSBzdGF0aWMgY29udHJvbCBvbmx5IG5lZWRzIHRvIGludmFsaWRhdGUgaXRzIHJlY3Qgd2hlbiB3ZSBTZXRUZXh0LgoKCSogaW5jbHVkZS93aW51c2VyLmgsIG1pc2Mvc3B5LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBmZXcgbWVzc2FnZXMgZm9yIElNRS4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIG1pc2NlbXUvbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgZGlyZWN0bHkgYWNjZXNzaW5nIGRlYnVnZ2VlIG1lbW9yeS4KCUV4ZWN1dGlvbiBjb250ZXh0IChtb2RlLCBzdGVwcy4uLikgYXJlIG5vdyBsaW5rZWQgdG8gYSB0aHJlYWQuCglSZW1vdmVkIHNvbWUgWDExIGNyc3QgaGFja3MuCglSZXdyb3RlIGluZm8vd2FsayBjb21tYW5kcy4KCVJlbW92ZWQgZGlyZWN0IGRlYnVnZ2VyIGludm9jYXRpb24gY29kZSAoYW5kIG1vdmVkIHRoZSByZXN0IHRvIHRoZSBuZXcKCXdpbmVkYmcuYyBmaWxlKS4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvZXhjZXB0LmMsIHdpbjMyL25ld2Zucy5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglSZW1vdmVkIFBEQjMyX0RFQlVHR0VEIGZsYWcgYW5kIHNlbmQgYWxsIGRlYnVnIGV2ZW50cyB1bmNvbmRpdGlvbmFsbHkuCglJbXBsZW1lbnRlZCBJc0RlYnVnZ2VyUHJlc2VudCgpLgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJR2VuZXJhdGUgQ1JFQVRFX1BST0NFU1MvVEhSRUFEIGRlYnVnIGV2ZW50cyBpbnRlcm5hbGx5IGluIHRoZSBzZXJ2ZXIuCgoyMDAwLTAzLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL3RocmVhZC5jLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBpbmxpbmUgZnVuY3Rpb25zIFNldExhc3RFcnJvciBhbmQKCUdldEN1cnJlbnRUaHJlYWRJZC4gIEFkZGVkIGFzbSBpbmxpbmVzIGZvciBJbnRlcmxvY2tlZCogZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL250ZGRrLmgsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUFkZGVkIERiZ0JyZWFrUG9pbnQuIEZpeGVkIGV4Y2VwdGlvbiByZWNvcmQgY29udGVudHMgb24gU0lHVFJBUC4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgc2Vjb25kIGluc3RhbmNlIERHUk9VUCBsb2FkaW5nLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIG1pc2MvbWFpbi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IFNQSV9HRVRJQ09OTUVUUklDUy4KCUNoYW5nZSBXQVJOIC0+IEZJWE1FIGZvciB1bmltcGxlbWVudGVkIFNQSV9zIGFuZCBzZXQgYXBwcm9wcmlhdGUgZXJyb3IuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWN0dWFsIHdyaXRlIHRoZSBjYWNoZWQgc3RydWN0IGluIEdsb2JhbE1lbW9yeVN0YXR1cy4KCgkqIGRvY3VtZW50YXRpb24vZm9udHMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUluY2x1ZGUgaW4gdGhlIEFkZEZvbnRSZXNvdXJjZUEvVyBmaXhtZSBtZXNzYWdlIGEgcG9pbnRlciB0byB0aGUgZm9udHMKCWRvY3VtZW50LiBJbiB0aGlzIGRvY3VtZW50IHRlbGwgdGhlIHVzZXIgaG93IHRvIGZpbmQgdGhlIG5lZWRlZCB0b29scy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZCBhIG1lc3NhZ2UgYW5kIGZpeCBlcnJvciBjb2RlIGlmIF9fd3NfZ2V0c2VydmJ5bmFtZSgpIGFuZAoJX193c19nZXRzZXJ2Ynlwb3J0KCkgY2Fubm90IGZpbmQgdGhlIHJlcXVlc3RlZCBzZXJ2aWNlLgoJRml4IFdJTlNPQ0tfc2V0c29ja29wdCgpIHdoZW4gY2FsbGVkIHdpdGggb3B0dmFsIHBvaW50aW5nIHRvIDE2IGJpdCBpbnQuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJQ2hlY2sgZm9yIGV4aXN0ZW5jZSBpZiBNTUlPX0VYSVNUIGlzIHBhc3NlZCB0byBNTUlPX09wZW4uCgoJKiBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmM6IEplZmYgVHJhbnRlciA8amVmZnRAY29yZWwuY2E+CglUaGUgcGF0aG5hbWUgd2FzIHN0b3JlZCBpbiBhIHN0cmluZyBvZiBzaXplIDEwMCwgd2hpY2ggd2FzIG5vdCBhbHdheXMKCWxhcmdlIGVub3VnaC4gSXQgc2hvdWxkIGJlIHNldCB0byBNQVhfUEFUSCAoMjU1KS4KCgkqIGxvYWRlci90YXNrLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU2V2ZXJhbCBmaXhlcyB0byBNYWtlUHJvY0luc3RhbmNlLgoKMjAwMC0wMy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJQWRkZWQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgZXh0cmEgc3ltbGlua3MgZm9yIC5zbyBmaWxlcyB0aGF0IGNvbnRhaW4KCW11bHRpcGxlIGRsbHMuCgoyMDAwLTAzLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzLy5jdnNpZ25vcmUsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCU1vdmVkIGRsbC1zcGVjaWZpYyBtYWtlIHJ1bGVzIHRvIGEgc2VwYXJhdGUgTWFrZWRsbC5ydWxlcyBmaWxlLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBGaXhlZCBlcnJvciBjaGVja2luZyBpbiByZWdpc3RyeSBzYXZpbmcuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV1NBQ2xlYW51cCBzaG91bGQgc2V0IGxhc3QgZXJyb3IgdG8gV1NBTk9USU5JVElBTElTRUQgaWYgZmFpbGluZwoJYmVjYXVzZSBXaW5zb2NrIHdhcyBub3QgaW5pdGlhbGl6ZWQuLi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29Mb2FkTGlicmFyeSBnZXRzIFVOSUNPREUsIG5vdCBBU0NJSSBzdHJpbmdzLiAoc3BvdHRlZCBieSBMYXdzb24KCVdoaXRuZXkpLCByZW1vdmVkIHRoZSBkbGxOYW1lIGNvbXBvbmVudCBvZiB0aGUgb3BlbkRsbHMuICBBZGRlZCBzb21lCglkZWJ1Z3N0cl9ndWlkKCkuCgoJKiBkbGxzL250ZGxsL250LmM6IERhbiBTY290dCA8ZGFuLnNjb3R0QGhvbWUuY29tPgoJRml4ZWQgdHlwb3MgaW4gX2FsbGRpdigpIGFuZCBfYWxsbXVsKCkuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtZXNzYWdlIGZvciBtaXNzaW5nIHhwbSBkZXZlbCBsaWJzIGZvciBkZWJpYW4vY29yZWwuCgoJKiBkbGxzL29sZTMyL29sZTIuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJT2xlUmVnR2V0VXNlclR5cGUgZGlkIHF1ZXJ5IHdyb25nIHJlZ2lzdHJ5IGtleS4KCgkqIG1lbW9yeS9nbG9iYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGFwcGxpY2F0aW9ucyBjYWxsIEdsb2JhbE1lbW9yeVN0YXR1cygpIHZlcnkgb2Z0ZW4uIENhY2hlIHRoZQoJcmVzdWx0cyBvZiB0aGUgY2FsbCBmb3IgMSBzZWNvbmQgKHNwb3R0ZWQgYnkgQ29yZWwpLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRDbGlwYm9hcmREYXRhMTYgbWlnaHQgcmV0dXJuIGFuIGludmFsaWQgZ2xvYmFsIGhhbmRsZSAoc3BvdHRlZCBieQoJQ29yZWwpLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBMaWxpYSBSb3VtaWFudHNldmEKCWNiQ291bnRTaXplT2ZFbmhNZXRhZmlsZSBjYWxsYmFjayBmdW5jdGlvbiBpbnN0ZWFkIG9mIGluY3JlYXNpbmcgYQoJY29udGVudHMgb2YgdGhlIHBvaW50ZXIgdG8gdGhlIHNpemUgaW5jcmVhc2VkIHRoZSBwb2ludGVyIGl0c2VsZi4KCgkqIGRvY3VtZW50YXRpb24vcHNkcml2ZXI6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBkb2NzIHRvIHJlZmxlY3QgY2hhbmdlIHRvIC53aW5lcmMgcHJvY2Vzc2luZy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIGNvbmZpZy5jYWNoZSBwcm9ibGVtcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogVmFoaWQgUG91cmxvdGZhbGkKCVRyYWNrYmFyIGNvbnRvbCBkaWQgbm90IGhhdmUgcHJvcGVyIHBvc2l0aW9uIHZhbHVlIGluIGNhc2Ugb2YKCVNCX1RIVU1CVFJBQ0sgbm90aWZpY2F0aW9uIG1lc3NhZ2U6IGl0IHdhcyBhbHdheXMgc2VuZGluZyAwLgoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCU1hZGUgdGhlIHNsaWRlciBjb250cm9sIGEgcmVjdC4gIEl0IGhhZCBiZWVuIHRyeWluZyB0byBkcmF3IGEgbm90Y2hlZAoJc2xpZGVyLCBidXQgdGhlIHJlc3VsdCBkaWRuJ3QgbG9vayByaWdodC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1hZGUgV0lOU09DS19zZXRzb2Nrb3B0IGhhbmRsZSBvcHRpb24gU09fRE9OVExJTkdFUiBjb3JyZWN0bHkuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglDVVJTT1JJQ09OX0ljb25Ub0N1cnNvcjogaW5jb25zaXN0ZW50IExvY2svVW5sb2NrCgoJKiBmaWxlcy9wcm9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBST0ZJTEVfR2V0U3RyaW5nOiBvbmx5IGFjY2VwdCBOVUxMIGZvciBrZXluYW1lIHRvIHJldHVybiB0aGUgbGlzdCBvZgoJa2V5cyBhcyBXaW45NSBkb2VzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CglGaXggYSBzaWduIGJ1ZyB3aGVyZSBtZW1jcHkgd2FzIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIGxlbmd0aC4KCjIwMDAtMDItMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9wcm9maWxlLmM6IE1ha2UgcHJvZmlsZSBrZXkgYSBnbG9iYWwgaGFuZGxlLgoKCSogZGxscy93aW4zMnMvLmN2c2lnbm9yZSwgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW4zMnMvdzMyc2tybmwuYywgTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCVJlbmFtZWQgbGlid2luMzJzIHRvIHVzZSB0aGUgcHJvcGVyIGRsbCBuYW1lIChsaWJ3MzJza3JubCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgbXNkb3MvaW50MjEuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCVJlbW92ZWQgc3VwZXJmbHVvdXMgI2luY2x1ZGUgc3RhdGVtZW50cyBmb3IgaGVhZGVyIGZpbGVzIGluY2x1ZGVkIHR3aWNlLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglNYWtlIHVwZG93biBjb250cm9sIHdvcmsuIFVwRG93biBjb250cm9sIGFsd2F5cyBzZW5kcyBXTV8qU0NST0xMCgltZXNzYWdlIGFuZCB1c2VzIFNCX1RIVU1CUE9TSVRJT04gY29kZSAobm90IFNCX0xJTkVbVVB8RE9XTl0pLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBiZWhhdmlvciBvZiBzZW5kaW5nIFdNX0NPTlRFWFRNRU5VIHdoZW4gcmVjZWl2aW5nIGEKCVdNX1JCVVRUT05VUC4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IE11cmFsaSBQYXR0YXRoZQoKCVRoaXMgaXMgdGhlIHBhdGNoIGZvciB0aGUgT2xlQ29udmVydE9MRVNUUkVBTVRvSVN0b3JhZ2Ugd2luZSBBUEkuCglUaGlzIEFQSSBjYWxscyBhbm90aGVyIGZ1bmN0aW9uIGNhbGxlZCBPTEVDT05WRVJUX0xvYWRPTEUxMCB3aGljaAoJYmFzaWNhbGx5IHJlYWQgdGhlIE9MRSBzdHJlYW0gZnJvbSB0aGUgZmlsZSB0aHJvdWdoIHRoZSBjYWxsYmFjawoJZnVuY3Rpb24gKHRoaXMgaXMgcGFzc2VkIGJ5IHRoZSBhcHBsaWNhdGlvbikuCgoJVGhlIHJlYWRpbmcgZm9ybWF0IHdhcyB3cm9uZy4gU3RpbGwgSSBhbSBub3QgdmVyeSBzdXJlIHRoaXMgaXMgMTAwICUKCWNvcnJlY3QgZm9ybWF0LiBJIGRpZCBzb21lIHJldmVyc2UgZW5naW5lZXJpbmcgYW5kIGZvdW5kIHRoZSBmb3JtYXQuIEkKCWhhdmUgdHJpZWQgd2l0aCBkaWZmZXJlbnQgT0xFIG9iamVjdCBhbmQgaXRzIHdvcmtlZCBpbiBwYXJhZG94LiBJCgloYXZlbid0IHRlc3RlZCB3aXRoIGFueSBvdGhlciBhcHBzLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHNvbWUgc3R1YnMgYW5kIGFkZGVkIGZvcndhcmRzIGluIG9yZGVyIHRvIG1ha2UgYm90aCB3aW5hcGlfY2hlY2sKCWFuZCBjaGVja2xpbmsgaGFwcHkuCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgdGhlIHJlc3Qgb2YgdGhlIEFQSSBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIGdsb2JhbCBmaWxlIHRvIHRoZQoJbG9jYWwgZmlsZXMuCgoyMDAwLTAyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6IFJlbGVhc2UgMjAwMDAyMjcuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9pbml0LmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldENvbXB1dGVyTmFtZUEoKTogYWRkZWQgcGFyYW1ldGVyIGNoZWNrIGxpa2UgV2luOTUgZG9lcy4KCgkqIHRvb2xzL2J1aWxkLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGaXhlZCBzb21lIFNvbGFyaXMgc3BlY2lmaWMgYXNzZW1ibGVyIHByb2JsZW1zCgktIEZpeGVkIHNvbWUgbWlzc2luZyAudHlwZSBAZnVuY3Rpb24gKGhlbHBzIGRlYnVnZ2luZyB3aXRoIGRieCkKCS0gRml4ZWQgY29kZSBuZWVkaW5nIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSlfXyBmb3Igbm9uLUdDQyBFTEYgY29tcGlsZXJzCgktIEZpeGVkIHVzZSBvZiB6ZXJvIHdpZHRoIGFycmF5cyAoQU5TSSBDIHZpb2xhdGlvbikKCS0gQEdPVE9GRiBvbiBTb2xhcmlzIGRvZXNuJ3Qgd29yayAtIHVzZSBAR09UIGFuZCByZWRpcmVjdGlvbiBpbnN0ZWFkCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgaW5jbHVkZS9zZWxlY3RvcnMuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBTb2xhcmlzIHNwZWNpZmljIGFzc2VtYmxlciBwcm9ibGVtcy4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB3aW5hcGlfY2hlY2suCgoJKiB0b29scy9nZW5wYXRjaDogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJQWRkZWQgdXRpbGl0eSB0aGF0IGdlbmVyYXRlcyBwYXRjaGVzIGZvciBzdWJtaXNzaW9uIHRvCgl3aW5lLXBhdGNoZXNAd2luZWhxLmNvbS4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCW9sZWF1dDMyIHNob3VsZCBub3QgaW1wb3J0IGZ1bmN0aW9ucyBmcm9tIG9sZXBybzMyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglEb24ndCBkaXNwbGF5IHRoZSBjb250ZXh0IG1lbnUgb24gYSBkb3VibGUgY2xpY2suCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJU2V0IHRoZSBmb250IG9uIHRoZSBlZGl0IGxhYmVsIGNvbnRyb2wgdG8gdGhhdCB1c2VkIGJ5IHRoZSBsaXN0dmlldwoJY29udHJvbC4gSXQgYWxzbyB1c2VzIHRleHQgbWV0cmljcyB0byBzZXQgYSBtb3JlIHJlYXNvbmFibGUgaW5pdGlhbAoJZWRpdCBjb250cm9sIHNpemUuCgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJSGFuZGxlIE1fU0VUUkVEUkFXIGluIExpc3RWaWV3LgoJRml4IHRvIEVuc3VyZVZpc2libGUgdG8gaGFuZGxlIHNtYWxsIGFuZCBsYXJnZSBpY29uIGNvcnJlY3RseS4KCUFkZCBlZGl0IGxhYmVsIGZ1bmN0aW9ubmFsaXR5IHRvIHRoZSBsaXN0dmlldyBhbmQgdGhlIGZpbGUgb3BlbiBkaWFsb2cuCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJUmVsYXNlREMgaW4gQ3JlYXRlRWRpdExhYmVsLgoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUFkZCBmdW5jdGlvbm5hbGl0eSB0byBjcmVhdGUgbmV3IGZvbGRlciBpbiB0aGUgb3BlbiBkaWFsb2cuCglBZGQgc3VwcG9ydCBmb3IgcmlnaHQgY2xpY2sgbWVudSBpbiBjb21tb24gZmlsZSBkaWFsb2cuCglMSVNUVklFV19FbmRFZGl0bGFiZWwgaXMgbm93IGhhbmRsaW5nIE5PTkxQU1RSX1RFWFRDQUxMQkFDSyBsaXN0dmlldyBpdGVtcy4KCglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUxJU1RWSUVXX0dldENvbHVtbkEgZml4IChkbyBub3QgY29weSBzdHJpbmcsIHBhc3MgcG9pbnRlcnMpLgoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglQcmV2ZW50aW5nIGEgZGl2aWRlIGJ5IHplcm8gd2hlbiBoYW5kbGluZyBMVldfRU5TVVJFVklTSUJMRSBtZXNzYWdlLgoKCURvbiBLZWxseQoJLUltcGxlbWVudGVkIHRoZSBzb3J0aW5nIG9uIGluc2VydCBvZiBpdGVtcyBpbnRvIGEgTGlzdFZpZXcgY29udHJvbAoJIHdpdGggZWl0aGVyIExWU19TT1JUQVNDRU5ESU5HIG9yIExWU19TT1JUREVTQ0VORElORyBzZXQuCgktKGhlbHBpbmcgZXZpbCBhcHBsaWNhdGlvbnMpOiBzb21ldGltZXMgbm90IHNvIHdlbGwgc3RydWN0dXJlZCBhcHBzCgkgKFBGUEk5MCwgaW4gdGhpcyBjYXNlKSB3aWxsIG5vdCBmdWxseSBpbml0aWFsaXplIHN0cnVjdHMuICBJbiB0aGUgY2FzZQoJIG9mIHRoZSBMVk1fR0VUSVRFTSBtZXNzYWdlIHRoZSBhcHAgbWF5IGhhdmUgb25seSBpbml0aWFsaXplZCB0aGUgbWFzawoJIGFuZCBpSXRlbSBtZW1iZXJzIG9mIHRoZSBzdHJ1Y3QuICBBZGRlZCBwcm9jZXNzaW5nIG9mIHRoZSBMVklGX1BBUkFNCgkgbWFzayBpbiB0aGUgY2FzZSB0aGF0IGlTdWJJdGVtIHdhcyBzZXQgYnV0IGlzIGludmFsaWQvdW5pbml0aWFsaXplZC4KCglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXggZm9yIGhhbmRsaW5nIGNvcnJlY3RseSB0aGUgY2FuY2VsbGluZyBtb2RlIG9mIHRoZSBFZGl0IGxhYmVsLgoJRml4IHdpZHRoIGNhbGN1bGF0aW9uIG9mIHRoZSBlZGl0IGxhYmVsLgoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgYmVoYXZpb3Igb2Ygc2VuZGluZyBXTV9DT05URVhUTUVOVSB3aGVuIHJlY2VpdmluZyBhCglXTV9SQlVUVE9OVVAuCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgYSBwYWludGluZyBwcm9ibGVtIHdpdGggbGlzdHZpZXcgd2hlbiB0aGUgdmlldyBjaGFuZ2VzIGFuZCBhbgoJZWRpdCBsYWJlbCBpcyBhY3RpdmUuCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgYSBub3RpZmljYXRpb24gcHJvYmxlbSB3aXRoIGxpc3R2aWV3LiBPbiBjcmVhdGlvbiBpZiB0aGUgdXNlcgoJc3BlY2lmaWVzIGFuIGl0ZW0gd2l0aCBmb2N1cyBhbmQvb3Igc2VsZWN0aW9uIHdlIHNob3VsZCBzZW5kIHRoZQoJcHJvcGVyIG5vdGlmaWNhdGlvbi4gSW5zZXJ0IHdhcyBwcmV2ZW50aW5nIExJU1RWSUVXX1NldEl0ZW0gZnJvbQoJc2VlaW5nIHRoZSBjaGFuZ2VzIGFuZCBzZW5kaW5nIHRoZSBub3RpZmljYXRpb24uCgoJTWFrZSB0aGUgZHJhdyBpdGVtIHJlY3RhbmdsZSBjb25zaXN0ZW50IHdpdGggdGhlIHNlbGVjdGlvbgoJcmVjdGFuZ2xlLiBUaGlzIGFsbG93cyB1cyB0byBjbGljayBvbiB0aGUgZm9sZGVycyBhbmQgaWNvbnMgaW4gdGhlCglmaWxlIG9wZW4gZGlhbG9nIGJveCBhbmQgdGhlIGl0ZW0gYWN0dWFsbHkgZ2V0cyBzZWxlY3RlZC4KCgkqIGZpbGVzL2RyaXZlLmM6IFBldHIgVG9tYXNlayA8dG9tYXNla0BldGYuY3VuaS5jej4KCS0gV3JpdGUgc2VyaWFsIG51bWJlcnMgdG8gdGhlIGRldmljZSAoRkFUKQoJLSBEUklWRV9SZWFkU3VwZXJibG9jazogYmV0dGVyIGNoZWNraW5nIGZvciB0aGUgRkFUIGZzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldEZ1bGxQYXRoTmFtZSBmaXhlcy4KCjIwMDAtMDItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCBtZW1vcnkvc3RyaW5nLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQgZGVmaW5pdGlvbiBvZiB0aGUgUnRsTWVtb3J5IGZ1bmN0aW9ucy4gVXNlIG1hY3JvcyBpbnRlcm5hbGx5IGFuZAoJZm9yIFdpbmVsaWIsIHVzZSByZWFsIGZ1bmN0aW9ucyBmb3IgZXhwb3J0cyBmcm9tIG50ZGxsLgoKCSogaW5jbHVkZS9vbGUyLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJUHJvdG90eXBlcyBPbGVJbml0aWFsaXplLCBPbGVVbmluaXRpYWxpemUuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQXJyYW5nZUN0cmxQb3NpdGlvbnM6IGZpeCBmb3IgdXNlci1kZWZpbmVkIHRlbXBsYXRlIHdpdGggbm8gc3RjMzIuCgoJKiBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVudS5oLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglTZW5kIFdNX0hFTFAgbWVzc2FnZSB3aGVuIEYxIGlzIHByZXNzZWQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFl1eGkgWmhhbmcgPHl1eGlAY29yZWwuY2E+CglJbiB0aGUgbGlzdGJveCwgd2hlbiB0aGUgbGFzdCBpdGVtIGlzIHNlbGVjdGVkIGFuZCBkZWxldGVkLCBpdCBzdGlsbAoJYXBwZWFyZWQgaW4gdGhlIHdpbmRvdy4KCglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUluIExJU1RCT1hfVXBkYXRlU2Nyb2xsKCksIGlmIHRoZSBsaXN0Ym94IGRpZCBub3QgaGF2ZSB0aGUgV1NfU0NST0xMCglzdHlsZSBpdCB3b3VsZCBqdXN0IHJldHVybi4gIFRoaXMgbGVmdCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgYmFyCgl1bmluaXRpYWxpemVkIGFuZCBpdCB3YXMgYXBwZWFyaW5nIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3Rib3ggd2hlbgoJaXQgZGlkIG5vdCBoYXZlIHRvLgoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNvbT4KCUxJU1RCT1hfU2V0Q29sdW1uV2lkdGggYWRkcyBleHRyYSAyIHBpeGVscyB0byB0aGUgcGFzc2VkIGNvbHVtbiB3aWR0aAoJKGl0IHNheXMgaXQgaXMgZm9yIGNvbHVtbiBtYXJnaW5zKS4gT2J2aW91c2x5IGl0IGlzIHdyb25nLCBiZWNhdXNlCgltYXJnaW5zIG11c3QgYmUgaW50ZXJuYWwuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2Vycm9yaW5mby5jOgoJRXJyb3JJbmZvIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIGluIG9sZTMyLCBub3Qgb2xlYXV0MzIuCgoJKiBkbGxzL2NydGRsbC93Y3N0cmluZy5jOiBNb3JlIHBvcnRhYmxlIENSVERMTF9pc3djdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNb3ZlZCBmaWxlIGZ1bmN0aW9ucyB0byBzaGxmaWxlb3AuYwoJTmV3IFNIRUxMX0RlbGV0ZURpcmVjdG9yeUEKCVVzZSBzaGVsbCBub3RpZmljYXRpb25zLgoJRW5hYmxlZCBmaWxlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeCBmb3IgT3Blbkljb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0dWIgUGF0aElzRGlyZWN0b3J5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVzIGZvciBTaGVsbEV4ZWN1dGVFeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJhc2ljIGltcGxlbWVudGF0aW9uIG9mIHNoZWxsIG5vdGlmaWNhdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3NoZWxsMzI6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJVXBkYXRlZC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIFdpbmVsaWIgdHlwZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hyZXMucmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgaWNvbiBubyA0IChvcGVuIGZvbGRlcikuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9vbGVhdXRvLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN0dWJzIGZvciB7Q3JlYXRlLEdldCxTZXR9RXJyb3JJbmZvLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglSZXR1cm4gYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHN1Y2Nlc3MgY29kZSBpbiBPbGVDcmVhdGUgc3R1YiBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6IERvbiBLZWxseQoJSW4gV2luZG93cyBQcm9wZXJ0eSBTaGVldCBjYW4gaGF2ZSBhbnkgbWl4IG9mIGljb24tbGVzcyB0YWJzIGFuZCB0YWJzCgl3aXRoIGljb25zLiAgQWRkcyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgaWNvbiB3ZSdyZSBhZGRpbmcgaXMgbm9uLU5VTEwKCShvdGhlcndpc2UgcmFuZG9tIGp1bmsgZnJvbSBtZW1vcnkgY2FuIGJlIHJlbmRlcmVkKSB3aGVuIHRoZSBhcHBsaWNhdGlvbgoJaGFzIHNwZWNpZmllZCB0aGUgUFNQX1VTRUlDT05JRCBmbGFnIGlzIHNldC4gIENoYW5nZXMgdG8gdGhlIFRhYiBjb250cm9sCgl0byBvbmx5IHJlbmRlciBpY29ucyBmb3IgdGFicyB0aGF0IGhhdmUgdGhlIFRDSUZfSU1BR0UgZmxhZyBzZXQKCShwcmV2aW91c2x5LCBpZiB0aGUgZmxhZyB3YXMgc2V0IHRoZSBlbnRpcmUgaW1hZ2UgbGlzdCBvZiBpY29ucyB3YXMKCXJlbmRlcmVkKS4KCglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVzIGZvciBzb21lIHRhYiBjb250cm9sIGJ1Z3MKCglIZW5uaW5nIEhvZmZtYW5uCglGaXhlZCBzb21lIHdpZHRoIHByb2JsZW0gd2l0aCBPV05FUkRSQVcgdGFiLgoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglUQ01fQURKVVNUUkVDVCBpcyBub3cgcmV0dXJuaW5nIGNvbnNpc3RhbnQgY29tcGFyZSB0byBXaW5kb3dzLgoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJRml4ZWQgcHJvYmxlbSB3aXRoIHRhYiBzZWxlY3Rpb24uIFdoZW4geW91IHNlbGVjdCB0YWIgaXQgYmVjYW1lcyBmaXJzdAoJdmlzaWJsZSB0YWIuIE5vdyBsZWZ0bW9zdCB2aXNpYmxlIHRhYiBpcyBjYWxjdWxhdGVkIHByb3Blcmx5LgoJLSBBZGRlZCBjb2RlIGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHVwZG93biBjb250cm9sLgoJLSBGb3JjZWQgcmVjYWxjdWxhdGlvbiBvZiB0YWJzJyBjb29yZGluYXRlcyB3aGVuOgoJYSkgYWxsIGl0ZW1zIGFyZSBkZWxldGVkLAoJYikgd2luZG93IHN0eWxlIGlzIGNhbmdlZAoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIG5lY2Vzc2FyeSBkZWZpbmVzIGFuZCBzdHJ1Y3R1cmVzIHRvIGNvbXBpbGUgV2luZUxpYiBhcHBzIHVzaW5nCglNRkMgNi4wIGhlYWRlcnMuCglGaXhlZCB0eXBvIGluIFRDTV9TRVRNSU5UQUJXSURUSCBjb25zdGFudC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBCaWxsIEppbiA8YmlsbGpAY29yZWwuY2E+CglCaXRtYXAgYnV0dG9ucyB3ZXJlIG5vdCByZWZyZXNoZWQgY29ycmVjdGx5LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJVGhpcyByZXZlcnRzIE1hdHRzIHBhdGNoLiAgVGhlIG1lc3NhZ2luZyBuZWVkcyBkb3VibGUgY2hlY2tpbmcuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW5wcm9jLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL3czMnNjb21iLmMsIG1zZG9zL2RwbWkuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgdG9vbHMvYnVpbGQuYywgd2luMzIva2VybmVsMzIuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9zZWxlY3RvcnMuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvbWFpbi5jOgoJSW1wcm92ZWQgdGhlIHNlbGVjdG9yIGdldC9zZXQgZnVuY3Rpb25zLgoJU3VwcG9ydCBBTlNJLWNvbXBhdGlibGUgaW5saW5lIGFzbSAod2l0aCB0aGUgaGVscCBvZiBQYXRyaWsgU3RyaWR2YWxsKS4KCgkqIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYW5pbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglNYWRlIHdpbm1tIGEgc2VwYXJhdGUgc2hhcmVkIGxpYnJhcnkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB0b29scy9iaW4ycmVzLmMsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWlzYy9yZWdpc3RyeS5jLCBvYmplY3RzL2RpYi5jLCBvbGUvb2xlMm5scy5jLCBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgQyB2aW9sYXRpb25zLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIFNvbGFyaXMgc3BlY2lmaWMgY29tcGlsZXIgaXNzdWUuCgoJKiBmaWxlcy9kb3NfZnMuYywgd2luMzIvaW5pdC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgZGVidWcgbWVzc2FnZSBjcmFzaGVzLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGltcGxlbWVudCBFbnVtT2JqZWN0cyBhbmQgR2V0UHJvcGVydHkgZm9yIE1vdXNlIGFuZCBKb3lzdGljayBkcml2ZXJzCgktIGltcGxlbWVudCBTZXREYXRhRm9ybWF0IGZvciB0aGUgTW91c2UgZHJpdmVyCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5zcGVjLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9tbWRkay5oLCB3aW5kb3dzL21lc3NhZ2UuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2suYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgaGFyZHdhcmUgcmVsYXRlZCBoYW5kbGluZyB0byBkbGxzL3dpbm1tL2pveXN0aWNrIGRyaXZlci4KCUdvdCByaWQgb2Ygam95U2VuZE1lc3NhZ2VzKCkgaGFjayAobm93IGltcGxlbWVudGF0aW9uIHdpdGggYSB0aW1lcikuCgoyMDAwLTAyLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9kZWJ1Z3N0ci5jOgoJUmVsZWFzZSB1bnVzZWQgc3BhY2UgaW4gZGVidWcgc3RyaW5ncyB0byBhdm9pZCB0b28gZnJlcXVlbnQKCXdyYXAtYXJvdW5kcyBpbiB0aGUgY2lyY3VsYXIgYnVmZmVyLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbjogQWRkZWQgaW1wb3J0IG9mIG9sZXBybzMyLgoKCSogd2luZWRlZmF1bHQucmVnOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIE9MRSBlbnRyaWVzIGFuZCBjb21tZW50cy4KCgkqIG9sZS9ubHMvanBuLm5sczogSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUphcGFuZXNlIHN1cHBvcnQgaW1wbGVtZW50ZWQuCgoJKiBvbGUvb2xlMm5scy5jOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglTdHViYmVkIG91dCB0aGUgaW1wbGVtZW50YXRpb24gb2YgTENNQVBfU09SVEtFWSBpbiBMQ01hcFN0cmluZ1coKSBpbgoJb3JkZXIgdG8gYWxsb3cgV2luZG93cyA5eCBQZXJsIHRvIHN0YXJ0LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVRoaXMgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIHJldHVybiBidWZmZXIgdXNlZCBpbiBHZXRQcmludGVyRHJpdmVyQSB0bwoJemVyb3MuIFRoaXMgcHJldmVudHMgYnVmZmVyIG92ZXJydW5zIGNhdXNlZCBieSBhY2Nlc3NpbmcgZ2FyYmFnZSBkYXRhLgoJU29tZSBpbXByb3ZlbWVudHMgdG8gdGhlIE5VTEwgY2hlY2sgcGF0Y2guCgoJR2F1dGFtIEphaW4KCUVudW1QcmludGVycyBpcyBub3QgcmV0dXJuaW5nIHRoZSBudW1iZXIgb2YgcHJpbnRlcnMgZm91bmQgaW4gY2FzZSB0aGUKCXBhcmFtZXRlciBkd0xldmVsIGlzIDEuCgoJKiBkbGxzL250ZGxsL3JlZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbGlkIE9iamVjdEF0dHJpYnV0ZXMtPlJvb3REaXJlY3RvcnkuCglQZXJmb3JtIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBmb3IgdGhlIHJlZ2lzdHJ5IHBhdGhzLgoKCSogaW5jbHVkZS9udGRkay5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIHJlZ2lzdHJ5IGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm5scy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNb3ZlIGRlZmluaXRpb24gb2YgQ1BJTkZPIHN0cnVjdHVyZSBmcm9tIHdpbmJhc2UuaCB0byB3aW5ubHMuaAoJQWRkIGRlZmluaXRpb24gb2YgQ1BJTkZPRVggc3RydWN0dXJlIHRvIHdpbm5scy5oCgoJKiBpbmNsdWRlL2NydGRsbC5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCBwcm90b3R5cGUgZm9yIENSVERMTF93Y3N0b2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgdG9vbGJhciBidXR0b24gc2l6ZS4KCgkqIG1pc2MvbHN0ci5jOiBIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgQ2hhck5leHRBL0NoYXJOZXh0RXhBIGZvciBEQkNTLgoKCSogd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgbWlzYy9jb21tLmMsIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIvc25vb3AuYywgdG9vbHMvYnVpbGQuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akBXUEkuRURVPgoJTWlzYy4gZml4ZXMgZm9yIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lcnJvci5oOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgT2xlQ29udmVydCByb3V0aW5lcy4KCglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCURvbid0IGFsbG93IHRvIHJlc2l6ZSBzdHJlYW0gb3BlbiBpbiByZWFkIG9ubHkgbW9kZQoJQWxsb3cgd3JpdGUgYWNjZXNzIGZvciBzdHJlYW0vc3RvcmFnZSBvcGVuIHdpdGggU1RHTV9SRUFEV1JJVEUuCglTdGdPcGVuU3RvcmFnZSByZXR1cm4gdmFsdWVzIGFyZSBub3cgbW9yZSBkZXRhaWxlZC4KCURvbid0IHJlbHkgb24gU1RHTV9DUkVBVEUgZmxhZyBpbiB0aGUgU3RvcmFnZSBjb25zdHJ1Y3Rvci4KCVByZXZlbnRpbmcgdG8gd3JpdGUgb3V0IG9mIGRhdGUgcHJvcGVydHkuCgoJT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jYT4KCUFsbG93IGJvdGggcG9zaXRpdmUgJiBuZWdhdGl2ZSAzMi1iaXQgaW50ZWdlcnMgYXMgd2l0aCBNRkMgYXNzdW1wdGlvbi4KCVRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIDMyYml0IGxpbWl0IG9uIElTdHJlYW06OipfU2VlayBvcGVyYXRpb25zLgoKCUpvaG4gTGkgPGpvaG5sQGNvcmVsLmNhPgoJV2hlbiBXUCBvcGVucyBhIGxpbmtlZCBmaWxlLCB0aGUgbWFsbG9jIGZ1bmN0aW9uIGluCglPTEVDT05WRVJUX0xvYWRPTEUxMCguLi4pIHJldHVybnMgYSBOVUxMLiBUaGlzIGNhdXNlcyBhIGxhdGVyIFdpbmUKCWNyYXNoLiBUaGUgYWN0dWFsIHByb2JsZW0gaXMgdGhlIGZ1bmN0aW9uIHJlYWRpbmcgYSBsYXJnZSBkYXRhIGxlbmd0aC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSBzb21lIGxvY2FsIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHNvbWUgb2YgdGhlIEFQSSBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIGdsb2JhbCBmaWxlIHRvIHRoZSBsb2NhbAoJZmlsZXMuCgoJKiBkbGxzL21vdXNlL21vdXNlX21haW4uYywgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQFdQSS5FRFU+CglCZXR0ZXIgdGhyZWFkIHNhZmV0eSBmb3IgV2FycFBvaW50ZXIgaGFjay4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBBZGRBY2Nlc3NBbGxvd2VkQWNlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNvbWUgbW9yZSBMaXN0Vmlld18gbWFjcm9zLCB3aW5lbGliIGZpeGVzLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQgYWxsb2NhdGlvbiBvZiAxNngxNiBpY29ucy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRm9yIHVuaWNvZGU6IGdpdmUgdGhlIHNlbGVjdGVkIGZpbGVuYW1lIGJhY2suCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGVjayBmb3IgWHBtIGhlYWRlcnMgYW5kIGFkZCAvdXNyL2xvY2FsL2xpYiB0byAvZXRjL2xkLnNvLmNvbmYgaWYKCW5lY2Vzc2FyeS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglXZSBkb24ndCBuZWVkIHRvIGNhbGwgTFB0b0RQIGluIGhlcmUgYXMgZmFyIGFzIFBhdEJsdCBkb2VzIGl0IGludGVybmFsbHkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUluIFdpbmRvd3MsIGlmIFByb3BlcnR5U2hlZXQgY2FuJ3QgY3JlYXRlIHNvbWUgcGFnZSBpdCBqdXN0IHNraXBzIGl0LiBUaGlzCglwYXRjaCBhZGRzIHNpbWlsYXIgYmVoYXZpb3VyIHRvIFdpbmUuIEl0IGFsc28gYWRkcyBzb21lIE5VTEwgY2hlY2tzLgoKCTx5dXhpQGNvcmVsLmNvbT4KCUZpeCBwcm9wZXJ0eSBzaGVldCBpbml0aWFsaXphdGlvbiBidWdzLgoKCU1hdHRoZXcgUm9iZXJ0c29uCglUaGUgdGVtcGxhdGUgd2FzIGNhbGxpbmcgR2V0QWN0aXZlSW5kZXggd2hpY2ggd2FzIG5vdCBiZWluZyBzZXQgaW4gdGhlCglwcm9wc2hlZXQgY29kZSwgYW5kIHRoZSBjYWxsIHdhcyBtb3ZlZCBiZWZvcmUgd2UgY2FsbCBTZXRBY3RpdmUgLQoJYmVjYXVzZSB0aGF0J3Mgd2hlcmUgd2UgcXVlcnkgZm9yIHRoZSBBY3RpdmUgSW5kZXguCgoJTm9vbWVuIEhhbXphCglSZXNpemUgcHJvcGVydHkgc2hlZXQgdG8gdGhlIGxhcmdlc3QgZGlhbG9nIHNpemUuCgoJRG9uIEtlbGx5CglJbiB0aGUgV01fSU5JVERJQUxPRyBoYW5kbGVyIGZvciB0aGUgcHJvcCBzaGVldCwgdGhlcmUgaXMgYSBjYWxsIHRvCglQUk9QU0hFRVRfSXNUb29TbWFsbCgpIHdoaWNoLCBpZiBpdCByZXR1cm5zIFRSVUUsIGNhbGxzCglQUk9QU0hFRVRfQWRqdXN0U2l6ZSgpLiAgQ29udHJhcnkgdG8gaXRzIGNvbW1lbnQsIC4uX0FkanVzdFNpemUoKSBhY3R1YWxseQoJYWxpZ25zIHRoZSBzaXplcyBvZiB0aGUgImxhcmdlc3QiIHByb3AuIHNoZWV0IGRpYWxvZyB0ZW1wbGF0ZSBhbmQgdGhlIHRhYgoJY29udHJvbC4gIFRoZSBJc1Rvb1NtYWxsKCkgY2FsbCBkb2Vzbid0IHByb3Blcmx5IGNhdGNoIHRoaXMgbWlzbWF0Y2guCglNb2RpZmllZCB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIFRSVUUgaWYgdGhlIHNpemVzIG1pc21hdGNoIGFuZCByZW5hbWVkIGl0IHRvCglQUk9QU0hFRVRfU2l6ZU1pc21hdGNoKCkgdG8gcmVmbGVjdCBpdHMgcHJvcGVyIHVzZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2UgZGVmaW5lIFBhdGhJU1VSTEEsIHNvIHVzZSBpdC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJSW4gZnVuY3Rpb24gSU1BR0VMSVNUX0ludGVybmFsRHJhd01hc2sgd2UgaGF2ZSB0byBtYXNrIG91dCBvdmVybGF5IG1hc2sgaW4KCWZTdHlsZS4gT3RoZXJ3aXNlIGNvbXBhcmlzb24gZlN0eWxlID09IElMRF9OT1JNQUwgd2lsbCBub3Qgd29yaywgd2hpY2ggbGVhZHMKCXRvIGltcHJvcGVyIGRpc3BsYXkgb2Ygb3ZlcmxheSBpbWFnZXMuCgoJKiB3aW5kb3dzL3dpbi5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglBVE9NcyBhcmUgY29uc2lkZXJlZCB1bmlxdWUsIHNvIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgY2xhc3MKCXBvaW50ZXJzIGluIEZpbmRXaW5kb3cuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jb20+CglOb3QgYWxsIHJlZ2lvbiBmdW5jdGlvbnMgdXBkYXRlZCAndHlwZScgZmllbGQgdG8gcmVmbGVjdCBjdXJyZW50CglyZWdpb24gc3RhdGUuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6CglFcmljIFdpbGxpYW1zIDxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCU1pbm9yIGZpeHVwcyBhbmQgdHdlYWtpbmcsIGFuZCBhIGR1bW15IGhvb2suCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGhhbmRsaW5nIG9mIGZpbGVkbGcgZmxhZ3MuCgoyMDAwLTAyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBGSVhNRSBjb21tZW50IGZvciBlbnRyeSBwb2ludCBwYXJhbWV0ZXIuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIHN0dWIgZm9yIE9MRTMyLk1rUGFyc2VEaXNwbGF5TmFtZQoJLSBzcGVsbGluZyBmaXhlcwoKCSogd2luZG93cy9kaWFsb2cuYywgd2luZG93cy93aW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBmaXhlZCBteSBzbGlnaHRseSBpbmNvcnJlY3QgRW5kRGlhbG9nIHBhdGNoCgktIGNsZWFuZWQgdXAgd2luLmMKCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgdGhlIGJ1ZmZlciBsaXN0IGluIHRoZSBkaXJlY3Rzb3VuZCBvYmplY3QgdGhyZWFkLXNhZmUuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSXQgc2VlbXMgdG8gYmUgR2V0TW9kdWxlRmlsZU5hbWUxNiB0aGF0IGNoZWNrcyBleGUgdmVyc2lvbiBvbiB3aGV0aGVyCgl0byByZXR1cm4gbG9uZyBvciBzaG9ydCBwYXRocywgbm90IEdldE1vZHVsZUZpbGVOYW1lQS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQXZvaWQgdG9vIG11Y2ggcmVmcmVzaGluZyB3aGVuIGNoYW5naW5nIHRoZSBkcml2ZSBpbiB0aGUgMTYgYml0cyBmaWxlCglkaWFsb2cuCgoJKiBmaWxlcy9kb3NfZnMuYzogUGV0ciBUb21hc2VrIDx0b21hc2VrQGV0Zi5jdW5pLmN6PgoJR2V0TG9uZ1BhdGhOYW1lIHJld3JpdGUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYzoKCUNvcmVsIG1lcmdlOgoKCVBpZXJyZSBNYWdlYXUKCURvbid0IHVwZGF0ZSB0aGUgY29tYm8gYm94IHNlbGVjdGlvbiB3aGVuIGNsb3NpbmcgdGhlIGRpYWxvZyBvbmx5IHdoZW4KCWNsaWNraW5nIG9uIE9LIGJ1dHRvbi4gIEFkanVzdCBmaWxlIGRpYWxvZyBzaXplIHdoZW4gaGVscCBidXR0b24gaXNuJ3QKCXByZXNlbnQuCgoJRG9uIEtlbGx5LgoJRml4ZXMgcHJvYmxlbXMgd2l0aCBvcGVuIGRpYWxvZyBib3ggZmlsdGVycy4KCglVbHJpY2ggQ3pla2FsbGEKCVByZXZlbnRzIHRoZSBoZWxwIGJ1dHRvbiBmcm9tIGRpc3BsYXlpbmcgb24gT3BlbkZpbGUgZGlhbG9ncyB1bmxlc3MKCXRoZSBwcm9wZXIgZmxhZyBpcyBzZXQgaW4gdGhlIE9QRU5GSUxFTkFNRSBzdHJ1Y3QuCgoJWXV4aSBaaGFuZwoJRml4ZWQgbWVtb3J5IGxlYWsuCgoJSmVhbi1DbGF1ZGUgQmF0aXN0YQoJQWRkIHRvb2x0aXBzIHRvIHRoZSBmaWxlIERpYWxvZyB0b29sYmFyLgoKCVN5bHZhaW4gQm91Y2hhcmQsIEJpbGwgSmluCglUaHJlZSBuZXcgZnVuY3Rpb25zCglFbnVtU2VsZWN0ZWRQaWRscywgR2V0TnVtU2VsZWN0ZWQsIEZJTEVETEc5NV9Pbk9wZW5Vc2luZ1ZpZXc6IGNvcnJlY3Rpb25zCglJbnN0ZWFkIG9mIHBhc3NpbmcgaW4gYSBjb3B5IG9mIG9mbiwgcGFzc2luZyBpbiB0aGUgcG9pbnRlciBvZiBvZm4uCgoJRGF2aWQgR29sZGluZwoJQSAiISIgd2FzIG1pc3NpbmcgaW4gYSBjaGVjayBhZ2FpbnN0IGxwc3RySW5pdGlhbERpci4KCglSaWNrIE11dHprZQoJRml4ZWQgY3Jhc2g6IGlmIGRpYWxvZyBoYXMgbm8gZmlsZXR5cGVzIGFwcGVhcmluZyBpbiB0aGUgZHJvcGRvd24gbGlzdC4KCglNYXR0IFJvYmVydHNvbiwgVWxyaWNoIEN6ZWthbGxhCglGaXhlZCBwcm9ibGVtcyBvY2N1cnJpbmcgd2l0aCBzZWxlY3Rpb24gb2YgZmlsZXMgaW5zaWRlIG9wZW5maWxlZGxnLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGFjdGl2YXRlZCB1c2Ugb2YgdGVtcGxhdGVzCgktIG1vdmVkIHRoZSBjcmVhdGluZyBvZiBuZXcgZm9sZGVycyB0byB0aGUgc2hlbGx2aWV3CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3RhcnRlZCB3aXRoIHNoZWxsLWNsaXBib2FyZCBoYW5kbGluZyAoY29udGV4dCBtZW51IGN1dCZwYXN0ZSwKCWRyYWcmZHJvcCkuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglSZW1vdmVkIEl0ZW1JRExpc3RMaXN0LCByZW9yZ2FuaXNhdGlvbiwgbW9yZSBmb3JtYXRzLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGltcGxlbWVudGVkIHJlbmFtZSwgY29weSBhbmQgZGVsZXRlIGZpbGUKCS0gIm5ldyBmaWxlIiBpcyBhY3RpdmF0aW5nIGxhYmVsIGVkaXQgZm9yIHJlbmFtZQoJLSBpbXBsZW1lbnRlZCBJU2hlbGxWaWV3X1NlbGVjdEl0ZW0KCgkqIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmV0dGVyIGNvbnRleHQgbWVudXMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbmV3IGZpbGVzIHJlbGF0ZWQgdG8gY29udGV4dCBtZW51IGFuZCBkcmFnIGRyb3AgZmlsZSBvcGVyYXRpb25zCgktIHJlbmRlciBmdW5jdGlvbnMgZm9yIGNsaXBib2FyZGZvcm1hdHMKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IFN0ZXBoYW5lIEx1c3NpZXIKCUltcGxlbWVudGVkIFBhdGhJc1VSTEEgYW5kIG1vZGlmaWVkIFNoZWxsRXhlY3V0ZTE2IHRvIGJlIGFibGUgdG8gbG9hZCBVUkwKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdGFydGVkIGltcGxlbWVudGF0aW9uIG9mIHNoZWxsIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5ldyBmaWxlIChTSEZpbGVPcGVyYXRpb24pLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbmV3IGludGVybmFsIGludGVyZmFjZSBmb3IgaXRlbSBtYW5pcHVsYXRpb24gKGN1dC9wYXN0ZS9uZXcgZm9sZGVyL2RlbGV0ZS9yZW5hbWUpCgktIGltcGxlbWVudGVkIElQZXJzaXN0Rm9sZGVyMiBpbnRlcmZhY2UKCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5ldyBhUGlkbCBoYW5kbGluZyBmdW5jdGlvbnMuCgoJKiBtaXNjL21haW4uYzogQXZvaWQgY3Jhc2ggb24gdXNhZ2UgbWVzc2FnZS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogQXZvaWQgY3Jhc2ggb24gTlVMTCBkYXRhIHBvaW50ZXIuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHN0dWIgZm9yIFJ0bEFzc2VydCgpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBKYXBhbmVzZSBqcDEwNiBhbmQgcGM5OHgxIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiBQUk9GSUxFXyBmdW5jdGlvbnMsIG5vdyBhY2Nlc3NpbmcgV2luZSBjb25maWcgb3B0aW9ucwoJdGhyb3VnaCB0aGUgcmVnaXN0cnkuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV2hpbGUgY3JlYXRpbmcgdGhlIHdpbmUgY29uZmlnIGtleSwgbWFrZSBzdXJlIHRoYXQgb25seSBXaW5lJ3Mgc3Via2V5cwoJYXJlIHZvbGF0aWxlLgoKCSogZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE5VTEwgcHRyIGluIFBTRFJWX0dldERldmljZUNhcGFiaWxpdGllcy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBhIGJpdCBtYWdpYyB0byBDT05TT0xFX2dldF9pbnB1dCBzbyB3ZSBkb24ndCBnZXQgc2luZ2xlIEVzY2FwZXMKCWZyb20gZnVuY3Rpb24ga2V5IGVzY2FwZSBzZXF1ZW5jZXMuCgoyMDAwLTAyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2F0b20uYzogQnVnIGZpeCBmb3IgbmF0aXZlIFVTRVIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIHdpbmUuaW5pOgoJSGFyZC1jb2RlZCBEbGxQYWlycyBjb25maWd1cmF0aW9uOyB0aGVyZSBpcyBubyBuZWVkIGZvciB0aGUgdXNlciB0bwoJY2hhbmdlIGl0LgoKCSogZ3JhcGhpY3MvcHNkcnYvYWZtLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy92ZXJzaW9uLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGZpbGVzL3Byb2ZpbGUuYzoKCVN0b3JlIGNvbmZpZyBmaWxlIGNvbnRlbnRzIGluIHRoZSByZWdpc3RyeSBzbyB3ZSBvbmx5IGhhdmUgdG8gbG9hZCBpdAoJb25jZSBwZXIgc2Vzc2lvbi4KCVJlcGxhY2VkIFBST0ZJTEVfRW51bWVyYXRlV2luZUluaVNlY3Rpb24gYnkgUFJPRklMRV9FbnVtV2luZUluaVN0cmluZy4KCVJlbW92ZWQgYSBmZXcgdW5uZWNlc3NhcnkvdW51c2VkIGNvbW1hbmQtbGluZSBvcHRpb25zLgoKMjAwMC0wMi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaDoKCVN0b3JlIHRoZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MgZXhlIGZpbGUgaW4gdGhlIHNlcnZlci4KCVJlbW92ZWQgUFJPQ0VTU19Jbml0aWFsKCkuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jb20+CglTZXQgdGhlIHR5cGUgb2YgVmFyQnN0ckZyb21EYXRlIHRvIGR3RmxhZ3MsIGluc3RlYWQgb2YgbGNpZC4KCglVbHJpY2ggQ3pla2FsbGEgIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgdGhlIHByb2JsZW0gd2l0aCB0aGUgZGF0ZSBiZWluZyBvZmYgYnkgb25lLgoKCVBldGFyIERqdWtpYwoJVmFyaWFudENvcHkgd2FzIGlnbm9yaW5nIFZUX0RJU1BBVENILFZUX1VOS05PV04sIGFuZCBWVF9WQVJJQU5ULiBTYW1lCgl3aXRoIFZhcmlhbnRDbGVhci4KCUNvZXJjZSBmdW5jdGlvbiBkb2Vzbid0IGltcGxlbWVudCBjb2VyY2lvbiBmb3IgVlRfRElTUEFUQ0ggdHlwZS4KCgkqIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdXNlci5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZC9jb3JyZWN0ZWQgb3JkaW5hbHMgb2Yga2VybmVsLCBnZGksIHVzZXIuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVBvcHVwIHdpbmRvd3Mgd2lsbCBiZSBoaWRkZW4gd2hlbiBtaW5pbWl6aW5nIHRoZSBtYWluIGZyYW1lLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglDaGFuZ2VkIHRoZSBsb2FkaW5nIG9mIHR5cGVsaWIgZmlsZXMgdG8gdXNlIGEgbWVtb3J5IG1hcHBpbmcgaW5zdGVhZAoJb2YgcmVhZGluZyB0aGUgZmlsZSBiaXQgYnkgYml0LgoKCSogZmlsZXMvZHJpdmUuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEUklWRV9GaW5kRHJpdmVSb290KCkgYWx3YXlzIGNoZWNrZWQgZnJvbSBkcml2ZSBBOiB0byBaOiBmb3IgZWFjaAoJcGF0aCBjb21wb25lbnQgZXZlbiBpZiBhIG1hdGNoIGFscmVhZHkgb2NjdXJyZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcHJvdG90eXBlIGZvciBPbGVUcmFuc2xhdGVDb2xvci4KCgkqIGZpbGVzL2ZpbGUuYzogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglBZGRlZCBXQVJOIG1lc3NhZ2VzIG9uIG9wZW4gZXJyb3JzLgoKCSogbWlzYy93c3ByaW50Zi5jOiBIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYnVmZmVyIGlzIDEwMjQgYnl0ZXMgaW4gV2luMzIuCgoyMDAwLTAyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9zbm9vcC5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9yZWdpb24uaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2MvZGRlbWwuYywgbWlzYy90b29saGVscC5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9yZWdpb24uYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2RyaXZlci5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBmaWxlcy9kb3NfZnMuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTW92ZWQgU3lzdGVtSGVhcCBhbGxvY2F0aW9ucyB0byB0aGUgcHJvY2VzcyBoZWFwLgoKCSogd2luZG93cy93aW4uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEbyBub3QgdXNlIEdsb2JhbEZpbmRBdG9tIHdpdGggYXRvbSBoYW5kbGVzIGluIENyZWF0ZVdpbmRvdyogZnVuY3Rpb25zLgoKCSogd2luZG93cy9kZWZ3bmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJU2VuZCBXTV9IRUxQIG1lc3NhZ2Ugd2hlbiBGMSBpcyBwcmVzc2VkLgoKCSogb2xlL25scy9icmYubmxzLCBvbGUvbmxzL2Nvci5ubHMsIG9sZS9ubHMvY3ltLm5scywgb2xlL25scy9nYWUubmxzLCBvbGUvbmxzL2dkaC5ubHMsIG9sZS9ubHMvZ2R2Lm5scywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvd2lubmxzLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJQWxhc3RhaXIgTWNLaW5zdHJ5IDxBbGFzdGFpci5NY0tpbnN0cnlAZGlnaXRhbC5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIGNlbHRpYyBsYW5ndWFnZXM6IElyaXNoIEdhZWxpYywgU2NvdHMKCUdhZWxpYywgTWFueCBHYWVsaWMsIEJyZXRvbiwgV2Vsc2gsIENvcm5pc2guCgoyMDAwLTAyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgc3R1YiBmb3IgQ29SZXN1bWVDbGFzc09iamVjdHMuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBhcmd1bWVudCBwcmludGluZyB0byBzdHVicwoJLSByZXBsYWNlZCBtZW1jbXAgYnkgSXNFcXVhbEdVSUQKCS0gaW1wbGVtZW50ZWQgR2V0Q2FwYWJpbGl0aWVzIGZvciBNb3VzZSBhbmQgS2V5Ym9hcmQKCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+Cglpb2N0bHNvY2tldCgpIG5vdyByZXR1cm5zIHN1Y2Nlc3MgaWYgdGhlIGFwcCBzZXRzIG5vbmJsb2NraW5nIG1vZGUgZm9yCglXU0FBc3luY1NlbGVjdCgpLWVkIHNvY2tldHMuCgoJKiBkbGxzL2NydGRsbC93Y3N0cmluZy5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIEZyZWVCU0QgY29tcGlsZS4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBmaXhlZCBjcmFzaCBvbiBtY2kgY2hhbm5lbCB0cmFjaW5nCgktIGZpeGVkIDE2IHRvIDMyIGJpdCB0cmFuc2xhdGlvbiBmb3IgTUNJX0JSRUFLIGFuZCBNQ0lfU1lTSU5GTyBtZXNzYWdlcwoKMjAwMC0wMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzogSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglNb3ZlZCBDTElQUElOR19VcGRhdGVHQ0NsaXBwaW5nIGNhbGwgb3V0c2lkZSBvZiB0aGUgWDExIHNlY3Rpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUFkZGVkIGRlZmluaXRpb24gZm9yIFNUSUxMX0FDVElWRS4KCgkqIHNlcnZlci9yZXF1ZXN0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzY2hlZHVsZXIvY2xpZW50LmM6CglKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHRoZSB1bml4IGRvbWFpbiBzb2NrYWRkciBsZW5ndGguCgoJKiBtaXNjL2Nkcm9tLmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUZpeGVkIENEUk9NX0F1ZGlvX1NlZWsgZm9yIG5vbi1saW51eCBzeXN0ZW1zLgoKCSogb2JqZWN0cy9nZGlvYmouYywgaW5jbHVkZS9nZGkuaDogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglHZXRPYmplY3RBKCkgbm93IHJlamVjdHMgR0RJIGhhbmRsZXMgd2hpY2ggYXJlIGludmFsaWQuCgoJKiBtaXNjL3ZlcnNpb24uYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJVkVSU0lPTl9HZXRTeXN0ZW1ETExWZXJzaW9uIGNyYXNoZWQgd2hlbiBiZWluZyBjYWxsZWQgb24gYSAuc28uCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGlzcGxheSB0aGUgc3lzdGVtIHBvcHVwIG1lbnUgd2hlbiBjbGlja2luZyB3aXRoIHRoZSByaWdodCBtb3VzZQoJYnV0dG9uIGluIHRoZSB3aW5kb3cgY2FwdGlvbi4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmM6IFJlbW92ZWQgY2hlY2sgZm9yIGNsYXNzIGV4aXN0ZW5jZS4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBzdXBlcmZsdW91cyBHbG9iYWxGaW5kQXRvbSBjYWxscy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglSZWFkaW5nIG9mIHJpIGJsb2Nrcy4KCUJldHRlciBlcnJvciBoYW5kbGluZy4KCgkqIHdpbmRvd3MvbWRpLmM6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJQ2hlY2sgdGhhdCBjaS0+aFdpbmRvd01lbnUgaXMgbm90IHplcm8gYmVmb3JlIHVzaW5nIGl0LgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCURhdmlkIEhvd2VsbHMgPERhdmlkLkhvd2VsbHNAbmV4b3IuY28udWs+CglJbXBsZW1lbnRlZCBpc3cqKCkgd2N0eXBlLmggZnVuY3Rpb25zLgoKCSogbWlzY2VtdS9tYWluLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQmV0dGVyIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvci4KCgkqIG1lbW9yeS9hdG9tLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2F0b20uYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VuaWNvZGUuaCwgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDoKCU1vdmVkIGdsb2JhbCBhdG9tcyB0byB0aGUgc2VydmVyIChiYXNlZCBvbiB0aGUgd29yayBvZiBTZXJnZWkKCVR1cmNoYW5vdiA8dHVyY2hhbm92QG90dnByaW0ucnU+KS4KCjIwMDAtMDItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUFkZGVkIGEgUFRFWFRNRVRSSUNbQXxXXSBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS93aW5kZWYuaDogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglBZGRlZCB0eXBlZGVmcyBmb3IgUFNIT1JUIGFuZCBQVVNIT1JULgoKCSogd2luZG93cy9kaWFsb2cuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglQcm90ZWN0IEVuZERpYWxvZygpIGZyb20gaW52YWxpZCB3aW5kb3cgaGFuZGxlcy4KCgkqIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZXBsYWNlZCBmcHJpbnRmcyBieSBwcm9wZXIgZGVidWcgbWFjcm9zIGFuZCBmaXhlZCBzb21lIGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKMjAwMC0wMi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGRyYXcuaDogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBHVUlEcywgZGVmaW5lcywgYW5kIHN0cnVjdHVyZXMgZm9yIERpcmVjdFg3LgoKCSogZGxscy93aW5tbS93aW5tbV9SdS5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglPbGVnIEtvcmRhIDxvbGVnQGlzcC5uc2MucnU+CglBZGRlZCBSdXNzaWFuIHRyYW5zbGF0aW9uLgoKCSogd2luZG93cy9jbGFzcy5jOiBQaGlsbGlwIEV6b2x0IDxlem9sdEBwZXJmLnprby5kZWMuY29tPgoJQWRkZWQgbWlzc2luZyBnb3RvIGluIHN3aXRjaCBzdGF0ZW1lbnQuCgoJKiBtaXNjL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbml0aWFsaXplIHRoZSBOT05DTElFTlRNRVRSSUNTIHdpdGggMCAoaGVscHMgbW9vcmh1aG4uZXhlKS4KCgkqIHdpbjMyL2tlcm5lbDMyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgZ3JhcGhpY3MvcHNkcnYvYWZtLmMsIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS9taXNjZW11LmgsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2xkdC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NwdS5jLCBtaXNjL2RlYnVnc3RyLmMsIG1pc2MvZXJyb3IuYywgbWlzYy9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyYS5jLCBtc2Rvcy9pbnQzZC5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy9pbnQ0Yi5jLCBtc2Rvcy9pb3BvcnRzLmMsIHJlbGF5MzIvc25vb3AuYywgdG9vbHMvbWFrZV9kZWJ1ZywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJT3B0aW1pemVkIGRlYnVnZ2luZyBBUEkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KCgkqIGxpYnJhcnkvd2luZXN0dWIuYywgbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jLCBvYmplY3RzL2xpbmVkZGEuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsIGdyYXBoaWNzL2NhY2hlLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvZW5obWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS93aW5nZGkuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJUmVtb3ZlZCBleHRyYSBpbmNsdWRlcyBmcm9tIG9sZS5oIGFuZCB3aW5nZGkuaC4KCgkqICovKjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgI2luY2x1ZGUgb2Ygd2luZ2RpLmggYW5kIHdpbmRlZi5oIGZyb20gd2ludXNlci5oIChhbmQgcmVzb2x2ZWQKCXRoZSByZXN1bHRpbmcgY29tcGlsYXRpb24gZmFpbHVyZXMpLgoKMjAwMC0wMi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNhPgoJTWFrZSBDTFNJREZyb21TdHJpbmcgcmV0dXJuIGEgQ0xTSUQgb2YgemVyb3MgaW5zdGVhZCBvZiBjcmFzaGluZyB3aGVuCglwYXNzZWQgYSBudWxsIHBvaW50ZXIuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgdW5jb25kaXRpb25hbCB1c2Ugb2YgSk9ZREVWLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvd2luZG93c3guaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsX2NhcmRlbmFzQGRlbmViYS5jb20+CglBZGRlZCBhIGJ1bmNoIG9mIG1hY3JvcyBuZWVkZWQgZm9yIGNvbXBpbGluZyBXaW5lbGliIGFwcHMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgTGlzdFZpZXdfRWRpdExhYmVsIG1hY3Jvcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDaGFuZ2VkIGltcG9ydCB0byBvcmRpbmFsLgoKCSogaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBJUGVyc2lzdEZvbGRlcjIgaW50ZXJmYWNlLgoKCSogbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLnNwZWMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBpbXBsZW1lbnRlZCBzZXJpYWwgbnVtYmVycyBmb3IgYXVkaW8gQ0RzIGFuZCBkYXRhIENEcwoJLSBiaWcgY2xlYW4gdXAgb2YgbWlzYy9jZHJvbS5jIGFuZCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYyBmdW5jdGlvbgoJICBuYW1pbmcgYW5kIHN1Y2gKCS0gc3BsaXQgZGVidWcgY2hhbm5lbCBjZGF1ZGlvIGludG8gY2Ryb20gYW5kIG1jaWNkYQoJLSBmaXhlZCBzb21lIHR5cG9zCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgaW5jbHVkZS9vbGVjdGwuaDoKCVNlYW4gTGFuZ2xleSA8c2VhbmxAY29yZWwuY2E+CglNYWRlIE9sZUNyZWF0ZUZvbnRJbmRpcmVjdCBoYXZlIHRoZSBzYW1lIHNpZ25hdHVyZSAoZXhhY3RseSkgYXMgdGhlCgloZWFkZXIgZmlsZS4gQWRkZWQgb2xlcHJvMzIgZGxsIHN0dWJzLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlcHJvMzIvLmN2c2lnbm9yZSwgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVwcm8zMi9SRUFETUUsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmM6CglTZWFuIExhbmdsZXkgPHNlYW5sQGNvcmVsLmNhPgoJT0xFUFJPMzIgc3R1YnMuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIENGX0hEUk9QLgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jOiBXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvc2Nod290QGdteC5uZXQ+CglFeHRlbmRlZCB0aGUgd2lubW0gam95c3RpY2sgQVBJIGNhbGxzIHRvIHN1cHBvcnQgdGhlIG5ldyBMaW51eAoJam95c3RpY2sgZHJpdmVyLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglBZGRlZCBjb250ZXh0IGZ1bmN0aW9ucyBmb3IgRnJlZUJTRC4KCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6IFNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJRml4IGZvciB0aGUgc3lzdGVtIHRyYXksIEljb24gYW5kIHBvcHVwIG1lbnUncyBub3cgd29yay4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIHdpbmRvdyBwcm9wZXJ0aWVzIGluc3RlYWQgb2Ygd2luZG93IGxvbmcsIGFsc28gdXNlIHRoZW0gdG8KCWRldGVybWluZSBpZiB3ZSByZWFsbHkgb3duIGEgd2luZG93IGFuZCBjYW4gZGVzdHJveSBpdC4KCVRoZSBwaXhlbGZvcm1hdCBmb3IgMjU2IGNvbG9ycyBoYXMgUEFMRVRURXxSR0IgZmxhZ3MgKFRvbWIgUmFpZGVyIDIpCglTZXQgcGFpbnRhYmxlIGZsYWcgZm9yIGFwcGxpY2F0aW9uIHBhc3NlZCBjb29wZXJhdGl2ZS9kcmF3aW5nIHdpbmRvdy4KCUdldERpc3BsYXlNb2RlOiBXZSBtaWdodCBoYXZlIGFuZCBkbyBzdXBwb3J0IDIgYmFja2J1ZmZlcnMuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglSdW5uaW5nIG9iamVjdCB0YWJsZSBhcmUgbm90IHVzaW5nIDAgYXMgYSB2YWxpZCBpbmRleCBhbnltb3JlLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBTdGF0aWMgT3duZXJEcmF3LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIZWlnaHQgY2FsY3VsYXRpb24gd2FzIDEgb2ZmIGluIEltYWdlTGlzdF9SZWFkLgoKMjAwMC0wMi0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3ZpZXcvaW5pdC5jLCBwcm9ncmFtcy92aWV3L3ZpZXcuYywgdG9vbHMvd3JjL3dyYy5jLCB3aW5kb3dzL21kaS5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGluY2x1ZGUvcmVzb3VyY2UuaCwgbG9hZGVyL25lL3Jlc291cmNlLmM6CglSZW1vdmVkIHJlc291cmNlLmguCgoJKiBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3Quc3BlYywgcHJvZ3JhbXMvdmlldy8uY3ZzaWdub3JlLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L3ZpZXcuc3BlYywgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuc3BlYywgcHJvZ3JhbXMvd2ludmVyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5zcGVjLCBwcm9ncmFtcy9hdml0b29scy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5zcGVjLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svY2xvY2suc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL2NvbnRyb2wvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLnNwZWMsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnNwZWMsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrLy5jdnNpZ25vcmUsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5zcGVjLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5zcGVjLCBwcm9ncmFtcy9yZWdhcGkvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLnNwZWMsIHByb2dyYW1zL3JlZ3Rlc3QvLmN2c2lnbm9yZSwgbGlidGVzdC8uY3ZzaWdub3JlLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2V4cGFuZC5zcGVjLCBsaWJ0ZXN0L2hlbGxvLnNwZWMsIGxpYnRlc3QvaGVsbG8yLnNwZWMsIGxpYnRlc3QvaGVsbG8zLnNwZWMsIGxpYnRlc3QvaGVsbG80LnNwZWMsIGxpYnRlc3QvaGVsbG81LnNwZWMsIGxpYnRlc3QvbmV3LnNwZWMsIGxpYnRlc3Qvcm9sZXguc3BlYywgbGlidGVzdC92YXJ0ZXN0LnNwZWMsIGxpYnRlc3Qvdm9saW5mby5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCAuc3BlYyBmaWxlcyBmb3IgYWxsIGxpYnRlc3QvIGFuZCBwcm9ncmFtcy8gV2luZUxpYiBhcHBzLgoJVXBkYXRlZCBhbGwgTWFrZWZpbGVzIHRvIHVzZSAuc3BlYyBmaWxlcyBhbmQgbmV3IHJlc291cmNlIGhhbmRsaW5nLgoKCSogbG9hZGVyL2xpYnJlcy5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlc291cmNlcy9zeXNyZXMuYywgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaCwgaW5jbHVkZS9saWJyZXMuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Jlc291cmNlLmgsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2VsZi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCAuc3BlYyBrZXl3b3JkICdtb2RlJyB0byBhbGxvdyBjcmVhdGluZyBidWlsdC1pbiBFWEUgbW9kdWxlcy4KCVVzZSBidWlsdC1pbiBFWEUgbW9kdWxlcyBmb3IgV2luZUxpYiBhcHBzIChpbnN0ZWFkIG9mIEVMRiBtb2R1bGVzKS4KCVJlbW92ZWQgZHVtbXkgRUxGIG1vZHVsZSBjcmVhdGlvbi4KCVJlbW92ZWQgTElCUkVTIGhhbmRsaW5nLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIG1lbW9yeSBvdmVyd3JpdGUgYnVnLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2Lmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBkZWZpbml0aW9ucyBzdWNoIGFzIEJPT0wxNiBhbmQgSU5UMTYgZnJvbSB3aW5kZWYuaCBpbnRvCgl3aW5lL3dpbmRlZjE2LmguCgoJKiBvbGUvb2xlMm5scy5jOiBKdWxpbyBD6XNhciBH4XpxdWV6IDxqZ2F6cXVlekBkbGQubmV0PgoJR2V0TnVtYmVyRm9ybWF0QSBpbXBsZW1lbnRhdGlvbiBhZGRlZC4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVNhdmUgYW5kIHJlc3RvcmUgY3Vyc29yIGluIFdyaXRlQ29uc29sZU91dHB1dEEuCgoJKiBpbmNsdWRlL2RhdGV0aW1lLmgsIGluY2x1ZGUvbW9udGhjYWwuaCwgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBXTV9TRVRGT1JNQVQKCS0gUmV3b3JrZWQgZHJhd2luZy9zZWxlY3Rpb24KCS0gSW1wbGVtZW50YXRpb24gb2YgV01fS0VZRE9XTgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDE2LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIElOVF9JbnQxNlJlYWRDaGFyIGFuZCBtYWRlIGludDA5IGhhbmRsZSBzcGVjaWFsIGtleXMuCgoJKiBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhbHBoYW51bWVyaWMgbW9kZSB0byB0aGUgVkdBIGVtdWxhdGlvbi4KCVVzZSBzZXJ2aWNlIHRocmVhZCBmb3IgdGhlIHBlcmlvZGljIHJlZnJlc2guCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsZWFudXAgVkdBIHJlZnJlc2ggd2hlbiB0ZXJtaW5hdGluZy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglIYW5kbGUgYmFja3NwYWNlIGNvcnJlY3RseS4KCjIwMDAtMDEtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIE1ha2UucnVsZXMuaW4sICovTWFrZWZpbGUuaW46CglCdWlsZCBtb3N0IGRsbHMgYXMgc2VwYXJhdGUgc2hhcmVkIGxpYnJhcmllcy4KCjIwMDAtMDEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHNlcnZlci9jb250ZXh0X2kzODYuYywgY29uZmlndXJlOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHN5cy9yZWcuaC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGluY2x1ZGUvaW1hZ2VsaXN0Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU92ZXJsYXkgaW5kaWNlcyBhcmUgc2lnbmVkIHNob3J0cyAoLTEgbWVhbnMgbm8gb3ZlcmxheSkKCShJbWFnZUxpc3RfU2V0T3ZlcmxheUluZGV4KSBzaG91bGQgYWNjZXB0IC0xIGFzIG92ZXJsYXlpbmRleC4KCShJbWFnZUxpc3RfUmVhZCkgV2UgY2FuIHJlYWQgYSBOeE0gYml0bWFwIGZyb20gdGhlIHN0cmVhbSBhbmQgaGF2ZQoJdG8gY29udmVydCBpdCBpbnRvIGEgMXgoTSpOKSBiaXRtYXAsIHNldCBjQ3VySW1hZ2UsY01heEltYWdlLiBBZGRlZAoJZG9jdW1lbnRhdGlvbi4KCShvdGhlcnMpIHJlbW92ZWQgc29tZSBwb3RlbnRpYWwgb3BlcmF0b3IgcHJlY2VuZGVuY2UgcHJvYmxlbXMuCgoJKiBvYmplY3RzL2RjLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0RGV2aWNlQ2Fwczogc3BvdCB5ZXQgdW5zdXBwb3J0ZWQgYWNjZXNzZXMgdG8gdGhlIERldmljZUNhcHMgc3RydWN0LgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBtaXNjZW11L21haW4uYywgd2luMzIvZXhjZXB0LmMsIE1ha2VmaWxlLmluLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXh0ZXJuYWwuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL3RocmVhZC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBkZWJ1Z2dlciB0byBsaWJ3aW5lIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIFdpbmVMaWIgYXBwcy4KCVRyeSB0byBpbnZva2UgZXh0ZXJuYWwgZGVidWdnZXIgaWYgaW50ZXJuYWwgZGVidWdnZXIgY3Jhc2hlcy4KCVRyeSB0byBoYW5kbGUgZWFybHkgaW52b2NhdGlvbiBvZiBkZWJ1Z2dlciBtb3JlIGdyYWNlZnVsbHkuCgoJKiBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1hcmsgaW5pdGlhbCBwcm9jZXNzIGFzIDMyLWJpdCBmb3IgV2luZUxpYiBhcHBzLgoJVXNlIHRlYi0+dGliZmxhZ3MgaW5zdGVhZCBvZiB0ZWItPmZsYWdzIChmb3IgV2luOTUgVVNFUjMyIGNvbXBhdGliaWxpdHkpLgoJUmVtb3ZlZCB1bnVzZWQgdGhyZWFkIGV2ZW50LgoKCSogZmlsZXMvcHJvZmlsZS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gV2luZG93cyBza2lwcyB0aGUgJ1x0JyBhbmQgJyAnIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBzZWN0aW9uCgkgIGtleSBuYW1lcyBvZiAuSU5JIGZpbGVzLgoJLSBGaXhlZCBHZXQvV3JpdGVQcml2YXRlUHJvZmlsZVN0cnVjdEEoKToKCSAgLSAocmUtKXRyYW5zbGF0ZSB0aGUgYmluYXJ5IGRhdGEgaW50byBBU0NJSSBoZXggY2hhcnMKCSAgLSBhZGQgY2hlY2tzdW0gLyBjaGVja2luZyBvZiBpdAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTAxLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIGNvbmZpZ3VyZToKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBzeXMvcmVnLmguCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpbmNsdWRlL2ltYWdlbGlzdC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPdmVybGF5IGluZGljZXMgYXJlIHNpZ25lZCBzaG9ydHMgKC0xIG1lYW5zIG5vIG92ZXJsYXkpCgkoSW1hZ2VMaXN0X1NldE92ZXJsYXlJbmRleCkgc2hvdWxkIGFjY2VwdCAtMSBhcyBvdmVybGF5aW5kZXguCgkoSW1hZ2VMaXN0X1JlYWQpIFdlIGNhbiByZWFkIGEgTnhNIGJpdG1hcCBmcm9tIHRoZSBzdHJlYW0gYW5kIGhhdmUKCXRvIGNvbnZlcnQgaXQgaW50byBhIDF4KE0qTikgYml0bWFwLCBzZXQgY0N1ckltYWdlLGNNYXhJbWFnZS4gQWRkZWQKCWRvY3VtZW50YXRpb24uCgkob3RoZXJzKSByZW1vdmVkIHNvbWUgcG90ZW50aWFsIG9wZXJhdG9yIHByZWNlbmRlbmNlIHByb2JsZW1zLgoKCSogb2JqZWN0cy9kYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldERldmljZUNhcHM6IHNwb3QgeWV0IHVuc3VwcG9ydGVkIGFjY2Vzc2VzIHRvIHRoZSBEZXZpY2VDYXBzIHN0cnVjdC4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgbWlzY2VtdS9tYWluLmMsIHdpbjMyL2V4Y2VwdC5jLCBNYWtlZmlsZS5pbiwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4dGVybmFsLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS90aHJlYWQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgZGVidWdnZXIgdG8gbGlid2luZSB0byBtYWtlIGl0IGF2YWlsYWJsZSB0byBXaW5lTGliIGFwcHMuCglUcnkgdG8gaW52b2tlIGV4dGVybmFsIGRlYnVnZ2VyIGlmIGludGVybmFsIGRlYnVnZ2VyIGNyYXNoZXMuCglUcnkgdG8gaGFuZGxlIGVhcmx5IGludm9jYXRpb24gb2YgZGVidWdnZXIgbW9yZSBncmFjZWZ1bGx5LgoKCSogaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYXJrIGluaXRpYWwgcHJvY2VzcyBhcyAzMi1iaXQgZm9yIFdpbmVMaWIgYXBwcy4KCVVzZSB0ZWItPnRpYmZsYWdzIGluc3RlYWQgb2YgdGViLT5mbGFncyAoZm9yIFdpbjk1IFVTRVIzMiBjb21wYXRpYmlsaXR5KS4KCVJlbW92ZWQgdW51c2VkIHRocmVhZCBldmVudC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIFdpbmRvd3Mgc2tpcHMgdGhlICdcdCcgYW5kICcgJyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2Ygc2VjdGlvbgoJICBrZXkgbmFtZXMgb2YgLklOSSBmaWxlcy4KCS0gRml4ZWQgR2V0L1dyaXRlUHJpdmF0ZVByb2ZpbGVTdHJ1Y3RBKCk6CgkgIC0gKHJlLSl0cmFuc2xhdGUgdGhlIGJpbmFyeSBkYXRhIGludG8gQVNDSUkgaGV4IGNoYXJzCgkgIC0gYWRkIGNoZWNrc3VtIC8gY2hlY2tpbmcgb2YgaXQKCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgd2luZS5pbmk6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gZml4ZXMsIGxvYWRpbmcgb2Ygc2V0dGluZ3MgcGVyIHVzZXIKCS0gYXV0b2RldGVjdGluZyBvZiB3aW5kb3dzIHJlZ2lzdHJ5IHZlcnNpb24KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVRoZSBDT00gdmlydHVhbCB0YWJsZXMgbXVzdCB1c2UgdGhlCgknSUNPTV9NU1ZUQUJMRV9DT01QQVRfRHVtbXlSVFRJVkFMVUUnIG1hY3JvIHRvIHByb3ZpZGUgcGFkZGluZyBpbiBDKysuCgoJKiBtc2Rvcy9pbnQwOS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgaW50OSBoYW5kbGVyIGFkZCBrZXlzdHJva2UgdG8gQklPUyBrZXlib2FyZCBidWZmZXIuCgoJKiBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+Cglkb3Ntb2QgcHJvdG9jb2wgcmV2aXNpb24gMywgZmVhdHVyaW5nIE1QUk9URUNUIGFuZCBFTlRFUklETEUuCgoJKiBpbmNsdWRlL3dpbmNvbi5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgY291cGxlIG9mIHByb3RvdHlwZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkIGluZm9ybWF0aW9uIGFib3V0IGNvZGUgcGFnZXMgdG8gZGVmYXVsdCByZWdpc3RyeS4KCgkqIGNvbmZpZ3VyZS5pbiwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVuaXh3YXJlIChTb2xhcmlzKSBsaW5rZXIgdHlwbyBmaXhlZAoJLSBTb2xhcmlzIChhbmQgcG9zc2libHkgVW5peHdhcmUpIHNwZWNpZmljIGxpbmtlciBzdXBwb3J0IGZvciB0aGUKCSAgR05VOmlzbSAtLVtuby1dd2hvbGUtYXJjaGl2ZQoJLSBTb2xhcmlzIG1ha2Ugc3BlY2lmaWMgbWFrZWZpbGUgZml4CgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBzdXBwb3J0IGZvciB7c2V0LGdldH1fdGhyZWFkX2NvbnRleHQgYWRkZWQuCgoyMDAwLTAxLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOgoJQWRkZWQgb3VyIG93biB1c2VyX3JlZ3Nfc3RydWN0IGRlZmluaXRpb24gZm9yIGJldHRlciBjb21wYXRpYmlsaXR5LgoKCSogY29udHJvbHMvYnV0dG9uLmMsIHdpbmRvd3MvZGlhbG9nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUNvcnJlY3QgdGhlIGJlaGF2aW91ciBvZiB0aGUgYWNjZWxlcmF0b3Iga2V5cyBpbiBkaWFsb2dzIGFjY29yZGluZyB0bwoJdGhlIFdpbmRvd3MnIG9uZS4KCgkqIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL1h4LnJjLCBwcm9ncmFtcy9wcm9nbWFuL2FjY2VsLnJjLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvUHQucmMsIHByb2dyYW1zL3dpbmhlbHAvWHgucmMsIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9jbG9jay5yYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMaW5rIG9ubHkgYSBzaW5nbGUgLnJjIGZpbGUgd2l0aCBhcHBsaWNhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRvY3VtZW50YXRpb24vbm8td2luZG93cywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBpZjE2MzIvc25vb3AuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBCVUdTLCBSRUFETUUsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBhZGQgc29tZSBkb2N1bWVudGF0aW9uIGl0ZW1zCgktIGZpeCBzb21lIHNwZWxsaW5nCgktIGZpeCBzb21lIHdhcm5pbmdzCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZG9jdW1lbnRhdGlvbi9jZHJvbS1sYWJlbHMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kcml2ZS5oLCBsaWJ0ZXN0L3ZvbGluZm8uYywgbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jLCB3aW5lLmluaToKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBzdXBwb3J0IGZvciByZWFkaW5nIGxhYmVscyBhbmQgc2VyaWFsIG51bXMgZnJvbSBkZXZpY2UKCS0gInJlYXNvbmFibGUiIG1pc2MvY2Ryb20uYyBkZXZpY2UgaGFuZGxpbmcKCS0gbXVjaCBpbXByb3ZlZCBhdWRpbyBDRCBzdXBwb3J0CgktIHNlcmlhbCBudW1iZXIgb3ZlcndyaXRlIGJ1ZyBmaXgKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cHgvLmN2c2lnbm9yZSwgZGxscy9zZXR1cHgvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXB4L3NldHVweC5zcGVjLCBkbGxzL3NldHVweC9zZXR1cHhfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBTRVRVUFggZGxsLgoKCSogZGxscy9vbGUzMi9vbGUyLnNwZWMsIHNlcnZlci9wcm9jZXNzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIG1pbm9yIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBmaXhlcy4KCS0gTW92ZWQgc29tZSBvZiB0aGUgQVBJIHNwZWNpZmljYXRpb25zIGZyb20gdGhlIGdsb2JhbCBmaWxlIHRvIHRoZQoJICBsb2NhbCBmaWxlcy4KCgkqIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIEltYWdlTGlzdF9SZWFkIChub3QgMTAwJSBjb3JyZWN0IGluIHJlZ2FyZGluZyB0byBzZXR0aW5nCgl0aGUgYml0bWFwKS4KCUZpbGxlZCBvdXQgdW5rbm93biBtZW1iZXJzIG9mIElMSEVBRC4KCVN0YXJ0ZWQgcmVvcmRlcmluZyBJTUFHRUxJU1QgdG8gbWFrZSBpdCBXaW5kb3dzIGJpbmFyeSBjb21wYXRpYmxlLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW5JY29uSW5kZXggPT0gLTEgc2hvdWxkIHJldHVybiBuciBvZiBhdmFpbGFibGUgaWNvbnMsIG5vdCAwLgoKCSogTWFrZWZpbGUuaW46IEZpeGVkIGJ1aWxkaW5nIG9mIGRvc21vZCBhbmQgd2luZWNsaXBzcnYuCgoJKiBtaXNjL2RlYnVnc3RyLmM6CglCdWcgZml4OiBhZGRlZCB0ZW1wIHN0cnVjdHVyZSB0byBjb3BlIHdpdGggZGVidWcgdHJhY2VzIGR1cmluZyB0aHJlYWQKCXN0YXJ0dXAuCgoJKiB3aW4zMi9uZXdmbnMuYywgd2luZG93cy9tc2dib3guYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9kZWJ1Z3N0ci5oLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgbG9hZGVyL3Jlc291cmNlLmMsIG9iamVjdHMvdGV4dC5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgcmVsYXkzMi91dHRodW5rLmM6CglSZW1vdmVkIGRlYnVnc3RyLmguCgoJKiBtaXNjL2RlYnVnc3RyLmMsIHNjaGVkdWxlci90aHJlYWQuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvZGVidWd0b29scy5oLCBpbmNsdWRlL3RocmVhZC5oOgoJVXNlIGEgcGVyLXRocmVhZCBidWZmZXIgYW5kIHdyaXRlKDIpIGZvciBkZWJ1ZyB0cmFjZXMuCglSZW1vdmVkIGRlYnVnX2R1bXBzdHIuCgoyMDAwLTAxLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXguCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglHZXQgSENVIG5hbWUgZnJvbSB1bml4IHVzZXIgbmFtZS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS9zZWxlY3Rvci5jOgoJSW1wbGVtZW50ZWQgR2V0VGhyZWFkU2VsZWN0b3JFbnRyeSB0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoyMDAwLTAxLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOgoJRHluYW1pY2FsbHkgbG9hZCB2ZXJzaW9uLmRsbCBpbiBNTURSVl9HZXREZXNjcmlwdGlvbjMyLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6CglVc2UgYSBsaW5rZWQgbGlzdCBpbnN0ZWFkIG9mIGEgRFBBIGZvciB0aGUgaG9vayBsaXN0LgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglVc2UgYSBsaW5rZWQgbGlzdCBpbnN0ZWFkIG9mIGEgRFBBIHRvIG1hbmFnZSBwaXhtYXBzLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJldHVybnMgYW4gZXJyb3IgaWYgdHJ5aW5nIHRvIHdyaXRlIHRvIGEgc3RyZWFtIG9wZW5lZCBmb3IgcmVhZC4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZCBhIG5ld2JpZSB3YXJuaW5nIGZvciBzbGFzaGVzIGluIHRoZSBzZWFyY2ggUGF0aD0gb2Ygd2luZS5jb25mLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXYWl0IGZvciBTaG1Db21wbGV0aW9uIGR1cmluZyBGbGlwLgoKCSogY29uZmlndXJlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJTWFkZSAtLWVuYWJsZS1kbGwgdGhlIGRlZmF1bHQuCglVc2UgJChNQUtFKSBpbnN0ZWFkIG9mICQoU1VCTUFLRSkgZm9yIHJlY3Vyc2l2ZSBtYWtlcy4KCUNsZWFuZWQgdXAgaW5zdGFsbCB0YXJnZXRzIGluIG1haW4gTWFrZWZpbGUuCgoJKiBkbGxzL250ZGxsL3N5bmMuYzogRG9uJ3QgY3Jhc2ggd2hlbiBPYmplY3RBdHRyaWJ1dGVzIGlzIE5VTEwuCgoyMDAwLTAxLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9jbGllbnQuYzoKCVVzZSBhcmd2WzBdIHRvIGxvY2F0ZSB0aGUgc2VydmVyIGV4ZWN1dGFibGUuCgoJKiBtZW1vcnkvaGVhcC5jLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvd2lubnQuaCwgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2dsb2JhbC5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglTaGFyZSB0aGUgc3lzdGVtIGhlYXAgYmV0d2VlbiBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZXMuIE1hZGUgcHJvY2VzcwoJaGVhcCBwZXItYWRkcmVzcyBzcGFjZSBpbnN0ZWFkIG9mIHBlci1wcm9jZXNzLgoKCSogc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3RocmVhZC5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglNYWRlIHRoZSBzZXJ2ZXIgbGlzdGVuIGZvciBuZXcgY2xpZW50cyBvbiBhIFVuaXggc29ja2V0IGluCgkkSE9NRS8ud2luZS4gTmV3bHkgc3RhcnRlZCB3aW5lIHByb2Nlc3NlcyBub3cgYXR0YWNoIHRvIGFuIGV4aXN0aW5nCglzZXJ2ZXIgaWYgb25lIGlzIHJ1bm5pbmcuCgoJKiBmaWxlcy9wcm9maWxlLmMsIGluY2x1ZGUvb3B0aW9ucy5oOgoJQWRkZWQgUFJPRklMRV9HZXRDb25maWdEaXIgZnVuY3Rpb24uCgoyMDAwLTAxLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci8qLmM6CglDaGFuZ2VkIHRoZSBzZXJ2ZXIgdG8gcmV0dXJuIFNUQVRVU18qIGVycm9yIGNvZGVzLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL250ZGxsL3J0bC5jOgoJQnVpbHQgYSBjb21wbGV0ZSB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgUnRsTnRTdGF0dXNUb0Rvc0Vycm9yLgoKCSogaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbm50Lmg6IEFkZGVkIHNvbWUgZXJyb3IgY29kZXMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJVXNlIEdldFByb2NBZGRyZXNzIGluc3RlYWQgb2YgY2FsbGluZyBTaGVsbEFib3V0QSBkaXJlY3RseS4KCjIwMDAtMDEtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL3Zlci5zcGVjLCBkbGxzL3ZlcnNpb24vdmVyMTYuYzoKCU1lcmdlZCBkbGxzL3ZlciBpbnRvIGRsbHMvdmVyc2lvbi4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gaW1wbGVtZW50YXRpb24gb2YgUnRsUmVnKiAocmVhZCBhY2Nlc3MpLCBSdGxFdmVudCosIFJ0bFNlbWFwaG9yZSosCgkgIE50QWxsb2NhdGVMb2NhbGx5VW5pcXVlSWQKCS0gaW1wbGVtZW50YXRpb24gb3Igc3R1YnMgZm9yIE50QWNjZXNzQ2hlY2ssIE50U2V0U2VjdXJpdHlPYmplY3QsCgkgIFJ0bENsZWFyQml0cywgUnRsRXF1YWxQcmVmaXhTaWQsIFJ0bEZpbmRDbGVhckJpdHMsCgkgIFJ0bEZvcm1hdEN1cnJlbnRVc2VyS2V5UGF0aCwgUnRsR2V0Q29udHJvbFNlY3VyaXR5RGVzY3JpcHRvciwKCSAgUnRsSWRlbnRpZmllckF1dGhvcml0eVNpZCwgUnRsSW1wZXJzb25hdGVTZWxmLCBSdGxJbml0aWFsaXplQml0TWFwLAoJICBSdGxJbml0aWFsaXplR2VuZXJpY1RhYmxlLCBSdGxNYWtlU2VsZlJlbGF0aXZlU0QsCgkgIFJ0bFByZWZpeFVuaWNvZGVTdHJpbmcsIFJ0bFNldEJpdHMsIFJ0bFVuaWNvZGVUb011bHRpQnl0ZU4sCgkgIFJ0bFVwY2FzZVVuaWNvZGVTdHJpbmdUb09lbVN0cmluZywgUnRsVXBjYXNlVW5pY29kZVRvT2VtTiwKCSAgUnRsVmFsaWRTaWQsIFJ0bHhVbmljb2RlU3RyaW5nVG9PZW1TaXplCgktIGNvcnJlY3RlZCBtb3N0IFJ0bFN0cmluZyogZnVuY3Rpb25zLCBhZGRlZCBkb2N1bWVudGF0aW9uCgktIG1vcmUgZml4ZXMgYW5kIHBhcnRpYWwgaW1wbGVtZW50YXRpb25zCgoJKiBtaXNjL21haW4uYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL29wdGlvbnMuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgLWR4Z3JhYiBjb21tYW5kIGxpbmUgb3B0aW9uLCB3aGljaCBjb25maW5lcyBjdXJzb3IgbW90aW9uIHRvIHRoZQoJRGlyZWN0WCBwcmltYXJ5IHN1cmZhY2UuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgc29tZSB3ZWlyZCBDIGNvbnN0cnVjdHMgKGNoYXJbXT0iIiApIHdpdGggbW9yZSBjb21wYXRpYmxlIG9uZXMuCglBZGRlZCBhbm90aGVyIE5VTEwgcHRyIGNoZWNrIGluIF9Pbk9wZW4uCgoJKiBtaXNjL3dpbnNvY2tfYXN5bmMuYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi93c29jazMyLnNwZWMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dpbnNvY2suc3BlYywgZGxscy93aW5zb2NrL3dzb2NrMzIuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvd2luc29jay5zcGVjLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3dpbnNvY2suYzoKCU1vdmVkIHdpbnNvY2sgaW1wbGVtZW50YXRpb24gdG8gZGxscy93aW5zb2NrLgoKCSogZGxscy8qLy5jdnNpZ25vcmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkICouc3BlYy5jLCAqLnNwZWMuZ2x1ZS5zLCAqLmdsdWUuYyB0byAuY3ZzaWdub3JlIHRoYXQgbmVlZCB0aGVtLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcnJlY3RlZCBhcmd1bWVudHMgdG8gVmlydHVhbEZyZWUoKS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbWVtb3J5L3N0cmluZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZXBsYWNlZCBMb2NhbFRvV2lkZUNoYXIoKSBieSBsc3RyY3B5bkF0b1coKSwgV2lkZUNoYXJUb0xvY2FsKCkgYnkKCWxzdHJjcHluV3RvQSgpLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFwIFdNX01FTlVTRUxFQ1QgMzItPjE2IGJpdHMgZm9yIGNsb3NpbmcgbWVudS4KCgkqIHdpbmRvd3MvbWRpLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IHBhcmFtZXRlcnMgZm9yIE1ESV9SZXN0b3JlRnJhbWVNZW51IGluIFdNX0RFU1RST1kgbXNnLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCAoUmVnaXN0ZXJ8R2V0fFJldm9rZSlBY3RpdmVPYmplY3QgZnJvbSB0aGUgZG9jcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVN1cGVyY2hhcmdlZCBYU2htIGltcGxlbWVudGF0aW9uIGZvciBEaXJlY3REcmF3LgoKCSogZGVidWdnZXIvbXNjLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVja3MuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNoZWNrIGZvciBNWiBoZWFkZXIgYmVmb3JlIHRyeWluZyB0byBkZWNpcGhlciB0aGUgUEUgaGVhZGVyLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRXhwb3J0IEdldExvbmdQYXRoTmFtZVtBfFddLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBwcm9ibGVtcyB3aXRoIEdsb2JhbEhhbmRsZSBhbmQgR2xvYmFsRnJlZSBzbyByZXN1bHRzIG1hdGNoIFdpbjk4LgoJUmVzdHJ1Y3R1cmUgSEVBUF9WYWxpZGF0ZUluVXNlQXJlbmEsIEhlYXBWYWxpZGF0ZSwgYW5kIGFkZAoJSEVBUF9Jc1JlYWxBcmVuYSB0byBlbGltaW5hdGUgKmJvZ3VzKiBlcnJvciBtZXNzYWdlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBY3R1YWxseSBwcmludCByZXR1cm4gdmFsdWUgb2YgbWVzc2FnZS4KCgkqIG9iamVjdHMvZGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29ycmVjdGVkIGFyZ3VtZW50cyBpbiBESUJfRGVsZXRlRElCU2VjdGlvbi4KCgkqIGZpbGVzL2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgXFwuXDxkb3NkZXZpY2U+IGxpa2UgPGRvc2RldmljZT4gaW4gQ3JlYXRlRmlsZS4gVGVzdGVkIHdpdGgKCWhlbHAgb2YgSmFtZXMgRmVlbmV5IDxqYW1lc0BudXJlYWxtLm5ldD4uCgoyMDAwLTAxLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3NlcnZlci5oOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBHZXQvU2V0VGhyZWFkQ29udGV4dCBzdXBwb3J0IHRocm91Z2ggdGhlIHNlcnZlci4KCjIwMDAtMDEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpbnB1dC5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RlYnVnc3RyLmgsIG1pc2MvZGVidWdzdHIuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCUFkZGVkIGRlYnVnc3RyX2d1aWQgZnVuY3Rpb24gYW5kIHVzZWQgaXQgdG8gcmVwbGFjZQoJV0lORV9TdHJpbmdGcm9tQ0xTSUQgaW4gYWxsIGRlYnVnZ2luZyBtZXNzYWdlcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWx3YXlzIGluaXRpYWxpemUgbHBXYXZlSGRyLT5scE5leHQgdG8gTlVMTC4KCURvbid0IGZhaWwgb24gc3RyYW5nZSBmcmFnbWVudCBzaXplcy4KCjIwMDAtMDEtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbm5scy5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCBzb21lIGRlZmluZXMgbmVlZGVkIGZvciBVbmljb2RlIHRvIEFzY2lpIGNvbnZlcnNpb25zLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJldHRlciBlcnJvciBoYW5kbGluZywgbGVzcyBrZXlzIGhlbGQgb3Blbi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW51bURpc3BsYXlNb2RlcyBtdXN0IHBhc3MgbFBpdGNoLgoKCSogY29udHJvbHMvbWVudS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVZhbGlkYXRlIHRoZSBtZW51IGhhbmRsZXMuCgoJKiBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJvdW5kcyB0byB0aGUgbG93ZXN0IGludGVnZXIsIG5vdCB0aGUgbmVhcmVzdC4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgcmFjZSBiZXR3ZWVuIFdpbjE2IHBhcmVudCBhbmQgY2hpbGQgZm9yIGZpcnN0IHJlc2NoZWR1bGluZwoJb2YgY2hpbGQgcHJvY2Vzcy4gVGhpcyBmaXhlcyBXaW5FeGVjIHJldHVybmluZyB0b28gZWFybHkuCgoyMDAwLTAxLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXNlIC0td2hvbGUtYXJjaGl2ZSB0byBmb3JjZSBsaW5raW5nIGFsbCBvZiBsaWJ3aW5lLmEuIGludG8gd2luZS4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2J1aWxkLmM6CglBZGRlZCBhdXRvbWF0aWMgcmVnaXN0cmF0aW9uIG9mIGJ1aWx0LWluIERMTHMuCgoyMDAwLTAxLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6IEFhcm9uIEhvcGUgPGVkaEBtYWlsLmJyaW9mb3JnZS5jb20+CglGaXhlZCBJUFggZGV0ZWN0aW9uLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5ldyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgd2luOTUgcmVnaXN0cnkgbG9hZGVyLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gdGhlIGJ1ZmZlciBhbmQgdGhlIHR5cGUgaXMgUkVHX1NaIGFuZCB0aGUKCXN0cmluZyBpcyBub3QgMC10ZXJtaW5hdGVkIFJlZ1F1ZXJ5VmFsdWUgYW5kIFJlZ0VudW1WYWx1ZSBhcmUgYXBwZW5kaW5nIGEgMC4KCgkqIGRlYnVnZ2VyL2hhc2guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEaXNwbGF5IHRoZSBleHRlcm5hbCBtb2R1bGVzIGFmdGVyIHRoZSBpbnRlcm5hbCBtb2R1bGVzIGluIGNyYXNoIHJlcG9ydC4KCgkqIGZpbGVzL2RyaXZlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBTZXRWb2x1bWVMYWJlbCByZXBvcnQgZmFpbHVyZSBvbiBDRC1ST00gZHJpdmVzLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheToKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglVcGRhdGVkIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGluY2x1ZGUvZHJpdmVyLmgsIHdpbmRvd3MvZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlcGxhY2VkIFdpbmUgc3BlY2lmaWMgRFJJVkVSX0dldFR5cGUgYnkgYSBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mCglHZXREcml2ZXJGbGFnLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvd2luZV9nbC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gKHVnbHkpIGZpeCBmb3IgdGhlICdYbWQuaCcgcHJvYmxlbQoJLSBmaXggdGhlIGRldGVjdGlvbiBvZiBER0EgMiBpbiBjb25maWd1cmUgc2NyaXB0CgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gYWRkZWQgTlQgZmllbGRzIHRvIFRFQgoJLSBtb3ZlZCB0bHMtZmllbGRzIGFuZCBzb21lIHdpbmUgc3BlY2lmaWMgZmllbGRzIHRvIGEgaGlnaGVyIG9mZnNldAoJLSBhZGRlZCBzb21lIGRvY3VtZW50YXRpb24KCS0gaW5pdGlhbGlzYXRpb24gb2YgdGhlIFVuaWNvZGVTdHJpbmcKCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IFRvZGQgVC4gRnJpZXMgPHRvZGRAZnJpZXMubmV0PgoJQWRkIEhBVkVfU09VTkRDQVJEX0ggdG8gc3VwcG9ydCBPcGVuQlNELgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBzb21lIG1pc3NpbmcgRU1SIHJlY29yZCB0eXBlcyBhbmQgdXBkYXRlZCBhbmQgZml4ZWQgb3RoZXJzCgktIEFkZGVkIHN0dWJzIGFuZCBoZWFkZXJzIGZvciBDcmVhdGVDb2xvclNwYWNlLERlbGV0ZUNvbG9yU3BhY2UgYW5kIFNldENvbG9yU3BhY2UKCS0gQWRkZWQgaGVhZGVyIGZvciBTZXRJQ01Nb2RlCgktIEFkZGVkIGFiaWxpdHkgdG8gcGxheSBtb3JlIGVuaGFuY2VkIG1ldGFmaWxlIHJlY29yZHMKCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglTdG9yZSByZWZlcmVuY2UgaGRjIHNpemUgaW50byBlbmhhbmNlZCBtZXRhZmlsZSBoZWFkZXIgd2hlbiBjcmVhdGluZy4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBPbGVSdW4uCgoJKiBvYmplY3RzL2RjLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBEZWxldGVPYmplY3QgY2FsbCBsZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyBwYXRjaC4KCgkqIHdpbjMyL3RocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGJhZCByZWdpc3RlciBjb25zdHJhaW50IGluIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgdGhlIE5UIHN5bmNocm9uaXphdGlvbiBmdW5jdGlvbnMKCUludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlIGFuZCBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGFjY2VzcyAnd20tPm1vZG5hbWUnIGFmdGVyIHRoZSBtb2RyZWYgaGFzIGJlZW4gZmx1c2hlZC4KCgkqIG1lbW9yeS9nbG9iYWwuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIG51bGwgY2hlY2sgaW4gR2xvYmFsSGFuZGxlLgoKMjAwMC0wMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYywgaW5jbHVkZS9tb250aGNhbC5oOgoJUmVtb3ZlZCBhIGRlcGVuZGVuY3kgYmV0d2VlbiBvbGVhdXQzMiBhbmQgY29tY3RsMzIuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTW9yZSBTVEFUVVNfIGNvZGVzLgoKCSogaW5jbHVkZS9kZHJhdy5oOiBTdGV2ZSBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCUZpeGVkIG1hY3JvIGRlZmluaXRpb24gb2YgSURpcmVjdERyYXdTdXJmYWNlX1Jlc3RvcmUuCglBZGRlZCBkZWZpbmVzIGZvciBEZHJhdydzIFdhaXRGb3JWZXJ0aWNhbERpc3BsYXkoKS4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFN0ZXZlIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJRml4ZWQgdHlwb3MgaW4gbWFjcm8gZGVmaW5pdGlvbnMgZm9yIElEaXJlY3RTb3VuZEJ1ZmZlcl9HZXRTdGF0dXMsCglJRGlyZWN0U291bmRCdWZmZXJfVW5sb2NrLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBTdGV2ZSBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCU1pc3NpbmcgV2luZWxpYiBkZWNsYXJhdGlvbnMgZm9yIEFVWENBUFMuCgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCAoaGFybWxlc3MpIGFzc2VtYmxlciB3YXJuaW5ncy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglGaXggcHJvYmxlbSB3aXRoIGluaXRpYWxpemF0aW9uIChyZXBvcnRlZCBieSBBbmRyZWFzIE1vaHIpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJSW5mb1B0ciBjaGVja2luZyBtaXhlZCB1cCBXTV9ERVNUUk9ZIGFuZCBXTV9DUkVBVEUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKYW4gIDkgMjE6NDI6NDIgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTm9uLUxpbnV4IGNvbXBpbGUgZml4LgoKCSogZmlsZXMvZG9zX2ZzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRE9TRlNfRG9HZXRGdWxsUGF0aE5hbWUgd291bGQgdW5kZXJmbG93IChwIHdvdWxkIGdldCBwYXN0IHRoZQoJYmVnaW5uaW5nIG9mIGJ1ZmZlcikgaWYgZ2l2ZW4gdGhlIG5hbWUgIi8vLi4iLgoJUmVncm91cGVkIHRoZSBoYW5kbGluZyBvZiB0aGUgZGlyZWN0b3J5IHNlcGFyYXRvcnMuCglEaXJlY3Rvcnkgc2VwYXJhdG9ycyBpbiB0aGUgcmV0dXJuZWQgcGF0aCBhcmUgbm93IGFsd2F5IGEgc2luZ2xlICJcIgoJd2hpY2ggc2ltcGxpZmllcyB0aGUgaGFuZGxpbmcgb2YgIi4uIiBpbiB0aGUgbmFtZS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ29ycmVjdGVkIGJlaGF2aW91ciBvZiBSZWdPcGVuS2V5IGluIGNhc2Ugb2YgZmFpbHVyZS4KCgkqIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIHJlbW92ZWQgY29weWluZyBvZiBIS0VZX1VTRVJTIHRvIEhLRVlfQ1VSUkVOVF9VU0VSCgktIEhLRVlfQ1VSUkVOVF9VU0VSIGlzIG5vdyBzdWJrZXkgb2YgSEtFWV9VU0VSUwoJLSBjaGFuZ2VkIHF1ZXJ5X2tleV9pbmZvX3JlcXVlc3QgdG8gcmV0dXJuIHRoZSBrZXkgbmFtZSB0b28gKE50UXVlcnlLZXkgbmVlZHMgdGhpcykKCS0gdGhlIHJvb3RrZXlzIChNQUNISU5FIGFuZCBVU0VSKSBkbyBoYXZlIG5hbWVzCgoJKiBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUF2b2lkIGRlbGV0aW5nIG9mIHRoZSBkZWZhdWx0IDF4MSBiaXRtYXAgZm9yIG1lbW9yeSBEQ3MuCgoJKiBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHRvb2xzL2J1aWxkLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvZGlzcGxheS9kaXNwbGF5LnNwZWMsIGRsbHMvbW91c2UvbW91c2Uuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy93aW5tbS93aW5tbS5zcGVjLCBpZjE2MzIvYnVpbHRpbi5jOgoJQnVpbHQtaW4gRExMcyByZXNvdXJjZXMgYXJlIG5vdyBzcGVjaWZpZWQgaW4gc3BlYyBmaWxlLgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBmbGFncyBpbiBidWlsdC1pbiBETExzIHRhYmxlcy4KCgkqIGlmMTYzMi9kdW1teS5jLCBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvYmlkaTE2LmM6CglFcmV6IFZvbGsgPGVyZXpAZ214Lm5ldD4KCUFkZGVkIHN0dWJzIGZvciBzb21lIEJpRGkgQVBJIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUZpeGVkIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gYXBwIGFuZCB3aW5lIGluIFdBVkVfbWNpUGxheS4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVN0b3AgbWVudSB0cmFja2luZyB3aGVuIGNsaWNraW5nIG9uIHRoZSBtZW51IGJhciB3aGVyZSB0aGVyZSBpcyBubwoJbWVudSBpdGVtLgoKCSogd2luMzIvbmV3Zm5zLmM6IEVyZXogVm9sayA8ZXJlekBnbXgubmV0PgoJQmV0dGVyIGVycm9yIHJlcG9ydGluZy4KClNhdCBKYW4gIDggMjI6Mjc6MzEgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJQmFja2VkIG91dCBzY2FsYWJsZSBiaXRtYXAgY2hhbmdlIChnaXZlcyB1Z2x5IHJlc3VsdHMpLgoKCSogY29udHJvbHMvbWVudS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldE1lbnVTdHJpbmcgc2hvdWxkIHJldHVybiBpdGVtbGVuZ3RoIG9uIDAgbk1heCBvciBOVUxMIHN0cgoJSW5zZXJ0SXRlbSBwb3M9LTEsIGZsYWdzID0gMCBzaG91bGQgYXBwZW5kIGl0ZW0KCSh0aGFua3MgdG8gU2FuZGVyIHZhbiBMZWV1d2VuKQoKCSogaW5jbHVkZS9hc3BpLmgsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGRsbHMvd25hc3BpMzIvd25hc3BpMzIuc3BlYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBuZXRuaXRjby5uZXQ+CglSZW1vdmVkIG1hbGxvYy9mcmVlIGhhY2sgYW5kIHJlcGxhY2VkIHdpdGggSGVhcEFsbG9jL0hlYXBGcmVlIHRocm91Z2hvdXQgY29kZS4KCUFkZGVkIGNyaXRpY2FsIHNlY3Rpb24gYXJvdW5kIGNvZGUgZGVhbGluZyB3aXRoIGdsb2JhbCB2YXJpYWJsZXMuCglBZGRlZCBhIGZldyBjb21tZW50cyBhYm91dCBob3cgQVNQSSBpcyBzdXBwb3NlZCB0byB3b3JrLgoJQ29weSBzZW5zZSBpbmZvIGludG8gdGhlIGNvcnJlY3QgcGxhY2UgKHJpZ2h0IGFmdGVyIHRoZSBmaXhlZCAxNi1ieXRlIENEQikuCglOb3cgcmV0dXJucyB0YXJnZXQgc3RhdHVzIChtYW55IFdpbmRvd3MgYXBwcyB3b24ndCBldmVuIGxvb2sgYXQgdGhlCglzZW5zZSBhcmUgdW5sZXNzIHRoZXkgZ2V0IGFuIGVycm9yIGNvZGUpLgoJQWRkZWQgU0NfQUJPUlRfU1JCIEZJWE1FLgoJQWRkZWQgU0NfR0VUX0RJU0tfSU5GTyBwbGFjZSBob2xkZXIgZm9yIGNsYXJpdHkuCglVcGRhdGVkIExpbnV4IFNHIGludGVyZmFjZSBzdHJ1Y3R1cmUgdG8gaW5jbHVkZSBuZXcga2VybmVsIDIuMgoJc3RhdHVzIGZpZWxkcy4KCgkqIE1ha2UucnVsZXMuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG9vayBmb3Igb3VyIGhlYWRlciBmaWxlcyBmaXJzdCwgdGhlbiBmb3Igc3lzdGVtcyBoZWFkZXJzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUaGUgbmV3IGZpbGVkaWFsb2cgc3R1ZmYgZG9lcyBub3QgaGFuZGxlIHRlbXBsYXRlLiBTbyBkbyBub3QgY2FsbCBpZgoJdGhlcmUgYXJlIGFueS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBdm9pZCBwcm9ibGVtcyBkdXJpbmcgY2hhbmdpbmcgdGhlIFotb3JkZXIgaWYgdGhlIHdpbmRvdyBhbmQgdGhlCgl3aW5kb3cgdG8gaW5zZXJ0IGFmdGVyIGFyZSB0aGUgc2FtZS4KCgkqIGxpYnRlc3QvZXhwYW5kLmMsIGxpYnRlc3QvaGVsbG81LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVtb3ZlZCBHVUkganVuayBmcm9tIGV4cGFuZC5jLCBzbyB5b3UgY2FuIHVzZSBpdCBpbiBjb21tYW5kbGluZSBtb2RlLgoJRml4ZWQgaGVsbG81LmMuCgoJKiBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIHN1cHBvcnQgZm9yIGF1dG8gYWxsb2NhdGVkIG9yZGluYWxzCgktIEZpeGVkIHZhcmFyZ3MgKDE2IGJpdCkgYnVnCgktIE1pbm9yIGZpeGVzCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBhbGlnbm1lbnQgcHJvYmxlbSB3aXRoIFZFUlNJT05fSU5GTyBtZW1iZXJzLgoKV2VkIEphbiAgNSAwMzoyNDo1MiAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkICRYX0VYVFJBX0xJQlMgdG8gYW55IFggZGVwZW5kZW5kIGNoZWNrcyBvciB0aGV5IHdpbGwgZmFpbCBpZiBzb21lCglvZiB0aGUgJFhfRVhUUkFfTElCUyBhcmUgcmVxdWlyZWQuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSBGaWxsUmVjdCBiZWhhdmUgbGlrZSBpdCBkb2VzIG9uIFdpbmRvd3MKCS0gQ2xlYW5lZCB1cCBXTV97LElDT059RVJBU0VCQUNLR1JPVU5EIGRlZmF1bHQgaGFuZGxpbmcKCS0gQWRkZWQgc29tZSBjb21tZW50cyBvbiBob3cgV2luZG93cyBiZWhhdmVzCgoJKiB3aW5kb3dzL3dpbmhlbHAuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQ2hlY2sgaWYgd2luaGVscCBpcyBhbHJlYWR5IHJ1bm5pbmc7IHVzZSB3aW5obHAzMi5leGUgb3Igd2luaGVscC5leGUKCWRlcGVuZGluZyBvbiB0aGUgZW11bGF0ZWQgdmVyc2lvbiwgcmVsYXNlIHdpbjE2bG9jayBiZWZvcmUgY2FsbGluZwoJV2luSGVscEEuCgoJKiBBVVRIT1JTLCBpbmNsdWRlL2F1dGhvcnMuaDoKCVVwZGF0ZWQgYXV0aG9ycyBsaXN0IGZyb20gdGhlIENoYW5nZWxvZy4gUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdQoJaGF2ZSBiZWVuIGxlZnQgb3V0LgoKCSogZG9jdW1lbnRhdGlvbi9mb250czogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnVlVHlwZSBjbGFyaWZpY2F0aW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBkZXRlY3QgaWYgdGhlIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVzIHRoZSBwYWxldHRlZCB0ZXh0dXJlIGFuZAoJICBjb2xvciB0YWJsZSBleHRlbnNpb25zCgktIHNtYWxsIHdhcm5pbmcgZml4ZXMKCS0gZml4IHRoZSBkb3VibGUgJy1sWHhmODZkZ2EnIHdoZW4gaGF2aW5nIERHQSAyLjAKCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgY29tbSBjbGVhbiB1cCwgbXVjaCBtb3JlIGVycm9yIG1lc3NhZ2VzLCBvbmx5IHVzZSBUSU9DT1VUUSBpZgoJZGVmaW5lZCBbd2luZS1idWdzLzEwNF0sIHRyaWVkIGltcGxlbWVudGluZyBTZXRDb21tVGltZW91dHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIFdoZW4gcHJvY2Vzc2luZyBXTV9QQUlOVCBtZXNzYWdlcywgdGhlIHRyZWV2aWV3IG1pZ2h0IHNvbWV0aW1lcyB1c2UKCSAgdGhlIHdyb25nIGhkYy4gRml4ZWQuCgktIEJldHRlciBjaGVja2luZyBmb3IgVFJFRVZJRVdfSU5GTyAqaW5mb1B0cj1OVUxMLgoJICBTaW1pbGFyIHRvIGNvZGUgaW4gdG9vbGJhci5jCgktIE90aGVyIHNtYWxsIGZpeGVzIChzdWJjbGFzc2VkIGVkaXQgY29udHJvbCkuCgoJKiBkZWJ1Z2dlci9tc2MuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHVuaW5pdGlhbGl6ZWQgcG9pbnRlciBjYXVzZWQgY3Jhc2hlcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgdmlydXMgd2FybmluZyBhIGJpdCBtb3JlIGRyYXN0aWMsIHNpbmNlIHNvbWUgcGVvcGxlIGRvbid0IGJlbGlldmUgdXMuCgoJKiBtaXNjL2NvbW0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGNvbW0gY2xlYW4gdXAsIG11Y2ggbW9yZSBlcnJvciBtZXNzYWdlcywgb25seSB1c2UgVElPQ09VVFEgaWYKCWRlZmluZWQgW3dpbmUtYnVncy8xMDRdLCB0cmllZCBpbXBsZW1lbnRpbmcgU2V0Q29tbVRpbWVvdXRzLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW1wbGVtZW50IFdyaXRlUHJpdmF0ZVByb2ZpbGVTZWN0aW9uQSgpLgoKCSogZGxscy9udGRsbC9ydGwuYzogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUZpeCBmb3IgY29tcGlsZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCAnbG9uZyBsb25nJyAoRnJvbSBPdmUgS2FhdmVuKS4KClR1ZSBKYW4gIDQgMDI6NDA6MjIgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5jOgoJTW92ZWQgYWxsb2NhdGlvbiBvZiB0aGUgc29ja2V0IHBhaXIgZm9yIGEgbmV3IHRocmVhZCB0byB0aGUgc2VydmVyLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6IE1hZGUgZGVidWcgZXZlbnRzIGFuZCBjb250ZXh0cyBzdGFuZGFyZCBvYmplY3RzLgoJVXNlIHNsZWVwX29uIHRvIHdhaXQgb24gZGVidWcgZXZlbnRzLgoKCSogc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJTWFkZSBzbGVlcF9vbiB1c2FibGUgZnJvbSBhbGwgcmVxdWVzdHMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtb3JlIE1JREkgbWVzc2FnZXMgMTY8PT4zMiBtYXBwaW5nLgoJRml4ZXMgc29tZSBidWdzIGluIGJ1ZmZlcnMgaGFuZGxpbmcgYW5kIGluZGV4IGZvciBNQVBQRVIuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGlmMTYzMi90aHVuay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHRoZSBvYnNvbGV0ZWQgQ2FsbFRpbWVGdW5jUHJvYywgQ2FsbERyaXZlclByb2MsCglDYWxsRHJpdmVyQ2FsbGJhY2suCgoJKiBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vdGltZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQdXQgYmFjayB2aXNpYmxlIG1pbmltdW0gdGltZXIgcmVzb2x1dGlvbiB0byAxIG1zLgoJRGVjb3JyZWxhdGUgdGhlIHNlcnZpY2UgdGhyZWFkIHJlc29sdXRpb24gZnJvbSB0aGUgdXNlciByZXF1aXJlZCB0aW1lcgoJJiB2aXNpYmxlIG1pbmltdW0gcmVzb2x1dGlvbnMuCglSZW1vdmVkIHRoZSBDYWxsYmFjay5UaW1lRnVuY1Byb2MgZW50cnkuCgoJKiB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglHaXZlICswKzAgYXMgYSBkZWZhdWx0IHBvc2l0aW9uIGZvciB0aGUgZGVza3RvcCB3aW5kb3cuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglDb252ZXJ0IG1taW8gdG8gYWxsb3cgdGhlIHVzZSBvZiAzMiBiaXQgbW1pbyBwcm9jZWR1cmVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIG1pc2MvcmVnaXN0cnkuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tY3RsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2RiYzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB3aW5hcGlfY2hlY2sgdG8gaGFuZGxlIHRoZSBuZXcgYWRkaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBpbmNsdWRlL21vbnRoY2FsLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgV01fU0laRSBtZXNzYWdlIHN1cHBvcnQuIE9wdGltaXplZCBkcmF3aW5nIHRvIHVzZQoJcHJlY2FsY3VsYXRlZCBzaXplIHZhbHVlcyByYXRoZXIgdGhhbiByZWNhbGN1bGF0aW5nIGR1cmluZyBlYWNoIGNhbGwKCW9mIE1PTlRIQ0FMX1JlZnJlc2guCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL2RpYWxvZy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDb3JyZWN0ZWQgcGFyYW1ldGVyIGNvdW50IGZvciBEaWFsb2dCb3hJbmRpcmVjdFBhcmFtQW9yVy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRG9uJ3Qgc2hvdyB0aGUgc2Nyb2xsYmFyIGlmIFNldFNjcm9sbGluZm8oKSBpcyBjYWxsZWQgd2l0aCBvbmx5IHRoZQoJU0lGX0RJU0FCTEVOT1NDUk9MTCBmbGFnLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBleHRyYSBVUyBrZXltYXAgd2l0aCB0aGUgaW5mYW1vdXMgcGhhbnRvbSBrZXkuCgoJKiBNYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVc2UgYSB1bmlmb3JtIG5hbWluZyBzY2hlbWUgZm9yIGRyaXZlciBtb2R1bGVzLgoKCSogaW5jbHVkZS9kcml2ZXIuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmNhcHN1bGF0ZWQgV2luZSBpbnRlcm5hbCBkYXRhIGludG8gYW4gaWZkZWYgX19XSU5FX18uCgoJKiB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzLy5jdnNpZ25vcmU6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIHRoZSAxNiBiaXQgZHJpdmVyIGZ1bmN0aW9ucyBjYWxsb3V0IGludG8gdGhlIGRpci4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgV09ETV9CUkVBS0xPT1AgbWVzc2FnZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZXh0cmFuZW91cyBFUlIgbWVzc2FnZS4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBNQ0lfSU5GT19DT1BZUklHSFQgYW5kIE1DSV9JTkZPX05BTUUuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXNlIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiB3aGlsZSBzZWFyY2hpbmcgZm9yIG5ldyBtb2R1bGVzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzcGVjIGVudHJ5IGZvciBfaXRvYS4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUdlbmVyYXRlZCBsYWJlbHMgb2YgcmVzb3VyY2UgbmFtZXMgbXVzdCBiZSB1bmlxdWUgdGhyb3VnaG91dCB0aGUKCWdlbmVyYXRlZCBjb2RlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJInJlc3VsdHAiIGNhbiBiZSBOVUxMIGluIFNlbmRNZXNzYWdlVGltZW91dCooKS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIHByZXZlbnQgbWVtIGxlYWsgb2YgQ1JURExMX2FjbWRsbl9kbGwKCS0gYmV0dGVyIGFyZ3VtZW50IHBhcnNpbmcKCS0gbGFzdCB4YXJndiBlbnRyeSBoYXMgdG8gYmUgTlVMTAoJLSByZXR1cm4gdmFsdWUgaXMgZW52aXJvbm1lbnQgcG9pbnRlciBpbnN0ZWFkIG9mIE5VTEwKCS0gYWRkZWQgYSBzcGVjIGVudHJ5IGZvciBic2VhcmNoKCkKClNhdCBKYW4gIDEgMjI6Mzg6MjEgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvcHJvY2Vzcy5oOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJSW1wbGVtZW50ZWQgV2FpdEZvcklucHV0SWRsZS4KCgkqIG1pc2MvZGRlbWwuYywgd2luZG93cy93aW4uYzoKCUZpeGVkIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzIChzcG90dGVkIGJ5IEZyYW5jb2lzIEdvdWdldCkuCgoJKiByZWxheTMyL3dvdzMyLnNwZWMsIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW5tbS93aW5tbS5zcGVjLCByZWxheTMyL2RkcmF3LnNwZWMsIHJlbGF5MzIvZGlucHV0LnNwZWMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheS5zcGVjLCBkbGxzL2ljbXAvaWNtcC5zcGVjLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgZGxscy9semV4cGFuZC9sejMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCU1ha2UgdXNlIG9mIGF1dG9tYXRpYyBvcmRpbmFsIGFsbG9jYXRpb24uCgoJKiBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYzoKCU1vdmVkIHBvbGwgaGFuZGxpbmcgdG8gdGhlIGdlbmVyaWMgcGFydCBvZiB0aGUgc2VydmVyIG9iamVjdHMuCglGaXhlZCBidXN5IHdhaXRpbmcgb24gUE9MTEVSUiBldmVudHMuCglNZXJnZWQgc3RydWN0IGNsaWVudCBpbnRvIHN0cnVjdCB0aHJlYWQuCgpNb24gRGVjIDI3IDA1OjI2OjAxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9wcm9jZXNzLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBncmFwaGljcy90dHlkcnYvYml0bWFwLmMsIG1pc2MvZGRlbWwuYywgbWlzYy92ZXJzaW9uLmM6CglDb3NtZXRpY3MuCgoJKiBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtaXNjL2xzdHIuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3dpbnNvY2suYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglCdWZmZXIgb3ZlcmZsb3dzIGFuZCBzdHJuY3B5IGZpeGVzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglQRV9GaW5kRXhwb3J0ZWRGdW5jdGlvbjogdXNlIGEgYmluYXJ5IHNlYXJjaCBmb3IgZnVuY3Rpb24gbmFtZXMuCgpTdW4gRGVjIDI2IDIzOjEyOjM4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjOgoJRml4ZWQvY29tbWVudGVkIG91dCBkdXBsaWNhdGUgZW50cnkgcG9pbnQgbmFtZXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBvcmRpbmFsIGFsbG9jYXRpb24uCglPdXRwdXQgbGlzdCBvZiBmdW5jdGlvbiBuYW1lcyBpbiBzb3J0ZWQgb3JkZXIuCglBZGRlZCBzdXBwb3J0IGZvciBuYW1lbGVzcyAob3JkaW5hbC1vbmx5KSBlbnRyeSBwb2ludHMuCglDbGVhbmVkIHVwIGVycm9yIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBncmFwaGljcy9wc2Rydi90ZXh0LmMsIGdyYXBoaWNzL3R0eWRydi9mb250LmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1vdmUgRENGdW5jcyBFeHRUZXh0T3V0IGFuZCBHZXRUZXh0RXh0ZW50UG9pbnQgdG8gVW5pY29kZS4KCU1hcCBhIGZldyBVbmljb2RlIGNoYXJzIHRvIHRoZSBmaXJzdCAweGZmIGluIHBzZHJ2LgoJRG9uJ3QgZXhwZWN0IHgxMWRydiB0byBkaXNwbGF5IFVuaWNvZGUgY2hhcnMgeWV0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIG1lbW9yeS9zdHJpbmcuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVdyYXBwZWQgc29tZSBzdHJpbmdzIGluIGEgZGVidWdzdHJfKiBjYWxsLgoJUmVwbGFjZWQgc29tZSBjYWxscyB0byBkZWJ1Z3N0cl97YSx3fSBieSBkZWJ1Z3N0cl97YSx3fW4uCglSZW1vdmVkIHJlZHVuZGFudCAnTCdzIGZvciBVbmljb2RlIHN0cmluZ3MuCglUcmllZCB0byBoYXJtb25pemUgdGhlIHRyYWNlcyBhIGxpdHRsZSBiaXQuCgoJKiBtaXNjL2RlYnVnc3RyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJZGVidWdzdHJfdyBub3cgcmV0dXJucyBzb21ldGhpbmcgbG9va2luZyBsaWtlICdMInh4eHgiLi4uJwoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZJTEVETEc5NV9IYW5kbGVDdXN0b21EaWFsb2dNZXNzYWdlczoKCS0gZm9yIHRoZSB0aHJlZSBoYW5kbGVkIG1lc3NhZ2VzIHdlIG11c3QgcmV0dXJuIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZQoJLSBmb3IgQ0RNX0dFVEZJTEVQQVRIIHBhdGhzIGxpa2UgImRpclxmaWxlIiB3ZXJlIGhhbmRsZWQgaW5jb3JyZWN0bHkKCS0gZml4ZWQgbXVsdGlwbGUgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MuCglGSUxFRExHOTVfT25PcGVuOiBmaXhlZCBhIHVzZSBvZiBzdHJuY3B5IHdpdGhvdXQgJ1wwJy4KCUZJTEVETEc5NV9TSEVMTF9OZXdGb2xkZXI6IHRoZSBzaXplIG9mIGxwc3RyQ2FwdGlvbiB3YXMgaW5jb3JyZWN0CglsZWFkaW5nIHRvIGEgYnVmZmVyIG92ZXJmbG93LgoKU2F0IERlYyAyNSAyMjo1ODo1OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgcGxheWluZyBtb3JlIHJlY29yZCB0eXBlcyAoc3RpbGwgbW9yZSB0byBjb21lKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglCZXR0ZXIgc3VwcG9ydCB2ZXJ5IGxvbmcgc3RyaW5ncyBieSBhdm9pZGluZyB0byBjb3B5IHRoZW0gaW4gYSBmaXhlZAoJc2l6ZSBidWZmZXIgKG9uZSBleGNlcHRpb24gcGFydGx5IHJlbWFpbnM6IGNhbGxiYWNrIHN0cmluZ3MpLgoJUmFpc2UgdGhlIGJ1ZmZlciBzaXplIHRvIDUxMiBjaGFyYWN0ZXJzLgoJTWVyZ2UgdGhlIGhhbmRsaW5nIG9mIGl0ZW0gMCBhbmQgb3RoZXIgaXRlbXMgdG9nZXRoZXIgaW4gR2V0SXRlbUEgdG8KCXJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uLgoKCSogZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBQU0RSVl9TdHJldGNoRElCaXRzIGZvciBub24taW50ZWdlciBieXRlIHNyYyB3aWR0aHMgKDEgJiA0YnBwKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNhc3QgdGhlIHVuc2lnbmVkIGludCB0byBzaWduZWQsIG9yIE5FQVJfTUFUQ0ggd2lsbCBub3Qgd29yay4KCgkqIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYywgaW5jbHVkZS9jZHJvbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmaXJzdC9sYXN0IHBsYXlhYmxlIGZyYW1lIHJlZmVyZW5jaW5nLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBib2d1cyB2YWx1ZXMgaW4gTUNJX1NUQVRVUyBoYW5kbGluZyAocG9zaXRpb24gJiBsZW5ndGggb2YgdHJhY2tzKS4KCUFkZGVkIHN1cHBvcnQgZm9yIE1DSV9JTkZPIG9uIE1FRElBX1VQQyAmIE1FRElBX0lERU5USVRZIGNvbW1hbmRzLgoKCSogd2luZG93cy9yZWN0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGVzdCBwb2ludGVycyBwYXNzZWQgdG8gY29weXJlY3QgZm9yIE5VTEwuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlc3RvcmUgZXJyb25lb3VzbHkgZGVsZXRlZCBsaW5lcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRFBBX0RlbGV0ZVB0ciB3YXMgcmVzaXppbmcgdGhlIGFycmF5IHRvIGEgdG9vIHNtYWxsIHNpemUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBdm9pZCBpbmZpbml0ZSBsb29wIGluIFdJTlBPU19GaW5kSWNvblBvcyBpZiB0aGUgd2lkdGggb2YgdGhlIHBhcmVudAoJY2xpZW50IGFyZWEgaXMgbGVzcyB0aGFuIHRoZSBpY29uIHNwYWNpbmcuCgoJKiBkb2N1bWVudGF0aW9uL2xpbnV4LWZhdC1wZXJtaXNzaW9uczoKCVN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCUFkZGVkIGEgZG9jdW1lbnQgdGhhdCBkZXNjcmliZXMgY29uZmlndXJpbmcgRkFUIGZpbGVzeXN0ZW0gcGVybWlzc2lvbnMKCWZvciBXaW5lLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5UIGFsbG9jYXRlcyBvbmUgcGFnZSBhcyBURUIuIFNvbWUgbmF0aXZlIE5ULWRsbHMgYXJlIHVzaW5nIHRoaXMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEb24ndCBza2lwIHVzYWJsZSBYIGZvbnRzLiBBZGQgc3VwcG9ydCBmb3Iga29pOCBmb250cy4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb2RpZmllZCBJY21wQ2xvc2VIYW5kbGUgYW5kIEljbXBTZW5kRWNob1JlcXVlc3Qgc28gdGhhdCB3ZSBkb24ndAoJY3Jhc2ggaWYgdGhlIGhhbmRsZSBpcyBJTlZBTElEX0hBTkRMRV9WQUxVRS4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCUNoYW5nZWQgdGhlICJ0aGlzX2lzX2Ffc3ludGF4X2Vycm9yIiBlcnJvciBtZXNzYWdlIHRvIGEgbW9yZSBzcGVjaWZpYwoJZXJyb3IgbWVzc2FnZS4KCk1vbiBEZWMgMjAgMDQ6MTQ6NDggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9wYXRoLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNb3ZlIEJlemllciBjb2RlIG91dCBvZiB4MTFkcnYgaW50byBjb21tbW9uIEdESSBjb2RlOyBpZiBhbnkgZHJpdmVyCglkb2VzIG5vdCBpbXBsZW1lbnQgUG9seUJlemllcltUb10gdGhlIGN1cnZlIGlzIGFwcHJveGltYXRlZCB0byBsaW5lcwoJYW5kIGRyYXduIHdpdGggUG9seWxpbmUuCglJbXBsZW1lbnQgbWFueSBHREktUGF0aCByZWNvcmRpbmcgZnVuY3Rpb25zIChhdCBsZWFzdCB0aGUgd2luOXggc3Vic2V0KS4KCUltcGxlbWVudCBGbGF0dGVuUGF0aCBhbmQgRmlsbFBhdGguCgoJKiBkbGxzL2RwbGF5eC9kcGxheXguc3BlYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUZpeGVkIG9yZGluYWwgbnVtYmVyaW5nIGFuZCBhZGRlZCBuZXcgc3BlYyBzdHViLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVhZGRlZCBYcG0gYXV0b2NvbmYgY2hlY2tzLgoKCSogb2xlL29sZTJubHMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUVudW1TeXN0ZW1Mb2NhbGVzQSBzaG91bGQgbG9vayBmb3IgcmVnaXN0cnkgdmFsdWVzLCBub3Qgc3Via2V5cy4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgZml4IHRvIGdldCBHRVRfREVWSUNFX1RZUEUgd29ya2luZyAodmVyaWZpZWQgYnkgRGFuIEtlZ2VsKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglDb3JyZWN0ZWQgYmFja2dyb3VuZCBjb2xvciBhbmQgZml4ZWQgbGVha2luZyBHREkgYnJ1c2guCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTlQgbG9hZGVyOiBkb24ndCBzdG9wIGxvYWRpbmcgYSBoaXZlIHdoZW4gYW4gZXJyb3Igb2NjdXJzLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglQbGF5TWV0YUZpbGUgYW5kIEVudW1NZXRhRmlsZSBzaG91bGQgd29yayBpZiB0aGUgaGRjIGlzIGEKCShlbmgpbWV0YWZpbGUgREMuCgoJKiBSRUFETUU6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCVVwZGF0ZWQgdGhlIEZyZWVCU0Qgbm90ZXMsIHRoZSBMRFQgcGF0Y2ggZmluYWxseSBtYWRlIGl0IGludG8gLWN1cnJlbnQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSWYgbHBUaXRsZT09TlVMTCBhbmQgY2JCdWY9PTAgdGhlbiB3ZSBtdXN0IHJldHVybiB0aGUgcmVxdWlyZWQgYnVmZmVyCglzaXplLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCVNoYXVuIE1vcnJpcyA8c2hhdW5AYmx1ZW5lcHR1bmUuY29tPgoJSW1wbGVtZW50ZWQgX1RyYWNrTW91c2VFdmVudCBmb3IgdGhlIFRNRV9MRUFWRSBmbGFnLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZHMgcmVzb2x1dGlvbiAvIGRlcHRoIHN3aXRjaGluZyB3aXRoIERHQSAyLjAuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBEZWMgMTIgMjE6Mjg6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCBoYW5kbGluZyBvZiBER0EyLjAga2V5Ym9hcmQgZXZlbnRzLgoKCSogZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtMzIvd2luZWFjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgYWJpbGl0eSB0byBvcGVuIHNldmVyYWwgc3RyZWFtcyBvbiB0aGUgc2FtZSBkcml2ZXIuCglBZGRlZCBhIGZldyBhY21NZXRyaWNzIG9wdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3lzU3RyaW5nTGVuIGNhbiBnZXQgYSBOVUxMIHBvaW50ZXIgKGFuZCBzaGFsbCByZXR1cm4gMCkuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIG5vdGlmaWNhdGlvbiBmb3IgZGV0ZWN0aW5nIHdoZW4gYSBXQVZFSERSIGhhcyBiZWVuIHBsYXllZAoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlZCBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBwbGF5YmFjayB0aHJlYWQgYW5kIHN0b3AvY2xvc2UgY29tbWFuZHMKCU5vdyB1c2luZyBub3RpZmljYXRpb24gZm9yIGRldGVjdGluZyB3aGVuIGEgV0FWRUhEUiBoYXMgYmVlbiBwbGF5ZWQKCgkqIGNvbnRyb2xzL2NvbWJvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQ29tYm9Cb3ggc2hvdWxkIG5vdCBzZW5kIGJvZ3VzIG1lc3NhZ2VzIHRvIGVkaXQgYnVkZHkgYW5kIHRvIGl0c2VsZi4KCgkqIGZpbGVzL2Rvc19mcy5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglGaXhlZCBHZXRTaG9ydFBhdGhOYW1lQS4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1vc2VzIERlSm9uZyA8ZGVqb25nQGNzLnVtbi5lZHU+CglGaXhlZCBtaXNzaW5nIGxpYndpbmUuc28gc3ltbGluayBkdXJpbmcgaW5zdGFsbC4gU2V0IHRoZSBydW50aW1lCglsaW5rZXIgcGF0aC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE11cmFsaSBQYXR0YXRoZQoJR2V0TmV4dERsZ0dyb3VwSXRlbTogbmVlZHMgdG8gY2hlY2sgdGhlIGNvbnRyb2wgcGFyZW50IGlzIHRoZSBtYWluIGRpYWxvZy4KCUdldE5leHRUYWJJdGVtOiBtYWtlIHN1cmUgdGhpcyBjb250cm9sIGlzIHZpc2libGUgYW5kIG5vdCBkaXNhYmxlZC4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGNtZCBsaW5lIGxlbmd0aCBjYWxjdWxhdGlvbi4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBzdXBwb3J0IG9mIERHQS0yLjAgZXZlbnRzCgktIGZpeGVkIHRoZSBsZWF2aW5nIG9mIERHQS0yLjAgbW9kZQoKCSogY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lbnUuaCwgd2luZG93cy93aW5wcm9jLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW4gd2luMzIgYSBXTV9NRU5VU0VMRUNUIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4gdGhlIHBvc2l0aW9uIHdoZW4gdGhlCglpdGVtIHJlZmVycyB0byBhIHN1Ym1lbnUsIG5vdCB0aGUgc3VibWVudSdzIGhhbmRsZSBhcyBpbiB3aW4xNi4KCgkqIGZpbGVzL3RhcGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYXJnIHR5cGVzIG9mIEZJWE1Fcy4KCgkqIHdpbmRvd3MvbWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIHBhc3NlZCBpbnZhbGlkIHdpbmRvdyBoYW5kbGUgaW4gRGVmTURJQ2hpbGRQcm9jKi4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IG5vLiBvZiBhcmd1bWVudHMgaW4gYSBXQVJOIHN0YXRlbWVudC4KCgkqIG9iamVjdHMvdGV4dC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93cyBEcmF3VGV4dCgxNnxBfFcpIHRvIGdldCBhIE5VTEwgc3RyaW5nIGFzIHBhcmFtZXRlci4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGdyYXBoaWNzL3R0eWRydi9vYmplY3RzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBjb21waWxlciB3YXJuaW5ncy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3ZlcnNpb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCAyIHVzZWxlc3MgaW5jbHVkZSB3aW52ZXJzaW9uLmgKCURvIG5vdCBtYWtlIGF1dG9kZXRlY3RlZCB2ZXJzaW9uIGZpeCBvbiBmaXJzdCBjYWxscyBpZiBpdCBpcyBXaW4zMS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIFN0ck5DcHlBLCBTdHJOQ3B5Vy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1lc3NhZ2UgdHJhbnNsYXRpb24gV01fQ1JFQVRFIGZpeGVkLgoKU2F0IERlYyAxMSAyMzo1Njo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi8uY3ZzaWdub3JlLCBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9zcWwuaCwgaW5jbHVkZS9zcWxleHQuaCwgaW5jbHVkZS9zcWx0eXBlcy5oLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglYaWFuZyBMaQoJSW1wbGVtZW50YXRpb24gb2YgYSBwcm94eSBPREJDMzIgZGxsLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9ub25jbGllbnQuYzoKCUthaSBNb3JpY2ggPGthaS5tb3JpY2hAYmlnZm9vdC5kZT4KCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3lzdHJheSBzdXBwb3J0LgoJU3dhbGxvdyB0aGUgd2luZG93cyBzeXN0cmF5IGljb25zIGludG8ga3BhbmVsIHN5c3RyYXkgaWYgS0RFL0tXTSBpcwoJcnVubmluZy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaToKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgbG9hZGVyIGZvciBOVCByZWdpc3RyeSBmaWxlcy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3dpbm50LmgsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdHVicyBmb3IgTHNhRnJlZU1lbW9yeSwgTHNhUXVlcnlJbmZvcm1hdGlvblBvbGljeSwgTHNhQ2xvc2UuCglTbWFsbCBmaXhlcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9yZWdpb24uYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gSW1wbGVtZW50ZWQgR2V0RW5oTWV0YUZpbGVQYWxldHRlRW50cmllcwoJLSBBZGRlZCBmaXhtZSBzdHVicyBmb3IgU2V0TWV0YVJnbiBhbmQgR2V0TWV0YVJnbgoJLSBBZGRlZCBzdXBwb3J0IGZvciBwbGF5aW5nIHNldmVyYWwgZW5oYW5jZWQgbWV0YWZpbGUgcmVjb3JkcwoJLSBBZGRlZCBiZWdpbm5pbmdzIG9mIGltcGxlbWVudGF0aW9uIGZvciBwbGF5aW5nIHRoZSByZXN0IG9mIHRoZQoJICBlbmhhbmNlZCBtZXRhZmlsZSByZWNvcmRzCgoJKiBncmFwaGljcy90dHlkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3R0eWRydi9iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3R0eWRydi9jbGlwcGluZy5jLCBncmFwaGljcy90dHlkcnYvZGMuYywgZ3JhcGhpY3MvdHR5ZHJ2L2RpYi5jLCBncmFwaGljcy90dHlkcnYvZm9udC5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvdHR5ZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy90dHlkcnYvcGVuLmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy90dHlkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3R0eWRydi93bmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSW1wcm92ZWQgdGhlIFRUWSBkcml2ZXIuCgoJKiBmaWxlcy9maWxlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVJldHVybiBhbiBlcnJvciBpZiBscE92ZXJsYXBwZWQgaXMgcHJvdmlkZWQgdG8gUmVhZEZpbGUgLyBXcml0ZUZpbGUuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGNvbmZ1c2UgdGhlIDAgZmlsbCBtYWdpYyBvZiB3c3ByaW50ZiB3aXRoIHRoZSAiMHgiIGhleCBwcmVmaXguCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCVRoZSB3YXZlbWFwIGRyaXZlciB3YXNuJ3QgcGFzc2luZyB0aGUgY2FsbGJhY2sgdHlwZSB0byB0aGUKCURyaXZlckNhbGxiYWNrIHJvdXRpbmUgY29ycmVjdGx5LgoKCSogZmlsZXMvdGFwZS5jOiBBZGRlZCBtaXNzaW5nIFdJTkFQSXMuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgd2UgaGF2ZSByZWdpc3RyeSBlbnRyaWVzLCB1c2UgdGhlbS4gTmV2ZXIgbWluZCB3aGljaCB2ZXJzaW9uIHdlCglhdXRvZGV0ZWN0ZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIG1pc2MvcG9ydC5jLCB0b29scy9iaW4ycmVzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9kaXNwbGF5LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2YXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBsb2FkZXIvbmUvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBBZGRlZCBtaXNzaW5nICdyZXR1cm4nIHN0YXRlbWVudC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMuCgpGcmkgRGVjIDEwIDAzOjQ3OjE0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3F1ZXVlLmMsIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZXNzYWdlLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBlcmZvcm0gMTYvMzJBLzMyVyBtZXNzYWdlIG1hcHBpbmcgZm9yIHBvc3RlZCBtZXNzYWdlcy4KCgkqIGZpbGVzL01ha2VmaWxlLmluLCBmaWxlcy90YXBlLmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBZGRlZCBzdHVicyBmb3IgdGhlIFdpbk5UIHRhcGUgYmFja3VwIGZ1bmN0aW9ucy4KCgkqIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUGFyc2UgQ29kZVZpZXcgdHlwZS9zeW1ib2wgaW5mbyB3aXRoIDMyLWJpdCB0eXBlIGluZGljZXMuCglBZGRlZCAocGFydGlhbCkgc3VwcG9ydCBmb3IgVkMgNS82IC5QREIgZmlsZXMuCglGaXhlZCB0cmVhdG1lbnQgb2Ygc291cmNlIGZpbGUgbmFtZXMgY29udGFpbmluZyBwYXRoLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIG9mZi1ieS1vbmUgZXJyb3IuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFNob3cgbWFpbiB3aW5kb3cgaWYgQ3JlYXRlUHJvY2VzcyB3YXMgY2FsbGVkIHdpdGhvdXQgdGhlCglTVEFSVEZfVVNFU0hPV1dJTkRPVyBmbGFnLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIFBFX1VubG9hZExpYnJhcnkoKS4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBkbyBub3QgbG9vc2UgaW5pdGlhbCBhdXRvLXJlcGVhdCBzdGF0dXMgd2hlbiBhY3F1aXJpbmcgdGhlIGtleWJvYXJkIG1vcmUKCSAgdGhhbiBvbmUgdGltZQoJLSBzdXBwb3J0IG9mIERpcmVjdFggNydzIERJTU9VU0VTVEFURTIgc3RydWN0dXJlCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCUFkZGVkIE50UG93ZXJJbmZvcm1hdGlvbiBzdHViLgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVHJhbnNmZXIgb25seSBjYlN0cnVjdCBzaXplIGluIEJpbmRDdHhJbXBsX1MoRylldE9wdGlvbnMuCgpXZWQgRGVjICA4IDAzOjU2OjM0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvbmV3Zm5zLmMsIG1zZG9zL2Rvc21lbS5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZm9udC5jLCBvbGUvb2xlMm5scy5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvaW5zdHIuYywgbWVtb3J5L2xvY2FsLmMsIG1pc2MvcmVnaXN0cnkuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpZjE2MzIvdGh1bmsuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGNvbnRyb2xzL2VkaXQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNYWtlIHVzZSBvZiB0aGUgREVGQVVMVF9ERUJVR19DSEFOTkVMIHdoZXJlIGFwcHJvcHJpYXRlLgoJVXNlIHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgRklYTUUsIEVSUiwgV0FSTiwgVFJBQ0UgZm9yIHRoZSBkZWZhdWx0CgljaGFubmVsLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZWxheSBzZW5kaW5nIGRlYnVnIGV2ZW50cyB1bnRpbCBwcm9jZXNzIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkLCBhZGRlZCBjaGFwdGVyIG9uIGNvbmZpZ3VyYXRpb24gYW5kIGFyY2hpdGVjdHVyZS4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCS0gRml4IE1NSU9fe09wZW4sUmVuYW1lfSB0byBjaGVjayB0aGUgZmlsZW5hbWUgKG9mIHRoZSBmb3JtCgkgIGZpbGUuZXh0K0FCQykgZm9yIHRoZSBjb3JyZWN0IG1taW8gcHJvY2VkdXJlIHRvIHVzZS4KCS0gbW1pb1N0cmluZ1RvRk9VUkNDIG5vdyBjb252ZXJ0cyB0byB1cHBlcmNhc2UgaWYgYXNrZWQgdG8sIGFuZCBoYW5kbGVzCgkgIHN0cmluZ3Mgb2YgbGVuZ3RoIDwgNC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglGaXggcHJvYmxlbSB3aXRoIEVOX1VQREFURSBub3RpZmljYXRpb24gc2VudCBieSBlZGl0IGNvbnRyb2wuCgpNb24gRGVjICA2IDAxOjIwOjAxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21vdXNlLy5jdnNpZ25vcmUsIGRsbHMvbW91c2UvTWFrZWZpbGUuaW4sIGRsbHMvbW91c2UvbW91c2Uuc3BlYywgZGxscy9tb3VzZS9tb3VzZV9tYWluLmMsIGRsbHMvbW91c2UvbW91c2VyYy5yYywgZG9jdW1lbnRhdGlvbi9yZXNvdXJjZXMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvZGlzcGxheS5zcGVjLCBpZjE2MzIvbW91c2Uuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2Rpc3BsYXkvLmN2c2lnbm9yZSwgZGxscy9kaXNwbGF5L01ha2VmaWxlLmluLCBkbGxzL2Rpc3BsYXkvZGlzcC5yYywgZGxscy9kaXNwbGF5L2Rpc3BsYXkuc3BlYywgZGxscy9kaXNwbGF5L2Rpc3BsYXlfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCAucmMgZmlsZSBzdXBwb3J0IGZvciBXaW4xNiBORSBtb2R1bGVzLgoJTW92ZWQgZGlzcGxheS5jIGFuZCBtb3VzZS5jIHRvIHNlcGFyYXRlIGRsbCBkaXJlY3Rvcmllcy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWxsb3cgdG8gZGVzZWxlY3QgYWxsIGl0ZW1zIGJ5IHNlbmRpbmcgQ0JfU0VUQ1VSU0VMKC0xKSB0byB0aGUgY29tYm8uCgpTdW4gRGVjICA1IDIzOjU0OjA0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2RjLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZGMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9wYXRoLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgc2V2ZXJhbCBidWdzIGluIGdkaSBwYXRoIGhhbmRsaW5nLgoJQWRkcyAqUGF0aCBmdW5jdGlvbnMgdG8gZGMgZnVuY3MgdGFibGUgKyBhZGQgRW5oTWV0YUZpbGUgcmVjb3JkaW5nLgoJU2VwYXJhdGUgb3V0IFBvbHlsbmUvUG9seWxpbmVUbyBhbmQgUG9seUJlemllci9Qb2x5QmV6aWVyVG8gaW4gZGMKCWZ1bmNzIHRhYmxlIHRvIGVuYWJsZSBwcm9wZXIgZW5obWV0YWZpbGUgcmVjb3JkaW5nLgoJVGhlIGN1cnJlbnQgcG9zaXRpb24gdXBkYXRlIGluICpUbyBmdW5jdGlvbnMgaXMgbm93IGhhbmRsZWQgYnkgdGhlCgltYWluIGZ1bmN0aW9uIGFuZCBub3QgaW4gdGhlIGRyaXZlcnMuCglNb3ZlIFVTRVIgZnVuY3Rpb25zIGZyb20gZ3JhcGhpY3MvcGFpbnRpbmcuYyAtPiB3aW5kb3dzL3BhaW50aW5nLmMKCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5zcGVjLCBpbmNsdWRlL29sZTJ2ZXIuaCwgbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gdGhlIE9MRSB2ZXJzaW9uIHJldHVybmVkIHdhcyB0b28gbG93CgktIHJlbmFtZWQgT0FCdWlsZFZlcnNpb24xNiB0byBPYUJ1aWxkVmVyc2lvbjE2CgktIHNwZWxsaW5nIGZpeGVzCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglGaXggR2V0Q3VycmVudERpcmVjdG9yeUEgYW5kIFcgdG8gcmV0dXJuIHRoZSBuZWVkZWQgc3BhY2UgZm9yIHRoZSBDV0QsCglpZiB0aGUgYnVmZmVyIHNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZW1vdmUgaGFjayBmb3Iga2V5Ym9hcmQgbWVzc2FnZXMgaW4gZGlhbG9ncy4KCgkqIHdpbjMyL2RldmljZS5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCVN0dWJzIGZvciBWTU0gR2V0RGVtYW5kUGFnZUluZm8gZnVuY3Rpb24gYW5kIFZXaW4zMiAiR2V0IFZNQ1BEIFZlcnNpb24iLgoJSW1wbGVtZW50YXRpb24gZm9yIFZXaW4zMiBJbnQzMS9EUE1JIGRpc3BhdGNoIGNhbGwuCglGaXhlZCAiZGFuZ2xpbmcgZWxzZSIgY29tcGlsZXIgd2FybmluZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglXaGVuZXZlciB3ZSBkbyBhbiBzdHJuY3B5IHdlIHNob3VsZCBtYWtlIHN1cmUgd2UgcHV0IGEgJ1wwJyBhdCB0aGUgZW5kCglvZiB0aGUgYnVmZmVyLgoKCSogaW5jbHVkZS90b29saGVscC5oLCBtaXNjL3Rvb2xoZWxwLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgVGhyZWFkMzJGaXJzdC9OZXh0IHN0dWJzLgoKCSogaW5jbHVkZS90aHJlYWQuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCB3aW5lc2VydmVyJ3MgYnVmZmVyICYgYnVmZmVyX3NpemUgYXQgdGhlIGVuZCBvZiBURUIgc28gdGhhdCBJRQoJZG9lc24ndCBvdmVyd3JpdGUgdGhlbS4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWNpSW5mby4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgV0FWRV9GT1JNQVRfUVVFUlkgZmxhZyBpbiB3b2RPcGVuLgoKCSogZGxscy9tc2FjbTMyL3N0cmVhbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvcnJlY3RseSBpbXBsZW1lbnQgQUNNX1NUUkVBTU9QRU5GX1FVRVJZIGZsYWcgaW4gYWNtT3BlblN0cmVhbS4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgTUNJX09QRU4gY29tbWFuZCBmb3IgdHlwZXMgbGlrZSAiQ0RBVURJTyFIOiIuCgoJKiBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL2RkcmF3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1lcmdlZCBfYWxsXyBscENsaXBwZXIgaW50byBjb21tb25fc3VyZmFjZS4KCUFkZCBOVUxMIHB0ciBjaGVjayB0byBTZXRDbGlwcGVyLgoJU29tZSBtb3JlIGRlYnVnIG91dHB1dC4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2MvcG9ydC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIHRoZSByZWFsIGdsaWJjIG9wZW5wdHkgaWYgcHJlc2VudC4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdHlwZWRlZiB0byBpbnN1cmUgY29tcGlsYXRpb24gb24gYWxsIGdjYyZlZ2NzIHZlcnNpb25zLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIF9jb3B5X3JlZ2lzdHJ5KCkuCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBvbGUvbmxzL2VzYS5ubHMsIG9sZS9ubHMvZXNjLm5scywgb2xlL25scy9lc2QubmxzLCBvbGUvbmxzL2VzZy5ubHMsIG9sZS9ubHMvZXNtLm5scywgb2xlL25scy9lc24ubmxzLCBvbGUvbmxzL2VzcC5ubHM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIHNvbWUgY29uc3RhbnRzIGZvciBTcGFuaXNoLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IENhbGwgRGxsRW50cnlQb2ludCBmb3IgKmV2ZXJ5KiBwcm9jZXNzIHRoYXQgbG9hZHMgdGhlIERMTCwgbm90CglqdXN0IGZvciB0aGUgZmlyc3Qgb25lLgoJQnlwYXNzIDMyLT4xNi0+MzIgdHJhbnNpdGlvbiB3aGVuIGNhbGxpbmcgRGxsRW50cnlQb2ludCBvZiBidWlsdC1pbi4KCgkqIGlmMTYzMi91c2VyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBVU0VSLkRsbEVudHJ5UG9pbnQoKS4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIDE2LWJpdCBpbnN0ZWFkIG9mIDMyLWJpdCBVc2VyU2lnbmFsUHJvYyBlbnRyeSBwb2ludC4KCURvbid0IGxvYWQgVVNFUjMyLkRMTCB1bmxlc3MgcmVxdWVzdGVkIGJ5IHRoZSBwcm9ncmFtLgoJQnVnZml4OiBQYXNzIHRoZSBjb3JyZWN0IHRocmVhZCBJRCB0byBVc2VyU2lnbmFsUHJvYy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gbWFwIGZhaWxzLgoKCSogY29udHJvbHMvY29tYm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglTaG93IHVzZSBvZiB1bmRvY3VtZW50ZWQgbWVzc2FnZXMuCgoJKiBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmVtb3ZlZCBrZXlib2FyZCBhdXRvLXJlcGVhdCB3aGVuIERJbnB1dCBhY3F1aXJlcyBpdAoJLSByZW1vdmVkIHNvbWUgKG5vdykgb2Jzb2xldGUgZml4bWUncwoKCSogZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy9kZHJhdy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlZCBscENsaXBwZXIgaW50byBjb21tb25fZGlyZWN0ZHJhd3N1cmZhY2Ugc3RydWN0CglSZWxlYXNlIG9sZCBjbGlwcGVyIG9uIG5ldyBzZXQKCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRmFrZSBNSURJX0lPX1NUQVRVUyBzdXBwb3J0IGluIG1pZGkgaW4gb3BlbgoJRml4ZWQgYnVnIGluIG1pZGkgaW4gd2hpbGUgcmVhZGluZyBkYXRhCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBpbmZpbml0ZSBsb29wIGZvciAwLWxlbmd0aCB3YXZlaGRycy4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnZ3kgcGxheWJhY2sgZm9yIG5vbiBQQ00gZmlsZXMKCUFkZGVkIHN1cHBvcnQgZm9yIGZyb20gJiB0byBpbmRleGVzIGZvciBwbGF5YmFjawoJTm93IHVzaW5nIGRvdWJsZSB3YXZlaGRyIGZvciBiZXR0ZXIgb3V0cHV0CglDbGVhbmVkLXVwIGludGVybmFsIHN0cnVjdHMgYW5kIHJlbW92ZWQgbGFzdCAxNiBiaXQgQVBJIGFkaGVyZW5jZQoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRyaWVkIHRvIHJlZHVjZSBlY2hvIGluIHBsYXlTb3VuZCBBUEkgKHVzaW5nIHR3byB3YXZlaGRyIGluc3RlYWQgb2YKCW9uZSkuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgY2FsbGJhY2sgbWVjaGFuaXNtcyBmb3IgTUlESSBJTi4KCgkqIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgZGxscy9tc2FjbTMyL3dpbmVhY20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW1wcm9wZXIgYWNtIHN0cmVhbXMgY2xvc2luZy4KCgkqIGRsbHMvbXNhY20zMi9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEZWJ1ZyB0cmFjZXMgY29zbWV0aWMgZml4ZXMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgZXJyb3JzICh0aGFua3MgdG8gRiBHb3VnZXQgZm9yIHJlcG9ydGluZyB0aGVtKS4KCUFkZGVkIHNvbWUgYml0cyBvbiB0aHVua2luZyBhbmQgcmVzb3VyY2VzIGZvciBETExzLgoKU2F0IERlYyAgNCAwNDoyMjowNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRmlyc3Qgc3VwcG9ydCBvZiBER0EgMi4wIGZvciBEaXJlY3REcmF3LgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbjMyL25ld2Zucy5jOgoJRXJleiBWb2xrIDxlcmV6QGdteC5uZXQ+CglTdHVicyBmb3IgR2V0L1NldFByb2Nlc3NEZWZhdWx0TGF5b3V0LgoKCSogZmlsZXMvcHJvZmlsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZm9yIENsb3NlUHJvZmlsZVVzZXJNYXBwaW5nLgoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVzZSBESW5wdXQncyBpbnRlcm5hbCBtb3VzZSBldmVudCBoYW5kbGVyIHRvIGhhbmRsZSB0aGUgR2V0RGV2aWNlU3RhdGUKCWZ1bmN0aW9uLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+Cgl3YXZlSGRyLmxwRGF0YSB3YXMgZXZlbnR1YWxseSBIZWFwRnJlZSgpZWQgdW5pbml0aWFsaXplZC4KCgkqIGxvYWRlci9tb2R1bGUuYzogU2VyZ2VpIFR1cmNoYW5vdiA8dHVyY2hhbm92QG90dnByaW0ucnU+CglGaXggZm9yIEdldEJpbmFyeVR5cGUgdG8gcmV0dXJuIFNDU19ET1NfQklOQVJZIGlmIGV4dGVuZGVkIHNpZ25hdHVyZQoJaXMgdW5rbm93bi4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9lbGZkbGwuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgMzItYml0IG1vZHVsZSBuYW1lIGhhbmRsaW5nIHRvIGNvbmZvcm0gYmV0dGVyIHRvIFdpbjl4LgoJUmVtb3ZlZCBPRlNUUlVDVCBwYXNzaW5nIGR1cmluZyBwcm9jZXNzIGNyZWF0aW9uIHNlcXVlbmNlLgoJQnVnZml4OiBkb24ndCBzZXQgZXhlX21vZHJlZiB3aGVuIExPQURfTElCUkFSWV9BU19EQVRBRklMRSBpcyBzZXQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgaW5jbHVkZS93aW5zdmMuaCwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJTWljaGFlbCBNY0Nvcm1hY2sgPG1jY29ybWFjQGFhbHMyNy5hbGNhdGVsLmNvbS5hdT4KCUFkZGVkIGNvZGUgdG8gc29tZSBzZXJ2aWNlIGZ1bmN0aW9ucyAoc29tZSB1bnRlc3RlZCksIGZpeGVkCglkZWNsYXJhdGlvbiBvZiBzZXJ2aWNlIG1haW4gZnVuY3Rpb24uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJUGllcnJlIE1hZ2VhdQoJTXVyYWxpIFBhdHRhdGhlCglGcmFuY29pcyBCb2lzdmVydAoJRnJhbmNpcyBCYXVkZXQKCUhlbm5pbmcgSG9mZm1hbm4KCU1hbnkgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgc3R1YnMgZm9yIHNldmVyYWwgTVJVIGxpc3QgZnVuY3Rpb25zIGFuZCBkb2N1bWVudGVkIHNvbWUgb3RoZXJzLgoKCSogc2VydmVyL2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGbHVzaCBoYW5kbGUgaW4gYW55IGFjY2VzcyBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgb2ZmIGJ5IG9uZSBlcnJvciBpbiBpdGVtIGluc2VydGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG93IDElIGRldmlhdGlvbiBmcm9tIHNwZWNpZmllZCBzYW1wbGluZyByYXRlIGZvciBzb21lIHNvdW5kY2FyZHMuCgoJKiBpbmNsdWRlL2QzZC5oOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcHJlc3NlZCB0aGUgaW5jbHVzaW9uIG9mIE9wZW5HTCBoZWFkZXJzLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBzdHViIGZvciBjb252ZXJzaW9uIGZyb20gbWV0YSB0byBlbmhhbmNlIG1ldGEgZmlsZXMuCgktIEltcGxlbWVudGVkIEdldEVuaE1ldGFGaWxlQml0cyBmb3IgZW5oYW5jZWQgbWV0YSBmaWxlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglJbXByb3ZlZCBzdHVicyBmb3IgdGhlIGRkcmF3IGNsaXBwZXIgcm91dGluZXMuCgpNb24gTm92IDI5IDAyOjQ4OjQzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi90aW1lLmM6IE1hZGUgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUgcmV0dXJuIHZhbHVlIG1vcmUgcHJlY2lzZS4KCgkqIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jOgoJRml4ZWQgZ2V0X2V2ZW50X29iai9nZXRfZmlsZV9vYmogdG8gdXNlIHRoZSBwcm9jZXNzIHBhcmFtZXRlciAodGhhbmtzCgl0byBFcmljIFBvdWVjaCkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jOgoJRml4ZWQgREVCVUdfT05MWV9USElTX1BST0NFU1MgYWdhaW4gKHRoYW5rcyB0byBVbHJpY2ggV2VpZ2FuZCkuCgoJKiBzY2hlZHVsZXIvdGltZXIuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL01ha2VmaWxlLmluOgoJSW1wbGVtZW50ZWQgd2FpdGFibGUgdGltZXJzLgoKU3VuIE5vdiAyOCAyMTowMzo0NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvYmluMnJlcy5jOiBCdWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgaW5jbHVkZS9wcnNodC5oOgoJU2VyZ2UgSXZhbm92CglQaWVycmUgTWFnZWF1CglUaHkgTmd1eWVuCglEb24gS2VsbHkKCU5vb21lbiBIYW16YQoJTG90cyBvZiBidWcgZml4ZXMgYW5kIG5ldyBmZWF0dXJlcyBpbiBwcm9wZXJ0eSBzaGVldHMuCgoJKiB3aW4zMi9uZXdmbnMuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglDb21waWxlciB3YXJuaW5ncyBmaXhlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUdpdmUgdGhlIGFwcCBiYWNrIHRoZSBleGFjdCBmb250IG5hbWUgaXQgYXNrZWQgZm9yLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJUHJldmVudCBhIGNyYXNoIGlmIG1lc3NhZ2VzIGFyZSBzZW50IHRvIGEgdG9vbGJhciB3aW5kb3cgYmVmb3JlCglXTV9OQ0NSRUFURSBvciBhZnRlciBXTV9ERVNUUk9ZLgoKCSogZGxscy93aW5tbS93aW5tbV9Fcy5yYzogSnVsaW8gQ2VzYXIgR2F6cXVleiA8amdhenF1ZXpAZGxkLm5ldD4KCVVwZGF0ZWQgU3BhbmlzaCBNTSBlcnJvciBzdHJpbmcgdHJhbnNsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIChmaW5hbD8pIHVwZGF0ZSBvZiBUcmVlVmlld18qIG1hY3JvJ3MuCgktIGltcGxlbWVudGF0aW9uIG9mIFRWTV9TRVRJTlNFUlRNQVJLICYgVFZNX1NFVElOU0VSVE1BUktDT0xPUgoJLSBmaXhlZCBzb21lIHR5cG8ncwoJLSBjdXN0b20gZHJhdyBlbmhhbmNlbWVudHMKCS0gaW1wbGVtZW50YXRpb24gb2Ygc3RhdGUgaW1hZ2VzCgktIGltcGxlbWVudGF0aW9uIG9mIFRWU19DSEVDS0JPWEVTCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNvbWUgdmlzdWFsIHRvb2xiYXIgYnVncy4KCgkqIFJFQURNRTogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJQWRkZWQgbm90ZXMgYWJvdXQgV2luZS1yZWxhdGVkIEZyZWVCU0Qga2VybmVsIHBhdGNoZXMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJVXNlIFJlZ1F1ZXJ5SW5mb0tleSB0byBjb3VudCBudW1iZXIgb2YgcHJpbnRlcnMuCgoJKiBzZXJ2ZXIvdW5pY29kZS5oOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglEb24ndCB0cnkgdG8gY2FsbCB0b3d1cHBlcigpIHdoZW4gdGhlcmUncyBubyB3Y3R5cGUuaC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJV2hlbiBjb21ib2JveCBzZWxlY3Rpb24gY2hhbmdlcywgdXBkYXRlIGl0cyBlZGl0IGJveCBhY2NvcmRpbmdseS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglOb3RpZnkgcGFyZW50IG9mIGxpc3Rib3ggaWYgcmVxdWVzdGVkLgoKVGh1IE5vdiAyNSAyMzo0Mjo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3B0cmFjZS5jOiBNb3JlIHBvcnRhYmlsaXR5IGZpeGVzICh0aGFua3MgdG8gSnVlcmdlbiBMb2NrKS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJU2V0L3VzZSBmcy9ncyBmcm9tIHRoZSBzaWdjb250ZXh0IHN0cnVjdCwgdGhlIGNvcnJlc3BvbmRpbmcga2VybmVsCgljaGFuZ2Ugbm93IGZpbmFsbHkgaGFzIGJlZW4gTUZDJ2QgdG8gLXN0YWJsZS4KCgkqIGRvY3VtZW50YXRpb24vZm9udHM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCU1lbnRpb24gZnJlZSBUcnVldHlwZSBmb250IHNlcnZlcnMgKFhmc3R0IGFuZCB4ZnNmdCkuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCU5vdGUgd2hhdCB0byBkbyB3aXRoIHRoZSB3aW5lZGVmYXVsdC5yZWcgaW4gdGhlIGZpbGUuCgoJKiB3aW4zMi9kZXZpY2UuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJSW1wbGVtZW50ZWQgcGFydHMgb2YgX1BhZ2VSZXNlcnZlKCkgX1BhZ2VDb21taXQoKSBfUGFnZURlY29tbWl0KCkKCV9QYWdlQ2hhbmdlUGVybWlzc2lvbnMoKSBhbmQgX1BhZ2VGcmVlKCkgdXNpbmcgdGhlCglWaXJ0dWFsKigpLUZ1bmN0aW9ucyAod2l0aCB0aGUgZ3JlYXQgaGVscCBvZiBVbHJpY2ggV2VpZ2FuZCkuCgoJKiBtZW1vcnkvYXRvbS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVJlbW92ZWQgZml4bWUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IFNldmVyYWwgYnVnIGZpeGVzIGluIHNhdmVfa2V5KCkuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBib2d1cyBlcnJvciBkZXRlY3Rpb24gZm9yIFJlZ0VudW1WYWx1ZVtBV10gYW5kCglSZWdRdWVyeVZhbHVlRXhbQVddLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIGdsb2JhbCBkYXRhIG11dHVhbCBleGNsdXNpb24KCS0gUmVtb3ZlZCBoYWNrIGZvciBjcmVhdGluZyBwcm9jZXNzZXMgc3VzcGVuZGVkIG5vdyB0aGF0IGl0J3MgaW1wbGVtZW50ZWQKCS0gRml4ZWQgb3JkaW5hbCBudW1iZXJpbmcgYW5kIGFkZGVkIHNwZWMgc3R1YnMKCS0gRml4ZWQgRW51bUNvbm5lY3Rpb25zIGNhbGxiYWNrIHRvIGZpbGwgaW4gYWxsIHBhcmFtZXRlcnMgd2l0aCB2YWxpZCBkYXRhCgktIE1hZGUgZGlyZWN0IHBsYXkgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXMKCSAgZGlyZWN0IHBsYXkgbG9iYnkKCgkqIGRsbHMvd2luODdlbS9lbXVsYXRlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTZXZlcmFsIGltcHJvdmVtZW50cy4KCgkqIG9sZS9vbGUybmxzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBpbnZhbGlkIExDTWFwU3RyaW5nIGZpeG1lIGZvciBOT1JNX0lHTk9SRUtBTkFUWVBFIGNhc2UuCgoJKiBpbmNsdWRlL2NvbW0uaCwgbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSB3aW4xNiBzZXJpYWwgY29tbXMgbGVzcyBvZiBhIENQVSBob2cuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvdmlydHVhbC5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91bmljb2RlLmMsIHNlcnZlci91bmljb2RlLmg6CglTdG9yZSBhbGwgb2JqZWN0IG5hbWVzIGFzIFVuaWNvZGUgaW4gdGhlIHNlcnZlci4KCldlZCBOb3YgMjQgMTk6MzQ6MzIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jLCB3aW5lLmluaToKCUFkZGVkIHdpbmUuY29uZiBvcHRpb24gZm9yIG5ldyBmb3JtYXQgcmVnaXN0cnkgZmlsZXMuCglBZGRlZCBvcHRpb25hbCBwZXJpb2RpYyBzYXZpbmcgb2YgdGhlIHJlZ2lzdHJ5LgoKCSogbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUFkZGVkIHN1cHBvcnQgdG8gdGhlIHNlcnZlciBmb3IgbG9hZGluZyBuZXcgZm9ybWF0ICh2ZXJzaW9uIDIpIGZpbGVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBCdWcgZml4ZXMgKHRoYW5rcyB0byBKdWVyZ2VuIFNjaG1pZWQpLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJQWRkZWQgY3VycmVudCBjb250ZXh0IHRvIHRoZSBleGNlcHRpb24gZGVidWcgZXZlbnQgc2VudCB0byB0aGUgc2VydmVyLgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJRml4ZWQgaGFuZGxpbmcgb2YgZGVidWcgZXZlbnRzIG9uIHRocmVhZC9wcm9jZXNzIGV4aXQuCgoJKiBkZWJ1Z2dlci9kYmcueSwgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJUmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gYSBjcml0aWNhbCBzZWN0aW9uIHdhaXQgZmFpbGVkLgoKVHVlIE5vdiAyMyAyMzo0MzoyOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvdHR5ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy90dHlkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3R0eWRydi9iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3R0eWRydi9jbGlwcGluZy5jLCBncmFwaGljcy90dHlkcnYvZm9udC5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvdHR5ZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy90dHlkcnYvcGVuLmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L2Rlc2t0b3AuYywgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3R0eWRydi9tb25pdG9yLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJbXByb3ZlZCB0aGUgc3R1YnMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpbmNsdWRlL2ltYWdlbGlzdC5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gZmlyc3QgJ2R1bW15JyBpbXBsZW1lbnRhdGlvbiBvZiBJbWFnZUxpc3RfUmVhZAoKCSogaW5jbHVkZS9yZWJhci5oLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBhZGRlZCB2ZXJzaW9uIG1lc3NhZ2VzCgoJKiBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGltcGxlbWVudGVkIExCSXRlbUZyb21QdAoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBpbXBsZW1lbnRlZCBzaW1wbGUgY29sdW1uIG9yZGVyIGFycmF5IGZ1bmN0aW9uYWxpdHkKCS0gaW1wbGVtZW50ZWQgc29tZSB2aXJ0dWFsIGxpc3R2aWV3IG5vdGlmaWNhdGlvbnMKCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBtaW5vciB1cGRhdGUgdG8gbXJ1IGxpc3QgZnVuY3Rpb25zCgktIHN0dWJzIGZvciBDT01DVEwzMl80MTEgdG8gQ09NQ1RMMzJfNDEzCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS90b29sYmFyLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBhZGRlZCB2ZXJzaW9uIG1lc3NhZ2VzIGFuZCBzb21lIHNpbXBsZSBnZXQvc2V0IG1lc3NhZ2VzLgoJLSBhZGRlZCB1bmljb2RlIG1lc3NhZ2VzCgoJKiBpbmNsdWRlL3NobGd1aWQuaCwgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG1hZGUgSVNoZWxsRm9sZGVyIGEgYWdncmVnYWJsZSBvYmplY3QKCS0gU0hDb0NyZWF0ZUluc3RhbmNlIGNhbiBjcmVhdGUgQ1NJRExfRlNGb2xkZXIgbm93CgktIGJyb3dzaW5nIGludG8gZm9sZGVycyBvbiB0aGUgZGVza3RvcCBpbXBsZW1lbnRlZAoJLSBjb3JyZWN0ZWQgcmV0dXJudmFsdWUgb2YgSWNvX0V4dHJhY3RJY29uRXgKCS0gZml4ZWQgU0hHZXREYXRhRnJvbUlETGlzdCB0byByZXR1cm4gZGF0YSBvZiBzaW1wbGUgcGlkbHMKCgkqIHJlbGF5MzIvd3NvY2szMi5zcGVjLCBpZjE2MzIvd2luc29jay5zcGVjLCBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy93aW5zb2NrLmM6CglNb3NlcyBEZUpvbmcgPGRlam9uZ0Bjcy51bW4uZWR1PgoJQWRkZWQgaW1wbGVtZW50YXRpb24gZm9yIFdTQVJlY3ZFeCBmdW5jdGlvbi4gVGhpcyBpcyBhIE1pY3Jvc29mdAoJc3BlY2lmaWMgZXh0ZW5zaW9uIHRvIHRoZSB3aW5zb2NrIEFQSS4KCgkqIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21wci9wd2NhY2hlLmMsIGluY2x1ZGUvd2lubmV0d2suaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ29ycmVjdGVkIHdyb25nIHBhcmFtZXRlciBjb3VudHMgZm9yIFdOZXRDYWNoZVBhc3N3b3JkIGFuZAoJV05ldEVudW1DYWNoZWRQYXNzd29yZHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIHN0dWIgZm9yIERsbEluc3RhbGwoKS4KCgkqIG1pc2MvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWMsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCUNoYW5nZWQgdG8gdXNlIG5ldyBzZXJ2ZXItc2lkZSByZWdpc3RyeSBzdXBwb3J0LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdW5pY29kZS5oOgoJQWRkZWQgcmVnaXN0cnkgc3VwcG9ydCB0byB0aGUgc2VydmVyLgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0czoKCURpZmZlcmVudGlhdGUgdHJhY2luZyBmdW5jdGlvbnMgYmV0d2VlbiByZXF1ZXN0IGFuZCByZXBseS4KCUFkZGVkIHBvc3NpYmlsaXR5IHRvIGhhdmUgZHVtcGluZyBmdW5jdGlvbnMgZm9yIHNwZWNpZmljIHR5cGVzLgoKU3VuIE5vdiAyMSAyMTowMjowNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJQWRkZWQgc2VydmVyX2NhbGxfbm9lcnIgZnVuY3Rpb24gdGhhdCBhdm9pZHMgdG91Y2hpbmcgdGhlIGxhc3QgZXJyb3IuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IEFkZGVkIGEgZmV3IHJlZ2lzdHJ5IGVycm9yIGNvZGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG9iamVjdHMvZm9udC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIHNvbWUgdW5hbGlnbmVkIGFjY2Vzc2VzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIHRoZSBmb2RJbmZvcyB3ZXJlIHVzZWQgYmVmb3JlIGluaXRpYWxpemVkCgktIGxwVGVtcGxhdGVOYW1lIGNhbiBiZSBhIHJlc291cmNlIGlkCgktIGlmIGxwVGVtcGxhdGVOYW1lIGlzIGEgc3RyaW5nIGRvbid0IGZyZWUgdGhlIG9yaWdpbmFsIG9uZQoKCSogd2luMzIvY29uc29sZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9jcHUuYywgbXNkb3MvaW9wb3J0cy5jLCBvbGUvZ3VpZC5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9zb2NrZXQuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIGRsbHMvd2lubW0vbWNpLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3dpbmcvd2luZ19tYWluLmM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCVJlbW92ZWQgZXh0cmEgI2luY2x1ZGUgc3RhdGVtZW50cy4KCgkqIGZpbGVzL2ZpbGUuYzoKCUZpeGVkIE1vdmVGaWxlRXhBIGJlaGF2aW9yIHdoZW4gdGFyZ2V0IGZpbGUgZG9lcyBub3QgZXhpc3QuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL1B0LnJjOgoJR3VzdGF2byBKdW5pb3IgQWx2ZXMgPHR3aW5mb0BiZXN0d2F5LmNvbS5icj4KCUFkZGVkIFBvcnR1Z3Vlc2UgbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgaW5jbHVkZS9tb250aGNhbC5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIGN1cnJlbnQgZGF5IGNpcmNsaW5nLiAgRml4ZWQgbWFueSBidWdzIGluIHRoZSBtb250aAoJY2FsZW5kZXIgY29udHJvbCBpbmNsdWRpbmcgY29udHJvbCBzcGFjaW5nIGFuZCBhbGlnbm1lbnQuICBGaXhlZAoJZGVmaW5lcyBtb250aGNhbC5oLiAgT3B0aW1pemVkIGNvbnRyb2wgZHJhd2luZyBhbmQgcmVtb3ZlZCBtYW55CglleHRyYW5pb3VzIHJlZHJhd3MuICBJbXByb3ZlZCBjb250cm9sIGJlaGF2aW9yLiAgRml4ZWQgaW5jb25zaXN0ZW50Cglmb3JtYXR0aW5nIGluIGJvdGggLmMgYW5kIC5oIGZpbGVzLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmx1c2ggY3VycmVudCBwcm9maWxlIGJlZm9yZSB1c2luZyBhIG5ld2x5IG9wZW5lZCBvbmUuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBHZXRUaHJlYWRTZWxlY3RvckVudHJ5KCkgc2V0cyByZWFkLXdyaXRlIGZsYWcgaW5jb3JyZWN0bHkuCgoJKiBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgb2JqZWN0cy9mb250LmMsIGlmMTYzMi9nZGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWIgZm9yIEdldEZvbnREYXRhMTYuCgoJKiB3aW5kb3dzL2Rpc3BsYXkuYywgaWYxNjMyL2Rpc3BsYXkuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgb3JkaW5hbHMgYW5kIEdldERyaXZlclJlc291cmNlSUQoKS4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wdHJhY2UuYzogUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBGaXhlZCBtZWFuaW5nIG9mIERFQlVHX09OTFlfVEhJU19QUk9DRVNTIGZsYWcuCgoJKiB0b29scy9iaW4ycmVzLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglGaXhlZCBjb21waWxlIGVycm9yLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IFBldGVyIFNjaGxhaWxlIDx1ZGJ6QHJ6LnVuaS1rYXJsc3J1aGUuZGU+CglJbXBsZW1lbnRlZCBTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlckEgYWNjb3JkaW5nIHRvIERpc3BhdGNoZXJXLgoKCSogTWFrZWZpbGUuaW46IE1ha2Ugc3VyZSB3ZSBjbGVhbiBkbGxzLyB0b28uCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglJbXBsZW1lbnRlZCBPcGVuU0NNYW5hZ2VyVywgQ2xvc2VTZXJ2aWNlSGFuZGxlLCBPcGVuU2VydmljZVcsIGFuZCBzb21lCglvZiBRdWVyeVNlcnZpY2VTdGF0dXMuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyAnOycuCgoJKiB0b29scy93cmMvcGFyc2VyLmw6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRXJyb3IgcmVwb3J0aW5nIGZpeC4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDaGFuZ2VkIGRlZmF1bHQgcmVsYXkgbGluZSBudW1iZXIgZnJvbSAxMDAgdG8gMjAwLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdW5kb2N1bWVudGVkIGZlYXR1cmUgdG8gSW5zZXJ0QnV0dG9uQS4KCUFkZGVkIGRyb3Bkb3duIGJ1dHRvbiBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcGxheSBiYWNrIG9mIHVuY29tcHJlc3NlZCBBVkkgZmlsZS4KCUZpeGVkIGV4aXRpbmcgY29uZGl0aW9ucy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBjcmFzaCBpbiBJRGlyZWN0RHJhd1N1cmZhY2U6Qmx0RmFzdC4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZm9yd2FyZGluZyBhbmQgaGFuZGxpbmcgbWVzc2FnZXMgZGlyZWN0ZWQgdG8gdGhlIG1hcHBlcnMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGluY2x1ZGUvbW9kdWxlLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNpbXBsaWZpZWQgaEluc3RhbmNlIGNyZWF0aW9uL2hhbmRsaW5nLgoJRml4ZXMgcHJvYmxlbXMgd2l0aCBzZWxmLWxvYWRlcnMgY3JlYXRpbmcgREdST1VQIHRoZW1zZWx2ZXMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBzdHVicyBmb3IgR2V0L1NldExheW91dCgpLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgc3R1YiBmb3IgU3RnU2V0VGltZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsbWVudS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU0hGaW5kX0luaXRNZW51UG9wdXAgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGEgcG9pbnRlci4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJdV9pbnRbMTZ8MzJdX3QgbWlnaHQgbm90IGJlIGRlZmluZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIGZpeGVkIGNyYXNoIHdoZW4gYWRkaW5nIGl0ZW1zIHdpdGggVFZJX1NPUlQgYW5kIHdpbmVJdGVtLT5wc3pUZXh0IGlzCgkgIHNldCB0byBMUFNUUl9URVhUQ0FMTEJBQ0suCgktIGRpdHRvIGZvciBUUkVFVklFV19EZWxldGVJdGVtLCBUUkVFVklFV19DcmVhdGVEcmFnSW1hZ2UuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk1vbiBOb3YgMTUgMDA6NDY6MzAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IEZpeGVkIGFsbG9jYXRpb24gcm91bmRpbmcgZm9yIE1FTV9SRVNFUlZFLgoKCSogc2VydmVyL2ZpbGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBoYXNoIGZ1bmN0aW9uLgoKU3VuIE5vdiAxNCAyMzo1OTowMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVGhlIGFkd0luZm9bMF0gZmllbGQgd2FzIG5vIGxvbmdlciB1c2VkIG9uIG1taW9PcGVuIChtYXkgY29udGFpbiBmaWxlCgloYW5kbGUpLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdHVicyBmb3IgU2V0RXJyb3JJbmZvLCBQcm9wVmFyaWFudENsZWFyLCBQcm9wVmFyaWFudENvcHksCglGcmVlUHJvcFZhcmlhbnRBcnJheS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBzdWljaWRlIGNvZGUgd2hlbiBwbGF5YmFjayB0aHJlYWQncyBmYXRoZXIgZGllcy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHRoZSBjb2x1bXMgaW4gdGhlIHNoZWxsdmlldyBhcmUgbm93IGNyZWF0ZWQgZGVwZW5kaW5nIG9uIHRoZQoJICBhdHRyaWJ1dGVzIG9mIHRoZSBmb2xkZXIgb2JqZWN0IHNob3duCgktIGdldCBhbGwgYXR0cmlidXRlcyBmcm9tIHRoZSBzaGVsbGZvbGRlciBpbnN0ZWFkIGRpcmVjdGx5IGZyb20gdGhlIGlkbGlzdAoJLSBoZWFkZXIgZmllbGRzIGxvY2FsaXplZCAob25seSBlbmdsLiBhbmQgZ2VybWFuIHRpbGwgbm93KQoJLSBzbWFsbCBmaXhlcwoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBjb3JyZWN0ZWQgY29udHJvbCBwb3NpdGlvbnMKCS0gdXNlIHRoZSBpY29ucyBmcm9tIGNvbWN0bDMyIGZvciB0aGUgYnV0dG9ucwoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiByZWxheS9zbm9vcCBkZWJ1Z2dpbmcgd2FzIGJyb2tlbiBieSBsYXN0IHBhdGNoIC4uLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJTW92ZWQgcHRyYWNlIHN1cHBvcnQgdG8gcHRyYWNlLmMuIFRyaWVkIHRvIGltcHJvdmUgcG9ydGFiaWxpdHkuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzogQnVnIGZpeGVzLgoKCSogaWYxNjMyL3JlbGF5LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc29tZSB1bnJlc29sdmVkIGV4dGVybmFscyBvbiBub24tSW50ZWwgYXJjaHMuCgoJKiByZWxheTMyL3Nub29wLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBtaXNzaW5nIFdJTkFQSSBhdHRyaWJ1dGUgdG8gdHdvIGZvcndhcmQgZGVjbGFyYXRpb25zLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgbGVmdG92ZXIgI3VuZGVmcy4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSWdub3JlIE1DSV9PUEVOX0VMRU1FTlQgaW4gQ0RBVURJT19tY2lPcGVuLgoKCSogZGxscy9jcnRkbGwvd2NzdHJpbmcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXb3JrIGFyb3VuZCBnbGliYyBidWcsIHRoYXQgZG9lcyBub3QgaGFuZGxlIGxhdGluLTEgdW1sYXV0cy4KClNhdCBOb3YgMTMgMjM6NTQ6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgbG9hZGVyL2Rvcy9kb3N2bS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIG5ldyByZWdpc3RlciBmdW5jdGlvbiBoYW5kbGluZy4KCgkqIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmaWVkIFdpbjMyIHJlZ2lzdGVyIGZ1bmN0aW9uIGhhbmRsaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9pY21wL2lwLmgsIGRsbHMvaWNtcC9pcF9pY21wLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSBCU0QgaGVhZGVycyBmb3IgSUNNUCBwb3J0YWJpbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBpbnNlcnRlZCBtYXJrZXJzIGZvciB0aGUgYmluMnJlcyB0b29sCgktIHJlZm9ybWF0ZWQgaGV4ZHVtcCBpbiBzaHJlcy5yYwoKCSogZG9jdW1lbnRhdGlvbi9yZXNvdXJjZXMsIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9iaW4ycmVzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5ldyB0b29sIHRvIGNvbnZlcnQgdGhlIGJpbmFyeSByZXNvdXJjZXMgaW4gKi5yYyBmaWxlcyAoaGV4ZHVtcHMpIGZyb20KCWFuZCB0byBhIGJpbmFyeS4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIG1pc2MvcG9ydC5jLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2FzeW5jLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBiZXR0ZXIgbWlzc2luZyBmdW5jdGlvbiBlbXVsYXRpb24uCgoJKiBpbmNsdWRlL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1hZGUgZGVidWdnZXIgY29tcGlsZSBhbmQgbWFyZ2luYWxseSB3b3JrIG9uIG5vbi1JbnRlbCBhcmNocy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgR0VUX0lQIG1hY3JvIHRvIHdpbm50LmgKCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcsIGRvY3VtZW50YXRpb24vcHNkcml2ZXIsIGRvY3VtZW50YXRpb24vcHNkcnYucmVnLCBncmFwaGljcy9wc2Rydi9SRUFETUU6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNb3ZlIFBvc3RTY3JpcHQgZHJpdmVyIGRvY3MgdG8gZG9jdW1lbnRhdGlvbi8gLiAgQWRkIGluc3RydWN0aW9ucyBvbgoJaG93IHRvIHVzZSByZWdhcGkgdG8gZ2V0IGluZm9ybWF0aW9uIGludG8gdGhlIHJlZ2lzdHJ5LiAgU3VwcGx5IHNhbXBsZQoJaW5wdXQgdG8gcmVnYXBpLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglJbXBsZW1lbnRlZCB0aGUgUHJpbnRTZXR1cCBkaWFsb2cgYm94IGZvciB0aGUgUHJpbnREbGdBLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCUFkZGVkIHZhbGlkYXRpb25zIGZvciBwYWdlIGluZGV4IGJlZm9yZSB1c2luZyBpdC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCS0gZml4ZWQgdGhlIGluZGV4IG9mIHRoZSBpdGVtIGNob3NlbiBpbiB0aGUgZmlsdGVyIGNvbWJvIGJveAoJLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgT0ZOX09WRVJXUklURVBST01QVCBmbGFnCgktIGZpeGVkIHBvc2l0aW9uaW5nIG9mIGNvbnRyb2xzIGluIHRoZSB1c2VyLWRlZmluZWQgdGVtcGxhdGVzCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIFdyaXRlUHJvY2Vzc01lbW9yeSB0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0Lmg6IEFkZGVkIGdldF9wYWdlX3NpemUgZnVuY3Rpb24uCgpGcmkgTm92IDEyIDIxOjM5OjE1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBZGRlZCBzdXBwb3J0IGZvciBSZWFkUHJvY2Vzc01lbW9yeSB0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBDUkVBVEVfU1VTUEVOREVEIGZsYWcgaW4gQ3JlYXRlUHJvY2Vzcy4KCgkqIHdpbjMyL2RldmljZS5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUltcGxlbWVudGVkIFZXaW4zMiBWeERDYWxsIG1lY2hhbmlzbSBhbmQgMiBjYWxscy4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYzogPGpvZGFtYW5AY2VndDIwMS5icmFkbGV5LmVkdT4KCUZpeGVkIGpveXN0aWNrIHNjYWxpbmcuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfQ3MucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dcy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZpLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9IdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05sLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Oby5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUGwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU3YucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjOgoJR3VzdGF2byBKdW5pb3IgQWx2ZXMgPHR3aW5mb0BiZXN0d2F5LmNvbS5icj4KCVVzZSBjb25zdGFudHMgSURPSyBhbmQgSURDQU5DRUwgaW4gLnJjIGZpbGVzLgoKCSogc2VydmVyL3RocmVhZC5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVBvcnRhYmlsaXR5IGZpeDogcmVuYW1lZCBQVFJBQ0VfKiBpbnRvIFBUXyouCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2RldmljZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBmb3IgYnVnZ3kgYXBwcyB0aGF0IGNhbGwgdGhlIHdyb25nIFZ4RENhbGwgcm91dGluZS4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ29tcGxldGUgc3R1YiBmb3IgUmFzRW51bUVudHJpZXMgYnkgc2F5aW5nIHdlIGhhdmUgMCBlbnRyaWVzLgoKCSogaW5jbHVkZS9kZWJ1Z3N0ci5oLCBtaXNjL2RlYnVnc3RyLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGQgZGVidWdzdHJfaGV4X2R1bXAgdG8gYWxsb3cgZGlzcGxheSBoZXggZHVtcHMgb2YgZGF0YSBpbiBhbnkKCWRlYnVnZ2luZyBtZXNzYWdlLgoKCSogc2VydmVyL3RocmVhZC5jOgoJQWRkZWQgdXNlX3B0cmFjZSBmbGFnIHRvIGRpc2FibGUgcHRyYWNlIHVzYWdlLiBTaG91bGQgZXZlbnR1YWxseSBiZQoJbWFkZSBpbnRvIGFuIG9wdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9kbGdzLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3Lmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1hZGUgdGhlIGJ1dHRvbnMgaW4gdGhlIGZpbGVkbGcgY2hhbmdlIHdoZW4gc2VsZWN0aW5nIGEgZGlmZmVyZW50Cgl2aWV3IHR5cGUgYnkgdGhlIGNvbnRleHQgbWVudSwgY2xlYW51cC4KCgkqIGRsbHMvd2lubW0vd2lubW1fRXMucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJSnVsaW8gQ2VzYXIgR2F6cXVleiA8amdhenF1ZXpAZGxkLm5ldD4KCUFkZGVkIFNwYW5pc2ggKHB1cmUgQ2FzdGlsbGFuKSBNTSBlcnJvciBzdHJpbmcgdHJhbnNsYXRpb24uCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzaWduYWwgaGFuZGxpbmcgZm9yIFNQQVJDIC8gU29sYXJpcy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ29tbWVudCBvdXQgZXhwbGljaXQgY2FsbCB0byBTSEVMTF9TYXZlUmVnaXN0cnkgc2luY2Ugd2luZWxpYiBwcm9ncmFtcwoJbm93IGV4aXQgcHJvcGVybHkuICBDaGFuZ2Ugc2V2ZXJhbCBOVUxMcyB0byAnXDAncy4gIEZpeCBzb21lIHNwZWxsaW5nLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBYU2htIGNvbXBsZXRpb24gZXZlbnQgbGVhay4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWN1cnNpb24gY291bnQgd2hpbGUgY2FsbGluZyBtaWRpU3RyZWFtKFBhdXNlfFJlc3RhcnQpLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggc2F2ZV9jaGVja190YWludGVkIHRvIHByb3Blcmx5IHNjYW4gdGhlIHRyZWUgc28gdGhhdCBhbGwgdGFpbnRlZAoJYnJhbmNoZXMgZ2V0IHNhdmVkLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglCZXJuZCBQYXlzYW4gPGJlcm5kLnBheXNhbkBnbXguZGU+CglBZGRlZCBhIHN0dWIgZm9yIHNldGptcC4KCldlZCBOb3YgMTAgMjA6MjU6MTkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci90aHJlYWQuYzoKCURvbid0IGNyYXNoIHdoZW4gd2UgZ2V0IGEgU0lHQ0hMRCBmb3IgYSByZW1vdmVkIHRocmVhZC4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIGNvbXBpbGUgZml4ZXMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCShQcmVsaW1pbmFyeSkgQ09OVEVYVCBzdHJ1Y3R1cmUgZm9yIFNQQVJDIGFkZGVkLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogTE9BRF9ETExfREVCVUdfRVZFTlQgbHBJbWFnZU5hbWUgcGFyYW1ldGVyIHdhcyBpbmNvcnJlY3QuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdoZW4gZGVjb21taXR0aW5nLCByZW1hcCB6ZXJvIHBhZ2VzIHVzaW5nIE1BUF9GSVhFRC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29HZXRDbGFzc09iamVjdCBzaG91bGQgY29tcGxhaW4gYWJvdXQgbm90IGJlaW5nIGFibGUgdG8gZG8KCW91dC1vZi1wcm9jZXNzIHNlcnZlcnMgKm9ubHkqIGlmIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IGluY2x1ZGUgdGhlCglpbi1wcm9jZXNzIG9wdGlvbnMuCgoJKiBtaXNjL3ZlcnNpb24uYywgY29udHJvbHMvZWRpdC5jLCBpbmNsdWRlL3dpbnZlcnNpb24uaDoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglTZW5kIFdNX0NUTENPTE9SRURJVCBub3QgV01fQ1RMQ09MT1JTVEFUSUMgbWVzc2FnZXMgdG8gcGFyZW50IG9mIGEKCWRpc2FibGVkIGVkaXQgY29udHJvbCBpZiB0aGUgYXBwbGljYXRpb24gZXhwZWN0cyBhIHdpbmRvd3MgdmVyc2lvbgoJYmVmb3JlIFdJTjk1IGFuZCBOVDQwLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgZmlsZXMvZmlsZS5jOgoJTW9zaGUgVmFpbmVyIDxtb3NoZXZAZWFzeWJhc2UuY29tPgoJU3R1YiBmb3IgR2V0T3ZlcmxhcHBlZFJlc3VsdC4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZXRlcm1pbmUgZXhwZWN0ZWRfdmVyc2lvbiBvZiBQRSBidWRkaWVzIGZyb20gdGhlIFN1YnN5c3RlbVZlcnNpb24uCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2lubnQuaCwgd2luMzIvZXhjZXB0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSAqbm90KiBXSU5BUEkuCgpNb24gTm92ICA4IDA1OjMxOjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJUHJlbGltaW5hcnkgcHRyYWNlIHN1cHBvcnQuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJUmVtYXAgemVyby1wYWdlcyB3aGVuIGRlY29taXR0aW5nIGEgcGFnZSByYW5nZSAoYmFzZWQgb24gYSBwYXRjaCBieQoJR2VyYXJkIFBhdGVsKS4KCgkqIE1ha2VmaWxlLmluLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL21haW4uYzoKCUluc3RhbGwgdGhlIHdpbmUgc2VydmVyIGluICQoYmluZGlyKSBhbmQgZXhlYyBpdCBmcm9tIHRoZXJlLgoKU3VuIE5vdiAgNyAyMzo1OTowOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6CglEbyBub3QgZnJlZSB0aGUgaGFuZGxlcyBvbmNlIHRoZXkgaGF2ZSBiZWVuIHNlbnQgdG8gdGhlIGNsaWVudCAodGhhbmtzCgl0byBKZXJlbXkgV2hpdGUpLgoKCSogd2luZG93cy9tc2dib3guYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIGFza2VkIHRvIHVzZSBzdHJpbmdzIGlkZW50aWZpZWQgYnkgcmVzb3VyY2UgaWQKCWluc3RlYWQgb2YgcG9pbnRlci4KCgkqIHdpbmRvd3MvZGNlLmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCVdoZW4gd2luZG93IGNsYXNzIGhhcyBDU19DTEFTU0RDIHN0eWxlIHdlIHNob3VsZCBub3QgcmVtb3ZlIHRoZSBEQwoJd2hlbiBkZXN0cm95aW5nIHRoZSB3aW5kb3cuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGRsbHMvd2luMzJzL3czMnNrcm5sLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGZpeGVzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL291dHB1dC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBmaXhlcyBhbmQgcmVvcmdhbml6YXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2lmX21hY3Jvcy5oLCBpbmNsdWRlL2JpdF9hcnJheS5oLCBpbmNsdWRlL250ZGxsLmgsIGluY2x1ZGUvb2xlb2JqLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgb2Jzb2xldGUgZmlsZXMgbm8gbG9uZ2VyIGluIHVzZS4KCgkqIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3gxMWRydi5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEaXJlY3RYLVhTaG0gbm93IHdhaXRzIGZvciB0aGUgWCBzZXJ2ZXIgdG8gZmluaXNoIHRoZSBwcmV2aW91cyBmcmFtZQoJYmVmb3JlIHNlbmRpbmcgYW5vdGhlciBmcmFtZSBkb3duIGl0cyBwaXBlLCBhdm9pZGluZyB0aGUgWCBzZXJ2ZXIKCW92ZXJsb2FkIGFuZCByZXN1bHRpbmcgc2xvd25lc3MgdGhhdCB1c2VkIHRvIGJlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS9kbGdzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gdW5pZmllZCB0ZW1wbGF0ZXMgZm9yIHRoZSBvcGVuIGFuZCB0aGUgc2F2ZSBkbGcKCS0gcmVwbGFjZWQgYnV0dG9ucyB3aXRoIGEgdG9vbGJhcgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbmV3IGludGVyZmFjZSBkZWNsYXJhdGlvbiBmb3IgSVNoZWxsZm9sZGVyMgoJLSBhZGRlZCB0aGlzIGludGVyZmFjZSB0byBhbGwgc2hlbGwgZm9sZGVycwoJLSBzbWFsbCBmaXhlcyB0byBzaGVsbHZpZXcgKGNyYXNoIHdpdGggbmF0aXZlIGNvbWRsZzMyKQoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdGhlIHJlbG9jYXRpb24gaGFjayBpbiBQRV9Jbml0VGxzLiBBZGRlZCBzb21lIG1vcmUgZm9yIHRoZSBvdGhlcgoJcG9pbnRlcmZpZWxkcyBpbiB0aGUgVExTIGVudHJ5LiAoV2l0aCB0ZXN0aW5nIGhlbHAgZnJvbSBKdXNzaQoJSnVtcHBhbmVuIDxqdXNzaWpAemV1c2VkaXQuY29tPikuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS93aW51c2VyLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIENoYW5nZURpc3BsYXlTZXR0aW5nc0V4QSBzdHViIGFuZCBzb21lIGZsYWcgZGVmaW5lcy4KCgkqIGluY2x1ZGUvY29uc29sZS5oOiBSb2JlcnQgJ0FkbWlyYWwnIENvZXltYW4gPGFkbWlyYWxAY29ybmVyLm5ldD4KCUFkZGVkIHRoZSBoZXggdHJpcGxldHMgdG8gdGhlIGNvbnNvbGUgY29sb3IgZGVmaW5pdGlvbnMuCgoJKiB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgaW5jbHVkZS9pbnB1dC5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy93aW5wb3MuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCB0aGUgcG9zc2liaWxpdHkgdG8gaGF2ZSBtb3VzZSBtb3ZlbWVudHMgcmVwb3J0ZWQgcmVsYXRpdmUgdG8KCVdpbmUncyBtb3VzZSBkcml2ZXIuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC8uY3ZzaWdub3JlLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS93aW5lL2ljbXBhcGkuaCwgaW5jbHVkZS93aW5lL2lwZXhwb3J0LmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgcmVsYXkzMi9idWlsdGluMzIuYywgd2luZS5pbmk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIElDTVAgRExMIGltcGxlbWVudGF0aW9uLgoKCSogdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL0NIQU5HRVM6CglKdWVyZ2VuLlNjaG1pZWRAZGViaXRlbC5uZXQKCS0gQnVnZml4OiBTdHlsZXMgd2VyZSBldmFsdWF0ZWQgYXMgZXhwcmVzc2lvbnMuIFRoZSBOT1QgaW4gY29tYmluYXRpb24KCSAgd2l0aCBzdHlsZSBmbGFncyB3YXMgbm90IG92ZXJ3cml0aW5nIHRoZSBkZWZhdWx0IHN0eWxlcyBsaWtlIFdTX1ZJU0lCTEUuCgkgIFNvbHZlZCBieSBpbnRyb2R1Y2luZyBvd24gcnVsZXMgZm9yIHBhcnNpbmcgc3R5bGVzLgoKCSogY29udHJvbHMvY29tYm8uYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJRml4ZWQgdGhlIGhlaWdodCBvZiB0aGUgQ29tYm9Cb3ggZHJvcCBsaXN0LgoKCSogd2luZG93cy9kaWFsb2cuYzogRGF2aWQgR3JhbnQgPGRhdmlkZ3JhQGNvcmVsLmNhPgoJV2luZG93cyBzZW5kcyBXTV9HRVRETEdDT0RFIG9ubHkgaW4gcmVzcG9uc2UgdG8ga2V5Ym9hcmQgbWVzc2FnZXMKCShXTV9LRVlET1dOLCBXTV9DSEFSLCBXTV9TWVNDSEFSKS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBtaXNzaW5nIF9fYXR0cmlidXRlX18gKChjb21faW50ZXJmYWNlKSkgZm9yIElVbmtub3duIHdpdGguCgkgIElDT01fVVNFX0NPTV9JTlRFUkZBQ0VfQVRUUklCVVRFCgktIFNtYWxsIGFkZGl0aW9uIHRvIGNvbW1lbnRzIHN1cnJvdW5kaW5nCgkgIElDT01fVVNFX0NPTV9JTlRFUkZBQ0VfQVRUUklCVVRFICJvcHRpb24iLgoKCSogb2xlL29sZTJubHMuYywgaWYxNjMyL29sZTJubHMuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGF0aW9uIG9mIFJlZ2lzdGVyTkxTSW5mb0NoYW5nZWQuCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgd2luZG93cy9xdWV1ZS5jLCBtZW1vcnkvaGVhcC5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBZGRyZXNzZXMgaXNzdWVzIHdpdGggbXVsdGlwbGUgcHJvY2Vzc2VzIGFjY2Vzc2luZyBub24tZ2xvYmFsIGNyaXRpY2FsCglzZWN0aW9ucy4KCgkqIHNlcnZlci9zb2NrLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGJ1ZyBpbiBXSU5TT0NLX2FjY2VwdCB3aGVuIG5vIGV2ZW50IGlzIHByZXNlbnQuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBpbmNsdWRlL2xtY29ucy5oLCBpbmNsdWRlL3Jhcy5oOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIHN0dWJzIGZvciBSYXNFbnVtRW50cmllc0EgYW5kIFJhc0dldEVudHJ5RGlhbFBhcmFtc0EuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGF0aW9uIG9mIGN1c3RvbSBkaWFsb2cgbWVzc2FnZXMgYW5kIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IERhdmlkIEdyYW50IDxkYXZpZGdyYUBjb3JlbC5jYT4KCS0gUHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIGNjaFRleHRNYXggZmllbGQgd2FzIGFkZGVkIGZvcgoJICBUVk5fR0VURElTUElORk8gbm90aWZpY2F0aW9uIG1lc3NhZ2UuCgktIFRWTV9TRVRJVEVNIHNob3VsZCB1cGRhdGUgJ21hc2snIGZpZWxkIHRvIHN5bmNocm9uaXplIGl0IHdpdGgKCSAgY3VycmVudCBpdGVtIHN0YXRlLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHBkLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUlmIFBhZ2VTaXplL0lucHV0U2xvdCBlbnRyeSBkb2Vzbid0IGNvbnRhaW4gYW4gb3B0aW9ucyB0cmFuc2xhdGlvbgoJc3RyaW5nIHVzZSB0aGUgb3B0aW9uIG5hbWUgaW5zdGVhZC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgU2V0VGl0bGVBIHdoZW4gc3RyaW5nIHJlc291cmNlcyB3ZXJlIHRvIGJlIGxvYWRlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJLSBGaXhlZCBhbiBlcnJvciBmb3Igc2Nyb2xsaW5nIGluIExpc3R2aWV3IChzb21ldGltZXMgYSBjb2x1bW4gd291bGQKCSAgbm90IGJlIHZpc2libGUpIGR1ZSB0byBteSBsYXN0IGNoZWNraW4uCgktIEZpeGVkIGFuIGVycm9yIGZvciB0aGUgaGVhZGVyIGNvbnRyb2wgd2hlbiB0aGUgTGlzdHZpZXcgaXMgcmVzaXplZCB3aXRoIFdNX1NJWkUKCS0gRml4ZWQgdGhlIHNjcm9sbGluZyBmb3Igc21hbGwgYW5kIGxhcmdlIGljb24gKHRoaXMgYnJva2UgYmVjYXVzZSBvZgoJICB0aGUgdXNlIG9mIFNCX1BBR0UgaW4gc2Nyb2xsSW5mbykKCS0gQWRkZWQgYSBwYXRjaCBtYWRlIGJ5IE5vb21lbiBIYW16YSB0byB1cGRhdGUgdGhlIGl0ZW0gd2lkdGggd2hlbgoJICBhZGRpbmcgYSBuZXcgaXRlbQoKCSogc2VydmVyL3NvY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglIYW5kbGUgc29ja2V0IGNyZWF0aW9uIGVycm9ycy4KCgkqIGNvbnRyb2xzL21lbnUuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglXaGVuIGEgcG9wdXBtZW51IGlzIGN1cnJlbnRseSBhY3RpdmUgb24gdGhlIHNjcmVlbiwgaXQgc2hvdWxkbid0CglyZW1vdmUgbW91c2UgY2xpY2sgbWVzc2FnZXMgdGhhdCBkb24ndCBiZWxvbmcgdG8gaXQgZnJvbSB0aGUgcXVldWUuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRXhlYyBgd2luZWNsaXBzcnYnIG5vdCBgd2luZWNsaXBzdnInLCBhbmQgZG9uJ3QgaW5oZXJpdCB3aW5lJ3MgWAoJc29ja2V0cyB0byBpdCAob3RoZXJ3aXNlIHdpbmRvd3Mgc3RheSBhcm91bmQgd2hlbiB3aW5lIGhhbmdzKS4KClRodSBOb3YgIDQgMDI6NTE6MjQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tYWluLmM6IEZpeGVkIC1kZWJ1Z21zZyArc2VydmVyLgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJQWRkZWQgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlIHN0ZGlvIGhhbmRsZXMgaW4gQ2xvc2VIYW5kbGUuCgoJKiBzZXJ2ZXIvaGFuZGxlLmM6CglNYWRlIGFsbCBoYW5kbGVzIG11bHRpcGxlIG9mIDQuIEZpeGVkIHNlbWFudGljcyBmb3IgcHNldWRvLWhhbmRsZXMuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzoKCUZyZWUgdGhlIGhhbmRsZXMgb2YgdGhlIGV2ZW50IHN0cnVjdHVyZSBpbiB0aGUgcmlnaHQgcHJvY2VzcyAodGhhbmtzCgl0byBKZXJlbXkgV2hpdGUpLgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgZHBsYXl4IExpYk1haW4gZm9yIGluaXRpYWxpemF0aW9uIG9mIGFsbCBkcGxheXggJ2dsb2JhbCcgZGF0YQoJLSBBZGRlZCBzdGFydCBmb3IgZ2xvYmFsIGRhdGEgbWFuaXB1bGF0aW9uCgktIFRPRE8gbGlzdCB1cGRhdGVkCgktIEFkZGVkIHNvbWUgbWlzc2luZyBoZWFkZXIgZmlsZSBkZWZpbml0aW9ucwoJLSBBZGRlZCB0aGUgYW5zaSB2ZXJzaW9ucyBvZiBkcGxheSBhbmQgZHBsb2JieQoJLSBGaXhlZCBpbnZhbGlkIG1hY3JvIGZvciBJRGlyZWN0UGxheTQKCS0gQ2xlYW5lZCB1cCBjb21waWxlciB3YXJuaW5ncwoJLSBNb3JlIGltcGxlbWVudGF0aW9uLCBidWcgZml4ZXMgYW5kIGNyaXRpY2FsIHJlZ2lvbiBwcm90ZWN0aW9uCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCU5ldmVyIHNlbmQgYSBXTV9DTE9TRSBtZXNzYWdlICB0byBhIHBvcHVwIHdpbmRvdy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUNoZWNrIGlmIHRoZSB3aW5kb3cgaXMgbWFuYWdlZCBiZWZvcmUgdHJ5aW5nIHRvIGdpdmUgaXQgZm9jdXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbmhhbmNlZCBsaW51eCBqb3lzdGljayBhcGkgZGV0ZWN0aW9uIHNsaWdodGx5LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUphcm9zbGF3IFBpb3RyIFNvYmllc3playA8anNvYmllc3pAZWxrYS5wdy5lZHUucGw+CglBZGRlZCBQb2xpc2gga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIERDX1ZFUlNJT04gYW5kIERDX1RSVUVUWVBFIHRvIHdpbjE2ZHJ2IERldmljZUNhcGFiaWxpdGllcy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BwZC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgYENhc3NldHRlJyB0byBQUEQgLT4gd2luZG93cyBwcmludGVyLWJpbiBtYXBwaW5nLgoKCSogbWVtb3J5L3N0cmluZy5jOiBNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJTW9kaWZpZWQgbHN0cmNweW5XdG9BIHRvIHB1dCB0ZXJtaW5hdGluZyBudWxsIGF0IGVuZCBvZiBzdHJpbmcsIG5vdAoJZW5kIG9mIGJ1ZmZlci4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgZHVwbGljYXRlIG1hY3JvIGRlZmluaXRpb25zIGZvciB0aGUgSVN0b3JhZ2UgYW5kIElTdHJlYW0gQ09NCglpbnRlcmZhY2VzLgoKCSogd2luZG93cy9kZWZ3bmQuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglGaXhlZCBDT0xPUl9NQVggZGVmaW5pdGlvbiBmb3IgbmV3IFdpbjMyIHZhbHVlcy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBVU0VSIGNhbGwgZnJvbSBHZXRGb250TWV0cmljcy4gRml4ZXMgbmF0aXZlIFVTRVIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVNldCBwcm9wZXIgaXRlbSBmb2N1cyBvbiBEZWxldGVJdGVtLgoJQ2xlYW4gdXAgZWRpdCBsYWJlbCBpbXBsZW1lbnRhdGlvbi4KCgkqIGZpbGVzL2RyaXZlLmM6IFBldGVyIFNjaGxhaWxlIDx1ZGJ6QHJ6LnVuaS1rYXJsc3J1aGUuZGU+CglGaXhlZCBhIGxvbmcgc3RhbmRpbmcgKGFuZCBhbm5veWluZykgdHlwbywgdGhhdCBwcmV2ZW50ZWQKCUdldERpc2tGcmVlU3BhY2VBIGZyb20gd29ya2luZy4uLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuYWJsZSBzYWZlIHJlYWRpbmcgb2YgcmVnaXN0cnkgZmlsZSwgZXZlbiBpZiBmaWxlIGlzIGJyb2tlbi4KCgkqIHdpbjMyL25ld2Zucy5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUNoYW5nZWQgT3BlbkRlc2t0b3Agc3R1YiB0byBXaW45eCBiZWhhdmlvciBmb3IgUXVpY2tUaW1lIDQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBPY3QgMzEgMjI6MjY6MzUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzogU2V0IGNsb3NlLW9uLWV4ZWMgZmxhZyBvbiBzZXJ2ZXIgc29ja2V0LgoKCSogREVWRUxPUEVSUy1ISU5UUzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBleHBsYW5hdGlvbiBvbiBjcmVhdGluZyBhIG5ldyBETEwuCgoJKiBtaXNjL3ZlcnNpb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglCZXR0ZXIgdmVyc2lvbiBhdXRvZGV0ZWN0aW9uLgoKCSogd2luZG93cy9kaWFsb2cuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50ZWQgc3VwcG9ydCBvZiBEU19DT05UUk9MIGFuZCBXU19FWF9DT05UUk9MUEFSRU5UIHN0eWxlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEl2YW4gZGUgU2FlZGVsZWVyIDxJdmFuZHNAc3ltcGF0aWNvLmNhPgoJRmFpbCB3aGVuIExQUkVDVCBjb250YWlucyBuZWdhdGl2ZSB2YWx1ZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglPbiBDb25maWd1cmVOb3RpZnksIGZpbmQgdGhlIGZpcnN0IHZpc2libGUgd2luZG93IGFib3ZlIHRoZSBjdXJyZW50IG9uZS4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdGVkIG9wZXJhbmQgc2l6ZXMgZm9yIHRoZSAiZW50ZXIiIGluc3RydWN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglQU01fQUREUEFHRSByZXR1cm5zIFRSVUUgb3IgRkFMU0UuCgoJKiBkbGxzL21zYWNtMzIvYnVpbHRpbi5jLCBkbGxzL21zYWNtMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBkbGxzL21zYWNtMzIvd2luZWFjbS5oLCBpbmNsdWRlL21zYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgbXNhY20zMiByZWFsbHkgbG9hZCBBQ00gZHJpdmVycy4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCVByZXZlbnQgRmlsbFJnbiBmcm9tIHVzaW5nIGEgTlVMTCBwb2ludGVyLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhIGZldyBwcm9ibGVtcyB3aXRoIFJlZ0VudW1LZXkqLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRhdGlvbiBvZiB1c2VyIGRlZmluZWQgdGVtcGxhdGVzLgoKCSogZGxscy9vbGUzMi9pZnMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJTWFsbG9jMTZfQ29uc3RydWN0b3I6IG1vdmVkIElDT01fVlRCTChUaGlzKSB3aGVyZSBpdCBiZWxvbmdzLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGNsZWFyIHRoZSBkcmF3aW5nIGFyZWEgZm9yIGV0Y2hlZCBzdGF0aWMgY29udHJvbHMuCglSZXBsYWNlZCBvdXIgb3duIGRyYXdpbmcgc3R1ZmYgaW4gZXRjaGVkIHN0YXRpYyBjb250cm9scyBieSBEcmF3RWRnZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJSW4gcmVwb3J0IHZpZXcgbW9kZSBvZiB0aGUgbGlzdHZpZXcgY29udHJvbCwgaW1wbGVtZW50ZWQgdGhlCglob3Jpem9udGFsIHNjcm9sbGJhciBmdW5jdGlvbmFsaXR5LgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBzbWFsbCBidWcgaW4gdGhlIGJlaGF2aW9yIG9mIG1heGltaXplZCBNREkgY2hpbGRyZW4uCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUmV3cml0ZSBvZiBFbnVtUHJpbnRlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpbGwgaW4gdGhlIGh3bmRGcm9tIGZpZWxkIG9mIHRoZSBOTUhEUiBzdHJ1Y3R1cmUgd2hlbiBzZW5kaW5nCglub3RpZmljYXRpb25zLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdoZW4gcmVhZGluZyBhIHByb2ZpbGUgZW50cnkgcmVtb3ZlIHRyYWlsaW5nIHF1b3RlIHdoZW4gdGhlcmUncyBhbgoJb3BlbmluZyBvbmUuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZXR1cm4gY29ycmVjdCBoZWlnaHQgYW5kIHdpZHRoIGZvciBzdG9jayBmb250cyBpbiBHZXRPYmplY3QuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmM6IENvbXBpbGUgZml4LgoKCSogcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlOiBBZGRlZCB3bWNkcmMuaAoKCSogZGxscy93aW5tbS9tbWlvLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBjdXN0b20gSS9PIHByZW9jZWR1cmVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUFiZXkgR2VvcmdlPGFiZXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBQcm9nSURGcm9tQ0xTSUQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVdpemFyZCBtb2RlIHByb3BlcnR5IHNoZWV0cyBoYXZlIGEgdGFiIGNvbnRyb2wuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuc3BlYywgZGxscy93aW5tbS93YXZlbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIHdpbmUuaW5pOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBidWlsdC1pbiBtc2FjbS5kcnYgYW5kIG1pZGltYXAuZHJ2IGRyaXZlcnMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBmaXhlcyBhbmQgcmVvcmdhbml6YXRpb25zLgoJLSBBZGRlZCBjaGVja3MgZm9yIGRvY3VtZW50YXRpb24gaW5jb25zaXN0ZW5jaWVzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYywgbWlzYy9wb3J0LmMsIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfYXN5bmMuYywgZGxscy93aW5tbS9qb3lzdGljay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBtaXNzaW5nIGNvbmZpZ3VyYXRpb24gI2lmOnMgYW5kICNpbmNsdWRlczpzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZmlsZXMvZG9zX2ZzLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBkb2N1bWVudGF0aW9uLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgbWFrZSBkb2Vzbid0IGxpa2UgdW5uZWNlc3NhcnkgXC4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgd2luZG93cy9kaW5wdXQuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pZl9tYWNyb3MuaCwgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9pZnMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJR2VuZXJhbGl6ZWQgdGhlIHVzZSBvZiB0aGUgbmV3IElDT01fVkZJRUxEIGFuZCBJQ09NX1ZUQkwgbWFjcm9zLgoKCSogd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGEgY291cGxlIG9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQSBjcmFzaCB3b3VsZCBvY2N1ciBpZiB0aGUgZmlsZSB0eXBlIGluIHJlcG9ydCBtb2RlIHdhcyBlbXB0eS4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNoYW5nZWQgdGhlIGluaXRpYWxpc2F0aW9uIG9mIHRoZSBLZXlTdGF0ZSBhcnJheS4KCgkqIG1pc2MvbHN0ci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglCZXR0ZXIgaGFuZGxpbmcgb2YgbmV3bGluZXMgaW4gRm9ybWF0TWVzc2FnZSouCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXggKHNvbWUpIGJhZCBiZWhhdmlvciB3aXRoIGJ1ZmZlciB1bmRlcnJ1bi4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBQbGF5U291bmQgcHJvYyBmb3Igbm9uIFBDTSBjb250ZW50LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CgktIFRyZWV2aWV3IHVzZXMgQ09MT1JfV0lORE9XIGNvbG9yIGluc3RlYWQgb2YgY2xyQmsgdG8gZmlsbCBiYWNrZ3JvdW5kLgoJLSBUcmVldmlldzogY29sb3JzIHJldHVybmVkIGJ5IFRWTV9HRVQqKkNPTE9SIGFyZSBtaXhlZCB1cC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQ2xpY2tpbmcgdGhlIGNvbWJvIGJveCB3b3VsZCBjYXVzZSBhIGNyYXNoIGlmIGl0IHdhcyBlbXB0eS4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBtaXNjL3ByaW50ZHJ2LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJdCBhcHBlYXJzIHRoYXQgU3RhcnREb2Mgc2VuZHMgdGhlIFNUQVJURE9DIGVzY2FwZSB3aXRoIHRoZSBET0NJTkZPCglzdHJ1Y3R1cmUgcG9pbnRlZCB0byB3aXRoIHRoZSBvdXRwdXQgZGF0YSBwYXJhbWV0ZXIuCgoJKiBncmFwaGljcy9mb250ZW5naW5lLmMsIGlmMTYzMi9nZGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWIgZm9yIEVuZ2luZVJlYWxpemVGb250RXh0ICh1c2VkIGJ5IHRoZSB3aW45OCBwc2NyaXB0IGRyaXZlcikuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVNlbGVjdGVkIGJ1dHRvbiB3aXRoaW4gdGFiIGNvbnRyb2wgd2lsbCBiZSBwYWludGVkIHdpdGggdGhlIHJpZ2h0Cgljb2xvciBicnVzaC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCURvIG5vdCBzZW5kIHR3byBQU05fS0lMTEFDVElWRSBtZXNzYWdlcy4KCgkqIHdpbmUuaW5pOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWluaSB2YXJpYWJsZXMgZG8gbm90IGxpa2UgOyBjb21tZW50cyBhZnRlciB0aGVtICh0aGV5IGFyZSBub3Qgc2hlbGwKCXNjcmlwdHMpLiBGaXhlZCBhIHR5cG8gaW4gb25lIG9mIHRoZSBuYW1lcy4KCk1vbiBPY3QgMjUgMTU6NDM6MzYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCB0d28gbWFjcm9zLCBJQ09NX1ZGSUVMRCBhbmQgSUNPTV9WVEJMLCBzbyB0aGF0IHdoZW4gaW1wbGVtZW50aW5nCglhIENPTSBpbnRlcmZhY2Ugb25lIG5ldmVyIGhhcyB0byBuYW1lIHRoZSBscFZ0YmwgZmllbGQgZXhwbGljaXRseS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVN5c0FsbG9jU3RyaW5nTGVuMTYgbmVlZHMgdG8gaGFuZGxlIE5VTEwgcG9pbnRlcnMsIHRvby4KCgkqIG1lbW9yeS9sb2NhbC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQnVnIGZpeC4KCgkqIHRvb2xzL2ZpbmRfZGVidWdfY2hhbm5lbHM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgc21hbGwgdHlwb3MgYW5kIHNsaWdodGx5IG91dGRhdGVkIGNvbW1lbnRzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNoZWxsMzIgY2FsbCBXaW4zMkRlbGV0ZUZpbGUoKSwgcmVxdWlyZWQKCWJ5IElFNSdzIEV4cGxvcmVyLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW46CglBZGRlZCBkZXBlbmRlbmN5IG9uIHdpbmVzdHViLm8KClN1biBPY3QgMjQgMjI6MTM6NTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIHRvb2xzL2J1aWxkLmMsIHRvb2xzL2ZudDJiZGYuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZmlsZS5jLCB3aW4zMi9wcm9jZXNzLmMsIHJlbGF5MzIvc25vb3AuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci9zb2NrZXQuYywgbXNkb3MvaW50MjEuYywgb2JqZWN0cy9nZGlvYmouYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L2xkdC5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvc3RhYnMuYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIG1pc3NpbmcgY29uZmlndXJhdGlvbiAjaWY6cyBhbmQgI2luY2x1ZGVzOnMuCgktIE1pbm9yIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCBjaGFuZ2VzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgTG9hZEhvbWVSZWdpc3RyeUZpbGVzIGRlZmF1bHQgdG8gVFJVRS4KCgkqIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2NvbW0uaCwgaW5jbHVkZS9kYXRldGltZS5oLCBpbmNsdWRlL21vbnRoY2FsLmgsIGluY2x1ZGUvbmV0c3BpLmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS93aW5uZXQxNi5oLCBpbmNsdWRlL3dpbnNwb29sLmgsIGluY2x1ZGUveG1hbGxvYy5oLCB0b29scy9tYWtlX2F1dGhvcnM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgdGhlIGluY2x1ZGUgZmlsZXMgc2VsZi1zdWZmaWNpZW50LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRml4ZWQgdGhlIGxvbmcgbG9uZyBwcm9ibGVtLgoJLSBBZGRlZCBjb25maWd1cmUgaW5jbHVkZSBjb25zaXN0YW5jeSBjaGVja2luZy4KCS0gQWRkZWQgcHJvZ3Jlc3MgaW5kaWNhdG9yLgoJLSBCZWdhbiBzcGxpdHRpbmcgdXAgdGhlIHdpbjE2YXBpLmRhdCBhbmQgd2luMzJhcGkuZGF0IGZpbGVzLgoJLSBBZGRlZCB2YXJpb3VzIG1pbm9yIGNoZWNrcy4KCS0gTWlub3IgZml4ZXMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuc3BlYywgZGxscy93bmFzcGkzMi93bmFzcGkzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcmVnLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHNwZWMgZmlsZSBkZWNsYXJhdGlvbnMgZm9yIGFscmVhZHkgaW1wbGVtZW50ZWQgZnVuY3Rpb25zLgoKCSogZ3JhcGhpY3MvcGF0aC5jLCBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvY2xpcHBpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgV2luMTYgdmFyaWFudHMgb2YgZXhpc3RpbmcgV2luMzIgZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgY29tcGlsZSBmaXguCgoJKiBmaWxlcy9maWxlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIHByZWZpeGluZyBieSBhIHRpbGRlIGZvciBHZXRUZW1wRmlsZU5hbWUgMzJiaXRzLgoKCSogZGVidWdnZXIvZXhwci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZS4KCgkqIHdpbmRvd3Mvd2luLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVdhcm4gdXNlcnMgdG8gdXNlIC10aGUgLWRlc2t0b3Agb3B0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIG5hdGl2ZSB1c2VyIERMTHMuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJldHVybiB0aGUgc2l6ZSBvZiB0aGUgbmVlZGVkIHJlc291cmNlIHdoZW4gYnVmZmVyIGlzIE5VTEwgZm9yIExvYWRTdHJpbmcoKS4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmMsIHdpbmUuaW5pOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRW5hYmxlZCB0aGUgcGVyc2lzdGVudCBjbGlwYm9hcmQgc2VydmVyLgoKCSogbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaTogTmF0aGFuaWVsIDx3ZmlsYXJkb0BmdXNlLm5ldD4KCUltcHJvdmVkIHJlZ2lzdHJ5IGlzb2xhdGlvbiBwb3NzaWJpbGl0aWVzLgoKCSogbXVsdGltZWRpYS8qLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNwbGl0IHRoZSBtdWx0aW1lZGlhLyBkaXJlY3RvcnkgaW50byBkbGxzLyBzdWJkaXJlY3Rvcmllcy4KCgkqIG11bHRpbWVkaWEvd2lubW0ucmMsIG11bHRpbWVkaWEvd2lubW1fUHQucmMsIHByb2dyYW1zL2Nsb2NrL0NoYW5nZUxvZywgcHJvZ3JhbXMvY2xvY2svUHQucmMsIHByb2dyYW1zL25vdGVwYWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vQ2hhbmdlTG9nLCBwcm9ncmFtcy9wcm9nbWFuL1B0LnJjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmU6CglHdXN0YXZvIEp1bmlvciBBbHZlcyA8YWx2ZXNAY29ycmVpb25ldC5jb20uYnI+CglNb3JlIFBvcnR1Z3Vlc2UgbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIG9iamVjdHMvZGliLmM6IE1hdHRoZXcgSi4gRnJhbmNpcyA8YXNiZWxAZGlhbC5waXBleC5jb20+CglGaXhlZCB0b3AtZG93biBESUIgaGFuZGxpbmcgaW4gU3RyZXRjaERJQml0czMyKCkuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBtYWNybyBkZWZpbml0aW9ucyBmb3IgbWVtb3J5IGFsbG9jYXRpb24uCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFmb250LmgsIG9iamVjdHMvZm9udC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJTWFrZSBzdXJlIHRoYXQgYWxsIGNhbGxzIHVzZSB0aGUgZXh0ZW5kZWQgc3RydWN0dXJlcyB3aGljaCBhcmUgYQoJc3VwZXJzZXQgb2YgdGhlIHJlZ3VsYXIgc3RydWN0dXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRodW1iIHRyYWNrLgoKCSogd2luZG93cy9mb2N1cy5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJRG8gbm90IHNldCBmb2N1cyB0byBhIGRpc2FibGVkIHdpbmRvdy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGFuIGVudHJ5IGluIHRoZSBrZXlib2FyZCB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgQ3RybC1CcmVhay4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmgsIHNjaGVkdWxlci9kZWJ1Z2dlci5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJTmV3IGNoYW5uZWwgJ2RlYnVnc3RyJyB1c2VkIHRvIHByaW50IE91dHB1dERlYnVnU3RyaW5nIEFQSSBjYWxscy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVBvcHVwIHdpbmRvd3Mgd2lsbCBiZSBoaWRkZW4gd2hlbiB3ZSBtaW5pbWl6ZSBhIG1haW4gZnJhbWUgb3Igc2hvd24KCXdoZW4gd2UgbWF4aW1pemUgb3IgcmVzdG9yZSBhIG1pbmltaXplZCBtYWluIGZyYW1lLgoKU2F0IE9jdCAyMyAyMzo1OTo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJUHJvcGVydHlTaGVldCBkaWRuJ3QgZGVzdHJveSBwYWdlIGRpYWxvZydzIHdpbmRvdyB3aGlsZSByZW1vdmluZyBwYWdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglVcGRhdGUgdGhlIGl0ZW0gd2lkdGggdXBvbiBhIG5ldyBjb2x1bW4gaW4gdGhlIGhlYWRlciBjb250cm9sLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW9yZGVyIHBhcmFtZXRlcnMgdG8gZml4IHBvc2l0aW9uIG9mIGJhc2UgcmVnIHJlbGF0aXZlIHRvIGV4Y2VwdGlvbgoJZnJhbWUuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOiBGaXhlZCB0eXBvLgoKCSogaW5jbHVkZS8qLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURlZmluZSB0aGUgQ09NIG1hY3JvcyBldmVuIGluIEMrKy4KCgkqIGNvbnRyb2xzL21lbnUuYywgd2luZG93cy9tZGkuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgbG9vcCB3aXRoIFdNX1NZU0NIQVIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglGaXhlZCB0b29sdGlwcyBwb3NpdGlvbmluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogUmUtYXBwbGllZCBsb3N0IGNoYW5nZS4KCgkqIGxvYWRlci90YXNrLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUlnbm9yZSB3cm9uZyBoSW5zdGFuY2UuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50ZXJydXB0cy5jOgoJUm9iZXJ0ICdBZG1pcmFsJyBDb2V5bWFuIDxhZG1pcmFsQGNvcm5lci5uZXQ+CglSZXBvcnQgbm9uLWhlcmN1bGVzIHZpZGVvLiBUdXJuZWQgb24gaW50IDJhLgoKCSogaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGZpbGVzL2ZpbGUuYzoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUZpeGVkIGNvbXBpbGluZyB3aXRoIFNUUklDVC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CglQcm9wZXIgcmVzb3VyY2Ugc3VwcG9ydCBmb3IgZGlhbG9nIHRpdGxlLgoKCSogaW5jbHVkZS9kbGdzLmg6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIHNvbWUgd3JvbmcgZGVmaW5lcy4KCgkqIG9iamVjdHMvYnJ1c2guYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJQ29weSBiaXRtYXBzIHByb3Blcmx5LgoKCSogaW5jbHVkZS9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3cgbG9hZGluZyBvZiBtb2R1bGVzIGRlYnVnIGluZm9ybWF0aW9uIGFmdGVyIGZpcnN0IGludm9jYXRpb24gb2YKCWRlYnVnZ2VyLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgYSBmZXcgc3R1YnMuCgoJKiBpbmNsdWRlL2xpc3R2aWV3LmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGF0aW9uIG9mIGVkaXQgbGFiZWxzLgoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIHNvbWUgYW5vbnltb3VzIHVuaW9uIGFjY2Vzc2VzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCURyYXcgdGhlIGl0ZW0gdGV4dCBmcm9tIHRoZSB0b3Agb2YgdGhlIGl0ZW0gcmVjdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGFzY2VuZGluZyBhbmQgZGVzY2VuZGluZyBzb3J0IG9yZGVyIGZvciB0aGUgRmlsZSBEaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CgktIGFkZHMgY2FsbGluZyBhcHBsaWNhdGlvbiBkZWZpbmVkIGNhbGxiYWNrIGZ1bmN0aW9uIG9uY2UgUHJvcGVydFNoZWV0CgkgIERpYWxvZ2JveCBoYXMgYmVlbiBpbml0aWFsaXplZCBqdXN0IGFmdGVyIGNyZWF0aW5nIHRoZSB0YWIgY29udHJvbAoJLSBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBwc3pDYXB0aW9uIHNwZWNpZmllcyBhIHJlc291cmNlIGluc3RlYWQgb2YgYSBzdHJpbmcKCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHJlbW92ZWQgYWxsIHVubmVjZXNzYXJ5ICJ3aW5hcGkiIGZyb20gaW50ZXJuYWwgX0lMKiBmdW5jdGlvbnMKCS0gYmV0dGVyIHBhcmFtZXRlciBjaGVja2luZyBmb3Igc2hlbGxmb2xkZXIKCS0gcmVtb3ZlZCBkZWFkIGNvZGUgZnJvbSBzaHZfYmdfY29udGV4dG1lbnUKCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL2RkcmF3Lmg6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBhbm90aGVyIGFub255bW91cyB1bmlvbiB1c2luZyB0aGUgRFVNTVlVTklPTk5BTUUgc3R5bGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVByb3Blcmx5IGNvcHkgdGV4dCBpbnRvIHVzZXIgc3VwcGxpZWQgYnVmZmVyLgoKCSogbWlzYy93aW5zb2NrLmMsIHJlbGF5MzIvd3NvY2szMi5zcGVjLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9zb2NrLmMsIGlmMTYzMi93aW5zb2NrLnNwZWMsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3dpbnNvY2suaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzYy9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdpbnNvY2sgcmV3cml0ZS4gU29ja2V0cyBhcmUgbm93IHByb3BlciB3aW4zMiBoYW5kbGVzLgoJSW50ZXJuYWwgc3RydWN0dXJlcyBhcmUgbm93IHJlYWxseSBpbnRlcm5hbC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVRhYiBjb250cm9sIGRvZXNuJ3QgcmVmcmVzaCB0YWIgYXJlYSBvbiBUQ01fU0VUQ1VSU0VMLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRlZCBTdHJSQ2hyQS4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9leHByLmMsIGluY2x1ZGUvZGVidWdnZXIuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBQZXJmb3JtIHByb3BlciBwcm9jZXNzIHNodXRkb3duIG9uICdxdWl0JyBhbmQgZXJyb3IuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU3R1YiBPcGVuVGhyZWFkVG9rZW4gJiBPcGVuUHJvY2Vzc1Rva2VuIGZvciBmYWlsdXJlIGluIFdpbjl4IG1vZGUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJRml4ZWQgYSBzbWFsbCB0eXBvLgoKCSogd2luZG93cy9kaWFsb2cuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCVByb3RlY3QgYWdhaW5zdCB3cm9uZyByZXR1cm4gdmFsdWUgZnJvbSBXTV9JTklURElBTE9HLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIGFuIGlsbGVnYWwgY2hhcmFjdGVyLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCU5vdyBpbml0cyB0aGUgcG9saWN5IGNhY2hlIHdoZW4gc2hlbGwzMiBpcyBmaXJzdCBpbnN0YW50aWF0ZWQuCglNYXRjaGVzIFdpbmRvemUgYmVoYXZpb3IuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy9zaGVsbDMyL3NocG9saWN5Lmg6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCVJlYWwgaW1wbGVtZW50YXRpb24gb2YgU0hSZXN0cmljdGVkKCksIGNsYXJpZmllZCBTSEluaXRSZXN0cmljdGVkKCkncwoJcm9sZSBhIGxpdHRsZSwgYWRkZWQgcG9saWN5IGRhdGEgdGFibGUuCgoJKiBkbGxzL29sZTMyL2lmcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBzZWdtZW50ZWQgbHB2dGJsIHBvaW50ZXIgZm9yIElNYWxsb2MxNiBpbnRlcmZhY2UsIG5vdCBsaW5lYXIgb25lLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmVwbGFjZWQgYSBYIGNhbGwgd2l0aCBhIFRTWCBjYWxsIGluIFhEUlZfTU9VU0VfU2V0Q3Vyc29yKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3JzcmMucmM6IFVscmljaCBDemVrYWxsYSA8eWJpY3VidWtAdW1haWwuY29yZWwuY29tPgoJVGhlIHByb3BlcnR5IHNoZWV0IGRpYWxvZyBuZWVkcyBmbGFnIFdTX1ZJU0lCTEUuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCVNldCB0aGUgZGVmYXVsdCB2aWV3IGJ1dHRvbiB0byBMaXN0IGluIHRoZSBGaWxlRGlhbG9nLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGRvbid0IHVzZSBHZXRNb2R1bGVIYW5kbGUxNiBpbiBMb2FkTW9kdWxlMTYvTkVfQ3JlYXRlUHJvY2Vzcy4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcG90ZW50aWFsIGNyYXNoIGluIHN0cmluZyB2YXJpYWJsZSBwcmludGluZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFdNX0dFVEZPTlQgc3VwcG9ydC4KCgkqIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBkb24ndCBjYWxsIEV4aXRQcm9jZXNzKCkgYmVmb3JlIFNZU0xFVkVMX0luaXQoKS4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVncyAobW1pb09wZW4gd2l0aCAxNi8zMiBiaXQgc3RyYW5nZW5lc3MsIG1taW9Bc2NlbmQgJgoJbW1pb0Rlc2NlbmQgb2Zmc2V0IGFuZCBhbGlnbm1lbnQgaXNzdWVzKS4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVdlIGFyZSBzdXBwb3NlZCB0byBkZWxldGUgdGhlIHBhbGV0dGUgb2JqZWN0IHdpdGggdGhlIERlbGV0ZU9iamVjdAoJZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJTGlzdHZpZXcgaXRlbXMgd2lsbCBiZSBkcmF3biB3aXRoIHRoZSByaWdodCBpdGVtIGRpbWVuc2lvbnMuCgoJKiBncmFwaGljcy9wc2Rydi90ZXh0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglTb21lIHNtYWxsIGNvcnJlY3Rpb25zIHRvIHRoZSBFeHRUZXh0T3V0IGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IHRoZSBkcm9wIGVmZmVjdCBvZiBhIERuRCBvcGVyYXRpb24gaXMgc2V0IHRvCglEUk9QRUZGRUNUX05PTkUgaWYgdGhlIHVzZXIgY2FuY2VsbGVkIHRoZSBvcGVyYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgaW5jbHVkZS9hbmltYXRlLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpcnN0IHdvcmtpbmcgdmVyc2lvbi4KCgkqIG11bHRpbWVkaWEvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgbXV0ZSBjYXBhYmlsaXR5IHRvIG1vc3QgY29udHJvbCBsaW5lcy4KCgkqIHdpbmRvd3Mvd2luLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglVc2UgdGhlIG1vZHVsZSBoYW5kbGUsIGlmIENyZWF0ZVdpbmRvd0V4IGlzIGNhbGxlZCB3aXRoCgloSW5zdGFuY2U9PU5VTEwuCgoJKiBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgcHJvdG90eXBlcyBmb3IgU3RyUmV0VG9CdWYoQXxXKS4KCldlZCBPY3QgMTMgMTY6MTc6MjMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlOgoJQWRkZWQgUHQucy4KCgkqIG9iamVjdHMvZGliLmM6IEJhY2tlZCBvdXQgcHJldmlvdXMgY2hhbmdlIChicmVha3Mgd2l0aCBtZXRhZmlsZXMpLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5zb2NrLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvY2tldCBpbnRlcmZhY2UgdG8gd2luZXNlcnZlci4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21haW4uYywgbWlzY2VtdS9tYWluLmMsIHdpbmUuaW5pOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3JyZWN0IGZpbGVuYW1lIGZvciBrZXJuZWwgbW9kdWxlIGlzIEtSTkwzODYuRVhFLgoKCSogZGxscy93aW5zcG9vbC93aW5zcG9vbC5zcGVjLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIChhbmQgbm93IHJlcXVpcmVkKSBmaWxlbmFtZSBkaXJlY3RpdmUuCgoJKiB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBmaWxlbmFtZSB0byAzMiBiaXQgYnVpbHRpbiBtb2R1bGUgZGVzY3JpcHRvcnMuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXggbG9hZGluZyBvZiBtb2R1bGVzOiBub3cgc2VhcmNoIGtleSBpcyBtb2R1bGUncyBmaWxlbmFtZSwgbm90Cgltb2R1bGUncyBuYW1lLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi90YWIuYzoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCVdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgaW4gYSBwcm9wZXJ0eSBzaGVldCBiZWNhdXNlIG9mIGludmFsaWQgZGF0YSwKCWNsaWNraW5nIG9uIGFub3RoZXIgdGFiLCB3b3VsZCBhY3RpdmF0ZSB0aGUgbmV3IHRhYiBidXQga2VlcCB0aGUKCW9yaWdpbmFsIHByb3BlcnR5IHNoZWV0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBpbXBsZW1lbnRlZCBzb3J0aW5nIHRoZSBsaXN0dmlldyBieSBjbGlja2luZyBvbiB0aGUgY29sdW1uIGhlYWRlcgoJLSBpbXBsZW1lbnRlZCB0aGUgY29udGV4dCBtZW51IGVudHJ5cyBmb3Igc29ydGluZwoJLSBzb21lIG1vcmUgZnVuY3Rpb25zIHRvIGdhdGhlciBkYXRhIGZvcm0gcGlkbHMKCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmVtb3ZlZCBsaW5raW5nIGJ5IEdldFByb2NBZGRyZXNzIGZvciBTdHJSZXRUb0J1ZiBzaW5jIG5vdCBhbGwKCXZlcnNpb25zIG9mIHNobHdhcGkgZXhwb3J0aW5nIHRoaXMgZnVuY3Rpb24uCgoJKiBsb2FkZXIvbW9kdWxlLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglSZW1vdmVzIGV4dHJhbmVvdXMgY29tcGFyaXNvbiBvZiBkYXRhIHBvaW50ZWQgdG8gYnkgdGhlIHJlbG9jYXRpb24KCW9mZnNldCB3aGVuIG5vIHJlbG9jYXRpb24gZW50cmllcyBleGlzdC4KCgkqIGlmMTYzMi93cHJvY3Muc3BlYywgbG9hZGVyL25lL21vZHVsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJV1BST0NTLkVOVFJZQUREUlBST0MgbmVlZHMgdG8gcmV0dXJuIHNvbWV0aGluZyBpbiBDWCB0b28gKGZpeGVzCglCTElOS0VSIHNlbGZleHRyYWN0aW5nIGV4ZWN1dGFibGVzKS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBFbmREaWFsb2cgdG8gYmVoYXZlIGxpa2UgYXMgaW4gV2luZG93cy4KCUNhbGwgU2V0V2luZG93UG9zIGluc3RlYWQgb2YgU2hvd1dpbmRvdyBpbiBFbmREaWFsb2cuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgV0lOUE9TX0NhbkFjdGl2YXRlIHRvIG5vdCB0byBjb25zaWRlciBXU19WSVNJQkxFIHN0eWxlLgoJQ29kZSBmb3IgYWN0aXZhdGluZyBhbmQgc2V0dGluZyBmb2N1cyB0byBvdGhlciB3aW5kb3dzIHdoZW4gYSB3aW5kb3cKCWlzIGhpZGRlbiwgaXMgbW92ZWQgdG8gU2hvd1dpbmRvdyBmcm9tIFNldFdpbmRvd1Bvcy4KCUFjdGl2YXRlIHRoZSB0b3AgbGV2ZWwgd2luZG93IGlmIGl0J3Mgbm90IGFjdGl2ZSBpbiBTaG93V2luZG93KFNXX1NIT1cpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzIHdoZW4gY2FsbGVkIGZvciBSTEUgZW5jb2RlZCBkaWJzLgoKCSogb2JqZWN0cy9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglPcHRpbWl6ZWQgU3RyZXRjaERJQml0cyB0byBjYWxsIFNldERJQml0c1RvRGV2aWNlICh3aGVuIHNyYyAmIGRzdAoJZGltZW5zaW9ucyBhcmUgZXF1YWwpLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9QdC5yYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL1B0LnJjOgoJR3VzdGF2byBKdW5pb3IgQWx2ZXMgPGFsdmVzQGNvcnJlaW9uZXQuY29tLmJyPgoJQWRkZWQgUG9ydHVndWVzZSBsYW5ndWFnZSBzdXBwb3J0LgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSB0aGUgQ09NIG1hY3JvcyByYXRoZXIgdGhhbiBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlIGxwdnRibCBmaWVsZC4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWlzYy9sc3RyLmMsIGlmMTYzMi91c2VyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgTG9hZFN0cmluZzE2IGZvciBGb3JtYXRNZXNzYWdlMTYgYW5kIGhhbmRsZQoJRk9STUFUX01FU1NBR0VfQUxMT0NBVEVfQlVGRkVSIGZsYWcuCgoJKiBncmFwaGljcy9wc2Rydi90ZXh0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglTb21lIGFkanVzdG1lbnRzIHRvIEV4dFRleHRPdXQuCgoJKiBpbmNsdWRlL3BzZHJ2LmgsIGdyYXBoaWNzL3BzZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGNsaXBwaW5nIGZvciB0aGUgcG9zdHNjcmlwdCBkcml2ZXIgYW5kIHR1cm5lZCBpdCBvbiAoYnkgc2V0dGluZwoJUFNEUlZfU2V0RGV2aWNlQ2xpcHBpbmcgaW4gdGhlIGZ1bmN0aW9uIHRhYmxlKS4KCgkqIGZpbGVzL2RyaXZlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFjY291bnQgZm9yIHRoZSB0cmFpbGluZyBOVUxMIGluIEdldExvZ2ljYWxEcml2ZVN0cmluZ3NBLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBhIHR5cG8gaW4gYSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFpvbHRhbiBLb3ZhY3MgPG9yaXRlbGVAYWxhcm1peC5uZXQ+CglBZGRlZCBIdW5nYXJpYW4ga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2lucG9zLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJV2UgaGF2ZSB0byBhY3RpdmF0ZSBNREkgY2hpbGQgd2luZG93cy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgR2V0fFNldFByb3BBIHRvIHN0b3JlIGxQYXJhbSB0byByZXRyaWV2ZSB0aGUgT1BFTkZJTEVOQU1FMTYgZm9yIGEKCWhXbmQuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgdXNhZ2Ugb2YgYSBzY3JhdGNoIGFycmF5IGluIFgxMURSVl9Qb2x5QmV6aWVyLgoKCSogY29udHJvbHMvY29tYm8uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYWtlIFdNX0dFVFRFWFRMRU5HVEggcmV0dXJuIGxlbmd0aCBmb3IgZHJvcGRvd25saXN0IGNvbWJvcy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIEZpbGxSZWN0IGluIHRoZSBvd25lcmRyYXduIGJ1dHRvbiBwcm9jZWR1cmUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0aGUgRm9jdXMgT3V0IHdpbmRvdyBpcyBzdGlsbCB0aGUgRm9yZWdyb3VuZCB3aW5kb3cgYmVmb3JlCglkb2luZyBTZXRGb3JlZ3JvdW5kV2luZG93KDApIGluIEV2ZW50X0ZvY3VzT3V0LgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVzIHByb2JsZW1zIHdpdGggY29sb3IgZHJpZnQgd2hlbiBzd2l0Y2hpbmcgdG8vZnJvbQoJbG9naWNhbC9waHlzaWNhbCBjb2xvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCU1vdXNlIHBvc2l0aW9uIGlzIHNpZ25lZC4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglTZXQgdGhlIENPTE9SXzNETElHSFQgc3lzdGVtIGNvbG9yIHRvIHRoZSByaWdodCB3aW5kb3cgZGVmYXVsdCB2YWx1ZS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU21hbGwgaGFjayB0byBjaGVjayBpZiB3ZSBuZWVkIHRvIHJlbG9jYXRlIHRoZSBUTFMgZGlyZWN0b3J5IG9yIG5vdAoJKHNvbWUgc2VlbSB0byBuZWVkIHRoaXMgcG9pbnRlciByZWxvY2F0ZWFibGUsIHNvbWUgYWxyZWFkeSBkbyByZWxvY2F0ZQoJaXQgYnkgdGhlbXNlbHZlcykuCgoJKiBNYWtlLnJ1bGVzLmluOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVsaW5rIHN1YmRpcmVjdG9yeSBvYmplY3RzIG9uIE1ha2VmaWxlLmluL01ha2UucnVsZXMuaW4gY2hhbmdlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJQ2hlY2sgZm9yIE5VTEwgcHRyIGluIFByb3BzaGVldF9SZW1vdmVQYWdlIChYaW5nIERWRCBQbGF5ZXIpLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJRG9uJ3QgcmVmIE5VTEwgcHRycyBpbiBkZWJ1Zy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCUlmIHRoZSBqb3lkZXZpY2UgaXMgbm90IHByZXNlbnQsIGRvIG5vdCBjcmVhdGUgYSBEaXJlY3RJbnB1dERldmljZS4KCgkqIGRsbHMvY29tbWRsZy9jb21tZGxnLnNwZWMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1hcCBQcmludERsZzE2IHRvIFByaW50RGxnQS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxtZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFkZSBUcmFja1BvcHVwTWVudSB3aXRoIFRQTV9SRVRVUk5DTUQgcmV0dXJuaW5nIHRoZSBpZCBpbnN0ZWFkIG9mCgl0cnVlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglQcmV2ZW50IHNlbGYgcmVmZXJlbmNpbmcgbmV4dCBwb2ludGVyIGR1cmluZyBpbnNlcnQuCgoJKiBvbGUvbmxzL2ZyYS5ubHM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluaXRpb25zLgoKCSogbXVsdGltZWRpYS93aW5tbS5yYywgbXVsdGltZWRpYS93aW5tbV9ObC5yYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgRHV0Y2ggdG8gdGhlIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgTUNJLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvaW50ZXJuYXRpb25hbGlzYXRpb246CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCVVwZGF0ZWQgc3RhdHVzIG9mIGludGVybmF0aW9uYWxpc2F0aW9uLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogKkRvbid0KiByZXNvbHZlIFBFIGltcG9ydHMgaWYgYXNrZWQgbm90IHRvIC4uLgoKCSogbWlzYy9kZGVtbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRGRlTmFtZVNlcnZpY2Ugd2FzIGJyb2tlbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBXaGVuIGxvYWRpbmcgYW4gZXhlY3V0YWJsZSBtb2R1bGUgZmFpbHMsIGRvbid0IHBlcmZvcm0gbW9kdWxlCgljbGVhbnVwIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyB0YXNrIGlzIGRlc3Ryb3llZC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJTW92ZWQgYml0bWFwIHJlc291cmNlIHRvIGxhbmd1YWdlLWluZGVwZW5kZW50IHJlc291cmNlIGZpbGUuCgoJKiBtaXNjL3ZlcnNpb24uYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCB3YXJuaW5nIGZvciBmdXR1cmUgVkVSU0lPTl9HZXRWZXJzaW9uKCkgKG1pcy0pdXNlcnMgYW5kIG1hZGUKCU9TVkVSU0lPTklORk8gd2FybmluZyBtb3JlIGRldGFpbGVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIHN0dWJzIGZvciBSZXZva2VBY3RpdmVPYmplY3QsIEdldEFjdGl2ZU9iamVjdCwgZml4ZWQKCVJlZ2lzdGVyQWN0aXZlT2JqZWN0IHN0dWIgYXJndHlwZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIGdlcm1hbiBrZXlib2FyZCBsYXlvdXQgd2l0aCAibm9kZWFka2V5cyIgb3B0aW9uIGVuYWJsZWQgKGp1c3QgdG8KCWFwb3N0cm9waGVzIGFyZSBzd2l0Y2hlZCkuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU3R1YiBmb3IgVmlkZW9DYXBEcml2ZXJEZXNjQW5kVmVyLgoKCSogbXNkb3MvaW50MjEuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlcGxpY2F0ZSBDcmVhdGVEaXJlY3RvcnkoKSBMYXN0RXJyb3Igd29ya2Fyb3VuZCBmb3IgdGhlIExGTiBwYXJ0LgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWxzbyBlc2NhcGUgY2hhcmFjdGVycyA+PTB4ODAgd2l0aGluIHRoZSB3aW5lcmVnaXN0cnkgc2F2ZWZpbGUuCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCURvbid0IHVzZSBtYWxsb2MvZnJlZSBpbiB3aW5hc3BpMzIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJVXNlIDEgbWFjcm8gZm9yIHJnYmJpdGRlcHRoIC0+IGJ5dGUgZGV0ZXJtaW5hdGlvbi4KCXhzaG0vaW1hZ2UgY3JlYXRpb24gbm93IHVzZXMgMS84IG9mIHRoZSBzcGFjZSBmb3IgZXZlcnkgaW1hZ2UuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVwbGFjZWQgZG91YmxlIENoYW5nZURpc3BsYXlTZXR0aW5nc0EgYnkgKEV4KVtBV10uCgpXZWQgU2VwIDI5IDEyOjE2OjE2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEb24ndCBjYWxsIEdldFZlcnNpb25FeEEgdG9vIGVhcmx5LCB0byBhdm9pZCBicmVha2luZwoJYXV0b21hdGljIGVtdWxhdGVkIFdpbmRvd3MgdmVyc2lvbiBkZXRlY3Rpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgaW5jbHVkZS9vbGVhdXRvLmgsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiBMb2FkVHlwZUxpYkV4KCkuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHViIGZvciBXTU1NSURJUlVOT05DRSBjYWxsZWQgYnkgbWlkaW1hcC5kcnYuCgoJKiBtaXNjL3dpbnNvY2suYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXQgcmVmY291bnRlciB0byAxIG9uIGluaXRpYWwgaW5pdCBvciBXU0FTdGFydHVwL1dTQVN0YXJ0dXAgd2l0aAoJZm9sbG93aW5nIFdTQUNsZWFudXAgd2lsbCBhbHJlYWR5IGZyZWUgdGhlIHN0cnVjdHVyZXMuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZSBEaXJlY3RTb3VuZCBvYmplY3QgZXZlbiB3aXRob3V0IHNvdW5kZGV2aWNlLiBHYW1lcyBjYW4gYmUKCXBsYXllZCB3aXRob3V0IHNvdW5kLCBidXQgbm90IHdpdGhvdXQgRGlyZWN0U291bmQgb2JqZWN0ICh0ZXN0ZWQgd2l0aAoJTW9ua2V5IElzbGFuZCAzKS4KCgkqIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLCBpbmNsdWRlL250ZGRrLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgdG9vbHMvYnVpbGQuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBvZiB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaS1jaGVjaywgYnkgYWRkaW5nIGFyZ3VtZW50cwoJdG8gdmFyYXJncy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGFiaWxpdHkgdG8gY2FsbCB3aW5hcGlfY2hlY2sgZnJvbSB0aGUgTWFrZWZpbGVzLgoKCSogbXNkb3MvZHBtaS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vZGlmaWNhdGlvbiBkdWUgdG8gcHJvYmxlbXMgd2l0aCB3aW5hcGktY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svcGFyc2VyLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMTZhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzJhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkYXB0ZWQgdG8gY2hhbmdlcyBpbiBXaW5lLgoJLSBNaW5vciBpbXByb3ZlbWVudHMuCgpUdWUgU2VwIDI4IDE2OjQwOjA3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL29iamVjdC5oOgoJTWFkZSBldmVudCBtYW5pcHVsYXRpb24gcm91dGluZXMgcHVibGljLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwaW5pdC5oLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheS5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluLCBtdWx0aW1lZGlhL2RwbGF5LmMsIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9kcGxheS5zcGVjLCByZWxheTMyL2RwbGF5eC5zcGVjLCByZWxheTMyL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBNb3ZlZCBkcGxheSBhbmQgZHBsYXl4IHRvIGEgcHJvcGVyIGhvbWUgaW4gdGhlIGRsbHMgZGlyZWN0b3J5LgoJLSBJbXBsZW1lbnRlZCBuZXcgRGlyZWN0UGxheTQgYW5kIERpcmVjdFBsYXlMb2JieTMgaW50ZXJmYWNlcy4KCS0gSW1wbGVtZW50ZWQgYSBjbGFzcyBmYWN0b3J5IGZvciBkcGxheSBhbmQgZHBsb2JieS4gQ09NIGludGVyZmFjZXMKCSAgbm93IHdvcmsgZm9yIGRwIGFuZCBkcGwuCgktIEFkZGVkIGEgZmV3IG1vcmUgZW50cmllcyB0byBkcGxheXguc3BlYyBmaWxlcy4gSG93IGRvIHlvdSBmaW5kIHRoZQoJICBvcmRpbmFscz8gSSBqdXN0IGd1ZXNzZWQgOigKCS0gU2VwZXJhdGVkIERpcmVjdFBsYXkgYW5kIERpcmVjdFBsYXlMb2JieSBpbXBsZW1lbnRhdGlvbiBpbnRvIHNlcGFyYXRlIGZpbGVzLgoJLSBJbmNsdWRlZCBzb21lIG1pc3NpbmcgaGVhZGVyIGZpbGUgZGVmaW5pdGlvbnMuCgktIEltcGxlbWVudGVkIHRoZSBkcGxheSBkbGwgaW4gdGVybXMgb2YgdGhlIGRwbGF5eCBkbGwuIEkgaGF2ZW4ndAoJICB0ZXN0ZWQgaXQgc28gaXQgbWF5IG5vdCB3b3JrLi4uCgktIEEgZmV3IGJ1ZyBmaXhlcyBhbmQgYSBsaXR0bGUgbmV3IGltcGxlbWVudGF0aW9lLm4KCS0gVXBkYXRlZCBkb2N1bWVudCB3aXRoIGEgbW9yZSBkZXRhaWxlZCBpbXBsZW1lbnRhdGlvbiBwbGFuLgoKCSogd2luZG93cy93aW4uYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglSZXdyaXRlIHRoZSBTaG93T3duZWRQb3B1cHMgZnVuY3Rpb24gd2l0aCBhIHNhZmV0eSBhbGdvcml0aG0uCgoJKiBjb250cm9scy9tZW51LmM6IEthcmwgTGVzc2FyZCA8eWJpY3VidWtAdW1haWwuY29yZWwuY29tPgoJTWFrZSBFeGVjRm9jdXNlZEl0ZW0gcmV0dXJuIC0xIG9uIGZhaWx1cmUuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQ2hhbmdlZCByZXR1cm4gY29kZSBmb3IgZmFpbHVyZSBvbiAqX0RsbEdldENsYXNzT2JqZWN0IHRvCgkgIENMQVNTX0VfQ0xBU1NOT1RBVkFJTEFCTEUgZnJvbSBFX05PVEFWQUlMQUJMRSBhcyBkb2N1bWVudGVkLgoJLSBSZXBsYWNlZCBtZW1jbXBzIHdpdGggZXF1aXZhbGVudCBJc0VxdWFsQ0xTSUQgb3IgSXNFcXVhbEdVSUQgbWFjcm9zLgoJLSBDaGFuZ2VkICJyZXR1cm4gMDsiIHdpdGggU19PSyBvciBEU19PSyBhcyBhcHByb3ByaWF0ZS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCVN1cHBvcnQgVFJBUF9zaWcgZm9yIEZyZWVCU0QgKHdpdGggdGhlIGhlbHAgb2YgSnVlcmdlbiBMb2NrKS4KCgkqIGxvYWRlci9tb2R1bGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVtZW1iZXIgdGhlIGFsbG9jYXRlZCBzdHJpbmcgdG8gZnJlZSBpdC4KCgkqIGNvbnRyb2xzL21lbnUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGb3JjZSByZWNhbGN1bGF0aW9uIG9mIG1lbnUgd2hlbiBjYWxsaW5nIEluc2VydE1lbnVJdGVtLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIDIgV2luOTggYnktb3JkaW5hbCBTSEVMTDMyIHJvdXRpbmVzLiAgSGVscHMgV2luOTgKCUV4cGxvcmVyIHdvcmsgYmV0dGVyLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvIGluIGhEcnYgZm9yIHNlbmRpbmcgbWVzc2FnZS4KCk1vbiBTZXAgMjcgMTM6Mzg6NTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbW1kZGsuaCwgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBsYXN0IGRlcGVuZGFuY2llcyBiZXR3ZWVuIE1DSSBkcml2ZXJzIGFuZCBXSU5NTS9NTVNZU1RFTQoJRExMcy4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIGhhY2sgb24gV0FWRUhEUidzICYgTUlESUhEUidzIHJlc2VydmVkIGZpZWxkIGZvciAxNi8zMiBiaXQKCWRpc2NyaW1pbmF0aW9uLgoJRml4ZWQgYSBmZXcgc2VncHRyL2xpbmVhciBhZGRyZXNzIGJ1Z3MgaW4gV0FWRUhEUi9NSURJSERSIGhhbmRsaW5nLgoKCSogbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoZWNrIGZvciBPU1MgZHJpdmVyIHByZXNlbmNlIGFuZCByZXR1cm4gZXJyb3IgYWNjb3JkaW5nbHkuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIGhhY2sgb24gTUlESERSJ3MgcmVzZXJ2ZWQgZmllbGQgZm9yIDE2LzMyIGJpdAoJZGlzY3JpbWluYXRpb24uCgoJKiBtdWx0aW1lZGlhL2xvbHZsZHJ2LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2l0aCBtYXBwZXIgbG9hZGluZy4KCUdvdCByaWQgb2YgaGFjayBvbiBXQVZFSERSJ3MgcmVzZXJ2ZWQgZmllbGQgZm9yIDE2LzMyIGJpdAoJZGlzY3JpbWluYXRpb24uCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiBoYWNrIG9uIFdBVkVIRFIncyByZXNlcnZlZCBmaWVsZCBmb3IgMTYvMzIgYml0CglkaXNjcmltaW5hdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVR5cG8gY29ycmVjdGlvbi4KCgkqIGxvYWRlci9saWJyZXMuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4IGludGVnZXIgYmFzZWQgcmVzb3VyY2UgaWQgYXNzdW1wdGlvbi4KCUFkZCBzdXBwb3J0IGZvciBzdHJpbmcgYmFzZWQgdHlwZSBpZHMuCgoJKiBpbmNsdWRlL3dpbnNvY2syLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29tZSBiYXNpYyBXaW5zb2NrMiBkZWZpbml0aW9ucy4KCgkqIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3NlbGVjdC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIEVYQ0VQVF9FVkVOVCB0byB3aW5lc2VydmVyIHNlbGVjdCBsb29wLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglGaXggZm9yIFZGQVRfSU9DVExfUkVBRERJUl9CT1RILgoKCSogZGxscy93aW5nL3dpbmdfbWFpbi5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJU21hbGwgd2luZyBlbmhhbmNlbWVudC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglSZXR1cm4ga2V5IHNob3VsZCBub3QgYmUgaWdub3JlZCBpbiBtdWx0aWxpbmUgZWRpdCBldmVuIGlmCglFU19XQU5UUkVUVVJOIGZsYWcgaXNuJ3Qgc2V0LgoKCSogaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9nZGlvYmouYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCURQdG9MUCBuZWVkcyB0byByb3VuZCB0aGUgcmVzdWx0LgoJRml4ZWQgTXVsRGl2IHRvIGRlYWwgYmV0dGVyIHdpdGggbmVnYXRpdmUgbnVtYmVycy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJcmNQYWludCBoYXMgdG8gYmUgcmV0dXJuZWQgaW4gbG9naWNhbCBjb29yZGluYXRlcyBidXQgd2FzIGludGVyc2VjdGVkCgl3aXRoIGEgY2xpZW50IHJlY3RhbmdsZSBpbiBkZXZpY2UgY29vcmRpbmF0ZXMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCUZpeGVkIEdldFJhbmRvbVJnbi4KCgkqIGZpbGVzL2RyaXZlLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJTWFkZSBHZXRDdXJyZW50RGlyZWN0b3J5IHJldHVybiBsb25nIG5hbWUgb2YgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKCSogaW5jbHVkZS9idXR0b24uaCwgY29udHJvbHMvYnV0dG9uLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglVc2UgYW4gZXh0cmEgYml0IGluIHRoZSBidXR0b24gc3RhdHVzIGJ5dGUgdG8gZmxhZyB3aGV0aGVyIHRoZQoJRGVmQnV0dG9uV25kUHJvYyBzaG91bGQgcHJvY2VzcyB0aGUgV01fTEJVVFRPTlVQIG1lc3NhZ2UuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBsb2FkZXIvc2lnbmFsLmMsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL21haW4uYzoKCU1vdmVkIGFsbCBzaWduYWwgc3VwcG9ydCB0byBhIG5ldyBwbGF0Zm9ybS1zcGVjaWZpYyBmaWxlLgoJTWFrZSB1c2Ugb2YgdGhlIHBlci10aHJlYWQgc2lnbmFsIHN0YWNrIChKdWVyZ2VuIExvY2spLgoJRml4ZWQgJWZzIGluIHNpZ25hbCBoYW5kbGVyIGZvciBub24gRlNfc2lnIGNhc2UgKFVscmljaCBXZWlnYW5kKS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVGh1IFNlcCAyMyAxNjoxNDo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2Ly5jdnNpZ25vcmUsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBjbGlwYm9hcmQgc2VydmVyLgoKCSogdG9vbHMvQXR0aWMvd2luYXBpLWNoZWNrLCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3BhcnNlci5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2YXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgYSBuZXcgaW1wcm92ZWQgdmVyc2lvbiBvZiB3aW5hcGktY2hlY2sgaW4gcGVybC4KCgkqIG1zZG9zL2ludDIxLmM6CglJbXBsZW1lbnRlZCB1cHBlcmNhc2luZyBmdW5jdGlvbnMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUm9iZXJ0CgknQWRtaXJhbCcgQ29leW1hbikuCgoJKiB3aW5kb3dzL3VzZXIuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3N0cmVzcy9zdHJlc3NfbWFpbi5jLCBpZjE2MzIvZHVtbXkuYywgaW5jbHVkZS9zdHJlc3MuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG1pc2MvcHJpbnRkcnYuYywgd2luZG93cy9pbnB1dC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIG9mIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpLWNoZWNrLgoKCSogbWlzYy9jb21tLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW9kaWZpY2F0aW9uIGR1ZSB0byBwcm9ibGVtcyB3aXRoIHdpbmFwaS1jaGVjay4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJV1NfUE9QVVAgd2luZG93cyAoZXhjbHVkaW5nIHRoZSBXU19QT1BVUFdJTkRPVyB3aW5kb3dzKSBzaG91bGQgYmUKCWNsb3NlZCBhZnRlciBsb29zaW5nIHRoZSBmb2N1cy4KCgkqIG9iamVjdHMvZGliLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZURJQml0bWFwIGNyZWF0ZXMgYSBtb25vY2hyb21lIGJpdG1hcCBvbmx5IHdoZW4gdGhlIGZpcnN0IGNvbG9yIG9mIHRoZQoJY29sb3JtYXAgaXMgYmxhY2sgZm9sbG93ZWQgYnkgd2hpdGUuIE90aGVyd2lzZSBpdCBjcmVhdGVzIGEgY29sb3IgYml0bWFwLgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJTm9uIGFjdGl2ZSB3aW5kb3cgc2hvdWxkIGJlIGFjdGl2YXRlZCB3aGVuIGl0IGdldHMgYW55CgljbGllbnQvbm9uLWNsaWVudCBkb3VibGUvc2luZ2xlIGxlZnQvbWVkaXVtL3JpZ2h0IG1vdXNlIGNsaWNrKHMpLgoKV2VkIFNlcCAyMiAxNjo1Mzo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBXSU5FT1NTIGRlc2NyaXB0b3IuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTU1TWVNURU1fR2V0SURhdGEoKSBub3cgZGllcyB3aGVuIG5vIGlEYXRhIGlzIHByZXNlbnQKCUJldHRlciBlcnJvciByZWNvdmVyeSB3aGVuIHRoZSBwcm9jZXNzIGF0dGFjaG1lbnQgZmFpbHMKCVBsYXlTb3VuZCAoYW5kIGhlbHBlciBmdW5jdGlvbnMpIG5vdyB1c2UgdGhlIHJlZ3VsYXIgd2F2ZU91dFhYWCAoaW5zdGVhZCBvZiB3b2RNZXNzYWdlKQoJTW92ZWQgaGFuZGxpbmcgb2YgaGFjayBmb3IgZGlmZmVyZW5jaWF0aW5nIGJldHdlZW4gMTYgYW5kIDMyIGJpdCBjYWxsYmFjayB0byBsb2x2bGRydi5jCglNYWtlcyB1c2Ugb2YgbmV3IGxvbHZsZHJ2LmMgaW50ZXJmYWNlcwoKCSogbXVsdGltZWRpYS8uY3ZzaWdub3JlLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluLCBtdWx0aW1lZGlhL2xvbHZsZHJ2LmMsIG11bHRpbWVkaWEvb3NzLmMsIG11bHRpbWVkaWEvb3NzLmgsIG11bHRpbWVkaWEvd2luZW1tLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGxvbHZsZHJ2LmMgYW5kIG9zcy5jLgoJVGh1bmtzIHRvIDE2IGJpdCBhcmUgbm93IGdlbmVyYXRlZCBmb3IgdGhlIE1NU1lTVEVNIG1vZHVsZS4KCgkqIGNvbmZpZ3VyZS5pbiwgZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5zcGVjLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBkbGxzL3dpbm1tIGFuZCBkbGxzL3dpbm1tL3dpbmVvc3MgZGlyZWN0b3JpZXMuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgY2hlY2tpbmcgZm9yIGNvcnJlY3QgaURhdGEgaW4gY29kZS4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIERyaXZlckNhbGxCYWNrIGZ1bmN0aW9uLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsIGhlYWRlcnMgKHdhdmUgYW5kIG1pZGkgZnVuY3Rpb25zKSBhcmUgbm93IHNlZW4gYXMgc2VncHRyLgoJQWRkZWQgc3R1YiBmb3Igam95R2V0UG9zRXgxNigpLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzLgoKCSogaW5jbHVkZS9tbWRkay5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyB0aGUgc2FtZSBzdHJ1Y3RzIGZvciBsb3ctbGV2ZWwgZHJpdmVycyBhcyBXaW5kb3dzIGRvLgoKCSogbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSBpdCAoYWxtb3N0KSAzMiBiaXQgb25seS4KCVJlZmxlY3RlZCBjcmVhdGlvbiBvZiBXSU5FT1NTIG1vZHVsZS4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgaXQgKGFsbW9zdCkgMzIgYml0IG9ubHkuCglSZWZsZWN0ZWQgY3JlYXRpb24gb2YgV0lORU9TUyBtb2R1bGUuCglObyBsb25nZXIgdXNpbmcgRVJSIHdoZW4gbm8gTUlESSBjYXJkIGlzIHByZXNlbnQuCgoJKiBtdWx0aW1lZGlhL2pveXN0aWNrLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YiBmb3Igam95R2V0UG9zRXgxNigpLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgY2hlY2tpbmcgZm9yIGNvcnJlY3QgaURhdGEgaW4gY29kZS4KCUFkZGVkIGxvb2stdXAgdGFibGVzIHRvIGNvbW1hbmQgdGFibGVzIChzcGVlZHMgdXAgcXVlcmllcykuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgV0FWRUZPUk1BVEVYIGluc3RlYWQgb2YgUENNV0FWRUZPUk1BVC4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyBtb2RSZXNldCgpIGluc3RlYWQgb2YgdHdlYWtpbmcgTUlESSBjb250cm9scy4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuZWQgdHlwZSB1cG9uIG9wZW4uCglGaXhlZCBzb21lIGJvZ3VzIGVycm9yIGNoZWNraW5nLgoKCSogbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybmVkIHR5cGUgdXBvbiBvcGVuLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglEbyBub3Qgc2V0IEVIX05PTkNPTlRJTlVBQkxFLgoKCSogcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluOgoJTW9ydGVuIEVyaWtzZW4gPG1vcnRlbmVAc2ltLm5vPgoJQWRkZWQgc2ltcGxlIGNvbnNvbGUgbW9kZSBleGFtcGxlIHByb2dyYW0gd2hpY2ggbGlzdHMgaW5mb3JtYXRpb24KCWFib3V0IHRoZSB2ZXJzaW9uIG9mIFdpbmRvd3Mgd2UncmUgY3VycmVudGx5IHJ1bm5pbmcgb24uCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEZpeGVkIG1lbW9yeSBhbGxvY2F0aW9uIGJ1Zy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IGluZmluaXRlIGxvb3Agd2l0aCBnbGFzdFhGb2N1c1dpbmRvdy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQWxsb3cgY3JlYXRpb24gb2YgZW1wdHkgaW1hZ2VsaXN0LgoKCSogb2JqZWN0cy9wYWxldHRlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRJQ01Qcm9maWxlQSwgcmVxdWlyZWQgYnkgUGFpbnQgU2hvcAoJUHJvIDUuCgoJKiBjb250cm9scy9tZW51LmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRG9uJ3Qgc2VuZCBXTV9FTlRFUk1FTlVMT09QLCBXTV9JTklUTUVOVSAmIFdNX0lOSVRNRU5VUE9QVVAgbWVzc2FnZXMKCXdoZW4gVFBNX05PTk9USUZZIGZsYWcgaXMgc2V0IGluIFRyYWNrUG9wdXBNZW51LgoKCSogbWlzYy93aW5zb2NrLmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCWdldHBlZXJuYW1lKCkgYW5kIGdldHNvY2tuYW1lKCkgcmV0dXJuIGVycm9ycyBpbiBlcnJubyBub3QgaF9lcnJuby4KCk1vbiBTZXAgMjAgMTg6NTI6MDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgbWlzYy9yZWdpc3RyeS5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgdG9vbHMvYnVpbGQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBDIHZpb2xhdGlvbnMuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbW91c2UuYywgaWYxNjMyL2tleWJvYXJkLnNwZWMsIGlmMTYzMi9tb3VzZS5zcGVjLCB3aW5kb3dzL2lucHV0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUtleWJvYXJkL21vdXNlIGV2ZW50IHByb2MgdGh1bmsgY3JlYXRpb24gbW92ZWQgb3V0IG9mIGlmMTYzMi90aHVuay5jLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyLy5jdnNpZ25vcmUsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjcmVhdGUgdGh1bmsgZm9yIHRhc2sgc2lnbmFsIHByb2MsIGNhbGwgaXQgZGlyZWN0bHkuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvLmN2c2lnbm9yZSwgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIHdpbmRvd3MvZGNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURDIGhvb2sgcHJvYyB0aHVuayBtYW5hZ2VtZW50IHNpbXBsaWZpZWQuCgoJKiBtaXNjL3N5c3RlbS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN5c3RlbSB0aW1lciBwcm9jIHRodW5rIGNyZWF0aW9uIG1vdmVkIG91dCBvZiBpZjE2MzIvdGh1bmsuYy4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY3JlYXRlIHRodW5rIGZvciBDcmVhdGVUaHJlYWQxNiBwcm9jLCBjYWxsIGl0IGRpcmVjdGx5LgoKCSogd2luZG93cy8uY3ZzaWdub3JlLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2hvb2suYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvaG9vay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXaW5kb3dzIGhvb2sgcHJvYyB0aHVuayBtYW5hZ2VtZW50IHNpbXBsaWZpZWQuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZmllZCBUSFVOS19BbGxvYyBzbyBhcyB0byBhdm9pZCAzMi0+MTYtPjMyIGNhbGxpbmcgc2VxdWVuY2VzLgoJUmVtb3ZlZCBwZXJzaXN0ZW50IHRodW5rIGNyZWF0aW9uIHJvdXRpbmVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c194Zjg2ZGdhMi5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194Zjg2ZGdhMi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byB1c2UgREdBIDIuMC4KCgkqIHdpbmVkZWZhdWx0LnJlZzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBIS0VZX0xPQ0FMX01BQ0hJTkVcLi4uXFByb2dyYW1GaWxlc0RpciByZWdpc3RyeSBrZXkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IERlbm5pcyBCb3JrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCUl0J3Mgbm8gZXJyb3IgdG8gc2VuZCBhIFdNX0NPTU1BTkQgdG8gTWVudUhlbHAuCgoJKiBmaWxlcy9maWxlLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlRmlsZUEgcmV0dXJucyBIRklMRV9FUlJPUiB3aGVuIHRoZSBmaWxlbmFtZSBjb250YWlucyBhIHdpbGQgY2FyZC4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBkaXNwbGF5IGJ1ZyBpbiB0aGUgc3RhdGljIGNvbnRyb2wuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglNZXNzYWdlIHJlbW92ZWQgd2hlbiBtZW51IHRyYWNraW5nIGZpbmlzaCBvbiBhIFdNX0xCVVRUT05ET1dOLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGliLmMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCS0gQWRkIGNsaXBib2FyZCBzdXBwb3J0IGZvciBjb3B5aW5nL3Bhc3RpbmcgYml0bWFwcyBvciBQaXhtYXBzIGJldHdlZW4gV2luZQoJICBhbmQgbmF0aXZlIExpbnV4IGFwcGxpY2F0aW9ucy4KCS0gUmVzcG9uZCB0byB0aGUgTVVMVElQTEUgc2VsZWN0aW9uIHJlcXVlc3QgdGFyZ2V0IHdoZW4gV2luZSBpcyB0aGUKCSAgc2VsZWN0aW9uIG93bmVyLgoJLSBSZWxheCB0eXBlIGNoZWNraW5nIGZvciBUQVJHRVRTIHNlbGVjdGlvbi4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2V0ICdleHBlY3RlZF92ZXJzaW9uJyBvZiBidWlsdC1pbiBhbmQgZHVtbXkgbW9kdWxlcyBhY2NvcmRpbmcgdG8KCWVtdWxhdGVkIFdpbmRvd3MgdmVyc2lvbi4KCgkqIGlmMTYzMi9yZWxheS5jLCBsb2FkZXIvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYWtlIENhbGxUbzE2IHJldHVybiBzdHViIHNlZ21lbnQgb3duZWQgYnkgS0VSTkVMLgoKCSogaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEltcHJvdmVkIEdldENvZGVIYW5kbGUxNiAvIEdldENvZGVJbmZvMTYuCgoJKiBvbGUvbmxzL3N2ZS5ubHM6IERlbm5pcyBCam9ya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglBZGRlZCBzb21lIHZhbHVlcyB0aGF0IHdlcmUgbWlzc2luZyBpbiB0aGUgU3dlZGlzaCBubHMgZmlsZS4KClN1biBTZXAgMTkgMTg6NTg6MTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBjcmVhdGUgRERCIGluIFgxMURSVl9ESUJfR2V0RElCaXRzIGlmIG5lY2Vzc2FyeS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBtaXNzaW5nIGV4cG9ydC4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIHdoZW4gbG9hZGluZyAqLmFuaSBmaWxlcy4KCgkqIG9sZS8qLCBkbGxzL29sZTMyLyosIGRsbHMvb2xlYXV0MzIvKiwgZGxscy9vbGVjbGkvKiwgZGxscy9vbGVkbGcvKjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgYnVsayBvZiBPTEUgaW1wbGVtZW50YXRpb24gdG8gZGxscy8gc3ViZGlyZWN0b3JpZXMuCgoJKiBjb250cm9scy9tZW51LmM6IERlbm5pcyBCavZya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglTZW5kIGNvcnJlY3QgV01fTUVOVVNFTEVDVCB3aGVuIG1lbnUgY2xvc2VzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc21hbGwgZmVhdHVyZSBpbiB0aGUgZmlsZSBkaWFsb2cuCgoJKiB3aW4zMi9uZXdmbnMuYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3d0eXBlcy5oLCBtc2Rvcy92eGQuYywgb2xlL2FudGltb25pa2VyLmMsIG9sZS9jb21wb3NpdGVtb25pa2VyLmMsIG9sZS9kYXRhY2FjaGUuYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbWVtbG9ja2J5dGVzLmMsIG9sZS9vbGVmb250LmMsIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3ZhcmlhbnQuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdXBwb3J0IGZvciBhbm9ueW1vdXMgc3RydWN0cy91bmlvbnMgb24gY29tcGlsZXJzIHRoYXQgaW1wbGVtZW50IGl0LgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy90ZXh0LmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglTdHVicyBmb3IgUG9seVRleHRPdXRBL1cuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIG9iamVjdHMvZGliLmM6CglLYXJsIExlc3NhcmQgPHliaWN1YnVrQHVtYWlsLmNvcmVsLmNvbT4KCVNvbWUgbW9yZSBtaW5vciBHREkgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluIEltYWdlTGlzdF9EcmF3IHdoZW4gZHJhd2luZyB0aGUgYml0bWFwIHdpdGggdGhlIHRyYW5zcGFyZW50IGZsYWcKCXNldCwgYmFja2dyb3VuZCBjb2xvci9mb3JlZ3JvdW5kIGNvbG9yIHNob3VsZCBiZSBzZXQgdG8gd2hpdGUvYmxhY2ssCgl3aGVuIGRvaW5nIGJpdGJsdCBvcGVyYXRpb24gd2l0aCB0aGUgYml0bWFwIG1hc2suCgoJKiBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBpbmNsdWRlL3dpbjE2ZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglFeHRlbmQgRFJBV01PREUgc3RydWN0IHRvIHdpbjk1IHNwZWMuCglBZGQgc29tZSBtb3JlIEVzY2FwZSAtPiBFc2NhcGUxNiBjb252ZXJzaW9ucy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RvcCB0cmFzaGluZyBkZXZtb2RlIGlmIGluIGFuZCBvdXQgZGV2bW9kZXMgYXJlIHRoZSBzYW1lLgoKCSogY29udHJvbHMvd2lkZ2V0cy5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVRoZSBNRElDbGllbnQgY2xhc3MgbXVzdCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIElEQ19BUlJPVyBjdXJzb3IuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNvbWJvYm94LgoKCSogY29udHJvbHMvbWVudS5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVByb3RlY3QgU2V0TWVudSBmcm9tIHJvZ3VlIG1lbnUgaGFuZGxlLgoJR2V0TWVudTE2IGNhbiBqdXN0IGNhbGwgR2V0TWVudS4KCgkqIHdpbmRvd3MvbWRpLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJUHJvdGVjdCBNRElTZXRNZW51IGZyb20gcm9ndWUgbWVudSBoYW5kbGVzLgoKCSogbWVtb3J5L2xvY2FsLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJVGlkeSB1cCBUUkFDRSBldGMgdG8gdXNlIGRlZmF1bHQgY2hhbm5lbC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnZlci5oLCBvbGUvb2xlMm5scy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlIFZlckxhbmd1YWdlTmFtZVtBV10gYmFjayB0byBiYXNlIChleHBvcnRlZCBmcm9tIEtFUk5FTDMyIC4uLikuCgoJKiBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3Igd2l6YXJkIHByb3BlcnR5IHNoZWV0cy4KCgkqIG1pc2MvbHN0ci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggRm9ybWF0TWVzc2FnZTE2IGF0IGxlYXN0IGVub3VnaCB0byBnZXQgd2luOTUgMTZiaXQgcHJpbnRkbGcgd29ya2luZy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCS0gaVNlbGVjdGVkIHNob3VsZCBiZSAtMSBpZiBubyBpdGVtIHNlbGVjdGVkIChHZXJhcmQgUGF0ZWwpCgktIHNvbWUgb2YgdGhlIGNoZWNrcyBmb3IgaW52YWxpZCBpdGVtcyB3aGVyZSA+IHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuID49CgkgIChNYXJjdXMgTWVpc3NuZXIpCgktIG1hZGUgSW5zZXJ0SXRlbSBiZWhhdmUgc2ltaWxhcmx5IHRvIERlbGV0ZUl0ZW0sIGllLCBpZiB0aGUgY3VycmVudCBpdGVtIGlzCgkgIGFmdGVyIHdoZXJlIHRoZSBpdGVtIGlzIGluc2VydGVkLCBpbmNyZW1lbnQgdGhlIHNlbGVjdGVkIGl0ZW0gKERhdmlkIEx1eWVyKQoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEZWNsYXJlIENBTEwzMl9DQkNsaWVudFtFeF0gd2l0aG91dCBXSU5BUEkuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiAoRSlJUC1yZWxhdGl2ZSBvZmZzZXRzIGRlcGVuZCBvbiBvcGVyYW5kLCBub3QgYWRkcmVzcywgc2l6ZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS93aW5nZGkuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgRW51bURpc3BsYXlEZXZpY2VzKi4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgU0NfR0VUX0RFVlRZUEUuCgoJKiBvbGUvY29tcG9iai5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIHN0dWIgZm9yIE9MRTMyLkRsbEdldENsYXNzT2JqZWN0LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBpbmNsdWRlL3NobGd1aWQuaCwgZGxscy9zaGVsbDMyL3BpZGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBzdXBwb3J0IGZvciBzcGVjaWFsIHBpZGxzIGluIFNIR2V0U3BlY2lhbEZvbGRlckxvY2F0aW9uLgoKCSogZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvcGVuLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBpbnZpc2libGUgcGVucy4KCgkqIG9iamVjdHMvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNtYWxsIERJQiBmaXhlcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgY2FzZSBmb3IgbWVudSBoYW5kbGluZyBpbiB3aW4zMS4KClR1ZSBTZXAgMTQgMTE6NTE6MDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJRml4ZWQgR2V0RElCaXRzIHByb2JsZW1zLgoKCSogbWlzYy9jcHUuYywgbXVsdGltZWRpYS9taXhlci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkIHN1cHBvcnQgZm9yIGFub255bW91cyBzdHJ1Y3QvdW5pb25zIG9uIGNvbXBpbGVycyB0aGF0IGltcGxlbWVudCBpdC4KCk1vbiBTZXAgMTMgMTY6MDY6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy91aXRvb2xzLmM6CglEZW5uaXMgQmp8cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJRml4ZWQgd2luOXggbG9vayBvbiBjaGVja2JveGVzIGFuZCByYWRpb2J1dHRvbnMuCgoJKiBncmFwaGljcy93aW4xNmRydi8uY3ZzaWdub3JlLCBncmFwaGljcy93aW4xNmRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9nZGkuaCwgbWlzYy8uY3ZzaWdub3JlLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZGMuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ2hhbmdlIGludGVyZmFjZXMgdG8gVEhVTktfQWxsb2MvRnJlZSBzbGlnaHRseSBhbmQgbWFrZSB0aGVtIG5vbi1zdGF0aWMuCglSZW1vdmUgcmVsYXlzIGZvciB3aW4xNmRydiBmcm9tIENhbGxCYWNrIHRhYmxlLCBpbnN0ZWFkIHVzZSBidWlsZCB0bwoJZ2VuZXJhdGUgdGhlbSBkaXJlY3RseSBpbiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYy4KCUlmIFByaW50ZXIgQWJvcnRQcm9jIGlzIDE2Yml0IHRoZW4gYWxsb2NhdGUgdGh1bmsgYW5kIHN0b3JlIHRoYXQgYXMgYQoJMzJiaXQgcHJvYyBpbiBEQy4gIFNldHRpbmcgb2YgYWJvcnRwcm9jcyBub3cgZG9uZSBpbiB0aGUgY29ycmVjdCBwbGFjZQoJKGkuZS4gbm90IGluIHRoZSBkcml2ZXIpLgoKCSogb2JqZWN0cy9kaWIuYzogS2FpIE1vcmljaCA8a2FpLm1vcmljaEBiaWdmb290LmRlPgoJUmVsYXhlZCBwYXJhbWV0ZXIgY2hlY2tpbmcgZm9yIEdldERJQml0cy4KCgkqIHdpbjMyL2RldmljZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGxhc3QgZXJyb3IgY29kZSB3aGVuIHRyeWluZyB0byBsb2FkIHVua25vd24gVnhEIHdpdGggQ3JlYXRlRmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJUHJldGVuZCBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiBTSEVMTF9Ob3RpZnlJY29uKigpLgoKCSogY29udHJvbHMvbWVudS5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBNZW51SXRlbUZyb21Qb2ludCBzdHViLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb2ZmIGJ5IG9uZSBhbGxvY2F0aW9uIGVycm9yIChEUEEgYW5kIERTQSkuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggaW4gUGxheVNvdW5kIHRocmVhZC4KClNhdCBTZXAgMTEgMTY6Mjk6MDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTmljayBIb2xsb3dheSA8Tmljay5Ib2xsb3dheUBhbGZpZS5kZW1vbi5jby51az4KCUZvciBXaW4gMy54IGFwcGxpY2F0aW9ucywgaWYgdGhleSBoYXZlIGVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsCglzY3JvbGxiYXJzLCBlbmFibGUgYm90aC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIG1lbW9yeS9zdHJpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRWxpbWluYXRlZCB3YXJuaW5ncy4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCVNldCB0aGUgbW91c2UgY2FwdHVyZSBvbiB0aGUgY29tYm8gbGlzdGJveC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeGVkIHRoZSBjcmVhdGlvbiBvZiBiYWNrLWJ1ZmZlcnMgaW4gREdBIG1vZGUKCS0gYWRkZWQgYSBjaGVjayBvbiB0aGUgdmFsaWRpdHkgb2YgdGhlIExvY2tpbmcgcmVjdGFuZ2xlCgktIGZpeGVkIHRoZSBlbnVtZXJhdGlvbiBmb3IgRFgtNi4wCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgUkdCUVVBRC9DT0xPUlJFRiBtaXh1cCBpbiBDcmVhdGVNYXBwZWRCaXRtYXAoKS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCURyYXcgdGhlIGZvY3VzIHJlY3RhbmdsZSBmb3IgYnV0dG9ucyB3aXRoIEJTXzNTVEFURSwgQlNfUkFESU9CVVRUT04sCglCU19DSEVDS0JPWCwgQlNfQVVUTyogc3R5bGVzLgoKRnJpIFNlcCAxMCAxNDozODoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBncmFwaGljcy9kcml2ZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVdpbnNwb29sIERvY3VtZW50UHJvcGVydGllcyBhbmQgRGV2aWNlQ2FwYWJpbGl0aWVzIHNob3VsZCBub3cgd29yayBvbgoJbmF0aXZlIDE2IGJpdCBkcml2ZXJzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVzIERldmljZUNhcGFiaWxpdGllcyBmb3IgRENfUEFQRVJTSVpFLgoJVmFyaW91cyBmaXhlcyBmb3IgT3BlblByaW50ZXIgYW5kIEVudW1QcmludGVycy4KCVNlcGFyYXRpb24gb2YgR2V0UHJpbnRlciBpbiBwcmVwYXJhdGlvbiBmb3IgdW5pZmljYXRpb24gd2l0aCBFbnVtUHJpbnRlcnMuCgoJKiBncmFwaGljcy9wc2Rydi9wcGQuYywgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBzdXBwb3J0IGZvciBhIGxhcmdlIG51bWJlciBvZiBkaWZmZXJlbnQgcGFwZXIgc2l6ZXMgdG8gUG9zdFNjcmlwdAoJZHJpdmVyLgoKCSogaW5jbHVkZS9kM2QuaDogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGRlZmluaXRpb25zIG9mIENPTSBvYmplY3RzIGZvciBEM0QgNi54IHN1cHBvcnQuCgoJKiBncmFwaGljcy9wc2Rydi9mb250LmM6IE5pY2sgSG9sbG93YXkgPGFsZmllQGFsZmllLmRlbW9uLmNvLnVrPgoJSWYgdGhlcmUgaXMgbm90IGFuIGV4YWN0IG1hdGNoIGZvdW5kIGZvciB0aGUgcmVxdWVzdGVkIGZvbnQgbmFtZSwKCWluc3RlYWQgb2YgdXNpbmcgdGhlIGZpcnN0IGZvbnQgZGVmaW5lZCBmb3IgdGhlIHByaW50ZXIsIG1hcCBzb21lCgljb21tb24gZm9udCBmYW1pbGllcyAoZS5nLiBBcmlhbCAtPiBIZWx2ZXRpY2EpLCBhbmQgc2VhcmNoIGFnYWluLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYnVnIGluIENCQ2xpZW50IHJvdXRpbmVzIGJ5IHN0b3JpbmcgdGhlIFNFR1BUUiBpbiB0aGUgZ2xvYmFsCgl0YWJsZSBhbmQgdHJhbnNsYXRpbmcgaXQgb24gZXZlcnkgdXNlLgoKCSogaW5jbHVkZS9iaXRtYXBzL29pY19zYW1wbGU6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCB0aGUgcGl4bWFwIHRvIGxvb2sgbGlrZSB0aGUgd2luZG93cyBkZWZhdWx0IGFwcGxpY2F0aW9uIGljb24uCgoJKiBmaWxlcy9kcml2ZS5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVN0b3AgY3Jhc2ggaW4gR2V0RGlza0ZyZWVTcGFjZUV4LgoKCSogd2luZG93cy9ub25jbGllbnQuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFkZSBzdXJlIHRoYXQgdGhlIHdpbmRvd3Mgd2l0aCB0aGUgV1NfRVhfVE9PTFdJTkRPVyBzdHlsZSBkaWRuJ3QgZ2V0CgloYW5kbGVkIGJ5IHRoZSB3aW5kb3cgbWFuYWdlci4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBiZWhhdmlvciBhcm91bmQgdGhlIEVTX1dBTlRSRVRVUk4gc3R5bGUgaW4gdGhlIGVkaXQKCWNvbnRyb2wuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVByZXNzaW5nIHRoZSBkZWxldGUga2V5IHVzaW5nIGFuIGV4dGVuZGVkIGtleWJvYXJkIHdpdGggbnVtbG9jayBvbiBpcwoJbm90IGdlbmVyYXRpbmcgYW55bW9yZSBhIFdNX0NIQVIgbWVzc2FnZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogTmljbGFzIEthcmxzc29uIDxua2FybHNzb0ByYS5hYm8uZmk+CglGaXhlZCBwYXR0ZXJuIG1hdGNoaW5nIGluIFBhdGhNYXRjaFNwZWNBL1cKCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVRhYmJpbmcgaW4gdGhlIGxpc3R2aWV3IG9mIHRoZSBzaGVsbHZpZXcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBMSVNUVklFV19HZXRJdGVtUmVjdDogdGhlIGNhbGN1bGF0aW9ucyB3ZXJlIG9mZiBmb3IgTFZJUl9CT1VORFMsCglMVklSX1NFTENUQk9VTkRTLCBMVklSX0xBQkVMIHdoZW4gdGhlIGl0ZW0gd2lkdGggaXMgZ3JlYXRlciB0aGFuIHRoZQoJY29sdW1uIHdpZHRoLgoJRml4ZWQgV01fR0VURExHQ09ERSBieSByZW1vdmluZyB0aGUgRExHQ19XQU5UUlRBQiBhbmQgYWRkaW5nIERMR0NfV0FOVENIQVJTLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCBpbiBkZXRhY2ggc2VxdWVuY2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdyb25nIHJldHVybiB2YWx1ZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVByZXZlbnQgZW5kbGVzcyBsb29wIGluIGV4Y2VwdDIuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJTm93IHdvcmtzIGFyb3VuZCB3aW5lIG5ldmVyIGV4aXRpbmcgdGhlIGRlYnVnZ2VyLgoJU2hvdWxkIHB1dCBidWcgcmVwb3J0cyBpbiB0aGUgcmlnaHQgcGxhY2Ugbm93LgoKCSogb2xlL29sZWF1dDMyLmMsIG9sZS9NYWtlZmlsZS5pbiwgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIHN0dWIgZm9yIFJlZ2lzdGVyQWN0aXZlT2JqZWN0KCkuCgoJKiBkbGxzL3dpbjMycy93MzJzeXMuYywgZGxscy93aW4zMnMvdzMyc3lzLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIFdJTjMyUzE2LkVYUDEgKG1vc3QgbGlrZWx5IExvYWRQZVJlc291cmNlMTYpLgoKU3VuIFNlcCAgNSAxNjo0ODoxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBtaXNjZW11L21haW4uYywgaW5jbHVkZS93aW5kZWYuaDoKCVJlbW92ZWQgX193aW5lbGliIGZsYWcuCgoJKiB3aW5kb3dzL2RyaXZlci5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgbXVsdGltZWRpYS90aW1lLmMsIG11bHRpbWVkaWEvd2lubW0ucmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdG8gbmV3IE1NIGhlYWRlciBvcmdhbml6YXRpb24uCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIG11bHRpbWVkaWEvb3NzLmgsIG11bHRpbWVkaWEvd2luZW1tLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIERESyBsZXZlbCBtYXRlcmlhbCB0byBuZXcgaW5jbHVkZS9tbWRkay5oIGZpbGUuCglDb3BpZWQgc29tZSBTREsgbGV2ZWwgbWF0ZXJpYWwgZnJvbSBpbmNsdWRlL211bHRpbWVkaWEuaCBmaWxlLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIHRvIG5ldyBNTSBoZWFkZXIgb3JnYW5pemF0aW9uLgoJQ2xlYW5lZC11cCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIChub3cgMzIgYml0IG9ubHkpLgoJTm93IHVzaW5nIHRoZSBNTVNZU1RFTSBlbnRyeSBwb2ludHMgcmF0aGVyIHRoYW4gdGhlIGxvdyBsZXZlbCBkcml2ZXIKCW9uZXMgZGlyZWN0bHkuCgoJKiBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUZpeCAlZnMgZm9yIHNpZ25hbCBoYW5kbGVycyBpbiB0aGUgRlNfc2lnIHVuZGVmaW5lZCBjYXNlICh0aGlzIHBhdGNoCglhY3R1YWxseSBmcm9tIFVscmljaCBXZWlnYW5kLCBJIG9ubHkgdGVzdGVkIGl0KS4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglSb24gUmVjb3JkIDxyckBzY28uY29tPgoJQWRkZWQgc3VwcG9ydCBvZiBfX3Rocl9lcnJubyBmb3IgcmVlbnRyYW5jZSBvbiBVbml4V2FyZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJTm8gbG9uZ2VyIG5lZWRzIHRvIGNhbGN1bGF0ZSBpdHMgb3duIGNoYXJhY3RlciBzaXplLgoKCSogbWlzYy9tYWluLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJQ29uc2VxdWVudGlhbCBjaGFuZ2VzIHRvIGRlZmF1bHQgc3lzdGVtIGZvbnQgc2l6ZXMKCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJVmFyaW91cyBmaXhlcyBmb3IgdGhlIFgxMSBmb250IG1hcHBlciwgcGFydGljdWxhcmx5OgoJLSBzaXplIGZvbnRzIHdpdGggbmVnYXRpdmUgaGVpZ2h0cyBjb3JyZWN0bHkKCS0gY2FsY3VsYXRlIGF2ZXJhZ2Ugd2lkdGggY29ycmVjdGx5LgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVVzZSBhIHNwZWNpYWwgdmFsdWUgaW4gdGhlIGhvdHNwb3QgY29vcmRpbmF0ZSB0byBpZGVudGlmeSB3aGljaCBISUNPTgoJYXJlIGN1cnNvcnMgYW5kIHdoaWNoIGFyZSBpY29ucy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCU1vZGlmaWVkIENCRHJvcERvd24gdG8gZmluZCB0aGUgYmVzdCBoZWlnaHQgb2YgdGhlIGxpc3Rib3guCgpTYXQgU2VwICA0IDE0OjM2OjAzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9wb3J0LmMsIGNvbmZpZ3VyZToKCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3RyW25dY2FzZWNtcC4KCgkqIHdpbmRvd3MvdGltZXIuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWxsb3cgdGltZW91dCBvZiAwLiBDYXAgdGltZXIgcmF0ZSB0byBTWVNfVElNRVJfUkFURS4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIHR5cGUgUFdPUkQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgbG9hZHMgb2YgdHlwZXMsIGRlZmluZXMgYW5kIGRlY2xhcmF0aW9ucyB0byB3aW5zcG9vbC5oLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGhlaWdodCBvZiBpdGVtcyBpbiB0aGUgbG9va2luIGNvbWJvYm94IG9mIHRoZSBmaWxlZGxnOTUuCgoJKiBjb250cm9scy9lZGl0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW5pdGlhbGl6ZSB0aGUgZW5hYmxpbmcgc3RhdGUgdmFyaWFibGUgaW4gdGhlIGVkaXQuCgoJKiBncmFwaGljcy9iaXRibHQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglUaGUgZmFzdCB3aW5kb3cgZnJhbWUgc2l6ZSBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIGZyYW1lIHNpemUgdXNlZAoJYnkgTkNfRHJhd0ZyYW1lIGZ1bmN0aW9uLgoKCSogb2JqZWN0cy9yZWdpb24uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCWxzdHJuY21waSBpc24ndCBhIHdpbmRvd3MgQVBJLCB1c2Ugc3RybmNhc2VjbXAgaW5zdGVhZC4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUZpeGVkIEdNRU1fWkVST0lOSVQgaW4gR2xvYmFsUmVhbGxvYyAodGhhbmtzIHRvIEdlcmFyZCBQYXRlbCkuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBBZGRlZCBtaXNzaW5nIEhGT05UIHR5cGUuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpbmNsdWRlL2N1cnNvcmljb24uaCwgbG9hZGVyL21haW4uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvY2xhc3MuYzoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgQ29weUltYWdlIHRvIGFjY2VwdCBkZXNpcmVkWCwgZGVzaXJlZFkgYW5kIExSX0NPUFlGUk9NUkVTT1VSQ0UuCglDVVJTT1JJQ09OX0ZpbmRCZXN0SWNvbiBjaGFuZ2VkIHRvIGZpbmQgdGhlIGNvcnJlY3QgaWNvbi4KCUltYWdlTGlzdF9SZXBsYWNlSWNvbiBub3cgY2FsbHMgQ29weUltYWdlIGludGVybmFsbHkuCglBc3NpZ24gYSB2YWx1ZSBmb3IgdGhlIGhJY29uU20gQ0xBU1MgbWVtYmVyICh1c2luZyBDb3B5SW1hZ2UpLgoKCSogd2luMzIvY29uc29sZS5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4ZWQgV3JpdGVDb25zb2xlT3V0cHV0IGFuZCBHZXROdW1iZXJPZkNvbnNvbGVJbnB1dEV2ZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJR2l2ZSBhcHBsaWNhdGlvbnMgYSBjb3B5IG9mIHRoZSBwcm9wZXJ0eSBzaGVldCBkaWFsb2cgdGVtcGxhdGUgYXMgdGhleQoJbWlnaHQgbW9kaWZ5IGl0LgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbGF5IGV4Y2x1ZGUgbGlzdHMgd2VyZSBub3Qgd29ya2luZyBkdWUgdG8gc29tZSBDaGFyVXBwZXJBKCkKCXNvbWV3aGVyZSBlbHNlLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCB3aW5lLmluaToKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCXdpbnNwb29sIC0+IHdpbnNwb29sLmRydgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIFN0ckNtcE5JQSBsaWtlIHRoZSBvdGhlciBTdHJDbXBYWCBmdW5jdGlvbnMuCgoJKiBmaWxlcy9wcm9maWxlLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUmVzb2x2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIGVudW1lcmF0aW5nIHZhbHVlcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVRoZSBmb3JtYXQgcmVjdCBpcyByZWNhbGN1bGF0ZWQgZm9yIGVhY2ggZm9udCBjaGFuZ2UuIE1vdmVFbmQgJgoJTW92ZUhvbWUgaW1wcm92ZWQuCgpGcmkgU2VwICAzIDE2OjQ5OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGliLmM6CglLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUlhbiBXYXJkCglEYW4gTGFuZ2xvaXMKCVNwZWVkIHVwIGNvbnZlcnNpb24gYmV0d2VlbiBYSW1hZ2VzIGFuZCBESUJTZWN0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJU29tZSA8b3Blbj4gZmVhdHVyZXMgaW4gdGhlIGZpbGUgZGlhbG9nIDk1LgoKCSogaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIGdsb2JhbCB2YXJpYWJsZSBwQ3VycmVudFRlYi4KCgkqIG1lbW9yeS9oZWFwLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSEVBUF9Db21taXQvRGVjb21taXQgd2VyZSBhc3N1bWluZyBhIHBhZ2Ugc2l6ZSBvZiA0S0IKCXVuY29uZGl0aW9uYWxseS4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUEgZmV3IG1vcmUgRENfIGRlZmluZXMgZnJvbSBXaW4yMDAwLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ2hlY2sgdGhhdCBscENyZWF0ZS0+bHBzek5hbWUgaXMgbm9uLU5VTEwuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJTW9yZSByZXN0cmljdGl2ZSBjaGVja3MsIHNvIERJQUxPR19Jc0FjY2VsZXJhdG9yIGRvbid0IGxvb3AKCWVuZGxlc3NseS4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCU1lbnUgaGlkZXMgd2hlbiBjbGlja2VkIGZvciBhIHNlY29uZCB0aW1lLgoKCSogd2luZG93cy9tc2dib3guYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CgktIHNlbGVjdCB0aGUgZm9udCBpbnRvIHRoZSBkYyBiZWZvcmUgY2FsY3VsYXRpbmcgdGhlIGV4dGVudAoJLSBtYWtlIGJ1dHRvbmhlaWdodCBjb3JyZXNwb25kIHRvIHRleHQgaGVpZ2h0ICsgd2lkdGggdG8gY2FwdGlvbgoJLSBidXR0b24gd2FzICJmbGFzaGluZyIgb24gRW5kRGlhbG9nIChtdXN0IGRlbGV0ZSBmb250IEFGVEVSIEVuZERpYWxvZykKCS0gI2RlZmluZXMgZm9yIERsZ0l0ZW1JZHMKCS0gaW1wbGVtZW50IE1CX1JFVFJZQ0FOQ0VMCgoJKiBjb250cm9scy9lZGl0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJS2VlcCB0aGUgZW5hYmxlIHN0YXRlIGluIHRoZSBlZGl0IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGNhbGxpbmcKCUlzV2luZG93RW5hYmxlZCgpLgoKCSogaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2xlL2NsaXBib2FyZC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJLSBJbXBsZW1lbnQgaW50ZXJwcm9jZXNzIGNsaXBib2FyZCBjb21tdW5pY2F0aW9uLgoJLSBTdXBwb3J0IGZvciB0aGUgUFJJTUFSWSBhbmQgQ0xJUEJPQVJEIHNlbGVjdGlvbiBhdG9tcy4KCS0gU3VwcG9ydCBmb3IgdGhlIFRBUkdFVFMgc2VsZWN0aW9uIGZvcm1hdC4KCS0gRXhwb3NlIG5hdGl2ZSBXaW5kb3dzIGNsaXBib2FyZCBmb3JtYXRzIHRocm91Z2ggWCBzZWxlY3Rpb24gdGFyZ2V0cy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJTWFrZSBzdG9jayBmb250cyBpbmRlcGVuZGVudCBvZiBtYXBwaW5nIG1vZGUuCglTeXN0ZW0gZm9udCBzaG91bGQgb25seSBiZSBib2xkIGZvciBXaW4zMS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgdHJ1bmNhdGluZyBlcnJvcnMgdGhhdCBoYXBwZW4gd2hlbiBjb252ZXJ0aW5nIGZvbSBkaWFsb2cgdW5pdHMKCXRvIHBpeGVscy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEFiZXkgR2VvcmdlPGFiZXlAbWFjYWRhbWlhbi5jb20+CglDaGVjayBuZXcgY29vcmRpbmF0ZXMgcmVjZWl2ZWQgaW4gV01fTkNDQUxDU0laRSBtZXNzYWdlLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVNsaWdodCAxIHBpeGVsIGFkanVzdG1lbnQgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSByYWRpbyBidXR0b24gYml0bWFwLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG9mZiBieSBvbmUgYWxsb2NhdGlvbiBlcnJvcnMuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglUaGUgYmFja3NwYWNlIGlzIG5vdyBoYW5kbGVkIGluIHRoZSBXTV9DSEFSIG1lc3NhZ2UuCgoJKiB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlIHRoYXQgYWxsIE1ESSBjaGlsZHJlbiBoYXZlIHRoZSBXU19FWF9NRElDSElMRCBzdHlsZSBzZXQuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgcHJvdG90eXBlIG9yZGVyLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRml4IEVYQ19zZWd2IGZvciB0aGUgVFJBUF9zaWcgdW5kZWZpbmVkIGNhc2UgKGVnIEZyZWVCU0QpLgoKCSogZGVidWdnZXIvc3RhYnMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIHN1cHBvcnQgZm9yIHRoZSBjbG9zZSBidXR0b24gaW4gdGhlIFNoZWxsQWJvdXQgZGlhbG9ncy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIER1dGNoIHJlc291cmNlcyBmb3IgUHJpbnREbGczMi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQ29tcGxldGVkIFByaW50RGxnMzIgcmVzb3VyY2Ugc3RyaW5ndGFibGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNhbml0eSBjaGVja3MgaW4gdGhlIGNsZWFudXAgY29kZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDb21wbGV0ZWQgR2V0S2V5TmFtZVRleHQgZm9yIG5vbi1jaGFyYWN0ZXIga2V5cy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBkaXJlY3RvcmllcyBuYW1lIGFwcGVhciBpbiB0aGUgQnJvd3NlRm9yRm9sZGVyIGRpYWxvZy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEbyBub3QgcmVtb3ZlIC5kcnYgZnJvbSBmaWxlbmFtZXMuCgoJKiBjb250cm9scy9idXR0b24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBsaXR0bGUgcG9zaXRpb25pbmcgYnVnIHdpdGggdGhlIGNoZWNrYm94LgoKCSogd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvd25kLmM6CglBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHJlc2l6aW5nIGJ1Z3MgZm9yIHdpbmRvd3Mgd2l0aCBXU19USElDS0ZSQU1FIGFuZCBXU19ETEdGUkFNRQoJc3R5bGVzLgoKCSogbXVsdGltZWRpYS9tY2kuYzogTWljaGFlbCBNY0Nvcm1hY2sgPG1jY29ybWFjQGFhbHMyNy5hbGNhdGVsLmNvbS5hdT4KCUNoYW5nZWQgc25wcmludGYgdG8gd3NucHJpbnRmQSB0byByZW1vdmUgdW5yZXNvbHZlZCBleHRlcm5hbCB3aGVuCgljb21waWxpbmcgb24gU29sYXJpcy9TdW4uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgTFZNX0lOU0VSVENPTFVNTlcgYW5kIExWTV9JTlNFUlRJVEVNVyBieSB1c2luZyB0aGUgYXNjaWkKCWVxdWl2YWxlbnRzLiAoV2luV29yZCA5NywgRmlsZSBPcGVuIGRpYWxvZykKCgkqIHdpbmRvd3MvY2xhc3MuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgaW4gR2V0Q2xhc3NJbmZvVyB0aGUgc2FtZSBoYWNrIGZvciBzeXN0ZW1jbGFzc2VzIGFzIGluCglHZXRDbGFzc0luZm9BICh3aW53b3JkIDk3IHdpdGggbmF0aXZlIGNvbWN0bDMyKS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIFNIR0RGSUxfRklORERBVEEgY29ycmVjdGx5IGluIFNIR2V0RGF0YUZyb21JRExpc3RXLgoKCSogY29udHJvbHMvZWRpdC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIHdQYXJhbSBvZiBXTV9QQUlOVCBtc2cgZm9yIGVkaXQgY29udHJvbC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggb2ZmIGJ5IG9uZSBlcnJvciBpbiBXSU5TUE9PTF9HZXRPcGVuZWRQcmludGVyQS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglzdWJrZXlfZm91bmQgZGlkIG5vdCBzZWFyY2ggZm9yIF9hbGxfIHN1YiBrZXlzLgoKU2F0IEF1ZyAyMSAxNDo0NzoyOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgYmFzaWMgYnJvd3NpbmcgaW4gdGhlIGZpbGUgbmFtZSBlZGl0IG9mIHRoZSBmaWxlZGxnIDk1LgoKCSogY29udHJvbHMvbWVudS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUF2b2lkIGNoYW5naW5nIHRoZSBhY3RpdmF0aW9uIHN0YXRlIGluIEVuYWJsZU1lbnVJdGVtLgoKCSogaW5jbHVkZS93aW5udC5oOiBGaXhlZCAjaWZkZWYgc3ltYm9sIGZvciBQb3dlclBDLgoKCSogb2xlL3BhcnNlZHQuYywgb2xlL3BhcnNlZHQuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJT25seSBkZWNsYXJlIERhdGVTdHlsZSBpbiBhIHNpbmdsZSBjb21waWxhdGlvbiB1bml0LgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHRoZSBjYXNlIG9mIGEgdXNlciBkZWZpbmVkIGljb24gZm9yIHRoZSBzeXNidXR0b24gaGl0dGVzdC4KCgkqIG9sZS90eXBlbGliLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXhlZCB0eXBlbGliIHJlYWRpbmcgdG8gY29ycmVjdGx5IHVzZSB0aGUgb2Zmc2V0IG9mIHRoZSB0eXBlbGliIHRoYXQKCWlzIGVtYmVkZGVkIGluIGZvciBleGFtcGxlIGEgZGxsIGZpbGUuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEtyaXN0aWFuIE5pZWxzZW4gPGtyaXN0aWFuLm5pZWxzZW5Acmlzb2UuZGs+CglGaXhlZCBDcmVhdGVESUJTZWN0aW9uKCkgY2FsbGVkIHdpdGggbmVnYXRpdmUgaGVpZ2h0IHRvIHNldCB0aGUgaGVpZ2h0Cglwb3NpdGl2ZSBpbiB0aGUgY3JlYXRlZCBESUJTRUNUSU9OLCBhcyBwZXIgTVMga25vd2xlZGdlYmFzZSBRMTg2NTg2LgoKCSogd2luZG93cy9wYWludGluZy5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVRoZSBwYWludCByZWN0YW5nbGUgcmV0dXJuIGluIHRoZSBQQUlOVFNUUlVDVCBpbiBCZWdpblBhaW50IHNob3VsZAoJbmV2ZXIgYmUgYmlnZ2VyIHRoYW4gdGhlIGNsaWVudCBhcmVhIG9mIHRoZSB3aW5kb3cuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNYWtlIHN1cmUgdGhhdCBhbiBlbXB0eSBzdHJpbmcgbmV2ZXIgbWF0Y2hlcyBhIGxpc3Rib3ggZW50cnkgaW4KCUxJU1RCT1hfRmluZFN0cmluZygpLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFsaWdubWVudCBmaXguCgoJKiBjb250cm9scy9tZW51LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBhY2Nlc3Npbmcgc3lzbWVudS4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVhbGx5IGRvIGEgc2lsZW50IGJhY2t0cmFjZSB3aGVuIHJlcXVlc3RlZC4KCgkqIGRlYnVnZ2VyL2hhc2guYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEbyBub3Qgc2V0IHRoZSBhZGRyZXNzIGlmIHRoZSBzeW1ib2wgaXMgc3RpbGwgdGFnZ2VkIElOVkFMSUQuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIE5fQklOQ0wgYW5kIE5fRUlOQ0wgaW5zdHJ1Y3Rpb25zLgoJRml4ZWQgdHlwZSBwYXJzaW5nIChhcyBnZW5lcmF0ZWQgYnkgZWdjcykuCgpXZWQgQXVnIDE4IDE4OjQwOjUyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSB0eXBlZGVmIHRvIHdvcmsgYXJvdW5kIGVnY3MgcHJvYmxlbS4KCgkqIG9sZS8qLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGZyb20gb2xlIHJlbGF0ZWQgZmlsZXMuCgoJKiBvbGUvY29tcG9iai5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gV09XIGNoYW5nZXMuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd293bnQzMi5oLCBsb2FkZXIvbW9kdWxlLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi93b3czMi5zcGVjLCByZWxheTMyL3dvd3RodW5rLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBXT1cgcm91dGluZXMgdG8gc2luZ2xlIGZpbGUuCglBZGRlZCBhbGwgbWlzc2luZyBXT1cgcm91dGluZXMsIGZpeGVkIFdPV0NhbGxiYWNrMTZFeC4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGludGVybmFsIGJ1ZmZlciBmb3IgMTYgYml0IG1taW8gTUVNIGZpbGVzLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIHNvbWUgZXJyb3JzIGluIGNsZWFuaW5nIHVwIHZhbHVlcyByZXR1cm5lZCBieSBNQ0kgZHJpdmVyczogdGhpcwoJICBzaG91bGQgc29sdmUgdGhlIGlzc3VlcyByZXBvcnRlZCB3aXRoIHRoZSBDRCBwbGF5ZXIvd3JpdGVyCgktIGNyYXNoIHdoZW4gY29tbWFuZCB3YXMgcmVxdWVzdGVkIHdpdGggYXV0b21hdGljIG9wZW4gKG5vdGUsIHRoaXMKCSAgd2lsbCBub3cgZ3JhY2VmdWxseSByZXBvcnQgYW4gZXJyb3IsIG5vdCBkbyB0aGUgY29ycmVjdCB0aGluZykuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBQU0hfVVNFSUNPTklEL1BTSF9VU0VISUNPTiBhbmQgdGhlIFBTUF9VU0VUSVRMRQoJZmxhZ3MuCgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRUZsYWdzIHdlcmUgcGFzc2VkIGluY29ycmVjdGx5IGJ5IENhbGxGcm9tMTZSZWdpc3Rlci4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiByZXN0b3JlIFNUQUNLMTZGUkFNRSBmaWVsZHMgaW4gU3dpdGNoU3RhY2tCYWNrMTYuCgoJKiB0b29scy93cmMvd3JjLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL3BhcnNlci55OgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVdyYyBkaWQgbm90IGNoZWNrIGFueSBJRHMgd2hpY2ggYXJlIG9ubHkgMTYgYml0LiBDb21tb24gZGlhbG9ncyBoYWQgc29tZQoJSURzIGxhcmdlciBhbmQgdGhhdCBjYXVzZWQgcHJvYmxlbXMuIFRoaXMgaXMgbm93IHNvbHZlZCAoSSBob3BlKS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEF1ZyAxNSAxODo1MjozMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IFN0ZXZlIFRpYmJldHQgPHN0ZXZldEBjb3JlbC5jb20+CglGaXhlZCBjdXJzb3Igc3RyZXRjaCBjb2RlLgoKCSogbWVtb3J5L3NlbGVjdG9yLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbmhpYml0IHdyYXBhcm91bmQgaW4gY29tcGFyaXNvbi4KCgkqIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBsb2FkZXIvbG9hZG9yZGVyLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBpbnRlcm5hbCBkbGwsIGV4cG9ydGluZyBhbHJlYWR5IGV4aXN0aW5nIHBhdGggZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBjb250cm9scy9tZW51LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglFbnN1cmUgdGhhdCB0aGUgV01fRU5URVJJRExFIG1lc3NhZ2UgaXMgbm90IHNlbnQgaWYgdGhlIHdha2UtdXAgZXZlbnQKCWZvciB0aGUgTVNHX0ludGVybmFsR2V0TWVzc2FnZSgpIGNhbGwgaXMgYSBXTV9USU1FUi4KCgkqIHJjL3dpbmVyYy5jLCBpbmNsdWRlL3Jlc291cmNlLmgsIGluY2x1ZGUvd2luZGVmLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUdDQyAzLjAgaGFzIG5vdCBiZWVuIHJlbGVhc2VkIHlldCwgYnV0IGl0IGlzIGdvb2QgdG8gYmUgcHJlcGFyZWQuCgoJKiBtaXNjL3NweS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIHJlc29sdXRpb24gb2YgTFZNIG1lc3NhZ2VzLgoKCSogb2JqZWN0cy9kaWIuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGRlZCBwcm90ZWN0aW9uIGFnYWluc3QgcG9zc2libGUgbWVtb3J5IGNvcnJ1cHRpb24uCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogU3RldmUgVGliYmV0dCA8c3RldmV0QGNvcmVsLmNvbT4KCUZpeGVkIGN1cnNvciBzZWxlY3Rpb24gdG8gZmluZCB0aGUgY29ycmVjdCBjdXJzb3Igd2hlbiBtb3JlIHRoYW4gb25lCglhdmFpbGFibGUuCgoJKiBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5zcGVjLCBkbGxzL3dpbnNwb29sL3dzcG9vbC5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglSZXBsYWNlZCBhIHN0YXRpYyB0ZW4gZWxlbWVudCBhcnJheSB3aXRoIGEgZHluYW1pYyBwb2ludGVyIGFycmF5LgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IHNwZWNpYWwgY2FzZSB3aGVuIG5vIHByaW50ZXIgaW5zdGFsbGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5zcGVjOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJTmV3IHJvdXRpbmUgRGxsRW50cnlQb2ludCBmb3Igc2hlbGwuZGxsLiAgTG9hZHMgc2hlbGwzMi5kbGwsCglzaW5jZSBtb3N0IHNoZWxsLmRsbCBmdW5jdGlvbnMgY2FsbCB0aGVpciAzMi1iaXQgY291bnRlcnBhcnRzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGFsaWdubWVudC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUVNX1NFVFNFTCBzY3JvbGxzIGlmIG91dHNpZGUgb2YgdGhlIHZpc2libGUgcmFuZ2UuCgkic2hpZnQraG9tZSIgc2VsZWN0aW9uIGltcHJvdmVkIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBvbGUvcGFyc2VkdC5jOiBSZW1vdmVkIFJDUyBrZXl3b3JkLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSB1c2Ugb2YgcmMgZmlsZXMgZm9yIHN0cmluZ3MgYW5kIG1lbnVzLCBmaXhlcy4gRmlyc3QgaW50ZXJuYWwKCWljb25zLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgaW50ZXJmYWNlOiBEcm9wU291cmNlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCZXR0ZXIgRHJvcFRhcmdldC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU0hHZXRGaWxlSW5mbyBiZXR0ZXIuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVByb3RlY3QgY2FjaGUgd2l0aCBjcml0aWNhbCBzZWN0aW9uLgoJUmVtb3ZlZCBoYWNrIHRvIGxvYWQgaWNvbnMgZnJvbSBleHRlcm5hbCBzaGVsbDMyLmRsbC4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVF1ZXJ5R2V0RGF0YSwgRW51bUZvcm1hdEV0YyBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgbWFwcGluZyBvZiBmaWxlIGV4dGVuc2lvbnMgdG8gdGV4dC4KCgkqIG1pc2MvZGRlbWwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBhc2NpaS91bmljb2RlIGlzc3VlIGZvciBuYW1pbmcgb2YgdGhlIG11dGV4ZXMuCglNYWRlIG11dGV4IGhhbmRsZXMgZ2xvYmFsLgoJRml4ZWQgaW5jb3JyZWN0IGludGVycHJldGF0aW9uIG9mIHJldHVybiB2YWx1ZXMgb2YgV2FpdEZvclNpbmdsZU9iamVjdC4KCgkqIG9iamVjdHMvZm9udC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpcnN0IGltcGxlbWVudGF0aW9uIG9mIEdldENoYXJhY3RlclBsYWNlbWVudEEuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFdNX1NFVElDT04gYW5kIFdNX0dFVElDT04gbWVzc2FnZXMuCgoJKiBmaWxlcy9kcml2ZS5jOiBNb3J0ZW4gRXJpa3NlbiA8bW9ydGVuZUBzaW0ubm8+CglGSVhNRSBvbiB1bmltcGxlbWVudGVkIGZlYXR1cmUgbWFkZSBsZXNzIG9idHJ1c2l2ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCU5vdyB0aGUgY29udmVyc2lvbiBpbiB0aGUgYmx0IGZ1bmN0aW9ucyByb3VuZCB1cCB0aGUgcmVzdWx0LgoKCSogdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCURvY3VtZW50IHVzZSBvZiAiaW5pdCIgaW4gYnVpbGQtc3BlYy50eHQsIGFuZCBtYWtlIGJ1aWxkLmMgcHJpbnQgYQoJd2FybmluZyBpZiBzb21lb25lIHRyaWVzIHRvIHVzZSAiaW5pdCIgaW4gYSBXaW4xNiBzcGVjIGZpbGUuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOiBNaWNoYWVsIEthcmNoZXIgPGthcmNoZXJAZHBrLmJlcmxpbi5maWRvLmRlPgoJTWFrZSBzdXJlIHdlIGhhdmUgYSBkZ3JvdXAgYmVmb3JlIHBhdGNoaW5nIHByb2xvZ3MuCgoJKiAqL01ha2VmaWxlLmluLCAqLy5jdnNpZ25vcmU6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gZ2x1ZSBjb2RlIGdlbmVyYXRpb24gY2hhbmdlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgd2luZG93cy93aW5wcm9jLmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9zbm9vcC5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gbmV3LXN0eWxlIFdpbmUgdGh1bmtzLgoJUmVtb3ZlZCBzb21lIG5vdyB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBwb2ludGVycy4KCgkqIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsVG8xNi4uLiAvIENhbGxGcm9tMTYuLi4gV2luZSB0aHVua3MgcmVvcmdhbml6ZWQ6CgktIENsZWFuZXIgc2VwYXJhdGlvbiBiZXR3ZWVuIGNvcmUgYW5kIGdsdWUgY29kZS4KCS0gQXJndW1lbnQgY29udmVyc2lvbiBnbHVlIGNvZGUgbm93IGluIEMuCgktIEdsdWUgY29kZSBuZWVkZWQgZm9yIDE2LWJpdCAuc3BlYyBmaWxlcyBpbmxpbmVkLgoKU2F0IEF1ZyAxNCAxNTo1Mzo1MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jb21tLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gaW1wbGVtZW50ZWQgR2V0Q29tbU1vZGVtU3RhdHVzCgktIGZpeGVkIHRoZSBEVFIsIENUUyBhbmQgQ09NTUJSRUFLIHJlbGF0ZWQgc3ViZnVuY3Rpb25zIG9mIEVzY2FwZUNvbW1GdW5jdGlvbgoJLSBhZGRlZCBtb3JlIHZlcmJvc2UgVFJBQ0VpbmcKCgkqIG1pc2MvdmVyc2lvbi5jOiBNb3J0ZW4gRXJpa3NlbiA8bW9ydGVuZUBzaW0ubm8+CglNYWRlIEdldFZlcnNpb25FeCgpIGJlaGF2ZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHNwZWNpZmljYXRpb24gd2l0aAoJcmVnYXJkIHRvIGVycm9yIGhhbmRsaW5nLgoKCSogZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFyayBHLiBBZGFtcyA8bWFkYW1zQGxpdmVwYWdlLmNvbT4KCUFkZGVkIHN0dWIgZm9yIERyYXdEaWJDbG9zZS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBsb29rIG9mIHRoZSBjb21ib2JveCdzIGRyb3AgZG93biBidXR0b24gd2hlbiBpbiBXaW45NSBsb29rLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBpY29ucyBpbiBwcm9wZXJ0eSBzaGVldCB0YWJzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy93cmMuaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglWZXJzaW9uIDEuMC4xNCBvZiB3cmMuCgpTdW4gQXVnICA4IDE4OjU2OjA0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgd2luMzIvdGltZS5jOiBGaXhlZCBTZXRMb2NhbFRpbWUgcHJvdG90eXBlLgoKCSogb2xlL29sZTJubHMuYywgd2luMzIva2VybmVsMzIuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBmaWxlcy9kb3NfZnMuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIGxvYWRlci9saWJyZXMuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJUmVwbGFjZWQgYSBmZXcgY2FsbHMgdG8gbHN0ciogZnVuY3Rpb25zIGJ5IHRoZWlyIENSVERMTCBvciBsaWJjCgllcXVpdmFsZW50LgoKCSogbWVtb3J5L3N0cmluZy5jOgoJQWRkZWQgYW4gZXhjZXB0aW9uIGhhbmRsZXIgYXJvdW5kIGEgZmV3IGxzdHIqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL2NydGRsbC5oOgoJUmVpbXBsZW1lbnRlZCBtdWx0aS1ieXRlIGFuZCB3aWRlLWNoYXJzIGZ1bmN0aW9ucyB0byBub3QgZGVwZW5kIG9uCglsc3RyKiBmdW5jdGlvbnM7IGFkZGVkIGEgZmV3IG1pc3Npbmcgb25lczsgZml4ZWQgYSBjb3VwbGUgb2YgYnVncy4KClNhdCBBdWcgIDcgMTQ6MzI6MzQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvQXR0aWMvd25ldC5oLCBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd2ludXNlci5oLCBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL0F0dGljL21wci5zcGVjLCByZWxheTMyL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXByLy5jdnNpZ25vcmUsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9hdXRoLmMsIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL21wci9tdWx0aW5ldC5jLCBkbGxzL21wci9ucHMuYywgZGxscy9tcHIvcHdjYWNoZS5jLCBkbGxzL21wci93bmV0LmMsIGluY2x1ZGUvbmV0c3BpLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNlcGFyYXRlZCBXaW4xNiAoVVNFUikgYW5kIFdpbjMyIChNUFIpIG5ldHdvcmsgcm91dGluZXMuCglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBNUFIgdG8gZGxscy9tcHIvLgoJQWRkZWQgcHJvcGVyIGhlYWRlcnMgYW5kIHN0dWJzIGZvciBtaXNzaW5nIE1QUiByb3V0aW5lcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcHJvdmVkIChzb3J0IG9mKSBSZWdGbHVzaEtleS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUlmIHRoZSB3aW5kb3cgaXMgYWxyZWFkeSB0aGUgdG9wbW9zdCB3aW5kb3cgaW4gU2hvd1dpbmRvdyhTV19TSE9XKSwgaXQKCW11c3Qgbm90IGJlIGFjdGl2YXRlZC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJV01fU1lTQ09NTUFORCBtZXNzYWdlIChmb3IgU0NfQ0xPU0UpIHNob3VsZCBiZSBwb3N0ZWQgbm90IHNlbnQuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJWDExZHJ2IFNldERyYXdhYmxlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBEQyBvcmlnaW4sIHRoaXMgdHJhbnNsYXRpb24KCXNob3VsZCBiZSByZWZsZWN0ZWQgZm9yIHRoZSBkYyBjbGlwcGluZyByZWdpb24gZm9yIENTX09XTkRDIGFuZCBDU19DTEFTU0RDLgoKCSogd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kaWFsb2cuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglTZXQgZm9jdXMgdG8gdGhlIGRpYWxvZyBpbiBFbmREaWFsb2cuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglNYWtlIHN1cmUgd2UgY29tcGlsZSB3aW5lc3R1Yi5vIGJlZm9yZSB0cnlpbmcgdG8gYnVpbGQgYSBXaW5lbGliIHRlc3QKCXByb2dyYW0uCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBjYXNlIHNlbnNpdGl2aXR5IGZsYWcuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUltcGxlbWVudGVkIHRoZSByZXR1cm4gb2YgaERldk1vZGVzIGFuZCBoRGV2TmFtZXMgaW4gdGhlIFBSSU5URExHCglzdHJ1Y3R1cmUgb2YgUHJpbnREbGdBKCkuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIGluY2x1ZGUvcXVldWUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIGhhcmR3YXJlX2V2ZW50IHVzZSB3aW4zMi1jb25mb3JtYW50IHBhcmFtZXRlcnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRXhwbGljaXRseSBsb2FkIHNoZWxsMzIuZGxsLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglUYWtlIGludG8gYWNjb3VudCBpY29ucyB3aGVuIGRldGVybWluaW5nIHRhYiBzaXplLgoKCSogZmlsZXMvZHJpdmUuYzogTW9ydGVuIEVyaWtzZW4gPG1vcnRlbmVAc2ltLm5vPgoJSW1wcm92ZWQgR2V0RGlza0ZyZWVTcGFjZUV4KCkgaW1wbGVtZW50YXRpb24gYSBsaXR0bGUgYml0LgoKCSogbWlzYy9jb21tLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gYWRkZWQgc29tZSBtb3JlIEJhdWRyYXRlcwoJLSBmaXhlZCBhIGhhbmcgaW4gdGNzZXRhdHRyIHdoZW4gdGhlIGlucHV0IGJ1ZmZlciBpc24ndCBlbXB0eQoJLSBhZGRlZCBtb3JlIHZlcmJvc2l0eSBmb3IgZGVidWdnaW5nCgoJKiBjb250cm9scy91aXRvb2xzLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUhhbmRsZSB0aGUgY2FzZSB3aGVuIHRoZSBidXR0b24gaXMgcmVhbGx5IHNtYWxsLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglXU19FWF9ETEdNT0RBTEZSQU1FIGFsb25lIGRvZXMgbm90IG1lYW4gdGl0bGUgYmFyLCB5b3Ugc3RpbGwgaGF2ZSB0bwoJc3BlY2lmeSBXU19DQVBUSU9OLgoKV2VkIEF1ZyAgNCAxNTowNzo1NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmMsIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRGlyZWN0SW5wdXQgSm95c3RpY2sgc3VwcG9ydCAodGVzdGVkIHdpdGggV0M6UHJvcGhlY3kpLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi90aW1lLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkIFNldExvY2FsVGltZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEl2YW4gRGUgU2FlZGVsZWVyIDxJdmFuZHNAc3ltcGF0aWNvLmNhPgoJTWlub3IgZml4IHRvIHRoZSBGcmVuY2ggQ2FuYWRpYW4ga2V5Ym9hcmQuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdoZW4gZmxpcHBpbmcgYmFja2J1ZmZlciAtPiBmcm9udGJ1ZmZlciwgZmlyc3QgZXhjaGFuZ2Ugc3VyZmFjZXMsIHRoZW4KCWNvcHkgWEltYWdlLCBzaW5jZSB0aGUgcGFsZXR0ZSBtaWdodCBvbmx5IGJlIGRlZmluZWQgaW4gdGhlIGZyb250YnVmZmVyLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCUNyZWF0ZSBzeXNjb25mZGlyIG9uIGluc3RhbGwuCgoJKiBkbGxzL3N0cmVzcy8uY3ZzaWdub3JlOiBGaXhlZCB0eXBvLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvZGVidWd0b29scy5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgd2luMzIva2VybmVsMzIuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6CglHb3QgcmlkIG9mIGRzcHJpbnRmIGFuZCByZWxhdGVkIG1hY3Jvcy4KCgkqIHNlcnZlci9tdXRleC5jOgoJUmVtb3ZlIHRoZSBtdXRleCBmcm9tIHRoZSB0aHJlYWQgbGlzdCB3aGVuIGRlc3Ryb3lpbmcgaXQuCgoJKiAqLyo6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIHZhcmlvdXMgRExMcyB0byBkbGxzLwoKU3VuIEF1ZyAgMSAxNDo1ODowMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtaXNjL2Vycm9yLmMsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQzMy5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc3RhY2suYzoKCVJlbW92ZWQgSVBfcmVnLCBTUF9yZWcgYW5kIEZMX3JlZyBkZWZpbml0aW9ucyB0byBhdm9pZCBwb3RlbnRpYWwKCWFsaWFzaW5nIG9wdGltaXphdGlvbiBwcm9ibGVtcy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvc2lnbmFsLmM6CglSZW1vdmVkIFNJR05BTF9NYXNrQXN5bmNFdmVudHMgYW5kIGNsZWFuZWQgdXAgc2lnbmFsIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9BdHRpYy9hc3luYy5oLCB3aW4zMi9jb25zb2xlLmMsIGZpbGVzL0F0dGljL2FzeW5jLmMsIGZpbGVzL01ha2VmaWxlLmluLCBmaWxlcy9maWxlLmM6CglSZW1vdmVkIGFzeW5jIEkvTyBzdXBwb3J0LgoKCSogaW5jbHVkZS9jb21tLmgsIG1pc2MvY29tbS5jOgoJVXNlIHRoZSBzZXJ2aWNlIHRocmVhZCBmb3IgY29tbSBub3RpZmljYXRpb25zLgoKCSogaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgbG9hZGVyL3Rhc2suYywgbXNkb3MvZHBtaS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHdpbjMyL2tlcm5lbDMyLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYzoKCU1hZGUgc3RhY2sgbWFuaXB1bGF0aW9uIG1hY3JvcyBpbnRvIGlubGluZSBmdW5jdGlvbnMuCglDaGFuZ2VkIGEgZmV3IGFjY2Vzc2VzIHRvIGNvbnRleHQgcmVnaXN0ZXJzIHRvIGF2b2lkIHBvdGVudGlhbAoJYWxpYXNpbmcgb3B0aW1pemF0aW9uIHByb2JsZW1zLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS93aW5kZWYuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtZW1vcnkvaW5zdHIuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCUNoYW5nZWQgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uIHRvIHVzZSBhIENPTlRFWFQ4NiBpbnN0ZWFkIG9mIGEKCVNJR0NPTlRFWFQuCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHdpbmUuY29uZi5tYW4gb24gZGlzdGNsZWFuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClNhdCBKdWwgMzEgMTk6MzU6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQ2xvc2UgdGhlIHJpZ2h0IHdpbmRvdyB3aGVuIGNsaWNraW5nIG9uIGEgbm9uIGFjdGl2ZSB3aW5kb3cgY2xvc2UKCWJ1dHRvbi4KCgkqIE1ha2VmaWxlLmluOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUmVtb3ZlZCB0aGUgZGVwZW5kZW5jeSBvbiAiZHVtbXkiIGZvciB3aW5lIGFuZCB3aW5lLnN5bS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCVJlbW92ZSBmaWxlIGZyb20gY2FjaGUgd2hlbiBmbHVzaGluZyBpdCAoYmFzZWQgb24gYSBwYXRjaCBieSBJYW4KCVNjaG1pZHQpLgoKCSogaW5jbHVkZS93aW5udC5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIENPTlRFWFQgZm9yIEFMUEhBIGFuZCBNSVBTLgoKCSogY29uZmlndXJlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdXBwb3J0IGZvciBTb2xhcmlzIExpbnQuCgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHRvb2xzL21ha2VfZGVidWcsIHdpbjMyL2NvbnNvbGUuYywgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUveHRlcm0uYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUveG1hbGxvYy5oLCBtaXNjL3htYWxsb2MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBvZiB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5IFNvbGFyaXMgTGludC4KCgkqIGluY2x1ZGUvcHNocGFjazQuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIEMvQysrIGNvbXBpbGUgZml4LgoKCSogbXNkb3MvZG9zbWVtLmMsIG9sZS9zdG9yYWdlMzIuYywgd2luZG93cy9wYWludGluZy5jLCBjb250cm9scy9idXR0b24uYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVmFyaW91cyBBTlNJIEMgY29tcGFiaWxpdHkgZml4ZXMuCgoJKiByZWxheTMyL3dpbm1tLnNwZWMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL21tc3lzdGVtLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL25ldHdvcmsuYywgbWlzYy9zeXN0ZW0uYywgbWlzYy93aW5zb2NrLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgb2xlL29sZWZvbnQuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL29sZWF1dDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywgZGxscy90YXBpMzIvdGFwaTMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgb2YgdGhlIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGktY2hlY2suCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFjdHVhbGx5IGNyZWF0ZSB0aGUgbWFuLyBzdWJkaXJlY3RvcmllcyBiZWZvcmUgaW5zdGFsbGluZy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEtFUk5FTC40NDcgKFdJTjMyX09sZFlpZWxkMTYpLgoKCSogd2luZG93cy9ldmVudC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN1c3BlbmQgV05EIGxvY2sgYmVmb3JlIEVWRU5UX1N5bmNocm9uaXplLgoKCSogd2luMzIvZGV2aWNlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ3JlYXRlIFZ4RCBoYW5kbGUgb25seSBmb3Iga25vd24gVnhEcy4KCgkqIE1ha2UucnVsZXMuaW4sIHJlbGF5MzIvTWFrZWZpbGUuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSBjb21waWxhdGlvbiBvZiAqLnNwZWMuYyBmaWxlcyB1c2UgLWZuby1idWlsdGluIHJlZ2FyZGxlc3Mgb2YKCXdoZXJlIHRoZXkgYXJlLgoKCSogaW5jbHVkZS90YXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLCBncmFwaGljcy9kZHJhdy5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZC9hZGRlZCBtaXNzaW5nL3dyb25nIGZ1bmN0aW9uIHByb3RvdHlwZXMgYW5kIG1hZGUgaW50ZXJuYWwKCWZ1bmN0aW9ucyBzdGF0aWMuCgoJKiB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmMsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBtaXNzaW5nIHByb3RvdHlwZXMgYW5kIG1hZGUgaXQgd29yayB3aXRoIFNvbGFyaXMgWDExLgoKCSogZGVidWdnZXIvZXh0ZXJuYWwuYywgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG9sZS9hbnRpbW9uaWtlci5jLCBvbGUvY29tcG9zaXRlbW9uaWtlci5jLCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL29sZWZvbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUVsaW1pbmF0ZWQgd2FybmluZ3MuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgdGhlIERTRUcgdmFsdWUgaW4gdGhlIFNFR1RBQkxFRU5UUlkgc3RydWN0LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIGJ1aWx0aW4gdG9vbGJhciBiaXRtYXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaCwgaW5jbHVkZS90cmVldmlldy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNvbWUgbW9yZSBtZXNzYWdlcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWIgZm9yIENyeXB0U2V0S2V5UGFyYW1zKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHVicyBmb3IgREFEX1NldERyYWdJbWFnZSgpIGFuZCBQYXRoQ2xlYW51cFNwZWMoKS4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YiBmb3IgX2V4Y2VwdF9oYW5kbGVyMigpLgoKCSogb2JqZWN0cy9yZWdpb24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIEdldFJhbmRvbVJlZ2lvbigpLgoKCSogY29udHJvbHMvbWVudS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBzeXN0ZW0gYnV0dG9uIGJlaGF2aW9yIGFuZCBhc3NvY2lhdGVkIGl0IHRvIHRoZSBzeXN0ZW0KCW1lbnUgaW4gd2luOTUuIEFsc28gcGVybWl0IHRoZSBTQ19DTE9TRSBpdGVtIHRvIGJlIGRpc2FibGVkLgoKCSogbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQnVnZml4ZXMgYW5kIGEgZmFrZSBHRVRCQVNFSVJRLgoKCSogZmlsZXMvYXN5bmMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIGFzeW5jIGZkcyBub25ibG9ja2luZy4KCgkqIHdpbmRvd3MvbWRpLmM6IERhbiBMYW5nbG9pcyA8ZGFuaWVsbEBjb3JlbC5jb20+CglSZW1vdmVkIGFuIGluYXBwcm9wcmlhdGUgaWYgc3RhdGVtZW50IGZyb20gTURJX0NoaWxkQWN0aXZhdGUgdGhhdAoJcHJldmVudGVkIHRoZSBhY3RpdmF0aW9uIGNvZGUgZnJvbSBleGVjdXRpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglCdWdmaXhlcyAmIGZ1cnRoZXIgdXBkYXRlcyBmb3IgdGhlIG1vbnRoIGNhbGVuZGFyIGNvbW1vbiBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGF0ZXRpbWUuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglTdGFydGVkIGltcGxlbWVudGluZyBkYXRlL3RpbWUgY29tbW9uIGNvbnRyb2wuCgoJKiBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9wcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUFNEUlZfV3JpdGVBcmMgc2hvdWxkbid0IHdyaXRlIGEgbmV3cGF0aC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4IGhhbmRsaW5nIG9mIFdNX0xCVVRUT05EQ0xJQ0sgbWVzc2FnZSBmb3IgYnV0dG9ucyB3aXRoIGNlcnRhaW4KCXN0eWxlcy4KCgkqIHdpbmRvd3MvZGNlLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeCBmb3IgdXBkYXRpbmcgdGhlIGNsaXBwaW5nIHJlZ2lvbiBpbiBuZXN0ZWQgR2V0RENFeCBjYWxscy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJVHJpZWQgdG8gZml4IHRoZSBjb2RlIGZvciBTZXRXaW5kb3dQb3MgdG8gZXJhc2UgdGhlIGJhY2tncm91bmQKCXByb3Blcmx5LgoKRnJpIEp1bCAzMCAxODoxMDoyMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21tZGxnL3JzcmMucmMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJLSBhZGRlZCBDb2xsYXRlL05vQ29sbGF0ZSBJY29ucyB0byBQcmludDMyIGRpYWxvZyAodW5mb3J0dW5hdGVseSB0aGV5CgkgIGRvbid0IGRpc3BsYXkgeWV0KS4KCS0gYWRkZWQgc3RhdHVzIHN0cmluZ3MuCgktIGFkZGVkIHN0cmluZyB0YWJsZSBmb3IgaW50ZXJuYXRpb25hbGlzYXRpb24gb2Ygc2V2ZXJhbCBpbnRlcm5hbAoJICBtZXNzYWdlIGJveGVzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbnVzZXIuaDogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglSZW1vdmVkIGR1cGxpY2F0ZWQgZGVmaW5lcyBpbiB3aW51c2VyLmggYW5kIGNvbW1jdHJsLmguIEFsc28gY29ycmVjdGVkCglhIHR5cG8gZm9yIFNXX01BWCB2YWx1ZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgZmlsZSBkaWFsb2cuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0cmlwIC5kcnYgZXh0ZW5zaW9ucyB0byBNT0RVTEVfR2V0TG9hZE9yZGVyLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBtZW1vcnkgbGVhay4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogSW5zdGFsbCB0YXNrLWVudHJ5IGJyZWFrcG9pbnQgKmFmdGVyKiBFWEUgbW9kdWxlIGlzIGluaXRpYWxpemVkLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHMuYywgaW5jbHVkZS9wc2Rydi5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgY2FsbCB0byB0aGUgbmV3cGF0aCBvcGVyYXRvciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGFyYwoJb3BlcmF0b3IuCgoJKiBjb250cm9scy9idXR0b24uYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdoZW4gdGhlIHN0eWxlIGlzIEJTX0JJVE1BUCBvciBCU19JQ09OOiB0aGUgYml0bWFwIG9yCglpY29uIG5lZWRlZCB0byBiZSBjZW50ZXJlZCB3aGVuIHRoZSBidXR0b24gaXMgc21hbGxlciB0aGFuIHRoZSBiaXRtYXAuCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIG1lbW9yeSBsZWFrIHRoYXQgb2NjdXJzIHdoZW4gd2UgbWF4aW1pemUvbWluaW1pemUgYW4gTURJCgljaGlsZC4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIG1vcmUgc3VwcG9ydCBmb3IgYnVkZHkgd2luZG93cyBpbiB0aGUgdXBkb3duIGNvbnRyb2wuCgoJKiBjb250cm9scy9lZGl0LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHByb3BlciB3aW45NSBzdXBwb3J0IGZvciB0aGUgV1NfQk9SREVSIHN0eWxlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIHRoZSBXU19CT1JERVIgc3R5bGUgdG8gYSBXU19FWF9DTElFTlRFREdFIHN0eWxlIGZvciB0aGUKCWxpc3Rib3ggY29udHJvbC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBib3JkZXIgZm9yIHRoZSBsaXN0Ym94IGNyZWF0ZWQgYnkgdGhlIHNpbXBsZSBjb21ib2JveC4KCgkqIG9sZS9jb21wb2JqLmMsIGlmMTYzMi9jb21wb2JqLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBDb1Jldm9rZUNsYXNzT2JqZWN0IHN0dWIgbmVlZGVkIGJ5IEFjcm9iYXQgMyAxNiBiaXQuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUdldE1vZHVsZUhhbmRsZTE2OiB0cmVhdCBXaW4zMiBtb2R1bGVzIGNvcnJlY3RseS4KCldlZCBKdWwgMjggMTY6Mzg6NDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdXNlIG9mIFN0clJldFRvU3RyTi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHJSZXRUb1N0ck5bQXxXfEFXXSBuZXcgaW5kZXBlbmRlbnQgdW5pY29kZS9hc2NpaS9leHBvcnQgZnVuY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9kbGxzOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIGV4cGxhbmF0aW9uIG9mIHRoZSBjdXJyZW50IERMTCBzdXBwb3J0LgoKCSogbWVtb3J5L2dsb2JhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZml4ZWQgZnJlc2hseSBpbnRyb2R1Y2VkIGJ1ZyBpbiBHbG9iYWxMb2NrMTYuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBzdHVicyBmb3IgSW5pdE1VSUxhbmd1YWdlIGFuZCBDT01DVEwzMi40MTAuCglGaXhlZCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzLgoKVHVlIEp1bCAyNyAxNzoxMDowNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjZW11L21haW4uYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy91c2VyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEZpbmFsVXNlckluaXQxNi9GaW5hbEdkaUluaXQxNiBzdHVicy4KCUNhbGwgb3V0IHRvIEZpbmFsVXNlckluaXQgaW4gTUFJTl9FbXVsYXRvclJ1bi4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWVtb3J5L3NlbGVjdG9yLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIElzQmFkRmxhdFJlYWRXcml0ZVB0cjE2KCkuCgoJKiBjb250cm9scy9lZGl0LmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgaW5jb3JyZWN0IGVkaXQgY29udHJvbCBiZWhhdmlvdXIgaW4gbW91c2UgbWVzc2FnZSBoYW5kbGluZy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVNlbmQgbm9ybWFsIG1vdXNlIG1lc3NhZ2VzIHRvIFdNX1NFVENVUlNPUiB3aGVuIG5vbi1jbGllbnQgbW91c2UKCW1lc3NhZ2VzIG9jY3VyLgoKCSogd2luZG93cy93aW5wb3MuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglDaGVjayBpZiB0aGUgd2luZG93IGhhcyB0aGUgV1NfQ0xJUFNJQkxJTkdTIHN0eWxlIGJlZm9yZSB1c2luZyB0aGUKCURDWF9DTElQU0lCTElOR1MgZmxhZy4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2RsZ3MuaCwgaW5jbHVkZS90Y2hhci5oOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFdpbjk1IGZpbGUgb3Blbi9zYXZlIGRpYWxvZ3MuCgoJKiBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyB0b29scy8gYmVmb3JlIGFueSBvZiB0aGUgb3RoZXIgc3ViZGlyZWN0b3JpZXMsIGV2ZW4gd2hlbiBkb2luZwoJcGFyYWxsZWwgbWFrZXMuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBSZXR1cm4gc2VsZWN0b3IgYWxzbyBpbiBDWCBmcm9tIEdsb2JhbExvY2sxNigpLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9yZSBnY2MgYnVnIHdvcmthcm91bmRzLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBtb3JlIHBhcGVyIHNpemVzIGFuZCBiaW4gbmFtZXMgdG8gUFBEIHBhcnNlci4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWN0dWFsbHkgcmV0dXJuIHRoZSBudW1iZXIgb2YgZXZlbnRzIGluIE1vdXNlX0dldERldmljZURhdGEgKGZpeGVzCglXaW5nIENvbW1hbmRlciBQcm9waGVjeSkuIEFkZGVkIHRpbWVzdGFtcCBhbmQgc2VxdWVuY2UgZ2VuZXJhdGlvbiwKCWNyaXRpY2FsIHNlY3Rpb24gZm9yIG1vdXNlZGF0YS4gRGlzYWJsZWQgbW91c2Ugd2FycGluZyBpbgoJR2V0RGV2aWNlRGF0YSBmb3Igbm93IChnZW5lcmF0ZXMgZXhjZXNzIG1vdXNlIGV2ZW50cykuCgpTdW4gSnVsIDI1IDEzOjE1OjQ5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqLyouc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgLnNwZWMgZmlsZXMgdG8gY29ycmVzcG9uZGluZyBkbGxzLyBkaXJlY3RvcnkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V2ZXJhbCBmb2N1cyBhbmQgc2VsZWN0aW9uIHByb2JsZW1zIGluIGxpc3Rib3hlcy4KCgkqIHdpbmRvd3MvZGNlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJldHJpZXZlIHRoZSBjbGlwcGluZyByZWdpb24gYmVmb3JlIHNldHRpbmcgdGhlIGRyYXdhYmxlIGFuZCByZXNldCB0aGUKCWNsaXBwaW5nIHJlZ2lvbiBhZnRlci4KCgkqIHJlbGF5MzIvQXR0aWMvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGZpeGVzL3JlaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZW1vdmVkIGV4cGVyaW1lbnRhbC91bnVzZWQgY29kZS4KCVVzZSBTaGVsbEZvbGRlciB0byBnZXQgVmlld09iamVjdHMuCglTdGFydGVkIGNsZWFudXAgb2YgdGhlIGNvbnRleHRtZW51IGNvZGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvbXBsZXRlIHJlZGVzaWduLCBzcGxpdCBpbnRvIDMgaW1wbGVtZW50YXRpb25zIChEZXNrdG9wLCBNeUNvbXB1dGVyCglhbmQgZmlsZXN5c3RlbSBmb2xkZXJzKS4gQWxsIHBhcnNpbmcgYW5kIGJpbmRpbmcgaXMgZG9uZSByZWN1cnNpdmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhBLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFNIQ3JlYXRlU2hlbGxGb2xkZXJWaWV3RXguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmVtb3ZlZCBzcGVjaWFsIENvQ3JlYXRlQ2xhc3NPYmplY3QgYW5kIHVzZSBvbGUgZnVuY3Rpb25zIGluc3RlYWQuCglTSENyZWF0ZURlZkNsYXNzT2JqZWN0IGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBhY2Nlc3MgdG8gbG5rJ3MgdG8gYSBJU3RyZWFtIGludGVyZmFjZS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgaWNvbiBiYWNrZ3JvdW5kICh3YXMgYmxhY2spLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBnZXR0aW5nIGljb25zIGZyb20gZmlsZXR5cGVzLgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgZW51bWVyYXRpb24gb2Ygc2hlbGwgZXh0ZW5zaW9ucywgc2VwZXJhdGVkIGVudW0gc3R1ZmYgZm9yCgl0aGUgMyBzZXBlcmF0ZSBzaGVsbGZvbGRlciBpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZXdyb3RlIEdldERhdGEgc28gc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNlcGFyYXRlZCBzdHVmZiBmb3Igc2h2IGJhY2tncm91bmQgY29udGV4dG1lbnUgdG8gc2VwYXJhdGUgZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZ1bmN0aW9ucyB0byBhY2Nlc3MgYXR0cmlidXRlcyBpbiBIQ1IuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUuIFNlcGVyYXRlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzaGVsbHZpZXcgYmFja2dyb3VuZAoJY29udGV4dG1lbnUuCgoJKiBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZS4gQ29udGFpbnMgZnVuY3Rpb25zIG5vdCBpbiB0aGUgb2ZmaWNpYWwgaGVhZGVycyBidXQgd2lkZWx5Cgl1c2VkIGZyb20gb3RoZXIgZGxscy4KCgkqIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFgxMU9CSlMgYW5kIExJQk9CSlMgdG8gd2luZSBkZXBlbmRlbmNpZXMgKHdlIGNhbid0IGFkZCBBTFRfTElOSykuCgoJKiBNYWtlZmlsZS5pbjogTWFrZSBzdXJlIHdlIGJ1aWxkIHRvb2xzIGZpcnN0LgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3dwcm9jcy5zcGVjLCBtZW1vcnkvZ2xvYmFsLmMsIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWxheSBjb2RlIGZvciBXaW4xNiByZWdpc3RlciBmdW5jdGlvbnMgY29udmVydHMgYXJndW1lbnRzLgoJTmV3ICdpbnRlcnJ1cHQnIGtleXdvcmQgYWRkZWQgKGZvciBXaW4xNiBpbnRlcnJ1cHQgaGFuZGxlcnMpLgoJQWRhcHRlZCAuc3BlYyBmaWxlcyBhbmQgaW1wbGVtZW50YXRpb25zIG9mIHJlZ2lzdGVyIHJvdXRpbmVzLgoKCSogaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgbWlzYy9wcmludGRydi5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpZjE2MzIvZ2RpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+Cgl7U3RhcnR8RW5kfXtEb2N8UGFnZX0gZ28gdGhyb3VnaCBEQ2Z1bmNzLgoJSW1wbGVtZW50IHRoZXNlIGluIHRoZSBQb3N0U2NyaXB0IGRyaXZlci4KCUNoYW5nZSBQU0RSVl9Fc2NhcGUgdG8gdXNlIHRoZW0uCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdvcmsgYXJvdW5kICdsb2NhbCBleHRlcm4gZGVjbGFyYXRpb24gd2l0aCBhdHRyaWJ1dGUnIGdjYyBidWcuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50YXRpb24gb2YgU2V0RXZlbnROb3RpZmljYXRpb24gZm9yIHRoZSBtb3VzZSBkcml2ZXIuCgoJKiBvbGUvY29tcG9iai5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxldCBDb0NyZWF0ZUluc3RhbmNlIHVzZSBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hQQVRILgoKCSogaW5jbHVkZS9vbGUyLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgaW5jb21wbGV0ZSBwcm90by4KCgkqIHdpbmVkZWZhdWx0LnJlZzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcga2V5cyBuZXNzZXNhcnkgZm9yIHJ1bm5pbmcgdGhlIG5ldyBzaGVsbDMyLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVVzZSBHREkgQVBJcyB0byBhY2Nlc3MgYml0bWFwIGluZm8uCgoJKiBncmFwaGljcy9wc2Rydi9jbGlwcGluZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUmV3cm90ZSBQU0RSVl9TZXREZXZpY2VDbGlwcGluZyB0byB1c2UgR2V0UmVnaW9uRGF0YSBBUEkuCgpTYXQgSnVsIDI0IDEyOjIwOjI1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjZW11L21haW4uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL0F0dGljL2NhbGxiYWNrLmMsIG1pc2MvTWFrZWZpbGUuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVuaWZ5IHN0YXJ0dXAgc2VxdWVuY2UgZm9yIFdpbmUgYW5kIFdpbmVMaWIuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBtZW1vcnkvZ2xvYmFsLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeCBidWcgd2l0aCBwYXN0aW5nIFdpbmUgY2xpcGJvYXJkIGNvbnRlbnQgdG8gZXh0ZXJuYWwgYXBwbGljYXRpb25zLAoJYnkgc3RvcmluZyBjbGlwYm9hcmQgZGF0YSBvbiB0aGUgc2hhcmVkIHN5c3RlbSBoZWFwLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzogQWNoaW0gS2Fpc2VyIDxBY2hpbV9LYWlzZXJAdC1vbmxpbmUuZGU+CglEcmF3IGFuIGFkZGl0aW9uYWwgd2hpdGUgYml0IGZvciBlYWNoIGludmVydCBiaXQgb2YgYSBjdXJzb3IuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCVdoaWxlIGhhbmRsaW5nIHRoZSBYIEZvY3VzSW4gbWVzc2FnZSBpbiBtYW5hZ2VkIG1vZGUsIGlmIHRoZSB3aW5kb3cKCWhhcyBiZWVuIGRpc2FibGVkIHJldmVydCB0aGUgWCBmb2N1cyBiYWNrIHRvIHRoZSBsYXN0IGZvY3VzIHdpbmRvdy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFRSRUVWSUVXX0luc2VydEl0ZW1XLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIEV4dEVzY2FwZS4KCgkqIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyeWluZyB0byBmaXggcGFyYWxsZWwgbWFrZSBieSBkb2luZyBkaXJlY3Qgc3ViZGlyL3N1YmRpci5vIHJ1bGVzLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglTeWx2YWluIFN0LUdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBpbmNvbnNpc3RlbmN5IGluIGNvbmRpdGlvbnMgdGhhdCBkZXRlcm1pbmVzIGlmIGEgd2luZG93IHJlcXVpcmVzCglhIFdNIGJvcmRlci4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZvciBsYXJnZSBmb250IHNpemVzIGNhbGwgWExvYWRRdWVyeUZvbnQgd2l0aCBhIDEwMCBwaXhlbCBoaWdoIGZvbnQKCWFuZCByZXNjYWxlIHRoZSBtZXRyaWNzLgoKCSogbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2RjLmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgaGFuZGxpbmcgb2YgMzIgYml0IEFib3J0UHJvYy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2lubnQuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwcmVzc2VkIGNvbXBpbGVyIHdhcm5pbmcgYnkgdXNpbmcgdGhlICd1bnVzZWQnIGF0dHJpYnV0ZS4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9leHRlcm5hbC5jOgoJS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUFkZGVkIHV0aWxpdHkgZnVuY3Rpb24gdG8gaW52b2tlIGV4dGVybmFsIGRlYnVnZ2VyLgoKCSogbXVsdGltZWRpYS8uY3ZzaWdub3JlLCBtdWx0aW1lZGlhL3dpbm1tLnJjLCBtdWx0aW1lZGlhL3dpbm1tX0VuLnJjLCBtdWx0aW1lZGlhL3dpbm1tX0ZyLnJjLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBXSU5NTSByZXNvdXJjZXMuCgoJKiBtdWx0aW1lZGlhL0F0dGljL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIG9ic29sZXRlZCBtY2lzdHJpbmcuYy4KCUFkZGVkIHN1cHBvcnQgZm9yIHJlc291cmNlcy4KCgkqIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybiB2YWx1ZXMgZm9yIHNvbWUgbWVzc2FnZXMgaW4gRHJpdmVyUHJvYyAoTUNJX0dFVERFVkNBUFMgJgoJTUNJX1NUQVRVUykgZm9yIG1jaVNlbmRTdHJpbmcuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTcHJlYWQgdGhlIHVzZSBvZiBNTSBjcml0IHNlY3QuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgc29tZSBNQ0kgZnVuY3Rpb25zIHRvIG1jaS5jLgoJTm93IGxvYWRzIGVycm9yIG1lc3NhZ2VzIGZyb20gc3RyaW5nIHRhYmxlLgoJU3ByZWFkIHRoZSB1c2Ugb2YgTU0gY3JpdCBzZWN0LgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBwYXJzaW5nICYgc3RvcmluZyBvZiBjb21tYW5kIHRhYmxlcy4KCU1lcmdlZCBzb21lIE1DSSBmdW5jdGlvbnMgZnJvbSBtbXN5c3RlbS5jLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBzb21lIG5vIGxvbmdlciB1c2VkIHByb3RvdHlwZXMuCglBZGRlZCBjb21tYW5kIHRhYmxlcyB0byBNQ0kgc3RydWN0dXJlLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z2d5IHByb3RvdHlwZS4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6IEtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglBdm9pZCBjcmFzaGluZyBvbiBhIGJhZCBzeW1ib2wgYWRkcmVzcyBvZiAweDAwMDAuCgoJKiBtaXNjL3czMnN5cy5jOiBGaXhlZCBHZXRXMzJTeXNWZXJzaW9uMTYgcmV0dXJuIHR5cGUuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLCByZWxheTMyL3V0dGh1bmsuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpZjE2MzIvd3Byb2NzLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgTU9EVUxFX0dldFduZFByb2NFbnRyeTE2KCkuCglVc2UgMzItYml0IHdpbmRvdyBwcm9jZWR1cmVzIGluIENPTU1ETEcgaW5zdGVhZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGN1dCZwYXN0ZSBidWcuCgoJKiBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZCBhIGZldyBzdHVicywgc29tZSBDKysgY29tcGF0aWJpbGl0eSwgYW5kIGZpeCBhIGZldyB0eXBlcy4KCgkqIGluY2x1ZGUvaW5pdGd1aWQuaCwgb2xlL2d1aWQuYzogQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJRGVjbGFyZSBvbmx5IG9uZSBpbnN0YW5jZSBvZiBHVUlEX05VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB2YXJpb3VzIHByb2JsZW0gd2l0aCBJbWFnZUxpc3RfRHJhdy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFN0ZXBoYW5lIEx1c3NpZXI8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglSZS1lbmFibGUgdGhlIG93bmVyIHdpbmRvdyBpbiB0aGUgRW5kRGlhbG9nKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIG5vdGlmaWNhdGlvbnMuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbHdheXMgcmV0cmlldmUgQ2FsbG91dCByb3V0aW5lcyB1c2luZyBHZXRQcm9jQWRkcmVzcygpLgoKCSogd2luZG93cy9kZWZ3bmQuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglTZW5kIFdNX0NPTlRFWFRNRU5VIG9uIFdNX1JCVVRUT05VUCwgbm90IFdNX1JCVVRUT05ET1dOLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTGV0IHRocm91Z2ggbW9yZSBmbGFncyB0byBFbnVtUHJpbnRlcnMuCglGaXhlcyBmb3IgR2V0UHJpbnRlci9HZXRQcmludGVyRHJpdmVyLgoKCSogZ3JhcGhpY3MvcHNkcnYvY29sb3IuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHN0dXBpZCBgcnViYmlzaCBhdCBlbmQgb2YgJSVUaXRsZScgYnVnLgoJRG9uJ3QgY29tcGxhaW4gYWJvdXQgcGFsZXR0ZSByZWxhdGl2ZSBSR0JzLgoJSWYgb3V0cHV0IHBhcmFtIHRvIENyZWF0ZURDIGlzIE5VTEwgZGVmYXVsdCB0byBgTFBUMTonIC0gSGFjay4KCkZyaSBKdWwgMjMgMTk6MzM6MjQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZXR0ZXIgZGV0ZWN0aW9uIG9mIE9wZW5HTC4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIG1pc2MvQXR0aWMvY2FsbGJhY2suYywgdG9vbHMvYnVpbGQuYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogUmV2ZXJ0ZWQgQ2FsbFRvMTYgcm91dGluZXMgdG8gU1REQ0FMTCBjb252ZW50aW9uLgoKCSogb2JqZWN0cy9mb250LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0cmluZyB0byBHZXRUZXh0RXh0ZW50UG9pbnQgaXMgbm90IG5lY2Vzc2FyaWx5IDAgdGVybWluYXRlZC4KCUZpeCBmdW5jdGlvbiBuYW1lIGAzMidzIGluIGNvbW1lbnRzIC0gQVBJIG5hbWluZyBtYWRuZXNzIG1ha2VzIHRoaXMKCXdvcnRod2hpbGUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZ3JhcGhpY3MvZHJpdmVyLmMsIGdyYXBoaWNzL3BzZHJ2L1JFQURNRSwgaW5jbHVkZS93aW5zcG9vbC5oLCByZWxheTMyL0F0dGljL3dpbnNwb29sLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglFbnVtSm9icyBzdHViLgoJVXBkYXRlIGdyYXBoaWNzL3BzZHJ2L1JFQURNRS4KCUFkZCB3YXJuaW5ncyB0byBEUklWRVJfR2V0RHJpdmVyTmFtZS4KCgkqIHdpbmRvd3MvbWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBiYWQgcHRyIG9jY3VycmVuY2UgaW4gdGhpcyBjbGFzcyBXbmRQcm9jLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBBZGRlZCBhIG5ldyBvcHRpb24gJ25veHNobScKCS0gQWRkZWQgYSAxNmJwcCAtPiAzMiBicHAgY29udmVyc2lvbiBmdW5jdGlvbgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNoYW5nZSBjb2xvciBncmF5IHRleHQgdG8gMTI4IDEyOCAxMjggZm9yIHdpbjl4IGxvb2suCgpUdWUgSnVsIDIwIDE1OjEzOjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYzoKCURvIG5vdCBvdXRwdXQgdGV4dCBpbiBPdXRwdXREZWJ1Z1N0ckFXIHdoZW4gbm90IGJlaW5nIGRlYnVnZ2VkCgoJKiB3aW5kb3dzL21kaS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCU1ESURlc3Ryb3lDaGlsZDogTURJIHdpbmRvdyBtZW51IGl0ZW0gd2FzIGRlbGV0ZWQgb25seSBpZiB0aGUgY3VycmVudAoJZGVzdHJveWVkIGNoaWxkIHdhcyBhY3RpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlc2V0IGRpc2FibGVkIHN0eWxlIGZvciB0aGUgZGlhbG9nIGJveGVzIHNldCBvbiBwcm9wZXJ0eSBwYWdlcy4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvQ0hBTkdFUzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEdlbmVyYWxpemVkIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIDIgYW5kIDQgYnl0ZSBpbnRlZ2VycyBzbGlnaHRseSB0aHJvdWdoCgkgIGEgbmV3IHBhcnNlciBzdGF0ZS4gVGhlIGlzIG5vdyBhIHdhcm5pbmcgd2hlbiBhIDIgYnl0ZSBpbnRlZ2VyIGlzIGxhcmdlcgoJICB0aGFuIDE2IGJpdCAoYW5kIGlzIHRydW5jYXRlZCkuCgktIEZpeGVkIGEgY291cGxlIG9mIGNvc21ldGljIHRoaW5ncyBpbiB0aGUgRExHSU5JVCBzdHVmZiBzbyB0aGF0IGR1bXBpbmcgb2YKCSAgdGhpcyB0eXBlIHdpbGwgd29yayBhcyBleHBlY3RlZC4KCS0gQWRkZWQgZ2VuZXJhbGl6ZWQgbGFuZ3VhZ2UvdmVyc2lvbi9jaGFyYWN0ZXJpc3RpY3Mgc3VwcG9ydCB0byB0aGUgRExHSU5JVAoJICByZXNvdXJjZSB0eXBlLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgRExHSU5JVCByZXNvdXJjZS10eXBlLgoJLSBBZGRlZCBzdHJpbmcgY29udGludWF0aW9uIGFuZCBlbWJlZGRlZCBxdW90aW5nLgoJLSBBZGRlZCBudW1lcmljIElEcyBmb3IgaWNvbnMgaW4gY29udHJvbHMuCgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIEJ1Z2ZpeDogRGlzdGluZ3Vpc2ggYmV0d2VlbiAyIGFuZCA0IGJ5dGUgaW50ZWdlcnMgaW4gUkNEQVRBLgoKU3VuIEp1bCAxOCAxODo0MjoyOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9BdHRpYy9zdHJpbmcuYywgbWlzYy9NYWtlZmlsZS5pbjoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCVJlbW92ZSBzdHJpbmcuYyBiZWNhdXNlIGFsbCBvZiBpdHMgZnVuY3Rpb25zIHdlcmUgbW92ZWQgdG8gY3J0ZGxsLmMKCXdoZXJlIHRoZXkgYmVsb25nZWQuCgoJKiB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wcmVwcm9jLmMsIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHdpdGggR05VIEMncyAtSS0gb3B0aW9uLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdvcmsgYXJvdW5kIGdjYyBzaWcxMSBmYXVsdC4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgcm91bmRpbmcgaW4gTXVsRGl2LgoKCSogZ3JhcGhpY3MvcHNkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3BzZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaW5jbHVkZS9wc2Rydi5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCS0gaW1wbGVtZW50YXRpb24gb2YgU2V0RGV2aWNlQ2xpcHBpbmcKCS0gY29vcmRpbmF0ZSBzeXN0ZW0gb3JpZ2luIGZpeAoKCSogd2luMzIva2VybmVsMzIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXb3JrLWFyb3VuZCBmb3IgY29tcGlsZXIgYnVnLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIEltcGxlbWVudGF0aW9uIG9mIHNpbXBsZSBjb21jdGwzMiB2NS4wIGNoYW5nZXMuCgktIFRWTV9TT1JUQ0hJTERSRU5DQiBhbHNvIGFjY2VwdHMgVFZJX1JPT1QgYXMgYSB2YWxpZCBoUGFyZW50LgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBwb2ludGVyIHZhbGlkYXRpb24gYW5kIGFkZGl0aW9uYWwgc2FuaXR5IGNoZWNrIHRvIElzVmFsaWRTaWQoKS4KCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzogRGVubmlzIEJqfHJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCVNtYWxsIGZpeCBpbiBVSVRPT0xTOTVfRHJhd1JlY3RFZGdlKCkuCglBbHNvIGEgZml4IHRvIGRyYXcgc2Nyb2xsYmFyLWJ1dHRvbnMgbW9yZSBsaWtlIGluIHdpbjl4LgoKCSogd2luZG93cy9wYWludGluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluIFdJTl9VcGRhdGVOQ1JnbiwgZG8gbm90IHNlbmQgaW4gV01fTkNQQUlOVCBhIHJlZ2lvbiB0aGF0IGlzIHVzZWQKCWFmdGVyd2FyZHMsIGJ1dCBhIGNvcHkgb2YgaXQuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoZWNrIGJldHRlciB0aGF0IGhhbmRsZXMgYXJlIGFjdHVhbCBoYW5kbGVzIHRvIGEgcmVnaW9uLgoKCSogd2luZG93cy9kY2UuYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJU3RvcCBEQ0VfR2V0VmlzUmVjdCBkZXJlZmVyZW5jaW5nIGEgbnVsbCB3bmRQdHIuCgoJKiBjb25maWd1cmUuaW4sIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBNYWtlLnJ1bGVzLmluLCBSRUFETUUsIGNvbmZpZ3VyZToKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCVVwZGF0ZWQgUkVBRE1FIGFuZCBtYW4gcGFnZS4KCVNwbGl0IGRvY3VtZW50YXRpb24gZm9yIHdpbmUuY29uZiBpbnRvIG5ldyB3aW5lLmNvbmYoNSkgbWFucGFnZS4KCgkqIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2NsaXBib2FyZC5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9vbGVjbGkuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE9MRSBDbGlwYm9hcmQgQVBJLgoKCSogd2luZG93cy93aW5wb3MuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglWYWxpZGF0ZSB0aGUgcGFyZW50IHdpdGggdGhlIGNoaWxkIHdpbmRvdyBjbGllbnQgcmVjdGFuZ2xlIHdoZW4gdGhlCglwYXJlbnQncyB1cGRhdGUgcmVnaW9uIGlzIG5vdCBlbXB0eS4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCURlbGF5IFdNX05DUEFJTlQgbWVzc2FnZSB1bnRpbCB0aGUgInBhaW50ZXIncyBhbGdvcml0aG0iIGtpY2tzIGluLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgZmFrZSBXTV9MQlVUVE9OVVAgbWVzc2FnZS4KCgkqIGluY2x1ZGUvd2ludmVyc2lvbi5oLCBtaXNjL3ZlcnNpb24uYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgV2luOTguCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglNYWNybyBkZWZpbml0aW9ucyB1c2VkIFNORE1TRyBpbnN0ZWFkIG9mIFNlbmRNZXNzYWdlW0FXXS4gQmFkLgoKCSogbWlzYy9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJZGVidWdfKHNub29wfHJlbGF5KV8oZXhjbHVkZXxpbmNsdWRlKWxpc3QgPT4gZml4ZWQgYWxsb2NhdGlvbiwgbW9kdWxlcwoJYXJlIG5vdyBzdG9yZWQgdXBwZXJjYXNlLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBCU19JQ09OIHN0eWxlLgoKCSogd2luZG93cy9kaWFsb2cuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDcmVhdGVEaWFsb2dQYXJhbUEgc2hvdWxkIG5vdCBjYWxsIENyZWF0ZURpYWxvZ1BhcmFtVywgYmVjYXVzZQoJdGhhdCdkIGNyZWF0ZSBhIGRpYWxvZyBib3ggd2l0aCBhIFVuaWNvZGUgZGlhbG9nIHByb2NlZHVyZS4uLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IERlbm5pcyBCanxya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglXaW45eCBsb29rICYgZmVlbCBvbiBzY3JvbGxiYXJzLgoKCSogZ3JhcGhpY3MvcHNkcnYvUkVBRE1FLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGluY2x1ZGUvcHNkcnYuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW50cm9kdWNlZCBhIFtwc2Rydl0gc2VjdGlvbiBpbiB3aW5lLmNvbmYgd2l0aCBhIHBwZGZpbGUgdmFsdWUKCXNwZWNpZnlpbmcgdGhlIHBhdGggYW5kIG5hbWUgb2YgdGhlIFBQRCBmaWxlLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYywgaW5jbHVkZS91cGRvd24uaDoKCVN5bHZhaW4gU3QtR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSB1cGRvd24gYnVkZHkgd2luZHByb2Mgc3ViY2xhc3NpbmcgZm9yIHRoZQoJaGFuZGxpbmcgb2Yga2V5Ym9hcmQgdXAgYW5kIGRvd24gYXJyb3cuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglVcGRhdGVkIGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCByZW5hbWVkIGhlYWRlci4KCgkqIG1pc2Mvd2luc29jay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZSBuZXRpbmV0L3RjcC5oLCBmb3IgVENQX05PREVMQVkuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJR2V0SWNvbiBidWcgZml4LgoKVGh1IEp1bCAxNSAxNjowOTowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIFdJTkFQSSBmb3IgRW50cnlBZGRyUHJvYy4KCgkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCU1pbm9yIGJ1ZyBmaXhlcyBpbiBEZGVOYW1lU2VydmljZSwgYWxzbyBjaGFuZ2VzIHRvIG1vdmUgdG93YXJkcwoJcHJvY2Vzcy1zYWZlIGNvZGUuCgoJKiBjb250cm9scy9idXR0b24uYzogRGVubmlzIEJqfHJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCVdpbjl4IGxvb2sgJiBmZWVsIG9uIGJ1dHRvbnMgYW5kIGEgZml4IGZvciBvd25lcmRyYXduIGJ1dHRvbnMKCShiYWNrZ3JvdW5kIHNldCB0byBDT0xPUl9CVE5GQUNFKS4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJR2xvYmFsU21hcnRQYWdlVW5sb2NrKCkgc3R1YiBhZGRlZC4KCgkqIG1pc2NlbXUvQXR0aWMvZW11bGF0ZS5jLCBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgdG9vbHMvYnVpbGQuYywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbjg3ZW0vLmN2c2lnbm9yZSwgZGxscy93aW44N2VtL01ha2VmaWxlLmluLCBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jLCBncmFwaGljcy93aW4xNmRydi9NYWtlZmlsZS5pbiwgaWYxNjMyL01ha2VmaWxlLmluLCBtZW1vcnkvaW5zdHIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHBvc2l0aW9uLWluZGVwZW5kZW50IGNvZGUgaW4gYXNzZW1ibHkgZ2x1ZSB3aGVuIGJ1aWxkaW5nIC5zby4KCUluY2x1ZGUgaWYxNjMyLyBhbmQgZ3JhcGhpY3Mvd2luMTZkcnYvIGludG8gV2luZUxpYi4KCU1vdmUgbWlzY2VtdS9lbXVsYXRlLmMgaW50byBkbGxzL3dpbjg3ZW0vLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCB3YXkgb2YgYWxsb2NhdGlvbiBvcGVuIG1jaSBkcml2ZXJzIChhcnJheSA9PiBsaXN0KTsgdGhpcyBsaXN0CglpcyBub3cgc3RvcmVkIG9uIGEgcGVyIHByb2Nlc3MgYmFzaXMuCgoJKiBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBmaXhlZCBzaXplIGFycmF5IHRvIHN0b3JlIHNwZWNpZmljIGRhdGEgKG5vdyB1c2luZwoJbWNpKFNldHxHZXQpRHJpdmVyRGF0YSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhKS4KCU1ha2UgdXNlIG9mIGRlZmF1bHQgZGVidWd0b29scy5oIGNoYW5uZWwuCglBZGRlZCBDQUxMQkFDSyBhdHRyaWJ1dGUgdG8gRHJpdmVyUHJvYy4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCB3YXkgb2YgYWxsb2NhdGlvbiBvcGVuIG1jaSBkcml2ZXJzIChhcnJheSA9PiBsaXN0KS4KCUZpcnN0IHZhbGlkIElEIGZvciBtY2kgZGV2aWNlcyBpcyBub3cgMSAoc29tZSBwcm9ncyB3ZXJlIHRlc3RpbmcgdGhpcwoJdmFsdWUpLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgbWNpIGNvbW1hbmQgdGFibGUgcmVzb3VyY2VzLgoJSGFuZGxlZCBjbG9zaW5nIG9uIE1DSV9BTEwuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGZpeGVkIHNpemUgYXJyYXkgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSAobm93IHVzaW5nCgltY2koU2V0fEdldClEcml2ZXJEYXRhIHRvIHN0b3JlIHNwZWNpZmljIGRhdGEpLgoJRGVmZXJyZWQgb3BlbmluZyBvZiBsb3ctbGV2ZWwgZGV2aWNlIHVudGlsIHBsYXkgaXMgcmVxdWVzdGVkLgoKCSogbXVsdGltZWRpYS9BdHRpYy9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm4gdmFsdWUgZm9yICdvcGVuJyBjb21tYW5kLgoJQ2hhbmdlZCB3YXkgb2YgYWxsb2NhdGlvbiBvcGVuIG1jaSBkcml2ZXJzIChhcnJheSA9PiBsaXN0KS4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZml4ZWQgc2l6ZSBhcnJheSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhIChub3cgdXNpbmcKCW1jaShTZXR8R2V0KURyaXZlckRhdGEgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSkuCglGaXhlZCBtbWlvIGNodW5rIGxvb2t1cCBvbiBvZGQgc2l6ZSAnZm10ICcgY2h1bmtzLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVW5pZm9ybWl6ZWQgdXNlIG9mIGZkIHRvIG1pZGkgZGV2aWNlLgoJTm93IGFsbG9jYXRpbmcgbWVtb3J5IG9uIHN5c3RlbSBoZWFwLgoJRml4ZWQgYnVnIHdoZW4gc3RvcHBpbmcgYWxsIG5vdGVzLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvc21ldGljIGZpeGVzLgoJQ2hhbmdlZCB3YXkgb2YgYWxsb2NhdGlvbiBvcGVuIG1jaSBkcml2ZXJzIChhcnJheSA9PiBsaXN0KS4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIG1jaSBjb21tYW5kIHRhYmxlIHJlc291cmNlcy4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBjYWxsaW5nIG1tIHRpbWVycyBjYWxsYmFja3Mgd2l0aCBtbSB0aW1lciBjcml0IHNlY3QgbG9ja2VkLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVSUk9SX01PUkVfREFUQSByZXF1aXJlcyB0byB3cml0ZSB0aGUgbmVlZGVkIG51bWJlciBvZiBieXRlcyBpbnRvIHRoZQoJbHBjY2hYIHZhbHVlICh2ZXJpZmllZCBhZ2FpbnN0IE5UMy41MSBhZHZhcGkzMi5kbGwpLgoKCSogaW5jbHVkZS93aW5udC5oLCB3aW4zMi9kZXZpY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc29tZSBDT05URVhUODYgdnMuIENPTlRFWFQgbWlzbWF0Y2hlcy4KCgkqIGluY2x1ZGUvbmVleGUuaCwgbG9hZGVyL25lL3NlZ21lbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgMzItYml0IE5FIGNvZGUgc2VnbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXggYSBoYW5nIHdoZW4gd2UgcHJvY2VzcyBXTV9TVFlMRUNIQU5HRUQuCglTbWFsbCBvcHRpbWl6YXRpb24gaW4gVFJFRVZJRVdfRHJhd0l0ZW0uCglGaXggZGVidWdnaW5nIGNyYXNoIGluIFRSRUVWSUVXX0V4cGFuZC4KCk1vbiBKdWwgMTIgMTM6NDY6MzggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBwcm90b3R5cGUgZm9yIElMRmluZENoaWxkKCkuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGxvYWRlci9kb3MvZG9zbW9kLmMsIG1pc2MvbmV0d29yay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb21waWxlciB3YXJuaW5ncyBmaXguCgoJKiBtaXNjL2NvbW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEdW1iIGZpeGVzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBidWdzIGludHJvZHVjZWQgYnkgJ3JlZ2lzdGVyJyBhbmQgJ3JldHVybicgZnVuY3Rpb24gY2hhbmdlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgRGlyZWN0RHJhd1N1cmZhY2U6OkZsaXAsIGRvIG5vdCBjaGFuZ2UgZmxhZ3MsIGV4Y2hhbmdlIHRoZSBsb3cKCWxldmVsIHBoeXNpY2FsIHN1cmZhY2VzICh2ZXJpZmllZCBmb3IgWExJQiB3aXRoIFdDIFByb3BoZWN5KS4KClN1biBKdWwgMTEgMTc6MjA6MDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIG1pc2Mvc3lzdGVtLmMsIG1pc2MvdG9vbGhlbHAuYywgbWlzYy93MzJzeXMuYywgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2tlcm5lbDMyLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2xvY2FsLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIva2V5Ym9hcmQuc3BlYywgaWYxNjMyL3N5c3RlbS5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3Rvb2xoZWxwLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIGlmMTYzMi93MzJzeXMuc3BlYywgaWYxNjMyL2R1bW15LmM6CglUYWtlIGFkdmFudGFnZSBvZiB0aGUgbmV3IHJlZ2lzdGVycyBzYXZlZCBpbiB0aGUgU1RBQ0sxNkZSQU1FIHRvIHR1cm4KCXNvbWUgJ3JlZ2lzdGVyJyBmdW5jdGlvbnMgaW50byBub3JtYWwgZnVuY3Rpb25zLgoJUmVtb3ZlZCB0aGUgZmV3IHJlbWFpbmluZyAncmV0dXJuJyBmdW5jdGlvbnMgdG8gc2ltcGxpZnkgcmVsYXkKCWhhbmRsaW5nLgoKCSogaXBjL0F0dGljL2hhc2hfdGVzdC5jLCBpcGMvQXR0aWMvcnVuX3Rlc3RzLCBpcGMvQXR0aWMvc2htX2Jsb2NrLmMsIGlwYy9BdHRpYy9zaG1fZnJhZ21lbnQuYywgaXBjL0F0dGljL3NobV9mcmFnbWVudF90ZXN0LmMsIGlwYy9BdHRpYy9zaG1fbWFpbl9ibGsuYywgaXBjL0F0dGljL3NobV9zZW1hcGguYywgaXBjL0F0dGljL3NobV9zZW1hcGhfdGVzdC5jLCBpcGMvQXR0aWMvd2luZV90ZXN0X3N0dWIuYywgbG9hZGVyL3NpZ25hbC5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvZGRlbWwuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9BdHRpYy9kZGVfYXRvbS5oLCBpbmNsdWRlL0F0dGljL2RkZV9tZW0uaCwgaW5jbHVkZS9BdHRpYy9kZGVfcHJvYy5oLCBpbmNsdWRlL0F0dGljL3NobV9ibG9jay5oLCBpbmNsdWRlL0F0dGljL3NobV9mcmFnbWVudC5oLCBpbmNsdWRlL0F0dGljL3NobV9tYWluX2Jsay5oLCBpbmNsdWRlL0F0dGljL3NobV9zZW1hcGguaCwgaW5jbHVkZS9kZGUuaCwgaXBjL0F0dGljLy5jdnNpZ25vcmUsIGlwYy9BdHRpYy9NYWtlZmlsZS5pbiwgaXBjL0F0dGljL1JFQURNRSwgaXBjL0F0dGljL1RFU1RfRlJBR01FTlQuc3RkLCBpcGMvQXR0aWMvYml0X2FycmF5LmMsIGlwYy9BdHRpYy9iaXRfYXJyYXlfdGVzdC5jLCBpcGMvQXR0aWMvZGRlLnRleCwgaXBjL0F0dGljL2RkZV9hdG9tLmMsIGlwYy9BdHRpYy9kZGVfYXRvbV90ZXN0LmMsIGlwYy9BdHRpYy9kZGVfbWVtLmMsIGlwYy9BdHRpYy9kZGVfbWVtX3Rlc3QuYywgaXBjL0F0dGljL2RkZV9wcm9jLmMsIGlwYy9BdHRpYy9kZGVfcHJvY190ZXN0LmMsIGlwYy9BdHRpYy9nZW5lcmljX2hhc2guYywgaXBjL0F0dGljL2dlbmVyaWNfaGFzaC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHRoZSBvbGQsIGhpc3RvcmljYWwgYW5kIG5vIGxvbmdlciB3b3JraW5nIElQQyBzdXBwb3J0LgoKCSogaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgbWlzYy9BdHRpYy9jYWxsYmFjay5jLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgdG9vbHMvYnVpbGQuYywgTWFrZS5ydWxlcy5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kdWxhcml6ZWQgQ2FsbEZyb20vVG8xNiByb3V0aW5lcy4gIEFkYXB0ZWQgZGVwZW5kZW50IHJvdXRpbmVzLAoJMTYtYml0IHNub29wL3JlbGF5IGRlYnVnZ2luZywgYW5kIG1ha2UgcnVsZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXZlcnQgbGFzdCBjaGFuZ2UgaW4gd2luZG93IGFjdGl2YXRpb24gb24gbW91c2UgY2xpY2suCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXhlZCBhIGNhc2Ugd2hlbiBHbG9iYWxTaXplIGRpZCBub3QgcmV0dXJuIHplcm8gYWZ0ZXIgYW4gZXJyb3IuCgpTYXQgSnVsIDEwIDEzOjE2OjU2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvc29ja2V0LmM6IEhvd2FyZCBBYnJhbXMgPGhvd2FyZEBjcy5ucHMubmF2eS5taWw+CglSZW5hbWVkIHN0YXRpYyBnbG9iYWwgdmFyaWFibGUgJ2lvdmVjJyB0byAnbXlpb3ZlYycuCgoJKiB3aW5kb3dzL2RpbnB1dC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2Mvd2luc29jay5jLCBtdWx0aW1lZGlhL2pveXN0aWNrLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2ZpbGUuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUhvd2FyZCBBYnJhbXMgPGhvd2FyZEBjcy5ucHMubmF2eS5taWw+CglBZGRlZCBjaGVja3MgZm9yIHN5cy9lcnJuby5oLCBzeXMvc2lnbmFsLmggYW5kIHN5cy9tbWFuLmguCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNyZWF0ZSBkaWFsb2cgd2luZG93IHVzaW5nIENyZWF0ZVdpbmRvd0V4MTYvVyBkZXBlbmRpbmcgb24gdGVtcGxhdGUKCXR5cGUsIG5vdCBkaWFsb2cgcHJvY2VkdXJlIHR5cGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU1hZGUgSVNoZWxsRm9sZGVyOjpmblBhcnNlRGlzcGxheU5hbWUgcmV0dXJuIGEgcmVsYXRpdmUgcGlkbC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9tb250aGNhbC5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpcnN0IHRyeSBhdCB0aGUgbW9udGggY2FsZW5kYXIgY29tbW9uIGNvbnRyb2wuIE1haW4gZmVhdHVyZXMKCWJhc2ljYWxseSBPSy4KCgkqIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgaW5jbHVkZS93aW5zcG9vbC5oLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIEdldFByaW50ZXJBIGFuZCBHZXRQcmludGVyRHJpdmVyQS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgQk5fQ0xJQ0tFRCBub3RpZmljYXRpb24gaW4gV01fU0VURk9DVVMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBpbmNsdWRlL2RvY29iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIHJlbGF5MzIvQXR0aWMvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU3RyVG9PbGVTdHJOLgoJRml4ZWQgY3Jhc2ggaW4gU2hlbGxFeGVjdXRlRXguCglJbXBsZW1lbnRlZCBTSFJlZ09wZW5LZXlBLCBTSFJlZ1F1ZXJ5VmFsdWVFeEEsIFN0clRvT2xlU3RyW0F8V10uCglTdHVicyBmb3IgRG9FbnZpcm9ubWVudFN1YnN0W0F8V10sIFBhdGhQcm9jZXNzQ29tbWFuZFtBfFddLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUlTdHJlYW0gaW50ZXJmYWNlIGZvciBmaWxlIGFjY2Vzcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIGR1cmluZyBzZWNvbmQgRExMX1BST0NFU1NfREVUQUNIIGlmIHRoZSBkbGwKCXJlZmNvdW50IHJlYWNoZWQgemVybyBhZnRlciB0aGUgc2Vjb25kIG9uZSAobWVtb3J5IGZyZWVkIHR3aWNlKS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNvbWUgbW9yZSBwaWRsLXR5cGVzLgoJSW1wbGVtZW50YXRpb24gb2YgSUxJc1BhcmVudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29tcGxldGVseSByZXdyaXR0ZW4uIElQZXJzaXN0U3RyZWFtIGludGVyZmFjZSBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglETExHZXRDbGFzc09iamVjdC9DbGFzc2ZhY3Rvcnk6IGNyZWF0ZSBvYmplY3RzIGJ5IENMU0lEIG5vdCBJSUQuCgoJKiBtaXNjL21haW4uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGV4aXQoKSByZXBsYWNlZCBieSBFeGl0UHJvY2VzcygpLgoKCSogbWVtb3J5L2xvY2FsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBjb3JyZWN0bHkgY29wZSB3aXRoIGVuZCA+IDB4ZmZmZS4KCgkqIGxpYnJhcnkvd2luZXN0dWIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBFeGl0UHJvY2VzcygpIGFmdGVyIFdpbk1haW4oKSByZXR1cm5zLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXByb3ZlZCBiZWhhdmlvdXIgb2YgR2V0TW9kdWxlSGFuZGxlMTYgdy5yLnQgZHVtbXkgbW9kdWxlcy4KCURvbid0IHRyeSB0byBjYWxsIFdFUCBvZiBkdW1teSBtb2R1bGVzIGluIEZyZWVMaWJyYXJ5MTYoKS4KCgkqIGluY2x1ZGUvd2lucmVnLmgsIG1pc2MvcmVnaXN0cnkuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIGBjb25zdCdzIHRvIHNvbWUgcmVnaXN0cnkgQVBJIGZ1bmN0aW9ucy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIGNvdXBsZSBvZiBEaXJlY3RYIENMU0lEIGVudHJpZXMuIFRoaXMgbWFrZXMgVW5yZWFsIGNvbXBsZXRlbHkKCWluZGVwZW5kZW50IG9mIGEgd2luZG93cyBpbnN0YWxsYXRpb24uCgoJKiBvbGUvb2xlMm5scy5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUdldFRpbWVGb3JtYXQoKSBzaG91bGQgcmV0dXJuIExvY2FsVGltZSBub3QgU3lzdGVtVGltZS4KCgkqIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL1JFQURNRSwgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglGT1IgYW5kIElGIGNvbW1hbmRzIGFkZGVkLgoJTU9WRSBjb21tYW5kIGFkZGVkLCBidXQgbm8gd2lsZGNhcmQgc3VwcG9ydC4KCVJlZGlyZWN0aW9uIGFkZGVkLgoJRml4ZWQgVElNRSAod2FzIHJlcG9ydGluZyBpbiBHTVQpLgoJTW9yZSBoZWxwIHRleHQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVNvbWV0aW1lcyB0aGUgdGV4dCBvbiBhIHRhYiBjb250cm9sIGdvdCB0cnVuY2F0ZWQuCgoJKiBjb250cm9scy9jb21iby5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBoZWlnaHQgb2YgdGhlIGRyb3BwZWQgbGlzdCB3aGVuIHRoZXJlIGFyZSBmZXcgaXRlbXMgaW4gdGhlCglsaXN0LgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBhbGwgRVZFTlRfU3luY2hyb25pemUoIEZBTFNFICkgY2FsbHM7IHVzZSBhIHBlcmlvZGljIGNhbGxiYWNrCgljYWxsaW5nIFhGbHVzaCgpIGluc3RlYWQuCgoJKiBpbmNsdWRlL3BzZHJ2LmgsIGdyYXBoaWNzL3BzZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9wc2Rydi9iaXRibHQuYywgZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3BzZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIHBhdHRlcm5lZCBicnVzaGVzIChsZXZlbCAyIFBvc3RTY3JpcHQgb25seSkuCglTaW1wbGUgUGF0Qmx0IGZvciBQQVRDT1BZLCBXSElURU5FU1MgYW5kIEJMQUNLTkVTUy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUltcGxlbWVudGF0aW9uIG9mIFRWTV9TT1JUQ0hJTERSRU4uIE1hc3NhZ2VkIFRWTV9TT1JUQ0hJTERSRU5DQiBhIGJpdAoJdG8gdXNlIHRoZSBzYW1lIGNvZGUgcGF0aC4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IEluaXRUYXNrKCkgdG8gd29yayBpZiBER1JPVVAgd2FzIG1hbnVhbGx5IHJlc2l6ZWQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvQXR0aWMvYWR2YXBpMzIuc3BlYzoKCUlhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHN0dWIgZm9yIFNldFRocmVhZFRva2VuKCksIHJlcXVpcmVkIGJ5IE9mZmljZSAyMDAwLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQ09NTURMRyBob29rIHByb2NlZHVyZXMgd2VyZSBub3QgQ0FMTEJBQ0suCgoJKiBvbGUvc3RnX3N0cmVhbS5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUl0IGlzIHBvc3NpYmxlIGZvciBhIHN0cmVhbSB0byBoYXZlIGJvdGggc21hbGwgYmxvY2sgYW5kIGJpZyBibG9jawoJY2hhaW4gYXMgTlVMTC4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIHN0cmluZyBjb21wYXJlIGNhc2UgaW5zZW5zaXRpdmUgaW4gR2V0TW9kdWxlSGFuZGxlMTYoKSBhcyBhCglxdWljayBmaXggZm9yIFdpbldvcmQgNi4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBzdHViIGZvciBXTmV0R2V0VW5pdmVyc2FsTmFtZVtBfFddLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggZHVlIHRvIGludmFsaWQgR0RJX09iai4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCBkdWUgdG8gaW52YWxpZCBwb2ludGVyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSnVsICA0IDE2OjA5OjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzLyouYywgb2xlLyouYywgZmlsZXMvKi5jLCBtdWx0aW1lZGlhLyouYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnJlZy5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIG9uIGFuIGltcGxlbWVudGF0aW9uIG9mIFdpbjY0IGZvciB1c2Ugb24gNjQgYml0IHBsYXRmb3Jtcy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJV2luZG93cyBzaG91bGQgYmUgYWN0aXZhdGVkIGluIHRoZXNlIGNhc2VzOgoJMS0gd2hlbiB3ZSBjbGljayBvbiBub24gYWN0aXZlIHdpbmRvdy4KCTItIHdoZW4gd2UgY2FuY2VsIGEgbW92aW5nIG9yIHJlc2l6aW5nIG9mIGEgbm9uIGFjdGl2ZSB3aW5kb3cuCgoJKiBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9yczoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBzYW1wbGUgd2luZS5jb25mLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBjb2RlIHRvIHRoZSBYMTEgZHJpdmVyLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci9yZXNvdXJjZS5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUZpeGVkIERlc3Ryb3lBY2NlbGVyYXRvclRhYmxlIGFuZCBpbXBsZW1lbnRlZCBDcmVhdGVBY2NlbGVyYXRvclRhYmxlVy4KCgkqIHdpbmRvd3Mvd2luLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVdJTl9GaW5kV2luZG93OiB1c2UgR2V0RXhlcHRyKHBXbmQtPmhJbnN0YW5jZSkgZm9yIENMQVNTX0ZpbmRDbGFzc0J5QXRvbS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGNoZWNrIGZvciB3aGV0aGVyIHRvIGNhbGwgU2V0V2luZG93UG9zIHdoZW4gc2hvd2luZyBhIHdpbmRvdwoJc2Nyb2xsIGJhci4KCgkqIG9sZS90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIGNvbXBsZXRlIGxjaWQgb3IganVzdCB0aGUgcHJpbWFyeSBsYW5ndWFnZSBpZCBpbiB0aGUKCXJlZ2lzdHJ5IGxvb2t1cHMgKGZpeGVzIG9uZSBGaXJzdENsYXNzQ2xpZW50IDMyIHByb2JsZW0pLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFBlciDFbmdzdHL2bSA8cGFuZ0BtYm94MzA0LnN3aXBuZXQuc2U+CglGaXhlZCBhIHByb2JsZW0gd2l0aCBhcHBzIHRoYXQgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9uCglXTV9NT1VTRUFDVElWQVRFIG1lc3NhZ2UgKG1haW4gd2luZG93IHdhcyBub3QgYWN0aXZhdGVkKS4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdoZW4gZW51bWVyYXRpbmcgcmVzb3VyY2UsIG9ubHkgdXNlIHRoZSBsb3dlciAzMSBiaXQgb2YgdGhlIG5hbWUgYXMKCXRoZSBvZmZzZXQgKGZvciB0aGUgaGlnaGVzdCBiaXQgaXMgJzEnKS4gU2hvdWxkIGZpeCB3aW5lLW5ldC8yNTcuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCBkbGxzL250ZGxsL3J0bC5jLCBtaXNjL3dzcHJpbnRmLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlcyBmb3IgY29tcGlsZSBvbiBub24tSW50ZWwgcGxhdGZvcm1zLgoKCSogZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgaW5jbHVkZS93aW5zdmMuaCwgaW5jbHVkZS93dHlwZXMuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQvbW92ZWQvYWRkZWQgbWlzc2luZy93cm9uZyBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2ludGVybmF0aW9uYWxpc2F0aW9uLCBwcm9ncmFtcy9wcm9nbWFuL0RhLnJjLCByZXNvdXJjZXMvc3lzcmVzX0RhLnJjOgoJSGVucmlrIE9sc2VuIDxoZW5yaWtAaWFlc3RlLmRrPgoJQ2xlYW51cCBvZiB0aGUgRGFuaXNoIHN1cHBvcnQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCUZpeCBhIGJ1ZyBpbiBTZXRXaW5kb3dQb3MgdG8gcHJldmVudCBwYXJlbnQgZnJvbSBlcmFzaW5nIGl0cyBjaGlsZAoJcGFpbnRpbmcgYXJlYSB3aGVuIHBhcmVudCB3aW5kb3cgYW5kIGNoaWxkIHdpbmRvdyBkb24ndCBoYXZlCglXU19DTElQQ0hJTERSRU4gYW5kIFdTX0NMSVBTSUJMSU5HUy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJTWFrZSBkZWZ3bmRwcm9jIGVyYXNlIHRoZSBjb3JyZWN0IGxvY2F0aW9uLgoKU2F0IEp1bCAgMyAxNjowMTo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9jcnRkbGwuc3BlYywgd2luZG93cy9kaW5wdXQuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvd2luLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvY3J0ZGxsLmMsIG1pc2Mvc2hlbGwuYywgbXVsdGltZWRpYS9kc291bmQuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJc29tZSBzbWFsbCBpbmNsdWRlIGZpeGVzLCBzb21lIGNoZWNrcyBmb3IgTlVMTCBwdHJzLAoJbG9hZGVyL2VsZi5jOiBmaXhlZCB0aGUgImxpYiIgaW5zZXJ0aW9uCgljcnRkbGw6IGFkZGVkIGZzb3BlbigpCglkaW5wdXQ6IHJldHVybiB0aGF0IHdlIGFyZSBhdHRhY2hlZC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBSZXZlcnRlZCBwcmV2aW91cyBjaGFuZ2UuCgoJKiBjb250cm9scy9lZGl0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2FuY2VsIHBlbmRpbmcgbm90aWZpY2F0aW9ucyB3aGVuIEVNX1NFVE1PRElGWSBpcyBjYWxsZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXggYSBjcmFzaCB3aGVuIGRvaW5nIHNvcnRlZCBpbnNlcnRzIGF0IHRvcCBsZXZlbC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmV3b3JrZWQgbm9uY2xpZW50IGRyYXdpbmcgY29kZS4gV2luMzEgbG9vayBub3cgd29ya3MgbW9yZSBsaWtlIHJlYWwKCVdpbjMxLCBzbyBhcHBzIGxpa2UgRGVscGhpIDEuMCBubyBsb25nZXIgZ28gaW50byBpbmZpbml0ZSByZWN1cnNpb24KCWV0Yy4gRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiB3aW45NSBsb29rIHRvbywgYnV0IG5vdCBhcyB0aG9yb3VnaGx5CgkoZS5nLiBXU19FWF9XSU5ET1dFREdFIGlzIHN0aWxsIG5vdCBoYW5kbGVkKS4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNNX0NbWFldRlJBTUUgaXMgQm9yZGVyV2lkdGggKyAxLgoKCSogbWVtb3J5L2xvY2FsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBMb2NhbEluaXQgd2l0aCBzdGFydCA9PSAwIGFsd2F5cyBwbGFjZXMgaGVhcCBhdCBlbmQgb2Ygc2VnbWVudC4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBUQVNLX0NhbGxUb1N0YXJ0IGRpZG4ndCBwYXNzIGNvcnJlY3QgaEluc3RhbmNlIHRvIGFwcC4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU9uIE5FIHByb2Nlc3MgY3JlYXRpb24sIG1vdmUgbWFqb3IgcGFydCBvZiBORSBFWEUgbW9kdWxlIGxvYWRpbmcgYW5kCglORSBpbnN0YW5jZSBjcmVhdGlvbiBpbnRvIHRoZSBjaGlsZCBwcm9jZXNzLgoKCSogZG9jdW1lbnRhdGlvbi9ndWk6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2luZG93IHN0eWxlIHVwZGF0ZXMuCgoJKiBsaWJ0ZXN0L2d1aXRlc3QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTb21lIGVuaGFuY2VtZW50cywgYW5kIHJlbW92YWwgb2YgQysrIGNvbnN0cnVjdHMuCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgY2hhaW5zIG9mIHN1cmZhY2VzLiBUaGlzIGFsbG93cyBhbiB1bmxpbWl0ZWQgbnVtYmVyCglvZiBiYWNrYnVmZmVycywgYW5kIG90aGVyIGF0dGFjaGVkIHN1cmZhY2VzICh6YnVmZmVycywgYWxwaGEgYnVmZmVycywKCXdoYXRldmVyKS4KCgkqIGZpbGVzL2ZpbGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgVW5sb2NrRmlsZUV4IHN0dWIuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbiwgcmVzb3VyY2VzL3N5c3Jlc19DYS5yYywgcmVzb3VyY2VzL3N5c3Jlc19Fcy5yYzoKCUpvc2UgTWFyY29zIExvcGV6IENhcmF2YWNhIDxqb3NlLmxvcGV6QHVwY25ldC51cGMuZXM+CglBZGRlZCBtaXNzaW5nIDYxNzYyIGVudHJ5IG9uIHN5c3RlbSByZXNvdXJjZXMgaW4gU3BhbmlzaCBhbmQKCUNhdGFsb25pYW4gbGFuZ3VhZ2VzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFrZSBHZXRTY3JvbGxJbmZvIHJldHVybiBzY3JvbGwgcG9zIHdoZW4gcHJvZ3JhbSByZXF1ZXN0cyB0aHVtYiBwb3MKCW91dHNpZGUgZHJhZyBvcGVyYXRpb24uCgpTdW4gSnVuIDI3IDE1OjQwOjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWFkQ29uc29sZUE6IHVzZSBpciBhcyBwb2ludGVyIHRvIChyZXErMSkuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIHRoZSAgdmFsaWRhdGVkIGNoaWxkIGFyZWEgZnJvbSB0aGUgdXBkYXRlIHJlZ2lvbiBvZiBwYXJlbnQgZm9yCgl3aW5kb3dzIHdpdGhvdXQgV1NfQ0xJUENISUxEUkVOIHN0eWxlLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogR3JwOCBpbnN0cnVjdGlvbnMgaGF2ZSAqYnl0ZSogQml0T2Zmc2V0IG9wZXJhbmQuCgoJKiBtc2Rvcy92eGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IG1pc3NpbmcgV0lOQVBJcyBhZGRlZC4KCgkqIG9sZS9vbGUyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT2xlTWV0YUZpbGVQaWN0RnJvbUljb25BbmRMYWJlbDE2OiBzbGlnaHRseSBicm9rZW4sIHVzZSBMUE9MRVNUUjE2LgoKCSogZmlsZXMvZmlsZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJldHVybiBFUlJPUl9ESVNLX0ZVTEwgZm9yIFdyaXRlRmlsZS4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6IEVyaWMgV2lsbGlhbXMgPGV3aWxsQG5jYWwudmVyaW8uY29tPgoJRml4ZWQgbWlzc2luZyByZXR1cm4gYWZ0ZXIgYWJvdXQgZGlhbG9nLgoKU2F0IEp1biAyNiAxOTowOToxMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvKi5jLCBtaXNjLyouYywgbWlzY2VtdS8qLmMsIGdyYXBoaWNzLyouYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCB3aW5kb3dzL3dpbi5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL2NhbGxiYWNrLmMsIG1pc2MvZXJyb3IuYywgbWlzYy93aW5kZWJ1Zy5jLCBtaXNjZW11L2VtdWxhdGUuYywgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDEyLmMsIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDE1LmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDE3LmMsIG1zZG9zL2ludDE5LmMsIG1zZG9zL2ludDFhLmMsIG1zZG9zL2ludDIwLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2ludDI5LmMsIG1zZG9zL2ludDJhLmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG1zZG9zL2ludDNkLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL2ludDRiLmMsIG1zZG9zL2ludDVjLmMsIG1zZG9zL2ludGVycnVwdHMuYywgbXNkb3MvdnhkLmMsIG1zZG9zL3htcy5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbXNkb3MuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvdGFzay5jOgoJQ2hhbmdlZCBDT05URVhUIGludG8gQ09OVEVYVDg2IGV2ZXJ5d2hlcmUgd2UgcmVhbGx5IHdhbnQgYW4gaTM4NgoJY29udGV4dC4KCUFkZGVkICNpZmRlZiBfX2kzODZfXyBhcm91bmQgYWNjZXNzZXMgdG8gMzg2IHJlZ2lzdGVycyBpbiB0aGUgZ2VuZXJpYwoJQ09OVEVYVCBzdHJ1Y3R1cmUuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEFkZGVkIENPTlRFWFQ4NiBkZWZpbml0aW9uLgoJQWRkZWQgUG93ZXJQQyBjb250ZXh0IGFzIGFuIGV4YW1wbGUgKG5vdCB0ZXN0ZWQpLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCUZpeGVzIGZvciBub24taTM4NiBjb21waWxpbmcuCgoJKiAqLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFOU0kgQyBmaXhlcy4KCVJlbW92ZWQgd2FybmluZ3MuCglNYWRlIHRoZSBpbmNsdWRlIGZpbGVzIHNlbGYtc3VmZmljaWVudC4KCVNvbWUgU29sYXJpcyBmaXhlcy4KCgkqIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBEUEFfTG9hZFN0cmVhbSBhbmQgaW1wcm92ZWQgRFBBX01lcmdlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgY2hlY2sgZm9yIGludmFsaWQgcGFyZW50IGl0ZW0uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgU0hEb0RyYWdEcm9wKCkgc3R1Yi4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBHZXRSYW5kb21SZWdpb24oKS4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFdOZXRSZW1vdmVDYWNoZWRQYXNzd29yZCgpIHN0dWIuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU3RvcmUgYnVkZHkgd2luZG93LgoKCSogaW5jbHVkZS90b29sdGlwcy5oLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU3RhcnRlZCBXTV9OT1RJRllGT1JNQVQgc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUJldHRlciBDb21ib0JveEV4IHBsYWNlbWVudC4KCgkqIGxvYWRlci9tb2R1bGUuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglFbnN1cmUgdGhhdCB0aGUgY29tbWFuZC1saW5lIHBhc3NlZCB0byB0aGUgdmFyaW91cyAqQ3JlYXRlUHJvY2VzcwoJZnVuY3Rpb25zIGNvbnRhaW5zIHRoZSBwYXRoIHRvIHRoZSBwcm9ncmFtIGJlaW5nIGludm9rZWQuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTGFycyBIZWV0ZSA8aGVsQGFkbWluLmRlPgoJUHJldmVudCBiYWQgd2luZG93IFggZXJyb3IuCgoJKiB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYzoKCUFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJVGhlIHN5c3RlbSBtZW51IGljb24gb24gYSBNREkgY2hpbGQgd2luZG93IHdhcyBjb3JydXB0ZWQgd2hlbiB0aGUKCWNoaWxkIGZyYW1lIHdpbmRvdyBpcyBtYXhpbWl6ZWQgd2l0aGluIHRoZSBtYWluIGZyYW1lIHdoZW4gdGhlIHdpbmUKCWxvb2sgaXMgV2luZG93cyA5NS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCB3aW5kb3dzL2RlZnduZC5jOgoJU2xhdmEgTW9uaWNoIDxTbGF2YS5Nb25pY2hAbmV0bWFuYWdlLmNvbT4KCUluIGNhc2UgaWYgc2Nyb2xsYmFyIGhhcyB0aGUgc2FtZSBiYWNrZ3JvdW5kIGNvbG9yIGFzIHRoZSB3aW5kb3cKCWl0IGJlbG9uZ3MgdG8sIGl0IG5lZWRzIHRvIGJlIGZpbGxlZCB3aXRoIDB4NTVhYSBiaXRtYXAgYnJ1c2guCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglGaXhlZCB0aGUgc3RyaW5nY29tcGFyZSBpbiBfZmluZF9vcl9hZGRfKigpICh3YXMgbWlzc2luZyB0b2xvd2VyKClzKS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglGaXggKHdlbGwga2x1ZGdlIGFyb3VuZCkgRnJlZUJTRCdzIGBJbnZhbGlkIGFkZHJlc3MnIGVycm9ycy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCURyYXcgYSAzRCBib3JkZXIgYXJvdW5kIGVkaXQgY29udHJvbHMgd2hlbiBub3QgaW4gV0lOMzFfTE9PSy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJT25seSBkcmF3IGEgYmxhY2sgYm9yZGVyIGFyb3VuZCBub3JtYWwgYnV0dG9ucyB3aGVuIGluIFdJTjMxX0xPT0suCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhbGlnbm1lbnQgYW5kIHBvc2l0aW9uIHdoZW4gbG9va2luZyBmb3IgbW1pbyBjaHVua3MuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHVzaW5nIGdsb2JhbCB2YXJzIChzaGFyZWQgZGF0YSkgZm9yIG1tIHRpbWVycywgYnV0IGEKCXNwZWNpZmljIHN0cnVjdHVyZSBmb3IgZWFjaCBhdHRhY2hlZCBwcm9jZXNzLgoJRml4ZWQgYWxpZ25tZW50IGFuZCBwb3NpdGlvbiB3aGVuIGxvb2tpbmcgZm9yIG1taW8gY2h1bmtzLgoJRml4ZWQgV0FWRSBtYXBwZXIgaGFuZGxpbmcgaW4gd2F2ZUdldENhcHMuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS90aW1lLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciB1c2luZyBnbG9iYWwgdmFycyAoc2hhcmVkIGRhdGEpIGZvciBtbSB0aW1lcnMsIGJ1dCBhCglzcGVjaWZpYyBzdHJ1Y3R1cmUgZm9yIGVhY2ggYXR0YWNoZWQgcHJvY2Vzcy4KCgkqIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdyb3RlIGEgc21hbGwgZG9jdW1lbnQgb24gaG93IHRvIHBhY2thZ2UgV0lORSBmb3IgZGlzdHJpYnV0b3JzLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglTZXRDdXJzb3JQb3MoKSBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGggYSB3aW5kb3cgY29vcmRpbmF0ZXMKCXBhcmFtZXRlci4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbnVsbCBwdHIgZGVyZWYgaW50cm9kdWNlZCBpbiBsYXN0IHBhdGNoLgoKCSogaWYxNjMyL29sZTIuc3BlYywgb2xlL29sZTIuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUtpbmQgb2YgaW1wbGVtZW50ZWQgT2xlTWV0YUZpbGVQaWN0RnJvbUljb25BbmRMYWJlbC4KCgkqIGluY2x1ZGUvdG9vbGJhci5oLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCB2YXJpb3VzIHByb2JsZW1zIHJlbGF0ZWQgdG8gYml0bWFwcyBhbmQgZmxhdCB0b29sYmFycy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIHByb2JsZW1zIHdpdGggZGlzYXBwZWFyaW5nIHRleHQuCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQ29tcGxldGUgcmV3cml0ZSBvZiBtZXNzYWdpbmcgY29kZSB0byBpbXBsZW1lbnQvZml4IGFsbCBpbnB1dCBiZWhhdmlvcnMuCglGaXhlZCBhIGZldyBmaXhtZXMuCgoJKiBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9SRUFETUUsIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglBZGRlZCBtb3JlIGJhdGNoIGZ1bmN0aW9uYWxpdHksIGluY2x1ZGluZyB0aGUgQ0FMTCBHT1RPIGFuZCBTSElGVAoJY29tbWFuZHMgcGx1cyBiYXRjaCBjb21tYW5kIGFyZ3VtZW50cy4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWE6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCB0byByZWZsZWN0IGN1cnJlbnQgc3RhdHVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTkVfTG9hZEZpbGVNb2R1bGU6IEZyZWUgbW9kdWxlIHdoZW4gTkVfTG9hZERMTHMgZmFpbHMuCgoJKiBncmFwaGljcy9wc2Rydi9wcy5jLCBncmFwaGljcy9wc2Rydi90ZXh0LmMsIGluY2x1ZGUvcHNkcnYuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIHVuZGVybGluZSBhbmQgc3RyaWtlb3V0IHRleHQgYXR0cmlidXRlcyBmb3IgdGhlIFdpbmUKCVBvc3RTY3JpcHQgZHJpdmVyLgoKCSogd2luZG93cy93aW4uYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUVuYWJsZVdpbmRvdyBkb2Vzbid0IHJlbGVhc2UgdGhlIGNhcHR1cmUgb2YgYSBjaGlsZCB3aW5kb3cuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJT25seSB0ZXN0ICQoTElCX1RBUkdFVCkgPSBsaWJ3aW5lLnNvLjEuMCBpZiAkKExJQl9UQVJHRVQpIGlzCglub24tYmxhbmsuCgoJKiBjb250cm9scy9tZW51LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlIHRoZSBXTV9MQlVUVE9OVVAgbWVzc2FnZSBmcm9tIHRoZSBxdWV1ZSBhZnRlciBzZWxlY3RpbmcgYSBtb3VzZQoJbWVudSBpdGVtLgoKCSogc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NvbW0uYywgbWlzYy90b29saGVscC5jLCBvbGUvcGFyc2VkdC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jOgoJRnVydGhlciBzZXJ2ZXIgb3B0aW1pemF0aW9uczoKCS0gbWVyZ2VkIHJlcXVlc3QgYW5kIHJlcGx5IHN0cnVjdHVyZXMKCS0gYnVpbGQgcmVxdWVzdHMgZGlyZWN0bHkgaW50byB0aGUgYnVmZmVyIHRvIGF2b2lkIGEgY29weQoKVHVlIEp1biAyMiAxOToxNDo0MSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBvbGUvbmxzL3J1cy5ubHMsIHJlc291cmNlcy9zeXNyZXNfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjOgoJQWxleGFuZGVyIEthbmF2aW4gPGFrQGNhdmUuaG9wLnN0dS5uZXZhLnJ1PgoJU3RhbmRhcmQgZGlhbG9nIGJveGVzIHJlc291cmNlcyBhbmQgT0xFIHN0cmluZ3MgYXJlIG5vdyBpbiBjcDEyNTEgZW5jb2RpbmcKCUZvbnQgbWFwcGVyIGRvZXMgbm90IGFueW1vcmUgdXNlIGZvbnRzIGluIC1rb2k4LXIgZW5jb2RpbmcKCUZvbnQgbWFwcGVyIG5vdyByZWNvZ25pc2VzIGZvbnRzIGluIC13aW5kb3dzLSogZW5jb2RpbmdzICh0aGVzZSBhcmUKCXByb3ZpZGVkIGJ5IHhmc3R0IFRydWVUeXBlIHNlcnZlcikKCUZvbnQgbWFwcGVyIG5vdyBzZWVzIG1heCAxNjM4NCBmb250cyAod2FzIDIwNDgpCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTaGFyZSB0aGUgSE1PRFVMRSBvZiBidWlsdC1pbiBtb2R1bGVzIG92ZXIgYWxsIHByb2Nlc3Nlcy4KCVVzZSB0aGUgY2FjaGVkIEhNT0RVTEUgdG8gc3BlZWQgdXAgcmVsYXkgZGVidWdnaW5nLgoJRGlzcGxheSB0aGUgbXVsdGktaW5zdGFudGlhdGlvbiB3YXJuaW5nIG9ubHkgZm9yICdkYW5nZXJvdXMnIERMTHMuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMb2FkIFVTRVIzMi5ETEwgYmVmb3JlIGNhbGxpbmcgVXNlclNpZ25hbFByb2MuCgoJKiB3aW5kb3dzL3RpbWVyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHNlcGFyYXRlIHNlcnZpY2UgZm9yIGVhY2ggd2luZG93cyB0aW1lci4KCgkqIGlmMTYzMi9jb21wb2JqLnNwZWMsIG9sZS9jb21wb2JqLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBDT01QT0JKLkRsbEVudHJ5UG9pbnQgKEFjcm9iYXQzIDE2Yml0IG5lZWRzIGl0KS4KCgkqIG9sZS90eXBlbGliLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUaG91IHNoYWx0IG5vdCB1c2UgQysrIGNvbW1lbnRzLgoKCSogaW5jbHVkZS9kcml2ZXIuaCwgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgdG8gbmV3IHRyYWNlIGludGVyZmFjZS4KCUZpeGVkIGRyaXZlciBjbG9zaW5nLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglCZXR0ZXIgaGFuZGxpbmcgb2YgZG91YmxlIHF1b3RlcyBpbiBNQ0kgc3RyaW5nIGNvbW1hbmRzLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtZW1vcnkgbGVhayBpbiBtY2kgc3RydWN0dXJlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZXJyb3IgaGFuZGxpbmcgaW4gREdBX0lEaXJlY3REcmF3MkltcGxfR2V0Q2FwcygpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBHREkgaGVhcCB1bmxvY2suCglNb3ZlZCB0byBuZXcgZGVidWcgaW50ZXJmYWNlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBHZXRPcGVuRmlsZU5hbWUgd2hlbiBjYWxsZWQgd2l0aCBib3RoIE9GTl9BTExPV01VTFRJU0VMRUNUIGFuZAoJT0ZOX0VYUExPUkVSIGJpdHMgc2V0LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU1vZGlmaWVkIEltYWdlTGlzdF9Mb2FkSW1hZ2VBIHRvIGNoZWNrIHRoZSBjYXNlIHdoZXJlIGN4IGlzIHNldCB0byB6ZXJvLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGhpbGlwcGUgRnJvaWRldmF1eCA8cGZAc3Bpbi5jaD4KCUFkZGVkIFN3aXNzIGZyZW5jaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBzZXJ2ZXIvc2VsZWN0LmM6IER1bXAgc2VydmVyIG9iamVjdHMgb24gU0lHSFVQLgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYWluLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvQXR0aWMvcmVxdWVzdC5oLCBpbmNsdWRlL3RocmVhZC5oLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NvbW0uYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgZmlsZXMvZmlsZS5jOgoJTWFkZSBzZXJ2ZXIgY29tbXVuaWNhdGlvbiBmYXN0ZXIgYnkgdXNpbmcgYSBzaGFyZWQgbWVtb3J5IGJsb2NrLgoJQSBmZXcgb3RoZXIgb3B0aW1pemF0aW9ucyBpbiByZXF1ZXN0IHByb2Nlc3NpbmcgaW4gdGhlIHNlcnZlci4KCU1vdmVkIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHJlcXVlc3QgZGVmaW5pdGlvbnMgdG8gc2VydmVyLmggYW5kCglyZW1vdmVkIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvZHBtaS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2tlcm5lbDMyLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJTWVyZ2VkIFRIREIgYW5kIFRFQiBzdHJ1Y3R1cmVzLgoJTWFkZSBTZXRMYXN0RXJyb3IoKSwgR2V0Q3VycmVudFRocmVhZElkKCkgYW5kIFBST0NFU1NfQ3VycmVudCgpIGlubGluZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlOgoJQWRkZWQgV2EucwoKU3VuIEp1biAyMCAxNTowOTozMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2luc3RyLmMsIG1pc2NlbXUvbWFpbi5jLCBwcm9ncmFtcy9jbG9jay9XYS5yYywgcHJvZ3JhbXMvcHJvZ21hbi9XYS5yYywgcHJvZ3JhbXMvd2luaGVscC9XYS5yYzoKCUZpeGVkIFdpbmVsaWIgY29tcGlsYXRpb24uCgpGcmkgSnVuIDE4IDE4OjI5OjA0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9pbnN0ci5jLCBtaXNjZW11L0F0dGljL2luc3RyLmMsIG1pc2NlbXUvTWFrZWZpbGUuaW46CglJbmNsdWRlIGluc3RydWN0aW9uIGVtdWxhdGlvbiBpbiBXaW5lbGliLgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCB3aW4zMi9leGNlcHQuYzogQSBmZXcgb3B0aW1pemF0aW9ucy4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogVXNlIGV4Y2VwdGlvbnMgaW5zdGVhZCBvZiBjdHhfZGVidWdfY2FsbC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmM6CglBZGRlZCBEZWJ1Z0JyZWFrLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgbWlzY2VtdS9tYWluLmM6CglEZWJ1Z2dlciBpcyBub3cgY2FsbGVkIGJ5IGV4Y2VwdGlvbiBoYW5kbGluZy4KCUFkZGVkICdwYXNzJyBjb21tYW5kIHRvIHBhc3MgZXhjZXB0aW9ucyB0byB0aGUgYXBwLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgbG9hZGVyL3NpZ25hbC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBncmFwaGljcy9kZHJhdy5jOgoJTW92ZWQgc2lnbmFsIGhhbmRsaW5nIHRvIGV4Y2VwdGlvbi5jLCBnZW5lcmF0ZSBleGNlcHRpb25zIG9uIHNpZ25hbHMuCglBZGRlZCBob29rIGZvciBkZWJ1Z2dlciBpbiBleGNlcHRpb24gaGFuZGxpbmcgKHRlbXBvcmFyeSkuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL1dhLnJjLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL1dhLnJjLCByZXNvdXJjZXMvc3lzcmVzX1dhLnJjLCBvbGUvbmxzL3dhbC5ubHMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9XYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BwaW5nLmJlPgoJV2FsbG9vbiBsYW5ndWFnZSB1cGRhdGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgaW5jbHVkZS93aW5wb3MuaCwgaW5jbHVkZS93aW51c2VyLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCS0gRG8gbm90IGNhbGwgWENvbmZpZ3VyZVdpbmRvdyBpZiBTZXRXaW5kb3dQb3Mgd2FzIGNhbGxlZCBkdWUgdG8gYQoJICByZWNlaXZlZCBDb25maWd1cmVOb3RpZnkgZXZlbnQgKHRvIGF2b2lkIHJlY3Vyc2lvbikuCgktIFVzZSBYVHJhbnNsYXRlQ29vcmRpbmF0ZXMgaW4gRVZFTlRfR2V0R2VvbWV0cnkgaW5zdGVhZCBvZiBtYW51YWxseQoJICB3YWxraW5nIHRoZSB0cmVlLgoJLSBTZXQgWFNpemVIaW50Lndpbl9ncmF2aXR5IHRvIFN0YXRpY0dyYXZpdHkgZm9yIG1hbmFnZWQgd2luZG93cy4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQnVnIGZpeC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggY29tcGlsZXIgd2FybmluZy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluOgoJQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAbG9uZy55YXIucnU+CglJbnN0YWxsIHdpbmUubWFuIGZyb20gY3VycmVudCBkaXJlY3RvcnkuCglSZW1vdmUgd2luZS5tYW4gb24gZGlzdGNsZWFuLCBub3Qgb24gY2xlYW4uCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKdW4gMTMgMDg6NDk6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIExJU1RWSUVXX1NvcnRJdGVtcygpIGFuZCBMSVNUVklFV19DYWxsQmFja0NvbXBhcmUoKQoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVzIGEgcHJvYmxlbSB3aGVuIHVzaW5nIFNUQVRVU0JBUl9TZXRUZXh0KCkgdG8gdG9nZ2xlIFNCVF9PV05FUkRSQVcKCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFkZHMgc29tZSB1bmRvY3VtZW50ZWQgYmVoYXZpb3IgdG8gVFJFRVZJRVdfR2V0SXRlbUEoKS4KCgkqIGxvYWRlci9tb2R1bGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhbWJpZ291cyBlbHNlL2JyYWNlIHByb2JsZW0sIG1vdmVkICJuYW1lIiBjb21wdXRhdGlvbiBpbgoJQ3JlYXRlUHJvY2VzcyBfYmVmb3JlXyBvdXRwdXR0aW5nIGl0IGluIHRoZSBGSVhNRV8oKXMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCByZXVzZSBhIHBhc3NlZCBDT05TVCBSRUNUICogcG9pbnRlci4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRElTUExBWV9TZXRDdXJzb3Igc2hvdWxkIG5vdCB1c2UgVVNFUi1pbnRlcm5hbHMsIGFzIGl0IGlzIGFsc28KCXVzZWQgd2l0aCBuYXRpdmUgVVNFUiAuLi4KCgkqIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIGJyb2tlbiBoYWNrIHRvIHN1cHBvcnQgc2hhcmVkIERMTHMgKGUuZy4gVVNFUjMyLkRMTCkgYW5kCglyZXBsYWNlZCBpdCBieSBhIHNvbWV3aGF0IGxlc3MgYnJva2VuIGhhY2sgOi0vCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNtYWxsIG1lbW9yeSBjb3JydXB0aW9uLgoKU2F0IEp1biAxMiAxODozNjo1NSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS8qLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZCB0aGUgaW5jbHVkZSBmaWxlcyBpZGVtcG90ZW50IHVzaW5nIGEgY29uc2lzdGVudCBtYWNybyBuYW1pbmcKCXNjaGVtZS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglBdm9pZCBwYWludGluZyBkZXN0cm95ZWQgd2luZG93cy4KCgkqIGRsbHMvKi5jLCBpZjE2MzIvKi5jLCBsb2FkZXIvKi5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L3N0cmluZy5jLCBvYmplY3RzL3RleHQuYywgd2luMzIvdGhyZWFkLmMsIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9zeW5jLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIG1pc3Npbmcvd3JvbmcgaW5jbHVkZXMuCgoJKiB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvd2lkZ2V0cy5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGJnbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIG1pc2Mvc3B5LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgZGlyZWN0IHJlZmVyZW5jZXMgdG8gQ0xBU1MgaW50ZXJuYWxzLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIG1pc2MvdmVyc2lvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVhcnJhbmdlIHdpbnZlciBkZXRlY3Rpb24gY29kZSBhbmQgY2FjaGUgdGhlIHdpbnZlciB2YWx1ZSB3ZQoJZGV0ZXJtaW5lZCBpbiB0aGUgUERCIHRvIHNwZWVkIHVwLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEcmF3cyBhIGJvcmRlciBhcm91bmQgd2luZG93cyB3aXRoIG9sZCB3aW4zMSBzdHlsZSAob25seSB3c19ib3JkZXIpIGluCgl3aW45NSBsb29rLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBDSU5URVJGQUNFIGFuZCBOT05BTUVMRVNTVU5JT04gc3VwcG9ydC4KCgkqIGluY2x1ZGUvKi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBleHRlcm4gIkMiIGlmIF9fY3BsdXNwbHVzIGlzIGRlZmluZWQuCgoJKiBpbmNsdWRlL2NvbWJvLmgsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgZmV3IGJlaGF2aW9ycyBvZiB0aGUgY29tYm9ib3ggdGhhdCB3ZXJlIGJyb2tlbi4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9pbmZvLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIG5ldyAid2FsayIgY29tbWFuZCBvcHRpb25zIHRvIGxpc3QgcHJvY2Vzc2VzIGFuZCBtb2RyZWYncy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzXzI0LzMyOiBGaXggdGhlIGNhc2UgZm9yIGJpdHNfcGVyX3BpeGVsID09IDMyCglhbmQgbmVnYXRpdmUgbGluZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgaW5jbHVkZS93aW51c2VyLmgsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2hhbmdlZCB4eHgoVk9JRCkgdG8geHh4KHZvaWQpLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBzaW1wbGlmaWVkIGludGVybmFsIGRhdGEKCS0gdGhyZWFkIHNhZmUgYWNjZXNzIHRvIGludGVybmFsIHN0cnVjdHVyZXMKCS0gZml4ZWQgYnVnIG9uIE9ORV9TSE9UIHRpbWVycwoJLSBkZWZlcnJlZCBzZXJ2aWNlIHRocmVhZCBjYWxsIHVudGlsIHJlYWxseSBuZWVkZWQgKG5vIGxvbmdlciBvbiBXSU5NTQoJICBvciBNTVNZU1RFTSBhdHRhY2hlbWVudCkKCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdGhlIHNlcnZpY2UgdGhyZWFkIGluc3RhbmNpYWJsZSBpbiBldmVyeSBwcm9jZXNzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVXNlIEF1dG9jb25mIHRvIGZpbmQgcGF0aCB0byBsZGNvbmZpZy4KCgkqIG9sZS90eXBlbGliLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgcHJvYmxlbSB3aXRoIHRoZSBMb2FkVHlwZUxpYiBtZXRob2QuCgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bW1AamV0LmxzdC5kZT4KCVVzZSBAc3lzY29uZmRpckAgZm9yIHRoZSBkZWZhdWx0IHJlZ2lzdHJpZXMgaW4gbWlzYy9yZWdpc3RyeS5jIHRvby4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bW1AamV0LmxzdC5kZT4KCUFkZGVkIGdlbmVyaWMgcGl4ZWwgY29udmVydGVyIGZvciA4LT4yNC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglESUFMT0dfUGFyc2VUZW1wbGF0ZTE2KCkgc3VwcG9ydGVkIHVwIHRvIDEyNyBjb250cm9scy4gQmlnZ2VyIHZhbHVlcwoJd2VyZSBleHBhbmRlZCB0byBXT1JEIGluY29ycmVjdGx5LgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kcG1pLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVZhcmlvdXMgRFBNSSBmaXhlcyBhbmQgcHJlbGltaW5hcnkgRFBNSSByYXcgbW9kZSBzd2l0Y2ggaGFuZGxlci4KCgkqIHdpbmRvd3MvbWRpLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgaW1wcmVjaXNpb24gaW4gdGhlIE1ESSB0aWxpbmcgZnVuY3Rpb25hbGl0eS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJT3BlbiBmaWxlcyB3aXRoIG1vcmUgYXBwcm9wcmlhdGUgc2hhcmluZyBtb2RlLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTbWFsbCBmaXhlcyBmb3IgRW5oTWV0YUZpbGUgcGxheWJhY2suCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJRml4ZWQgYW4gZXJyb3IgYW5kIGFuIG9mZi1ieS1vbmUgYnVnIGluIERTQV9TZXRJdGVtKCkuICBUaGlzCgllbGltaW5hdGVzIHNvbWUgY3Jhc2hlcyB3aXRoIFdpbjk4IG5hdGl2ZSBTSEVMTDMyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgRElBQkxPX0hBQ0sgKGRvZXMgbm90IHdvcmsgYW55bW9yZSksIGFkZCAxIEZJWE1FLCBmaXggR2V0Q2FwcygpCgl3aXRoIGNhcHMxPT1OVUxMLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBTbGF2YSBNb25pY2ggPFNsYXZhLk1vbmljaEBuZXRtYW5hZ2UuY29tPgoJZHdEYXRhU2l6ZSBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUgZWFjaCBSZWdRdWVyeVZhbHVlRXgoKSBjYWxsLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEb24ndCBpZ25vcmUgYXBwbGljYXRpb24tcmVxdWVzdGVkIHByaW1hcnkgYnVmZmVyIGZsYWdzLgoKCSogdG9vbHMvYnVpbGQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGVhciBoaWdoIHdvcmQgb2YgJWVzcCB3aGVuIHJldHVybmluZyBmcm9tIENhbGxGcm9tMTYuCgoJKiBpbmNsdWRlL2NvbW0uaCwgbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50YXRpb24gb2YgRVZfUlhGTEFHLgoKCSogd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIFtHU11ldEZvcmVncm91bmRXaW5kb3cuCglGaXhlZCBmb2N1cyBoYW5kbGluZyBvbiBpbnRlci10aHJlYWQgYWN0aXZhdGlvbi4KCUFkYXB0ZWQgRm9jdXNJbi9PdXQgZXZlbnQgaGFuZGxpbmcgdG8gcGVyLXF1ZXVlIGZvY3VzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWxlYXNlIFdpbjE2TG9jayBkdXJpbmcgUFJPQ0VTU19DcmVhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJSW1hZ2VMaXN0X0dldEljb24gYnVnIGZpeC4KCgkqIHdpbjMyL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3RlZCBhIHByb2JsZW0gaW4gR2V0VGltZVpvbmVJbmZvcm1hdGlvbigpIGR1ZSBhIGNoYW5nZSB0bwoJbWt0aW1lKCkgaW4gZ2xpYmMtMi4xLjEgd2hlbiBkYXlsaWdodCBzYXZpbmcgdGltZSBpcyBpbiBlZmZlY3QuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDaGFuZ2VkIEsmUiBDIGZ1bmN0aW9uIGRlZmluaXRpb24gdG8gQU5TSSBDLgoKCSogZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVBTRFJWX1N0cmV0Y2hESUJpdHMgc2hvdWxkIHVzZSBsb2dpY2FsIGNvLW9yZHMuCglTb21lIHZlcnNpb25zIG9mIGdob3N0c2NyaXB0IHNlZW0gdG8gZWF0IG9uZSB0b28gbWFueSBjaGFyYWN0ZXJzIG9mCglpbWFnZSBkYXRhLiBBZGQgYSAnJScgdG8gdGhlIG91dHB1dCBmaWxlIHRvIHdvcmsgYXJvdW5kIHRoaXMuCgoJKiByZWxheTMyL3duYXNwaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBXTkFTUEkzMiBvcmRpbmFscy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25zIG9mIEdldFN0YXJ0dXBJbmZvKigpLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGRlLCBtaXNjL2RkZW1sLmM6CglLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJMXN0IGN1dCBpbXBsZW1lbnRhdGlvbiBvZiBEZGVOYW1lU2VydmljZSAob21pdHMgbW9uaXRvciBjYWxsYmFjaykKCTFzdCBjdXQgaW1wbGVtZW50YXRpb24gb2YgRGRlS2VlcFN0cmluZ0hhbmRsZSAocHJvYmFibHkgY29tcGxldGUpCglEZGVJbml0aWFsaXplVyAtIG1pbm9yIGNoYW5nZXMgdG8gaW5pdGlhbGlzZSBzZXJ2aWNlIG5hbWVzIHN0cnVjdHVyZQoJRGRlR2V0TGFzdEVycm9yIC0gc3RhcnQgb2YgcHJvcGVyIGxhc3QgZXJyb3IgcmV0cmlldmFsCglEZGVDcmVhdGVTdHJpbmdIYW5kbGUxNiAtIGFkZGVkIGNvZGUgZm9yIGRlZmF1bHQgY29kZXBhZ2Ugd2hlcmUgbm90CglzdXBwbGllZC4KCVZhcmlvdXMgZG9jdW1lbnRhcnkvY29tbWVudCBjb3JyZWN0aW9ucy4KCkZyaSBKdW4gMTEgMTg6MzM6NDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBtZW1vcnkvZW52aXJvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVXNlIHRoZSBub3JtYWwgZW52aXJvbm1lbnQgcm91dGluZXMgdG8gYnVpbGQgdGhlIGVudiBkYiBvZiB0aGUgaW5pdGlhbAoJcHJvY2Vzcy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYzoKCVJldHVybiBjb25zb2xlIGhhbmRsZXMgaW4gYWxsb2NfY29uc29sZSByZXF1ZXN0LgoJRml4ZWQgcmVhZF9jb25zb2xlX2lucHV0IHBhcmFtZXRlcnMgdG8gY29uZm9ybSB0byB0aGUgcmVwbHkgc3RydWN0dXJlCglkZWNsYXJhdGlvbi4KCk1vbiBKdW4gIDcgMTc6NDY6MzkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgQ3JlYXRlQ29tcGF0aWJsZUJpdG1hcCB3aGVuIGNhbGxlZCB3aXRoIDAgd2lkdGggb3IgaGVpZ2h0LgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbW1pb0Rlc2NlbmQgd2hlbiBjYWxsZWQgd2l0aCBhIHBhcmVudCBjaHVuay4KCgkqIGxvYWRlci9zaWduYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnlpbmcgdG8gZml4IHNpZ2FsdHN0YWNrKCkgcHJvYmxlbSByZXBvcnRlZCBieSBEZWJpYW4gdXNlcnMuCglTSUdUUkFQIG1pZ2h0IGJlIHVuZGVmaW5lZCAoYmVvcykuCgoJKiBvbGUvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIFRMQl9SZWFkIChjYW4gZWFzaWx5IGdldCBjb3VudCE9Ynl0ZXNyZWFkIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUpLgoJRml4ZWQgVExCX0ZpbmRUbGIgKHN0cnN0ciBvbiBiaW5hcnkgZGF0YSB3aWxsIG5vdCB3b3JrKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCA+PiBhbmQgKiBvcGVyYXRvciBwcmVjZWRlbmNlIHByb2JsZW0uCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG9yZGVyIGZvciBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9ucyAoWDExIHZzLiBXbmRMb2NrKSB3aGVuCgljYWxsaW5nIFgxMURSVl9NT1VTRV9TZXRDdXJzb3IuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ29uc3VsdCBuZS5vcGVyYXRpbmdfc3lzdGVtIGZpZWxkIGZvciBORSBmaWxlcyBpbiBHZXRCaW5hcnlUeXBlKCkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOiBGaXhlZCBpbml0aWFsIHByb2Nlc3MgcmVmY291bnQuCgpTdW4gSnVuICA2IDE3OjI4OjIxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBsb2FkZXIvZG9zL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2Nkcm9tLWxhYmVsczoKCUZvcmNlZCBjb21taXQgdG8gZ2V0IHJpZCBvZiB0aGUgdmVuZG9yIGJyYW5jaAoKCSogcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZTogQWRkZWQgY21kbGdyLmgKCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUF2b2lkIHVzZSBvZiBzdHJuY21waSAocmVwb3J0ZWQgYnkgUm9uIENlbWVyKS4KCgkqIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIG11bHRpbWVkaWEvam95c3RpY2suYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTW92ZWQgaW5jbHVzaW9uIG9mIHdpbmVzdHJpbmcuaCB0byB3aW5lYmFzZS5oLgoJQWRkZWQgV2luZWxpYiBtYWNyb3MgZm9yIGxzdHJuY21wIGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBSb24gQ2VtZXIgPHJvbmNlbWVyQGd0ZS5uZXQ+CglGaXhlcyBmb3Igc2V2ZXJhbCBidWdzIGluIHdoaWNoIHBvcnRpb25zIG9mIHRoZSBzY3JvbGxiYXIgd2VyZSBub3QKCWJlaW5nIHJlZHJhd24gY29ycmVjdGx5LCB0aGUgZm9jdXMgcmVjdGFuZ2xlIHdhcyBub3QgYmVpbmcgY29ycmVjdGx5CglyZW1vdmVkIGZyb20gdGhlIHRodW1iIGJlZm9yZSByZWRyYXdpbmcsIGV0Yy47IGFkZGVkIGNvbXBsZXRlIFdpbjl4CglhbmQgV2luTlQgbG9vayBhbmQgZmVlbCBzdXBwb3J0LgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmM6IFJvbiBDZW1lciA8cm9uY2VtZXJAZ3RlLm5ldD4KCUZpeGVzIGZvciBXaW45eCBhbmQgV2luTlQgbG9vayBhbmQgZmVlbC4KCgkqIGZpbGVzL2Rvc19mcy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgcmVzcG9uc2Ugb2YgR2V0RnVsbFBhdGhOYW1lQSB3aGVuIGJ1ZmZlcj09TlVMTC4KCgkqIGZpbGVzL2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ3JlYXRlRmlsZUEvRklMRV9Eb09wZW5GaWxlOiBhZGQgdmVyYm9zZSByZXBvcnRpbmcgb2YgYXJndW1lbnRzLgoKCSogY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9SRUFETUUsIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL21ha2VmaWxlLmJjYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsIGNvbmZpZ3VyZToKCURhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJQWRkZWQgV2luZSBjb21tYW5kLWxpbmUgaW50ZXJwcmV0ZXIuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgQ2FsbGJhY2suQ2FsbFRhc2tSZXNjaGVkdWxlUHJvYygpLgoKCSogaW5jbHVkZS9tYWluLmgsIG1pc2NlbXUvbWFpbi5jLCB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTd2l0Y2ggc3RhY2tzIGluIENBTEwzMl9Jbml0KCkuCgoJKiBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCTE2LWJpdCBzY2hlZHVsZXIgcmVvcmdhbml6ZWQ6IHJ1biBhbGwgdGFza3MgaW4gdGhlaXIgb3duIHRocmVhZC4KCVByb2Nlc3MgY3JlYXRpb24gc2VxdWVuY2UgYWRhcHRlZCB0byBuZXcgc2NoZWR1bGVyLgoKCSogaW5jbHVkZS9zZXJ2aWNlcy5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBTRVJWSUNFX0V4aXQoKS4KCgkqIHdpbmRvd3MvcXVldWUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWxlYXNlIFdORCBsb2NrIGJlZm9yZSBjYWxsaW5nIFBvc3RFdmVudDE2KCkuCgoJKiBpbmNsdWRlL3duYXNwaTMyLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgc29tZSBkZWZpbmVzLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFTUElfRXhlY1Njc2lDbWQ6IGJldHRlciByZXR1cm4gdmFsdWUgYW5kIHZlcmJvc2UgZXJyb3Igd2hlbiBubyBkZXZpY2UKCWZvdW5kLgoKCSogbG9hZGVyL21vZHVsZS5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVXNlIFNlYXJjaFBhdGggdG8gdGVzdCBmb3IgZXhpc3RhbmNlIG9mIHByb2dyYW1zIGluIGxwQ21kTGluZQoJcHJvY2Vzc2luZy4gRm9yIGxwQXBwbE5hbWUgZG8gbm90IGFwcGVuZCAiLmV4ZSIgYW5kIHVzZQoJRE9TRlNfR2V0RnVsbE5hbWUgdG8gbG9jYXRlIHRoZSBwcm9ncmFtLiBNb3ZlIG1vZHVsZSBmaW5kIHByb2Nlc3MKCWFmdGVyIGZsYWcgdGVzdGluZyBhbmQgcHJvdmlkZSBxdWljayBleGl0IGlmIG5vdCBmb3VuZC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFNsYXZhIE1vbmljaCA8U2xhdmEuTW9uaWNoQG5ldG1hbmFnZS5jb20+CglJbXBsZW1lbnRlZCBkaWFsb2cgdW5pdHMgLT4gcGl4ZWxzIGNvbnZlcnNpb24gdmVyeSBjbG9zZSB0byBob3cgaXQncwoJYWN0dWFsbHkgZG9uZSBieSBXaW5kb3dzLgoKU2F0IEp1biAgNSAxNToyMzoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2luaXRndWlkLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93dHlwZXMuaCwgb2xlL2JpbmRjdHguYywgb2xlL21vbmlrZXIuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJU29tZSBub24tdGhyZWF0ZW5pbmcgZml4ZXMgdG8gc29tZSBoZWFkZXJzLCBhcyB3ZWxsIGFzIHNvbWUgY2FzdGluZwoJY2hhbmdlcyB0aGF0IG1ha2Ugd2luZWxpYiBtb3JlIHdpbjMyIGNvZGUgY29tcGF0aWJsZS4KCgkqIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6Cgk8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJU3R1YiBmb3IgU2V0Vm9sdW1lTGFiZWwoKS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIGJhY2sgbG9zdCB0cmVhdG1lbnQgb2YgSFdORF9UT1BNT1NULgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVHJ5IHRvIGltcHJvdmUgQ29uZmlndXJlTm90aWZ5IGV2ZW50IHByb2Nlc3NpbmcuCgoJKiBvYmplY3RzL3Blbi5jOiBKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJQWxsb3cgcGVucyB3aXRoIHN0eWxlcyBncmVhdGVyIHRoYW4gUFNfSU5TSURFRlJBTUUgdG8gYmUgY3JlYXRlZCB3aXRoCglFeHRDcmVhdGVQZW4uCgoJKiByZWxheTMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIG9sZS90eXBlbGliLmMsIG9sZS90eXBlbGliLmg6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJUmVhZC9sb2FkIHR5cGUgbGlicmFyaWVzLiBJbXBsZW1lbnRhdGlvbiBvZiBJVHlwZUxpYiwgSVRZcGVJbmZvLAoJSVR5cGVMaWIyIGFuZCBJVHlwZUluZm8yIG1ldGhvZHMuCgoJKiBvbGUvb2xlMmRpc3AuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFsbG93IE5VTEwgYXMgYXJndW1lbnQgdG8gU3lzRnJlZVN0cmluZyBpbiBhY2NvcmRhbmNlIHdpdGggU0RLLgoKCSogREVWRUxPUEVSUy1ISU5UUzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CgktIG1vcmUgdXAtdG8tZGF0ZSBkZXNjcmlwdGlvbiBvZiBzb3VyY2UgdHJlZQoJLSBiZXR0ZXIgZXhhbXBsZSBvZiByZXF1aXJlZCBjb21tZW50cyBmb3IgYW4gQVBJIGltcGxlbWVudGF0aW9uCgktIHJlcGxhY2VtZW50IG9mIFdJTkVfUEFDS0VEIGJ5ICJwc2hwYWNrMS5oIiwgZXRjLgoJLSBuYW1pbmcgY29udmVudGlvbnMgZm9yIG5vbi1hcGkgY2FsbHMgYW5kIHR5cGVzCgktIGxvY2F0aW9uIGNvbnZlbnRpb25zIGZvciBub24tYXBpIGhlYWRlciBmaWxlcyBhbmQgcHJvdG90eXBlcwoKCSogcmVsYXkzMi9tcHIuc3BlYywgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3duZXQuaCwgbWlzYy9uZXR3b3JrLmM6CglSb2JlcnQgVyBIYWxsIDxib2JoQG4tY2FudHJlbGwuZGVtb24uY28udWs+CglBZGRlZCAyIHN0dWJzLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYmVoYXZpb3VyIG9mIEFsbG9jLi5UaHVua2xldENhbGxiYWNrW0V4XSBmb3IgTlVMTCB0YXJnZXQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGluIEVWRU5UX1F1ZXJ5Wk9yZGVyLgoJRml4ZWQgcG90ZW50aWFsIFggc3luY2hyb25pemF0aW9uIHByb2JsZW0gaW4gWDExRFJWX1dORF9TZXRIb3N0QXR0ci4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29ycmVjdCBzZWFyY2ggb3JkZXIgaW4gU2VhcmNoUGF0aCBmb3IgV2luIDMuMS85NS85OC4gU3RpbGwgYnJva2VuIGZvciBOVC4KCgkqIHdpbmRvd3Mvd2luLmM6IFNsYXZhIE1vbmljaCA8U2xhdmEuTW9uaWNoQG5ldG1hbmFnZS5jb20+CglvIGNoZWNrIGZvciBib3RoIENXX1VTRURFRkFVTFQgYW5kIENXX1VTRURFRkFVTFQxNi4KCW8gaWYgeCBpcyBDV19VU0VERUZBVUxUIChvciBDV19VU0VERUZBVUxUMTYpIGFuZCB5IGlzICpub3QqCgkgIENXX1VTRURFRkFVTFQgKG9yIENXX1VTRURFRkFVTFQxNikgdGhlbiB1c2UgeSBhcyBhIHNlY29uZAoJICBwYXJhbWV0ZXIgdG8gU2hvd1dpbmRvdygpLiBTb21lIGFwcHMgKENBTEMuRVhFIGZvciBXaW45OAoJICBpcyBvbmUgb2YgdGhlbSkgdXNlIHRoaXMgdW5kb2N1bWVudGVkIGZlYXR1cmUgdG8gY3JlYXRlCgkgIGhpZGRlbiB3aW5kb3cgd2l0aCBXU19WSVNJQkxFIHN0eWxlIHNldC4KCgkqIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIGZvciBEUEFfTG9hZFN0cmVhbSBhbmQgc3R1YiBmb3IKCURQQV9TYXZlU3RyZWFtLiAgVGhhbmtzIHRvIEVyaWMgS29obCAoZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGUpIGZvcgoJdGhlIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gYW5kIHBhcmFtZXRlciBpbmZvcm1hdGlvbi4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglNYWtlIGl0IHBvc3NpYmxlIHRvIGxpbmsgV2luZSBzdGF0aWNhbGx5IChhdCBsZWFzdCBvbiBSZWRIYXQgNi4wKS4KCgkqIGNvbnRyb2xzL21lbnUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXaGVuIGxvb2tpbmcgaW50byBzeXMgbWVudSwgY2hlY2sgaWYgaXRlbXMgYXJlIHByZXNlbnQgYmVmb3JlCglkZXJlZmVyZW5jaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9BdHRpYy93aW5lLm1hbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBdXRvY29uZmlndXJlIHRoZSBkaXJlY3RvcmllcyBpbiB0aGUgbWFucGFnZS4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIER1bW15TW90aW9uTm90aWZ5IEVWRU5UIGRyaXZlciByb3V0aW5lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQXV0b2NvbmZpZ3VyZSB0aGUgZGlyZWN0b3JpZXMgaW4gdGhlIG1hbnBhZ2UuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglBZGQgc3R1YiBmb3IgTG9ja0ZpbGVFeCAoS0VSTkVMMzIuNTEzKS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2ludGVybmF0aW9uYWxpc2F0aW9uOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglDdXJyZW50IHN0YXR1cyBvZiBXaW5lIG9uIGludGVybmF0aW9uYWxpc2F0aW9uLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglEbyBub3QgcHJvY2VzcyBXTV9MQlVUVE9OVVAgbWVzc2FnZSBpbiBCdXR0b25XbmRQcm9jKCkKCXdoZW4gdGhlIG1vdXNlIGlzIG5vdCBjYXB0dXJlZC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgb2JqZWN0cy9kYy5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGcm9tIENyZWF0ZUNvbXBhdGlibGVEQywgcGFzcyB0aGUgZGV2aWNlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZQoJc291cmNlIERDIGluIG9yZGVyIHRvIGFsbG93IFBTRFJWX0NyZWF0ZURDIHRvIGxvY2F0ZSB0aGUgcHJpbnRlciBpbmZvCglmb3IgdGhlIGRldmljZS4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBkaWdpdGFsIHZpZGVvIGludGVyZmFjZQoJRml4ZWQgYSBmZXcgYnVncyAoZGV2aWNlIG5hbWVzIGFyZSBubyBsb25nZXIgY29udmVydGVkIHRvIHVwcGVyIGNhc2UsCglhZGRlZCBjYWxsIGJhY2sgd2luZG93LCBhbGwgc3RydWN0dXJlcyBtb3ZlZCB0byAzMiBiaXQuLi4pLgoKCSogaWYxNjMyL3RodW5rLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV29ya2Fyb3VuZyBnY2MgMi43LjIueCBzaWcgMTEgaXNzdWUuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAoc3RpbGwgaW5jb21wbGV0ZSkgaGFuZGxpbmcgb2YgTUNJX0JSRUFLIGNvbW1hbmQuCgoJKiBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3M6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTcGVlZHVwIGVuaGFuY2VtZW50IGZvciB0aGUgOC0+MTYgYW5kIDgtPjMyIGNvcHkgbG9vcCBob3RzcG90cywKCXVzaW5nIGEgZmFzdGVyIGdlbmVyaWMgcm91dGluZSBhbmQgc29tZSBpbmxpbmUgYXNzZW1ibHkgZm9yIGkzODYKCShjbGVhbnVwcyBieSBPdmUpLgoKRnJpIEp1biAgNCAxOTo0OTo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90aHJlYWQuYzoKCU1hZGUgaGFuZGxlIHRhYmxlIGEgc2VwYXJhdGUgb2JqZWN0LgoJR2xvYmFsIGhhbmRsZSB0YWJsZSBpcyBubyBsb25nZXIgYm91bmQgdG8gYSBwcm9jZXNzLgoJUmVtb3ZlZCBzcGVjaWFsIGhhbmRsaW5nIG9mIHRoZSBpbml0aWFsIHByb2Nlc3MuCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaDoKCUFkZGVkIG9wdGlvbmFsIGRlYnVnZ2luZyBjb2RlIGluIG9iamVjdCBtYW5hZ2VtZW50LgoKU2F0IE1heSAyOSAxNDoyNzoyNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvdGFzay5jOgoJR290IHJpZCBvZiBUSFJFQURfSW5pdERvbmUuCglNYWRlIFRIUkVBRF9DdXJyZW50KCkgaW5saW5lLgoJTW92ZWQgc2VydmVyIHRpZCBpbnRvIFRFQi4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglSZWltcGxlbWVudGVkIHRoZSBDaGVja1JhZGlvQnV0dG9uIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIGluY29ycmVjdCBsb29rdXAgb2YgYmFja2dyb3VuZCBjb2xvci4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBwcm9ibGVtcyB3aGVuIHVzaW5nIG11bHRpcGxlIHN0eWxlIGZsYWdzIHRvZ2V0aGVyLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgYSBwcm9ibGVtIHdoZW4gdXNpbmcgc3RyaW5nIHJlc291cmNlcyBhcyB0b29sdGV4dC4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgYmVoYXZpb3Igb2YgdGhlIGZvY3VzIHdoZW4gYSBwYXJlbnQgd2luZG93IGlzIGRpc2FibGVkLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6IEpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglGaXhlZCBhIGJ1ZyB3aGljaCBjYXVzZXMgdGhlIFBvbHlCZXppZXIgdG8gbm90IGJlIHVwZGF0ZWQgb24gcmVkcmF3Cgkod2hlbiB5b3Ugd2FudCB0aGVtIHRvIGJlKS4KCgkqIHdpbmRvd3MvaW5wdXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgdW5uZWNlc3Nhcnkgd2FybmluZyBpbiBUcmFuc2xhdGVBY2NlbGF0b3IuCgoJKiBzZXJ2ZXIvaGFuZGxlLmM6CglGaXhlZCBkdXBsaWNhdGVfaGFuZGxlIHRvIHdvcmsgd2l0aCBwc2V1ZG8taGFuZGxlcyAocmVwb3J0ZWQgYnkgTWFyY3VzCglNZWlzc25lcikuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy92ZXIvdmVyMTYuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvdmVyLmgsIGluY2x1ZGUvd2ludmVyLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+Cgl2ZXIuaCBpcyBhIGxlZ2FjeSBoZWFkZXIuIHdpbnZlci5oIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCgoJKiBkbGxzL3RhcGkzMi9waG9uZS5jLCBtaXNjL2NydGRsbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CgktIFJlaW1wbGVtZW50ZWQgdGhlIHNjcm9sbGluZyB1c2luZyBTZXRTY3JvbGxJbmZvIGFuZCBHZXRTY3JvbGxJbmZvLgoJLSBJbXBsZW1lbnRlZCBMVk1fRklORElURU0gbWVzc2FnZS4KCS0gQWRkZWQgc29tZSBuZXcgd2luZG93IHN0eWxlcy4KCS0gRml4ZWQgc29tZSBidWdzIGFuZCBleHRlbmRlZCBhIG51bWJlciBvZiBleGlzdGluZyBmdW5jdGlvbnMuCgktIE1vZGlmaWVkIHNlbGVjdGlvbiBmdW5jdGlvbnMgdG8gc3VwcG9ydCBhcmVhIHNlbGVjdGlvbiAoZm9yIGdyb3VwCgkgIHNlbGVjdGlvbiBpbiBMVlNfSUNPTiBhbmQgTFZTX1NNQUxMSUNPTikuCgoJKiBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiBtaXNzaW5nIGV2ZW50IG5vdGlmaWNhdGlvbnMuIFNvbWUgbW9yZSBkZWJ1Z2dpbmcKCW1lc3NhZ2VzLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUmlraGFyZHVyIEVnaWxzc29uIDxyaWthcmR1ckBza3kuZnI+CglJY2VsYW5kaWMga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBiZXR0ZXIgZGVidWcgb3V0cHV0IGZvciBzdXJmYWNlIGNyZWF0aW9uCgktIGFkZGVkIChleHBlcmltZW50YWwpIERJQlNlY3Rpb24gaW1wbGVtZW50YXRpb24gb2YgR2V0REMgLyBSZWxlYXNlREMKCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDb3JyZWN0ZWQgd2FybmluZy4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVN1cHBvcnQgVFBNX1JFVFVSTkNNRCBpbiBUcmFja1BvcHVwTWVudS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXggPHJldHVybj4ga2V5IChzb21laG93IHdlIGdldCBhIGNvbnRyb2wga2V5c3RhdGUpLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBjb21waWxhdGlvbiBlcnJvcyBvbiBub24tTGludXggc3lzdGVtcy4KCgkqIGluY2x1ZGUvZGVidWd0b29scy5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgVFJBQ0UgZGVmaW5lIHdoZW4gTk9fREVCVUdfTVNHUyB3YXMgZGVmaW5lZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBtaXNzaW5nIFdJTkFQSSBmb3IgU0hWYWxpZGF0ZVVOQy4KCgkqIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkYXB0ZWQgdG8gdGhlIG5ldyBkbGwgcmVzb3VyY2UgaGFuZGxpbmcgYnkgQmVydGhvIFN0dWx0aWVucy4KCk1vbiBNYXkgMjQgMTU6MDI6MTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2Mvc2hlbGwuYzogUmVsZWFzZSB0aGUgV2luMTZMb2NrIGJlZm9yZSBjYWxsaW5nIFdpbkV4ZWMuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmM6CglSZW1vdmVkIHByb2Nlc3MgYXJndW1lbnQgdG8gUFJPQ0VTU19DYWxsVXNlclNpZ25hbFByb2MuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgcmVtYWluaW5nIGluaXRpYWxpc2F0aW9ucyB0byB0aGUgbmV3IHByb2Nlc3MgY29udGV4dC4KCVNodWZmbGVkIHRoaW5ncyBhcm91bmQgYSBiaXQgaW4gUFJPQ0VTU19TdGFydCB0byBhdm9pZCBkZWFkbG9ja3MuCglDaGFuZ2VkIFBST0NFU1NfQ2FsbFVzZXJTaWduYWxQcm9jIHRvIGF2b2lkIGFjY2Vzc2luZyBhbm90aGVyIHByb2Nlc3MKCWFkZHJlc3Mgc3BhY2UuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUFkZGVkIHN1cHBvcnQgZm9yIGR1bXBpbmcgdmFyaWFibGUtc2l6ZSBkYXRhIG9mIHNlcnZlciByZXBsaWVzLgoJQWRkZWQgY21kX2xpbmUgYW5kIGNtZF9zaG93IGluIG5ld19wcm9jZXNzIHJlcXVlc3QuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglmaXhlZCBidWlsdGluIG1tc3lzdGVtLmRsbCBpbml0IHNlcXVlbmNlCgoJKiBtdWx0aW1lZGlhL0F0dGljL2luaXQuYywgbXVsdGltZWRpYS9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJcmVtb3ZlZCBvYnNvbGV0ZWQgaW5pdC5jIHNvdXJjZSBmaWxlCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglyZW1vdmVkIHVubmVjZXNzYXJ5IE1DSSBkcml2ZXJzIGVudHJ5IHBvaW50CglhZGRlZCB1bmRvY3VtZW50ZWQgbW1zeXN0ZW0gZnVuY3Rpb25zCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+Cgltb3ZlZCB0byBuZXcgdHJhY2UgaW50ZXJmYWNlCglub3cgY2FsbGluZyB0aW1lIGluaXQgZnVuY3Rpb24gZnJvbSBtbXN5c3RlbSBhbmQvb3Igd2lubW0gZW50cnkgcG9pbnQKCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglpbmNsdWRlZCBETEwgaW5pdCBzZXF1ZW5jZSAoZnJvbSBvYnNvbGV0ZWQgaW5pdC5jKQoJZml4ZWQgYnVpbHRpbiBtbXN5c3RlbS5kbGwgaW5pdCBzZXF1ZW5jZQoJZml4ZWQgUGxheVNvdW5kIHdoZW4gdXNlZCB3aXRoIGFuIGFzeW5jaHJvbm91cyBhdWRpbyBkcml2ZXIKCWZpeGVkIG1pZGlTdHJlYW0gZnVuY3Rpb25zIGZvciBTdG9wL1BhdXNlL1Jlc3RhcnQgZnVuY3Rpb25zCglmaXhlZCBlcnJvciBoYW5kbGluZyBpbiB3YXZlT3V0T3BlbiB3aXRoIFFVRVJZX0ZPUk1BVCBmbGFnCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglpbmNsdWRlZCBtaWRpIGluaXQgc2VxdWVuY2UgKGZyb20gb2Jzb2xldGVkIGluaXQuYykKCW1vdmVkIHRvIG5ldyB0cmFjZSBpbnRlcmZhY2UKCXNpbXBsaWZpZWQgY29kZSB3aXRoIHVzaW5nIG5ldyBjb25maWd1cmF0aW9uIGNvbnN0YW50IChIQVZFX09TU19NSURJKQoJZml4ZWQgZXJyb25lb3VzIHdhcm5pbmdzCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWluY2x1ZGVkIG1jaSBpbml0IHNlcXVlbmNlIChmcm9tIG9ic29sZXRlZCBpbml0LmMpCgltb3ZlZCB0byBuZXcgdHJhY2UgaW50ZXJmYWNlCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJb3V0cHV0OiBiZXR0ZXIgaW50ZXJuYWwgdGhyZWFkIGludGVyZmFjZSAob3J0aG9nb25hbGl6YXRpb24gb2Ygc3RhdGVzIGFuZCBldmVudHMpCglvdXRwdXQ6IHJlbW92ZWQgdXNlIG9mIERTUF9JT0NUTF9HRVRPU1BBQ0UKCW91dHB1dDogZml4ZWQgbGF0ZW5jeSBpbiByZXNldCBtZXNzYWdlcyBoYW5kbGluZwoJb3V0cHV0OiByZXBsYWNlZCBzb21lIHBvbGxpbmcgbWVjaGFuaXNtcyB3aXRoIGJsb2NraW5nIG9uZXMKCW91dHB1dDogZml4ZWQgZ2V0L3NldCB2b2x1bWUgZnVuY3Rpb25zCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+Cgltb3ZlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZQoJZml4ZWQgYnVncyBpbiBwYXVzZS9wbGF5L3N0b3AgZnVuY3Rpb25zCglmaXhlZCBzaWduYXR1cmUgb2YgZHJpdmVyIGVudHJ5IHBvaW50CgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+Cgltb3ZlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZQoJZml4ZWQgYnVncyBpbiBwYXVzZS9wbGF5IGZ1bmN0aW9ucwoJZml4ZWQgc2lnbmF0dXJlIG9mIGRyaXZlciBlbnRyeSBwb2ludAoKCSogbXVsdGltZWRpYS9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdHJhY2VzLgoKCSogd2luZG93cy9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmUgZXh0cmFuZW91cyB3aW51c2VyMTYuaC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIHByaW50ZiBpbnRvIFRSQUNFLgoKCSogZGVidWdnZXIvZXhwci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IHR5cG9zLgoKCSogZGVidWdnZXIvc3RhY2suYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGVjayB3aGVuIGJhY2t0cmFja2luZyB0aGUgc3RhY2sgaWYgZnJhbWVzIGFyZSBjb3JyZWN0IChyZWFkYWJsZSkuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3dpbnNvY2suaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzYy93aW5zb2NrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIFdJTlNPQ0sgbmV0d29yayBJTyBldmVudCBoYW5kbGluZyB0byBzcGVjaWFsIHRocmVhZC4KCVJlbW92ZWQgRVZFTlRfV2FpdE5ldEV2ZW50LCBpbnRyb2R1Y2VkIGEgZ2xvYmFsIHNjaGVkdWxlciBldmVudC4KCgkqIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXYWl0IHVudGlsIGNoaWxkIGluaXRpYWxpemVkIGJlZm9yZSByZXR1cm5pbmcgZnJvbSBQUk9DRVNTX0NyZWF0ZS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIva2VybmVsMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHJlZ2lzdGVyIGZ1bmN0aW9ucyB3aXRoIGFyZ3VtZW50cyBmb3IgTG9nQXBpVGhrLi4uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglDbGVhbmVkIHVwIExJU1RWSUVXX0tleURvd24gYnkgdXNpbmcgTElTVFZJRVdfR2V0TmV4dEl0ZW0uICBSZW1vdmVkIHVudXNlZAoJdmFyaWFibGUgaW4gTElTVFZJRVdfR2V0TmV4dEl0ZW0uCgpTdW4gTWF5IDIzIDIwOjAyOjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCVVzZSB0aGUgbmV3IGRlYnVnIGZ1bmN0aW9ucyB0byBzZW5kIGRlYnVnIGV2ZW50cyBhdCBhcHByb3ByaWF0ZSBwbGFjZXMuCglQYXNzIHRoZSBwcm9jZXNzIGNyZWF0aW9uIGZsYWdzIHRvIFBST0NFU1NfQ3JlYXRlLgoKCSogc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCB3aW4zMi9uZXdmbnMuYywgd2luMzIvcHJvY2Vzcy5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgbWlzYy9sc3RyLmM6CglJbXBsZW1lbnRlZCB0aGUgV2luMzIgZGVidWcgQVBJIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBkZWJ1ZyBldmVudHMgc3VwcG9ydC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE1heSAyMyAxMDoyNToyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbGR0LmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvc3RyaW5nLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3NlcnZpY2VzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2NvZGVfcGFnZS5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2Vycm9yLmMsIHdpbjMyL2ZpbGUuYywgd2luMzIvaW5pdC5jLCB3aW4zMi9wcm9jZXNzLmMsIHdpbjMyL3N0cnVjdDMyLmMsIHdpbjMyL3RocmVhZC5jLCB3aW4zMi90aW1lLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBtZW1vcnkvYXRvbS5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZHdGbGFncyBtdXN0IGRlc2NyaWJlIHRhcmdldCBwcm9jZXNzIGluIFVzZXJTaWduYWxQcm9jLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJIHRvIFNIRUxMMzJfNjU0IHN0dWIuICBGaXhlcyBjcmFzaCBpbiBXaW45OAoJRXhwbG9yZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglMSVNUVklFV19LZXlEb3duOiBJbnZhbGlkYXRlIHRoZSBsaXN0dmlldyB3aW5kb3cgb25seSB3aGVuIHRoZQoJc2VsZWN0ZWQgaXRlbSBjaGFuZ2VzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtaXNjL3dzcHJpbnRmLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIva2VybmVsMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgX0RlYnVnT3V0cHV0IChLRVJORUwuMzI4KSwgTG9nQXBpVGhrIChLRVJORUwuNDIzKSwgTG9nQXBpVGhrTFNGCgkoS0VSTkVMMzIuNDIpLCBMb2dBcGlUaGtTTCAoS0VSTkVMMzIuNDQpLCBMb2dDQlRoa1NMIChLRVJORUwzMi40NyksCglhbmQgU1NDb25maXJtU21hbGxTdGFjayAoS0VSTkVMLjcwNCkuCgoJKiBpZjE2MzIvZGlzcGxheS5zcGVjLCB3aW5kb3dzL2Rpc3BsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IHR5cG8gKHdyb25nIERJU1BMQVkuQ2hlY2tDdXJzb3Igb3JkaW5hbCkuCglTdXBlcmZsdW91cyBGSVhNRSBjb252ZXJ0ZWQgdG8gVFJBQ0UgaW4gQ2hlY2tDdXJzb3IuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogc3lzbGV2ZWwgcmVsYXkgY2hlY2sgd2FzIHRvbyBzdHJpY3QuCgoJKiBzZXJ2ZXIvbWFwcGluZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCB1c2UgcGFnZXNpemUgYWxpZ25lZCBzaXplX2xvdyB0byBncm93IG1hcHBlZCBmaWxlLCBidXQgb3JpZ2luYWwKCXNpemVfbG93LiAoZml4ZXMgSGVpc2VzIEluZGV4IFJlZ2lzdGVyKQoKU2F0IE1heSAyMiAxOToyMjoyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIHNvbWUgbW9yZSBkZWJ1ZyBvdXRwdXQKCS0gY29ycmVjdGVkIGEgc2xpZ2h0IGJ1ZyBpbiBER0EgRGlyZWN0RHJhdyBjcmVhdGlvbgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBtYWpvciBtZW1vcnkgbGVhayBpbiB0aGUgd2luZG93IG1hbmFnZW1lbnQgY29kZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW4gU2V0V2luZG93UG9zIGlmIGNoYW5naW5nIFogb3JkZXIgYW5kIGNoaWxkIHdpbmRvdyBub3QgeWV0IGluIGl0cwoJcGFyZW50IGxpc3QsIGRvIG5vdCBsaW5rIGl0IGluIFdJTlBPU19TaG93SWNvblRpdGxlLCBjaGVjayBmb3IgcmV0dmFsCglvZiBXSU5fRmluZFduZFB0ci4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCURpc2FibGUgcGFzc2luZyBkZXZpY2UgY29udGV4dCB0byBYMTFEUlZfRElCX0J1aWxkQ29sb3JNYXAgd2hlbiBSR0IKCWNvbG9ybWFwIGlzIHVzZWQuCgoJKiBkZWJ1Z2dlci9kYmcueTogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBmcmVlemUgb3RoZXIgdGhyZWFkIHdoaWxlIGl0IG1heSBob2xkIHRoZSBYIGNyaXRpY2FsIHNlY3Rpb24uCgoJKiBpbmNsdWRlL2Rpc3BsYXkuaCwgbG9hZGVyL21haW4uYywgd2luZG93cy9kaXNwbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFVzZXJSZXBhaW50RGlzYWJsZTE2KCkuCgoJKiB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBFVkVOVF9XYWl0TmV0RXZlbnQoKSBjYWxscy4KCgkqIHdpbmRvd3MvaW5wdXQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBJc1VzZXJJZGxlMTYoKS4KCgkqIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBFVkVOVF8gZHJpdmVyIGNoYW5nZXMuCgoJKiBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIGV2ZW50IHN5bmNocm9uaXphdGlvbiBjaGFuZ2VzLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgWCBpbnB1dCBldmVudCBoYW5kbGluZyBvdXQgb2YgRVZFTlRfV2FpdE5ldEV2ZW50IGFuZCBpbnRvCglzZXJ2aWNlIHRocmVhZCBjYWxsYmFjazsgbW92ZWQgRVZFTlRfV2FpdE5ldEV2ZW50IG91dCBvZiB0aGUgRVZFTlRfCglkcml2ZXIuICBDaGFuZ2VkIHdpbkNvbnRleHQgdG8gaG9sZCBIV05EIGluc3RlYWQgb2YgV05EICouCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNoYW5nZSBaLW9yZGVyIG9mIGNoaWxkIHdpbmRvd3Mgd2hlbiBhY3RpdmF0aW5nLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luc3Bvb2wuaCwgcmVsYXkzMi93aW5zcG9vbC5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgQWRkUHJpbnRlckEsIEFkZFByaW50ZXJEcml2ZXJBIGFuZCBHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5CglNb3ZlZCBzb21lIDE2Yml0IEdESSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZnJvbSB3aW5zcG9vbC5oIC0+IHdpbmdkaTE2LmgKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNyZWF0ZSBhIG5ldyBjb25maWd1cmF0aW9uIG1hbmlmZXN0IGNvbnN0YW50IEhBVkVfT1NTX01JREkuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIHNpbGx5IEVJTlRSIGJ1ZyB3aXRoIHN0YXJ0aW5nIGRvc21vZC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglTaG91bGQgY29tcGFyZSB0byBYMTEgY29uc3RhbnQgIk5vbmUiIHNpbmNlIGEgY29sb3JtYXAgaXMgYW4gWAoJUmVzb3VyY2UgSUQgYW5kIG5vdCBhIHBvaW50ZXIuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJU3RvcCBhIGxpc3Rib3ggYnVnIHRoYXQgY2F1c2VzIGEgZGl2IGJ5IHplcm8gd2hlbiB0aGUgaXRlbSBoZWlnaHQKCWlzIHplcm8uIERvZXNuJ3Qgc29sdmUgdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0gdGhvdWdoLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmM6CglBbmRyZSBNYWxhZmF5YSBCYXB0aXN0YSA8TWFsYWZheWFAbWlsZW5pbzMucHQ+CglBYm91dCBkaWFsb2cgdHJhbnNsYXRlZCB0byBQb3J0dWd1ZXNlLgoKCSogaWYxNjMyL3RodW5rLmM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCXRhc2suaCB3YXMgaW5jbHVkZWQgdHdpY2UuICBSZW1vdmluZyBvbmUgZml4ZWQgYSBzaWcxMSBpbiBnY2MtMi43LjIuMy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoZWNrIGlmIGRjIGhhcyBiZWVuIGNyZWF0ZWQgYmVmb3JlIHVzaW5nIGl0LgoKCSogZ3JhcGhpY3MvZXNjYXBlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBhIGZldyBtb3JlIDMyLT4xNiBFc2NhcGUgY29udmVyc2lvbnMuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIGlmMTYzMi9yZWxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGVjayBmb3Igc3lzbGV2ZWwgdmlvbGF0aW9ucyB3aGlsZSByZWxheSBkZWJ1Z2dpbmcuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvc3lzbGV2ZWwuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbmRvd3Mvd2luLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcHJvdmVkIHN5c2xldmVsIGhhbmRsaW5nLCBzdG9yZSBjdXJyZW50bHkgaGVsZCBzeXNsZXZlbHMgaW4gdGhyZWFkCglkYXRhYmFzZSwgV0lOX0NyaXRTZWN0aW9uIGNvbnZlcnRlZCB0byBzeXNsZXZlbC4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJQWRkZWQgbW1zeXN0ZW0uaCBpbmNsdWRlLgoKCSogbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy91c2VyLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgRXhpdEtlcm5lbDE2IChyZXBsYWNpbmcgVVNFUl9FeGl0V2luZG93cyksIEV4aXRQcm9jZXNzMTYsIGFuZAoJTWFwUHJvY2Vzc0hhbmRsZTsgc3R1YiBmb3IgQlVOTllfMzUxLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSGFuZGxlIHByb2MgPT0gTlVMTCBpbiBUSFVOS19TZXREQ0hvb2sgY29ycmVjdGx5LgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIHVuZG9jdW1lbnRlZCBjb21iaW5hdGlvbgoJR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdBKHNlY3Rpb24gPT0gTlVMTCwgZW50cnkgPT0gTlVMTCwgLi4uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQ2xlYW5lciBudWxsIHBvaW50ZXIgY2hlY2sgaW4gSEVBREVSX0luc2VydEl0ZW1BIGFuZCBIRUFERVJfSW5zZXJ0SXRlbVcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBHZXROZXh0SXRlbSBmb3IgdGhlIExpc3R2aWV3IGNvbnRyb2wuCgoJKiBzY2hlZHVsZXIvc2VydmljZXMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglFeHBpcmUgdGltZXJzIG9uIGV4cGlyeSB0aW1lIHRvbywgbm90IGp1c3QgYWZ0ZXIuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9kc291bmQuYywgb2xlL2FudGltb25pa2VyLmMsIG9sZS9iaW5kY3R4LmMsIG9sZS9jb21wb3NpdGVtb25pa2VyLmMsIG9sZS9kYXRhY2FjaGUuYywgb2xlL2RlZmF1bHRoYW5kbGVyLmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvaWZzLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbWVtbG9ja2J5dGVzLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGVmb250LmMsIG9sZS9vbGVvYmouYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jLCB3aW5kb3dzL2RpbnB1dC5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCU1pY3Jvc29mdCBjb20gdnRhYmxlIGNvbXBhdGliaWxpdHkgd29ya2Fyb3VuZCBmb3IgZysrLiAgQmFzaWNhbGx5IGFkZHMKCWFuIG9wdGlvbmFsIDggYnl0ZXMgcGFkZGluZyB0byBDT00gb2JqZWN0cyB3aGVyZSB0aGUgUlRUSSB3b3VsZCBiZS4KCgkqIGluY2x1ZGUvc3lzbWV0cmljcy5oLCBtaXNjL3NoZWxsLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBhbGwgb2NjdXJlbmNlcyBvZiBTWVNNRVRSSUNTX3h4IGFuZCBzeXNNZXRyaWNzW1NNX3h4XSBieQoJR2V0U3lzdGVtTWV0cmljcyhTTV94eCksIHJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBpbmNsdWRlcyBvZgoJc3lzbWV0cmljcy5oLgoKCSogbXNkb3MvaW50MTYuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBJTlRfSW50MTZBZGRDaGFyLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglCdWdmaXg6IFByZXZlbnQgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlIGluIFRSQUNFIGFyZ3VtZW50IGxpc3QgaW4KCVJFU19GaW5kUmVzb3VyY2UKCgkqIGxvYWRlci9lbGZkbGwuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeGVkIHdyb25nIE5FIG1vZHVsZSByZWdpc3RyYXRpb24gc28gdGhhdCByZXNvdXJjZXMgd29yay4KCgkqIGlmMTYzMi90aHVuay5jLCB0b29scy9idWlsZC5jLCB3aW4zMi9rZXJuZWwzMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZXQgJWVieCB0byBwb2ludCB0byByZWFsIDE2LWJpdCBzdGFjayBpbiBDQkNsaWVudFRodW5rU0wuCglQYXNzICVlc2kgYmFjay1hbmQtZm9ydGggaW4gQ0JDbGllbnRUaHVua1NMKEV4KS4KCUNvcHkgbW9kaWZpZWQgYnVmZmVycyBiYWNrIGFmdGVyIHJldHVybiBmcm9tIEZUX1RodW5rLgoJRml4IGJyb2tlbiByZWNvZ25pdGlvbiBvZiBMUyB0aHVua2xldHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB1c2Ugb2Ygd2luLmgsIHN5c21ldHJpY3MuaCBhbmQgYXNzb2NpYXRlZCBXSU5FIFVTRVIgaW50ZXJuYWwKCXZhcmlhYmxlcy4gQWRkZWQgbWlzc2luZyBpbmZvUHRyLT5CdWRkeSA9IGh3bmRCdWQ7IGluIHVwZG93bi5jCgoJKiBkbGxzL2NvbWN0bDMyL0F0dGljL3Byb3BzaGVldC5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90b29sYmFyLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJVG9vbGJhciBjdXN0b21pemF0aW9uIGRpYWxvZyAodGFrZSBvbmUpLgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgR2V0VG9wV2luZG93IHNvIGl0IHdpbGwgY29ycmVjdGx5IGhhbmRsZSB0aGUgTlVMTCBwYXJhbWV0ZXIuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggc3dhcHBlZCBGcmVlTGliYXJ5IHJldHVybiB2YWx1ZXMuIEhhbmRsZSBGcmVlTGlicmFyeSggMCApIGJldHRlci4KCUZpeCBETExfUFJPQ0VTU19ERVRBQ0ggY2FsbCBzZXF1ZW5jZSBidWdzIHJlc3VsdGluZyBmcm9tIG5lc3RlZAoJRnJlZUxpYnJhcnkgY2FsbHMuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzcGVjcyBmb3IgbWl4ZXJHZXREZXZDYXBzMTYvbWl4ZXJHZXRJRDE2LCBmaXhlZCBtaXhHZXREZXZDYXBzMTYuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MjEuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hhbmdlZCBnbG9iYWwgRE9TX0xPTCBpbnRvIGZ1bmN0aW9uIERPU01FTV9MT0woKSBpbiBvcmRlciB0byBvcGVyYXRlCglvbiB0aGUgY29ycmVjdCBhZGRyZXNzIHNwYWNlLiBBZGRlZCBET1NNRU1fTW92ZVBvaW50ZXJzKCkgdGhhdAoJcmVsb2NhdGVzIHNlbGVjdG9ycyB3aGVuIHRoZSBET1MgYWRkcmVzcyBzcGFjZSBjaGFuZ2VzIChpLmUuIHdoZW4KCWRvc21vZCBpcyBzcGF3bmVkLCBwYXJ0aWN1bGFybHkgZnJvbSBXaW4xNiBhcHBzIHRoYXQgdXNlcyBEUE1JIHRvCglleGVjdXRlIHJlYWwtbW9kZSBjb2RlKS4gTW9yZSBjb21wbGV0ZSBET1MgZGV2aWNlIGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBNWl9DdXJyZW50KCkgKHJldHVybnMgY3VycmVudCBMUERPU1RBU0spIGFuZCBET1NWTV9XYWl0KCkKCShET1NWTSBpZGxlIG1lc3NhZ2UgbG9vcCksIGFuZCBmaWVsZHMgaENvbklucHV0IGFuZCBoQ29uT3V0cHV0LgoKCSogb2JqZWN0cy9iaXRtYXAuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUFkZCBzb21lIG51bGwgY2hlY2tpbmcgaW4gdGhlIEdldC9TZXRCaXRtYXBCaXRzIGZ1bmN0aW9ucy4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGluaXQgZnVuY3Rpb24gZm9yIENSVERMTCwgYWxsb2NhdGUgc3RkaW8vc3RkZXJyL3N0ZG91dCBvbgoJRExMX1BST0NFU1NfQVRUQUNILCBpbmNyZWFzZSBidWZmZXIgZm9yIHZmcHJpbnRmKCkgKFdpbjk1IGFycC5leGUKCW5lZWRzIDEuM0tCKS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIEZyZWVCU0QgMy4wIHRvIERFQlVHX2NoZWNrbWFwX2JhZCgpLgoKCSogbWlzYy93aW5zb2NrLmM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVByaW50IGEgbW9yZSBlZmZlY3RpdmUgKGFuZCB2aXNpYmxlKSBlcnJvciBtZXNzYWdlIHdoZW4gYW4gYXBwbGljYXRpb24KCWNhbid0IGNyZWF0ZSBhIHNvY2tldCB3aXRoIHR5cGUgPT0gU09DS19SQVcuCgoJKiBpbmNsdWRlL21tcmVnLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBtb3JlIGRlZmluZXMgZm9yIG11bHRpbWVkaWEuCgoJKiBtc2Rvcy92eGQuYywgd2luMzIvZGV2aWNlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCVNvbWUgc3R1YnMgZm9yIHBjY2FyZCB2eGQgdG8gZGVidWcgdGhlIG5hdGl2ZSBzaGVsbDMyLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIHNlcnZpY2UgdGhyZWFkIGZvciAidHJ1ZSIgbXVsdGltZWRpYSB0aW1lcnMuCglSZW1vdmVkIGltcGxlbWVudGF0aW9uIG9mIGZha2UgbXVsdGltZWRpYSB0aW1lcnMuCglTZXQgbWluaW11bSByZXNvbHV0aW9uIHRvIDEwIG1zICh0aGUgdGltaW5nIHJlc29sdXRpb24gb2YgdGhlIExpbnV4CglrZXJuZWwpLiBGaXhlZCBhIGNvdXBsZSBvZiBmbGF3cy4KCgkqIG1pc2Mvc3B5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJSW1wbGVtZW50ZWQgcHJpbnRpbmcgb3V0IG9mIHNvbWUgc3RydWN0dXJlcy4KClRodSBNYXkgMjAgMTY6NDA6MjMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NvY2tldC5jOgoJU2V0IG9ubHkgdGhlIGNsaWVudCBzb2NrZXQgaW4gbm9uLWJsb2NraW5nIG1vZGUgaW5zdGVhZCBvZiBhbGwgZmRzOwoJc2hvdWxkIGF2b2lkIHByb2JsZW1zIHdpdGggc3RkaW8gaGFuZGxlcy4KCk1vbiBNYXkgMTcgMTY6MjA6NTMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2luc3Bvb2wuaCwgbWlzYy9BdHRpYy9zcG9vbGVyLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9kYy5jLCBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBncmFwaGljcy9kcml2ZXIuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbnYuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IERvY3VtZW50UHJvcGVydGllcywgRGV2aWNlQ2FwYWJpbGl0aWVzLCBiZWdpbm5pbmdzIG9mCglPcGVuL0dldC9DbG9zZVByaW50ZXIuICBBZGRpdGlvbnMgdG8gUFNEUlZfRGV2aWNlQ2FwYWJpbGl0aWVzLgoJU3BsaXQgb2ZmIFdJTlNQT09MIGludG8gaXRzIG93biBkaXJlY3RvcnkuCglTZXZlcmFsIGZ1bmN0aW9ucyBhZGRlZCB0byBEQ19GdW5jcy4KCUJhc2VkIGxhcmdlbHkgb24gYSBwYXRjaCBieSBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWdsaWRlMnggbG9hZG9yZGVyIGlzICJzbyxuYXRpdmUiLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcHJvdmVkIHNob3J0Y3V0cyAtIGZvbGxvd3MganVtcHMgaW4gdHJ5aW5nIHRvIGF2b2lkIHN3aXRjaGluZyB0bwoJcmVhbCBtb2RlIHVubmVjZXNzYXJpbHkuCgoJKiBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3M6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXBkYXRlZCBhbmQgaW1wcm92ZWQgaW5zdHJ1Y3Rpb25zLgoKCSogZGVidWdnZXIvZXhwci5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgIldpbmUtZGJnPnNldCAqc2VnOm9mZiA9IHZhbCIgd29yayAocHJldmlvdXNseSBvbmx5CgkiV2luZS1kYmc+c2V0ICpvZmYgPSB2YWwiIHdvcmtlZCkuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmM6CglKdWtrYSBLYW5nYXMgPGp0a2FuZ2FzQG5pYy5maT4KCVdoZW4gb3BlbmluZyB0aGUgZmlsZSB3ZSBkb24ndCBuZWVkIE1NSU9fRVhDTFVTSVZFCglyaWdodHMuIE1NSU9fREVOWVdSSVRFIHNob3VsZCBiZSBzdWZmaWNpZW50LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglQcmV2ZW50IGNyYXNoIGluIHN0dWIgb2YgU2hlR2V0RGlyVy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCUZ1cnRoZXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIEZpbGVNZW51LgoKCSogd2luZG93cy9tZGkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglTZXQgdGhlIGRlZmF1bHQgbWVudSBpdGVtIG9mIHRoZSB3aW5kb3cgbWVudQoKCSogd2luZS5pbmk6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUNoYW5nZWQgc2VyaWFsIHBvcnRzIGluIHdpbmUuaW5pIHRvIC9kZXYvdHR5U1ggZnJvbSAvZGV2L2N1YVggaW4KCWFjY29yZGFuY2Ugd2l0aCBMaW51eCAyLjIgQ2hhbmdlcyBmaWxlLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbGVhc2UgV2luMTZMb2NrIHdoZW4gY2FsbGluZyBMb2FkTGlicmFyeTMyIGZyb20gMTYtYml0IGNvZGUuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBUSFVOS19TZXREQ0hvb2sgd2hlbiB1c2luZyBuYXRpdmUgVVNFUi4KCgkqIHdpbjMyL2tlcm5lbDMyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBGVF9Qcm9sb2dQcmltZSB3YXMgYnJva2VuIGR1ZSB0byByZWxheSBjaGFuZ2VzLgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNvbWUgc3R1YnMgYWRkZWQuCgoJKiB3aW5kb3dzL2hvb2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdXNwZW5kIHdpbmRvdyBsb2NrcyBiZWZvcmUgY2FsbGluZyBob29rIHByb2NlZHVyZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgd2luZG93IHJlZmNvdW50IGhhbmRsaW5nIGluIEdldE5leHREbGdHcm91cEl0ZW0uCgoJKiBjb250cm9scy9idXR0b24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBzdXBlcmZsdW91cyBXSU5fUmVsZWFzZVduZFB0ci4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQG11ZC5kZT4KCVhsaWJfSURpcmVjdERyYXdTdXJmYWNlNEltcGxfRmxpcCBzaG91bGQgc2hvdyAnZmxpcHRvJyBzdXJmYWNlLCBub3QKCXByZXZpb3VzIG9uZS4gKHJlcG9ydGVkIGJ5IE92ZSkKClN1biBNYXkgMTYgMTc6MTE6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglBZGRlZCBhIGZldyBtaXNzaW5nIGRlYnVnIGV2ZW50IGRlZmluaXRpb25zLgoKCSogc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglBZGFwdGVkIHRvIG5ldyBzZWxlY3QgaW50ZXJmYWNlLgoJRml4ZWQgYnVnIGluICpfc2lnbmFsZWQgcm91dGluZXMgdGhhdCBjb3VsZCBjYXVzZSBidXN5LXdhaXRpbmcgaW4gdGhlCglzZWxlY3QgbG9vcC4KCgkqIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zb2NrZXQuYzoKCUNoYW5nZWQgc2VsZWN0IGludGVyZmFjZSwgc2VwYXJhdGVkIHRpbWVvdXRzIGZyb20gZmlsZSBkZXNjcmlwdG9ycy4KCgkqIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oOgoJTW92ZWQgcHJvY2VzcyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiB0byBwcm9jZXNzLmguCglBZGRlZCBzdXNwZW5kL3Jlc3VtZV9wcm9jZXNzLgoJTW92ZWQgaGFuZGxlIHRhYmxlIGJhY2sgaW50byB0aGUgcHJvY2VzcyBzdHJ1Y3R1cmUuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJQWRkZWQgVEVCIGluIGluaXRfdGhyZWFkIHJlcXVlc3QuCgpTYXQgTWF5IDE1IDEwOjUyOjU2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjZW11L2luc3RyLmM6CglUcmllZCB0byBhZGQgYW4gZXJyb3IgbWVzc2FnZSB3aGVuIGNyYXNoaW5nIG9uIGEgc2VsZWN0b3IgbG9hZCBiZWNhdXNlCglvZiBtaXNzaW5nIExEVCBzaGFyaW5nIGJldHdlZW4gdGhyZWFkcyAodW50ZXN0ZWQpLgoKCSogc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21haW4uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9BdHRpYy9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvQXR0aWMvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci9BdHRpYy90aHJlYWQuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJU2VydmVyIHJlb3JnYW5pemF0aW9uOgoJLSBtb3ZlZCByZXF1ZXN0IGhhbmRsZXJzIHRvIHRoZSBzcGVjaWZpYyBDIGZpbGVzCgktIG1vdmVkIGhhbmRsZSBtYW5hZ2VtZW50IHRvIGhhbmRsZS5jCgktIG1vdmVkIHNlcnZlciBwcml2YXRlIGluY2x1ZGVzIHRvIHNlcnZlci8gaW5zdGVhZCBvZiBpbmNsdWRlL3NlcnZlci8KCgkqIE1ha2UucnVsZXMuaW46IEdldCBpbmNsdWRlIGZpbGVzIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZpcnN0LgoKRnJpIE1heSAxNCAxODozOTozNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIFdJTl9HZXRXaW5kb3dJbnN0YW5jZSBieSBHZXRXaW5kb3dMb25nQShHV0xfSElOU1RBTkNFKSwKCXJlbW92ZWQgdW5uZWNlc3Nhcnkgd2luLmggaW5jbHVkZXMsIGFkZGVkIHN5c2xldmVsLmggdG8gcXVldWUuYy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgQ0JHZXREcm9wcGVkQ29udHJvbFJlY3QgdG8gYmUgY29tcGxpYW50IHdpdGggV2luZG93cyBBUEkuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHdpbjMyL2V4Y2VwdC5jOgoJRml4ZWQgYSBmZXcgYnVncywgYW5kIGltcHJvdmVkIHRoZSBleGNlcHRpb24gbWFjcm9zIChiYXNlZCBvbgoJc3VnZ2VzdGlvbnMgYnkgU2VyZ2VpIFR1cmNoYW5vdikuCgoJKiBkbGxzL3Zlci92ZXIxNi5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaXBjL2RkZV9hdG9tLmMsIGlwYy9kZGVfYXRvbV90ZXN0LmMsIGlwYy9zaG1fYmxvY2suYywgaXBjL3NobV9mcmFnbWVudC5jLCBpcGMvc2htX2ZyYWdtZW50X3Rlc3QuYywgaXBjL3NobV9tYWluX2Jsay5jLCBpcGMvc2htX3NlbWFwaC5jLCBpcGMvc2htX3NlbWFwaF90ZXN0LmMsIGlwYy93aW5lX3Rlc3Rfc3R1Yi5jLCByZWxheTMyL3Nub29wLmMsIHJlbGF5MzIvdXR0aHVuay5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvaW1hZ2VobHAvZGVidWcuYywgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmMsIGRsbHMvaW1hZ2VobHAvaW50ZXJuYWwuYywgZGxscy9pbWFnZWhscC9tb2RpZnkuYywgZGxscy9pbWFnZWhscC9zeW1ib2wuYywgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXNhY20zMi9idWlsdGluLmMsIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc2FjbTMyL2ZpbHRlci5jLCBkbGxzL21zYWNtMzIvZm9ybWF0LmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS94dGVybS5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBjb250cm9scy91aXRvb2xzLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NmRnYS5jLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeGxpYi5jLCB0c3gxMS90c194cG0uYywgdHN4MTEvdHNfeHJlc291cmNlLmMsIHRzeDExL3RzX3hzaG0uYywgdHN4MTEvdHNfeHV0aWwuYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgaW52YWxpZCB3aW5kb3cgcmVmY291bnQgaGFuZGxpbmcgaW4gUkRXX1BhaW50KCkuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXggYSBkZWFkbG9jayB3aXRoIHRoZSBzeXN0ZW0gbWVzc2FnZSBxdWV1ZSBieSBlbnN1cmluZyB0aGUgc3lzdGVtIG1lc3NhZ2UKCXF1ZXVlIGlzIHVubG9ja2VkIHdoaWxlIHRoZSBhY3R1YWwgbWVzc2FnZSBpcyBiZWluZyBwcm9jZXNzZWQuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNoZWNrIGlmIGluIGRlcHRoLWNvbnZlcnNpb24gbW9kZSBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yIG1lc3NhZ2UKCWluIElEaXJlY3REcmF3UGFsZXR0ZUltcGxfR2V0RW50cmllcy4KClRodSBNYXkgMTMgMTg6NTM6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdDNELCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJUmVwbGFjZWQgYWxsIHRoZSBNZXNhIHNwZWNpZmljIGNvZGUgYnkgR0xYIGNvZGUuIFNob3VsZCB3b3JrIG5vdyBvbgoJYW55IE9wZW5HTCBpbXBsZW1lbnRhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IDxUVGFycmFudEBFdG5vdGVhbS5JdD4KCUFkZGVkIEl0YWxpYW4ga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhIGNvdXBsZSBvZiBtZW1jcHkgZXJyb3JzLgoKCSogZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNtYWxsIGZpeCB0byBoZWxwIG5hdGl2ZSB3aW45NSBQcmludERsZyBvbiB0aGUgd2F5LgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBpZjE2MzIvd2luYXNwaS5zcGVjLCBpbmNsdWRlL2FzcGkuaDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIEluc2VydEluQVNQSUNoYWluIGFuZCBmaXhlZCBtaW5vciB0aGluZ3MuCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgcXVpdGUgaWxsIHdpbmRvdyBsb2NraW5nIGNvZGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhbiBpbmZpbml0ZSBsb29wIGluIENoaWxkV2luZG93RnJvbVBvaW50RXguCgoJKiBjb250cm9scy9tZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCS0gcHJldmVudCBjcmFzaCB3aGVuIEdldE1lbnVEZWZhdWx0SXRlbSBpcyBjYWxsZWQgb24gZW1wdHkgbWVudQoJLSBzZXQgZGVmYXVsdCBpdGVtIG9uIHN5c3RlbSBtZW51CgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCByZWxheTMyL250ZGxsLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oOgoJQWRhcHRlZCBmb3IgbmV3IHJlZ2lzdGVyIGZ1bmN0aW9ucyBzdXBwb3J0IChFU1BfcmVnIGluIHJlZ2lzdGVyCglmdW5jdGlvbnMgbm93IHBvaW50cyBhZnRlciB0aGUgYXJndW1lbnRzKS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHRvb2xzL2J1aWxkLmM6CglXaW4zMiByZWdpc3RlciBmdW5jdGlvbnMgY2FuIG5vdyBoYXZlIGFyZ3VtZW50cy4KCVNpbXBsaWZpZWQgcmVsYXkgZGVidWdnaW5nIGZvciByZWdpc3RlciBmdW5jdGlvbnMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2RldmljZS5jOgoJVnhEQ2FsbCBmdW5jdGlvbnMgZG8gbm90IG5lZWQgdG8gYmUgJ3JlZ2lzdGVyJy4KCldlZCBNYXkgMTIgMTY6MTA6NTMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IEZpeGVkIGJ1ZyBJIGludHJvZHVjZWQgaW4gcmVsYXkgZGVidWdnaW5nLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvQXR0aWMvZXhjZXB0LmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgd2luMzIvZXhjZXB0LmM6CglBZGRlZCBtYWNyb3MgYW5kIGRlZmluaXRpb25zIGZvciB1c2luZyBleGNlcHRpb24gaW5zaWRlIFdpbmUgb3IKCVdpbmVsaWIgY29kZS4KCgkqIGluY2x1ZGUvQXR0aWMvZXhjZXB0LmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5udC5oLCBtaXNjL2NydGRsbC5jLCB3aW4zMi9pbml0LmM6CglNb3ZlZCBzb21lIGV4Y2VwdGlvbiBkZWZpbml0aW9ucyB0byB3aW5udC5oIGFuZCBudGRkay5oLgoKCSogbXNkb3MvZGV2aWNlcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJIGZvciB0aGUgY2FsbGJhY2sgcHJvY3MuCgoJKiBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6IEFkZGVkIEVSUk9SX3NpZy4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXguCgoJKiBtaXNjL3dpbnNvY2suYywgaW5jbHVkZS93aW5zb2NrLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdTT0NLMzIvV0lOU09DSyB1c2VzIFNldExhc3RFcnJvcigpIHRvIGtlZXAgaXRzIG93biBXU0FMYXN0RXJyb3JzLAoJcmVwbGFjZWQgYWxsIHB3c2ktPmVyciByZWZlcmVuY2VzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IENoYW5nZWQgc29tZSBlcnJvciBoYW5kbGluZyBhIGJpdC4KCgkqIHdpbmRvd3Mvd2luLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xlYW5lciBTdXNwZW5kL1Jlc3RvcmVXbmRzTG9jaywgd2hpY2ggc2hvdWxkIGZpeCBzb21lIHNsb3duZXNzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL250ZGxsLnNwZWM6CglBZGRlZCBSdGxVbndpbmQgaW4gbnRkbGwsIGFuZCBtYWRlIGtlcm5lbDMyIHNwZWMgZW50cnkgYSBmb3J3YXJkIHRvCgl0aGUgbnRkbGwgb25lLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmg6CglBZGRlZCBpbXBvcnQgZGVjbGFyYXRpb24gZm9yIFdpbjMyIGJ1aWx0LWlucy4KCk1vbiBNYXkgMTAgMTQ6NDQ6NDggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZm9yd2FyZGVkIG9yZGluYWxzIGluIGJ1aWx0LWluIGRsbHMuCgpTdW4gTWF5ICA5IDE2OjE1OjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmM6CglGaXhlZCByZXF1ZXN0IHNpemUgZm9yIGFsbG9jX2NvbnNvbGUgYW5kIGZyZWVfY29uc29sZS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9udGRsbC5zcGVjLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS9BdHRpYy9leGNlcHQuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJSW1wcm92ZWQgZXhjZXB0aW9uIGhhbmRsaW5nLgoJQmFzZWQgb24gdGhlIHdvcmsgb2YgU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+LgoKCSogbG9hZGVyL21vZHVsZS5jOgoJVXNlIE9wZW5GaWxlKCkgdG8gdGVzdCBmb3IgZmlsZSBleGlzdGVuY2UsIHNvIHRoYXQgdGhlIHBhdGggZ2V0cwoJc2VhcmNoZWQuCgoJKiBzZXJ2ZXIvc2VsZWN0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVzdGFydCBpbnRlcnJ1cHRlZCBzZWxlY3QoKSAoaGFwcGVucyB3aXRoIC1wZykuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBvZmYtYnktb25lIGJ1ZyBpbiBtZW1vcnkgYWNjZXNzIGNoZWNrLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgZGVidWcgb3V0cHV0IGZvciBSZWdRdWVyeUluZm9LZXkuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgKHNpbGVudCBiYWNrdHJhY2Ugbm90IHRvdGFsbHkgc2lsZW50LCBjcmFzaGVzCgl3aGVuIHRoZSBzdGFjayBpcyBjb3JydXB0ZWQgb3Igc2ltaWxhcikuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClNhdCBNYXkgIDggMTg6Mzk6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVjb25mLmxpYnMvYXV0b2NvbmYuZW5nLCB0b29scy93aW5lY29uZi5saWJzL2F1dG9jb25mLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9icm93c2Vycy5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvZGlyYnJvd3Nlci50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvZ2VuZXJhbC5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvZ2V0ZmlsZW5hbWUudGNsLCB0b29scy93aW5lY29uZi5saWJzL21lc3NhZ2UudGNsLCB0b29scy93aW5lY29uZi5saWJzL21lc3NhZ2UyLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9zYXZlUkMudGNsLCB0b29scy93aW5lY29uZi5saWJzL3dpbmUtaGFsZi5naWYsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYuZW5nLCB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZjEudGNsLCB0b29scy93aW5lY29uZi50Y2w6CglKZWFuLUxvdWlzIFRoaXJvdCA8dGhpcm90QHVuaXYtYnJlc3QuZnI+CglBZGRlZCBncmFwaGljYWwgY29uZmlndXJhdGlvbiB0b29sIHdpbmVjb25mLnRjbC4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZ25vcmUgRVNDWyVkYyByZXBvcnRzIGdlbmVyYXRlZCBieSA4Yml0IGNvbnRyb2wgY29kZXMuCglPcGVuIGNvbnNvbGUgZXZlbiBpZiB3ZSBhbHJlYWR5IGhhdmUgb25lIGluIHRoZSBwcm9jZXNzLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIG9mZiBieSAxIGVycm9yIGluIHNlY3Rpb24gY29kZSAoZGlkIG5vdCByZXR1cm4gbGVuLTIgb24gYnVmZmVyCglvdmVyZmxvdyBpbiBzb21lIGNhc2VzLCBidXQgbGVuLTEpLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB3YXJuaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIHBhbGV0dGUgaGFuZGxpbmcgZm9yIHRydWUvaGlnaC1jb2xvciBYMTEuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBleHRlbnNpb24gaGFuZGxpbmcgaW4gTG9hZExpYnJhcnkxNi4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS93aW4uaCwgb2JqZWN0cy9yZWdpb24uYzoKCUFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCVJlYXJyYW5nZWQgUEFJTlRfUmVkcmF3V2luZG93KCkgc28gdGhhdCBpdCBmaXJzdCByZWN1cnNpdmVseSB1cGRhdGVzCglpbnZhbGlkIHJlZ2lvbnMgYW5kIG9ubHkgdGhlbiBzdGFydHMgc2VuZGluZyBvdXQgbWVzc2FnZXMuIFRoaXMgc2hvdWxkCgloZWxwIHdpdGggcmVlbnRyYW5jeSBkdXJpbmcgbWVzc2FnZSBwcm9jZXNzaW5nIGFuZCBub3cgaXQgbmVlZHMganVzdAoJb25lIChvciBub25lKSBzY3JhdGNoIHJlZ2lvbiBmb3IgYWxsIHRoZXJlIGlzIHRvIGRvLiBBbHNvLCBzbWFsbCBmaXhlcwoJZm9yIFNldFdpbmRvd1BvcygpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IEFkZGVkIGNoZWNrIGZvciBtaXNzaW5nIF9faTM4Nl9fIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RyYWNlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCB0b29scy93cmMvcGFyc2VyLnksIG9sZS9kYXRhY2FjaGUuYywgb2xlL2RlZmF1bHRoYW5kbGVyLmMsIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9tZW1sb2NrYnl0ZXMuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgdG9vbHMvYnVpbGQuYywgbWlzYy93c3ByaW50Zi5jLCBtaXNjZW11L2luc3RyLmMsIG1zZG9zL2lvcG9ydHMuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpcGMvYml0X2FycmF5LmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBkZWJ1Z2dlci9kYmcueSwgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFOU0kgQyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUGFzcyBQUk9QU0hFRVRQQUdFIHRvIHByb3BlcnR5cGFnZSBkaWFsb2cgYXMgbFBhcmFtLgoKCSogbWlzYy93aW5zb2NrLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBpcGMvZGRlX2F0b20uYywgaXBjL2dlbmVyaWNfaGFzaC5jLCBpcGMvc2htX2Jsb2NrLmMsIGlwYy9zaG1fbWFpbl9ibGsuYywgaXBjL3NobV9zZW1hcGguYywgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL3NpZ25hbC5jLCBtZW1vcnkvbGR0LmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvbWV0YWZpbGUuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3dpbnNvY2suaCwgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy9kaXNwZGliLmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRlYnVnZ2VyL21zYy5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBTlNJIEMgZml4ZXMuCgoJKiB3aW5kb3dzL2NhcmV0LmMsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbGluZWRkYS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oLCBncmFwaGljcy9wc2Rydi9mb250LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTcGxpdCBvZmYgd2luZ2RpMTYuaCBmcm9tIHdpbmdkaS5oLiAgQWRkIG1hbnkgbW9yZSAjZGVmaW5lcy90eXBlZGVmcwoJdG8gYnJpbmcgd2luZ2RpLmggYWxtb3N0IHVwdG8gYSBjb21wbGV0ZSBOVDQuMCBpbnRlcmZhY2UuCglGaXggcmV0dXJuIHZhbHVlIG9mIFNldFJlY3RSZ24oKS4KCgkqIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2lucG9zLmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCAjaW5jbHVkZSAid2luZS93aW51c2VyMTYuaCIgYW5kIHVzZSAic3RydWN0IHRhZz8/Pz8iIGluc3RlYWQuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcHJvdmVkIFdpbmUgZGVidWdnZXIgYmFja3RyYWNlLiBOZXcgZmVhdHVyZXM6CgktIERpc3BsYXlzIGVicCwgaW4gY2FzZSB5b3Ugd2FudCB0byBjaGVjayBzdGFja2ZyYW1lcyBtYW51YWxseQoJLSBEZXRlY3RzIGZhciBjYWxscyBldmVuIHdoZW4gd2luZG93cyBhcHBzIGRvbid0IG1hcmsgdGhlbQoJLSBUcmFja3MgQ2FsbEZyb20xNi9DYWxsVG8xNiByZWxheWluZyAodGh1bmtpbmcpCgoJKiBsb2FkZXIvZWxmZGxsLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUJ1Z2ZpeDogZ2V0X3NvYmFzZW5hbWUgd2FzIG9mZiBieSBvbmUgcG9pbnRlciBpbmNyZW1lbnQuCgoJKiBtdWx0aW1lZGlhL2luaXQuYzogS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUZpeGVkIGltcGxpY2l0IHR5cGUgd2FybmluZy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglWYWx1ZXMgcmV0dXJuZWQgZnJvbSBQdEluUmVjdCBhbmQgTEJfSVRFTUZST01QT0lOVCBhcmUgcmV2ZXJzZWQuCgoJKiBvbGUvZGF0YWNhY2hlLmMsIG9sZS9kZWZhdWx0aGFuZGxlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9vbGVvYmouYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVNlY29uZCBwYXJ0IG9mIHRoZSBPTEUgZGF0YWNhY2hlIGltcGxlbWVudGF0aW9uLgoKCSogbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDIxLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21zZG9zLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIERPUyBMaXN0IG9mIExpc3RzIGluaXRpYWxpemF0aW9uLCBhbmQgYWRkZWQgdGhlIGJlZ2lubmluZ3Mgb2YKCXRoZSBET1MgZGV2aWNlIHN0cnVjdHVyZXMuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIGluY2x1ZGUvd2lucmVnLmgsIG1pc2MvcmVnaXN0cnkuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeGVzLgoKCSogb2xlL2hnbG9iYWxzdHJlYW0uYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBHZXRIR2xvYmFsRnJvbVN0cmVhbS4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBUSFJFQURfRnJlZVRIREIgYXMgc2VydmljZSB0aHJlYWQgY2FsbGJhY2suCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgbG9hZGVyL3Rhc2suYywgd2luZG93cy90aW1lci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIFRJTUVSX1N3aXRjaFF1ZXVlLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGb3JtYXQgb3V0cHV0IGluIERFQlVHX0V4YW1pbmVNZW1vcnkgZm9yICJkIiBhbmQgIngiIG5vdCB0byBleGNlZWQgODAKCWNoYXJzLgoKCSogbG9hZGVyL3NpZ25hbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0b3Agd2luZWxpYiBwcm9ncmFtcyBvbiBmYXVsdCBpbnN0ZWFkIG9mIGVuZGxlc3MgZmF1bHRsb29waW5nLgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVJ1biBsZGNvbmZpZyBpbiBtYWtlIGluc3RhbGwgaWYgdXNpbmcgLS1lbmFibGUtZGxsLgoJQ2xlYW5lZCB1cCB1bmluc3RhbGxfbGliIGFzIHdlbGwuCgoJKiBvbGUvc3RvcmFnZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaCwgcmVsYXkzMi9vbGUzMi5zcGVjLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL21lbWxvY2tieXRlcy5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBJU3RvcmFnZSBzdXBwb3J0ZWQgYnkgYW4gaW1wbGVtZW50YXRpb24gb2YKCUlMb2NrQnl0ZXMgb24gdG9wIG9mIGFuIEhHTE9CQUwuCgoJKiBmaWxlcy9wcm9maWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIGZyb20gR2V0UHJpdmF0ZVByb2ZpbGVTZWN0aW9uQS4KCUNvcHkvY29udmVydCBiYWNrIHRoZSBidWZmZXIgaW4gR2V0UHJpdmF0ZVByb2ZpbGVTZWN0aW9uVy4KCVJlcGxhY2Ugc29tZSBvdXRwdXQgcG9pbnRlcnMgc3RyL3dzdHItPnB0ciBpbiBrZXJuZWwzMi5zcGVjLgoKCSogbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU29tZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBidWdmaXhlczoKCS0gSW5pdGlhbGl6ZSBwcm9jZXNzIGNyc3QgZm9yIDE2LWJpdCBwcm9jZXNzZXMuCgktIERvbid0IGNyYXNoIGR1ZSB0byB1bmluaXRpYWxpemVkIHN0YWNrIGZyYW1lcyBpbiBXaW5lTGliLgoJLSBNYXAgc3lzdGVtIERMTHMgYmVmb3JlIGNhbGxpbmcgVXNlclNpZ25hbFByb2MuCgktIFNpZ25hbCBVU0lHX1BST0NFU1NfQ1JFQVRFIG9ubHkgKmFmdGVyKiB0aGUgZW52X2RiIGlzIGZpbGxlZC4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgQ2FsbG91dCByb3V0aW5lcyBkaXJlY3RseSB3aGVuIHVzaW5nIGJ1aWx0aW4gVVNFUi4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGFsbCBQRSBtb2R1bGVzIHdlcmUgbWFya2VkICdpbnRlcm5hbCcuCgoJKiBpbmNsdWRlL2RjZS5oLCBvYmplY3RzL2RjLmMsIHdpbmRvd3MvZGNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoZWNrIGZvciBidXN5IERDRSBtb3ZlZCB0byBEQ0hvb2sxNigpLgoKCSogaW5jbHVkZS93aW4uaCwgbG9hZGVyL21haW4uYywgd2luZG93cy93aW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5pdGlhbGl6ZSBXSU5fQ3JpdFNlY3Rpb24gZWFybGllci4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgaW5jbHVkZS90cmFja2Jhci5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgdGhlIHRpbWVyIHRoYXQgd2FzIHVzZWQgdG8gcXVldWUgVFJBQ0tCQVJfUmVmcmVzaCBjYWxscy4KCVJlbW92ZWQgYWxsIGRpcmVjdCBjYWxscyB0byBUUkFDS0JBUl9SZWZyZXNoIChleGNlcHQgZnJvbSB3aXRoaW4gdGhlCglXTV9QQUlOVCBoYW5kbGluZyBzZWN0aW9uKSBhbmQgcmVwbGFjZWQgdGhlbSBieSBjYWxscyB0bwoJSW52YWxpZGF0ZVJlY3QuCglGaXhlZCBhIGJ1ZyBpbiB0aGUgVFJBQ0tCQVJfU2V0UG9zIGZ1bmN0aW9uLgoJRml4ZWQgdGhlIGJlaGF2aW9yIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgbW91c2UgaW5wdXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglJbXBsZW1lbnRlZCB0b29sYmFyIG11bHRpcm93IGJ1dHRvbiBsYXlvdXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFdNX0dFVFRFWFQgYW5kIFdNX0dFVFRFWFRMRU5HVEggaW4gdG9vbHRpcHMuCgoJKiBvbGUvb2xlMmRpc3AuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBPbGVUcmFuc2xhdGVDb2xvci4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIHRoZSByZXR1cm4gdmFsdWUgb2YgR2V0S2V5Ym9hcmRTdGF0ZSBhbmQgU2V0S2V5Ym9hcmRTdGF0ZSBmcm9tCglWT0lEIHRvIEJPT0wuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVByZXZlbnRlZCBMSVNUQk9YX1JlcGFpbnRJdGVtIGZyb20gcmVwYWludGluZyBhIG5vbiB2aXNpYmxlIGl0ZW0uCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8uCgoJKiB3aW5kb3dzL2NsYXNzLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUJ1Z2ZpeCBmb3IgVFJBQ0UgaW4gVW5yZWdpc3RlckNsYXNzLgoKV2VkIE1heSAgNSAxMzoyMDo1MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9BdHRpYy9wcm9wc2hlZXQuaDogTm8gbG9uZ2VyIG5lY2Vzc2FyeS4KClR1ZSBNYXkgIDQgMTY6NTU6MjMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZGMuYywgd2luZG93cy9kY2UuYywgaW5jbHVkZS9kY2UuaDoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIGlmIERDIGlzIGJ1c3kgYmVmb3JlIGRlbGV0aW5nIGl0LgoKCSogd2luMzIvbmV3Zm5zLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRNYWlsc2xvdEluZm8gaXMgc3VwcG9zZWQgdG8gY2hlY2sgZm9yIHBvaW50ZXIgdmFsaWRpdHkuCgoJKiBzZXJ2ZXIvc2VsZWN0LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUG9zc2libGUgY3Jhc2ggaW4gc2VsZWN0X2xvb3AoKSBmaXhlZC4KCgkqIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHZhcmlvdXMgc3R1cGlkIGJ1Z3MgaW4gc2VydmljZXMgdGhyZWFkIHJvdXRpbmVzLgoJQWRkZWQgU0VSVklDRV9FeGl0IHJvdXRpbmUgdG8ga2lsbCB0aGUgc2VydmljZXMgdGhyZWFkLgoKCSogbWlzYy9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW52ZXJ0ZWQgY2xhc3MvY2hhbm5lbCBpbiBfXyhTRVR8R0VUKV9ERUJVR0dJTkcgbWFjcm9zLgoKCSogd2luZG93cy9xdWV1ZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgR2V0V2luZG93VGhyZWFkUHJvY2Vzc0lkKCkuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBQbGF5U291bmQxNiwgc25kUGxheVNvdW5kMTYuCgoJKiBpZjE2MzIvdGh1bmsuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlcyB3aW5wcm9jIGRlYWRsb2NrIGZvciB3aW4xNi4KCk1vbiBNYXkgIDMgMDk6NDQ6NTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcXVldWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGRlYWRsb2NrKHMpIGluIG1lc3NhZ2Ugc2VuZGluZy4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgljbGVhbmVkIHVwIGRlYnVnIGNoYW5uZWxzIHRvIHVzZSBkZWZhdWx0IG9uZSAobW1zeXMpCgltb3JlIGNvbnZlcnNpb25zIGZyb20gbWl4ZXJYWFhXIGFuZCBtaXhlclhYWFgxNiB0byBtaXhlclhYWFhBCglmaXhlZCBjYWxsYmFjayBidWcgaW4gbWlkaVN0cmVhbSBmdW5jdGlvbnMKCWZpeGVkIGNvbXBpbGF0aW9uIGJ1ZyB3aXRoIGVnY3MKCWNoYW5nZWQgdG8gdGhlIG5ldyBkZWJ1ZyBjaGFubmVsIGludGVyZmFjZQoKCSogbXVsdGltZWRpYS9tbWF1eC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCXNtYWxsIHJhbmdlIGZpeGVzIGZvciBPU1MgZHJpdmVyCgljaGFuZ2VkIHRvIHRoZSBuZXcgZGVidWcgY2hhbm5lbCBpbnRlcmZhY2UKCgkqIG11bHRpbWVkaWEvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglmaXJzdCAod29ya2luZykgc2hvdCBhdCBPU1MgbWl4ZXIgbG93IGxldmVsIGludGVyZmFjZQoJY2hhbmdlZCB0byB0aGUgbmV3IGRlYnVnIGNoYW5uZWwgaW50ZXJmYWNlCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgb2ZmLWJ5LW9uZSBvcmRpbmFscyBpbiBNUFIuCglBZGRlZCBNUFJfQWxsb2MvUmVBbGxvYy9GcmVlIChNUFIuMjItMjQpLgoKCSogbG9hZGVyL21vZHVsZS5jLCBpZjE2MzIvcmVsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiByZWxlYXNlIFdpbjE2TG9jayBpbiBXaW5FeGVjMTYsIENhbGxQcm9jW0V4XTMyV18xNi4KCgkqIGxvYWRlci9tYWluLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTG9hZCBzeXN0ZW0gRExMcyBpbnRvIFdpbmVMaWIgYXBwbGljYXRpb25zLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHMuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU21hbGwgdXBkYXRlIHRvIHRoZSBQb3N0U2NyaXB0IGVuY29kaW5nIHZlY3Rvci4KCgkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYzogQnVnIGZpeGVzLgoKU3VuIE1heSAgMiAxOToxMDo1NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIGEgZmV3IG1vcmUgaW5pdGlhbGlzYXRpb25zIHRvIHRoZSBuZXcgcHJvY2VzcyBjb250ZXh0LgoKCSogbG9hZGVyL3Rhc2suYzogRG9uJ3QgaW5pdGlhbGlzZSB0aGUgc3RhY2tzIGZvciAzMi1iaXQgcHJvY2Vzc2VzLgoKCSogbWlzY2VtdS9tYWluLmM6IE9ubHkgY2hlY2sgbnVtYmVyIG9mIHRhc2tzIGFmdGVyIGZpcnN0IG1lc3NhZ2UuCglVc2UgYSAxNi1iaXQgbW9kdWxlIGZvciBjcmVhdGluZyB0aGUgaW5pdGlhbCB0YXNrLgoKCSogaW5jbHVkZS9hdXRob3JzLmgsIEFVVEhPUlM6CglVcGRhdGVkIGF1dGhvcnMgbGlzdCBmcm9tIHRoZSBDaGFuZ2Vsb2cuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UKCWhhdmUgYmVlbiBsZWZ0IG91dC4KCgkqIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1Z2dpbmcgaW50ZXJmYWNlIChkb25lIHdpdGggdGhlIGhlbHAgb2YgdGhlCglzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsgU3RyaWR2YWxsKS4KCVNvbWUgY2hhbmdlcyB0byB0aGUgaW5pdGlhbGlzYXRpb24gc2VxdWVuY2UgZm9yIDMyLWJpdCBwcm9jZXNzZXMuCgoJKiAqLyouYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnZ2luZyBpbnRlcmZhY2UgKGRvbmUgd2l0aCB0aGUgaGVscCBvZiB0aGUKCXNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpayBTdHJpZHZhbGwpLgoKCSogdG9vbHMvbWFrZV9kZWJ1ZywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIG1pc2MvbWFpbi5jOgoJTWlzYyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglBZGRlZCBjaGVjayBmb3IgLWxtbWFwIGZvciBPUy8yLgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBmZXcgYnVncyBpbiB0aGUgT0xFIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24sIGFkZGVkIGEgbmV3IHNldCBvZgoJdHJhY2Ugc3RhdGVtZW50cyBmb3IgdGhlIE9MRSBzdG9yYWdlIHJlbGF0ZWQgbWV0aG9kcyBhbmQgaW50cm9kdWNlZCBhCgluZXcgZGVidWcgY2hhbm5lbCBmb3IgdGhlIHN0b3JhZ2Ugc3Vic3lzdGVtLgoKCSogbXVsdGltZWRpYS90aW1lLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1pc2Mvc3Bvb2xlci5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgcmVkdW5kYW50IGluY2x1ZGUgb2Ygd2luYmFzZS5oIGZyb20gd2ludXNlcjE2LmguCglNb3ZlZCB0eXBlcyBmcm9tIHdpbmJhc2UuaCB0byB3aW51c2VyMTYuaCAuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGRlZmF1bHQgaXRlbSBoYW5kbGluZwoJLSBzbWFsbCBkcmF3aW5nIGZpeGVzCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCU1vcmUgaW1wbGVtZW50YXRpb24gb2YgUHJpbnREbGdBLgoJQ29udmVyc2lvbiBvZiByZXNvdXJjZSBpZGVudGlmaWVycyBvZiBQcmludDMyIHdpbmRvdyB0byBjb21wbHkgdG8gdGhlCglNJCBudW1iZXJpbmcuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY3Jhc2ggaWYgcXVldWluZyBhbiBBUEMgb24gYSB0aHJlYWQgdGhhdCBkb2Vzbid0IHdhaXQuCgoJKiB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvbWVzc2FnZS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgU0VSVklDRVMgY2FsbGJhY2sgdG8gaW1wbGVtZW50IFdpbmRvd3MgdGltZXJzLgoJVGltZXIgZXhwaXJhdGlvbiBoYW5kbGluZyByZW1vdmVkIGZyb20gRVZFTlRfV2FpdE5ldEV2ZW50IGxvb3AuCgoJKiBtZW1vcnkvaGVhcC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDYWxsIFNldExhc3RFcnJvciBpbiBIZWFwQ29tcGFjdCgpLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgcHJvdG90eXBlIGZvciBUcnlFbnRlckNyaXRpY2FsU2VjdGlvbi4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCU1ha2UgYWxsIHN0cnVjdHVyZXMgcGFja2VkIGFuZCByZW1vdmFsIG9mIHNvbWUgV0lORV9QQUNLRUQuCgoJKiBjb250cm9scy9idXR0b24uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVB1c2hidXR0b25zIHNob3VsZCBvbmx5IGJlIHJvdW5kZWQgaW4gV2luMzEgbG9vay4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGRlZmF1bHQgaXRlbSBoYW5kbGluZwoJLSBzbWFsbCBkcmF3aW5nIGZpeGVzCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGFuIHVuYmFsYW5jZWQgd2luZG93cyBsb2NrL3VubG9jayBzZXF1ZW5jZSBpbgoJV0lOUE9TX0FjdGl2YXRlT3RoZXJXaW5kb3cuCgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oOiBlbmhtZXRhZmlsZSBhZGRlZAoKCSogcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL21jaWFuaW0uc3BlYywgcmVsYXkzMi9tY2lhdmkuc3BlYywgcmVsYXkzMi9tY2ljZGEuc3BlYywgcmVsYXkzMi9tY2lzZXEuc3BlYywgcmVsYXkzMi9tY2l3YXZlLnNwZWMsIHJlbGF5MzIvd2lubW0uc3BlYywgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGxvYWRlci9tYWluLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYSwgaWYxNjMyL21tc3lzdGVtLnNwZWMsIHdpbmUuaW5pOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIGdvdCByaWQgb2YgYWxsIHRoZSBpbnRlcm5hbCBNTSB0d2Vha3MgdG8gbG9hZCBidWlsdGluIE1DSQoJICBkcml2ZXJzLiBUaGV5IGFyZSBhbGwgc2VlbiBhcyBkcml2ZXJzLCBsb2FkZWQgYXMgRExMcyBhbmQgc3RhbmRhcmQKCSAgbW9kdWxlIGxvYWRvcmRlciBpcyB1c2VkIHRvIGtub3cgd2hpY2ggdHlwZSB0byB1c2UgKGJ1aWx0aW4gdnMKCSAgbmF0aXZlKS4KCS0gZmlyc3QgZnVsbCB3b3JraW5nIGltcGxlbWVudGF0aW9uIG9mIG1tVGhyZWFkPz8/IGZ1bmN0aW9ucyAodG8KCSAgc3VwcG9ydCBncmFjZWZ1bGx5IG5hdGl2ZSBNQ0kgZHJpdmVycykuCgktIHN1cHBvcnQgb2YgbW1TaG93TU1DUExQcm9wZXJ0eVNoZWV0LgoJLSBmaXggb2Ygc29tZSBoZWFwIHZhbGlkYXRlIGJ1Z3MgKHRoYW5rcyB0byBVbHJpY2ggZm9yIHJlcG9ydGluZyB0aGVtKS4KCgkqIGxvYWRlci9tb2R1bGUuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBDcmVhdGVQcm9jZXNzQSB0byBpbXBsZW1lbnQgY29ycmVjdCBhY3Rpb25zIG9uIGFtYmlndW91cyBjb21tYW5kCglsaW5lIG5hbWVzICh0cnkgbG9uZ2VyIGFuZCBsb25nZXIgc3RyaW5ncykuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2Ly5jdnNpZ25vcmUsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9kYy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L21hcHBpbmcuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGluY2x1ZGUvZW5obWV0YWZpbGVkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgRW5oYW5jZWQgTWV0YUZpbGUgZHJpdmVyLgoKCSogaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9kYXRhY2FjaGUuYywgb2xlL2RlZmF1bHRoYW5kbGVyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL29sZW9iai5jLCByZWxheTMyL29sZTMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgT0xFIG9iamVjdCBkZWZhdWx0IGhhbmRsZXIgYW5kIGRhdGEgY2FjaGUuCgoJKiBpbmNsdWRlL2VuaG1ldGFmaWxlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU2V2ZXJhbCBpbXByb3ZlbWVudHMgdG8gRW5oYW5jZWQgTWV0YUZpbGUgcGxheWJhY2suCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglPbmx5IHRyeSB0byBhcHBlbmQgIi5kbGwiIGlmIGEgbGlicmFyeSBpcyBsb2FkZWQgaW1wbGljaXRlbHkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXggVFJBQ0UgZm9ybWF0dGluZyB3YXJuaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGEgc21hbGwgc3ludGF4IHByb2JsZW0uCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gYmV0dGVyIHN0dWJzIGZvciBHZXQvU2V0IHNwZWNpYWwgKFByb2dtYW4vVGFza21hbikgd2luZG93IGZ1bmN0aW9ucwoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9tZXNzYWdlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gbmV3IFNlbmRNZXNzYWdlQ2FsbGJhY2tXCgktIHNvbWUgZml4bWUncyBmb3IgbWlzc2luZyBBPC0+VyBjb252ZXJzaW9uCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGFuIHVuYmFsYW5jZWQgd2luZG93cyBsb2NrL3VubG9jayBzZXF1ZW5jZSBpbiBHZXROZXh0RGxnVGFiSXRlbS4KCgkqIG1pc2MvcHJpbnRkcnYuYzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglCdWdmaXggZm9yIEVudW1QcmludGVycyBsZXZlbCAyLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNvcnJlY3QgbG9naWMgaW4gR2V0S2V5TmFtZVRleHQuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZW1vdmVkICtzbm9vcCBmcm9tIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cy4KClNhdCBNYXkgIDEgMTA6NDE6MDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglMb2FkSW1hZ2VXIGZpeGVkIGZvciBoaWNvbG9yIGRpc3BsYXlzLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNQ0lfQU5JTV9PUEVOX1BBUk1TVyBzaG91bGQgYmUgTFBDV1NUUiwgTUNJX0RlZllpZWxkUHJvYyBzaG91bGQgYmUgV0lOQVBJLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIEhFQURFUl9JbnNlcnRJdGVtQSBhbmQgSEVBREVSX0luc2VydEl0ZW1XIG51bGwgcG9pbnRlciBjaGVja2luZwoJdG8gaGFuZGxlIHdpZGUgY2hhcmFjdGVyIHN0cmluZ3MgcHJvcGVybHkuICBGaXggb2Ygb3VyIHByZXZpb3VzIHBhdGNoCglmb3IgbnVsbCBwb2ludGVyIGNoZWNraW5nLgoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvbWVtbG9ja2J5dGVzLmMsIG9sZS9vbGUyc3R1YnMuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgQ3JlYXRlSUxvY2tCeXRlc09uSEdsb2JhLCBHZXRIR2xvYmFsRnJvbUlMb2NrQnl0ZXMgYW5kCgl0aGUgSUxvY2tCeXRlcyBpbnRlcmZhY2UgYmFzZWQgb24gYW4gSEdMT0JBTC4KCgkqIG9sZS9jb21wb2JqLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgYnVnIGluIENvUmVnaXN0ZXJDbGFzc09iamVjdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBzb21lIGZsaWNrZXJpbmcgd2hlbiBpbnNlcnRpbmcgb3IgZGVsZXRpbmcgYnV0dG9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIExJU1RWSUVXX0dldEl0ZW1DaGFuZ2VzKCkgdG8gcGVyZm9ybSBhIG1vcmUgY29tcGxldGUgY29tcGFyaXNvbgoJYmV0d2VlbiBscEl0ZW0gYW5kIGxwTFZJdGVtLiAgTm93IGNvbXBhcmVzIHRoZSBwc3pUZXh0IHN0cmluZyBvZiB0aGUKCWxwSXRlbSBhbmQgbHBMVkl0ZW0gc3RydWN0cy4gIEZpeGVzIGEgYnVnIHdoZXJlIHRoZSBvbGQgYW5kIG5ldyBpdGVtCgloYXZlIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYnV0IHRoZWlyIHRleHQgZGlmZmVycyBhbmQgR2V0SXRlbUNoYW5nZXMoKQoJY29tcGFyZXMgdGhlbSBhcyBlcXVhbC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmgsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi90YWIuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBwYWdlcyBkeW5hbWljYWxseSBmcm9tIGEKCXByb3BlcnR5IHNoZWV0LgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvbGlzdGJveC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHRoZSBnb3RvcyBmcm9tIHRoZSBXbmRQcm9jcywgYWx3YXlzIHVzZSBhIHNtYWxsIHdyYXBwZXIgdGhhdAoJbG9ja3MgdGhlIHdpbmRvdywgY2FsbHMgdGhlIHJlYWwgd25kcHJvYywgdW5sb2NrcyB0aGUgd2luZG93LgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGRlZmF1bHQgbWVudSBpdGVtLgoKCSogd2luMzIvY29kZV9wYWdlLmMsIG1pc2MvZGRlbWwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdHlwby4KCgkqIHdpbmRvd3MvcXVldWUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgbWlzc2luZyBMZWF2ZUNyaXRpY2FsU2VjdGlvbi4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgd3JvbmcgdXNhZ2Ugb2YgV0lOX0ZpbmRXbmRQdHIvV0lOX1JlbGVhc2VXbmRQdHIgaW4KCVRyYW5zbGF0ZU1ESVN5c0FjY2VsMTYuCgoJKiBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBvZmYtYnktb25lIGJ1ZyBpbiBhc3luYyBvdXRwdXQgYnVmZmVycy4KCgkqIG9sZS9vbGUyLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbGl0dGxlIERyYWcgYW5kIERyb3AgYnVnLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpNb24gQXByIDI2IDE0OjU4OjU5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgYXV0b2NvbmYgY2hlY2sgZm9yICJpbmxpbmUiLiBZb3UgY2FuIG5vdyB1c2UgaXQsIGl0IHdpbGwgYmUKCWRlZmluZWQgdG8gKGVtcHR5KSBmb3IgY29tcGlsZXJzIHRoYXQgZG8gbm90IGhhdmUgaXQuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRG9uJ3QgaW5jbHVkZSBhbGxvY2EuaC4KCgkqIFJFQURNRSwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVXBkYXRlIHRvIHJlZmxlY3QgcmVjZW50IGNoYW5nZXMgYW5kIGRpc2N1c3Npb25zLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVGhlIGxvYWQgb3JkZXIgcGFyc2VyIHNob3VsZCBub3QgYWx3YXlzIGNvbXBsYWluIGFib3V0IGV4dGVuc2lvbnMuCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBhbGlnbiBtYWdpYyBidXR0b25zIHJpZ2h0CgktIHNob3J0Y3V0cyBhbGlnbm1lbnQgd29ya2luZyBhZ2FpbgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGxvYWRpbmcgb2YgbmF0aXZlIE5FIGRsbHMuCgpTdW4gQXByIDI1IDE5OjA0OjQyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvaGVhcC5jOiBGaXhlZCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MgYXJnLgoKCSogKi8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIGNvbXBhYmlsbGl0eS4KCgkqICovKjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglCdWlsdC1pbiBkbGxzIG5vdyBoYXZlIHJlc291cmNlcyBhdHRhY2hlZCB2aWEgdGhlIFBFLWhlYWRlciBsaWtlCglub3JtYWwgZGxscy4gVGhpcyBlbmFibGVzIHRoZSB1c2Ugb2YgdGhlIHJlc291cmNlIEFQSS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCVVzZSAkSE9NRSBpbnN0ZWFkIG9mIGdldHB3dWlkIGZvciB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkuCglGaXhlZCBtZXNzZWQgdXAgaW5kZW50YXRpb24uCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVVzZSAkSE9NRSBpbnN0ZWFkIG9mIGdldHB3dWlkIGZvciB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkuCgoJKiAqLyouaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJI3ByYWdtYSBwYWNrKD8pIGNoYW5nZWQgdG8gI2luY2x1ZGUgIipwYWNrKi5oIgoKCSogdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW51c2VyLmg6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBzb21lIG1pc3NpbmcgI2RlZmluZXMgSSd2ZSBydW4gYWNyb3NzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUlnbm9yZSB0cmFpbGluZyBkb3RzIG9uIGZpbGUgbmFtZXMuCgoJKiBpbmNsdWRlL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgcG9zc2liaWxpdHkgdG8gbGV0IHRoZSBpbnRlcm5hbCBkZWJ1Z2dlciB1c2UgYSBzZXBhcmF0ZQoJaGVhcC4gTm90IGVuYWJsZWQgYnkgZGVmYXVsdCwgY2hhbmdlICNpZiBpbiBpbmNsdWRlL2RlYnVnZ2VyLmggdG8gdXNlCgl0aGlzICh0aGUgaGVhcCBhbGxvY2F0b3IgaXMgdmVyeSBzbG93KS4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+Cgl3aW5lLmNvbmYgc2hvdWxkIG5vdCBvdmVycnVsZSBjb250ZW50IG9mIGJ1cm5lZCBpbiBkYXRhIGluCglsb2Fkb3JkZXIuYy4KCgkqIGdyYXBoaWNzL21hcHBpbmcuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglTZXRNYXBNb2RlIHNob3VsZCBub3QgcmVzZXQgdGhlIHdpbmRvdyBhbmQgdmlld3BvcnQgb3JpZ2lucyB0byAwLgoKCSogdG9vbHMvd2luZWNvbmY6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3cgdG8gYXV0b21hdGljYWxseSBjb3B5IHBhcnQgb2Ygd2luZS5pbmkgaW50byBnZW5lcmF0ZWQgZmlsZS4KCVNtYWxsIHBlcmwgZW5oYW5jZW1lbnQgKHdvcmsgaW4gc3RyaWN0IG1vZGUpLgoJU21hbGwgdXBkYXRlcyBpbiBoZXVyaXN0aWNzLgoKCSogd2luZS5pbmk6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBncmFkZWQgdG8gaGF2ZSBhIGRlY2VudCBtdWx0aW1lZGlhIERMTHMgY29uZmlndXJhdGlvbi4KCgkqIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gRml4ZWQgYSBjb3VudGluZyBidWcgaW4gdGhlIHdpbjMyIGNvdW50IGFuZCBzb3J0IHJvdXRpbmUuCgktIEZpeGVkIHNvcnQgb3JkZXIgb2YgcmVzb3VyY2VzIChtdXN0IGJlIG5hbWUgYmVmb3JlIG9yZGluYWwpLgoJLSBTaHVmZmxlZCBhIGNvdXBsZSBvZiBnbG9iYWwgdmFyaWFibGVzIHNvIHRoYXQgYnVpbHQtaW4gZGxscyBub3cgY2FuCgkgIGxvYWQgcmVzb3VyY2VzIHRocm91Z2ggdGhlIHByb3BlciBQRSBpbnRlcmZhY2UuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnJlZy5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJQWRkZWQgc3VwcG9ydCBmb3Igc3RyaWN0IGhhbmRsZXMuIE9ubHkgd29ya3Mgb24gbWFjaGluZXMgd2hlcmUKCXNpemVvZihVSU5UKSA9PSBzaXplb2Yodm9pZCopLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5pdGlhbGl6ZSBwcm9jZXNzIGNyaXRpY2FsIHNlY3Rpb24gaW4gdGhlIGNvcnJlY3QgcHJvY2VzcyBjb250ZXh0LgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdhcm4gaWYgd3JvbmcgcHJvY2VzcyB0cmllcyB0byBlbnRlciBjcml0aWNhbCBzZWN0aW9uLgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIFJlaW5pdGlhbGl6ZS9VbmluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24KCShzdGlsbCBub3QgcXVpdGUgY29ycmVjdCkuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZGVidWcuaCBtdXN0IGJlIGxhc3QgaW4gbGlzdCBvZiBpbmNsdWRlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmV0dXJuIDMyLWJpdCBtb2R1bGUgaW4gR2V0TW9kdWxlSGFuZGxlMTYoKSBpZiBhcHByb3ByaWF0ZS4KCgkqIG1zZG9zL2ludDJmLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBzdGF0dXMgd2FzIHJlYWQgd2l0aCBjZC1yb20gdHJheSBvcGVuLgoKCSogd2luZG93cy9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGJ1ZyBpbiBtc2cgY29udmVyc2lvbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcmV2ZW50IGNyYXNoIHdoZW4gbk1pblJhbmdlID4gbk1heFJhbmdlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtaXNzaW5nIG1hbmlmZXN0IGNvbnN0YW50cyBmb3IgUXVldWUgU3RhdHVzIGZ1bmN0aW9ucyAoUVNfPz8/PykuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZWRpdC5jLCB3aW5kb3dzL21kaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIFdJTl9SZWxlYXNlV25kUHRyLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglNb3JlIGFwcHJvcHJpYXRlIGRlZmF1bHQgc2l6ZSBmb3IgZm9udHMgd2l0aCBpbnZhbGlkIHNpemVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgU2V0Q29sdW1uV2lkdGggZm9yIExpc3RWaWV3IGNvbnRyb2wuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZzogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUFkZGVkIG5ldyBkb2N1bWVudGF0aW9uIGZvciB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgoKCSogbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXByb3ZlZCBWRVJTSU9OX0dldFZlcnNpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQZXRlciBCb3J0YXMgPHBldGVyQGlkb25leC5zZT4KCUFkZGVkIFN3ZWRpc2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZGMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BzZHJ2L1JFQURNRSwgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUdlbmVyYWwgdGlkeSB1cCBvZiB0aGUgTWV0YUZpbGUgZHJpdmVyIC0gbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZwoJZ29lcyB0aHJvdWdoIHRoZSBEQ0Z1bmNzIHRhYmxlLgoKCSogbWlzYy90b29saGVscC5jLCBpZjE2MzIva2VybmVsLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgYSBzdHViIGZvciBHbG9iYWxNYXN0ZXJIYW5kbGUuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJTXVjaCBuaWNlciB3YXkgdG8gc2VsZWN0IHdpbmUncyBsb2NhdGlvbi4KCU9wdGlvbiB0byBkaXNhYmxlIGNyZWF0aW9uIG9mIGRlYnVnZ2luZyBvdXRwdXQuCglEZWJ1Z2dpbmcgb3V0cHV0IGlzIG5vdyBjcmVhdGVkIGluIGRpcmVjdG9yeSBzY3JpcHQgd2FzIHN0YXJ0ZWQgaW4uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHByb2JsZW0gd2l0aCBtYW5hZ2VkIG1vZGUsIHdoZXJlIHBvcHVwIHdpbmRvd3Mgd2l0aCBhIFdTX0RMR0ZSQU1FCglzdHlsZSB3ZXJlIGFwcGVhcmluZyB3aXRoIGEgdGl0bGUgYmFyLiBBY2NvcmRpbmcgdG8gdGhlIGRvY3MgZm9yCglXU19ETEdGUkFNRSBhIHdpbmRvdyB3aXRoIHRoaXMgc3R5bGUgY2Fubm90IGhhdmUgYSB0aXRsZSBiYXIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIERsbE92ZXJyaWRlcyBmcm9tIHdpbmUuaW5pIGFzIGRlZmF1bHRzIGFsc28gaW4KCWxvYWRvcmRlci5jIChtZXJnZWQgaW4gc29tZSBNTSBkbGxzIGxpbmVzIGZyb20gRXJpYyBQb2V1Y2gpLgoKCSogd2luZG93cy90aW1lci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYm9ndXMgaW5maW5pdGUgZXhwaXJhdGlvbiB0aW1lLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJLSBjb25zb2xpZGF0ZSBib3RoIGNhc2VzIG9mICFwZW5kaW5nIGluIFdhaXROZXRFdmVudAoJLSBzZWxlY3QoKSByZXR1cm5zIC0xIG5vdCAwIG9uIGVycm9yIGluIFdhaXROZXRFdmVudAoKCSogbWVtb3J5L2hlYXAuYywgaW5jbHVkZS9oZWFwLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBIZWFwVmFsaWRhdGUgdGhyZWFkc2FmZSwgYW5kIGFkZGVkIHNvbWUgbWFjcm9zIHRvIHRyYWNrIGNhbGxlckVJUAoJYSBsaXR0bGUgYmV0dGVyLgoJQWRkZWQgSEVBUF94cmVhbGxvYy4KClNhdCBBcHIgMjQgMTI6MDI6MTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9lbGZkbGwuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWF1dG9jb25mIGZpeGVzIGFuZCBjbGVhbnVwcyAoY2hlY2sgZm9yIGRsb3BlbigpIGluIGxpYmMgdG9vKS4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL29sZTJzdHVicy5jLCBvbGUvc3RnX3N0cmVhbS5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgQ3JlYXRlU3RyZWFtT25IR0xPQkFMLgoKCSogb2xlL2NvbXBvYmouYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUxldCBDb1NldFN0YXRlKCkgYWNjZXB0IHN0YXRlID09IE5VTEwuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYWRlIGludGVybmFsIGZvcm1hdCBtb3JlIGNvbXBhdGlibGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCBjb250cm9scy9jb21iby5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBsb2NraW5nIHdpdGggcHJvcGVyIGNhbGxzIHRvIFdJTl9SZWxlYXNlV25kUHRyLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEb24ndCBtYWxsb2MvZnJlZSBmb3IgZXZlcnkgbWl4aW5nIG9wZXJhdGlvbiwgdXNlIHRoZSBzYW1lIGJ1ZmZlciBvdmVyCglpbnN0ZWFkLi4uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmVqeUB3cGkuZWR1PgoJSEVBREVSX0luc2VydEl0ZW1BIGFuZCBIRUFERVJfSW5zZXJ0SXRlbVcgbm93IHRyZWF0IG51bGwgcG9pbnRlcnMgdG8KCXRleHQgc3RyaW5ncyBhcyBudWxsIHN0cmluZ3MsIGFzIFdpbmRvd3MgZG9lcy4gIEZpeGVzIHdpbmUgY3Jhc2ggb24KCXN0YXJ0dXAgb2YgQ3V0ZUZUUC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglTZXQgKHdoZW4gcmVnaXN0cnkgbG9hZGVkKSBkYXRhIHRvICJcMCIgYW5kIGxlbmd0aCB0byAyIGluIGVtcHR5CglzdHJpbmcgdmFsdWUgY2FzZSwgaW4gcGxhY2Ugb2Ygc2V0dGluZyBkYXRhIHRvIE5VTEwgYW5kIGxlbmd0aCB0byAwLAoJYW5kIHRoaXMgaXMgd2l0aG91dCBpbml0aWFsaXppbmcgb3V0cHV0IGJ1ZmZlciBwYXJhbWV0ZXIgb2YKCVJlZ1F1ZXJ5VmFsdWUqLgoKCSogaW5jbHVkZS93aW5nZGkuaDogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBQYW5vc2UgZGVmaW5lcyBhbmQgRVhUTE9HRk9OVFtBfFddLgoKVGh1IEFwciAyMiAxNjoyNzo1MyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIGNvbXBhYmlsbGl0eS4KCgkqIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taWRpLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3MvcmVjdC5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvbHN0ci5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCBzb21lIGluY2x1ZGVzIG9mIDE2IGJpdCBBUEkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglJQ09NaXphdGlvbiBvZiByZW1haW5pbmcgaW50ZXJmYWNlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBidWcgd2l0aCB0b29sdGlwcyBzdGVhbGluZyBmb2N1cyB3aGVuZXZlciBhIHRvb2x0aXAgd2FzIGNyZWF0ZWQsCglzaG93biwgaGlkZGVuIG9yIHRyYWNrZWQuIFRoZSBTZXRXaW5kb3dQb3MgY2FsbHMgbmVlZGVkIHRvIGhhdmUgdGhlCglTV1BfTk9BQ1RJVkFURSBmbGFnIHNldCBhZGRpdGlvbmFsbHkuCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJRml4ZWQgY29vcmRpbmF0ZXMgY29udmVyc2lvbiBpbiBPZmZzZXRDbGlwUmduLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCUNsZWFuIHVwIG9iamJhc2UuaC4gTWFrZXMgdGhlIFNURE1FVEhPRCBzZXQgb2YgbWFjcm9zIGF2YWlsYWJsZSB0byB0aGUgd2luZWxpYiB1c2VyLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvaGFuZGxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZVNvY2tldEhhbmRsZSxHZXRIYW5kbGVDb250ZXh0LFNldEhhbmRsZUNvbnRleHQgc3R1YnMgYWRkZWQuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgc3R1ZmYgdG8gdGhlIHJpZ2h0IHBsYWNlLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIHN5c2NvbG9ycyBmb3Igd2luIDMuMS4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgaWYxNjMyL2tlcm5lbC5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIHByb2ZpbGUgS0VSTkVMIHJvdXRpbmVzIChjYWxsIDMyLWJpdCB2ZXJzaW9ucykuCgoJKiBpZjE2MzIvYnVpbHRpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQlVJTFRJTl9HZXRFbnRyeVBvaW50MTYgZGlkbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdGhlIG5ldwoJZW50cnkgdGFibGUgbGF5b3V0LgoKCSogaW5jbHVkZS93aW5nZGkuaDogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGQgRW5oYW5jZWQgTWV0YUZpbGUgcmVjb3JkIHN0cnVjdHVyZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvcmVzb3VyY2UuaCwgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRmlyc3QgcGF0Y2ggaW1wbGVtZW50aW5nIHByb3BlcnR5IHNoZWV0cy4KCgkqIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBHREkzMi4xMDAtMTA0IGFyZSBvcmRpbmFsLW9ubHkgcm91dGluZXMuCglBZGRlZCBzdHVicyBmb3Igc29tZSBXaW45OCBHREkzMiByb3V0aW5lLgoJUmUtbnVtYmVyZWQgYWxsIG5hbWVkIGV4cG9ydHMgKGxleGljb2dyYXBoaWNhbGx5KS4KCgkqIGdyYXBoaWNzL2RyaXZlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBwcm90b3R5cGVzIChzdHVicykgZm9yIEdESTMyLjEwMC0xMDQuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIG1vcmUgY2hlY2tzIGZvciB2YWxpZCBwaWRsIGZvcm1hdHMKCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBjb3JyZWN0ZWQgcGFyYW1ldGVyIGNvdW50IGZvciBTSEdldFNldHRpbmdzCgktIHN0dWIgU0hWYWxpZGF0ZVVOQwoKCSogbG9hZGVyL2VsZi5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSNlbHNlIGJyYW5jaCBjb21waWxlIGZpeC4KCgkqIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL2xvYWRvcmRlci5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNoYW5nZSB3aW5lJ3MgZGxvcGVuIHNlYXJjaC1wYXRjaCBzdHJhdGVneSBub3QgdXNpbmcgdGhlIGVudmlyb25tZW50CglhbmQgYWRkZWQgI2lmOnMgdG8gc2VwZXJhdGUgdGhlIGNvZGUgb3V0IGlmIGxpYmRsIGlzbid0IGF2YWlsYmxlLgoKCSogb2xlL2NvbXBvYmouYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBjaGVjayBmb3IgYSBOVUxMIHBvaW50ZXIgaW4gQ29GcmVlVW51c2VkTGlicmFyaWVzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluY2x1ZGUgZGVidWcuaCBsYXN0IChFUlIoKSBtYWNybyBwcm9ibGVtIG9uIFNvbGFyaXMpLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBzaXppbmcgYnVnIGluIHRoZSBjb21ib2JveCBjb250cm9sLgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEludGVybmFsIE5FIGVudHJ5IHBvaW50IHRhYmxlcyB3ZXJlIGJhZCAob25lIGh1Z2UgYnVuZGxlKS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglJbml0aWFsaXplIHRoZSBvdXRwdXQgYnVmZmVyIHBhcmFtZXRlcnMgdG8gMCBpbiBSZWdRdWVyeVZhbHVlKgoJZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudCBzcGVjaWFsbHkgd2hlbiB0aGVyZSdzIG5vIGRhdGEgdG8gcmV0dXJuLgoKCSogbG9hZGVyL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRG8gbm90IGluY3JlbWVudCBtb2R1bGUgcmVmQ291bnQgaWYgc2VsZiBpcyBsb2FkZWQgZnJvbSB3aXRoaW4KCURsbEVudHJ5UG9pbnQgZHVyaW5nIHRoZSBhdHRhY2ggbm90aWZpY2F0aW9uLgoKV2VkIEFwciAyMSAxNDoyNzozNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gcHJvdGVjdCBUUkFDRSBhZ2FpbnN0IE5VTEwtcHRyCgktIHJld3JvdGUgR2V0TWVudUl0ZW1JRC9HZXRTdWJNZW51IHRvIHVzZSBNRU5VX0ZpbmRJdGVtIChobWVudT0weGZmZmYgZml4KS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB0eXBvLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJUmVpbXBsZW1lbnRhdGlvbiBvZiBHZXRNb2R1bGVIYW5kbGUxNiBhY2NvcmRpbmcgdG8gaG93IHdpbjk1IGhhbmRsZXMKCWl0ICh0aGFua3MgdG8gTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+KS4KCgkqIGlmMTYzMi9idWlsdGluLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDb3JyZWN0ZWQgd3JvbmcgcmV0dXJuIHZhbHVlcyBvZiBidWlsdC1pbiBsb2FkZXIgdG8gd29yayB3aXRoIHRoZQoJbG9hZG9yZGVyIHN0dWZmLgoKTW9uIEFwciAxOSAxNjo0NToyNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIHJlY29yZGluZyBvZiBTdHJldGNoRElCaXRzIGFuZCBTZXRESUJpdHNUb0RldmljZSBhbmQKCXBsYXliYWNrIG9mIFNldERJQml0c1RvRGV2aWNlLiBDbGVhbmVkIHVwIFBsYXlNZXRhRmlsZVJlY29yZCBhIGJpdC4KCgkqIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJUmVtb3ZlZCBub24tcG9ydGFibGUgaGFja3MgYW5kIHJlcGxhY2VkIHRoZW0gd2l0aCBtb3JlIGdlbmVyYWwKCXZlcnNpb25zLgoKCSogd2luZG93cy9kY2UuYzogUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KCUNvZGUgYWRkZWQgdG8gcmUtZXZhbHVhdGUgc3RhbGUgREMgaW5mb3JtYXRpb24gaW4gRENFIGNhY2hlLgoKCSogbG9hZGVyL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQXR0YWNoIG5vdGlmaWNhdGlvbnMgbXVzdCBiZSBzZW5kIGFmdGVyIGFsbCByZWN1cnNpdmUgZGVwZW5kZW5jaWVzIGFyZQoJbG9hZGVkIGFuZCBub3QgYmVmb3JlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCB0eXBvLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwbGF5aW5nIHBvc2l0aW9uIHdoZW4gcmVxdWlyZWQgYnkgdHJhY2sgbnVtYmVyLgoKCSogd2luMzIvZGV2aWNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgTU1ERVZMRFIgRGV2aWNlSW9jdGwoNSkgc3R1YiAobXNhY20zMiBpcyBhIGJpdCBoYXBwaWVyIG5vdykuCgoJKiB3aW5lLmluaTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglOYXRpdmUgdG9vbGhlbHAgd2lsbCBub3Qgd29yayAobWlzc2luZyBHTE9CQUxNQVNURVJIQU5ETEUpLgoKCSogQlVHUywgUkVBRE1FOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQuCgoJKiBjb250cm9scy9lZGl0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVGVzdCBmb3Igc3RhdGljIHdhcyByZXZlcnNlZC4KCgkqICovKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTmV3IGRlYnVnIHNjaGVtZSB3aXRoIGV4cGxpY2l0IGRlYnVnIGNoYW5uZWxzIGRlY2xhcmF0aW9uLgoKU3VuIEFwciAxOCAxNDo0NDoyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBSZW1vdmVkIGV4dHJhIGNhbGwgdG8gVEFTS19TdGFydFRhc2suCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUmVtb3ZlZCBjaGVjayBmb3IgdW5pb24gc2VtdW47IGNsZWFuZWQgdXAgYSBiaXQuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUFkZGVkIGVudiBwdHIgdG8gbmV3X3Byb2Nlc3MgcmVxdWVzdAoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9tZGkuYywgY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lbnUuaCwgaW5jbHVkZS93aW51c2VyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gdXNlIGZvbnRzL2ZvbnRzaXplcyBnaXZlbiBieSBTeXN0ZW1QYXJhbWV0ZXJzSW5mbwoJLSBkcmF3aW5nL2FsaWdubWVudCBmaXhlcywgd2luOTggc3R5bGUgZm9yIG1lbnViYXIKCS0gb3duZXJkcmF3biBtZW51cyBhcmUgd29ya2luZyBub3cgZm9yIHRoZSBmaXJzdCB0aW1lCgktIGNvbXBsZXRlIGNvbnN0YW50cyBtYWdpYyBpdGVtcwoJLSB1c2UgcmlnaHQgb3duZXIgZm9yIHBvcHVwbWVudXMKCS0gbmV3OiBHZXQvU2V0TWVudUluZm8KCS0gaW1wbGVtZW50ZWQ6IEdldC9TZXRNZW51Q29udGV4dEhlbHBJZAoJLSBtb3JlIGZsYWdzIGZvciBHZXQvU2V0TWVudUl0ZW1JbmZvCgoJKiBmaWxlcy9kb3NfZnMuYzogcm9iZXJ0IHcgaGFsbCA8Ym9iaEBuLWNhbnRyZWxsLmRlbW9uLmNvLnVrPgoJTWFrZSBET1NGU19NYXRjaExvbmcgbWF0Y2ggYSBzZWFyY2ggc3RyaW5nIGVuZGluZyBpbiAnKi4nIHRvIGEgemVybwoJZXh0ZW5zaW9uIGZpbGUgbmFtZSwgYWxsb3dpbmcgTWF0aGNhZCB0byBydW4uCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWVtb3J5IGZyZWVpbmcuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9BdHRpYy9jbWRsZ3IuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5oOgoJUmVuYW1lZCBjbWRsZ3IuaCB0byBjbWRsZ3RzdC5oLgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6IEFkZGVkIHRpbWVvdXQgdG8gY3JpdGljYWwgc2VjdGlvbiB3YWl0aW5nLgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWVyZ2VkIExpbnV4L0ZyZWVCU0QgcmVlbnRyYW50IGVycm5vIGhhbmRsZXIsIGFkZGVkIFNvbGFyaXMuCglQcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBTb2xhcmlzIGxvdy1sZXZlbCB0aHJlYWRzIChMV1BzKSBhZGRlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlZW50cmFudCBsaWJjIGNoZWNrIGZvciBTb2xhcmlzIGFkZGVkLgoJRml4ZWQgcmVlbnRyYW50IFgxMSBjaGVjayBmb3IgRnJlZUJTRCBhbmQgU29sYXJpcy4KCUFkZGVkIGNoZWNrIGZvciBTb2xhcmlzIGxvdy1sZXZlbCB0aHJlYWQgcm91dGluZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglGaXhlZCB0b29saGVscCByb3V0aW5lcyB1c2FnZSBpbiBHZXRNb2R1bGVGcm9tUGF0aCAocmVwb3J0ZWQgYnkgQmVydGhvCglTdHVsdGllbnMpLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQXV0b21hdGljIGluc3RhbGwgc2NyaXB0LCB3aGljaCBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZXMgYW5kIGNvbXBpbGVzCgl3aW5lIGFuZCByZWdhcGksIHJ1bnMgdG9vbHMvd2luZWNvbmYgdG8gZ2VuZXJhdGUgYSBjb25maWd1cmF0aW9uIGZpbGUKCWlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LCBhbmQgdXNlcyByZWdhcGkgdG8gaW5zdGFsbCB0aGUgZGVmYXVsdAoJcmVnaXN0cnkuCgoJKiBkb2N1bWVudGF0aW9uL2d1aSwgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJvcGVybHkgaGFuZGxpbmcgY2FzZXMgbGlrZSBjYWxsaW5nIFNldFdpbmRvd1BvcyB3aGlsZSBwcm9jZXNzaW5nCglXTV9OQ0NSRUFURS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBidWdzICh0eXBvcyBmcm9tIGN1dCAmIHBhc3RlICYgaW52YWxpZCBoZWFwIGJsb2NrCglmcmVlaW5nKS4KCgkqIG1pc2Mvd3NwcmludGYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglCdWcgZml4IGluIEdldExlbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9lbGYuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVJlb3JnYW5pemF0aW9uIG9mIHRoZSBsb2FkZXIgdG8gY29ycmVjdGx5IGxvYWQgYW5kIGZyZWUgbGlicmFyaWVzIGFuZAoJaW1wbGVtZW50YXRpb24gb2YgbG9hZCBvcmRlciB0byBsb2FkIGRpZmZlcmVudCB0eXBlcyBvZiBsaWJyYXJpZXMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVXBkYXRlZCBjb21tYW5kbGluZSBjaGFuZ2VzIG9mIC1kbGwgb3B0aW9uIGFuZCB3aW5lLmNvbmYgZW50cmllcy4KCgkqIHdpbmUuaW5pOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVXBkYXRlZCB0aGUgZXhhbXBsZSB3aXRoIHRoZSBuZXcgY29uZmlndXJhdGlvbiBlbnRyaWVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUJ1Z2ZpeDogZnJlZSBsb2FkZWQgbGlicmFyeSBub3QgYmVmb3JlIGV4aXQuCgoJKiBpbmNsdWRlL2VsZmRsbC5oLCBpbmNsdWRlL2xvYWRvcmRlci5oLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglOZXcgZmlsZXMgdG8gc3VwcG9ydCBsb2FkIG9yZGVyIGFuZCBwYXJ0aWFsIHN0dWJzIGZvciBlbGZkbGxzLgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvZGliLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVzIGZvciB1cHNpZGUtZG93biBESUJzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDaGFuZ2VkICdHZXREaXNwbGF5TW9kZScgdG8gcmV0dXJuIHRoZSBtb2RlIHByZXZpb3VzbHkgc2V0IGJ5CgknU2V0RGlzcGxheU1vZGUnIChhbmQgbm90IHRoZSBjdXJyZW50IG1vbml0b3IgbW9kZSkuCgoJKiBpbmNsdWRlL3RhYi5oLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCS1JbXBsZW1lbnRlZCBUQ1NfQlVUVE9OUywgVENTX0ZJWEVEV0lEVEgsIFRDTV9HRVRJVEVNUkVDVCwKCVRDTV9TRVRJVEVNU0laRSBhbmQgVENNX0RFTEVURUlURU0uCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUxvb2t1cEljb25JZEZyb21EaXJlY3RvcnlFeDE2KCkgZml4ZWQ6IGlmIEdldFN5c3RlbVBhbGV0dGVFbnRyaWVzKCkKCXJldHVybnMgMCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgaWYgaXQgd2VyZSAyNTYuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJRml4IGFtYmlndW91cyBlbHNlIHdhcm5pbmcuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTG9hZGluZyBjb2xvciB2YWx1ZXMgZnJvbSB0aGUgcmVnaXN0cnkgZml4ZWQuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CgktIFJlbW92ZWQgYWxsIGZsb2F0aW5nIHBvaW50IG1hdGguCgktIEltcGxlbWVudGVkIHN0cmV0Y2hpbmcgaW4gWCBhbmQgWSBkaXJlY3Rpb25zIGZvciA4LCAxNiwgYW5kIDMyIGJpdCBjb2xvci4KCS0gSW1wbGVtZW50ZWQgc291cmNlIGFuZCBkZXN0IGNvbG9yLWtleWluZyBmb3IgOCwgMTYsIGFuZCAzMiBiaXQgY29sb3IuCgktIEltcGxlbWVudGVkIHNvbWUgdHJpdmlhbCByYXN0ZXIgb3BlcmF0aW9ucy4KCS0gTWluaW1pemVkIGlubmVyIGxvb3BzIGZvciBtYXhpbXVtIHNwZWVkLgoJLSBVc2UgbWVtY3B5IHdoZW5ldmVyIHBvc3NpYmxlLgoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlZHVjZWQgZnJhZ21lbnQgc2l6ZS4KCVJlb3JnYW5pemVkIHdvZE9wZW4gKHdpdGggc3VwcG9ydCBmb3IgV0FWRV9RVUVSWV9GT1JNQVQpLgoJRml4ZWQgYnVmZmVyIHVuZGVycnVuIHJlY292ZXJ5LgoJRml4ZWQgYnVnIGluIHdvZFJlc2V0KCkvd29kQ2xvc2UoKS4KCgkqIG9sZS9zdG9yYWdlMzIuYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVNpbXBsaWZ5IHByb3BlcnR5TmFtZUNtcCgpIGFuZCBmaXggYSB3YXJuaW5nIGluIHRoZSB3YXkgYnkgcmVtb3ZpbmcKCUNSVERMTF9fd2NzdXByKCkgY2FsbHMuCgoJKiBtaXNjL2RkZW1sLmM6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglEZGVOYW1lU2VydmljZTogZXhwYW5zaW9uIG9mIHN0dWIgdG8gdHJhcCB1bnVzZWQgaW5zdGFuY2VpZHMgYXQgc3RhcnQgb2YgcnVuLgoJRGRlR2V0TGFzdEVycm9yOiBjYXRjaCAnbm90IGluaXRpYWxpemVkJyBzaXR1YXRpb24gYW5kIHJldHVybiBjb3JyZWN0IHJlc3BvbnNlLgoJRGRlRnJlZVN0cmluZ0hhbmRsZTogY29tcGxldGUgdGVzdCBmb3IgZXJyb3Igc2V0IGJ5IHByZXZpb3VzIGNhbGwgb2YKCXNvbWV0aGluZyBhbmQgaWdub3JlIGl0LCBhbHNvIHJlbGVhc2UgaGFuZGxlIHRhYmxlIG11dGV4IG9uIG5vcm1hbCBleGl0LgoJRGRlUXVlcnlTdHJpbmdBLCBEZGVRdWVyeVN0cmluZ1csIERkZUNyZWF0ZVN0cmluZ0hhbmRsZVc6IFJlbGVhc2UKCWhhbmRsZSB0YWJsZSBtdXRleCBvbiBub3JtYWwgZXhpdC4KCgkqIGluY2x1ZGUvd25ldC5oLCBtaXNjL25ldHdvcmsuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IGFubm91bmNlIHRoZSBXTmV0RGlyZWN0b3J5Tm90aWZ5IGNhcGFiaWxpdHkgV05ldEdldENvbm5lY3Rpb24uCglDaGFuZ2UgdGhlIHJldHVybiB2YWx1ZSBmb3IgbG9jYWwgZmlsZXMuCgoJKiB3aW5kb3dzL21vdXNlLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGQgIndpbi5oIiB0byBmaXggaW1wbGljaXQgZnVuY3Rpb24gZGVjbGFyYXRpb24gd2FybmluZ3MuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT25seSBkZWNsYXJlIGNvbnNvbGUgImRyaXZlciIgb25jZSwgdXNlIGV4dGVybmFsIHJlZnMgZWxzZXdoZXJlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJV2hlbiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIGlzIHJlbW92ZWQsIHRoZSBiYWNrZ3JvdW5kIHdhcyBub3QKCXByb3Blcmx5IHJlcGFpbnRlZC4KCgkqIGxvYWRlci9zaWduYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaXNhYmxlIEFDIGJpdCBvbiByZWNlaXZpbmcgYWxpZ25tZW50IGV4Y2VwdGlvbnMuCgoJKiBtaXNjL21haW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTeXN0ZW1QYXJhbWV0ZXJzSW5mbyBTUElfR0VUTk9OQ0xJRU5UTUVUUklDUzogaW1wbGVtZW50ZWQgbWVudSBwYXJ0LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglXaGlsZSBoYW5kbGluZyB0aGUgV01fREVMRVRFV0lORE9XIGNsaWVudCBtZXNzYWdlIGNoZWNrIGlmIGEgd2luZG93CgloYXMgYmVlbiBkaXNhYmxlZCBhbmQgaWYgc28gcHJldmVudCBhbiBTQ19DTE9TRSBtZXNzYWdlIGZyb20gYmVpbmcKCXNlbnQuCgoJKiB3aW5kb3dzL2RjZS5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCU1ha2UgYWNjZXNzIHRvIHRoZSBEQ0UgbGlzdCB0aHJlYWQgc2FmZSBieSBlbnN1cmluZyB3ZSBoYXZlIGFjcXVpcmVkCgl0aGUgV2luZG93cyBsb2NrIGJlZm9yZSB1c2luZyBpdC4KCkZyaSBBcHIgMTYgMTU6MTk6MTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlc291cmNlcy8uY3ZzaWdub3JlOiBDaGFuZ2VkIGZvciByZW5hbWVkIGZpbGVzCgoJKiBtaXNjL3dpbnNvY2tfYXN5bmMuYywgbXNkb3MvZG9zY29uZi5jLCB3aW5kb3dzL3VzZXIuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXhlZCB3YXJuaW5ncy4KCgkqIG9sZS9ubHMvd2FsLm5scywgb2xlL29sZTJubHMuYywgcmVzb3VyY2VzL0F0dGljL3N5c3Jlc19Dei5yYywgcmVzb3VyY2VzL0F0dGljL3N5c3Jlc19Qby5yYywgcmVzb3VyY2VzL0F0dGljL3N5c3Jlc19Tdy5yYywgcmVzb3VyY2VzL01ha2VmaWxlLmluLCByZXNvdXJjZXMvc3lzcmVzLmMsIHJlc291cmNlcy9zeXNyZXNfQ3MucmMsIHJlc291cmNlcy9zeXNyZXNfUHQucmMsIHJlc291cmNlcy9zeXNyZXNfU3YucmMsIHJlc291cmNlcy9zeXNyZXNfV2EucmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3dpbm5scy5oLCBtaXNjL21haW4uYzoKCVBhYmxvIFNhcmF0eGFnYSA8cGFibG8uc2FyYWNoYWdhQHBpbmcuYmU+CglBZGRlZCB3YWxvbiBsYW5ndWFnZSBzdXBwb3J0IChJIGFsc28gbW92ZWQgQ3ogLT4gQ3MsIFN3IC0+IFN2LCBhbmQgUG8KCS0+IFB0OyB0byBjb25mb3JtIHRvIHN0YW5kYXJkIG5hbWVzIGZvciB0aG9zZSBsYW5ndWFnZXMpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHJlbGF5MzIvTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCAtZm5vLWJ1aWx0aW4gd2hlbiBjb21waWxpbmcgd2l0aCBnY2MgaW4gcmVsYXkzMi8gc3ViZGlyLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCB0b29scy9idWlsZC5jLCBpZjE2MzIvYnVpbHRpbi5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJLSBJbXBsZW1lbnRlZCBwcm9wZXIgKCJyZWFsIiwgY29tcHJlc3NlZCkgV2luMTYgZW50cnkgdGFibGVzLgoJLSBGaXhlZCBNeUFsbG9jIChBS0EgTkVfQWxsb2NhdGVTZWdtZW50KS4KCS0gSW1wbGVtZW50ZWQgUGF0Y2hDb2RlSGFuZGxlMTYuCgoJKiB0b29scy9BdHRpYy9tYWtlX29zMi5zaCwgdG9vbHMvbWFrZV9vczIuY21kLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvc2lnX2NvbnRleHQuaDoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglBIGZldyBwYXRjaGVzIHRvIGhlbHAgV2luZSB0byBjb21waWxlIG9uIE9TLzIuCgpUaHUgQXByIDE1IDE2OjQ2OjUxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBpbmNsdWRlL21ldGFmaWxlLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglDaGFuZ2UgKDMyIGJpdCkgSE1FVEFGSUxFcyB0byBHREkgb2JqZWN0cyAoSE1FVEFGSUxFMTZzIHJlbWFpbiBhcwoJZ2xvYmFsIG1lbW9yeSBoYW5kbGVzKS4gIEZpeGVkIGRpc2stYmFzZWQgTWV0YUZpbGVzLiAgQmV0dGVyCglzZXBhcmF0aW9uIGJldHdlZW4gTWV0YUZpbGUgcGxheWJhY2sgYW5kIHRoZSBtZXRhZmlsZWRydi4KCgkqIG1pc2MvY3J0ZGxsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJX0NJcG93IGFyZ3VtZW50IG9yZGVyIHdhcyBjb25maXJtZWQgd2l0aCBTdGFyY3JhZnQgdjEuMDUuCgoJKiBkb2N1bWVudGF0aW9uL2tleWJvYXJkOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsYXJpZmllZCBhIGZldyBwb2ludHMuCgoJKiBtc2Rvcy9pbnQyMS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQWRkZWQgSU9DVEwgZnVuY3Rpb24gMHg0NDBkLzB4NzIuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVVuaXRpYWxpemVDcml0aWNhbFNlY3Rpb24gcGFydGlhbCBzdHViIGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBwcm90byBmb3IgR2V0RXhpdENvZGVUaHJlYWQuCgoJKiBpbmNsdWRlL2RyaXZlci5oLCBpbmNsdWRlL3dpbmUva2V5Ym9hcmQxNi5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZGVkIG1pc3Npbmcgd2luZGVmLmggaW5jbHVkZXMuCgoJKiB3aW5kb3dzL2lucHV0LmMsIGluY2x1ZGUvd2ludXNlci5oOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglSZWxlYXNlQ2FwdHVyZSgpIGlzIHN1cHBvc2VkIHRvIHJldHVybiBhIEJPT0wgdmFsdWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgbG9hZGVyL3NpZ25hbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGcmVlQlNEIDMgbXVsdGl0aHJlYWRpbmcgZmluYWwgZml4LiBEbyBub3QgdXNlIGxpYmNfciwgbGliYyBpcyBqdXN0IGFzCglyZWVudHJhbnQgY29uY2VybmluZyBlcnJuby4gUmV2ZXJ0IHVubmVlZGVkIEZyZWVCU0QgaGFjayB0bwoJbG9hZGVyL3NpZ25hbC5jIGZyb20gbGFzdCBwYXRjaC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCWluZGV4ID09IDMgY29ycmVzcG9uZHMgdG8gQWx0LUdyICsgU2hpZnQuCgoJKiBtaXNjL2RkZW1sLmM6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglNb3JlIG9mIERkZUNyZWF0ZVN0cmluZ0hhbmRsZUEsIERkZUZyZWVTdHJpbmdIQW5kbGUsIERkZVF1ZXJ5U3RyaW5nQQoJYW5kIERkZUNyZWF0ZVN0cmluZ0hhbmRsZVcgYW5kIHRpZHkgdXAgb2YgUmVtb3ZlSFNaTm9kZXMsIGFuZAoJRGRlQ3JlYXRlU3RyaW5nSGFuZGxlQS4KCgkqIHdpbmRvd3MveDExZHJ2L21haW4uYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL3gxMWRydi5oOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIHVnbHkgZGlzYWJsZWQgY29udHJvbHMgYW5kIGJsYWNrIGJhY2tncm91bmQgaW4gV3JpdGUgYW5kIExvdHVzCglOb3Rlcy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBpbmNsdWRlL2J1dHRvbi5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnQgdGhlIGJ1dHRvbiB3aXRoIGJpdG1hcHMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBJU3RvcmFnZTo6Q29weVRvIGFuZCBJU3RyZWFtOjpDb3B5VG8uCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQWx3YXlzIHJlbGVhc2UgdGhlIFdpbjE2TG9jayBpbiBUQVNLX1Jlc2NoZWR1bGUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVNvbHZlZCBhIGRlYWRsb2NrIGJldHdlZW4gZ2xvYmFsIGxvY2sgYW5kIHduZCBsb2NrIGluIGV2ZW50LmMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHlwbyB0aGF0IGJyb2tlIFNvbGFyaXMgY29tcGlsZSBmaXhlZC4KCgkqIGNvbnRyb2xzL2Rlc2t0b3AuYzogRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglBZGQgYSBXSU5fUmVsZWFzZURlc2t0b3AgaW4gREVTS1RPUF9Jc1NpbmdsZVdpbmRvdy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggc2NhbmNvZGVzIGZvciBOdW1Mb2NrIGFuZCBOdW0tLy4KCUZpeCBNYXBWaXJ0dWFsS2V5KCkgKG1hcHR5cGU9MikgdG8gcmV0dXJuIHByb3BlciBhc2NpaSBjb2RlLgoJUmV3b3JrZWQgR2V0S2V5TmFtZVRleHQoKSBhZ2Fpbi4KCgkqIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTGltaXQgbGFzdENoYXIgdG8gMHhmZiBpbiBQU0RSVl9HZXRDaGFyV2lkdGguCgoJKiB3aW5kb3dzL3VzZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIFdJTkFQSSBmb3IgUmVnaXN0ZXJTeXN0ZW1UaHJlYWQuCgpTdW4gQXByIDExIDE4OjQ4OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQxMC5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCAiRGlzcGxheSBDb21iaW5hdGlvbiIgY2FsbC4KCgkqIG1pc2MvY29tbS5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBhIGNyYXNoIGR1ZSB0byBpbnZhbGlkIE9wZW5Db21tIHJldHVybiB2YWx1ZSBmb3IgYnVzeSBjb21tIHBvcnQuCglDbGVhbmVkIHVwL2ZpeGVkIHNldmVyYWwgdGhpbmdzLgoKCSogd2luZG93cy93aW4uYzogRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglFbmFibGVkIHRocmVhZCBzYWZlbmVzcyBmb3Igd25kIHN0cnVjdHVyZSBjb2RlLgoKCSogZGVidWdnZXIvZGJnLnk6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIENMSUVOVF9EZWJ1Z2dlclJlcXVlc3QgdG8gZnJlZXplL3VuZnJlZXplIHRocmVhZHMuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG5ldyBDTElFTlRfRGVidWdnZXJSZXF1ZXN0IHJvdXRpbmUsIGltcGxlbWVudGVkIHN1cHBvcnQgZm9yCglERUJVR0dFUl9GUkVFWkVfQUxML0RFQlVHR0VSX1VORlJFRVpFX0FMTCByZXF1ZXN0cy4KCVJ1biB3aW5lIHNlcnZlciBpbiB0aGUgbWFpbiB3aW5lIHByb2Nlc3MuCglCdWdmaXg6IG5ldmVyIGZyZWUgaW5pdGlhbCB0aHJlYWQhCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTm9uLWZ1bmN0aW9uYWwgUFJPQ0VTU19TdXNwZW5kL1Jlc3VtZU90aGVyVGhyZWFkcyByZW1vdmVkLgoKCSogd2luZG93cy90aW1lci5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRlYWNoZWQgVElNRVJfR2V0TmV4dEV4cGlyYXRpb24gdGhhdCBhIHRpbWVyIHRoYXQgaGFzIGFscmVhZHkgZXhwaXJlZAoJKGJ1dCBub3QgcHJvY2Vzc2VkIHlldCkgSEFTIGFscmVhZHkgZXhwaXJlZC4uLgoKCSogd2luZWRlZmF1bHQucmVnOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlZmF1bHQgdmFsdWVzIGZvciByZWdpc3RyeS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jYT4KCU9wdGltaXplZCBjb2RlIGZvciBTZXRJbWFnZUJpdHNfWCwgbWFraW5nIGJpdG1hcCBjcmVhdGlvbiBmYXN0ZXIuCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJVGhlIE1FQVNVUkVJVEVNU1RSVUNUIGFuZCBEUkFXSVRFTVNUUlVDVCB3ZXJlIGZpbGxlZCB3cm9uZy4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBsb2FkZXIvc2lnbmFsLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJLSBTdGFydGVkIG11bHRpdGhyZWFkaW5nIGZvciBGcmVlQlNEIChpbmNvbXBsZXRlLCBidXQgc29tZQoJICBhcHBsaWNhdGlvbnMgbm93IGF0IGxlYXN0IHN0YXJ0IHVwIGFnYWluKS4KCS0gVXNlIF90aHJlYWRfc3lzX3NpZ2FjdGlvbi9fdGhyZWFkX3N5c19zaWdhbHRzdGFjay4KCS0gQ1IyIG9uIHBhZ2VmYXVsdCBnZXRzIHBhc3NlZCBpbiBzY19lcnIgKHNvbWUga2luZCBvZiBrbHVkZ2UgaW4KCSAgRnJlZUJTRCBvd25zIGZhdWx0IGhhbmRsaW5nIHdlIGNhbiB1c2UpCgoJKiBpbmNsdWRlL3NlbGVjdG9ycy5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zZWxlY3Rvci5jOgoJTWFkZSBTRUxFQ1RPUl9SZWFsbG9jQmxvY2sgcHJlc2VydmUgdGhlIGN1cnJlbnQgc2VsZWN0b3IgYWNjZXNzIHJpZ2h0cwoJKHByb2JsZW0gcmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KCgkqIG1pc2Mvc3lzdGVtLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHNlcnZpY2VzIHRocmVhZCBpbnN0ZWFkIG9mIHRpbWVyIHNpZ25hbHMuCgoJKiBzZXJ2ZXIvdGhyZWFkLmMsIHNjaGVkdWxlci9zeW5jaHJvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IHVzZXIgQVBDcyB3aXRoIE5VTEwgJ2Z1bmMnIChqdXN0IHdha2UgdXAgdGhlIHRocmVhZCkuCgoJKiBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkICdrZXJuZWwgc2VydmljZXMgdGhyZWFkJy4KCgkqIGluY2x1ZGUvd2luc3Bvb2wuaCwgbWlzYy9wcmludGRydi5jLCByZWxheTMyL3dpbnNwb29sLnNwZWM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIHN0dWIgZm9yIFByaW50ZXJQcm9wZXJ0aWVzLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS9udGRkay5oLCByZWxheTMyL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgTnRUZXJtaW5hdGVQcm9jZXNzIGFuZCBOdERpc3BsYXlTdHJpbmcuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGcmVlTGlicmFyeSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uLgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIF9mdG9sIHRha2UgYXJndW1lbnQgZnJvbSBGUFUgc3RhY2suIFN0YXJjcmFmdCB2MS4wNCAoKm5vdCogQnJvb2QKCVdhcnMpIG5vdyB3b3JrcyBwZXJmZWN0bHkgd2l0aCBXaW5lJ3MgY3J0ZGxsLiBXcm90ZSBhIHRlc3QKCWltcGxlbWVudGF0aW9uIG9mIF9DSXBvdyB0b28sIHdoaWNoIHRob3NlIHdobyBkbyBoYXZlIEJyb29kIFdhcnMgY2FuCglyZXBvcnQgb24sIHNvIGl0IGNhbiBiZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0S2V5TmFtZVRleHQgZm9yIG5ldyBrZXlib2FyZCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3RhcGkzMi9waG9uZS5jOiBLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJRml4ZWQgd2FybmluZy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgUmVhZENsYXNzU3RnIHByb3RvdHlwZS4KCgkqIG1pc2Mvd3NwcmludGYuYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCS0gRml4IGNvbW1lbnRzIGFmdGVyIHRoZSBiaWcgcmVuYW1pbmcgKHh4eHgzMnkgLS0+IHh4eHh5KS4KCS0gRGVjbGFyZSB0aGUgV1BSSU5URl9EQVRBIHVuaW9uLCBhbmQgdXNlIGl0IGluc3RlYWQgb2YgTFBDVk9JRCBhbmQgV09SRC4KCSAgQXZvaWQgdWdseSB0eXBlIGNhc3RpbmcsIGFuZCBmaXggY29tcGlsYXRpb24gd2FybmluZ3Mgb2Ygd3NwcmludGYuYwoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGRlOgoJS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCVN0YXR1cyBkb2N1bWVudCBmb3IgRERFL0RkZW1sLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGV2ZW50IGNhbGxiYWNrIG1lY2hhbmlzbS4KCUludHJvZHVjdGlvbiBvZiBNQ0kgeWllbGQgcHJvY3MuCglVcGRhdGVkIChwcmVwYXJlfHVucHJlcGFyZSloZWFkZXIgZnVuY3Rpb25zICh3YXZlLCBtaWRpKSB0byBhbGxvdwoJY29ycmVjdCBjYWxsYmFjayBtZWNoYW5pc21zLgoJTWFkZSBtaWRpU3RyZWFtWFhYIGZ1bmN0aW9ucyB3b3JraW5nLgoJRmlyc3QgdHJ5IGF0IG1tVGhyZWFkWFhYIGZ1bmN0aW9ucy4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgKHByZXBhcmV8dW5wcmVwYXJlKWhlYWRlciBmdW5jdGlvbnMgdG8gYWxsb3cgY29ycmVjdCBjYWxsYmFjawoJbWVjaGFuaXNtcy4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNtYWxsIGVuaGFuY2VtZW50LgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOZXcgbWV0aG9kIGZvciBzdHJ1Y3R1cmUgY29udmVyc2lvbiAoMTYgPC0+IDMyKS4KCU1vcmUgTUNJIHN0cnVjdHVyZXMgY29ycmVjdGx5IG1hcHBlZC4KCUludHJvZHVjdGlvbiBvZiBNQ0kgeWllbGQgcHJvYyBhbmQgYnJlYWsgZmFjaWxpdHkuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyB0byBhbGxvdyBjb3JyZWN0IGNhbGxiYWNrCgltZWNoYW5pc21zLiAgSW1wbGVtZW50ZWQgd2F2ZU91dCBwbGF5YmFjayBhcyBhc3luY2hyb25vdXMuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGltcGxlbWVudGF0aW9uIG9mIG1tVGhyZWFkWFhYIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGZldyBtaXNzaW5nIGRlZmluZXMgKE1JREksIFdBVkUsIGNhbGxiYWNrcykuCglTdHJ1Y3R1cmVzIGZvciBtaWRpU3RyZWFtWFhYIGZ1bmN0aW9ucy4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgKHByZXBhcmV8dW5wcmVwYXJlKWhlYWRlciBmdW5jdGlvbnMgKHdhdmUsIG1pZGkpIHRvIGFsbG93Cgljb3JyZWN0IGNhbGxiYWNrIG1lY2hhbmlzbXMuIEFkZGVkIHdpbmUgc3BlY2lmaWMgZW50cnkgZm9yIG1tVGhyZWFkWFhYCglmdW5jdGlvbnMgdGhyZWFkIHN0YXJ0aW5nIHBvaW50LgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJSW50cm9kdWNlIFNUQVRTVEcxNiAtIGEgMTYgYml0IHZhcmlhbnQgb2YgU1RBVFNURy4KCgkqIG9sZS9zdG9yYWdlLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXggSVN0b3JhZ2UxNl9mblN0YXQoKSB0byB1c2UgU1RBVFNURzE2IChpdCBpcyBhIDE2IGJpdCBpbnRlcmZhY2UpLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgoJRml4ZWQgbWVudSB0eXBlIHNldHRpbmcgaW4gU2V0TWVudUl0ZW1JbmZvMzJfY29tbW9uKCkuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNlbmQgVVNJR19QUk9DRVNTX0NSRUFURSBzaWduYWwuCglCdWdmaXg6IEdldFByb2Nlc3NEd29yZCBvZmZzZXQgLTggc2hvdWxkIHJldHVybiBwYXJlbnQgcHJvY2VzcyBJRC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUFkZGVkIFJlZ2lzdGVyU3lzdGVtVGhyZWFkIHN0dWIuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjLCBpbmNsdWRlL3dpbmVycm9yLmg6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgQ29DcmVhdGVJbnN0YW5jZUV4IG1ldGhvZC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogRGF2aWQgR2F5IDxkZ2F5QENTLkJlcmtlbGV5LkVEVT4KCUZpeGVkIGNyYXNoIGR1ZSB0byBhIHZhbHVlIG9mIG5hbWUgbGVuZ3RoIDAsIHZhbHVlIGxlbmd0aCAwIGF0IHRoZSBlbmQKCW9mIHRoZSByZWdpc3RyeS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIGlmIHBUZW1wQWN0aXZlV2luZG93IGluIFdJTlBPU19TZXRXaW5kb3dQb3MgaXMgdmFsaWQgYWZ0ZXIgdGhlCglRVUVVRV9Mb2NrLgoKCSogbXVsdGltZWRpYS9kcGxheS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gdXBkYXRlZCBiZWNhdXNlIG9mIHRoZSBzcGxpdHRpbmcgb2YgaW50ZXJmYWNlL2ltcGxlbWVudGF0aW9uCgktIHVwZGF0ZWQgdG8gdXNlIElDT01fVEhJUwoKCSogaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgb2xlL2d1aWQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSB1c2UgdGhlIGxhdGVzdCBJQ09NIG1hY3JvcwoJLSBtb3ZlZCB0aGUgSURpcmVjdFBsYXlMb2JieSBpbnRlcmZhY2UgdG8gZHBsb2JieS5oCgktIHJlbW92ZWQgYWxsIHRoZSBpbXBsZW1lbnRhdGlvbiBhc3BlY3RzIHNpbmNlIHRoZXkgbmVlZCB0byBiZQoJc2VwYXJhdGUKCgkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUlDT01pc2F0aW9uIG9mIHRoZSBEaXJlY3RTb3VuZCBBUEkuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHJlb3JnYW5pc2VkIGljb24gZXh0cmFjaW5nIGZyb20gZmlsZXMKCS0gbWFkZSBleHRyYWN0aW5nIGZyb20gbmUgYW5kIGljbyBmaWxlcyB3b3JraW5nCgktIElQZXJzaXN0RmlsZSBpbnRlcmZhY2UgZm9yIElFeHRyYWN0SWNvbgoKCSogbWlzYy9zaGVsbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGJ1ZmZlciBvdmVycnVuLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHJlc3NvdXJjZSBkaXIgc3RydWN0dXJlcy4KCUFkYXB0ZWQgRmluZEJlc3RJY2Nvbi9GaW5kQmVzdEN1cnNvci4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMb2FkaW5nIHRoZSBjb2xvciBzY2hlbWEgZm9yIHJlZ2lzdHJ5LgoKU2F0IEFwciAxMCAxNjo1ODo1NSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5zb2NrLmgsIG1pc2MvQXR0aWMvd2luc29ja19kbnMuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19hc3luYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWltcGxlbWVudGVkIHdpbnNvY2sgYXN5bmNocm9ub3VzIEROUyBzZXJ2aWNlcy4gTm8gbG9uZ2VyIHVzZSBhCglmb3JrKCllZCBwcm9jZXNzLCBidXQgZWl0aGVyIGEgc2VydmljZSB0aHJlYWQgb3IgaW5saW5lIGJsb2NraW5nIGNhbGxzCglmb3Igbm9uLXRocmVhZGluZyBhcmNoaXRlY3R1cmVzLiAoTWFrZXMgRnJlZSBBZ2VudDE2IHdvcmsgYWdhaW4uKQoKCSogcHJvZ3JhbXMvY21kbGd0c3QvQXR0aWMvY21kbGdyLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCTxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCS0gY29sb3IgYW5kIGZvbnQgZGlhbG9ncyBub3cgYWN0dWFsbHkgZG8gc29tZXRoaW5nIGludGVyZXN0aW5nLAoJICBhbmQgZm9yY2UgYSByZWRyYXcgd2hlbiBzdWNjZXNzZnVsLiAgQmFja2dyb3VuZCBjb2xvciBpcyBhZGp1c3RhYmxlLgoJICBUZXh0IGNvbG9yIGlzIGFsc28gYWRqdXN0YWJsZSwgYnV0IHRoZSB1c2VyIGhhcyB0byBzZXQgdGhlIENGX0VGRkVDVFMKCSAgZmxhZyBmaXJzdC4KCS0gdGV4dCBpcyBvdXRwdXQgbGVmdC1yaWdodCBjZW50ZXJlZCwgYmFzZWxpbmUsIGF0IHRoZSBtaWRkbGUKCSAgb2YgdGhlIHdpbmRvdywgYW5kIG1vdmVzIHdpdGggdGhlIHdpbmRvdy4gIFRleHQgZm9udCBpcyBhZGp1c3RhYmxlLgoJLSBTdWNjZXNzIGFuZCBmYWlsdXJlIE1lc3NhZ2VCb3ggY2FsbHMgZm9yIENvbG9yLCBGb250LCBPcGVuLAoJICBhbmQgU2F2ZSBoYXZlIGJlZW4gcmVtb3ZlZCBvciBzdXBwcmVzc2VkLiAgVGhleSBhbm5veWVkIG1lIGFmdGVyCgkgIGF3aGlsZSwgYW5kIEkgc3VzcGVjdCB0aGV5IGFubm95ZWQgb3RoZXJzLCB0b28uICBVc2UgbXkgdG9vbCEgOi0pCgktIGNtZGxndHN0IG5vdyBoYXMgdGhlIGZ1bGwgcGF0aG5hbWUgaW4gdGhlIHVwcGVyIGxlZnQgY29ybmVyOyB3aGljaCBtYXkKCSAgYXNzaXN0IGluIGRlYnVnZ2luZyBjZXJ0YWluIHByb2JsZW1zIC0tIG9yIGl0IG1heSBub3QuIDotKQoJLSB1c2FnZSBkaWFsb2cgYWRkZWQKCgkqIG9sZS9vbGUybmxzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29ycmVjdGVkIGRlYnVnIG91dHB1dC4KCgkqIHdpbmRvd3MvZHJpdmVyLmMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQmV0dGVyIGVycm9yIGhhbmRsaW5nIDsgYSBmZXcgYnVnIGZpeGVzIDsgbm93IE9wZW5Ecml2ZXIxNiBjYW4gbG9hZCAzMgoJYml0IGRyaXZlcnMuCglBZGRlZCBzdHViIGZvciBHZXREcml2ZXJGbGFncy4KCgkqIHdpbmRvd3MvdXNlci5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglTdHVicyBmb3IgQ2xvc2VEZXNrdG9wIGFuZCBDbG9zZVdpbmRvd1N0YXRpb24uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglHZXRNb2R1bGVGcm9tUGF0aCBub3cgY2hlY2tzIGZvciBsb2FkZWQgbW9kdWxlcyB2aWEgZmlsZW5hbWVzIHdoaWNoCgl3ZXJlIHNwZWNpZmllZCB3aXRob3V0IGEgcGF0aC4KCgkqIG1pc2MvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5yZWcuaDoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIEhLVSBrZXkgc2F2aW5nIGFuZCBsb2FkaW5nLiBBZGQgbmV3IHN1cHBvcnRlZCBkYXRhCgl0eXBlIGluIGRlYnVnX3ByaW50X3ZhbHVlLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9kb2NvYmouaCwgb2xlL2d1aWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGludGVyZmFjZXMgZm9yIElPbGVDb21tYW5kVGFyZ2V0LCBJRHJvcFRhcmdldCwgSVZpZXdPYmplY3QuCglTbWFsbCBjaGFuZ2UgaG93IHRvIGdldCBpY29ucyBmb3IgbGlzdHZpZXcuCgoJKiBpbmNsdWRlL3NobG9iai5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSUxMb2FkRnJvbVN0cmluZyBhbmQgU0hHZXRTZXR0aW5ncyBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSEdldFNldHRpbmdzIGltcGxlbWVudGVkLgoJRXhpdFdpbmRvd3NEaWFsb2coKSBzaW11bGF0ZWQgYnkgTWVzc2FnZWJveC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSUxMb2FkRnJvbVN0cmluZyBpbXBsZW1lbnRlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmM6CglSaWNoYXJkIE1vcnRpbWVyIDxyZW1pdHJvbUBteS1kZWphbmV3cy5jb20+CglBZGRlZCBtaXNzaW5nICpJc0RhcmsgZW50cmllcyBpbnRvIFBBTEVUVEVfRHJpdmVyIGluc3RhbmNlCglpbml0aWFsaXNhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6IEJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KCUZpeGVkIFgxMURSVl9NT1VTRV9XYXJwUG9pbnRlciBpbml0aWFsIHZhbHVlLgoKCSogb2JqZWN0cy9iaXRtYXAuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUVuc3VyZSB0aGF0IHRoZSBiaXRtYXAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgd2hlbiBjcmVhdGVkIHdpdGggdGhlCglMUl9DUkVBVEVESUJTRUNUSU9OIGZsYWcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBtZXNzYWdpbmcgcHJvYmxlbSBvZiB0aGUgZWRpdCBib3ggZm9yIG5vZGUgbGFiZWwgZWRpdGlvbi4KCVN1YnN0aXR1dGVkIFdNX1BBSU5UIGZvciBJbnZhbGlkYXRlUmVjdC4KCVNvbWUgZ3JhcGhpY2FsIGZpeGVzLgoKCSogbWlzYy9tYWluLmM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUNoZWNrIGZvciBkcml2ZXJzPT1OVUxMIGJlZm9yZSB0cnlpbmcgdG8gZGVsZXRlIHRoZW0gYXQgZXhpdC4gIFRoaXMKCWNvdWxkIGhhcHBlbiBpZiB0aGUgZW11bGF0b3IgaW5pdGlhbGl6YXRpb24gZmFpbGVkIGZvciBzb21lIHJlYXNvbiBhbmQKCXRoZSBkcml2ZXJzIGhhZG4ndCBiZWVuIGluaXRpYWxpemVkIHlldC4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgSW5pdEFwcDE2ICh1c2luZyBDYWxsb3V0KSBmb3IgaW5pdGlhbCBwcm9jZXNzLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNsZWFyIGludmFsaWQgc2VsZWN0b3JzIGFsc28gaW4gQ2FsbFRvMTYgcmVsYXkgY29kZS4KCgkqIHByb2dyYW1zL25vdGVwYWQvRXMucmM6CglKb3NlIE1hcmNvcyBM83BleiBDYXJhdmFjYSA8am9zZS5sb3BlekB1cGNuZXQudXBjLmVzPgoJUmV2aXNlZCBTcGFuaXNoIHJlc291cmNlcy4KCgkqIHdpbmRvd3MvbWRpLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgd2luZG93IGxvY2tpbmcgYnVnIGluIENhbGNDaGlsZFNjcm9sbC4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGZha2UgbXVsdGltZWRpYSB0aW1lcnMuIEdyaW0gRmFuZGFuZ28gaXMgbm93IGFibGUgdG8gc3RhcnQgdXAKCXdoZW4gdW5kZXIgZmF2b3JhYmxlIGNvbmRpdGlvbnMuIFRoZSBwcmV2aWV3IG1vdmllIG9uIHRoZSBCcm9vZCBXYXJzCglkaXNjIG5vdyBwbGF5cywgdG9vLgoKCSogbWlzYy9wcmludGRydi5jOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUJ1Z2ZpeCBFbnVtUHJpbnRlcnNBOiBscGJQcmludGVycz1OVUxMIG9yIGNiQnVmPTAgd291bGQgY3Jhc2ggV2luZSwKCWluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZSByaWdodCBidWZmZXJzaXplLgoKVHVlIEFwciAgNiAwNzoxNDowOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IGdhbGJlcnRlIDxnYWxiZXJ0ZUBuZW8ucnIuY29tPgoJRml4ZWQgU2VhcmNoUGF0aEEgcmV0dXJuIHZhbHVlLgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gY2xlYW4tdXAgb2YgdGV4dHVyZSAnbG9hZGluZycKCS0gYWRkZWQgU2V0Q29sb3JLZXkgY2FsbGJhY2sgZm9yIGFscmVhZHkgbG9hZGVkIHRleHR1cmVzCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBhIHByb2JsZW0gcG9pbnRlZCBvdXQgYnkgS2V2aW4gSG9sYnJvb2suCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJY29tbWN0cmwuaCBtdXN0IGluY2x1ZGUgcHJzaHQuaC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJV2FybmluZyBmaXguCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBhIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSUNPTSBtYWNyb3MgdGhhdCB1c2UgTWljcm9zb2Z0IHN0eWxlCgl2aXJ0dWFsIG1ldGhvZHMgdG8gaW1wbGVtZW50IHRoZSBDT00gaW50ZXJmYWNlcyBpbiBDKysuCgoJKiBtaXNjL2RkZW1sLmM6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglDb3JyZWN0aW9uIG9mIE11dGV4IGhhbmRsaW5nIGluIERkZUluaXRpYWxpemVXIGZvciBjYXNlcyBvdGhlciB0aGFuCgkxc3QgY2FsbC4gQWRkaXRpb24gb2YgaW5zdGFuY2UgaGFuZGxpbmcgdG8gRGRlQ3JlYXRlU3RyaW5nSGFuZGxlQSwKCURkZUNyZWF0ZVN0cmluZ0hhbmRsZVcsIFJlbW92ZUhTWk5vZGVzLCBGcmVlQW5kUmVtb3ZlSFNaTm9kZXMuICAxc3QKCWN1dCBpbXBsZW1lbnRhdGlvbiBvZiBEZGVVbml0aWFsaXplLCBtb3ZlIG9mIGludGVybmFsIHN0cnVjdHVyZSBkZWZzCglpbiBmcm9tIGRkZW1sLmguIFJlbW92ZWQgbm9uLUFOU0kgY29tbWVudC4KCgkqIGluY2x1ZGUvZGRlbWwuaDogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCU1vdmVkIGludGVybmFsIHN0cnVjdHVyZXMgdG8gZGRlbWwuYywgYWxzbyByZW1vdmVkIG5vbi1BTlNJIGNvbW1lbnRzLAoJYW5kIGFkZGVkIHNwZWMgZm9yIERkZVF1ZXJ5Q29uZkluZm8gYW5kIERkZVF1ZXJ5Q29udkluZm8xNi4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIG1lbW9yeSBsZWFrcyBpbiBtaXhlck9wZW4xNi9taXhlckNsb3NlLAoJbWlkaU91dE9wZW4xNi9taWRpT3V0Q2xvc2UxNiwgd2F2ZUluT3BlbjE2L3dhdmVJbkNsb3NlMTYsCgltaWRpSW5PcGVuMTYvbWlkaUluQ2xvc2UxNi4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglBZGRlZCBzYW5pdHkgY2hlY2sgZm9yIHdoaXRlc3BhY2UgaW4gZmlsZSBuYW1lcywgdmFyaW91cyBvdGhlciBmaXh1cHMuCgpTdW4gQXByICA0IDEyOjQ4OjIxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglXTV9NT1VTRU1PVkUgaW1wbGVtZW50YXRpb24gYnVnIGZpeC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglKb3PpIE1hcmNvcyBM83BleiA8am9zZS5sb3BlekB1cGNuZXQudXBjLmVzPgoJQWRkZWQgU3BhbmlzaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBtaXNjL2NvbW0uYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJRml4ZWQgdGhlIG1vZGVtIGNvbnRyb2wgcGFydCBvZiBFc2NhcGVDb21tRnVuY3Rpb24xNi4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBnb3RvLgoKCSogb2xlL29sZTJubHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbm5scy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbnVtQ2FsZW5kYXJJbmZvQSBzdHViLgoKU2F0IEFwciAgMyAxNjoyNzo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglTdXNwZW5kIHRoZSB3aW5kb3cgbG9ja3MgYmVmb3JlIERlZktleWJFdmVudFByb2MgYW5kCglEZWZNb3VzZUV2ZW50UHJvYy4KCgkqIGluY2x1ZGUvd25hc3BpMzIuaCwgcHJvZ3JhbXMvdmlldy9nbG9iYWxzLmgsIGluY2x1ZGUvYXNwaS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd2luYXNwaS5oLCBpbmNsdWRlL3dpbmlvY3RsLmgsIGluY2x1ZGUvd2lubnQuaDoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCU1vcmUgI3ByYWdtYSBmaXhlcyAoaWRlYSBPdmUgS2FhdmVuLCBtaXN0YWtlcyBhcmUgbWluZSkuCgoJKiB3aW5kb3dzL3dpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBzZW5kaW5nIGF0b21zIGluICgoQ1JFQVRFU1RSVUNUKilsUGFyYW0pLT5scHN6TmFtZSBvZgoJV01fQ1JFQVRFIG1lc3NhZ2VzLgoKCSogbG9hZGVyL21vZHVsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgU2V0TGFzdEVycm9yKClzIGluIEdldFByb2NBZGRyZXNzKCkgYW5kIExvYWRMaWJyYXJ5KCkuCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJQ2hyaXN0aWFuIFNjaGxhaWxlIDx1cDluQHJ6LnVuaS1rYXJsc3J1aGUuZGU+CglJbXBsZW1lbnRlZCBtYWtlcGF0aCwgcmFuZCgpIHJldHVybnMgY29ycmVjdCByYW5nZSwgZml4ZWQgZnB1dGMuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBtc2Rvcy9pbnQyMS5jOgoJTWFzayBvZmYgdW5zdXBwb3J0ZWQgYXR0cmlidXRlcyBpbiBfbGNyZWF0IChidWcgcmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KCU1vdmVkIF9sY3JlYXQxNl91bmlxIHRvIGludDIxLmMKCgkqIGxpYnRlc3QvaGVsbG8zLmMsIGxpYnRlc3QvaGVsbG8zcmVzLnJjLCBsaWJ0ZXN0L2hlbGxvNC5jLCBsaWJ0ZXN0L25ldy5jLCBsaWJ0ZXN0L3JvbGV4LmMsIGxpYnRlc3QvdmFydGVzdC5jLCBsaWJ0ZXN0L3ZvbGluZm8uYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglDYXN0cyB0byAoU0VHUFRSKSByZW1vdmVkLiBUaGV5IGRpZCBub3RoaW5nIGFueXdheS4KCUluY2x1ZGVzIGFkZGVkIG9yIHJlbW92ZWQgd2hlcmUgbmVjZXNzYXJ5LgoJV2luMTYgZnVuY3Rpb25zIHJlcGxhY2VkIHdpdGggdGhlaXIgV2luMzIgY291bnRlcnBhcnRzLiBDb21tZW50cyBhZGRlZAoJd2hlcmUgaXQgd2FzIGltcG9zc2libGUuCglDQUxMQkFDSyBhZGRlZCB3aGVyZSBuZWNlc3NhcnkuIFNvbWUgZGVjbGFyYXRpb25zIGZpeGVkLgoJQ29uc3RydWN0cyBsaWtlICIjaWYgV0lORE9XUyIgY29ycmVjdGVkLiBVc2luZyAiI2lmZGVmIF9fdW5peF9fIiBpbnN0ZWFkLgoJRGxnUHJvYyBpbiBoZWxsbzMgdXNlcyBFbmREaWFsb2coKSBpbnN0ZWFkIG9mIERlc3Ryb3lXaW5kb3coKS4KCUxpc3Rib3ggZW5hYmxlZCBpbiBoZWxsbzMuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgRnJlbmNoIGtleWJvYXJkLgoKCSogbGlidGVzdC9oZWxsby5jOiBBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglGYW5jaWVyIHZlcnNpb24gb2YgaGVsbG8uYyBjb3VydGVzeSBvZiBIdXcgRGF2aWVzLgoKCSogcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBjb21waWxhdGlvbiBvZiB0aGUgQ29udHJvbCBwYW5lbC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJJ1JlYWxpZ25lZCcgdGhlIGxheW91dCB0YWJsZSBhIGJpdC4gQXBwbGllZCB0aGUgbm9uLWxhdGluLTEgc3R1ZmYgYW5kCgl0aGUgZGVhZCBrZXkgbWFwcGluZyBzdHVmZiB0byB0aGUgYWN0dWFsIG1hcHBpbmcgY29kZSB0b28uICBQcmV0dGllZAoJdXAgdGhlIGZpeG1lIG1lc3NhZ2UuIEFkZGVkIGEgY2hlY2sgd2hlcmUgaWYgdGhlIGtleXMgb2YgdHdvIGxheW91dHMKCW1hdGNoIGV4YWN0bHksIHRoZSBvbmUgd2l0aCB0aGUgYmVzdC1tYXRjaGluZyBrZXljb2RlIG9yZGVyIGlzIGNob3NlbiwKCXNvIHRoYXQgdGhlIFFXRVJUWSBhbmQgRHZvcmFrIGxheW91dHMgY2FuIGJlIGRpc3Rpbmd1aXNoZWQuCgoJKiB3aW4zMi9kZXZpY2UuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAoZW1wdHkpIHN0dWIgZm9yIE9wZW5WeERIYW5kbGUuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgltbWlvT3BlbigpIG5vdyBoYW5kbGVzIGNvcnJlY3RseSBNTUlPX1BBUlNFIGZsYWcuCgoJKiBjb250cm9scy9lZGl0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglCYWNrZ3JvdW5kIGNvbG9yIGZpeCB3aGVuIGRpc2FibGVkIG9yIHJlYWQgb25seS4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVRyYW5zZmVyZWQgdGhlIHdpbmRvdyBzdHJ1Y3QgbWVtb3J5IHJlbGVhc2UgZnJvbSBXSU5fRGVzdHJveVdpbmRvdyB0bwoJV0lOX1JlbGVhc2VXbmRQdHIuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglETEdJVEVNVEVNUExBVEUgc3RydWN0dXJlIGhhZCBvbmUgdG9vIG1hbnkgbWVtYmVyLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJldmVudCBjcmFzaCBpbiBkZWJ1Z2dlci4KCkZyaSBBcHIgIDIgMTA6Mzc6NDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgaW5jbHVkZS9jb21iby5oOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFdpbjk1IGxvb2sgYW5kIGZlZWwuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglXcm90ZSBhIGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXTV9QUklOVCBtZXNzYWdlLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIG1pc2MvY2FsbGJhY2suYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVN1c3BlbmQgYWxsIHdpbmRvd3MgbG9ja3MgYmVmb3JlIHRoZSBjb250cm9sIGlzIHBhc3NlZCB0byB0aGUKCWFwcGxpY2F0aW9uLgoJQWxzbyBmaXhlZCBzb21lIGJ1Z3MgaW4gZGNlLmMKCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJLSBSZW1vdmUgc29tZSBvbGQgcmMgbWFrZSBzdHVmZgoJLSAibWFrZSBjbGVhbiIgb21pdHRlZCBzb21lIGluY2x1ZGUgc3ViZGlycwoKCSogcmVsYXkzMi9kZHJhdy5zcGVjLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBEbGxDbGFzc0ZhY3RvcnkgdG8gRGlyZWN0RHJhdy4KClRodSBBcHIgIDEgMTI6MDU6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3BsaXQgb2ZmIGtleXN5bS9kZWFkY2hhciAtPiBjaGFyIG1hcHBpbmcsIHVzZSBpdCBpbiBEZXRlY3RMYXlvdXQuCgoJKiB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9tZW51LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglGaXhlcyBmb3IgaWdub3JlZCBXVlJfW1ZIXVJFRFJBVyBmbGFncywgbWFkZSBtaW5pbWl6YXRpb24gaW4gbWFuYWdlZAoJbW9kZSBnbyB0aHJvdWdoIHdpbmRvdyBtYW5hZ2VyLCBzbWFsbCBidWdmaXhlcyBmb3IgbWVudSBhbmQgd2luZG93Cgljb2RlLCBleHRlbmRlZCBjbGlwYm9hcmQgZHJpdmVyIG1vZGVsIHRvIGhhbmRsZSBmb3JtYXRzIG90aGVyIHRoYW4KCXRleHQuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglFQ19VU0VGT05USU5GTyBtZWFucyBlcy0+Y2hhcl93aWR0aC8zLCBub3QgZXMtPmNoYXJfd2lkdGguIFRoaXMgaXMKCXRydWUgZm9yIG11bHRpbGluZSBjb250cm9scyB0b28sIGFzIG15IHRlc3RzIHNob3cuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBpY29uIGFuZCBzbWFsbGljb24gdmlld3MuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBET1NWTV9HZXRUaW1lciBzdXJ2aXZlIEVBR0FJTiBlcnJvcnMuLi4KCgkqIGluY2x1ZGUvY29tbS5oLCBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBhc3luYyBjb21tIGJ1ZmZlcnMgKGJ1dCBwcm9iYWJseSBub3QgYnVnZnJlZSksIGFuZCBhbG9uZwoJd2l0aCB0aGVtLCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhc3luYyBldmVudCBub3RpZmljYXRpb25zLCBtb25nIHRoZW0KCUVuYWJsZUNvbW1Ob3RpZmljYXRpb24uIFJlbW92ZWQgYSBwcmV2aW91cyBoYWNrIHRoYXQgd2FzIGZha2luZyB0aGUKCWJ1ZmZlcnMsIHNpbmNlIHdlIG5vdyBoYXZlIHJlYWwgYnVmZmVycy4uLgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIENOXyogZmxhZ3MgdXNlZCBpbiBXTV9DT01NTk9USUZZLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglJbXBsZW1lbnQgdGhlIEVudW1BdHRhY2hlZFN1cmZhY2UgbWV0aG9kLgoKCSogb2xlL29sZTIuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBmb3IgT2xlQ3JlYXRlTWVudURlc2NyaXB0b3IsIE9sZVNldE1lbnVEZXNjcmlwdG9yIGFuZAoJT2xlRGVzdHJveU1lbnVEZXNjcmlwdG9yIGFsb25nIHdpdGggYSBidW5jaCBvZiBpbnRlcm5hbGx5IHVzZWQgbWV0aG9kcwoJYW5kIGRhdGEgc3RydWN0dXJlcy4KCgkqIG9sZS9ndWlkLmMsIGluY2x1ZGUvaW5pdGd1aWQuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJaW5pdGd1aWQuaCBzaG91bGQgb25seSBjb250YWluIHRoZSBtYWNybyB0aGF0IGRlZmluZXMgdGhlIGd1aWRzLgoJQWRkZWQgb2xlY3RsLmggdG8gZ3VpZC5jIHNvIHNvbWUgbmVlZGVkIGd1aWRzIGdldCBkZWZpbmVkLgoJTWFkZSBHVUlEX05VTEwgYW4gYWN0dWFsIGd1aWQgc2V0IHRvIDAsMCwwLi4uCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvZ2Rpb2JqLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEdkaVNpZ25hbFByb2MoKSBzdHViLgoKCSogbWlzYy9jYWxsYmFjay5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYywgaWYxNjMyL3RodW5rLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdXNlci5oLCBsb2FkZXIvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBVU0VSMzIuVXNlclNpZ25hbFByb2MgdG8gQ2FsbG91dCB0YWJsZS4KCUltcGxlbWVudGVkIGJ1aWx0LWluIFVzZXJTaWduYWxQcm9jKCkuCglEb24ndCBhbm5vdW5jZSBXaW4zLjEtc3R5bGUgVVNFUiBoYW5kbGVyIGFueSBtb3JlLgoKCSogd2luMzIvb3JkaW5hbHMuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBQUk9DRVNTX0NhbGxVc2VyU2lnbmFsUHJvYygpLgoJU2VuZCBVU0VSIHNpZ25hbHMgYXQgdmFyaW91cyBhcHByb3ByaWF0ZSBwbGFjZXMuCglNb3ZlZCBbR1NdZXRQcm9jZXNzRHdvcmQoKSB0byBzY2hlZHVsZXIvcHJvY2Vzcy5jLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgaW5jbHVkZS9zaGxvYmouaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFsbCAxOSBGaWxlTWVudV8qIGZ1bmN0aW9ucywgc29tZSBhcyBzdHVicywgc29tZSBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hDTFNJREZyb21TdHJpbmcsIFN0clRvT2xlU3RyIGltcGxlbWVudGVkLgoJUkxCdWlsZExpc3RPZlBhdGhzIHN0dWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRGxsR2V0VmVyc2lvbiAobm90IHlldCBleHBvcnRlZCkuCglTbWFsbCBjaGFuZ2UgdG8gU0hBcHBCYXJNZXNzYWdlLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIERydkNsb3NlLCBEcnZEZWZEcml2ZXJQcm9jLCBEcnZPcGVuLCBEcnZPcGVuQSwgRHJ2U2VuZE1lc3NhZ2UuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBTdGFja0VudGVyKCkgYW5kIFN0YWNrTGVhdmUoKSBzdHVicwoKCSogbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGluZyBpbXBsZW1lbnRhdGlvbiBvZiBNQ0kgY3JlYXRvciB0YXNrcwoJRml4ZWQgYnVnIGluIE1DSV9PUEVOIGhhbmRsaW5nICh0aGFua3MgdG8gQWRhbSBmb3IgcmVwb3J0aW5nIHRoaXMgb25lKQoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIG1tVGFza0NyZWF0ZTE2CgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBjcmVhdG9yIHRhc2sgdG8gTUNJIHN0cnVjdC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglSZXBsYWNlZCAweEMwMDAgYnkgc3ltYm9saWMgY29uc3RhbnRzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgc21hbGwgPT0sICE9IG1peHVwLgoKCSogd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYzoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBXTV9OT1RJRllGT1JNQVQuCgoJKiBsb2FkZXIvZWxmLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQG11ZC5kZT4KCSJmb28iIHdhcyBub3QgdHJhbnNsYXRlZCB0byAiZm9vLnNvIiBpbiBlbGYgbG9hZGVyLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTG9hZEJpdG1hcDE2KCkvTG9hZEltYWdlMTYoKSBjYWxsaW5nIHNlcXVlbmNlIHNpbXBsaWZpZWQuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtaXNjL2NhbGxiYWNrLmMsIGlmMTYzMi93cHJvY3Muc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgTlVMTCBORSByZXNvdXJjZSBoYW5kbGVyOyBjYWxsIHRoZSBkZWZhdWx0IGhhbmRsZXIgZGlyZWN0bHkuCglSZW1vdmVkIFdQUk9DUyAvIENhbGxiYWNrcyBzdXBwb3J0IGZvciBXaW5lTGliIHJlc291cmNlIGhhbmRsZXJzLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIHJlbGF5MzIvdXR0aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYWRlIFVuaXZlcnNhbCBUaHVuayBsaXN0IHBlci1wcm9jZXNzLCBub3Qgc3lzdGVtIGdsb2JhbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgVENNX0FESlVTVFJFQ1QuCgoJKiBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pb3BvcnRzLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCAiaW1wbGljaXQgZGVjbGFyYXRpb24iIHdhcm5pbmdzLgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaDogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglGaXhlZCBPcGVuR0wgZGV2aWNlcyBpbXBsZW1lbnRhdGlvbi4KCgkqIHdpbmRvd3MvcXVldWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbiBVc2VyWWllbGQxNiwgd2hlbiBjdXJyZW50IHRocmVhZCBpcyBhIDMyIGJpdCBvbmUgd2hpY2ggaG9sZCB0aGUKCVdpbjE2TG9jaywgbXVzdCB0YWtlIGNhcmUgb2YgYSBMb2NrQ291bnQgPiAxLgoKCSogKi8qLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vcmUgY29kZSBtb3ZlZCB0byB0aGUgWDExIGRyaXZlciAoYml0bWFwIGFuZCBwYWxldHRlIGFuZCBtaXNjKS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE1hciAyOCAxNToyMDowMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmUgRE0qIGRlZmluZXMgZnJvbSB3aW5iYXNlLmggLT4gd2luZ2RpLmguCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUZpeGVkIFF1ZXJ5SW50ZXJmYWNlIGZ1bmN0aW9ucyBmb3IgSURpcmVjdDNEIDEgYW5kIDIuCgoJKiBvbGUvbmxzL0F0dGljL2Ruay5ubHM6IEFwcGFyZW50bHkgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9kZGVtbC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUNoYW5nZWQgc29tZSBkZWJ1ZyBtZXNzYWdlcyBmcm9tIG9uZSBjaGFubmVsIHRvIGFub3RoZXIsIHRvIGNsZWFuIHVwIGEKCWJpdCB0aGUgZGVidWcgY2hhbm5lbCB1c2FnZS4KCgkqIGxvYWRlci9tb2R1bGUuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQgQ3JlYXRlUHJvY2Vzc0Egc28gaXQgY2FuIGhhbmRsZSBjb21tYW5kbGluZXMgd2l0aCBhcmd1bWVudHMgYW5kCglubyAuZXhlLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZCBHZXRNb2R1bGVIYW5kbGUxNi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglBZGRlZCBSdXNzaWFuIGtleWJvYXJkIHN1cHBvcnQuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIHN0dWIgZm9yIFNldFN5c3RlbUN1cnNvci4KCgkqIHdpbjMyL2ZpbGUuYzogU3RlZmZlbiBNb2VsbGVyIDxtb2VsbGVyQGViaS5hYy51az4KCVNldEZpbGVBdHRyaWJ1dGVzQTogImltcGxlbWVudGVkIiBzZXR0aW5nIG9mIGRpcmVjdG9yeSBmbGFnIGFzIHRlc3Qgb2YKCWNvbXBhdGliaWxpdHkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQ2hhbmdlcyBpbiBYMTFEUlZfS0VZQk9BUkRfRGV0ZWN0TGF5b3V0IGluIG9yZGVyIHRvIGltcGxlbWVudCBSdXNzaWFuCglrZXlib2FyZCBzdXBwb3J0LgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL29sZTIuYywgb2xlL29sZTJzdHVicy5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvdmFyaWFudC5jLCByZWxheTMyL29sZTMyLnNwZWMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9pbnB1dC5jLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBYXJvbiBCYXJuZXMgPGFhcm9uYkBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCUJ1bmRsZSBvZiBuZXcgc3R1YnMuCgoJKiBtaXNjL2NydGRsbC5jLCBtaXNjL2RkZW1sLmMsIG9sZS9vbGUyZGlzcC5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgbWlzc2luZyBXSU5BUElzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9uZXdmbnMuYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIENyZWF0ZUlvQ29tcGxldGlvblBvcnQgc3R1Yi4KCgkqIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgRVZFTlRfUGVuZGluZygpIHRvIGZsdXNoIFgxMSBvdXRwdXQgcXVldWUgYmVmb3JlIGJsb2NraW5nIGluCglNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKCkuCglEb24ndCBjYWxsIEVWRU5UX1dhaXROZXRFdmVudCBpbiBNU0dfUGVla0hhcmR3YXJlTXNnLgoJUHJvdGVjdCBzeXN0ZW0gcXVldWUgYWNjZXNzIGluIGhhcmR3YXJlX2V2ZW50KCkuCgoJKiB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL21lbnUuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgc29tZSBidWdzIGluIHRocmVhZCBzYWZlbmVzcyBmb3Igd25kIHN0cnVjdC4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvaGVsbG8zLmMsIGxpYnRlc3QvaGVsbG8zcmVzLnJjOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCU1hZGUgbGlidGVzdC9oZWxsbzMgd29yayBhZ2Fpbiwgbm93IHdpdGggV2luZG93cy1jb21wYXRpYmxlIHJlc291cmNlCglsb2FkaW5nLgoKCSogaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglKaXVtaW5nIEx1byA8aml1bWluZ19sdW9AeWFob28uY29tPgoJTW92ZWQgbWFjcm8gREVDTEFSRV9IQU5ETEUoKSAoaW4gbXNhY20uaCBhbmQgd3R5cGVzLmgpIHRvIHdpbmRlZi5oLAoJdGhlbiBkZWxldGVkIHRoZSBkdXBsaWNhdGVkIHR5cGVkZWZzIChpbiBpbW0uaCBhbmQgbW1zeXN0ZW0uaCkuCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJUmV3cm90ZSBFbnVtUHJpbnRlcnNBLCBhZGRlZCBDcml0aWNhbFNlY3Rpb24gYXJvdW5kIFJlZ2lzdHJ5IHJlYWRzIGFuZAoJaW1wbGVtZW50ZWQgUFJJTlRFUl9JTkZPXzIgcmVxdWVzdC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEpvbmF0aGFuIE5heWxvciA8ZzRrbHhAcG9wLmFncmkuY2g+CglBZGRlZCBTd2lzcyBHZXJtYW4ga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGFkanVzdGVkIHByaW50aW5nIG9mIHJlZmNvdW50cyB0byBiZSBlcXVhbAoJLSBjbGVhbmluZyB1cCBpY29uIGNhY2hlIG9uIFBST0NFU1NfREVUQUNICgktIGZpeGVkIGFzY2lpL3VuaWNvZGUgdXNlIGluIFNIL0lMQ3JlYXRlRnJvbVBhdGgKCS0gZml4ZWQgc21hbGwgbWVtb3J5IGxlYWsgaW4gc2hlbGx2aWV3CgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW1wdHkgRE9TVk1fUXVldWVFdmVudCBmb3IgIU1aX1NVUFBPUlRFRC4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUNoYW5nZWQgQ0hPT1NFQ09MT1JbQVddLkZsYWdzIGZyb20gVUlOVCB0byBEV09SRC4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL3JlZ2lvbi5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvcmVnaW9uLmMsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3h1dGlsLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglNb3ZlZCBocmduVXBkYXRlIGZyb20gY2xpZW50IHRvIHdpbmRvdyBjb29yZGluYXRlcywgbWFkZSBub25jbGllbnQKCXBhaW50aW5nIGRlcGVuZCBvbiB0aGUgdXBkYXRlIHJlZ2lvbiwgcmV3b3JrZWQgU2V0V2luZG93UG9zKCkgYW5kCglSZWRyYXdXaW5kb3coKSB0byBzcGVlZCB1cCB1cGRhdGUgcmVnaW9uIGNhbGN1bGF0aW9uLCBtYWRlIC1kZXNrdG9wCgl3b3JrIHByb3Blcmx5LCBhZGRlZCBXTV9DQU5DRUxNT0RFIGhlcmUgYW5kIHRoZXJlLCBmaXhlZCBzZXZlcmFsCgl3aW5kb3cgYWN0aXZhdGlvbiBidWdzIHRoYXQgY3JlcHQgaW4gc2luY2UgdGhlIGxhc3QgdGltZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglGaXhlZCBvY2Nhc2lvbmFsIGxvc3Mgb2YgU2VuZE1lc3NhZ2UoKSByZXR1cm4gdmFsdWUuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGluaXRpYWxpc2F0aW9uIG9mIHRoZSBwaXhtYXBfZGVwdGggZmllbGQgaW4KCVhsaWJfRGlyZWN0RHJhd0NyZWF0ZS4KCgkqIG1zZG9zL2lvcG9ydHMuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQgYSB3YXJuaW5nLgoKCSogbXNkb3MvaW50MmYuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJQWRkZWQgc3R1YiBmb3IgaW50MmYgNGIuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBtZW1vcnkgbGVhayBpbiB3YXZlT3V0T3Blbi93YXZlT3V0Q2xvc2UuCgoJKiBncmFwaGljcy9wc2Rydi9lc2NhcGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW9yZSBFc2NhcGVzIGZvciB0aGUgUG9zdFNjcmlwdCBkcml2ZXIuCgpTYXQgTWFyIDI3IDE2OjU2OjEzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRhcHRlZCB0byB0aGUgaW50ZXJmYWNlL2ltcGxlbWVudGF0aW9uIHNlcGFyYXRpb24uCglOb3cgdXNlcyBJQ09NX1RISVMgdG8gYWNjZXNzIHRoZSBpbXBsZW1lbnRhdGlvbiBzdHJ1Y3R1cmVzLgoJUmVwbGFjZWQgJ3RoaXMnIHdpdGggJ1RoaXMnIGZvciBJQ09NX1RISVMuCglEaXJlY3QgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIHRhYmxlIGhhcyBiZWVuIGVsaW1pbmF0ZWQgdG9vLgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVcGRhdGVkIHRvIGluY2x1ZGUgYWxsIHRoZSBpbXBsZW1lbnRhdGlvbiBhc3BlY3RzIHRoYXQgd2VyZSBwcmV2aW91c2x5CglpbiB0aGUgcHVibGljIGluY2x1ZGVzLgoKCSogZ3JhcGhpY3MvdmdhLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIHRhYmxlCgoJKiBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBhbGwgaW1wbGVtZW50YXRpb24gYXNwZWN0cy4KCU1vZGlmaWVkIHRvIHVzZSB0aGUgbGF0ZXN0IElDT00gbWFjcm9zLgoJQWRkZWQgdGhlIG1hY3JvcyBmb3IgdXNlIGluIEMuCglBZGRlZCB0aGUgbWV0aG9kIHBhcmFtZXRlciBuYW1lcyAod2hlbiBJIGhhZCB0aGVtKS4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzZXF1ZW5jZSBvZiBETExfUFJPQ0VTU19ERVRBQ0ggbm90aWZpY2F0aW9uIGNhbGxzLgoJTW92ZWQgUEVfTU9EUkVGIGZsYWdzIHRvIFdJTkVfTU9EUkVGIGxldmVsLgoJQmV0dGVyIGhhbmRsaW5nIG9mIExvYWRMaWJyYXJ5RXggZmxhZ3MuCglQRV9Jbml0VGxzKCkgY2hhbmdlZCB0byB3b3JrIG9ubHkgb24gdGhlIGN1cnJlbnQgdGhyZWFkLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBjbWQgbGluZSBpbiBuZXdfcHJvY2VzcyByZXF1ZXN0LgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGwgdGhyZWFkcyBjcmVhdGVkIHdpdGggQ3JlYXRlVGhyZWFkIGFyZSAzMi1iaXQgdGhyZWFkcy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmVhZGluZyBvZiBiaW5hcnkgc3RyZWFtcyBpbXBsZW1lbnRlZCAoU0hPcGVuUmVnU3RyZWFtKS4KCgkqIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBpbnQyNSAmIGludDI2IGVycm9yIGNvZGUuCgoJKiBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IFVzZXJZaWVsZDE2IHRvIGJlIGNhbGxlZCBmcm9tIDMyLWJpdCB0aHJlYWQuCgoJKiBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUFsYmVydCBEZW4gSGFubiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUFkZGl0aW9uYWwgbWFjcm8gZGVmaW5pdGlvbnMuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVkIHtTfEd9ZXRCaXRtYXBCaXRzIGluIHgxMWRydi4gIFJlbW92ZWQgQklUTUFQX0dldFBhZGRpbmcuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgbWV0YWZpbGUgcmVjb3JkaW5nIG9mIENyZWF0ZVBhdHRlcm5CcnVzaC4KClRodSBNYXIgMjUgMTY6NDI6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdG9vbGJhci5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlIHRoZSBBZGRCaXRtYXAgZnVuY3Rpb24uIEltcGxlbWVudCBmbGF0IHRvb2xiYXIuIENoYW5nZQoJQ3JlYXRlVG9vbGJhckV4LiBJbXBsZW1lbnQgcGFydGlhbGx5IHRoZSBob3QgYnV0dG9ucyBmb3IgdG9vbGJhci4KCgkqIG1zZG9zL2ludDE2LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBHZXQgU2hpZnQgRmxhZ3MgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBXSU5BUEkuCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglDaGFuZ2VkIHN0ZGxpYi5oIHRvIHN0cmluZy5oLgoKCSogZGxscy9udGRsbC90aW1lLmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUFkZGVkIHN0cmluZy5oLgoKCSogbWlzYy9kZGVtbC5jLCBtdWx0aW1lZGlhL21zdmlkZW8uYywgb2xlL3NhZmVhcnJheS5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmMsIHdpbjMyL2NvbnNvbGUuYzoKCURhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUNoYW5nZWQgInN0cmluZ3MuaCIgdG8gInN0cmluZy5oIi4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgd2luZG93cy9ub25jbGllbnQuYzoKCVJhbmR5IFdlZW1zIDxyd2VlbXNAaG9tZS5jb20+CglGaXhlZCBvZmYtYnktb25lIGVycm9yIGlmIGJpdGJsdCB3aWR0aCBvciBoZWlnaHQgaXMgbmVnYXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQ6CgktIHNob3dpbmcgdGhlIHNlbGVjdGVkIHRhYiBhcyBoaWdobGlnaHRlZAoJLSBzdXBwb3J0IGZvciBkcmF3aW5nIHRoZSBmb2N1cyByZWN0YW5nbGUKCS0gYmFzaWMga2V5Ym9hcmQgc3VwcG9ydAoJLSBzdXBwb3J0IGZvciBhIHRhYiB3aXRoIGhvcml6b250YWwgc2Nyb2xsaW5nLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRocmVhZC1zYWZlIGltcGxlbWVudGF0aW9uIG9mIHByb2ZpbGUgZnVuY3Rpb25zIChXaW5kb3dzIGFuZCBXaW5lKS4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL3RpbWVyLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU1hZGUgdGhlIHRpbWVyIGNvZGUgdGhyZWFkIHNhZmUuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBwb3NzaWJsZSBlbmRsZXNzIGxvb3AuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIExCX0dFVENVUlNFTCBtZXNzYWdlIHRvIHJldHVybiBMQl9FUlIgb24gZW1wdHkgbGlzdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJVXNlIHRoZSBuZXcgaGVhZGVyIGZvciBDT00gZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHViIHNoZWxsXzY1NC4KCgkqIGluY2x1ZGUvdHJlZXZpZXcuaCwgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgVFZNX1NPUlRDSElMRFJFTkNCLgoJSW1wbGVtZW50YXRpb24gb2YgVFZJX1NPUlQgaW5zZXJ0aW9uLgoJRml4IGRpc3BsYXkgcHJvYmxlbSB3aGVuIFRWSUZfSU1BR0V8VFZJRl9TRUxFQ1RFRElNQUdFIHdlcmUgbm90IHNldC4KCUZpeCBwcm9ibGVtcyByZWxhdGVkIHRvIFRWSVNfRVhQQU5ERURPTkNFLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20uZXBmbC5jaD4KCUZpeCBwcm9ibGVtIGluIERQQV9RdWlja1NvcnQgd2hlcmUgdGhlIHNvcnQgb3JkZXIgd2FzIGludmVydGVkLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgaW5mcmFzdHJ1Y3R1cmUgYW5kIGRlZmluaXRpb25zIGZvciBnZW5lcmFsLXB1cnBvc2UgZXZlbnQgYW5kIElSUQoJaGFuZGxpbmcgZm9yIHRoZSBXaW5lIGRvcyBib3guIFJlbW92ZWQgdGhlIG9ic29sZXRlIE1aX1RpY2suIEFkZGVkCglldmVudCBtZXNzYWdlIGxvb3AsIG1lc3NhZ2UgaGFuZGxpbmcsIENMSS9TVEkgaGFuZGxpbmcsIGFuZCBtaW5pbWFsCglQSUMgc3VwcG9ydC4KCgkqIGxvYWRlci9kb3MvZG9zbW9kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgaGFuZGxpbmcgb2YgU0lHVVNSMiBmb3IgdGhlIG5ldyBldmVudCBpbnRlcnJ1cHRpb24gaGFuZGxpbmcsCglidW1waW5nIHVwIHRoZSBwcm90b2NvbCByZXZpc2lvbi4gTWFkZSBzb21lIGRlYnVnIG1lc3NhZ2VzIG5vdCBiZQoJb3V0cHV0IHdoZW4gaXQncyBub3QgbmVjZXNzYXJ5LgoKCSogbXNkb3MvaW9wb3J0cy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHBvcnQgMHg2MCBmb3IgaW50IDB4MDksIGFuZCBwb3J0IDB4MjAgZm9yIFBJQyBoYW5kbGluZy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50ZXJydXB0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBpbnQgMHgwOSBhbmQgaW50IDB4MzMuCgoJKiBtc2Rvcy9pbnQzMy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGEgaW50IDB4MzMgaGFuZGxlciwgd2l0aCBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlCgltb3VzZSByb3V0aW5lcywgaW5jbHVkaW5nIGNhbGxiYWNrcy4KCgkqIG1zZG9zL2ludDA5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgYSBpbnQgMHgwOSBoYW5kbGVyLCBhbmQgYSBzY2FuY29kZSBxdWV1ZSB0aGF0IHNpbXVsYXRlcwoJSVJRIDEgaW4gdGhlIGRvcyBib3guCgoJKiBpbmNsdWRlL2RvY29iai5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUNyZWF0aW9uIG9mIGRvY29iai5oLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBbGxvdyBkZXB0aCBvZiBESUIgdG8gZGlmZmVyIGZyb20gZGVwdGggb2YgYml0bWFwIGluIEdldERJQml0cy4KCldlZCBNYXIgMjQgMTU6MDc6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL2VkaXRsaW5lLmM6IEFib3J0IG9uIGlucHV0IGVycm9yLgoKCSogaW5jbHVkZS9vbGVkbGcuaDogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJUG9wdWxhdGlvbiBvZiBvbGVkbGcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZCBJc1dpbmRvdygpIGNoZWNrcyBhZnRlciBTZW5kTWVzc2FnZSgpIHJldHVybnMuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZCBhIHNtYWxsIGJ1ZyBpbiBpbnQxMC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglDT01CT19TaXplOiBtYWludGFpbiB0aGUgaGVpZ2h0IG9mIHRoZSBSZWN0Q29tYm8gd2hlbiB0aGUgd2luZG93IGlzCglyZXNpemVkLgoKCSogaW5jbHVkZS9ob29rLmgsIGluY2x1ZGUvd2ludXNlci5oOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZGVkIHZhcmlvdXMgZGVmaW5pdGlvbnMuCglNb3ZlZCBDV1BTVFJVQ1QgZnJvbSBob29rLmggdG8gd2ludXNlci5oIHRvIGNvbmZvcm0gdG8gdGhlIFNESy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIGEgZmV3IGVtcHR5IG1hY3Jvcy4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ1VSU09SSUNPTl9EZXN0cm95OiBtaXNzaW5nIFdJTkFQSSBhZGRlZC4KCgkqIG1pc2Mvd2luc29jay5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHRyYW5zbGF0aW9uIGZvciBTT19SQ1ZUSU1FTyAoYXMgc2VlbiBieSBJRTQpLgoKVHVlIE1hciAyMyAxNzowNDoxMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3Byb2Nlc3MuYzogQ3JlYXRlIHN0YXJ0dXAgaW5mbyBmb3IgdGhlIGluaXRpYWwgcHJvY2Vzcy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHNlcnZlciBwaWQgYW5kIHRpZCBpbiBpbml0X3RocmVhZCByZXF1ZXN0LCBhbmQgdXNlIHRoZW0gaW4KCUNMSUVOVF9Jbml0VGhyZWFkLgoKCSogaW5jbHVkZS9jb21wb2JqLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3d0eXBlcy5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9hbnRpbW9uaWtlci5jLCBvbGUvYmluZGN0eC5jLCBvbGUvY29tcG9iai5jLCBvbGUvY29tcG9zaXRlbW9uaWtlci5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9zdG9yYWdlMzIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZDoKCS0gSU1vbmlrZXIgaW50ZXJmYWNlIGZvciBGaWxlTW9uaWtlcixJdGVtTW9uaWtlcixBbnRpTW9uaWtlciBhbmQKCSAgR2VuZXJpY0NvbXBvc2l0ZU1vbmlrZXIKCS0gSVJ1bm5pbmdPYmplY3RUYWJsZSBpbnRlcmZhY2UsIGFuZAoJLSBJQmluZEN0eCBpbnRlcmZhY2UuCgoJKiBncmFwaGljcy9wc2Rydi9iaXRtYXAuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaW5jbHVkZS9wc2Rydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBTdHJldGNoRElCaXRzIGZvciB0aGUgUG9zdFNjcmlwdCBkcml2ZXIuCgoJKiBpbmNsdWRlL21pc2NlbXUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBtaXNzaW5nIGVuZGluZyBwcmFnbWEgcGFjay4KCgkqIG1pc2MvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdGVkIHNtYWxsIGJ1ZyBpbiBHZXRDb21tU3RhdGUxNi4gUGFyaXR5IGNoZWNrIGNhbiBiZSBkaXNhYmxlZAoJZXZlbiB3aGVuIGEgcGFyaXR5IGJpdCBpcyB1c2VkLiBTZXRDb21tU3RhdGUxNigpIGNhbiBvdmVycmlkZSBiYXVkcmF0ZQoJc2V0dGluZyBpbiB3aW5lLmNvbmYuCgpNb24gTWFyIDIyIDE3OjQ3OjM2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBjb3BlIHdpdGggcXVvdGVkIGFyZ3VtZW50cyBmb3IgQ3JlYXRlUHJvY2VzcygpLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHR5cG8gaW4gU2l6ZW9mUmVzb3VyY2UoKS4KCgkqIG1lbW9yeS9zdHJpbmcuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJbHN0cmNweUEgY2FuJ3QgdXNlIHN0cmNweS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvbW9kdWxlLmgsIG1pc2MvbWFpbi5jLCBtaXNjZW11L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgLWRsbCBvcHRpb24gZm9yIHdpbmVsaWIgcHJvZ3JhbXMuIChOb3RlOiB3aWxsIG5vdCBwcmludCB3YXJuaW5ncwoJb24gZmFpbHVyZSBjdXJyZW50bHkpLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzdHJsd3IuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgbXNkb3MvaW50MjEuYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUNvc21ldGljcy4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCByZWxheTMyL3dpbm1tLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG5ldyBzdHVicyAobW1UYXNrWFhYLCBtbVRocmVhZFhYWCwgbWNpRXhlY3V0ZSkuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCBjYWxsaW5nIG1peGVyIGFzIGEgMzIgYml0IGxvdyBsZXZlbCBkcml2ZXIgKG5vIGxvbmdlciAxNiBiaXQpCglBZGRlZCBzdXBwb3J0IGZvciB5aWVsZCBwcm9jIGluIG1jaSBzdHJ1Y3QKCUFkZGVkIG1tVGFza1hYWDE2IGFuZCBtbVRocmVhZFhYWDE2IGZ1bmN0aW9ucwoJUmVmcmVzaGVkIGltcGxlbWVudGF0aW9uIG9mIDE2IGJpdCBuYXRpdmUgJiBhc3luY2hyb25vdXMgTUNJIGRyaXZlcgoJY29tbWFuZCAodGhyb3VnaCBtbXRhc2sudHNrKS4KCgkqIG11bHRpbWVkaWEvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBidWdzLiBTdGFydGVkIGltcGxlbWVudGluZyBtaXhlck1lc3NhZ2UgYXMgYSAzMiBiaXQKCWZ1bmN0aW9uIChubyBsb25nZXIgMTYgYml0KS4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgbWNpRXhlY3V0ZS4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL21jaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB5aWVsZCBwcm9jIG1lbWJlcnMgdG8gbWNpIHN0cnVjdC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXhlciBzcGVjZmljIGVycm9yIGNvZGVzLCBmaXhlZCB0eXBlIGluIGZ1bmN0aW9uIG5hbWUuCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybiBjb2RlcyBmb3IgZGVmYXVsdCBkcml2ZXIgcHJvYy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJTWFkZSBMQl9HRVRDVVJTRUwgcmV0dXJuIGZvY3VzX2l0ZW0gaWYgbm8gaXRlbSBoYXMgYmVlbiBzZWxlY3RlZC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglLYWxldmkgSiBIYXV0YW5pZW1pIDxvaDNmZ0BvaDN0ci5lbGUudHV0LmZpPgoJQWRkZWQgRmlubmlzaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBtaXNjL21haW4uYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGdyYXBoaWNzL3dpbmcuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglWZWtzbGVyIE1pY2hhZWwgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCB3aW51c2VyMTYuaCBmcm9tIHgxMWRydi5oLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oLCBtaXNjL3ByaW50ZHJ2LmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUltcGxlbWVudGF0aW9uIG9mIEVudW1QcmludGVyc0EsIGluZm8gbGV2ZWwgNCBhbmQgNS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglDaGVjayBpZiB0aGUgYnVpbGQgaXMgc3RyaXBwZWQsIGFuZCBkaWUgaWYgaXQgaXMuCglDaGVjayBmb3IgQmFzaCAyLjAsIGFuZCBpZiBzbyB1c2UgZGlmZmVyZW50IFNUREVSUi0+U1RET1VUIHJlZGlyY3RvcgoJKHRoYW5rcyBSeWFuIEN1bW1pbmchKS4KCgkqIHdpbmRvd3MvbWRpLmM6IFZla3NsZXIgTWljaGFlbCA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXhlZCAicmVhY2hlZCBlbmQgb2Ygbm9uIHZvaWQuLi4iIHdhcm5pbmdzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmc6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWVzc2FnZUJveDMyQSAtPiBNZXNzYWdlQm94QQoKCSogbG9hZGVyL21vZHVsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUltcGxlbWVudGF0aW9uIGZvciBGcmVlTGlicmFyeUFuZEV4aXRUaHJlYWQuCglNYWRlIEdldEJpbmFyeVR5cGUgPSBHZXRCaW5hcnlUeXBlQS4KCgkqIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJ1biBXaW4zMiBwcm9jZXNzZXMgaW4gdGhlaXIgb3duIHRocmVhZHMuCglQcm9jZXNzIGV4aXQgc2VxdWVuY2UgYWRhcHRlZC4KClN1biBNYXIgMjEgMTk6MjY6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglDaGFuZ2VkIHByb2Nlc3MgaW5pdGlhbGlzYXRpb24gdG8gdXNlIHRoZSBuZXcgc2VydmVyIHJlcXVlc3RzLgoJU3RhcnRlZCB0byBtb3ZlIHRoZSBwcm9jZXNzIGluaXQgdG8gdGhlIHJpZ2h0IGNvbnRleHQsIG5vdCBmaW5pc2hlZCB5ZXQuCgoJKiBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmg6CglBZGRlZCBuZXdfcHJvY2VzcyBhbmQgaW5pdF9wcm9jZXNzIHJlcXVlc3QuCglTcGxpdCBvdXQgcHJvY2VzcyBjcmVhdGlvbiBmcm9tIHRocmVhZCBjcmVhdGlvbi4KCUNoYW5nZWQgc2VydmVyIGluaXRpYWxpc2F0aW9uIHRvIGVuc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGEgY3VycmVudAoJdGhyZWFkLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCU9uZSBzbWFsbCBlcnJvciBjb3JyZWN0ZWQgYW5kIHRoZSAxMDJ0aCBrZXkuLi4KCgkqIG1pc2MvY29tbS5jLCBpbmNsdWRlL2NvbW0uaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIGNvbW1lcnJvciBhbmQgZXZlbnRtYXNrIGxvY2FsIHRvIGVhY2ggcG9ydCAoZm9yIHdpbjE2KSwgbWFkZSB0aGUKCXdpbjE2IHJvdXRpbmVzIHVzZSBwb3J0IGluZGljZXMgaW5zdGVhZCBvZiBVTklYIGZkcyAodGhpcyBzaG91bGQgbWFrZQoJc29tZSBWaXN1YWwgQmFzaWMgc3R1ZmYgYW5kIHNpbWlsYXIgZ2FyYmFnZSBzdGFydCB3b3JraW5nKSwgbW92ZWQgc29tZQoJc3R1ZmYgYXJvdW5kICh3aW4xNiByb3V0aW5lcyBhdCB0b3Agb2YgZmlsZSwgd2luMzIgcm91dGluZXMgYXQKCWJvdHRvbSksIG1hZGUgYSBjb3VwbGUgb2Ygd2luMzIgcm91dGluZXMgdXNlIHdpbjMyIGhhbmRsZXMsIGFuZCBhZGRlZAoJYSBmZXcgaGludHMgYXMgdG8gaG93IHRvIGltcGxlbWVudCBhc3luY2hyb25vdXMgYnVmZmVycywgYmFzZWQgb24KCXdoaWNoIEVuYWJsZUNvbW1Ob3RpZmljYXRpb24gY2FuIGV2ZW50dWFsbHkgYmUgaW1wbGVtZW50ZWQuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBwcm90b3R5cGVzIG9mIGEgY291cGxlIG9mIGNvbW0gcm91dGluZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIHR5cG8uCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDbGVhciB1cGRhdGUgcmVnaW9uIGJlZm9yZSBXTV9OQ0RFU1RST1kuCgoJKiBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2hlYXAuYywgcmVsYXkzMi91dHRodW5rLmMsIHdpbmRvd3MvcXVldWUuYzoKCUdvdCByaWQgb2YgU1lTVEVNX0xPQ0sgbWFjcm9zLgoKU2F0IE1hciAyMCAwNzoxODoyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9tYWluLmM6IE5vIGxvbmdlciBuZWVkIHRvIGRlbGV0ZSBzeXN0ZW0gaGVhcCBjcml0aWNhbCBzZWN0aW9uLgoKRnJpIE1hciAxOSAxNzowNDoyNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIGNoZWNrIGZvciBkZXNrdG9wIGluIFNIR2V0RmlsZUluZm8uCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVncyBpbiBNQ0kgbWVzc2FnZSBtYXBwaW5nICgzMkEgPT4gMTYpLgoKCSogd2luZG93cy93aW4uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIFdJTl9TZW5kRGVzdHJveU1zZy4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUmVtb3ZlZCBkZWZpbml0aW9ucyBmb3IgRklPTlJFQUQgYW5kIEZJT05CSU8uCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVzIHNvbWUgcmV0dXJuIHZhbHVlcyBmb3IgRGVmRHJpdmVyUHJvYy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdGaXhlci5wbDoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgdGhlIGNob3AgY29tbWFuZCB0aGF0IHdhcyB0aGVyZSB0byBnZXQgcmlkIG9mIGRvcyBeTS4KCVRoZSBzY3JpcHQgbm93IHByb2Nlc3Mgb25seSB1bml4IGZpbGUgZm9ybWF0LgoKCSogd2luZG93cy9kaWFsb2cuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJSGlkZSBkaWFsb2cgd2luZG93cyBjcmVhdGVkIGJ5IENyZWF0ZURpYWxvZyogaW4gRW5kRGlhbG9nIGp1c3QgYXMKCVdpbmRvd3MgZG9lcy4KCgkqIG9sZS92YXJpYW50LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJU2V0IHR5cGUgb2YgZGVzdGluYXRpb24gdmFyaWFudCBpbiBWYXJpYW50Q2hhbmdlVHlwZUV4IGZ1bmN0aW9uLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXhlZCBEYW5pc2gga2V5Ym9hcmQgbGF5b3V0LgoKVGh1IE1hciAxOCAxNzozOTo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGVmb250LmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9mb250ZW5naW5lLmMsIGluY2x1ZGUvd2luLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2x6ZXhwYW5kLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvaW50MTAuYywgbXVsdGltZWRpYS9pbml0LmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG90cyBvZiB3YXJuaW5nIGZpeGVkLCBvbmUgbWlzc2luZyBXSU5BUEkgaW4gZGRyYXcuYyBhZGRlZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50cyArLy0sIFBnVXAvUGdEb3duLCBIb21lL0VuZCwgTGVmdC9SaWdodCwgVXAvRG93bi4KCgkqIHJlbGF5MzIvbXN2ZnczMi5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW1zdmZ3MzIuc3BlYyBicm91Z2h0IHVwIHRvIGRhdGUgKGZvcmdvdCBpdCBpbiBsYXN0IG1zdmZ3MzIgcGF0Y2gpLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBtaXNjL3Rvb2xoZWxwLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIE1vZHVsZTMyKiBzdHVicy4KCldlZCBNYXIgMTcgMTU6NTQ6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglCcnVubyBBZm9uc28gPGJydW5vLmFmb25zb0BjYW1vZXMucm5sLmlzdC51dGwucHQ+CglBZGRlZCBQb3J0dWd1ZXNlIGtleXRhYmxlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCUFkZGVkIENhbmFkaWFuIEZyZW5jaCBrZXlib2FyZCBsYXlvdXQuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBVSyBrZXlib2FyZCBsYXlvdXQuCgoJKiBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyZi5jOgoJPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZC9pbXBsZW1lbnRlZCB2YXJpb3VzIGludGVycnVwdCBmdW5jdGlvbnMuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBpbmNsdWRlL3dpbmlvY3RsLmgsIHdpbjMyL2tlcm5lbDMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuIHJlbW92ZWQgc29tZSB1bm5lY2Nlc3NhcnkgaW5jbHVkZXMsIHJlbW92ZWQgb25lCglkaXJlY3QgV05EKiBhY2Nlc3MgaW4gY29udHJvbHMvbWVudS5jLgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgYSBtb3JlIGRlZmVuc2l2ZSB2ZXJzaW9uIG9mIFdJTl9TZW5kRGVzdHJveU1zZy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IEFsZXhhbmRlciBWLiBMdWt5YW5vdiA8bGF2QGxvbmcueWFyLnJ1PgoJSW5zdGFsbCBoZWFkZXJzIGZyb20gJChTUkNESVIpLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCB0aGUgb2Jzb2xldGUgSUNPTSBtYWNyb3MuCgoJKiBpbmNsdWRlL3Zmdy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vdmVkIHRoZSBBUElzIGNsb3NlciB0byB0aGUgY29ycmVzcG9uZGluZyBDT00gaW50ZXJmYWNlLCByZW1vdmVkIHR3bwoJZHVwbGljYXRlcyBhbmQgYWRkZWQgMi0zIG1hY3JvcyBmb3IgQS9XIEFQSXMuCgoJKiBtc2Rvcy9pbnQxNS5jOiA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUFkZGVkIHNvbWUgc3R1YnMgZm9yIGludDE1IGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUludGVyLXRocmVhZCBTZW5kTWVzc2FnZSgpIGJ1Z2ZpeGVzOgoJLSBJbnNlcnQgbmV3IG1lc3NhZ2UgdG8gYmUgcmVjZWl2ZWQgYXQgdGhlICplbmQqIG9mIHRoZSBTTV9QRU5ESU5HX0xJU1QuCgktIERvICpub3QqIHByb2Nlc3MgcmVjZWl2ZWQgbWVzc2FnZXMgaW4gUmVwbHlNZXNzYWdlKCkuCgktIENsZWFyIHRoZSBRU19TTVJFU1VMVCBmbGFnIG9ubHkgaW1tZWRpYXRlZGx5IGJlZm9yZSB3YWl0aW5nLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVJldHVybiBlcnJvciBpZiBub3QgYSB2YWxpZCBPTEUgY29tcG91bmQgZmlsZS4KCgkqIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmM6IERvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJRml4IGNyYXNoIGlmIGxwdUN1ckRpckxlbiBvciBscHVEZXN0RGlyTGVuPT0wLgoKCSogbWlzYy9jZHJvbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1ha2UgY2Ryb20uYyBjb21waWxlIG9uIEZyZWVCU0QgKEZyZWVCU0QgZG9lcyBub3Qgc2VlbSB0byBoYXZlICpTRUVLLAoJc3RyYW5nZSkuCgpUdWUgTWFyIDE2IDE2OjI5OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUGFzcyBDcmVhdGVQcm9jZXNzKCkgU0VDVVJJVFlfQVRUUklCVVRFUyB0aHJvdWdoIHRvIFBST0NFU1NfQ3JlYXRlKCkuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQYXNzIG5ldyBhcmd1bWVudHMgKHN1c3BlbmQvaW5oZXJpdCkgdG8gdGhlIHNlcnZlci4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhhbmRsZSBzdXNwZW5kL3Jlc3VtZV90aHJlYWQgcmVxdWVzdHMgaW4gcGhhc2UgU1RBUlRJTkcgY29ycmVjdGx5LgoJU2V0IGluaXRpYWwgc3VzcGVuZCBjb3VudCBmb3IgdGhyZWFkcyBjcmVhdGVkIHdpdGggQ1JFQVRFX1NVU1BFTkRFRC4KCVNldCAnaW5oZXJpdGFibGUnIGZsYWcgZm9yIHByb2Nlc3MvdGhyZWFkIGhhbmRsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIG5vIGxvbmdlciBuZWNlc3Nhcnkgd2luLmggaW5jbHVkZSwgYWRkZWQgbm93IG5lY2Vzc2FyeSBvdGhlcgoJaW5jbHVkZXMgKHdpbi5oIHVzZWQgb25seSBieSBVUERPV04gbm93KS4KCgkqIG1pc2MvY29tbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWRlYnVnLmggbXVzdCBiZSBsYXN0LCBvciB3ZSBnZXQgRVJSKCkgbWFjcm8gcHJvYmxlbXMgYWdhaW4uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgc2xpZ2h0IGJ1ZyB0aGF0IHdhcyBpbmNsdWRlZCBpbiB0aGUgY2hhbmdlIGZyb20gV05EIHB0ciB0bwoJaHduZCBsYXN0IHdlZWsuCgoJKiBsb2FkZXIvbWFpbi5jLCBtaXNjL2NhbGxiYWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCBjb21waWxlciB3YXJuaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS90cmVldmlldy5oOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgc29tZSBncmFwaGljYWwgcHJvYmxlbXMgb2YgdGhlIHRyZWV2aWV3IGFuZCBhZGRlZCBzdXBwb3J0IExNQgoJY2xpY2sgb24gKy8tIHNpZ24gdG8gb3BlbiBhbmQgY2xvc2UuCglGaXhlZCBhIGJ1ZyBpbiBpbWFnZWxpc3Qgd2hlcmUgdGhlIGxhc3QgaW1hZ2UgY291bGQgbm90IGJlIGRpc3BsYXllZC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUF2b2lkIHVubmVjZXNzYXJ5IGVycm9yIG1lc3NhZ2VzLgoKCSogd2luZG93cy9ob29rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSWdub3JlIEhJV09SRCBvZiBib29sZWFuIHJldHVybiB2YWx1ZXMgb2YgMTYtYml0IGhvb2sgcHJvY2VkdXJlcywgdG8KCW1hdGNoIGJ1Z2d5IFdpbmRvd3MgYmVoYXZpb3VyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDb3JyZWN0ZWQgYnVnIGluIGVudW1lcmF0aW9uIGZ1bmN0aW9uLgoKCSogd2luZG93cy93aW4uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIGJ1ZyBpbnRyb2R1Y2VkIGluIFdJTl9GaW5kV2luZG93LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CgkwIGlzIGEgdmFsaWQgaW5kZXggZm9yIGEgdGFiIGl0ZW0uCglDcmVhdGVTb2xpZEJydXNoIHRha2VzIGEgQ09MT1JSRUYgYXMgYSBwYXJhbWV0ZXIuCglUYWIgY29udHJvbHMgd2VyZSBhbHdheXMgZGlzcGxheWVkIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIuCgpNb24gTWFyIDE1IDE2OjE1OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVcGRhdGVkIHRoZSBpbnRlcmZhY2VzIHRvIHVzZSB0aGUgbGF0ZXN0IElDT00gbWFjcm9zLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW4sIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBhbGwgTUNJIGludGVybmFsIGZ1bmN0aW9ucy92YXJpYWJsZXMvbWFjcm9zIHRvIG1jaS5jLgoJQ2hhbmdlZCBzb21lIGludGVyZmFjZSBuYW1lcy4KCgkqIGluY2x1ZGUvZGlnaXRhbHYuaCwgbXVsdGltZWRpYS9tY2lhdmkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSB1c2Ugb2YgZGlnaXRhbHYuaCBmaWxlLgoKCSogbXVsdGltZWRpYS9pbml0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBob3cgbGlzdCBvZiBsb2FkYWJsZSBNQ0kgZHJpdmVycyBpcyBvYnRhaW5lZC4KCgkqIGRvY3VtZW50YXRpb24va2V5Ym9hcmQ6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVzY3JpYmVzIGluIG5ld2JpZSB0ZXJtcyBob3cgdG8gYWRkIG5ldyBrZXlib2FyZCBsYXlvdXRzLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglCZXR0ZXIgY29tbWVudHMsIGFuZCBhZGRlZCBBTlNJIGNvZGVwYWdlcyBpbiB0YWJsZS4KCVVTIGtleWJvYXJkIGNvbnRyaWJ1dGVkIGJ5IFV3ZSBCb25uZXMuCglGcmVuY2gga2V5Ym9hcmQgY29udHJpYnV0ZWQgYnkgRXJpYyBQb3VlY2guCglHZXJtYW4ga2V5Ym9hcmQgY29udHJpYnV0ZWQgYnkgVWxyaWNoIFdlaWdhbmQuCglEYW5pc2gga2V5Ym9hcmQgY29udHJpYnV0ZWQgYnkgQmVydGhvIFN0dWx0aWVucy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmg6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCS0gUmVpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ29tbURsZyBFeHRlbmRlZEVycm9yIG1lY2hhbmlzbSB1c2luZyBUTFMuCgktIFNvbWUgaGVhZGVyIGluY2x1c2lvbiBjbGVhbnVwLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21taW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29zbWV0aWMgZml4ZXMuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2VzIHVzZSBvZiBuZXcgQ0RBVURJT19TZWVrKCkgZnVuY3Rpb24uCgoJKiBtc2Rvcy9pbnQyZi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVZhcmlvdXMgZml4ZXMgZm9yIE1TQ0RFWCB0cmFwcy4KCgkqIG1pc2MvY2Ryb20uYywgaW5jbHVkZS9jZHJvbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG5ldyBmdW5jdGlvbiBDREFVRElPX1NlZWsoKS4KCgkqIGluY2x1ZGUvZHJpdmVyLmgsIHdpbmRvd3MvZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUJldHRlciAxNi8zMiBiaXQgZHJpdmVyIG1lc3NhZ2VzIG1hcHBpbmcgYW5kIGhhbmRsaW5nLgoJQmV0dGVyIHByb3RlY3Rpb24gYWdhaW5zdCBiYWQgaGFuZGxlcy4KCgkqIGluY2x1ZGUvcGVleGUuaCwgbG9hZGVyL3Jlc291cmNlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBNRVNTQUdFX1JFU09VUkNFXyogZGVmaW5lcyBmcm9tIFNESyBoZWFkZXJzLCB1cGRhdGVkIExvYWRNZXNzYWdlKgoJY29kZS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IE5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJRml4ZWQgbWFrZSBpbnN0YWxsLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gTWFyIDE0IDE3OjI1OjMzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbi5oLCBpcGMvZGRlX3Byb2MuYywgbWlzYy9zcHkuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZ3JhcGhpY3MvZGRyYXcuYywgaWYxNjMyL3RodW5rLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglNYWRlIGFjY2VzcyB0byB0aGUgd25kIHN0cnVjdCB0aHJlYWQtc2FmZS4KCgkqICovKjogSmltIEFzdG9uIDxhc3RvMDAwMUBhbGdvbnF1aW5jLm9uLmNhPgoJUmVuYW1lZCB3aW50eXBlcy5oIHRvIHdpbmRlZi5oLgoKCSogbWVtb3J5L2hlYXAuYzogTWFrZSB0aGUgc3lzdGVtIGhlYXAgY3JpdGljYWwgc2VjdGlvbiBnbG9iYWwuCgoJKiBNYWtlLnJ1bGVzLmluOgoJRml4ZWQgTWFrZWZpbGUgdXAtdG8tZGF0ZSBjaGVjayB0byBhdm9pZCByZWxpbmtpbmcgYWxsIHRoZSBvYmplY3QKCWZpbGVzLgoKCSogd2luZG93cy9kaW5wdXQuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZWltcGxlbWVudGVkIHNvbWUgY29kZSB3aXRob3V0IHVzaW5nIFgxMS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIHJlbGF5MzIvZGRyYXcuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgZnVuY3Rpb25zIERpcmVjdERyYXdFbnVtZXJhdGVXIGFuZCBEaXJlY3REcmF3RW51bWVyYXRlRXhXLgoKCSogaW5jbHVkZS9wZWV4ZS5oLCBsb2FkZXIvcGVfaW1hZ2UuYzogVGhlb2RvcmUgUy4gSGV0a2UgPHRzaEBndGUubmV0PgoJQWRkZWQgdHJhY2luZyBmb3IgZGVsYXllZCBpbXBvcnRzIGFuZCByZW1vdmVkIHRoZSBmaXhtZS4KCgkqIGZpbGVzL2Rvc19mcy5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIEdldFNob3J0UGF0aE5hbWVBL1cuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOiBOYXRoYW4gWm9yaWNoIDx3ZmlsYXJkb0BmdXNlLm5ldD4KCUFsbG93IHRoZSBmaWxlIG5hbWVzIGFuZCBwYXRocyBmb3IgdGhlIHJlZ2lzdHJ5IGZpbGVzICh1c2VyLnJlZyBhbmQKCXN5c3RlbS5yZWcpIHRvIGJlIHNwZWNpZmllZCBpbiBhIFtSZWdpc3RyeV0gc2VjdGlvbiBvZiB3aW5lLmluaSBvcgoJb3RoZXIgY29uZmlnIGZpbGUuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IE9lbVRvQW5zaUJ1ZmYgZm9yIHJlYWwgV2luMzEgYmVoYXZpb3IuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpcnN0IGF0dGVtcHQgYXQgc3VwcG9ydGluZyBkaWZmZXJlbnQga2V5Ym9hcmQgbGF5b3V0cyB3aXRoIHRoZWlyCgljb3JyZWN0IHNjYW5jb2RlIG1hcHBpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9SRUFETUUsIHByb2dyYW1zL3JlZ2FwaS9yZWdGaXhlci5wbCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ1Jlc3RvcmVyLnBsLCBwcm9ncmFtcy9yZWdhcGkvcmVnU2V0LnNoLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBjb21tYW5kIGxpbmUgdG9vbCB0byBhY2Nlc3MgdGhlIHJlZ2lzdHJ5LgoKCSogcmMvd2luZXJjLmM6IEZpeGVkIGNvbXBpbGF0aW9uLgoKCSogcmMvLmN2c2lnbm9yZTogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJZ25vcmUgZ2VuZXJhdGVkIGZpbGVzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9sY2MuaDogRml4ZWQgbWFrZSBkZXBlbmQuCgoJKiBvbGUvb2xlMi5jLCBvbGUvb2xlZm9udC5jLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglQYXVsIFF1aW5uIDxwYXVscUBsaW51eG1hc3Rlci5odW5ncnljYXRzLm9yZz4KCU1hbnkgbmV3IGRlZmluZXMsIGFuZCBzdHJ1Y3RzIHRvIGhlbHAgY29tcGlsZSBNRkMuIEFzIHdlbGwgYXMgYSBmZXcKCU9MRSBjb3JyZWN0aW9ucyBmcm9tIGVhcmxpZXIuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIEdldE1vZHVsZUhhbmRsZTE2IG9ubHkgbG9vayBmb3IgbW9kdWxlIG5hbWVzLCBub3QgcGF0aCBuYW1lcy4KCgkqIG1zZG9zL2ludDEwLmM6IEplc3MgSGFhcyA8ZGVzbW9rZUBob3RtYWlsLmNvbT4KCUFkZGVkIHNvbWUgbW9yZSB2Z2EgdmlkZW8gbW9kZXMuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVByZXZlbnQgWDExIGVycm9ycyB3aGVuIFhDcmVhdGVXaW5kb3cgaXMgY2FsbGVkIHdpdGggemVybyB3aWR0aCBvcgoJaGVpZ2h0LgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBDYW9sYW4gTWNOYW1hcmEgPENhb2xhbi5NY05hbWFyYUB1bC5pZT4KCUFkZGVkIG1ldGFmaWxlIHN1cHBvcnQgZm9yIEV4dEZsb29kRmlsbC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJRGlyayBUaGllcmJhY2ggPHRoaWVyYmFjaEBtYXRoZW1hdGlrLnR1LWRhcm1zdGFkdC5kZT4KCVBhaW50IGdyYXkgdGV4dCBvbiBncmF5IGJhY2tncm91bmQgaW4gY2hlY2tib3hlcy9yYWRpb2J1dHRvbnMgYnkKCXN0aXBwbGluZy4gQWxzbyBjaGFuZ2VkIHRoZSBicnVzaCB1c2VkIGluIHRoaXMgY2FzZSB0byBnaXZlIGJldHRlcgoJcmVhZGFiaWxpdHkgd2l0aCBYIGZvbnRzLgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS90YXBpLmgsIG1pc2MvQXR0aWMvdGFwaTMyLmMsIG1pc2MvTWFrZWZpbGUuaW4sIHJlbGF5MzIvdGFwaTMyLnNwZWMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvLmN2c2lnbm9yZSwgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvcGhvbmUuYywgaW5jbHVkZS9kZWJ1Zy5oOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQgKG5lYXJseSkgYWxsIFRBUEkgZnVuY3Rpb25zIGFzIHN0dWJzLgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtaXNjL2NvbW0uYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJTWljaGFlbCBNY0Nvcm1hY2sgPE1pY2hhZWwuTWNDb3JtYWNrQGFsY2F0ZWwuY29tLmF1PgoJQmFzaWMgc3VwcG9ydCBmb3IgV0lOMzIgc2VyaWFsIGNvbW11bmljYXRpb25zIEFQSS4KCU1vZGlmeSBET1NGU19PcGVuRGV2aWNlIHRvIGFsbG93IG9wZW5pbmcgb2YgQ09NIHBvcnRzLgoJQ2hhbmdlIFdpbjMyIGNvbW0gZnVuY3Rpb25zIHRvIGFjY2VwdCBmaWxlIGhhbmRsZS4KCUFkZCBkZWNsYXJhdGlvbiBvZiBDT01TVEFUMzIgc3RydWN0dXJlLgoKCSogZ3JhcGhpY3MvdmdhLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBzaWxseSBWR0EtZW11bGF0aW9uIHBhbGV0dGUgYnVnLgoKCSogbXNkb3MvaW50MTAuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiB1Z2x5IHdhcm5pbmdzIChjYXVzZWQgYnkgdWdseSBlcnJvcnMpLgoKCSogbXNkb3MvZG9zbWVtLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUJ1ZyBmaXguCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgb2xlL2d1aWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBJU2hlbGxGb2xkZXIgYW5kIElFbnVtSURMaXN0IGFyZSB1c2luZyB0aGUgbmV3IENPTSBoZWFkZXJzCgktIGZpeGVkIHNvcnQgb3JkZXIgZm9yIGZvbGRlcnMgYW5kIGRyaXZlcwoKCSogUkVBRE1FOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNvcnJlY3RlZCBsb2NhdGlvbiBvZiBGQVEuCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZ1bGx5IGltcGxlbWVudGVkIERpcmVjdCBDb25zb2xlIElucHV0LgoKU2F0IE1hciAxMyAxODoyMDoyNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9xdWV1ZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGlmMTYzMi90aHVuay5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBuZXdseSBpbnRyb2R1Y2VkIGFuZCBzb21lIGxlZnRvdmVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS93aW5nZGkuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIHRoZSBzdGFuZGFyZCBtYWNyb3MgZm9yIEdldFRleHRFeHRlbnRQb2ludAoJYW5kIEdldFRleHRFeHRlbnRQb2ludDMyLgoKCSogaW5jbHVkZS9wcnNodC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIHNvbWUgU2VuZE1lc3NhZ2UzMkEgdGhhdCBlc2NhcGVkIHRoZSByZW5hbWluZy4KCgkqIGluY2x1ZGUvb2xlMi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU9uIHdpbmRvd3Mgb2xlMi5oIGluY2x1ZGVzIG9sZWF1dG8uaCBhbmQgc29tZSBwcm9ncmFtcyBkZXBlbmQgb24gdGhpcy4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBvbGUvb2xlMmRpc3AuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlcyBpbiB0aGUgU3lzQWxsb2NTdHJpbmcgZnVuY3Rpb25zIHByb3RvdHlwZXMuIEl0J3MgbW9zdGx5ICdjb25zdCcKCXByb2JsZW1zIHRoYXQgcHJldmVudCByZWd1bGFyIGNvZGUgZnJvbSBjb21waWxpbmcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fY2Ryb20sIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZHJpdmUsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlcjIsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1faGFyZGRpc2ssIGluY2x1ZGUvYml0bWFwcy9vaWNfY2Ryb20sIGluY2x1ZGUvYml0bWFwcy9vaWNfZmxvcHB5LCBpbmNsdWRlL2JpdG1hcHMvb2ljX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL29pY19mb2xkZXIyLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2hkaXNrLCBpbmNsdWRlL2JpdG1hcHMvb2ljX25ldHdvcmssIGluY2x1ZGUvd2ludXNlci5oOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpbGUgb3BlbiBkaWFsb2cgbm93IHVzZXMgaWNvbnMgaW5zdGVhZCBvZiBiaXRtYXBzLgoKCSogaW5jbHVkZS92ZncuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkIEFWSSogY2xhc3MgaW50ZXJmYWNlIHRvIG5ldyBJQ09NXyBtZXRob2RzLgoKCSogbXVsdGltZWRpYS9tc3ZpZGVvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCByZWxheTMyL2F2aWZpbDMyLnNwZWMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3RhcnRlZCBvbiBhdmlmaWwzMiBpbXBsZW1lbnRhdGlvbiAob25seSBzdHVicyBjdXJyZW50bHkpLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZWltcGxlbWVudGVkIERyYXdGb2N1c1JlY3Qgd2l0aG91dCB1c2luZyBYMTEuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDEwLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBtb2RlIHNldHRpbmcgdGhpbmdzIGFzIHdlbGwgYXMgVkVTQSBhZGRpdGlvbnMgYW5kIG90aGVyCgl0aGluZ3MuIENsZWFuZWQgdXAgRE9TTUVNX0Jpb3NEYXRhIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIG9sZS9vbGVmb250LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgSVBlcnNpc3RTdHJlYW0gaW50ZXJmYWNlIG9uIHRoZSBPTEUgZm9udCBvYmplY3QuCgoJKiBtaXNjZW11L2VtdWxhdGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgZnVuY3Rpb24gQlg9NiByb3VuZCBTVDAgdG8gaW50ZWdlci4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW5nZGkuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CgktIENoYW5nZWQgTFZNX1NFVElURU1QT1NJVElPTiAtPiBMVk1fU0VUSVRFTVBPU0lUSU9OMzIKCSAgICAgICAgICBMVk1fU0VUSVRFTVBPU0lUSU9OMTYgLT4gTFZNX1NFVElURU1QT1NJVElPTgoJLSBBZGRlZCBzb21lIG1pc3Npbmcgc3RydWN0dXJlcyBhbmQgZGVmaW5pdGlvbnMgdG8gd2luZ2RpLmgKCS0gQWRkZWQgcHJvcGVyIGRlZmluZXMgZm9yIEdldENoYXJXaWR0aHNYWFgKCS0gQWRkZWQgYysrIHByb3RlY3Rpb24gdG8gd2luZ2RpLmgKCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gbW9zdGx5IGNsZWFudXAgYWZ0ZXIgdGhlIHJlbmFtaW5nCgktIGltcGxlbWVudGVkIFNISUxDcmVhdGVGcm9tUGF0aAoJLSBzbWFsbCBjaGFuZ2VkIHRvIFNIR2V0RmlsZUluZm8KCgkqIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS93aW51c2VyLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ2hhbmdlZCB0aGUgRExHVEVNUExBVEUgYW5kIERMR0lURU1URU1QTEFURSB0eXBlcyB0byBhZGhlcmUgdG8gdGhlIEFXCglzdHJ1Y3R1cmUgZm9yIGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jZGVyci5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJTW92ZWQgZXJyb3IgY29kZXMgdG8gY2RlcnIuaC4KCgkqIGxvYWRlci9tb2R1bGUuYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCUZpeCBDcmVhdGVQcm9jZXNzIHRvIGhhbmRsZSBscENvbW1hbmRsaW5lIGJldHRlci4KCgkqIHdpbjMyL2luaXQuYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCUNoYW5nZSBHZXRTdGFydHVwSW5mb0EvVyB0byByZXR1cm4gdGhlIHJlYWwgU3RhcnR1cEluZm8uCgoJKiB3aW5kb3dzL21kaS5jOiBHdXkgQWxiZXJ0ZWxsaSAgPDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+PgoJSGFuZGxlIG51bGwgd25kUHRyIGZvciBtZGkgd2luZG93LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJRml4ZWQgYSBjb3VwbGUgb2YgbWlzc2luZyAjZGVmaW5lcyBmb3IgV2luMzIgQVBJIGZ1bmN0aW9ucyB3aXRoCglBU0NJSS9Vbmljb2RlIHZlcnNpb25zLgoKCSogd2luMzIvbmV3Zm5zLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3RodW5rLmMsIGlmMTYzMi93cHJvY3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvdXR0aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBVVFJlZ2lzdGVyIGFuZCBVVFVuUmVnaXN0ZXIuCgoJKiBpZjE2MzIvZGRlbWwuc3BlYywgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL3dpbm50LmgsIG1pc2MvZGRlbWwuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCTxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglBZGRlZCBjb2RlZCBzdHVicyBmb3IgRGRlUXVlcnlDb252SW5mbyAoMTYgJiAzMiBiaXQpLCBEZGVBZGREYXRhICgzMgoJYml0KSwgRGRlQWJhbmRvblRyYW5zYWN0aW9uICgzMiBiaXQpLCBEZGVJbXBlcnNvbmF0ZUNsaWVudCAoMzIpCglEZGVTZXRRdWFsaXR5T2ZTZXJ2aWNlLCBEZGVTZXRVc2VySGFuZGxlLgoJQ29ycmVjdGVkIGhlYXAgaGFuZGxpbmcgaW4gRGRlSW5pdGlhbGl6ZVcsIHJlZmluZWQgQ3JlYXRlTXV0ZXggZXJyb3IKCWhhbmRsaW5nLgoJR2VuZXJhbCB0aWR5aW5nLgoKCSogaWYxNjMyL29sZWNsaS5zcGVjLCBpbmNsdWRlL29sZS5oLCBvbGUvb2xlY2xpLmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgT2xlUXVlcnlMaW5rRnJvbUNsaXAsIE9sZVF1ZXJ5Q3JlYXRlRnJvbUNsaXAsCglPbGVDcmVhdGVMaW5rRnJvbUNsaXAsIE9sZUNyZWF0ZUZyb21DbGlwLCBPbGVRdWVyeVR5cGUsCglPbGVSZXZlcnRDbGllbnREb2MsIE9sZUVudW1PYmplY3RzLgoKCSogcmVsYXkzMi9vbGVjbGkzMi5zcGVjOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRGVmaW5pdGlvbiBmb3IgT2xlQ3JlYXRlTGlua0Zyb21DbGlwIHdhcyBpbmNvcnJlY3QuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYXNrIG91dCB0aGUgdXBwZXIgMTIgYml0cyBmcm9tIHRoZSByZXNvdXJjZWlkLCBqdXN0IGxpa2Ugd2luOTUgZG9lcy4KCgkqIEJVR1M6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXBkYXRlZCBidWcgbGlzdCBieSBteSBrbm93bGVkZ2Ugb2YgdGhlbS4KCgkqIG9sZS9zdG9yYWdlMzIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglTdGdDcmVhdGVEb2NmaWxlIGFjY2VwdHMgTlVMTCBhcyBhIGZpbGUgbmFtZS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogQ2FvbGFuIE1jTmFtYXJhIDxDYW9sYW4uTWNOYW1hcmFAdWwuaWU+CglBZGRlZCBzdXBwb3J0IGZvciBhbHRlcm5hdGUgRElCQklUQkxUIGxheW91dC4KCgkqIGRlYnVnZ2VyL21zYy5jOiBTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUJ1ZmZlciBzaXplIGJ1ZyBpbiBMb2NhdGVEZWJ1Z0luZm9GaWxlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJSW1wcm92ZWQgImVycm9yIiBtZXNzYWdlIHJlYWRhYmlsaXR5LgoKCSogc2VydmVyL3Byb2Nlc3MuYzogRml4ZWQgcHJvY2Vzc19zaWduYWxlZCAodGhhbmtzIHRvIFV3ZSBCb25uZXMpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBGaXhlZCBtYWtlIGRlcGVuZAoKRnJpIE1hciAxMiAxNzo0Mjo1MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGluY2x1ZGUvaXBhZGRyZXNzLmgsIGluY2x1ZGUvdXBkb3duLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJUmVwbGFjZWQgZGlyZWN0IGFjY2VzcyB0byB0aGUgV05EIHN0cnVjdHVyZSBieSBjb3JyZXNwb25kaW5nIGNhbGxzIHRvCglXaW4zMiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNvbWUgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZSBhdXRvbWF0ZWQgcmVuYW1pbmcuCgoJKiByZXNvdXJjZXMvLmN2c2lnbm9yZTogQWRkZWQgc3lzcmVzX1J1LnMKCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCB0aGUgbGlzdHZpZXcgY29udHJvbCB0byBhZGQgdGhlIHJlcG9ydCB2aWV3IGFuZCBmaXggc29tZSBidWdzCglmb3IgdGhlIGxpc3Qgdmlldy4KCgkqIG1pc2Mvc2hlbGwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHVzZSBvZiBXTkQgc3RydWN0LgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAjaWZkZWYgSEFWRV9XQ1RZUEVfSC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBXTkQgc3RydWN0LgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWVzc2FnZSB0cmFuc2xhdGlvbiBmb3IgV01fV0lOSU5JQ0hBTkdFLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCW9ibV9jbG9zZWRfOTUgc2hvdWxkIG5vdCBiZSBkcmF3biBpbnZlcnRlZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBXTkQgc3RydWN0LgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcHJvdmVkIHBlcmZvcm1hbmNlLgoKCSogd2luZG93cy9kY2UuYzogU3RlcGhhbmUgTHVzc2llciA8U3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglDcmVhdGUgYSBuZXcgREMgaW4gR2V0RENFeCB3aGVuIG5vbmUgYXJlIGF2YWlsYWJsZS4KCgkqIG9sZS9vbGUyZGlzcC5jLCBvbGUvdmFyaWFudC5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIERvc0RhdGVUaW1lVG9WYXJpYW50KCkgYW5kIFN5c0FsbG9jU3RyaW5nQnl0ZUxlbigpIGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglDaGFuZ2VkIHRoZSBidXR0b24gc3RhdGUgdG8gInVwIiBhcyBzb29uIGFzIGl0IGlzIGtub3duIHRoYXQgdGhlCglzZWxlY3Rpb24gaGFzIGJlZW4gY2FuY2VsbGVkLCBzbyB0aGUgYnV0dG9uIGlzIHJlZHJhd24gaW4gdGhlICJ1cCIKCXN0YXRlLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVtdWxhdGUgKHdlbGwsIGlnbm9yZSkgbW92IGNyMCxlYXggYW5kIG1vdiBlYXgsY3IwLgoKV2VkIE1hciAxMCAxODowMzo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgb2xlL2NvbXBvYmouYywgb2xlL2d1aWQuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGVjbGkuYywgb2xlL29sZWRsZy5jLCBvbGUvb2xlb2JqLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9BdHRpYy93aW50eXBlcy5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTJ2ZXIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZGVkIGEgbG90IG9mIG5ldyBPTEUgaW50ZXJmYWNlcy4KCgkqIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmMsIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL3N5c3Jlcy5jLCByZXNvdXJjZXMvc3lzcmVzX1J1LnJjOgoJQWxleGFuZGVyIEthbmF2aW4gPGFrQGNhdmUuaG9wLnN0dS5uZXZhLnJ1PgoJQWRkZWQgc3VwcG9ydCBmb3IgUnVzc2lhbiBsYW5ndWFnZS4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVRlbXBvcmFyeSBmaXg6IEFjdGl2YXRlIDE2LWJpdCBzeXN0ZW0gdGltZXIgY2FsbGJhY2sgcm91dGluZXMsIGJ1dAoJc2tpcCBjYWxsaW5nIHRoZW0gaWYgdGltZXIgc2lnbmFsIG9jY3VyZWQgd2hpbGUgY3VycmVudCB0aHJlYWQgd2FzCglob2xkaW5nIHRoZSBXaW4xNkxvY2sgKHRvIHByZXZlbnQgMTYtYml0IHN0YWNrIGNvcnJ1cHRpb24pLgoKCSogaW5jbHVkZS9zeXNsZXZlbC5oLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgX0NvbmZpcm1XaW4xNkxvY2sgKEtFUk5FTDMyLjk2KS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBzb21lIGNsZWFuIHVwIGluIGhhbmRsaW5nIG9mIGRlcHRoCgktIG1vcmUgZGVwdGggY29udmVyc2lvbiByb3V0aW5lcyBmb3IgWDExICgxNSwgMTYgYW5kIDMyIC0+IDgpCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFNlbmRNZXNzYWdlVGltZW91dCgpIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL25vdGVwYWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL3NlYXJjaC5jOgoJTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgoJQWRkZWQgQm95ZXItTW9vcmUgdGV4dCBzZWFyY2guCgoJKiBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFVTRVIuRGVzdHJveUljb24zMiB0byBDYWxsb3V0IHN0cnVjdC4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9jb252ZXJ0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURlbGV0ZWQgTkVfRnJlZVBFUmVzb3VyY2UoKS4KCgkqIGluY2x1ZGUvdXNlci5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIHdpbmRvd3MvdXNlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIGN1cnNvci9pY29uIGhhbmRsaW5nIGNoYW5nZXMuCgoJKiBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IGFjY2Vzc2luZyBib3RoIE5FIGFuZCBQRSByZXNvdXJjZXMgd2l0aCBib3RoIDE2LSBhbmQgMzItYml0IEFQSS4KCUhvb2sgY3Vyc29yL2ljb24gZGVzdHJ1Y3Rpb24gaW50byBGcmVlUmVzb3VyY2UgKGxpa2UgV2luOTUpLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBXaW45NS1zdHlsZSBzaGFyZWQgY3Vyc29yL2ljb24gY2FjaGUuCglNZXJnZWQgTkUgYW5kIFBFIHJlc291cmNlIGhhbmRsaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIyOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIGZvbGRlciBiaXRtYXAgY29sb3JzIGZvciA4YnBwLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6IENhb2xhbiBNY05hbWFyYSA8Q2FvbGFuLk1jTmFtYXJhQHVsLmllPgoJV2luZG93cyBkb2VzbnQgYWxsb3cgZGFzaGVkIGFuZCBkb3R0ZWQgbGluZXMgPiAxLgoKCSogb2xlL2NvbXBvYmouYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSByZWZlcmVuY2UtY291bnRpbmcgcHJvYmxlbSBpbiB0aGUgZXh0ZXJuYWwgbG9jayBtZWNoYW5pc20uCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHNpbXBsZSBidWcgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTaGVsbFZpZXcgb2JqZWN0cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgaW5jbHVkZS9zaGVsbC5oOgoJU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglBZGRlZCBzb21lIGV4dHJhIENTSURMcy4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEFsbG93IGxwQ29tbWFuZExpbmUgPT0gTlVMTCBpbiBDcmVhdGVQcm9jZXNzKCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFRvQXNjaWkgc2hvdWxkIG5vdCBnZW5lcmF0ZSBBU0NJSSBjb2RlIHdoZW4ga2V5LXVwIGZsYWcgaXMgc2V0LgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUF2b2lkIHVubmVjZXNzYXJ5IEdyYXBoaWNzRXhwb3NlIGV2ZW50cy4KCgkqIG9sZS9zYWZlYXJyYXkuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgaW5kZXggY2FsY3VsYXRpb25zIG9mIHRoZSB1cHBlciBhbmQgbG93ZXIgYm91bmRzIG9mIGEgc2FmZWFycmF5LgoJRml4ZWQgYSB3cm9uZyBpbml0aWFsaXphdGlvbiBvZiB0aGUgVlQgc2l6ZXMgYXJyYXkuCgoJKiBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgUmVsZWFzZVN0Z01lZGl1bSBtZXRob2QuCgpUdWUgTWFyICA5IDE3OjQ3OjUxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCByZWxheTMyL250ZGxsLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gc29ydGVkIEFQSSBieSBncm91cHMKCS0gbmV3IHN0dWJzOiAgTnRRdWVyeURpcmVjdG9yeUZpbGUsICBad1F1ZXJ5RGlyZWN0b3J5RmlsZQoJLSBpbXBsLjogUnRsQWxsb2NhdGVIZWFwLCBSdGxDcmVhdGVIZWFwLCBSdGxEZXN0cm95SGVhcCwgUnRsRnJlZUhlYXAsCgkgIFJ0bEdldERhY2xTZWN1cml0eURlc2NyaXB0b3IsIFJ0bEdldFNhY2xTZWN1cml0eURlc2NyaXB0b3IKCS0gaW1wbC4gYnkgUmV4IEpvbGxpZmYgKHJleEBsdmNhYmxlbW9kZW0uY29tKTogUnRsVGltZVRvVGltZUZpZWxkcywKCSAgUnRsVGltZUZpZWxkc1RvVGltZQoKCSogaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvd2lubnQuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBuZXcgcHJvdG90eXBlcy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jLCBpbmNsdWRlL21vZHVsZS5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXggdXNlIG9mIHdyb25nIHByb3RvdHlwZSBmcm9tIG50ZGxsLmguCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1ha2UgbW9yZSBmdW5jdGlvbnMganVzdCBjYWxsaW5nIGRvd24gdG8gbnRkbGwuCglOZXc6IEdldFNlY3VyaXR5RGVzY3JpcHRvclNhY2wuCgoJKiBncmFwaGljcy9wc2Rydi9hZm0uYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWNjZXB0ICJOb3JtYWwiIGFzIGEgdmFsaWQgQUZNIHdlaWdodC4KCgkqIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVNtYXJ0ZXIgd2F5IG9mIHNlYXJjaGluZyBmb3IgYSBmcmVlIGJsb2NrLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRGlyZWN0ZWRZaWVsZCgpIG9ubHkgdG8gMTYtYml0IHRhc2tzIGluIFJlcGx5TWVzc2FnZSgpLgoKCSogbGlidGVzdC9oZWxsbzUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3JyZWN0ZWQgY2FzdCBzbyBoZWxsbzUgY29tcGlsZXMgYWdhaW4uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBOb3JtYW4gU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglEb24ndCBjb3B5IGxwc3RyRmlsZVRpdGxlIGlmIGdpdmVuIE5VTEwgcG9pbnRlciBmb3IgdGhpcy4KCURlbHBoaSAyLjAgcGFzc2VzIE5VTEwgZm9yIGxwc3RyRmlsZVRpdGxlIHRvIEdldE9wZW4vU2F2ZUZpbGVOYW1lLgoKCSogbWlzYy93aW5zb2NrLmMsIGluY2x1ZGUvd2luc29jay5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXggYnJva2VuIF9jb252ZXJ0X3NvY2tvcHQgZm9yIElQUFJPVE9fVENQIGNhc2VzLCBhZGRlZCBUQ1BfTk9ERUxBWS4KCgkqIG1zZG9zL2RwbWkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglfX2FzbV9fIGZpeCBhcyBzdWdnZXN0ZWQgYnkgPGRhbmllbEBtYXQudXRmc20uY2w+IERhbmllbCBTZXJwZWxsLAoJcmVtb3ZlZCBhZGRpdGlvbmFsICJlYXgiIGZyb20gY2xvYmJlciBsaXN0LCBzbyBlZ2NzLWN1cnJlbnQgbGlrZXMgaXQuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZUZpbGVNYXBwaW5nIFNldExhc3RFcnJvcigwKXMgb24gbmV3bHkgY3JlYXRlZCBtYXBwaW5ncy4KClN1biBGZWIgMjggMjA6MDU6MTIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgbWlzYy9BdHRpYy9jb21tZGxnLmMsIG1pc2MvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCUtsYWFzIHZhbiBHZW5kIDxLbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQ3JlYXRlIGEgbmV3IHN1YmRpcmVjdG9yeSBmb3IgdGhlIGNvbW1vbiBkaWFsb2cgYm94IERMTCBhbmQgbW92ZSBhbGwKCWNvZGUgZnJvbSAvbWlzYy9jb21tZGxnLmMgdG8gdGhpcyBkaXJlY3RvcnkuICBBbHNvIG1hZGUgYSBzdGFydCBpbgoJZG9jdW1lbnRpbmcgdGhlIEFQSSBjYWxscy4KCgkqIG1pc2Mvd2luc29jay5jLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgaW5jbHVkZS9BdHRpYy93aW50eXBlcy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3JlIGluY2x1ZGUgb3B0aW1pemF0aW9ucy4KCgkqIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbXNkb3MvZHBtaS5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgb2JqZWN0cy9kYy5jLCBvbGUvc3RvcmFnZTMyLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYSBsb3Qgb2Ygd2FybmluZ3MgdXNpbmcgV0lORV9VTlVTRUQsIGNhc3RzLCBjb21tZW50aW5nIG91dCBhbmQKCWFkZGl0aW9uYWwge30uIFJld3JvdGUgR2V0Q3JlYXRpb25Nb2RlRnJvbVNUR00gc28gd2UgZG9uJ3QgZ2V0CgkicG9zc2libGUgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUiLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTUNJX09QRU5fRFJJVkVSX1BBUk1TIC0gQWRkIHdpbjMyIHZlcnNpb24gb2Ygc3RydWN0dXJlLgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIG1zZG9zL2ludDIxLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgQ3JlYXRlRGlyZWN0b3J5IExhc3RFcnJvciByZXR1cm5zIHRvIG1hdGNoIFdpbjMyIChmb3VuZCBvdXQgYnkKCWV4cGVyaW1lbnQpLiBBZGFwdGVkIGludDIxIENyZWF0ZURpcmVjdG9yeSBjYWxsIHRvIHN0aWxsIHJldHVybiB0aGUKCWNvcnJlY3QgRE9TIGVycm9yIGNvZGVzIGFjY29yZGluZyB0byBSYWxwaCBCcm93bi4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIHJlbGF5MzIvZGRyYXcuc3BlYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBmdW5jdGlvbiBEaXJlY3REcmF3RW51bWVyYXRlRXgKCS0gYWRkZWQgKG9yIGNvcnJlY3RlZCkgY2hlY2sgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGVudW1lcmF0aW9uIGZ1bmN0aW9ucwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQmV0dGVyIGRldGVjdGlvbiBvZiBvbGQgKGkuZS4gbm9uIE9wZW5HTCAxLjIgY29tcGxpYW50KSB2ZXJzaW9uIG9mIE1lc2EuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBzdHVkLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyA8c3lzL3R5cGVzLmg+LgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgdGhlIGJ1dHRvbiBzdGF0ZXMgYXMgcmV0dXJuZWQgYnkgSXNEbGdCdXR0b25DaGVja2VkKCkuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdXBwb3J0IGZvciBxdW90ZWQgZmlsZSBuYW1lcyBpbiBDcmVhdGVQcm9jZXNzKCkuCgoJKiBmaWxlcy9maWxlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNlcnZlci9maWxlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUNMSUVOVF9XYWl0UmVwbHk6IGRvbid0IGNsZWFyIGxhc3QgZXJyb3Igb24gc3VjY2VzczsgZml4ZWQgY2FsbGVycwoJYWNjb3JkaW5nbHkgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgSnVlcmdlbiBTY2htaWVkKS4KCgkqIG1zZG9zL2ludDEwLmM6IEplc3MgSGFhcyA8ZGVzbW9rZUBob3RtYWlsLmNvbT4KCUFkZGVkIHNvbWUgc3VwcG9ydCBhbmQgc3R1YnMgZm9yIFZFU0EgdG8gbXNkb3MvaW50MTAuYy4KCgkqIG9sZS9iaW5kY3R4LmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaWZzLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZTJubHMuYywgb2xlL29sZWNsaS5jLCBvbGUvb2xlZGxnLmMsIG9sZS9vbGVmb250LmMsIG9sZS9vbGVvYmouYywgb2xlL29sZXN2ci5jLCBvbGUvc2FmZWFycmF5LmMsIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3R5cGVsaWIuYywgb2xlL3ZhcmlhbnQuYywgdG9vbHMvZm50MmJkZi5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbGlicmFyeS93aW5lc3R1Yi5jLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2Mvc291bmQuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBjb250cm9scy9tZW51LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgaW5jbHVkZSBvcHRpbWlzYXRpb25zIGFuZCBmaXhlcy4KCgkqIHNlcnZlci9wcm9jZXNzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJb3Blbl9vYmplY3Qgc2hvdWxkIHJldHVybiBFUlJPUl9GSUxFX05PVF9GT1VORCB3aGVuIHRoZSBuYW1lZCBvYmplY3QKCWlzIG5vdCBmb3VuZC4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZS4KCgkqIHNjaGVkdWxlci9BdHRpYy9rMzJvYmouYywgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL0F0dGljL2szMm9iai5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci90YXNrLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvdG9vbGhlbHAuYzoKCVVzZSBzZXJ2ZXIgaGFuZGxlcyBkaXJlY3RseSBmb3IgV2luMzIgaGFuZGxlcy4gUmVtb3ZlZCB1c2Ugb2YgSzMyT0JKLgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIG9sZS9vbGVmb250LmMsIG9sZS9vbGVvYmouYywgc2NoZWR1bGVyL0F0dGljL2szMm9iai5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3JlcXVlc3QuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBtaXNjL25ldHdvcmsuYywgbWlzYy9wb3J0LmMsIG1pc2NlbXUvbWFpbi5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYywgY29uc29sZS94dGVybS5jLCBjb250cm9scy9saXN0Ym94LmM6CglEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CgktIGZpeGVkIG1pc3Npbmcgc3RkbGliLmggYW5kIHN0cmluZy5oIGluY2x1ZGVzIGV2ZXJ5d2hlcmUKCS0gcmVtb3ZlZCBhIGNvdXBsZSBvZiB1bm5lZWRlZCBzdGRsaWIuaCBhbmQgc3RkaW8uaCBpbmNsdWRlcwoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCVByb2Nlc3MgYW5kIHRocmVhZCBpZCBub3cgdXNlIHRoZSBzZXJ2ZXItc2lkZSBpZCBpbnN0ZWFkIG9mIGFuCglvYmZ1c2NhdGVkIHBvaW50ZXIuCgoJKiBsaWJ0ZXN0L2d1aXRlc3QuYywgbGlidGVzdC9ndWl0ZXN0LnJjLCBsaWJ0ZXN0L2d1aXRlc3Qucmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRoZSBXaW5kb3dzIEdVSSBiZWhhdmlvdXIgdGVzdGVyIHVzZWQgb24gdGhlIFdpbmRvd3MgY29tcHV0ZXIuICBJdCB3YXMKCXVzZWQgd2l0aCBCb3JsYW5kIEMrKyA0LjUyLCBidXQgc2hvdWxkIGJlIGVhc3kgdG8gYWRhcHQgdG8gV2luZWxpYiBieQoJd2hvZXZlciBmZWVscyBsaWtlIGl0OyBJIGhhdmVuJ3QsIEkganVzdCByZWxlYXNlZCB0aGlzIHVzZWZ1bCB0ZXN0IGFwcAoJaW4gY2FzZSBpdCB3b3VsZCBiZW5lZml0IG90aGVyIGRldmVsb3BlcnMuCgoJKiBkb2N1bWVudGF0aW9uL2d1aTogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUaGlzIGZpbGUgZGV0YWlscyB0aGUgcmVzdWx0cyAobWVzc2FnZSB0cmFjZXMpIHRoZSBHVUkgYmVoYXZpb3VyCgl0ZXN0ZXIgYXBwIGdhdmUgdW5kZXIgcmVhbCBXaW5kb3dzIGZvciB2YXJpb3VzIGV2ZW50cy4gSXQgd2FzIHVzZWZ1bAoJZm9yIHNvbWUgb2YgbXkgZGVidWdnaW5nIGF0IGxlYXN0LCBwZXJoYXBzIGl0IGNvdWxkIGJlIG9mIHNvbWUgdXNlIHRvCglvdGhlciBXaW5lIEdVSSBkZWJ1Z2dlcnMgYXMgd2VsbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvd2lubmxzLmgsIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfZG5zLmMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQHN0dWQuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTb21lIFNvbGFyaXMgZml4ZXMuIDxyZXNvbHYuaD4gbmVlZHMgPGFycGEvbmFtZXNlci5oPiwgc2lnX2NvbnRleHQuaAoJbmVlZHMgdG8gZGVmaW5lIEhBTkRMRVJfQ09OVEVYVCwgd2N0eXBlLmggZG9lcyBub3QgbGlrZSAnd3NwcmludGYnCglkZWZpbmVkLCBtc2Rvcy9kcG1pLmMgbmVlZHMgInN0YWNrZnJhbWUuaCIgdG9vLCBhbmQgbXVsdGltZWRpYS9kc291bmQuYwoJbmVlZHMgIndpbnVzZXIuaCIuCgoJKiB3aW4zMi9rZXJuZWwzMi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUdldEJpbmFyeVR5cGVbQVddIG1vdmVkIHRvIGxvYWRlci9tb2R1bGUuYywgbW9kaWZpZWQgdG8gcmVjb2duaXplIC5DT00KCWFuZCAuUElGIGZpbGVzLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2RwbWkuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBDcmVhdGVQcm9jZXNzIGNoYW5nZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5FIG1vZHVsZXMgYWRhcHRlZCB0byBDcmVhdGVQcm9jZXNzIGNoYW5nZXMuCglMb2FkTW9kdWxlMTYvTG9hZExpYnJhcnkxNiByZW9yZ2FuaXphdGlvbi4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUHJvY2VzcyBjcmVhdGlvbiBzZXF1ZW5jZSByZW9yZ2FuaXplZDoKCS0gUmVtb3ZlZCBpbnN0YW5jZSBkYXRhIHNlZ21lbnQgZm9yIGFsbCBidXQgTkUgbW9kdWxlcy4KCS0gQ2hlY2sgYmluYXJ5IHR5cGUgaW4gQ3JlYXRlUHJvY2VzcyBiZWZvcmUgbG9hZGluZyBtb2R1bGUuCgktIFVuaXggcHJvY2VzcyBjcmVhdGlvbiBtb3ZlZCBmcm9tIFdpbkV4ZWMgdG8gQ3JlYXRlUHJvY2Vzcy4KCS0gQnVnZml4OiBmaWxsIGluIHRoZGItPnRlYi5odGFzazE2IG1lbWJlciBjb3JyZWN0bHkuCgoJKiB3aW5kb3dzL2lucHV0LmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvZGUgdG8gcmV0dXJuIGRlZmF1bHQgbGFuZ3VhZ2UgY29kZSBhcyBrZXlib2FyZCBsYXlvdXQuCgktIEltcGxlbWVudGVkIG90aGVyIHN0dWJzIGFzc29jaWF0ZWQgd2l0aCBrZXlib2FyZCBsYXlvdXQ6CgkgIEdldEtleWJvYXJkTGF5b3V0TmFtZUEsIEFjdGl2YXRlS2V5Ym9hcmRMYXlvdXQsCgkgIExvYWRLZXlib2FyZExheW91dFtBV10sIEdldEtleWJvYXJkTGF5b3V0TGlzdC4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL3Jlc291cmNlLmgsIG1pc2MvQXR0aWMvY29tbWRsZy5jLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglQcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUHJpbnREbGdBIHN0dWIuCgoJKiBvbGUvbmxzL25sZC5ubHM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJTm93IGNvbXBsaWFudCB0byB0aGUgRHV0Y2ggc3RhbmRhcmRzLgoKCSogd2luZG93cy93aW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGSU5EX1duZFB0ciBzaG91bGQgbm90IHNldCBFUlJPUl9JTlZBTElEX1dJTkRPV19IQU5ETEUgd2hlbiBoV25kPTAuCgoJKiBtc2Rvcy9kb3NtZW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiBkb3NtZW0gYmxvY2sgcmVzaXplIGJ1Z3MuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gbm8gbW9yZSAzRCBjYXBhYmlsaXRpZXMgaWYgRGlyZWN0M0Qgc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaW4KCS0gc29tZSBkZWJ1ZyBtZXNzYWdlcyBjbGVhbi11cCAocmVwbGFjZWQgZnByaW50ZnMgYnkgRFVNUHMpCgoJKiBtaXNjL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXZSBnb3QgcGFzc2VkIGEgTlVMTCBEaWFsZWN0IHB0ciBhbmQgYWNjZXNzZWQgaXQgdW5wcm90ZWN0ZWQuCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIG1hcHBpbmdzIHdpdGggbm8gYXNzb2NpYXRlZCBmaWxlLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvcHJvY2Vzcy5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jOgoJUmVtb3ZlZCBkc3RfaGFuZGxlIGluIGR1cGxpY2F0ZV9oYW5kbGUgcmVxdWVzdC4KCUFkZGVkIGluaGVyaXQgZmxhZyBpbiBjcmVhdGVfbWFwcGluZyByZXF1ZXN0LgoKCSogaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBvbGUvc2FmZWFycmF5LmMsIG9sZS92YXJpYW50LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBzdXBwb3J0IGZvciBhcnJheXMgYW5kIHNhZmUgYXJyYXlzIGluIFZBUklBTlQgZGF0YQoJc3RydWN0dXJlcy4gQWxzbyBtb3ZlZCB0aGUgU0FGRUFSUkFZIGRlZmluaXRpb24gKHlldCBhZ2FpbikgdG8gdGhlCglvYmpfb2xlYXV0LmggZmlsZS4KCgkqIHdpbmUuaW5pOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBGaWxlc3lzdGVtIGRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIyOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCU1hZGUgZm9sZGVyIGljb25zIGdyYXkteWVsbG93IGluc3RlYWQgb2YgYmx1ZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglPcmRlciBvZiBzZW5kIG1lc3NhZ2UgcHJvY2Vzc2luZyB3YXMgbm90IHJlc3BlY3RlZCBhbmQgdGhlIG1lc3NhZ2UKCXN0YWNrZWQgbGFzdCBmaW5pc2hlZCBhZnRlciB0aGUgbWVzc2FnZSBzdGFja2VkIGZpcnN0LgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgY2hlY2tzIHRvIGd1YXJkIGFnYWluc3QgTlVMTCBhY3RpdmUgd2luZG93LgoKCSogd2luZG93cy9kaWFsb2cuYzogTm9ybWFuIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRG9uJ3QgY2hlY2sgY2hpbGRyZW4gb2YgZGlzYWJsZWQgb3IgaW52aXNpYmxlIGNvbnRyb2xzIGZvciBkaWFsb2cKCWtleWJvYXJkIGFjY2VsZXJhdG9ycy4gRml4ZXMgcHJvYmxlbXMgd2l0aCBkaWFsb2dzIHdpdGggdGFiIGJveGVzLgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIENvVGFza01lbVJlYWxsb2MgQVBJLiBBbHNvIGNsZWFuLXVwIGFyb3VuZCB0aGF0IEFQSQoJY2FsbC4KCgkqIG9sZS9zdG9yYWdlMzIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIG1pc3NpbmcgUmVsZWFzZS4KCVNUR01fQ1JFQVRFIHNob3VsZCB0cmFuc2xhdGUgdG8gQ1JFQVRFX0FMV0FZUy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRnJpIEZlYiAyNiAxMjozMzoyMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogREVWRUxPUEVSUy1ISU5UUzogVXBkYXRlZCBmb3IgbmV3IG5hbWluZyBjb252ZW50aW9ucy4KCgkqICovKjogTGFyZ2Utc2NhbGUgcmVuYW1pbmcgb2YgYWxsIFdpbjMyIGZ1bmN0aW9ucyBhbmQgdHlwZXMgdG8KIAl1c2UgdGhlIHN0YW5kYXJkIFdpbmRvd3MgbmFtZXMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRodSBGZWIgMjUgMTg6MTE6NDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvbWFpbi5jOiBBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglGb3IgdmFyaW91cyByZWFzb25zIHNvbWUgb2Ygb3VyIGxpYndpbmUgZXhlY3V0YWJsZXMgbXVzdCBoYXZlIGEgIi4iIGluCgl0aGVpciBmaWxlIG5hbWVzLiBUaGUgIi4iIGNhdXNlcyB0cm91YmxlIHdoZW4gdGhlIGZpbGUgbmFtZSBpcyB1c2VkIGFzCgl0aGUgY2xhc3MgbmFtZSBmb3IgYW4gWCByZXNvdXJjZSBhcyB3aW5lIGRvZXMgZm9yIGNvbW1hbmQgbGluZSBwYXJzaW5nCgl1bmRlciBYLgoKCSogd2luZG93cy93aW4uYzoKCU1ha2UgR2V0V2luZG93TG9uZyhHV0xfSFdORFBBUkVOVCkgcmV0dXJuIHRoZSBzYW1lIHRoaW5nIGFzCglHZXRQYXJlbnQzMjsgc3VnZ2VzdGVkIGJ5IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPi4KCgkqIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3dpbnR5cGVzLmg6CglEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglBZGRlZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkgb24gc3RhdGljIGlubGluZSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4KCWhlYWRlciBmaWxlcy4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0czogQWRhbSB0aGUgSmF6eiBHdXkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQWRkZWQgIlRoZSBFYXN5IFdheSIgYW5kICJUaGUgSGFyZCBXYXkiLCBsYXJnZWx5IGZhdm9yaW5nIHRoZSBlYXN5IHdheSwKCXdoaWNoIHVzZXMgbXkgYnVnX3JlcG9ydC5wbCBzY3JpcHQuCglBZGRlZCBpbmZvIG9uIGEgY29tbWFuZCB0aGF0IGNhbiBiZSBydW4gb24gYWxsIHNoZWxscyB0byBwcmludCBkZWJ1ZwoJbXNncyB0byBhIGZpbGUgYW5kIG5vdCB0byB4dGVybS4KCgkqIG1zZG9zL2RwbWkuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5lZWRzIHRocmVhZC5oIGZvciBub24tTGludXguCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkaW5nIG9mIG5ldyBmdW5jdGlvbnMgdG8gbWFrZSB0aGUgd25kIHN0cnVjdCB0aHJlYWQgc2FmZS4gQWRkaW5nIG9mCglpcmVmQ291bnQgaW4gd25kIHN0cnVjdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBjb25zb2xlL25jdXJzZXMuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgZ2V0YmtnZCBhbmQgZGVmaW5lIEhBVkVfR0VUQktHRC4KCgkqIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBvbGUvb2xlZm9udC5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglNYW55IGludGVyZmFjZSBkZWNsYXJhdGlvbnMgdGhhdCBvcmlnaW5hdGVkIGZyb20gb2xlaWRsLmgsIG9haWRsLmggYW5kCglvY2lkbC5oIHNlcGFyYXRlZCBpbnRvIHNvbWV3aGF0IHJlbGV2YW50IG9ial8qIGZpbGVzLgoKCSogZmlsZXMvZHJpdmUuYywgb2xlL2NvbXBvYmouYywgcmVzb3VyY2VzL3N5c3Jlcy5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeGVkIHdhcm5pbmcgYW5kIGNvbXBpbGF0aW9uIGVycm9ycy4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCBpbmNsdWRlcyBvZiB3aW5lLyogaGVhZGVycy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTWFkZSBtZXNzYWdlICJSZXNvdXJjZSBub3QgZm91bmQiIFdBUk4uCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgaW5jbHVkZS9zaGxvYmouaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBDT1JFTC5DQT4KCS0gVXNlIHRoZSBuZXcgQ09NIGRlZmluaXRpb24gbWFjcm9zIGluIHRoZSBoZWFkZXIuCgktIFB1dCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG9iamVjdCBpbiB0aGUgY29udG1lbnUuYy4KCS0gTWFrZSBhcHByb3ByaWF0ZSBuYW1lIGNoYW5nZXMgaW4gY29udG1lbnUuYy4KCgkqIG1pc2MvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5yZWcuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglaeWdvIEJsYXhlbGwgPHp5Z29iQGNvcmVsLmNhPgoJTW9kaWZpZXMgcGFyYW1ldGVyIGxpc3Qgb2YgYSBjb3VwbGUgb2YgZnVuY3Rpb25zIHRvIGNvbXBseSB3aXRoIFNESy4KCgkqIHdpbmRvd3Mvc2Nyb2xsLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglTY3JvbGxEQzMyIG1vZGlmaWVkIHRvIHJldHVybiByZWN0IGluIGxvZ2ljYWwgY29vcmRpbmF0ZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBDT1JFTC5DQT4KCUFkZHMgQysrIG5hbWVsZXNzIHVuaW9uIHN1cHBvcnQgdG8gdGFnVkFSSUFOVC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29sZWF1dG8uaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBDT1JFTC5DQT4KCU1vdmVkIHNvbWUgZGVmaW5pdGlvbnMgb3V0IG9mIG9sZWF1dG8uaCBhbmQgaW50byBvYWlkbC5oIHRvIGNvbmZvcm0gdG8gdGhlIFNESy4KCVJlbW92ZWQgYSByZWR1bmRhbnQgaW5jbHVkZS4KCUFkZGVkIHNvbWUgYysrIHByb3RlY3Rpb24uCgpXZWQgRmViIDI0IDE1OjU4OjUxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgcGlkbCBzdHJ1Y3R1cmUgdG8gbWF0Y2ggdGhlIHBpZGwncyB1c2VkIGluIGxuay1maWxlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgcmVhZGluZyBvZiAqLmxuay1maWxlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCW5ldyBmaWxlLCBpbmNsdWRpbmcgdGhlIElTaGVsbExpbmsgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZpZWQgcHJvY2VzcyBjcmVhdGlvbiBzZXF1ZW5jZTogY2FsbCBQRV9DcmVhdGVNb2R1bGUgaW4gdGhlCgljb250ZXh0IG9mIHRoZSBuZXcgcHJvY2VzcyAoaW4gVEFTS19DYWxsVG9TdGFydCkuCglDaGFuZ2VkIGFsbCBQRS9Nb2R1bGUgcm91dGluZXMgc28gYXMgdG8gYWx3YXlzIG9wZXJhdGUgb24gdGhlIGN1cnJlbnQKCXByb2Nlc3M7IGFkYXB0ZWQgYWxsIGNhbGxlcnMuCgoJKiBtc2Rvcy9kb3Njb25mLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDJhLmMsIG1zZG9zL2ludGVycnVwdHMuYywgbXNkb3MvaW9wb3J0cy5jLCBtc2Rvcy92eGQuYywgbXNkb3MveG1zLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS90eXBlbGliLmMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHRvb2xzL2J1aWxkLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvaW5wdXQuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGxvYWRlci9tYWluLmMsIG1lbW9yeS9hdG9tLmMsIG1pc2MvbHN0ci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPcHRpbWl6ZWQgYXdheSBtb3JlIGluY2x1ZGVzLCByZWFkZGVkIHNvbWUgI2luY2x1ZGVzIGZvciBuZWNlc3NhcnkKCXByb3RvdHlwZXMuCgoJKiBtc2Rvcy9pbnQyZi5jOiA8c21pbEBtZWNoYXRyb25pa2EuaHU+CglBZGRlZCBsb3ctbGV2ZWwgTmV0d2FyZSBpbnN0YWxsYXRpb24gY2hlY2suCgoJKiBpbmNsdWRlL2NvbnNvbGUuaCwgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZGVkIEdldEJhY2tncm91bmRDb2xvciBjYWxsIHRvIHRoZSBjb25zb2xlIHN0cnVjdC4gV2lsbCBiZSB1c2VkCglsYXRlci4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQnVnZml4ZXMgZm9yIElOVCAxMC8wQiAoU2V0QmFja2dyb3VuZENvbG9yKSB0byB3b3JrIHByb3Blcmx5LgoJKEludGVycnVwdCBsaXN0IGRpZCBub3QgaGF2ZSBjb3JyZWN0LikKCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgc3R1YnMgZm9yIHR3byBtaXNzaW5nIG1ldGhvZHMgb2YgRElucHV0LgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGJ1Zy4KCgkqIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGxhcmdlciBmaWxlcy4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgYnVmZmVyIG92ZXJydW4gcHJvYmxlbXMgd2l0aCBHZXRESUJpdHMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzb21lIFNlbmRNZXNzYWdlIGJ1Z3MuCgoJKiBvbGUvY29tcG9iai5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglGaXggQ09NX0V4dGVybmFsTG9ja0ZyZWVMaXN0IHRvIGRvIG5vdCBmYWlsIHdpdGggYW4gZW1wdHkgbGlzdC4KCk1vbiBGZWIgMjIgMTA6MjE6NTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2Mvc3RyaW5nLmM6CglaeWdvIEJsYXhlbGwgPHpibGF4ZWxsQGZ1cnJ5dGVycm9yLm9yZz4KCUltcGxlbWVudGVkIHNvbWUgQ1JURExMIHN0cmluZyBmdW5jdGlvbnMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbGluZWRkYS5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbnByb2MuYywgaW5jbHVkZS9tZW51LmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9zeXNtZXRyaWNzLmgsIGluY2x1ZGUvdmZ3LmgsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9qb3lzdGljay5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmMsIG11bHRpbWVkaWEvbW1pby5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG11bHRpbWVkaWEvdGltZS5jLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBtb3JlIHJlY3Vyc2l2ZSBpbmNsdWRlIGZpeGVzL29wdGltaXphdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gZWxpbWluYXRlZCBvbmUgZWxlbWVudCBvZiB0aGUgcGlkbCBzdHJ1Y3QgKGR3U0ZHQU8pCgktIGNoYW5nZWQgc29tZSBzdXBlcmZsb3VzIEZJWE1FCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBoZWFkZXIgdXNlcyB0aGUgbGFzdCBtYWNyb3Mgbm93CgktIHJld3JvdGUgSURyb3BUYXJnZXQgYWNjb3JkaW5nIHRvIHRoZSBuZXcgQ09NIGhlYWRlcnMKCSAgKHdhcyBsb2NhbCBkZWNsYXJlZCBub3QgdXNpbmcgdGhlIGFscmVhZHkgd3JpdHRlbiBwcm90b3R5cGVzKQoJLSBjb3JyZWN0ZWQgRHJvcCBtZXRob2QgKHdyb25nIHBhcmFtZXRlciBjb3VudCkKCgkqIHdpbmRvd3MvZGlucHV0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXBkYXRlZCB0byB1c2UgdGhlIGxhdGVzdCBDT00gbWFjcm9zLCBJQ09NX1ZUQUJMRSBhbmQgSUNPTV9USElTLgoJQWRkZWQgdGhlIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiBzdHJ1Y3R1cmVzLgoJSSByZW1lbWJlcmVkIGZyb20gYW4gZW1haWwgdGhhdCBldmVuIHdoZW4gYXNrZWQgZm9yIGEKCUlEaXJlY3RJbnB1dERldmljZUEgd2hhdCB3YXMgcmV0dXJuZWQgd2FzIGFuIElEaXJlY3RJbnB1dERldmljZTJBIHNvIEkKCWNvbnNpZGVyZWQgdGhhdCB3ZSB3b3VsZCBvbmx5IGltcGxlbWVudCB0aGUgbGF0dGVyLiBUaGUKCUlEaXJlY3RJbnB1dERldmljZUFfeHh4IG1ldGhvZHMgaGF2ZSBiZWVuIHJlbmFtZWQgdG8KCUlEaXJlY3RJbnB1dERldmljZTJBX3h4eCwgYW5kIHdlIGFsd2F5cyByZXR1cm4gb3VyIElEaXJlY3RJbnB1dERldmljZTJBCglpbXBsZW1lbnRhdGlvbiBhcyBiZWZvcmUuCglSZW5hbWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBzdHJ1Y3R1cmVzIHRvIFh4eEltcGwuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSBsYXRlc3QgQ09NIG1hY3JvcwoJRGVmaW5lZCB0aGUgSURpcmVjdElucHV0RGV2aWNlQSBpbnRlcmZhY2UgaW5kZXBlbmRlbnRseSBmcm9tCglJRGlyZWN0SW5wdXREZXZpY2UyQS4KCVJlbW92ZWQgdGhlIDMyIHN1ZmZpeCBvZiB0aGUgaW50ZXJmYWNlcy4gSG9wZWZ1bGx5IHRoaXMgd2lsbCBub3QKCWNhdXNlIGFueSBwcm9ibGVtIHdpdGggdGhlIHJlbmFtaW5nLgoJTW92ZWQgdGhlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHN0dWZmIHRvIGRpbnB1dC5jICh3ZWxsLCB0aGUKCWludGVyZmFjZXMgYXQgbGVhc3QpLgoKU3VuIEZlYiAyMSAxODozNToyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmg6CglDaGFuZ2VkIGluaXRpYWwgcHJvY2VzcyBjcmVhdGlvbiB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbnMuCglSZW1vdmVkIGEgZmV3IHVudXNlZCBmaWVsZHMgaW4gUERCIGFuZCBUSERCLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglSZW1vdmVkIHRocmVhZCBxdWV1ZSBmdW5jdGlvbnMuCglDaGFuZ2VkIGluaXRpYWwgdGhyZWFkIGNyZWF0aW9uIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9ucy4KCU1vdmVkIHNlcnZlciBzdGFydHVwIHRvIFRIUkVBRF9DcmVhdGVJbml0aWFsVGhyZWFkLgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYzoKCVJlbW92ZWQgdXNlIG9mIHBlci10aHJlYWQgd2FpdF9zdHJ1Y3QsIGNsZWFuZWQgdXAgYSBiaXQuCgoJKiBzY2hlZHVsZXIvazMyb2JqLmMsIG1lbW9yeS92aXJ0dWFsLmM6IFJlbW92ZWQgTUVNX01BUFBFRF9GSUxFX09wcy4KCgkqIGluY2x1ZGUvd2lubnQuaDogQWRkZWQgYSBmZXcgZXhjZXB0aW9uIGNvZGVzLgoKCSogd2luZG93cy93aW4uYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3BhdGguaCwgaW5jbHVkZS9wcm9ncmVzcy5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvcmVzb3VyY2UuaCwgaW5jbHVkZS9zdHJ1Y3QzMi5oLCBpbmNsdWRlL3VwZG93bi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5wb3MuaCwgbG9hZGVyL21haW4uYywgbWlzYy9jb21tZGxnLmMsIG1pc2Mvd2luc29ja19kbnMuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS9kZGVfYXRvbS5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlzcGRpYi5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL2Rzb3VuZC5oLCBjb250cm9scy9tZW51LmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJLSBGaXggaGVhZGVycyB0byBpbmNsdWRlIGxlc3Mgb3Igc21hbGxlciBoZWFkZXIgZmlsZXMuCgktIEZpeCBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcyB0byBpbmNsdWRlIG1pc3NpbmcgaGVhZGVyIGZpbGVzIHRvIGF2b2lkCgkgIHdhcm5pbmdzIGFuZCBlcnJvcnMuCgoJKiBsb2FkZXIvc2lnbmFsLmMsIG1lbW9yeS9sZHQuYywgbWlzYy9wb3J0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZSAiZyIgKGdlbmVyYWwgcmVncykgaW50byAiciIgKGhhcmRyZWdzKSBpbiBjbG9uZSAvIG1vZGlmeV9sZHQgLwoJd2luZV9zaWdhY3Rpb24gX19QSUNfXyBjYXNlcywgc2luY2UgImciIHdpbGwgbm90IHdvcmsgd2l0aAoJLWZvbWl0LWZyYW1lLXBvaW50ZXIgKCJnIiBpcyByZWZlcmVuY2VkIHVzaW5nICVlc3Agd2hpY2ggd2FzCglpbnZhbGlkYXRlZCBiZWZvcmUpLiBCdWcgZm91bmQgYW5kIChvdGhlcikgZml4IHN1Z2dlc3RlZCBieQoJPGRhbmllbEBtYXQudXRmc20uY2w+IERhbmllbCBTZXJwZWxsLgoKCSogb2xlL29sZWZvbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIFdJTkFQSXMuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaDoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4IHByb2JsZW0gd2hlcmUgeW91IG5lZWQgbW91c2UgYWN0aXZpdHkgdG8gdW5sb2NrIHNvbWUgMTYgYml0cwoJdGhyZWFkIHdpdGggbXVsdGktdGhyZWFkZWQgYXBwcy4KClNhdCBGZWIgMjAgMTY6NDg6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9BdHRpYy9pbnRlcmZhY2VzLmgsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd3R5cGVzLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2d1aWQuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGVmb250LmMsIG9sZS90eXBlbGliLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgT2xlQ3JlYXRlRm9udEluZGlyZWN0IG1ldGhvZCBhbmQgdGhlIGFzc29jaWF0ZWQgQ09NCglvYmplY3QuIFRoYXQgb2JqZWN0IHN1cHBvcnRzIHRoZSBJRm9udCBhbmQgSURpc3BhdGNoIGludGVyZmFjZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9wb3J0LmMsIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfZG5zLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVByb2JsZW1zIHJlcG9ydGVkIGJ5IERvbmFsZCBQYWdlLCBQUiAxMDUtMTA3LgoKCSogY29uc29sZS9uY3Vyc2VzLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTW9yZSBjb21tZW50aW5nLCBiZXR0ZXIgZGVidWdnaW5nIG9mIGNvbG9yIHByb2JsZW1zLCBhbmQgc3VwcG9ydCBmb3IKCXRoZSBuZXcgVGVybWluYWxUeXBlIG9wdGlvbiBpbiB3aW5lLmluaS4gVGhpcyBhbGxvd3MgdXMgdG8gc2VsZWN0Cgl3aGljaCB0ZXJtaW5hbCB0eXBlIHdlIGFyZSByZWFsbHkgdXNpbmcgc28gdGhhdCB3ZSBjYW4sIGZvciBleGFtcGxlLAoJdXNlIGl0cyBjb2xvciBjYXBhYmlsaXRpZXMuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJU3VwcG9ydCBmb3IgdGhlIG5ldyBJbml0aWFsUm93cyBhbmRmIEluaXRpYWxDb2x1bW5zIG9wdGlvbnMgaW4gd2luZS5pbmkKCShHZW5lcmljIHJlcGxhY2VtZW50IGZvciBYdGVybVJlc29sdXRpb24gb3B0aW9uLi4uKQoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglGaXggKkRVSCogcHJvYmxlbSBjYXVzaW5nIGxvdHMgYW5kIGxvdHMgb2YgdW5uZWNlc3NhcnkgQWxsb2NDb2xvciBlcnJvcnMuCgoJKiBjb25zb2xlL3h0ZXJtLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJUmVtb3ZhbCBvZiBvYnNvbGV0ZSBYdGVybVJlc29sdXRpb24gb3B0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9jb25zb2xlLCB3aW5lLmluaToKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgd2luZS5jb25mIG9wdGlvbnMuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJhY2t0cmFjayBpc3N1ZSBvbiAxNmJpdCBjb2RlLgoKCSogZGVidWdnZXIvbXNjLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBMb2NhdGVEZWJ1Z0luZm9GaWxlIHRvIHJlZHVjZSBzdGFjayBjb25zdW1wdGlvbiAoZnJvbSAxM2sgdG8gMmsgISEpCgoJKiBkZWJ1Z2dlci9pbmZvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY29tbWVudCBmb3IgV2luZSBkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGdldC9zZXRfaGFuZGxlX2luZm8gcmVxdWVzdC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUZpeGVkIGVuZC1vZi1saW5lIGJ1ZyBpbiBYMTFEUlZfRElCX1NldEltYWdlQml0c19STEU0LgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4IGEgY291cGxlIG9mIDY0Yml0IHBsYXRmb3JtIHByb2JsZW1zIGFuZCBzcGVlZCB1cCBjb21waWxhdGlvbi4gU2VlCgl0b29scy93cmMvQ0hBTkdFUyBmb3IgZGV0YWlscy4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW1taW9EZXNjZW5kOiBkZWJ1Z291dHB1dCBlbmhhbmNlZCwgRklORExJU1QvRklORFJJRkYgc2hvdWxkIENoZWNrIHRoZQoJY29ycmVjdCBja2lkIChMSVNUL1JJRkYpIHRvby4gKHZlcmlmaWVkIGFnYWluc3QgbWNpYXZpMzIuZGxsKQoKCSogTWFrZWZpbGUuaW46IFp5Z28gQmxheGVsbCA8emJsYXhlbGxAZnVycnl0ZXJyb3Iub3JnPgoJQWRkZWQgYSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB3aW5lLnN5bSBiZWZvcmUgaW5zdGFsbGluZyBpdC4KCgkqIGluY2x1ZGUvb2xlMi5oLCBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzb21lIG5ldyBzdHVicyBmb3IgdGhlIE9MRSBtZW51IGRlc2NyaXB0b3IgbWV0aG9kcy4KCkZyaSBGZWIgMTkgMTY6NTA6MjQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcXVldWUuYzogTWFydGluIFdhbGtlciA8bXdhbGtlckBjYWNpLmNvLnVrPgoJRml4ZWQgbWVzc2FnZSBmaWx0ZXJpbmcgY2hlY2suCgoJKiByZWxheTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS9udGRsbC5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIG9sZS9vbGVvYmouYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBtYWRlIHRoZSBzZWN1cml0eSBmdW5jdGlvbnMgY29uc2lzdGVudC4gYWR2YXBpIGNhbGxzIGRvd24gdG8gbnRkbGwgbm93CgktIG5ldyBTZXRTZWN1cml0eURlc2NyaXB0b3JHcm91cCwgIFNldFNlY3VyaXR5RGVzY3JpcHRvck93bmVyLAoJICBTZXRTZWN1cml0eURlc2NyaXB0b3JTYWNsLCBHZXRTZWN1cml0eURlc2NyaXB0b3JEYWNsCgktIG50LWhlYWRlciBjbGVhbnVwCgoJKiBkbGxzL250ZGxsL3J0bC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBtaXNjL2NwdS5jLCB3aW4zMi9rZXJuZWwzMi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhIGZldyBicm9rZW4gaW5jbHVkZXMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBSZXZlcnRlZCBicm9rZW4gY2xvc2UgYnV0dG9uIGNoYW5nZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCB0b29scy93cmMvbmV3c3RydWMuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvd2lkZ2V0cy5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKZWZmIEdhcnppayA8amdhcnppa0Bwb2JveC5jb20+CglBZGRlZCBtaXNzaW5nIHN0cmluZy5oIGluY2x1ZGUuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglPbmx5IGFwcGVuZCAuZGxsIGlmIG5vIGV4dGVuc2lvbiB5ZXQuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJVGVtcG9yYXJ5IGZpeCBzdWdnZXN0ZWQgYnkgVWxyaWNoIHRvIGFsbG93IHRoZQoJTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0IG1ldGhvZCB0byBiZSBjYWxsZWQgZnJvbSAxNiBiaXQgdGhyZWFkcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUluaXRpYWxpemVkIHJldHVybiB2YWx1ZSBvZiAxNi0+MzIgY29udmVyc2lvbiBvZiBXTV9NRElHRVRBQ1RJVkUgaW4KCWNhc2UgaXQncyBzZW50IHRvIGEgd2luZG93IHRoYXQgZG9lc24ndCBoYW5kbGUgaXQgKGkuZS4gbm90IE1ESQoJY2xpZW50KS4KCgkqIGluY2x1ZGUvZGNlLmgsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGV4dHJhIGNoaWxkIGFyZ3VtZW50cyB0byBEQ0VfR2V0VmlzUmduKCkgdG8gYmUgYWJsZSB0byBoYW5kbGUKCVBBUkVOVERDIGNsYXNzIHN0eWxlIGNvbWJpbmVkIHdpdGggQ0xJUENISUxEUkVOIHdpbmRvdyBzdHlsZSwgdG8KCXByZXZlbnQgbWlzLXJlZHJhd3MgaW4gRnJlZSBBZ2VudCAxNi1iaXQuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBMYXdzb24gQS4gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglEb24ndCBoYW5nIG9uIHRoZSBsYXN0IGNoaWxkIGlmIGl0J3Mgbm90IHdhbnRlZC4KCgkqIHdpbjMyL2tlcm5lbDMyLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJUGFydGlhbCBzdHViIGltcGxlbWVudGF0aW9uIG9mIHVuZG9jdW1lbnRlZCBLRVJORUwgcm91dGluZSBQSzE2Rk5GLAoJbmVlZGVkIGJ5IFdpbjk4IEVYUExPUkVSLiBUaGFua3MgdG8gVWxyaWNoIFdlaWdhbmQgZm9yIGluZm9ybWF0aW9uLgoKCSogbWlzYy9jb21tZGxnLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IHJlZHJhdyBwcm9ibGVtcyBmb3IgQ2hvb3NlQ29sb3IgZGlhbG9nLgoKCSogKi8qLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBhIGxvdCBvZiBvY2N1cmVuY2VzIG9mIHdpbmRvd3MuaCAoYW5kIGFkZGVkIG5lY2Vzc2FyeSBvdGhlcgoJaW5jbHVkZXMpLgoKCSogaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIG9sZS9jb21wb2JqLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNtYWxsIGZpeGVzLgoKCSogaW5jbHVkZS9kc291bmQuaCwgbXVsdGltZWRpYS9kc291bmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ2hhbmdlZCB0aGUgZmlyc3QgcGFyYW1ldGVyIGZyb20gTFBHVUlEIChXaW5kb3dzIGhlYWRlcnMpIHRvIFJFRkdVSUQuCglUaGlzIG1ha2VzIGl0IGEgJ2NvbnN0IEdVSUQqJyB3aGljaCBtZWFucyBEaXJlY3RTb3VuZENyZWF0ZSBtdXN0IG5vdAoJY2hhbmdlIGl0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgcmVkdW5kYW50IGRlZmluaXRpb25zIG9mIElzRXF1YWxJSUQgYW5kIElzRXF1YWxDTFNJRCAoc2VlCglpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCkKClRodSBGZWIgMTggMTc6MzQ6MTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3F1ZXVlLmg6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gTmV3IGltcGxlbWVudGF0aW9uIG9mIFNlbmRNZXNzYWdlLCBSZWNlaXZlTWVzc2FnZSwgUmVwbHlNZXNzYWdlIGZ1bmN0aW9ucwoJICB0byBzdXBwb3J0IHRocmVhZC1zYWZlbmVzcywgYW5kIG5lc3RlZCBTZW5kTWVzc2FnZS4KCS0gQWRkaXRpb24gb2YgUmVwbHlNZXNzYWdlMzIuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBDb3BlIHdpdGggTlVMTCBwRHJpdmVyRGF0YSBpbiBYMTFEUlZfV05EX0dldFhXaW5kb3cuCgoJKiBtaXNjL2NvbW1kbGcuYywgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYzoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglBcHBsaWVkIHRoZSBjaGFuZ2VzIG9mIHRoZSByZXN1bHRpbmcgY29sb3Igb2YgdGhlIGNob29zZSBjb2xvciBkaWFsb2cuCglJbml0aWFsaXplIHZhbHVlcyBpbiB0aGUgY2hvb3NlIGNvbG9yIGRpYWxvZy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIElDT01fSU5IRVJJVFMuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYnVnIHdpdGggcmVhZC1vbmx5IGZpbGVzLgoKCSogbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ltaWRpLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgc3VwZXJmbG91cyBXSU5BUEkgKG1pc21hdGNoIHdpdGggcHJvdG90eXBlKSBpbiAqX0RyaXZlclByb2MzMi4KCgkqIGluY2x1ZGUvZG9zZXhlLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZG9zZXhlLmggZGVwZW5kcyBvbiB3aW5iYXNlLmggKGZvciBMUFNUQVJUVVBJTkZPMzJBKQoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBvbGUvYmluZGN0eC5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb2RpZmllZCBzbyB0aGF0IHRoZXkgZG8gbm90IHVzZSB0aGUgVlRBQkxFX0ZVTkMgbWFjcm9zIHRoYXQgcGVyZm9ybWVkCgljYXN0cyBvZiBhbGwgbWV0aG9kcyBwdXQgaW4gdGhlIGp1bXAgdGFibGUuIEkgZmluZCBpdCB0b28gcmlza3kgdG8gdXNlCglzdWNoIG1hY3JvcyBiZWNhdXNlIG5vdGhpbmcgZ3VhcmFudGVlcyB0aGF0IHlvdSBhY3R1YWxseSBwdXQgdGhlIHJpZ2h0CgltZXRob2QgYXQgdGhlIHJpZ2h0IHBsYWNlIG9yIHRoYXQgdGhlIHByb3RvdHlwZSBpcyByaWdodC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL3N0b3JhZ2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXBkYXRlZCB0byB1c2UgdGhlIGxhdGVzdCBDT00gbWFjcm9zLiBEZWZpbmVkIG1vcmUgaW50ZXJmYWNlcyBhbmQgQVBJCglmdW5jdGlvbnMuCgoJKiBjb250cm9scy9tZW51LmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBwdXNoZWQgY2xvc2UgYnV0dG9uLgoKV2VkIEZlYiAxNyAxNzo0NTo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmgsIG9sZS9jb21wb2JqLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vdmVkIHNvbWUgZGVmaW5pdGlvbnMgdG8gdGhlaXIgcHJvcGVyIGluY2x1ZGUgZmlsZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBzb21lIElDT01fSU5IRVJJVCBzdHVmZiBhbmQgYWRkZWQgbmV3IHJlbGF0ZWQgQVBJIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIG5ldyBBUEkuIFBhcnQgb2YgaXQgd2FzIGluICdpbmNsdWRlL29iamJhc2UuaCcgYmVmb3JlIGFuZCBwYXJ0CglvZiBpdCBpcyBuZXcuIE5vdyBpdCBhbHNvIGNvbnRhaW5zICdXSU5FX1N0cmluZ0Zyb21DTFNJRCcuIEl0J3Mgbm90CglwZXJmZWN0IGJ1dCBpdCdzIGJldHRlciB0aGFuIGhhdmluZyBpdCBpbiAnaW5jbHVkZS9vYmpiYXNlLmgnLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL250ZGxsL250LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBjb250cm9scy9zY3JvbGwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgYSBudW1iZXIgb2Ygd2FybmluZ3MgY29uY2VybmluZyB0aGUgbWF0Y2hpbmcgb2YgdGhlIHByaW50ZgoJZm9ybWF0IHN0cmluZyBhbmQgdGhlIGFzc29jaWF0ZWQgcGFyYW1ldGVycyAoYWN0dWFsbHkgaXQncyBtb3N0bHkKCVRSQUNFIGFuZCBGSVhNRXMpLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL21taW8uYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW1taW9EZXNjZW5kOiBmaXhlZCBGSU5EX3h4eHgsIHZlcmlmaWVkIHdpdGggbWNpYXZpMzIuZGxsLgoJbWNpTG9hZENvbW1hbmRSZXNvdXJjZTMyOiBzZWNvbmQgYXJnIGlzIHdpZGUgc3RyaW5nCgltY2lHZXREcml2ZXJEYXRhOiBzcGVjIGhhcyBqdXN0IG9uZSBsb25nIGFyZ3VtZW50CgoJKiBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmMsIG9sZS9pZnMuaCwgb2xlL3N0b3JhZ2UuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgbXVsdGltZWRpYS9kc291bmQuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDaGFuZ2VkIElDT01fVEhJUyBkZWZpbml0aW9uLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgaW5jbHVkZS92ZXIuaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglSZW5hbWVkIFZTX1ZFUlNJT05fSU5GT3h4IHN0cnVjdHVyZSB0byBWU19WRVJTSU9OX0lORk9fU1RSVUNUeHguCglUaGUgVlNfVkVSU0lPTl9JTkZPIGlzIGEgc2ltcGxlIGRlZmluZSBhbmQgd291bGQgY2F1c2UgY29uZnVzaW9uLgoJQWxzbyBjb3JyZWN0ZWQgdGhlIFZTX3h4X0lORk8gZGVmaW5lcyBub3QgdG8gdXNlIE1BS0VJTlRSRVNPVVJDRTE2IGZvciB3aW4zMi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBTdGVmZmVuIE1vZWxsZXIgPG1vZWxsZXJAZWJpLmFjLnVrPgoJIkNvbmZpZ3VyZSBmaW5pc2hlZCIgbWVzc2FnZSBzdWdnZXN0cyB0byBjYWxsIG1ha2Ugd2hlbiBtYWtlIGRlcGVuZAoJd2FzIHN1Y2Nlc3NmdWwuCgoJKiAqLyo6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3B0aW1pemVkIGluY2x1ZGUvKi5oOiAocmVjdXJzaXZlbHkpIGluY2x1ZGUgYWxsIGhlYWRlcnMgbmVlZGVkIGJ5Cgl0aGlzIC5oIGZpbGUsIGJ1dCBvbmx5IHRob3NlLiBOZWNlc3NhcnkgZml4ZXMgdG8gYSBsb3Qgb2YgLmMgZmlsZXMsCglzdGFydGVkIG9wdGltaXppbmcgIndpbmRvd3MuaCIgYXdheSBmcm9tIHNvbWUgb2YgdGhlbS4gTW92ZWQKCUdldEN1cnJlbnRUYXNrIHByb3RvdHlwZSB0byB3aW5lL3dpbmJhc2UxNi5oLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglQcmVsaW1pbmFyeSBsaXN0dmlldyBjb250cm9sIGltcGxlbWVudGF0aW9uLgoKCSogY29udHJvbHMvbWVudS5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglHaXZlIHRoZSBjb250ZXh0IG1lbnUgaXRzIHByb3BlciBiZWhhdmlvdXIgYW5kIG1vZGlmeSBUcmFja1BvcHVwTWVudQoJdG8gY29tcGx5IHdpdGggd2luZG93cyBBUEkuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJR2V0VXBkYXRlUmVjdCBzaG91bGQgcmV0dXJuIGNsaWVudCBjb29yZGluYXRlcyB1bmxlc3MgdGhlIHdpbmRvdyB3YXMKCWNyZWF0ZWQgd2l0aCB0aGUgQ1NfT1dOREMgc3R5bGUgYW5kIHRoZSBtYXBwaW5nIG1vZGUgaXMgbm90IE1NX1RFWFQsCglpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgc2hvdWxkIGJlIGluIGxvZ2ljYWwgY29vcmRpbmF0ZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCB0aGUgYWN0dWFsIGRlZmluaXRpb25zIG9mIHRoZSBpbnRlcmZhY2VzLgoKCSogaW5jbHVkZS9zZXJ2cHJvdi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNvbnZlcnRlZCB0byB0aGUgbmV3IENPTSBkZWNsYXJhdGlvbiAnc3RhbmRhcmQnIGZvciBiZXR0ZXIKCWNvbXBhdGliaWxpdHkgd2l0aCBDIGNvZGUgaW1wbGVtZW50YXRpbmcgdGhhdCBpbnRlcmZhY2UuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgV1BSSU5URl9FeHRyYWN0VkFQdHIgdG8gdGFrZSB0aGUgYWRkcmVzcyBvZiB0aGUgdmFfbGlzdCB0byBiZQoJYWJsZSB0byBtb2RpZnkgaXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCURlZmluZWQgSURyb3BUYXJnZXQgZm9yIFNoZWxsRm9sZGVyLiAgSW1wbGVtZW50ZWQgdGhlIENvbnN0cnVjdG9yLAoJRGVzdHJ1Y3RvciwgQWRkUmVmLCBSZWxlYXNlIGFuZCBRdWVyeUludGVyZmFjZSBtZXRob2RzLgoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNoYW5nZSB0eXBlIG9mIG1vZGUgYXJndW1lbnQgdG8gR0VUVkRNUE9JTlRFUjMyVyBmcm9tIERXT1JEIHRvIFdvcmQKCk1vbiBGZWIgMTUgMTU6MjQ6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS93aW51c2VyLmg6CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCWMybWFuIGRvZXNuJ3QgbGlrZSBleHRyYSBzZW1pY29sb25zLgoKCSogd2luZG93cy93aW5wb3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZXNldHRpbmcgWCBmb2N1cyBzaG91bGQgbm90IGJlIGRvbmUgd2l0aCBTZXRGb2N1czMyLiBDYWxsZWQKCXRoZSB3aW5kb3dpbmcgKFgxMSkgZHJpdmVyJ3MgU2V0Rm9jdXMgcm91dGluZSBkaXJlY3RseSBpbnN0ZWFkLgoJVGhpcyBhcHBhcmVudGx5IGZpeGVzIGEgYmlnIGhlYXAgb2YgdXNlciBpbnRlcmZhY2UgcHJvYmxlbXMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBGZWIgMTQgMTQ6MDk6NDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIGluY2x1ZGUvd2ludXNlci5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3JlY3QuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBzb21lIGZ1bmN0aW9ucyBwcm90b3R5cGVzICh3ZXJlIHJldHVybmluZyB2b2lkKS4KCgkqIG1pc2MvbWFpbi5jLCBpbmNsdWRlL3dpbnVzZXIuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglGaXhlZCBzb21lIFdpbmVsaWIgbmFtZXMuCgoJKiBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29ycmVjdGVkIHByb3RvdHlwZXMgZnVuYygpIC0+ZnVuYyh2b2lkKS4KCgkqIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21pZGkuYywgZGVidWdnZXIvbWVtb3J5LmM6CglCcmlhbiBKb3NlcGggQ3phcGlnYSA8cm9vdEBnbGFjaWQuY29tPgoJRml4ZWQgYSBmZXcgI2lmZGVmcy4KCgkqIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJSmVyb21lIFZvdWlsbG9uIDx2b3VpbGxvbkBjbGFyYW5ldC5mcj4KCU1ha2UgYSBjb3JyZWN0IHVzZSBvZiBjbGlwcGluZyByZWN0YW5nbGVzLgoKCSogaW5jbHVkZS9iaXRtYXBzL29jcl9jcm9zczoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHdoaXRlIGJvcmRlci4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGJldHRlciBvdXRwdXQgZm9yIGluZGlyZWN0IGNhbGxzLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8gaW4gd2lubW0uc3BlYy4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93cmNfcnNjLmgsIG1pc2MvbHN0ci5jLCBtaXNjL3dzcHJpbnRmLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAQ09SRUwuQ0E+CglBIGZldyBub24teDg2IFdpbmVsaWIgZml4ZXMuCgoJKiBtaXNjZW11L21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgcHJpbnQgJ3dpbmU6IG5vIGV4ZWN1dGVhYmxlIGZvdW5kJyBpZiB3ZSBkaWQgZXhlY3V0ZSBzb21ldGhpbmcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkLyo6CglNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CgktIEFkZGVkIG5ldyBJRFNfTk9UU0FWRUQgcmVzc291cmNlIChuZWVkcyB0cmFuc2xhdGlvbiBpbiAqLnJjKQoJLSBJbXByb3ZlZCBwcmludGluZyBzdXBwb3J0IChub3QgeWV0IGNvbXBsZXRlKQoJLSBJbXByb3ZlZCBmaWxlIGRyYWcgYW5kIGRyb3AgKHNob3VsZCBub3cgd29yaykKCS0gR2VuZXJhbCBjb2RlIGNsZWFudXAKCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVncyBvbiBNQ0kgbm90aWZpY2F0aW9uIChjYWxsYmFjayBpbmZvIGFyZSBjb3BpZWQgYmVmb3JlCglhc3luY2hyb25vdXMgcmV0dXJuKSAtIG1ha2UgdXNlIG9mIGl0IGluIE1DSSB3YXZlIGFuZCBtaWRpLgoJSW1wbGVtZW50ZWQgbWNpKFNldHxHZXQpRGV2aWNlSUQoMTZ8MzIpIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNpbmNlIFNldFBhcmVudCBub3cgaGlkZXMvc2hvd3MsIGV4cGxpY2l0bHkgaW52YWxpZGF0aW5nIERDcyBpbiB0aGUKCXBhcmVudCBjaGFuZ2Ugb3BlcmF0aW9uIHNob3VsZCBubyBsb25nZXIgYmUgbmVjZXNzYXJ5LgoKCSogd2luZG93cy9kaWFsb2cuYzogR2VyYXJkIFBhdGVsIDxHLlBhdGVsQFdhbmFkb28uZnI+CglGaXggaWYgRW5kRGlhbG9nIGNhbGxlZCBpbiBXTV9JTklURElBTE9HIChESUFMT0dfRG9EaWFsb2dCb3gpLgoKCSogbXNkb3MvaW9wb3J0cy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTW92ZWQgVkdBIHBvcnQgYWNjZXNzIGNoZWNrIGF0IHRoZSBiZWdpbm5pbmcgaW4gb3JkZXIgdG8gaW1wcm92ZQoJcGVyZm9ybWFuY2UgYSBsaXR0bGUgYml0LgoKCSogc2VydmVyL2ZpbGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBmbGFnIEZJTEVfRkxBR19ERUxFVEVfT05fQ0xPU0UuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZGVkIGNvbW1lbnRzLiBUaGluayBJJ3ZlIGZpeGVkIElOVCAxMC8wOCAoR2V0IENoYXJhY3RlciBhbmQKCUF0dHJpYnV0ZSBhdCBDdXJzb3IpLgoKCSogY29uc29sZS94dGVybS5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBYdGVybVByb2dyYW0gYW5kIFh0ZXJtUmVzb2x1dGlvbi4KCUZpeGVkIGEgd2FybmluZy4KCgkqIGRvY3VtZW50YXRpb24vY29uc29sZSwgd2luZS5pbmk6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU5ldyBleGFtcGxlcy9kb2N1bWVudGF0aW9uIGZvciBjb25zb2xlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCgkqIG1pc2MvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS90dHkuYywgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvbWFpbi5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglNb3ZlZCBpbml0aWFsaXphdGlvbiB1bnRpbCBsYXRlci4gQWxzbyBtb3ZlZCBhcm91bmQgY29kZSBhIGJpdCB0byBiZQoJY29uc2lzdGFudC4KCgkqIGluY2x1ZGUvZGVidWdnZXIuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwb3NzaWJpbGl0eSB0byBsb2FkIC5zdGFicy8uc3RhYnN0ciBzZWN0aW9ucyBmcm9tIFBFIGRsbHMuCglVbmZvcnR1bmF0ZWx5IG15IHNhbXBsZXMgdXNlIGN1cnJlbnRseSB0eXBlZGVmcyB3aGljaCB3aW5lLWRiZyBkb2VzCglub3QgdW5kZXJzdGFuZCwgc28gbm8gYWN0dWFsIHBhcnNpbmcuCgoJKiBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc2FjbTMyL2Zvcm1hdC5jLCBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGluY2x1ZGUvbW1yZWcuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbXNhY21kcnYuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ2hhbmdlIGEgY291cGxlIG9mIG5hbWVzIHRoYXQgd291bGQgY29uZmxpY3QgYWZ0ZXIgYWxsIDMyW0FXXSBzdWZmaXhlcwoJYXJlIHJlbW92ZWQuIFN0cnVjdHVyZXMgZGVmaW5lZCBpbiBib3RoIG1tcmVnLmggYW5kIG1tc3lzdGVtLmggYXJlCglwcm90ZWN0ZWQgd2l0aCAjaWZkZWY6cyBhcyBpbiBNUycgaGVhZGVycy4KCgkqIG1pc2MvaW1tLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgd3JvbmcgdHlwZWNhc3RzLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9ncnBmaWxlLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJQ29tcGlsYXRpb24gZml4LgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IGZvciBYMTEgaW5jbHVkZXMgZGV0ZWN0aW9uLgoKCSogZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcG9zc2liaWxpdHkgdG8gbG9hZCAuc3RhYnMvLnN0YWJzdHIgc2VjdGlvbnMgZnJvbSBQRSBkbGxzLgoJVW5mb3J0dW5hdGVseSBteSBzYW1wbGVzIHVzZSBjdXJyZW50bHkgdHlwZWRlZnMgd2hpY2ggd2luZS1kYmcgZG9lcwoJbm90IHVuZGVyc3RhbmQsIHNvIG5vIGFjdHVhbCBwYXJzaW5nLgoKCSogbXVsdGltZWRpYS9kcGxheS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RkcmF3LCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2QzZC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGRkcmF3L2QzZCBidWdmaXhlcywgdXBkYXRlZCBEaWFibG8vV0M0IGRkcmF3IHN0YXR1cy4KCgkqIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5ubHMuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50YXRpb24gb2YgQ29udmVydERlZmF1bHRMb2NhbGUzMi4KCgkqIHdpbmRvd3MvbWRpLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJV0lOMzEgTG9vayBzdGlsbCBuZWVkcyBhIGNsb3NlIGJ1dHRvbiBvbiB0aGUgbGVmdCBvZiB0aGUgbWVudSBiYXIuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIFNldFdpbmRvd1BvczMyIHRvIGZvcmNlIHRoZSB1cGRhdGUgb2YgdGhlIG5vbi1jbGllbnQgYXJlYS4KClNhdCBGZWIgMTMgMTc6NTY6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnNvY2suaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXhlZCBhIGNvdXBsZSBvZiBmYXVsdHkgbmFtZXMgdXNlZCBpbiB3aW5lIGFuZCB0eXBvcyBzbyB0aGF0IGl0IHdpbGwKCWNvbXBpbGUgYWdhaW4gYWZ0ZXIgY29udmVyc2lvbiBmcm9tIDMyW0FXXSBuYW1pbmcgdG8gW0FXXSBuYW1pbmcuCgoJKiBpZjE2MzIvQXR0aWMvc2lnbmFsLmMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9zaWduYWwuYywgbWlzY2VtdS9pbnN0ci5jLCBtaXNjZW11L21haW4uYywgZ3JhcGhpY3MvZGRyYXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZWQgdGhlIGlmMTYzMi9zaWduYWwuYyBzdHVmZiBpbnRvIGxvYWRlci9zaWduYWwuYywgYWRhcHRlZCBmdW5jdGlvbgoJcG9pbnRlcnMgZm9yIHdpbmVfZGVidWcgYW5kIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbi4KCgkqIG9sZS9jb21wb2JqLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWxsIGd1aWQgJ1JFRnh4eCcgdHlwZXMgYWxyZWFkeSBoYXZlIGEgJ2NvbnN0JyBpbnNpZGUgdGhlbS4KCgkqIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBtaXNjL3ZlcnNpb24uYywgd2luZG93cy93aW5wb3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSB3YXJuaW5ncyBmaXhlZCwgb25lIHVzZWxlc3MgVkVSU0lPTiB3YXJuaW5nIHJlbW92ZWQgKHdpbmVsaWIpLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVnRmx1c2hLZXk6IHdyb25nIGVycm9yIGNvZGUuCgoJKiB3aW4zMi9maWxlLmM6IEFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZHMgYSB3YXJuaW5nIG1lc3NhZ2UgaWYgcGVybWlzc2lvbnMgbm90IHN1ZmZpY2llbnQuCgoJKiBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21pZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgTUNJIEFWSSBkcml2ZXIKCUFkZGVkIHNvbWUgZml4ZXMgbWl4ZXIgZnVuY3Rpb25zCglGaXhlZCBNQ0kgc3RyaW5nIGNvbXBhcmlzb24gKHRoYW5rcyB0byBMaW9uZWwgVUxNRVIpCglObyBsb25nZXIgdXNpbmcgMTYgYml0IFVTRVIgZnVuY3Rpb25zICh1c2UgdGhlaXIgMzIgYml0IGNvdW50ZXIgcGFydCkKCVJlaW5kZW50aW5nLgoJQWRkZWQgZnVuY3Rpb24gc25kUGxheVNvdW5kMzJXCgoJKiBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHRoZSBhY3R1YWwgaW50ZXJmYWNlIGRlZmluaXRpb25zIHRvIHRoZSBvYmpfbWFyc2hhbC5oIHNrZWxldG9uCglmaWxlLiBBbHNvIGRlZmluZWQgdGhlIGFzc29jaWF0ZWQgQyBBUEkuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJVXNlIGdsb2JhbCBzeW5jaHJvbml6YXRpb24gb2JqZWN0cywgdG8gYmUgYWJsZSB0byB1c2UgaXQgaW4gZGlmZmVyZW50Cglwcm9jZXNzZXMgKG5vdCBvbmx5IHRoZSBwcm9jZXNzIHdoaWNoIGNyZWF0ZSB0aGUgc3luY2hybyBvYmplY3QpLgoKCSogd2luZG93cy9tZGkuYzogTm9ybWFuIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJU2V0IGh3bmRBY3RpdmVDaGlsZCB3aGVuIG1heGltaXppbmcgYSBtZGkgY2hpbGQgd2luZG93IGJlY2F1c2UgaXQgaXMKCW5vdCBzZXQgd2hlbiBtYXhpbWl6aW5nIGEgd2luZG93IG90aGVyIHRoYW4gdGhlIGFjdGl2ZSBjaGlsZC4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZSB0aGUgR2V0TWVudUl0ZW1SZWN0IHRvIGNvbXBseSB3aXRoIHdpbmRvd3MgQVBJLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW46CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglDcmVhdGVkIGluY2x1ZGUvTWFrZWZpbGUuaW4gdG8gc2VwYXJhdGUgaGVhZGVyIGZpbGUgaW5zdGFsbGF0aW9uIGZyb20KCXRoZSB0b3AtbGV2ZWwgTWFrZWZpbGUuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJLSBGaXhlZCBhIHNtYWxsIGJsb2NrIGRlcG90IGJ1Zy4KCS0gSW1wbGVtZW50ZWQgY29udmVydGluZyBmcm9tIHNtYWxsIGJsb2NrcyB0byBiaWcgYmxvY2tzLgoJLSBWYWxpZGF0ZWQgZmlsZSBhdHRyaWJ1dGVzIGFuZCBmbGFncy4KCS0gRml4ZWQgYSBidWcgZm9yIGxhcmdlciBmaWxlcy4KCgkqIHJlc291cmNlcy8uY3ZzaWdub3JlOiBhZGRlZCBzeXNyZXNfTmwKCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgT0xFIERyYWcgYW5kIERyb3AgdGFyZ2V0IHJlZ2lzdHJhdGlvbiBtZWNoYW5pc20gYW5kCgl0aGUgRG9EcmFnRHJvcCBsb29wIHRvIHBlcmZvcm0gdGhlIERuRCBvcGVyYXRpb24uCgoJKiB3aW5kb3dzL21kaS5jLCBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVudS5oOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFdJTjMxIExvb2sgbWRpIGJ1dHRvbnMgYW5kIGFsc28gc29tZSBkZWZpbmVzIGZvciB0aGUKCW1hZ2ljIG1lbnUgaXRlbXMuCgoJKiBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGluY2x1ZGUvd2luY3J5cHQuaCwgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgZW50cmllcyBmb3IgbW9zdCBDcnlwdCogY2FsbHMuCglBZGRlZCBzdHViIGZvciBDcnlwdEFjcXVpcmVDb250ZXh0QS4gIFRoaXMgYWxsb3dzIFdpbjk4IEVYUExPUkVSLkVYRQoJdG8gZ2V0IGZhcnRoZXIuCgoJKiBjb250cm9scy9lZGl0LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbiBhcHAgbGVmdCBqdW5rIGluIHRoZSB1bmRvIGJ1ZmZlciBvZiBhbiBlZGl0IGNvbnRyb2wgdXBvbiBjcmVhdGlvbi4KCgkqIHdpbmRvd3Mvd2luLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hhbmdlZCBTZXRQYXJlbnQzMiB0byBhZGhlcmUgdG8gV2luZG93cyBiZWhhdmlvdXIgKG1vc3RseSksCgl3aGljaCBzaG91bGQgYWxzbyBrZWVwIGl0IGZyb20gbGVhdmluZyBnYXJiYWdlIGFyb3VuZC4KCgkqIG9sZS9jb21wb2JqLmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIGEgc2ltcGxlIGxpbmtlZCBsaXN0IChzdGF0aWMpIHRoYXQgc3RvcmVzIGFuZCBjb3VudHMKCXJlZmVyZW5jZXMgdG8gQ09NIG9iamVjdHMuCgoJKiBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTWFrZSB0aGUgUkVGeHh4IHR5cGVzIGNvbnN0IGV2ZW4gaW4gQy4gQWxzbyBhZGQgRk1USUQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IGNhbGwgRVZFTlRfRHVtbXlNb3Rpb25Ob3RpZnkgZm9yIGhpZGRlbiB3aW5kb3dzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4IHNvbWUgdGhyZWFkLXNhZmVuZXNzIHByb2JsZW0gd2hlbiBhY2Nlc3NpbmcgdGhlIHN5c3RlbSBtZXNzYWdlCglxdWV1ZS4KCgkqIHdpbmRvd3MvaW5wdXQuYywgaW5jbHVkZS93aW51c2VyLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIE1hcFZpcnR1YWxLZXlFeCAodGlja2V0IDIxKS4KCUlnbm9yZSBrZXlib2FyZCBsYXlvdXQgZm9yIG5vdy4KCgkqIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHRoZSBhY3R1YWwgaW50ZXJmYWNlIGRlZmluaXRpb25zIHRvIHRoZSBvYmpfY2xpZW50c2VydmVyLmgKCXNrZWxldG9uIGZpbGUuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBkb2N1bWVudGVkIG1vc3Qgb2YgdGhlIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgaW4gbnQuYwoJLSBpbXBsZW1lbnRlZCBSdGxHZXREYWNsU2VjdXJpdHlEZXNjcmlwdG9yCgktIHN0dWJzIGZvciBOdEVudW1lcmF0ZUtleSwgTnRPcGVuU3ltYm9saWNMaW5rT2JqZWN0LCBOdFF1ZXJ5S2V5CgktIHN0dWJzIGZvciBOdFJhaXNlRXhjZXB0aW9uLCBSdGxSYWlzZUV4Y2VwdGlvbiAodGhpcyBib3RoIHdpbGwgY3Jhc2gpCgpGcmkgRmViIDEyIDE3OjQ3OjA3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBmaWxlcy9kcml2ZS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbjMyL25ld2Zucy5jLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMgdG8gY29tcGlsZSB3aXRoIHRoZSBoZWFkZXJzIChtb3N0bHkgbnQtc2VjdXJpdHkpLgoKCSogaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvbnRkbGwuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFkZSBudC1yZWxhdGVkIHR5cGVzIGNvbXBhdGlibGUsIHRocm93IG91dCB3aW5lLXNwZWNpZmljIHR5cGVzLgoKCSogd2luZG93cy9tb3VzZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBNT05JVE9SXy4uLiBpbnN0ZWFkIG9mIERFU0tUT1BfLi4uIHJvdXRpbmVzIHRvIGdldCBzY3JlZW4KCWRpbWVuc2lvbnM7IHRoZXNlIHdvcmsgYWxzbyB3aXRoIG5hdGl2ZSBVU0VSLgoKCSogd2luZG93cy9kZWZ3bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXTV9BQ1RJVkFURSBkZWZhdWx0IHByb2Nlc3Npbmcgc2hvdWxkIHNldCB3aW5kb3cgZm9jdXMuCglTaG91bGQgZml4IGZvY3VzIHByb2JsZW1zIGluIG5vbi1tYW5hZ2VkIG1vZGUuCgpUaHUgRmViIDExIDE2OjMyOjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvbmxzL25sZC5ubHMsIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL1RPRE8sIHJlc291cmNlcy9zeXNyZXMuYywgcmVzb3VyY2VzL3N5c3Jlc19ObC5yYywgQVVUSE9SUywgZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXMsIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBEdXRjaCBsYW5ndWFnZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3NobG9iai5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJWnlnbyBCbGF4ZWxsIDx6YmxheGVsbEBjb3JlbC5jYT4KCU1vdmUgcHJvcGVydHkgc2hlZXRzIGZyb20gY29tbWN0cmwuaCBpbnRvIGludG8gcHJzaHQuaC4KCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkICdvYmpiYXNlLmgnIHRvIHByZXZlbnQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUJldHRlciBkZXRlY3Rpb24gb2YgWFNobSBlcnJvcnMgKHNob3VsZCBub3cgcnVuIG9uIHJlbW90ZSBkaXNwbGF5cykuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlcyBtaXhlckdldElEMTYvMzIgcHJvYmxlbXMvZXJyb3JzLgoKCSogb2xlL29sZW9iai5jLCBtdWx0aW1lZGlhL2RwbGF5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSXNFcXVhbEdVSUQgaXMgZGVmaW5lZCBpbiAnaW5jbHVkZS93aW5lL29ial9iYXNlLmgnLiBBbGwgb3RoZXIKCWRlY2xhcmF0aW9ucyBtdXN0IHN1cnJlbmRlciBvciBwcmVwYXJlIHRvIGJlIG1ldCB3aXRoIGRlYWRseSBmb3JjZSA6LSkKCgkqIHJlbGF5MzIvb2xlMzIuc3BlYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBuZXcgZnVuY3Rpb25zIChmcm9tIFdpbjk4KQoJQWRkZWQgY29tbWVudHMgd2l0aCB0aGUgcGFyYW1ldGVyIHR5cGVzIGZvciBmdXR1cmUgdXNlIHdpdGggZGxsZ2x1ZQoKCSogZmlsZXMvZHJpdmUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU2V0IHRoZSBmbGFncyBmb3IgR2V0Vm9sdW1lSW5mb3JtYXRpb24zMkEuCgoJKiB3aW5kb3dzL3dpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpbmRXaW5kb3cgZmFpbGVkIGZvciAzMiBiaXQgd2luZG93cyB3aXRoIHN0eWxlICE9IFdTX0NISUxELgoKV2VkIEZlYiAxMCAwNjo1Mjo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9BdHRpYy9wcmludC5oLCBpbmNsdWRlL3dpbnNwb29sLmgsIG1pc2MvcHJpbnRkcnYuYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGdyYXBoaWNzL3BzZHJ2L3RleHQuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWxiZXJ0IERlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJTW92ZXMgZmlsZXMgZnJvbSBwcmludC5oIHRvIHdpbnNwb29sLmggZm9yIGJldHRlciBTREsgaGVhZGVyIGNvbXBsaWFuY2UKCWZvciBXaW5lbGliIHByb2dyYW1zLgoKCSogaW5jbHVkZS9ob29rLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglBbGJlcnQgRGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGF0aHVyc3RvQGNvcmVsLmNhPgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglaeWdvIEJsYXhlbGwgPHp5Z29iQGNvcmVsLmNhPgoJTWlzY2VsbGFuZW91cyBwYXRjaGVzIHRvIGhlYWRlciBmaWxlcy4gIEFsbCBvZiB0aGVzZSBhcmUgc3VwcG9zZWRseSB0aGVyZQoJdG8gaGVscCBidWlsZCBXaW5lbGliIGFwcGxpY2F0aW9ucy4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDogQWxiZXJ0IERlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhdGh1cnN0b0Bjb3JlbC5jYT4KCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJWnlnbyBCbGF4ZWxsIDx6eWdvYkBjb3JlbC5jYT4KCU1vcmUgdHlwZXMgd2UgbmVlZCBmb3IgY29tcGlsaW5nIFdpbmVsaWIvTUZDIGFwcGxpY2F0aW9ucy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglNb3JlIHR5cGVzIGZvciBjb21tb24gY29udHJvbHMuICBOZWVkZWQgZm9yIFdpbmVsaWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgbXVsdGltZWRpYS9kc291bmQuYywgb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglCZXR0ZXIgc2V0IG9mIG1hY3JvcyBmb3IgZGVmaW5pbmcgdGhlIENPTSBpbnRlcmZhY2VzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUd28gQURWQVBJMzIgc3R1YnM6IEltcGVyc29uYXRlU2VsZjMyIGFuZCBBY2Nlc3NDaGVjazMyLiBTcGVsbGluZyBmaXhlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJRml4ZWQgZGVidWcgb3V0cHV0IHRvIGZvbGxvdyAnLWRlYnVnbXNnJyBmbGFncy4KClR1ZSBGZWIgIDkgMTU6NDk6MzkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDIwLmMsIG9sZS9zYWZlYXJyYXkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHdpbmRvd3Mvd2luaGVscC5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZXMgdG8gYXZvaWQgd2FybmluZ3MvZXJyb3JzLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9semV4cGFuZC5oLCBpbmNsdWRlL250ZGxsLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvdmdhLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5lL2tleWJvYXJkMTYuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9zaGVsbDE2LmgsIGluY2x1ZGUvd2luZS93MzJza3JubC5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW5lc291bmQuaCwgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93aW52ZXIuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglNb3ZlZCBldmVyeXRoaW5nIG91dCBvZiB3aW5kb3dzLmguCgoJKiBncmFwaGljcy93aW5nLmMsIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9wYWxldHRlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvcGFsZXR0ZS5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglCcmFkIFBlcGVycyA8YnJhZEBsaW51eGNhbmFkYS5jb20+CglXaW5HIGZpeGVzLgoKCSogY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3RpbWVyLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS1GaXhlZCBNRVNTQUdFIGZ1bmN0aW9ucyB0aGF0IHdlcmUgdGh1bmtpbmcgZG93biB0byAxNiBiaXRzIGltcGxlbWVudGF0aW9uLgoJU28gUGVla01lc3NhZ2UzMiwgR2V0TWVzc2FnZTMyLCBQb3N0TWVzc2FnZTMyLCBQb3N0VGhyZWFkTWVzc2FnZSBhcmUgZml4ZWQKCXdpdGggdGhpcyBwYXRjaC4gVW5pY29kZSB2ZXJzaW9uIG9mIHRob3NlIGZ1bmN0aW9ucyBpcyBjdXJyZW50bHkgb25seQoJY2FsbGluZyB0aGUgQVNDSUkgdmVyc2lvbi4KCS1GaXhlZCBxdWV1ZSBzaWduYWxpbmcgdXNpbmcgYSBuZXcgRVZFTlQgb2JqZWN0IGluIHRoZSBxdWV1ZSBmb3IgMzIgYml0cwoJdGhyZWFkLiBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3QgaGFzIGJlZW4gZml4ZWQgYW5kIGlzIG5vdyBibG9ja2luZyBvbiB0aGUKCXJpZ2h0IEVWRU5ULgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUdldE1ldGFGaWxlQml0c0V4IHNob3VsZCB3b3JrIGluIGJ5dGVzIG5vdCB3b3Jkcy4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRGxsR2V0Q2xhc3NPYmplY3Qgc2hvdWxkIHRha2UgYSBSRUZDTFNJRCBub3QgYW4gTFBDTFNJRC4KCgkqIG9iamVjdHMvZGliLmMsIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoYW5nZSBmYXVsdCBoYW5kbGVyICdhZGRyJyBhcmd1bWVudCB0byBMUENWT0lELgoKCSogZmlsZXMvZmlsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgVklSVFVBTF9IYW5kbGVGYXVsdCBpZiByZWFkL3dyaXRlIHJldHVybnMgRUZBVUxULgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeCB0eXBvIHRvIG1hcCBHZXRUZXh0RXh0ZW50UG9pbnQgdG8gdGhlIGNvcnJlY3QgMzJBIHZlcnNpb24uCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZywgaW5jbHVkZS9wZWV4ZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBzbWFsbCBidWdmaXhlcywgYWRkZWQgbW9yZSBQRSByZWxvY2F0aW9uIHR5cGVzIChmb3IgV2luQ0UgbW9zdGx5KSwKCXNvbWUgY29uc29sZSBwcm90b3R5cGVzLCAtZGxsIGlzIHVzZWZ1bCBmb3Igd2luZWxpYiB0b28sIHJlZ3Rlc3QKCWNvbXBpbGUgZml4ZWQuCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJR2V0Q3Vyc29yUG9zIGlzIGFjdHVhbGx5IGEgQk9PTC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglNb3JlIHR5cGVzLCBDKysgcHJvdGVjdGlvbiwgYW5kIGEgdHlwbyBjb3JyZWN0aW9uIGZvciBtbXN5c3RlbS5oLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCU1vdmUgdGhlICNkZWZpbmUgb2YgRFVNTVlVTklPTk5BTUUqIHRvIGJlZm9yZSB0aGV5IGFyZSB1c2VkLgoJQWRkIGEgZGVmaW5pdGlvbiBmb3IgRFVNTVlVTklPTk5BTUUgKGFzIG9wcG9zZWQgdG8gRFVOMSwgRFVOMi4uLikuCglVc2UgdGhlIGNvcnJlY3QgV0lORUxJQl9OQU1FX0FXIG1hY3JvIGZvciBUVklURU0gYW5kIHJlbGF0ZWQgbmFtZXMuCglEZWZpbmUgIlRWX0lURU0iIHRvIGFncmVlIHdpdGggeW91LWtub3ctd2hvJ3MgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5VTEwgaXMgYSB2YWxpZCBhcmd1bWVudCBhcyBoYW5kbGUgZm9yIEdldEZpbGVWZXJzaW9uSW5mb1NpemUzMkEuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBidWZmZXJlZCBkZXZpY2UgYWNjZXNzIGZvciBESW5wdXQncyBtb3VzZSBkcml2ZXIuCgoJKiBmaWxlcy9maWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJV3JvbmcgYWNjZXNzIG9uIHNlcnZlciBoYW5kbGUgd2FzIGRlbWFuZGVkIChHRU5FUklDX1JFQUQgaW5zdGVhZCBvZgoJR0VORVJJQ19XUklURSkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQmV0dGVyIGltcGxlbWVudGF0aW9uICh0YWtlcyBzdHJpbmdzIG9yIHJlcy1pZCdzIG5vdykuCgoJKiBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIG91dHB1dCBwYXJhbWV0ZXJzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglGaXhlZCB0d28gcG9pbnRlci9pbnRlZ2VyIG1pc21hdGNoIHdhcm5pbmdzLgoKCSogZG9jdW1lbnRhdGlvbi9jb25zb2xlOiBaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCVNwZWxsaW5nIGZpeGVzLgoKCSogY29uc29sZS94dGVybS5jLCB3aW4zMi9jb25zb2xlLmM6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCXdpbmVfb3BlbnB0eSBpcyBub3QgcHJvcGVybHkgZGVjbGFyZWQgKGVpdGhlciBtaXNzaW5nIG9yIG1pc21hdGNoZWQKCWRlY2xhcmF0aW9ucykgaW4gYm90aCBwbGFjZXMgd2hlcmUgaXQgaXMgdXNlZC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGliLmM6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCUZpeCB0eXBlcyBvZiBHZXRESUJpdHMgZnVuY3Rpb25zIChMUFNUUiBzaG91bGQgYmUgTFBWT0lEKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgc2V2ZXJhbCBwcm9ibGVtcyB3aXRoIFNldERJQml0c1RvRGV2aWNlIGlmIHhTcmMgIT0gMC4KCVRoYW5rcyB0byBJYW4gU2NobWlkdCBmb3IgdGhlIGxvZ3MuCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglUaGUgc3lzdGVtcyBidXR0b25zIChtaW5pbWl6ZS9yZXN0b3JlL2Nsb3NlKSBub3cgYXBwZWFyIG9uIHRoZSBtZW51CgliYXIgb2YgbWRpIGFwcGxpY2F0aW9uLgoKCSogY29udHJvbHMvbWVudS5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgbWFnaWMgbWVudSBpdGVtcyBpZCdzIHVzZWQgYnkgd2luZG93cyB3aGVuIGluc2VydGluZwoJdGhlIG1pbmltaXplL21heGltaXplL2Nsb3NlIGJ1dHRvbnMgaW4gdGhlIG1lbnUgYmFyIG9mIGFuIGFwcGxpY2F0aW9uLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBKYXNvbiBNY011bGxhbiA8am1jY0BvbnR2LmNvbT4KCUFkZHMgc3VwcG9ydCBmb3IgRU1SX1NUUkVUQ0hESUJJVFMgaW4gRU1Gcy4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBpbWFnZSBzaXplIGFuZCBsaW5lIHNpemUsIGFkZGVkIDhiaXQgY29sb3IvcGFsZXR0ZSBoYW5kbGluZy4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gdGhlIEphenogR3V5IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUZpeGVkIGZvcm1hdHRpbmcgb2YgY29kZQoJTm93IGNoYW5nZXMgdG8gZGlyZWN0b3J5IG9mIHByb2dyYW0gdG8gYmUgcnVuIGJlZm9yZSBzdGFydGluZyB3aW5lCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3VzZXIuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIENsZWFuZWQgdXAgdGhlIG1lc3NhZ2UgcXVldWUgd2hlbiBhIHRocmVhZCBleGl0IChidXQgbm90IHRoZSBwcm9jZXNzKS4KCS0gTW9kaWZpZWQgUVVFVUVfRGVsZXRlTXNnUXVldWUgdG8gZXhpdCBncmFjZWZ1bGx5ICh3aXRob3V0IGNyYXNoaW5nIFdpbmUpIGlmCgkgIHF1ZXVlIGxpbmsgbGlzdCBpcyBjb3JydXB0ZWQuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNvdW5kcyB3ZXJlIGN1dCBvZmYgZHVlIHRvIGludGVnZXIgb3ZlcmZsb3cuIEZpeGVkLgoKCSogaW5jbHVkZS93aW5kb3dzeC5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZGVkIHdpbmRvd3N4LmggZm9yIFdpbmVsaWIuCgpGcmkgRmViICA1IDE3OjQwOjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJPGV3aWxsQG5jYWwudmVyaW8uY29tPgoJQWRkZWQgY29tbW9uIGRpYWxvZ3MgdGVzdCBwcm9ncmFtLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5wb3MuaCwgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgbWFuYWdlbWVudCBhbmQgYWxsb2NhdGlvbiBvZiB0aGUgUEVSUVVFVUVEQVRBIHN0cnVjdHVyZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgYSBkdW1wIG9mIHRoZSBwYWxldHRlIGNyZWF0aW9uIGZsYWdzCgktIGNoYW5nZWQgcGFsZXR0ZSBjcmVhdGlvbiBjb2RlIGluIHZnYS5jIHRvIHByZXZlbnQgdXNlbGVzcyBlcnJvcgoJICBtZXNzYWdlCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBmaWxlcy9kcml2ZS5jLCB3aW5lLmluaToKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSB2ZmF0L3dpbjk1IGFzIGRlZmF1bHQuCgoJKiBpbmNsdWRlL3Zmdy5oLCBtdWx0aW1lZGlhL21zdmlkZW8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL21zdmZ3MzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZCBtc3ZpZGVvIC8gdmZ3LmgsIHVzZSBidWlsdGluIG1zdmZ3MzIuZGxsIGJ5IGRlZmF1bHQsIGFkZGVkCglhdmlpbmZvIGFuZCBhdmlwbGF5IHByb2dyYW1zLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvbnRpbnVlZCBoYWNrIHRvIHdpbjMyL2NvbnNvbGUuYywgc28gdGhhdCB0aGUgSURBIFBybyBEaXNhc3NlbWJsZXIKCXdvcmtzIGFnYWluLiBOZWVkcyBtdWNoIG1vcmUgd29yayBob3dldmVyLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUluY2x1ZGUgb2JqYmFzZS5oIGZvciBDb1Rhc2tNZW0qIHByb3RvdHlwZXMgKG9yIHdlIGdldCBXSU5BUEkKCXByb2JsZW1zKS4KCgkqIG9sZS9zdG9yYWdlMzIuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIFVMT05HIHRvIHN0YXRpYyBjb25zdCBPRkZTRVRfeHguCgpUaHUgRmViICA0IDE2OjQ1OjQwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglWYXJpb3VzIG1hbnBhZ2UgdXBkYXRlcywgaW5jbHVkaW5nIHRoZSBpbmNvcnJlY3Qgc3RhdGVtZW50IGFib3V0IGdsaWJjCglhbmQgY2xvbmUoKS4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglGaXggcG9pbnRlciB0byB0aGUgV2luZG93cyBEaXNhc3NlbWJsZXIgMzIuICBUaGFua3MgdG8gSGVyYmVydAoJUm9zbWFuaXRoIDxoZXJwQHdpbGRzYXUuaWR2LnVuaS1saW56LmFjLmF0PiBmb3Igc3VnZ2VzdGluZyB0aGlzLgoKCSogZGxscy9tc2FjbTMyL2RyaXZlci5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQW5vdGhlciB1c2FnZSBvZiBub24tcG9ydGFibGUgZnVuY3Rpb25zLi4uCgoJKiBtc2Rvcy9kb3NtZW0uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNvbWUgdmFsdWVzIG9mIHBCaW9zRGF0YSBhZGRlZC9maXhlZC4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL3dpZGdldHMuYywgZGVidWdnZXIvZGJnLnksIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3dpbmcuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUvZGlzcGxheS5oLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9nZGlvYmouYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgc29tZSBtb3JlIGNvZGUgdG8gdGhlIFgxMSBkcml2ZXIuCgoJKiB3aW5kb3dzL3R0eWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2Rlc2t0b3AuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MvdHR5ZHJ2L21vbml0b3IuYywgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy90dHlkcnYvd25kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVRUWSBkcml2ZXIgY2hhbmdlcy4KCgkqIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglYMTEgZHJpdmVyIGNoYW5nZXMuCgoJKiB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYywgdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jLCBpbmNsdWRlL3RzX3hmODZkZ2EuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHBtLmgsIGluY2x1ZGUvdHNfeHJlc291cmNlLmgsIGluY2x1ZGUvdHNfeHNobS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5vbi1YMTEgY29tcGlsZSBmaXggZm9yIGdlbmVyYXRlZCBjb2RlLgoKCSogaW5jbHVkZS9tb25pdG9yLmgsIHdpbmRvd3MvbXVsdGltb24uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBtb25pdG9yIGFic3RyYWN0aW9uLgoKCSogZ3JhcGhpY3MvdHR5ZHJ2Ly5jdnNpZ25vcmUsIGdyYXBoaWNzL3R0eWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgTWFrZWZpbGUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5ldyBUVFkgZHJpdmVyIGZvciBHREkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIHRoZSBncmFwaGljcy90dHlkcnYgZGlyZWN0b3J5LgoJLSBEb24ndCBzZWFyY2ggZm9yIHJlZW50cmFudCBYIHdoZW4gWCBkb2Vzbid0IGV4aXN0LgoJLSBBZGRlZCBjb25maWcgb3B0aW9ucyBIQVZFX0xJQlhYUE0KCS0gQWRkZWQgY2hlY2tzIGlmIHRoZSBoZWFkZXIgZmlsZXMgYWxzbyBleGlzdCBmb3Igc29tZSBsaWJyYXJpZXMKClR1ZSBGZWIgIDIgMTY6MTQ6MjMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGluY2x1ZGUvaW50ZXJmYWNlcy5oLCBvbGUvc2FmZWFycmF5LmMsIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVwbGFjZWQgcmVmZXJlbmNlcyB0byBpbnRlcmZhY2VzLmggYnkgd2luZS9vYmpfeHh4LmggaGVhZGVycyBpbnN0ZWFkCglzaW5jZSB0aGVzZSBoZWFkZXJzIGFscmVhZHkgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS9tc2Rvcy5oLCBtc2Rvcy9BdHRpYy9jZHJvbS5jLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50MmYuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIG9ic29sZXRlIG1zZG9zL2Nkcm9tLmMgZmlsZS4KCU1ha2UgdXNlIG9mIG5ldyBXaW5lIGludGVybmFsIENEIFJPTSBpbnRlcmZhY2UuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHRyYWNrcyBpbmRleGluZyBpbiBtY2ljZGEuYwoJTWFrZSB1c2Ugb2YgbmV3IFdpbmUgaW50ZXJuYWwgQ0QgUk9NIGludGVyZmFjZS4KCgkqIGluY2x1ZGUvY2Ryb20uaCwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9jZHJvbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOZXcgV2luZSBpbnRlcm5hbCBpbnRlcmZhY2UgZm9yIGhhbmRsaW5nIENEIFJvbSAoZXNwZWNpYWxseSBhdWRpbyBDRAoJUk9NKS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90cmVldmlldy5oLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCUNoYW5nZSBhIGZldyB0eXBlcyB0byBtYXRjaCB5b3Uta25vdy13aG8ncyBkZWNsYXJhdGlvbnMuCglIVFJFRUlURU0gaXMgYSBzdHJ1Y3QgX1RSRUVJVEVNIEZBUioKCUdldERJQml0cyBwYXNzZXMgYSBMUFZPSUQgZm9yIHRoZSBiaXRtYXAgZGF0YSwgbm90IExQU1RSLgoJQWRqdXN0bWVudCBvZiBXaW5lIEMgY29kZSB0byBtYXRjaCB0aGUgbmV3IHR5cGVzIGluY2x1ZGVkLgoKCSogbWlzYy9semV4cGFuZC5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBHRVRfTFpfU1RBVEUgbWFjcm8uCgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgc3R1YnMgZm9yIG5ldyBEaXJlY3REcmF3NCBhbmQgRGlyZWN0RHJhd1N1cmZhY2U0IG1ldGhvZHMuCgoJKiB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvQ0hBTkdFUzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUZpeGVkIHdyb25nIG9yZGVyIG9mIHJlc19pY28gYW5kIHJlc19ibXAgd2hpY2ggbXVzdCBiZSBpbiBSVF94eHggb3JkZXIuCgoJKiBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglyZXNsZW4gY291bGQgYmUgdXNlZCB1bmluaXRpYWxpc2VkIGluIEdldEZpbGVSZXNvdXJjZTMyIChmaXhlcyBzb21lCglzdHJhbmdlIFZlclF1ZXJ5VmFsdWUgY3Jhc2hlcykuCgoJKiBvbGUvbmxzL3N2ZS5ubHM6IEphbiBELiA8SmFuLkRqYXJ2QG1ib3gyMDAuc3dpcG5ldC5zZT4KCUFkZGVkIGRlZmluaXRpb24gZm9yIExPQ0FMRV9TR1JPVVBJTkcsIExPQ0FMRV9TTU9OR1JPVVBJTkcgYW5kCglMT0NBTEVfSUlOVExDVVJSRElHSVRTLgoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBQcmVzZXJ2ZSBFQVggaW4gVW5NYXBTTEZpeEFycmF5KCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVzIGxpdHRsZSBwb2ludGVyIGJ1ZyBpbiBEUEFfRGVsZXRlUHRyKCkuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1lbW9yeS9zdHJpbmcuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgS0VSTkVMLjQzNCAoVW5pY29kZVRvQW5zaSkuCgoJKiBmaWxlcy9kcml2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdldERpc2tGcmVlU3BhY2VFeDMyQSBjYW4gZ2V0IG51bGwgcG9pbnRlcnMgYW5kIHN0aWxsIG5vdCBjcmFzaC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglDbGVhciB1cCBhcmdzIHRvIFBTRFJWX0FkdmFuY2VkU2V0dXBEaWFsb2cuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUmVkdWNlIE1BWF9GT05UX1NJWkUgdG8gMTAwMC4KClN1biBKYW4gMzEgMTk6MDQ6MzEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgbG9hZGVyL25lL21vZHVsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgaW5wdXQgcXVldWUgdG8gc2VydmVyLXNpZGUgY29uc29sZSBvYmplY3QsCglyZWFkL3dyaXRlX2NvbnNvbGVfaW5wdXQgcmVxdWVzdHMsIGFuZCB1c2UgdGhlbSBmb3IKCVJlYWQvV3JpdGVDb25zb2xlSW5wdXQuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6IEdlb2ZmIENsYXJlIDxnd2NAcm9vdC5jby51az4KCUZpeCB0byBhbGxvdyBmb3IgcmVjdm1zZygpIHJldHVybmluZyBsZXNzIGRhdGEgdGhhbiBpcyBuZWVkZWQuCgoJKiBpbmNsdWRlL3Rvb2xoZWxwLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJQXR0ZW1wdCBhdCBmaXhpbmcgdGhlIE1BWF9QQVRIIG11bHRpcGxlIGRlZmluaXRpb24gcHJvYmxlbS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEphbiAzMSAxMDoxMzo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmeSBORV9GaW5kVHlwZVNlY3Rpb24gYW5kIE5FX0ZpbmRSZXNvdXJjZUZyb21UeXBlIHNvIGFzIHRvIGJlCgl1c2FibGUgYnkgdGhlIFZFUlNJT04gY29kZS4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEdldFJlc0RpckVudHJ5QSBmb3IgdXNlIGJ5IHRoZSBWRVJTSU9OIGNvZGUuCgoJKiBtaXNjL0F0dGljL3Zlci5jLCBtaXNjL01ha2VmaWxlLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIG9sZCBWRVIuRExMIGNvZGUuCgoJKiBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgVkVSU0lPTi5ETEwuIEJhc2VkIG9uIG9sZCBtaXNjL3Zlci5jLgoJLSBBY2Nlc3NpbmcgUEUgdmVyc2lvbiBpbmZvIHJlc291cmNlcyBzaG91bGQgd29yayBjb3JyZWN0bHkgbm93LgoJLSBGaXhlZCBtZW1vcnkgbGVha3MuCgktIENsZWFuIHNlcGFyYXRpb24gb2YgMTYtIGFuZCAzMi1iaXQgcGFydHMuCgktIE1pbm9yIGJ1Z2ZpeGVzLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGQgbmV3IHN1YmRpcmVjdG9yaWVzIGRsbHMvdmVyIGFuZCBkbGxzL3ZlcnNpb24uCgoJKiBpZjE2MzIvdmVyLnNwZWMsIGRsbHMvdmVyLy5jdnNpZ25vcmUsIGRsbHMvdmVyL01ha2VmaWxlLmluLCBkbGxzL3Zlci92ZXIxNi5jLCBpbmNsdWRlL3Zlci5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBWRVIuRExMLiBUaHVua3MgdXAgdG8gVkVSU0lPTi5ETEwuCgoJKiBtaXNjL2xzdHIuYzogUGFzY2FsIEN1b3EgPGN1b3FAdmlzYW4uaW5yaWEuZnI+CglJc0NoYXJBbHBoYTMyQTogdXNlIGxvb2stdXAgdGFibGUgZnJvbSBvbGUybmxzLmMuCgoJKiBvbGUvb2xlMm5scy5jOiBQYXNjYWwgQ3VvcSA8Y3VvcUB2aXNhbi5pbnJpYS5mcj4KCUxDTWFwU3RyaW5nMzJBOiBJbXBsZW1lbnRlZCBmbGFncyBOT1JNX0lHTk9SRU5PTlNQQUNFIGFuZAoJTk9STV9JR05PUkVTWU1CT0xTIGluIHN0cmluZyBtYXBwaW5nIG1vZGUuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglDcmVhdGUgWCB3aW5kb3cgZm9yIGNoaWxkIHdpbmRvd3MgcmVwYXJlbnRlZCB0byBiZSB0b3AgbGV2ZWwgd2luZG93cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBmb3IgUGF0aFF1YWxpZnkzMltBfFddLgoKCSogZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQmFicmlhbiBWaWt0b3IgPHZAdWx5c3Nlcy5zY2guYm1lLmh1PgoJLSBhZGRlZCBzdXBwb3J0IGZvciBDb2xvcktleWluZyBkdXJpbmcgYmxpdHMKCS0gbWlzY2VsbGFuZW91cyBmaXhlcwoKCSogZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS9udGRsbC5oLCByZWxheTMyL250ZGxsLnNwZWM6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAZ2FsYXh5LmFtcy5zdW55c2IuZWR1PgoJQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgTVJTVyBsb2Nrcy4KCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgbWlzc2luZyBpbmNsdWRlcyAodGhlIFBTUCBoYW5kbGluZyB3YXMgaW5jb3JyZWN0LCBhcyB0aGUKCU1aX1NVUFBPUlRFRCBkZWZpbml0aW9uIHdhcyBtaXNzaW5nKS4gQWRkZWQgYSBzaW1wbGUgaGFuZGxlciBmb3IKCWRpcmVjdCBjb25zb2xlIGlucHV0LCB3aGljaCBuZWVkcyB0byBiZSBpbXByb3ZlZC4KCgkqIGNvbnNvbGUvdHR5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU21hbGwgZml4LgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMaXN0IGhhbmRsZXMgV2FpdEZvck11bHRpcGxlT2JqZWN0cyBpcyB3YWl0aW5nIGZvciB3aGVuIHJ1bm5pbmcgd2l0aAoJLWRlYnVnbXNnICt3aW4zMi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIGZvciBHZXRTZWN1cml0eURlc2NyaXB0b3JDb250cm9sLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgZm9yIEdldFVzZXJPYmplY3RTZWN1cml0eS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBoYW5kbGluZyBvZiBSRUdfTVVMVElfU1ogYW5kIGZpeGVkIHNtYWxsIGJ1ZyBpbgoJUmVnU2V0VmFsdWUuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglFdmVyeSBFTV9HRVRMSU5FIHNlbmQgYmV0d2VlbiBhIDMyVyB0byBhIDMyQSB3aW5kb3cgcmV0dXJuZWQKCWluY29tcGxldGUgdmFsdWVzIGJlZm9yZSAodGhlIGZpcnN0IDIgY2hhcnMgd2hlcmUgY3V0IGF3YXkpLgoKCSogd2luZG93cy93aW5wb3MuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggdHlwbyBpbiBTZXRXaW5kb3dQb3MzMi4KClNhdCBKYW4gMzAgMTU6NTU6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvYnVpbHRpbjMyLmgsIG1pc2MvbWFpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbmFibGUvZGlzYWJsZSByZWxheTMyIGRlYnVnZ2luZyBvbiB0aGUgZmx5LiBTdGFydCBhcHAgd2l0aAoJLWRlYnVnbXNnICtyZWxheSBvciB3YXJuK3JlbGF5LiBTdWdnZXN0ZWQgYnkgSnVlcmdlbiBTY2htaWVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS93aW5lX2dsLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgTWVzYSdzIGhlYWRlciBmaWxlcy4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kc291bmQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIGVycm9yIG1lc3NhZ2VzLgoKCSogbWlzYy9jb21tZGxnLmM6IEJlcm5kIEhlcmQgPGhlcmRAaGVyZHNvZnQuY29tPgoJVXNlIHByb3BlciAxNi0+MzIgbWVzc2FnZSBjb252ZXJzaW9uIGluIEZJTEVETEdfQ2FsbFdpbmRvd1Byb2MuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogQmVybmQgSGVyZCA8aGVyZEBoZXJkc29mdC5jb20+CglTZXRQYXJlbnQgc2hvdWxkIGxpbmsgdGhlIHdpbmRvdyBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpc3QuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUluIFdpbmRvdyBTZXRXaW5kb3dQb3Mgd2l0aCBTV1BfSElERVdJTkRPVyBkb2VzIG5vdCByZW1vdmUKCXRoZSBmb2N1cyBmcm9tIHRoZSBmb2N1cyB3aW5kb3c7IFNob3dXaW5kb3cgd2l0aCBTV19ISURFIGRvZXMuCglTbyBtb3ZlIHRoZSBjb2RlIHRoYXQgZG9lcyB0aGlzIGZyb20gU2V0V2luZG93UG9zIHRvIFNob3dXaW5kb3cuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE5VTEwgaW4gbHN0cmNweSogKFdpbmRvd3MgdXNlcyByZWFsIGV4Y2VwdGlvbiBoYW5kbGVycykuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGp1cmFuQGNzZS5wc3UuZWR1PgoJRG9uJ3QgaW5zdGFsbCBpbmNsdWRlIGZpbGVzIHdoZW4gLS1kaXNhYmxlLWxpYiBpcyB1c2VkLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgV0lOTU0gam95KiAuc3BlYyBlbnRyaWVzLgoKCSogbXNkb3MveG1zLmM6IEFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVhNUyBmaXguCgoJKiBtc2Rvcy9kb3NtZW0uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNwZWxsaW5nIGZpeC4KCgkqIFJFQURNRTogQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRG9jIHVwZGF0ZS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTb21lIGludGVycnVwdCBlbmhhbmNlbWVudHMuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglpbXBsZW1lbnRlZCB0aW1lciBsYXRjaGluZwoJdHJhY2UgbWVzc2FnZSBmaXgKCXRlbXBvcmFyeSAiZml4IiBmb3IgTGludXgncyBjb2Fyc2UgdGltZXIgcmVzb2x1dGlvbgoKCSogaWYxNjMyL2NvbXBvYmouc3BlYywgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL2NvbXBvYmouYywgb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIHN0YXJ0dXAtc2h1dGRvd24gbWVjaGFuaXNtIGZvciB0aGUgQ09NIHN1YnN5c3RlbS4KCUltcGxlbWVudGVkIHRoZSBDbGFzcyBvYmplY3QgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbS4KCgkqIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZTogQWRkZWQgRmkucwoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmgsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPTEUgc3RydWN0dXJlZCBzdG9yYWdlLiBUaGUgbWFpbgoJZmVhdHVyZXMgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBhcmU6CgktIENhbiBvcGVuIHN0b3JhZ2VzIGNyZWF0ZWQgaW4gV2luZG93cy4KCS0gQ2FuIGNyZWF0ZSBuZXcgc3RvcmFnZXMgdGhhdCB0aGUgd2luZG93cyBsaWJyYXJpZXMgY2FuCgkgIHJlYWQuCgktIFByb3ZpZGVzIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUvb3Blbi9yZW1vdmUgYW5kCgkgIHJlbmFtZSBzdHJlYW1zIGFuZCBzdG9yYWdlcyBpbnNpZGUgdGhlIG1haW4gc3RvcmFnZSBvYmplY3QuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbWlzY2VtdS9tYWluLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlZmluZWQgUkVTVE9SRV9TSUdOQUxTIGJ5IGRlZmF1bHQgYW5kIGNhbGwgU0lHTkFMX0VtdWxhdG9ySW5pdAoJdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIgaW5zdGVhZC4gQWRkZWQgYSBmZXcgdHJhY2VzLiBGaXhlZCB0aGUKCSJNZW1vcnkgY29ycnVwdGlvbiAhIiBtZXNzYWdlIGluIERHQSBtb2RlLiBDb21tZW50ZWQgb3V0IGFuCgl1bm5lY2Vzc2FyeSBUU1hGODZWaWRNb2RlU2V0Vmlld1BvcnQgdGhhdCBjYXVzZWQgbXkgWCBzZXJ2ZXIgdG8KCWFjdCB1cCwgcmVseWluZyBvbiBUU1hGODZER0FTZXRWaWV3UG9ydCBpbnN0ZWFkLgoKCSogZ3JhcGhpY3MvcHNkcnYvdGV4dC5jLCBtc2Rvcy9pbnQyZi5jLCBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBmaWxlcy9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgbW9yZSB3YXJuaW5ncyBhbmQgYnVncyBmaXhlZC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglTbWFsbCB1cGRhdGUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdHJlZXZpZXcuaCwgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBUaGUgdXN1YWwgYnVnZml4ZXMuCgktIEJldHRlciB1bmljb2RlIHN1cHBvcnQgKG9ubHkgZGVmaW5lcywgY3VycmVudGx5KQoJLSBEcmFnICYgZHJvcCBpbXBsZW1lbnRlZC4KCS0gTFBTVFJfVEVYVENBTExCQUNLIHNob3VsZCB3b3JrIG5vdy4KCS0gRmlyc3Qgc3RhcnQgYXQgY3VzdG9tIGRyYXcgY29kZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IHRoZSBrZXlzdGF0ZSByZWNlaXZlZCBieSB0aGUgV01fWEJVVFRPTlVQIGFuZAoJV01fWEJVVFRPTkRPV04gbWF0Y2hlcyB0aGUgbWVzc2FnZS4gSW4gWCwgdGhlIGtleXN0YXRlIGlzIGNoYW5nZWQKCWFmdGVyIHRoZSBtZXNzYWdlIGlzIHByb2Nlc3NlZC4gIEluIFdpbmRvd3MsIGl0IGlzIGNoYW5nZWQgYmVmb3JlLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2MgdXBkYXRlcy4KCgkqIHdpbjMyL2ZpbGUuYzogQmVyZW5kIFJlaXRzbWEgPGJlcmVuZCBhdCBhc3NldC1jb250cm9sLmNvbT4KCVNldEZpbGVBdHRyaWJ1dGVzMzJBIGNoYW5nZWQgdG8gbWFrZSBmaWxlIHdyaXRlYWJsZSB3aGVuCglGSUxFX0FUVFJJQlVURV9SRUFET05MWSBpcyBub3Qgc2V0LgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGluY2x1ZGUvY29uc29sZS5oLCBtc2Rvcy9pbnQxMC5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglQcmVsaW1pbmFyeSBjb2xvciBjb25zb2xlIHN1cHBvcnQuCgoJKiBkb2N1bWVudGF0aW9uL2xhbmd1YWdlcywgcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9jbG9jay9GaS5yYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9DaGFuZ2VMb2csIHByb2dyYW1zL25vdGVwYWQvRmkucmMsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCByZXNvdXJjZXMvc3lzcmVzX0ZpLnJjOgoJSnVra2EtUGVra2EgSWl2b25lbiA8amlpdm9uZW5AcG9zZWlkb24uY3MuaHV0LmZpPgoJVXBkYXRlZCBGaW5uaXNoIGxhbmd1YWdlIHN1cHBvcnQuCgpGcmkgSmFuIDI5IDE1OjEyOjExIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgbXVsdGltZWRpYS9tc3ZpZGVvLmMsIG9sZS9ndWlkLmMsIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmMsIHJlbGF5MzIvbXN2ZnczMi5zcGVjLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL29sZWF1dG8uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZCBtc3ZpZGVvLiBOZXcgcHJvZ3JhbSAnaWNpbmZvIFstYWJvdXRdIFstY29uZmlndXJlXScgdG8KCXF1ZXJ5IGluc3RhbGxlZCAod2luMzIpIGNvbXByZXNzb3JzLiBTdGFydGVkIG9uIEFWSUZJTEUgc3VwcG9ydC4KClRodSBKYW4gMjggMTc6NTY6MTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2JpbmRjdHguYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlMi5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEZpbGVNb25pa2VyLCBJdGVtTW9uaWtlciBhbmQgQmluZEN0eAoJY2xhc3Nlcy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sOgoJTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglJbXBsZW1lbnRlZCB0aGUgc3ltYm9sZmlsZSBjb21tYW5kIChhcyBtZW50aW9uZWQgYnkgdGhlIGhlbHAKCWNvbW1hbmQpLiBUaGlzIHJlYWRzIGEgc3ltYm9sIGZpbGUgaW4gdGhlIGZvcm1hdCBnZW5lcmF0ZWQgYnkgbm0uCgoJKiBtdWx0aW1lZGlhL2RwbGF5LmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFNtYWxsIGJ1ZyBmaXguCgktIEFkZGVkIGRpcmVjdCBwbGF5IGFzY2lpIGludGVyZmFjZXMuCgktIEZpeGVkIHVwIHRoZSBRdWVyeUludGVyZmFjZSBmb3IgZHBsYXkgYW5kIGRwbGF5bG9iYnkgdG8gaGFuZGxlIGFsbCBjYXNlcy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgRklMRV9WSUVXIHN0cnVjdCBpbml0aWFsaXNhdGlvbi4KCgkqIGluY2x1ZGUvZG9zZXhlLmg6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBub24taTM4NiBjb21waWxlLgoKCSogZ3JhcGhpY3MvdmdhLmMsIG1zZG9zL2RwbWkuYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL21taW8uYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUNvbW1lbnRlZCBvdXQgdW51c2VkIHZhcmlhYmxlcyB0byBwcmV2ZW50IG5lZWRsZXNzIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9kZGVtbC5oLCBtaXNjL2RkZW1sLmM6CglLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJMXN0IGN1dCBpbXBsZW1lbnRhdGlvbiBvZiBEZGVJbml0aWFsaXplMzJXIGFuZCBzdXBwb3J0aW5nIGNvZGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNYXR0aGV3IEJlY2tlciA8bWJlY2tlckBnbGFzc2NpdHkubmV0PgoJRG9jdW1lbnRhdGlvbiBzdGFuZGFyZGl6YXRpb25zLgoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBNYWRlIHRoZSBtZXNzYWdlIHF1ZXVlIGFjY2VzcyB0byBiZSB0aHJlYWQgc2FmZS4gKFVzaW5nIHR3byBuZXcKCSAgZnVuY3Rpb25zIHRvIGFjY2VzcyB0aGUgbWVzc2FnZSBxdWV1ZSwgUVVFVUVfTG9jaygpLCBRVUVVRV9VbmxvY2soKQoJICBpbnN0ZWFkIG9mIEdsb2JhbExvY2sxNigpKS4KCS0gRml4ZWQgUVVFVUVfRHVtcFF1ZXVlICh1c2VkIGJ5ICJpbmZvIHF1ZXVlIDxoYW5kbGU+IiB3aXRoIHRoZQoJICB3aW5lLWRlYnVnZ2VyKS4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS93aW5jb24uaCwgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvaW1tLmMsIG1pc2MvbHpleHBhbmQuYywgbXNkb3MvaW50MjEuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9udGRsbC9ydGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYSBsb3Qgb2Ygd2FybmluZ3MgZm9yIHBvc3NpYmxlIHByb2JsZW1zLgoKCSogbWlzYy9jb21tLmM6IEhlcmJlcnQgUm9zbWFuaXRoIDxoZXJwQHdpbGRzYXUuaWR2LnVuaS1saW56LmFjLmF0PgoJRml4ZWQgdHlwby4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gdGhlIEphenogR3V5IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUZpeGVkIHZhcmlvdXMgYnVncy4KCU1hZGUgbmV3YmllIG1vZGUgZWFzaWVyLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIEdldEljb25JbmZvMTYgKC5zcGVjLElDT05JTkZPIHN0cnVjdCBpcyBkaWZmZXJlbnQgZm9yIFdpbjE2L1dpbjMyKS4KCgkqIGNvbnNvbGUvbmN1cnNlcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN3aXRjaCBuY3Vyc2VzLmgvY3Vyc2VzLmggaW5jbHVkZSAod29ya3MgYmV0dGVyIGZvciBGcmVlQlNEKS4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgbG9hZGluZyBvZiB3aW4zMiBkcml2ZXJzLgoKVHVlIEphbiAyNiAxNzoyOTo0OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvcHJvZmlsZS5jOiBEb24ndCBhYm9ydCBQUk9GSUxFX0dldFNlY3Rpb24gb24gZW1wdHkga2V5cy4KCgkqIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRlbXBvcmFyeSAjaWYgMCdlZCBwYXJ0IGZvciBidWlsdGluIG1vZHVsZXMgaW4gTVNBQ00gdG8gbWFrZSBpdAoJY29tcGlsZSB3aXRoIHRoZSBwYXRjaCBmb3IgbG9hZGFibGUgZHJpdmVycy4KCgkqIGluY2x1ZGUvZHJpdmVyLmgsIHJlbGF5MzIvd2lubW0uc3BlYywgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBkcml2ZXJzIGluIFdpbmUuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIHRoZSBKYXp6IEd1eSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglBIHBlcmwgc2NyaXB0IHRvIHByb2R1Y2UgYSBidWcgcmVwb3J0IHdpdGggbGl0dGxlIGhhc3NsZS4KCgkqIGdyYXBoaWNzL2Rpc3BkaWIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCAoZHVtbXkpIERlYXRoL1Jlc3VycmVjdGlvbiBjYWxscyB0byBEaXNwbGF5RGliLgoKCSogbWlzYy9semV4cGFuZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG9jYXRlIGEgRE9TIGhhbmRsZSBpZiB3ZSBvcGVuIGEgbm9ybWFsIGZpbGUgd2l0aCBMWk9wZW5GaWxlMTYuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgZGVwdGggY29udmVyc2lvbiByb3V0aW5lcyAob25seSA4YnBwIC0+IDE2IGJwcCBmb3Igbm93KQoJLSBhZGRlZCBzdXBwb3J0IG9mIERFUFRIX0ZJTEwgZm9yIEJsaXRzCgktIGFkZGVkIHNvbWUgZmxhZ3MgaW4gR2V0Q2FwcyB0byBnZXQgc29tZSBnYW1lcyB3b3JraW5nCgoJKiBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgcmVsYXkzMi91c2VyMzIuc3BlYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIEdldEljb25JbmZvMTYgLT4gY2FsbCB0byBHZXRJY29uSW5mbzMyLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOiBDb21tZW50ZWQgb3V0IEVYRUNfU0VSVkVSCgoJKiBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJMyBtaXNzaW5nIFdJTkFQSSBhZGRlZC4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCBzb21lIHRyZWV2aWV3IHJlbGF0ZWQgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU0hCcm93c2VGb3JGb2xkZXIoKSBkaWFsb2cuCgoJKiBkZWJ1Z2dlci9tc2MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvIGluIHR5cGUgKHJlbW92ZWQgcXVpdGUgYSBmZXcgd2FybmluZ3MpLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIEdldFNlY3VyaXR5RGVzY3JpcHRvck93bmVyL0dyb3VwLCBSZXZlcnRUb1NlbGYgc3R1YnMuCglSZXR1cm4gTlVMTCBmcm9tIE9wZW5UaHJlYWRUb2tlbi4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgZW5kbGVzc2x5IGxvb3AgaW4gQ09OU09MRV9nZXRfaW5wdXQgYWZ0ZXIgRU9GLgoJQ3JlYXRlIHh0ZXJtIGV2ZW4gaWYgc3RkaW4gaXMgbm90IGEgdGVybWluYWxoYW5kbGUuCglTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb246IE9ubHkgbWFrZSBjb21wbGV4IGNvbnNvbGUgb24gcm93IGNoYW5nZSwKCWlnbm9yZSBpbnRlcmxpbmUgcG9zaXRpb25pbmcgKHNvIHRoZSBjeWd3aW4gY21kbGluZSB0b29scyBkbyBub3QKCWNyZWF0ZSB4dGVybXMgdW5uZWNlc3NhcnkpCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTWFrZSBzdXJlIERydkdldFByaW50ZXJEYXRhIHJldHVybnMgdGhlIGNvcnJlY3QgZGF0YSBpZiBjYkRhdGEgPD0gMQoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIENoYW5naW5nIE1FU1NBR0VRVUVVRSBzdHJ1Y3R1cmUgYWNjb3JkaW5nIHRvIFVscmljaCBwcm9wb3NpdGlvbi4KCS0gT25lIG1lc3NhZ2UgcXVldWUgZm9yIGV2ZXJ5IHRocmVhZCBuZWVkaW5nIGl0LgoJLSBNZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBxdWV1ZSBhcmUgbm93IHN0b3JlZCBpbiBhIGxpbmtlZCBsaXN0CgktIE1lc3NhZ2VzIGFyZSBhbGxvY2F0ZWQgaW4gdGhlIHN5c3RlbSBoZWFwLgoJLSBNZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBxdWV1ZSBhcmUgMzIgYml0cyAoTVNHMzIpLgoJLSBBbGwgcmVhZC93cml0ZSBvcGVyYXRpb25zIHJlZ2FyZGluZyBtZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBxdWV1ZSBhcmUKCSAgdGhyZWFkIHNhZmUuCgpTdW4gSmFuIDI0IDE5OjE0OjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgaW5jbHVkZS9mbGF0c2IuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzZXZlcmFsIGJ1Z3MgYW5kIHR5cG9zLgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglVcGRhdGVzIGFuZCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgaW5jbHVkZS9jb21tY3RybC5oLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTmV3IGRyYWcgbGlzdCBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBwb2ludGVyIGJ1Z3MgaW4gRFBBX0luc2VydFB0cigpIGFuZCBEUEFfRGVsZXRlUHRyKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGluY2x1ZGUvcHJvZ3Jlc3MuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBXTV9bRy9TXUVURk9OVCBoYW5kbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFdNX0NPTU1BTkQgYW5kIFdNX05PVElGWSBoYW5kbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHJlZHJhdyBidWcgZm9yIHRyYWNraW5nIHRvb2x0aXBzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc29tZSBtZXNzYWdlcyB0byB0aGUgcmViYXIgY29udHJvbC4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEdlb2ZmIENsYXJlIDxnd2NAcm9vdC5jby51az4KCVNldmVyYWwgaW50ZXJuYWwgZnVuY3Rpb25zIHdvbid0IGNvbXBpbGUgd2hlbiB0aGUgY29uZGl0aW9uYWwKCSNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pCgljb21lcyBvdXQgZmFsc2UuICBJIG1vdmVkIHRoZSBjb25kaXRpb25hbHMgYXJvdW5kIHNvIHRoYXQKCXRoZSBmaWxlIHdvdWxkIGF0IGxlYXN0IGNvbXBpbGUuICBOb3Qgc3VyZSBpZiBpdCBkb2VzIHRoZQoJcmlnaHQgdGhpbmcgb24gbm9uLWxpbnV4L0ZyZWVCU0QvTmV0QlNEIHN5c3RlbXMuCgoJKiBtaXNjL3Rvb2xoZWxwLmM6IEdlb2ZmIENsYXJlIDxnd2NAcm9vdC5jby51az4KCU1vdmVkIHByb2Nlc3MuaCBoaWdoZXIgdXAgdGhlIGluY2x1ZGUgbGlzdCwgdG8gYXZvaWQgYSBwcm9ibGVtIHdpdGgKCSJFUlIiIGJlaW5nIHJlZGVmaW5lZCBpbiBzeXMvcmVnc2V0LmguCgoJKiBtaXNjL2NvbW0uYzogR2VvZmYgQ2xhcmUgPGd3Y0Byb290LmNvLnVrPgoJVGhlIEI1NzYwMCBhbmQgQjExNTIwMCBzeW1ib2xzIGFyZSBub3QgZGVmaW5lZCBpbiBVbml4d2FyZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglDaGFuZ2UgU1dfPz8/IG9wdGlvbnMgb24gbGlzdCBib3ggc2Nyb2xsaW5nIHNvIHRoYXQgdGhleSBtYXRjaCB3aGF0CglXaW5kb3dzIGRvZXMuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgRE9TIGhhbmRsZSBhbGxvY2F0aW9uIHNsaWdodGx5LCB0byBmaXggcG90ZW50aWFsIG1lbW9yeQoJbGVha3MgYW5kIGxvc3QgaGFuZGxlcy4gQWxzbyByZW1vdmVkIHNvbWUgdXNlbGVzcyBpbml0IGNvZGUuCgoJKiBncmFwaGljcy9wc2Rydi9hZm0uYywgZ3JhcGhpY3MvcHNkcnYvdGV4dC5jLCBpZjE2MzIvZHVtbXkuYywgaWYxNjMyL2dkaS5zcGVjLCBtaXNjL3ByaW50ZHJ2LmM6CglOaWNrIEhvbGxvd2F5IDxOaWNrLkhvbGxvd2F5QGFsZmllLmRlbW9uLmNvLnVrPgoJSW50ZXJuYWwgUG9zdFNjcmlwdCBwcmludGVyIGRyaXZlciBpbXByb3ZlbWVudHMuCgoJKiBjb250cm9scy9lZGl0LmM6IEdlcmFyZCBQYXRlbCA8Ry5QYXRlbEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBFRElUX0VNX0NoYXJGcm9tUG9zIHRvIHJldHVybiBsaW5lIG51bWJlci4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZyZWUgdGhlIHByaXZhdGUgZGF0YSBwb2ludGVyLCBUSEVOIHNldCBpdCB0byBOVUxMLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBXSU5BUEkuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9zYWZlYXJyYXkuYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIFNhZmVBcnJheSBmYW1pbHkgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIHN0dWIgZm9yIFNldFRocmVhZExvY2FsZS4KCgkqIG9iamVjdHMvdGV4dC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRmluaXNoZWQgR2V0VGV4dENoYXJzZXRJbmZvIHJvdXRpbmUuCgoJKiBvbGUvbmxzL2VudS5ubHMsIG9sZS9vbGUybmxzLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4ZWQgRklYTUUgaW4gRW51bVRpbWVGb3JtYXRzMzJXCglBZGRlZCBzdXBwb3J0IGZvciBGT05UU0lHTkFUVVJFIGluIEdldExvY2FsZUluZm8zMkEgYW5kIHVwZGF0ZWQKCUdldExvY2FsZUluZm8zMlcuCgoJKiBkb2N1bWVudGF0aW9uL2ludGVybmFsLWRsbCwgZG9jdW1lbnRhdGlvbi9zaGVsbDMyLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJUGFzY2FsIEN1b3EgPFBhc2NhbC5DdW9xQGlucmlhLmZyPgoJRml4ZWQgdHlwb3MuCgoJKiBkZWJ1Z2dlci9tc2MuYzogU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBzb3VyY2UgbGluZSBtYXRjaGluZyBmb3IgZnVuY3Rpb25zIGluIERFQlVHX1Byb2Nlc3NDb2ZmRGVidWc7CglzZWFyY2hpbmcgZm9yIERCRyBhbmQgUERCIGZpbGVzLgoKCSogZGVidWdnZXIvaGFzaC5jOiBTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeCBmb3IgZmlsZXMgd2hpY2ggZG8gbm90IGNvbnRhaW4gZXhwb3J0cyAoZmcsIEVYRSkgdG8gZ2V0IHByb2Nlc3NlZAoJZm9yIGRlYnVnIGluZm9ybWF0aW9uLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmMsIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEtFUk5FTC42MjEgKENCQ2xpZW50VGh1bmtTTEV4KS4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9pbmZvLmMsIGluY2x1ZGUvbWFpbi5oLCBtaXNjL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb3cgc3dpdGNoaW5nIG9mZi9vbiBvZiBkZWJ1Z21zZ3MgaW4gdGhlIGRlYnVnZ2VyLgoKCSogbG9hZGVyL21haW4uYywgbWlzY2VtdS9pbnN0ci5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MTUuYywgaW5jbHVkZS9taXNjZW11Lmg6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBJbnQgMHgxNS8weGMwOiBCSU9TIC0gR0VUIENPTkZJRyBhbmQgc29tZSBvdGhlciBCSU9TCglkYXRhLgoKU2F0IEphbiAyMyAxNDoxNToxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9sc3RyLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIFdJTjE2X0NhbGxNc2dGaWx0ZXIzMiwgV0lOMTZfRGlzcGF0Y2hNZXNzYWdlMzIsCglEcmF3QW5pbWF0ZWRSZWN0czE2IChzdHViKSwgRm9ybWF0TWVzc2FnZTE2LCBXSU4xNl9HZXRNZXNzYWdlMzIsCglXSU4xNl9QZWVrTWVzc2FnZTMyIGFuZCBXSU4xNl9UcmFuc2xhdGVNZXNzYWdlMzIuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9pbnRlcmZhY2VzLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgbWlzYy9zaGVsbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHNvbWUgZml4ZXMsIGNsZWFuZWQgdXAgaW5jbHVkZXMsIGZpeGVkIGxlYWtzCgktIGNsZWFuIERsbFJlZmVyZW5jZUNvdW50LCBiZXR0ZXIgRGxsTWFpbigpCgktIGR5bmFtaWNhbGx5IGxpbmtpbmcgTG9va3VwSWNvbklkRnJvbURpcmVjdG9yeUV4MzIgYW5kCgkgIENyZWF0ZUljb25Gcm9tUmVzb3VyY2VFeDMyIHRvIFVTRVIzMgoJLSBtb3ZlZCBndWlkJ3MgaW5zdGFuY2VzIHRvIG5ldyBmaWxlIHNoZWxsZ3VpZC5jCgktIGltcGxlbWVudGVkICBTaGVsbEV4ZWN1dGVFeDMyVwoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvY29tcG9iai5jLCBvbGUvZ3VpZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCB0aGUgaW5zdGFuY2UgY3JlYXRpb24gb2YgR1VJRCdzIHRvIGEgbmV3IGZpbGUuCglTaXplIG9mIGNvbXBvYmoubyBnb2VzIGRvd24gdG8gMS8zOyBzaG91bGQgcHJldmVudCBtb3JlIHNpZzExJ3MuCgoJKiBpbmNsdWRlL2luaXRndWlkLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUgdG8gaW5zdGFudGlhdGUgR1VJRCdzIG1zLWxpa2UuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXQgcHJpdmF0ZSBkYXRhIHN0cnVjdCB0byBOVUxMIHRvIGV4cG9zZSBwcm9ibGVtcyBpbiBvdGhlciBjb2RlCgliZXR0ZXIuIEZpeGVzIHRoZSBYVW5tYXBXaW5kb3cgcHJvYmxlbXMgcmVwb3J0ZWQgYnkgcmVwbGFjaW5nIHRoZW0KCXdpdGggTlVMTCBwdHIgZGVyZWZlcmVuY2VzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Zy1tc2dzLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZywgZG9jdW1lbnRhdGlvbi9pbnRlcm5hbC1kbGwsIGRvY3VtZW50YXRpb24vaW9wb3J0LXRyYWNlLWhpbnRzLCBkb2N1bWVudGF0aW9uL3dpbmVfb3MyOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglGaXhlZCB0eXBvcy4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9kb3MvZG9zdm0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRE9TIHByb2dyYW1zIHVzZSBoYW5kbGVzIDAtNCB3aXRob3V0IG9wZW5pbmcvY2xvc2luZyBhbnkgb2YgdGhvc2UKCWhhbmRsZXMgZmlyc3QuIFNwbGl0IHVwIEluaXQgZnJvbSBBbGxvY0Rvc0hhbmRsZSBhbmQgY2FsbCBpdCBmcm9tCgl0aGUgRE9TVk0uCgoJKiBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgY29uZmlndXJlLmluLT5jb25maWd1cmUgcnVsZSAod2UgbWlnaHQgbm90IGhhdmUgYXV0b2NvbmYpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgInVzZXItZnJpZW5kbHkiIHdhcm5pbmcgZm9yIG1pc3NpbmcgWC4KCgkqIGluY2x1ZGUvb2xlLmg6IEZpeGVkIEdldE9iamVjdCBtYWNybyBwcm9ibGVtLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0M0Q6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gdXBkYXRlZCBkb2N1bWVudGF0aW9uIHRvIGJlIGluIHN5bmMgd2l0aCBjdXJyZW50IGNvZGUKCgkqIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gdmFyaW91cyB3YXJuaW5nIGFuZCBidWcgZml4ZXMKCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIG1vcmUgdGV4dHVyZSBmb3JtYXRzIHVzaW5nIE9wZW5HTCdzIHBhY2tlZCBwaXhlbCBmb3JtYXRzCgoJKiBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGluY2x1ZGUvZDNkLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYmV0dGVyIHN1cHBvcnQgZm9yIEV4ZWN1dGVCdWZmZXJzCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gY29ycmVjdGVkIGJ1ZyBpbiBaIEJ1ZmZlciBhbGxvY2F0aW9uCgktIHB1dCBWSURFT01FTU9SWSBmbGFnIGZvciBhbGwgcHJpbWFyeSBzdXJmYWNlcwoJLSBwdXQgc29tZXRoaW5nIGluIGEgc3VyZmFjZSBhZnRlciBhIFJlbGVhc2VEQwoKCSogbWlzYy9wcmludGRydi5jOiBNb3J0ZW4gV2VsaW5kZXIgPHRlcnJhQGRpa3UuZGs+CglNaXNzaW5nIFdJTkFQSS4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBOaWNsYXMgS2FybHNzb24gPG5rYXJsc3NvQHJhLmFiby5maT4KCVJlbW92ZWQgRFRfU0lOR0xFTElORSBhbmQgRFRfTk9DTElQIHN0eWxlcyBmb3IgU1NfTEVGVE5PV09SRFdSQVAuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgb3BlbmVkIGVuaG1ldGFmaWxlIGZvciBtYWdpYyB2YWx1ZXMuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBSb2IgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJRml4ZWQgZHVwbGljYXRlIHNvdW5kIGJ1ZmZlciBoYW5kbGluZy4gVXBkYXRlZCBzdGF0dXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZ1bmN0aW9ucyAgbG1lbWNweW5BdG9XIGFuZCAgbG1lbWNweW5XdG9BIGZvciBjb252ZXJ0aW5nCglSRUdfTVVMVElfU1ogKGluY2x1ZGluZyBcMHgwMCkKCUJldHRlciBkZWJ1ZyBvdXRwdXQgZm9yIFJFR19CSU5BUlkgYW5kIFJFR19NVUxUSV9TWgoJUmV3cml0dGVuIFJlZ1F1ZXJ5VmFsdWVFeDMyW0F8V10KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIENyZWF0ZUhhbGZ0b25lUGFsZXR0ZS4KCUZpeGVkIDMgY3Jhc2hlcyAoMSByZWFsLCAyIHBvdGVudGlhbCkuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGlmMTYzMi9zaGVsbC5zcGVjLCBpbmNsdWRlL3NoZWxsLmgsIG1pc2Mvc2hlbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRXh0cmFjdEljb25FeDE2LCBhZGRlZCBzb21lIGNvbnN0cyB0byBFeHRyYWN0SWNvbkV4Ki4KCgkqIG9sZS9vbGUyLmMsIG9sZS9vbGVjbGkuYywgcmVsYXkzMi9vbGUzMi5zcGVjLCBpbmNsdWRlL3dpbmVycm9yLmg6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglEb0RyYWdEcm9wIGFuZCBPbGVJc0N1cnJlbnRDbGlwYm9hcmQgc3R1YiBpbXBsZW1lbnRhdGlvbi4KCgkqIG9sZS90eXBlbGliLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2UgTG9hZFR5cGVMaWIgc3R1YiByZXR1cm4gZmFpbHVyZSBpbnN0ZWFkIG9mIHN1Y2Nlc3MuCgpGcmkgSmFuIDIyIDE3OjA5OjQ2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2FjY2VsZXJhdG9ycywgaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci9yZXNvdXJjZS5jLCB3aW5kb3dzL2lucHV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGFjY2VsZXJhdG9yIGhhbmRsaW5nLiBBQ0NFTDE2IHVzZWQgaW50ZXJuYWwsIEFDQ0VMMzIgZm9yIFdpbjMyCglBUEksIFBFX0FDQ0VMIGZvciBQRSBBY2NlbGVyYXRvcnMuIFNlZSBkb2N1bWVudGF0aW9uL2FjY2VsZXJhdG9ycy4KClRodSBKYW4gMjEgMTQ6MDU6MTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGRlbWwuaCwgbWlzYy9kZGVtbC5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJVGhlcmUgd2VyZSB0d28gY29waWVzIG9mIHRoZSBEZGVDbXBTdHJpbmdIYW5kbGVzIChBIGFuZCBXKSBhbmQgdGhhdAoJQVBJIGRvZXMgbm90IGhhdmUgMiB2ZXJzaW9ucy4gUmVtb3ZlZCB0aGUgZXh0cmEgdmVyc2lvbi4KCldlZCBKYW4gMjAgMTQ6NTQ6MDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBQYWJsbyBTYXJhdHhhZ2EgPHBhYmxvLnNhcmFjaGFnYUBwaW5nLmJlPgoJU21hbGwgcGF0Y2guCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2luMzIgY29uc29sZSBuZWVkcyBTWU5DSFJPTklaRSBhY2Nlc3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgY29uc29sZS9uY3Vyc2VzLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvY29uc29sZS5oLCBtaXNjL3BvcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJYXV0b2NvbmY6IGFkZGVkIGNoZWNrcyBmb3IgbGliaW8uaCwgZWxmLmgsIGN1cnNlcy5oLG5jdXJzZXMuaCBhbmQKCWZpeGVkIGluY2x1ZGVycy4KCgkqIG9sZS9vbGUybmxzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTENNYXBTdHJpbmdBOiBpZiBkc3RsZW4gaXMgaW5zdWZmaWNpZW50LCByZXR1cm4KCUVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIgKHZlcmlmaWVkKS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHNtYWxsIGZpeGVzIHRvIGVuaG1ldGFmaWxlcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgY2FsbCBvd25lcmRyYXcgZm9yIGludmFsaWQgaXRlbXMgKGVtcHR5IGZvY3VzcmVjdHMpLgoJRml4ZXMgRXVkb3JhIDE2Yml0IGVtcHR5IEluYm94IHByb2JsZW0uCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBOQ19EcmF3TWF4QnV0dG9uOTUgYW5kIE5DX0RyYXdNaW5CdXR0b245NSBmdW5jdGlvbnMuIFJld3JvdGUKCXRoZXNlIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIGxvZ2ljIGFzIHRoZSBOQ19EcmF3Q2xvc2VCdXR0b24gZnVuY3Rpb24uCgoJKiB3aW5kb3dzL3dpbi5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCVJlcGFyZW50aW5nIGEgd2luZG93IHdpdGggU2V0UGFyZW50IGluIFdpbmRvd3Mgc2hvdWxkIGNhdXNlIHRoZSBjaGlsZAoJd2luZG93IGJlaW5nIHJlLXBhcmVudGVkIHRvIGJlIG1vdmVkIHVwIHRvIHRoZSB0b3Btb3N0IGluIHRoZSB6LW9yZGVyLAoJYW5kIFdNX1dJTkRPV1BPU0NIQU5HSU5HIGFuZCBXTV9XSU5ET1dQT1NDSEFOR0VEIG1lc3NhZ2VzIHRvIGJlIHNlbnQuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJVXNlIGV4dGVybmFsIERpcmVjdFBsYXkgRExMcyBieSBkZWZhdWx0LgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBwYXNzaW5nIHRhc2sgaGFuZGxlcyB0byBHZXRUaHJlYWRRdWV1ZSgpIGFuZCBTZXRGYXN0UXVldWUoKS4KCgkqIHdpbmRvd3MvdXNlci5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhhbmRsZSAoY29uc29sZSkgYXBwbGljYXRpb25zIHRoYXQgbmV2ZXIgY3JlYXRlZCBhIHF1ZXVlIGNvcnJlY3RseQoJaW4gVVNFUl9BcHBFeGl0KCk7IGNhbGwgSW5pdFRocmVhZElucHV0KCkgaW4gSW5pdEFwcCgpLgoKCSogd2luZG93cy9ob29rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJLSBGaXhlZCBjcmVhdGlvbiBvZiBtZXNzYWdlIHF1ZXVlIGluIGhvb2sgQVBJIHJvdXRpbmVzLgoJLSBTb21lIHByZXBhcmF0aW9ucyBmb3IgdGhyZWFkLWxvY2FsIG1lc3NhZ2UgcXVldWVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGVjayBtb2R1bGUgbmFtZSBsZW5ndGggaW4gTW9kdWxlTmV4dCgpLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIENhbGxvdXQgdG8gY2FsbCBSZWRyYXdXaW5kb3czMi4KCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xlYXIgRE9TIGV4dGVuZGVkIGVycm9yIG9ubHkgZm9yIGZ1bmNzID49MHgyZiAodGhhbmtzIHRvIERhdmUKCVBpY2tsZXMpLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVbmlmaWVkIHBhbGV0dGUgY3JlYXRlLCBkbyBhbGxvY2F0ZSBjb2xvcmNlbGxzIG9uIGluaXQgZm9yIERHQS4KClR1ZSBKYW4gMTkgMTc6NDg6MjUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvcHJvY2Vzcy5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgbWVtb3J5L3ZpcnR1YWwuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvdnhkLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZGV2aWNlLmg6CglIYWNrZWQgc2VydmVyLXNpZGUgZGV2aWNlIHN1cHBvcnQKCUFkZGVkIHVzZXIgQVBDcyBzdXBwb3J0LgoJTWFueSBjaGFuZ2VzIHRvIHRoZSB4dGVybSBjb25zb2xlIHRvIG1ha2UgdXNlIG9mIHRoZSBzZXJ2ZXIgKG5vdAoJZmluaXNoZWQgeWV0KS4KCU1vdmVkIHNvbWUgb3RoZXIgc21hbGwgc3R1ZmYgdG8gdGhlIHNlcnZlci4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHM6IEFkZGVkIGxvbmcgdHlwZSBmb3JtYXQuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9kZXZpY2UuYzoKCUFkZGVkIHNlcnZlci1zaWRlIGRldmljZSBzdXBwb3J0IChvbmx5IGEgaGFjayBmb3Igbm93KS4KClN1biBKYW4gMTcgMTc6NDg6NDggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIENoYW5nZUxvZzoKCVJlY292ZXJlZCBsb2cgZW50cmllcyBmcm9tIENWUyBtYWlsaW5nIGxpc3QuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIF9hbGxvY2FfcHJvYmUgYW5kIF9jaGtzdGsgKG1vc3RseSBkb25lIGJ5IFVscmljaCBXZWlnYW5kKS4KCgkqIGZpbGVzL2ZpbGUuYwoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgRVJST1JfV1JJVEVfUFJPVEVDVCB0b28gaW4gcmVhZG9ubHkgZmFsbGJhY2sgb3Blbi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBHZXRTZWN1cml0eURlc2NyaXB0b3JMZW5ndGggc3R1YiBmb3IgcmVnZWR0MzIuZXhlLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGZpbGVzL01ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgIiIgYXJvdW5kIC1EIGRlZmluZXMgZm9yIHBhdGhzIHdpdGggc3BhY2VzIGluIHRoZW0uCgoJKiBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ2xlYW5lZCB1cCBDb2xvcktleSBoYW5kbGluZy4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQENPUkVMLkNBPgoJTUVUQVJFQ09SRCBtZW1iZXIgcmRQYXJhbSBzaG91bGQgYmUgcmRQYXJtIChpbiB3aW4zMiBzZGspCglsb3RzIG9mIGNoYW5nZXMgaW4gdGhpcyBzb3VyY2UgZmlsZSB0byByZWZsZWN0IHRoaXMgY2hhbmdlLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9zcG9vbGVyLmMsIG9iamVjdHMvZ2Rpb2JqLmMsCglyZWxheTMyL2dkaTMyLnNwZWM6CglQYXVsIFF1aW5uIDxwYXVscUBDT1JFTC5DQT4KCUZpeGVkIGJhZCBkZWZpbmVzLCBhZGRlZCBhIGZldyB0eXBlcyAnbiBkZWZpbmVzLgoKCSogd2luZG93cy9kaW5wdXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGlzYWJsZSBicm9rZW4gY2FsbGJhY2tzIHdoaWNoIGxlYWQgdG8gY3Jhc2hlcy4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIElEIHVzYWdlIChhbmQgcmVseSBsZXNzIGhlYXZpbHkgb24gbXVsdGltZWRpYS9tbXN5c3RlbS5jCglpbnRlcm5hbCBzdHJ1Y3R1cmVzKS4KCgkqIG1pc2MvdG9vbGhlbHAuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZGVidWcuaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBsYXN0IHNpbmNlIGl0ICN1bmRlZnMgRVJSIGZvciBTb2xhcmlzLgoKCSogZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvbWVtb3J5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIC91IGZvcm1hdCB0byBkZWJ1Z2dlciBkaXNwbGF5IGZvciBVTklDT0RFIHN0cmluZ3MuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIGlycml0YXRpbmcgRklYTUUgbGluZSBubyBsb25nZXIgbmVlZGVkLgoKCSogbXNkb3MvaW50MmYuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyAnXG4nIGluIEZJWE1FIG1lc3NhZ2UuCgoJKiBncmFwaGljcy9kZHJhdy5jOgoJUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCW9iamJhc2UuaCBuZWVkZWQgZm9yIFdJTkVfU3RyaW5nRnJvbUNMU0lEKCksIGZpeCBDIGZ1bmN0aW9uCglkZWNsYXJhdGlvbnMsIGluc3RhbGwgYSBjb2xvcm1hcCBpZiB3ZSBhcmUgbm90IG1hbmFnZWQsIHJlbGVhc2UKCWJhY2tidWZmZXJzIGluIERHQSBtb2RlLCBmaXggdmlkZW8gbW9kZSBzd2l0Y2hpbmcgbG9naWMgdG8gYXZvaWQKCXBvc3NpYmxlIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4KCgkqIG1zZG9zL2RwbWkuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNtYWxsIGZpeC4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWlzYy9semV4cGFuZC5jLCBtc2Rvcy9pbnQyMS5jIHZ4ZC5jLCBtdWx0aW1lZGlhL21taW8uYywgd2luMzIva2VybmVsMzIuYzoKCUJldHRlciBET1MgZmlsZSBoYW5kbGUgbWFuYWdlbWVudC4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJVGhpcyBzaG91bGQgaGVscCBwcmV2ZW50IGR1cGxpY2F0ZSB3b3JrLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBEZWF0aCgpIGFuZCBSZXN1cnJlY3Rpb24oKSwgdHdvIGZ1bmN0aW9ucyBuZWVkZWQgYnkgc29tZQoJVFBXaW4gKD8pIGNvbW1hbmQgbGluZSB0b29sLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIDMyLT4xNiB0cmFuc2xhdGlvbiBmb3IgV01fQUNUSVZBVEVBUFAuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnM6IFNoZWxsTWVzc2FnZUJveFcsIFJ1bkRMTF9DYWxsRW50cnkxNi4KCUltcGxlbWVudGF0aW9uIGZvciBTSEdldFNwZWNpYWxGb2xkZXJQYXRoMzJbQXxXXS4KCU1hbnkgYnVnZml4ZXMuCgoJKiBjb25zb2xlL3h0ZXJtLmMsIG1pc2MvcG9ydC5jLCB3aW4zMi9jb25zb2xlLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUNoYW5nZSBhbGwgV2luZSBvcGVucHR5KCkgaW1wbGVtZW50YXRpb25zIHRvIG1hdGNoIHRoZSAic3RhbmRhcmQiIGFuZAoJdGhlbiBtYWtlIHRoZW0gYm90aCBjYWxsIHRoZSBzYW1lIGNvZGUgbGVhdmluZyB0aGUgb3B0aW9uIHRvIGNoYW5nZQoJdGhhdCBjb2RlIHRvIGNhbGwgdGhlICJzdGFuZGFyZCIgb3BlbnB0eSgpIGF0IGEgbGF0ZXIgZGF0ZS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgU2V0UHJvY2Vzc0FmZmluaXR5TWFzayBzdHViLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB0aGUgb3RoZXIgdW5pb24gbWlzdXNlIHRvbyAob25lIGxlc3MgbWVtIGNvcnJ1cHRpb24pCglSZS1hZGRlZCBYSW5zdGFsbENvbG9ybWFwIChvciBub24gbWFuYWdlZCBkb2VzIG5vdCBjaGFuZ2UgcGFsZXR0ZSkKCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgc2NoZWR1bGVyL3N5bmNocm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gZm9yIEtFUk5FTC40OTUuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cywgZG9jdW1lbnRhdGlvbi9kaXJlY3QzRCwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBiaXRtYXNrIHRvIHN0b3JlIHdoaWNoIENvbG9yS2V5IHN0cnVjdHVyZXMgYXJlIHZhbGlkCgktIGhhbmRsZSBtYW55IG5ldyByZW5kZXJpbmcgc3RhdGVzLCBzb21lIG9wdGltaXphdGlvbnMgaW4gc3RhdGUgY2hhbmdlcwoJLSA4Yml0IHBhbGV0dGl6ZWQgdGV4dHVyZXMgbm93IHN1cHBvcnQgQ29sb3JLZXlpbmcKCS0gc29tZSBtaXNjZWxsYW5lb3VzIGJ1ZyBmaXhlcyBhbmQgY29kZSByZXdyaXRlCgoJKiBjb250cm9scy9tZW51LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBsb29rIG9mIHRoZSBtZW51IHNvIGl0IHdvdWxkIGJlIGNvbXBsaWFudCB3aXRoIFdpbjk1OiBtb2RpZmllZAoJdGhlIG1vdXNlIHRyYWNraW5nIGNvZGUgc28gaXQgd291bGQgY2hhbmdlIHRoZSBzZWxlY3Rpb24gZXZlcnkgdGltZSB0aGUKCW1vdXNlIG1vdmVkIG92ZXIgYSBtZW51IGl0ZW0uCgoJKiBkb2N1bWVudGF0aW9uL2hvdy10by1wb3J0OgoJTWlrZSBDYXN0bGUgPGRhbGdvZGFAc2hlbGwucnQ2Ni5jb20+CglTbWFsbCBmaXguCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBidWdzOgoJLSBXaGVuIGFuIGVkaXQgY29udHJvbCBidWRkeSB3YXMgdXNlZCBzaW5nbGUgZGlnaXQgdmFsdWVzIHdlcmUgbm90CgliZWluZyBkaXNwbGF5ZWQuCgktIENvbW1hIHZhbHVlcyB3ZXJlIG5vdCBkaXNwbGF5ZWQgY29ycmVjdGx5IHdoZW4gdGhvdXNhbmRzIHNlcGFyYXRpb24KCXdhcyByZXF1ZXN0ZWQuCgoJKiB3aW4zMi9uZXdmbnMuYzoKCVRvbSBCZWNoIDx0b21iQGlpLnVpYi5ubz4KCVdoaWxlIHRoZSBkZWJ1ZyBldmVudCBtZXNzYWdlcyBhcmUgbm90IGltcGxlbWVudGVkLCBXYWl0Rm9yRGVidWdFdmVudAoJc2hvdWxkIHJldHVybiBGQUxTRS4KCgkqIGlmMTYzMi91c2VyLnNwZWMsIG9iamVjdHMvYml0bWFwLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBDb3B5SW1hZ2UxNi4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cyAKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNtYWxsIGZpeC4KCgkqIGNvbnNvbGUvZ2VuZXJpYy5jLCBtc2Rvcy9pbnQyMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIDB4MDEgdG8gdXNlIGdlbmVyaWMgY29uc29sZSwgZml4ZWQgMHgwYi4KCUZpeGVkIENPTlNPTEVfR2V0Q2hhcmFjdGVyICh0d28gYXJncyBzd2FwcGVkKS4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgc3BlY2lmeWluZyBtb2R1bGUgbmFtZSBmb3IgTkUgZHVtbXkgbW9kdWxlLgoKCSogbG9hZGVyL3BlX2ltYWdlLmMgCglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNldCBtb2R1bGUgbmFtZSBvZiBkdW1teSBtb2R1bGUgZXF1YWwgdG8gbW9kdWxlIG5hbWUgb2YgUEUgbW9kdWxlLgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3VpdG9vbHMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBpbmNsdWRlIHdpbmUvd2ludXNlcjE2LmggYWRkZWQuCgoJKiBncmFwaGljcy92Z2EuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlIGFuIGFjdHVhbCBwcmltYXJ5IHN1cmZhY2UgZm9yIHNjcmVlbmJ1ZmZlci4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEphbiAxMCAxNDo0MDozNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbXNkb3MuaCwgbG9hZGVyL21haW4uYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2Rvc2NvbmYuYywgbXNkb3MvaW50MjEuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIGNvbmZpZy5zeXMgcGFyc2VyLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBQYXNjYWwgQ3VvcSA8UGFzY2FsLkN1b3FAaW5yaWEuZnI+CglTbWFsbCBjaGFuZ2UgaW4gTEJfU0VUQ1VSU0VMMzIgaGFuZGxpbmcgKHRoZSBjYXJldCBzaG91bGQgYmUgbW92ZWQgYXMKCXdlbGwpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGZpbGVzL2FzeW5jLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2Mvd2luc29ja19kbnMuYywgbXNkb3MvaW50MjEuYywgb2xlL2NvbXBvYmouYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIGF1dG9jb25mIGNoZWNrIGZvciBwcmVzZW5jZSBvZiBzeXMvZmlsZS5oLgoKCSogZGxscy9udGRsbC9ydGwuYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBEYmdQcmludCwgYWRkZWQgdWx0b2EuCgoJKiB3aW4zMi9jb25zb2xlLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglQZWVrQ29uc29sZUlucHV0ICYgUmVhZENvbnNvbGVJbnB1dCBuZWVkIHRvIHJldHVybiAwIHJlY29yZHMgcmVhZCBpbgoJdGhlIGNhc2Ugb2YgYW4gaW52YWxpZCBoYW5kbGUuCgoJKiBjb25zb2xlL25jdXJzZXMuYywgbG9hZGVyL21haW4uYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTW9yZSB2ZXJib3NlIGRlYnVnZ2luZyBvdXRwdXQuCglSZW1vdmUgY29tcGlsYXRpb24gd2FybmluZy4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJRml4IHVwIHNvbWUgaW50ZXJydXB0IGNhbGxzIHRvIHJldHVybiBhdCB0aGUgZGF0YSB0aGF0IHRoZXkgYXJlIHN1cHBvc2VkCgl0by4gQWxzbyBpbmNyZWFzZSBjb21tZW50IHZlcmJvc2l0eSB0byBoZWxwIGRlYnVnIHRoaW5ncyBsYXRlci4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzd2l0Y2ggLWRvc3Zlci4KCUNsZWFudXAgZm9yIE9hQnVpbGRWZXJzaW9uKCkuCgoJKiBsaWJ0ZXN0Ly5jdnNpZ25vcmU6IEFkZGVkIHZhcnRlc3QgYW5kIHZvbGluZm8KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBidWdmaXhlcywgY29kZSBjbGVhbnVwLgoJUmVtb3ZlZCBhIGZldyBnbGl0Y2hlcyBmcm9tIHRoZSBDT00gcGF0Y2guCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglPbmx5IGRlc3Ryb3kgd2luZG93IG9uY2UuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCS0gbW92ZWQgZHJhd2FibGUgdG8gY29tbW9uIHNpbmNlIGl0IGlzIHVzZWQgYnkgYm90aCBER0EgYW5kIFhsaWIuCgkgIChmaXhlcyBvbmUgYmFkIG1lbW9yeSBjb3JydXB0aW9uIGJ1ZyBpbiBER0EgKFN0YXJDcmFmdCBhbmQgRGlhYmxvKQoJLSBhZGRlZCBCbHRGYXN0IHNhbml0eSBjaGVja3MuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluaXRBcHAoKSBjYWxsIHJlbW92ZWQgZnJvbSAzMi1iaXQgYXBwbGljYXRpb24gc3RhcnR1cDsKCWNyZWF0ZSB0YXNrIG1lc3NhZ2UgcXVldWUgaW4gSW5pdFRocmVhZElucHV0KCkgaW5zdGVhZC4KCgkqIGxvYWRlci9uZS9jb252ZXJ0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIGFjY2VsZXJhdG9yIHRhYmxlIFBFLT5ORSByZXNvdXJjZSBjb252ZXJzaW9uLgoKCSogZGVidWdnZXIvZWRpdGxpbmUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVzdGFydCByZWFkKCkgaW4gY2FzZSBvZiBFSU5UUiBpbiBUVFlnZXQoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVB0ciByZWYgd3JvbmcuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVdyYyB2ZXJzaW9uIDEuMC44LiBUb29sYmFyIHJlc291cmNlcyBhcmUgbm93IHN1cHBvcnRlZC4gQSBjb3VwbGUgb2YKCW90aGVyIGZpeGVzIGFyZSBhbHNvIGluY2x1ZGVkLiBTZWUgZmlsZSB0b29scy93cmMvQ0hBTkdFUyBmb3IgZGV0YWlscy4KCgkqIG9sZS9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBXSU5BUEkuCgoJKiBpbmNsdWRlL3gxMWRydi5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBvYmplY3RzL2RjLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL2szMm9iai5jLCBmaWxlcy9hc3luYy5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUFkZCBtaXNzaW5nICNpbmNsdWRlcyBhbmQgcHJvdG90eXBlcyB0byBlbGltaW5hdGUgc29tZSBpbXBsaWNpdAoJZnVuY3Rpb24gZGVjbGFyYXRpb24gd2FybmluZ3MgYW5kICdleHRlcm4ncyBpbiAuYyBmaWxlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBjb25zb2xlL25jdXJzZXMuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGVjayBmb3IgcmVzaXpldGVybSBpbiBuY3Vyc2VzLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC92YXJ0ZXN0LVdpbjMyLmxvZywgbGlidGVzdC92YXJ0ZXN0LmMsIGxpYnRlc3QvdmFydGVzdC5yZWFkbWU6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglOZXcgdGVzdCBwcm9ncmFtIGZvciBWQVJJQU5UIGZ1bmN0aW9ucy4KCgkqIGRlYnVnZ2VyL21zYy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgZGVidWcgaW5mb3JtYXRpb24gKFBEQikgd2FzIG5vdCBtYXBwZWQgd2hlbiBsb2FkaW5nIGEgbW9kdWxlLAoJd2hpY2ggY2F1c2VkIGEgY29yZSBpbiB0aGUgZGVidWdnZXIgd2hlbiBpdCB0cmllZCB0byBhY2Nlc3MgaXQuCgoJKiBNYWtlZmlsZS5pbjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglMaW5rcyBsaWJ3aW5lLnNvLjEuMCB0byBsaWJ3aW5lLnNvIGluIFdpbmUncyBtYWluIGRpcmVjdG9yeS4KCU1ha2VzIFdpbmUgY29tcGlsZSB3aXRoIC0tZW5hYmxlLWRsbCBhZ2Fpbi4KClNhdCBKYW4gIDkgMDk6MTI6NDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvb2xlMzIuc3BlYywgd2luZG93cy9kaW5wdXQuYywgaW5jbHVkZS9zdG9yYWdlLmgsIGluY2x1ZGUvdW5rbnduLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3d0eXBlcy5oLCBtaXNjL3NoZWxsLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9kc291bmQuYywgb2JqZWN0cy9mb250LmMsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGVkbGcuYywgb2xlL29sZW9iai5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3ZnYS5jLCBpZjE2MzIvY29tcG9iai5zcGVjLCBpbmNsdWRlL2NvbXBvYmouaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvaW50ZXJmYWNlcy5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2VydnByb3YuaCwgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglBZGRlZCBhIGxvdCBvZiBDT00gaW50ZXJmYWNlcyBkZWZpbml0aW9ucy4KCVJlc3RydWN0dXJlZCBDT00gaGVhZGVyIGZpbGVzIGZvciBiZXR0ZXIgY29tcGF0aWJpbGl0eSBhbmQgY2xhcml0eS4KCkZyaSBKYW4gIDggMTY6Mzc6MDMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2ZpbGUuYzogU2V0IEdFTkVSSUNfUkVBRHxHRU5FUklDX1dSSVRFIGFjY2VzcyBmb3IgT0ZfQ1JFQVRFLgoJTWFrZSBHZXRGaWxlVHlwZSB3b3JrIGZvciBhbGwgaGFuZGxlIHR5cGVzLgoKCSogd2luMzIvZGV2aWNlLmM6IEF2b2lkIGNyYXNoIG9uIE5VTEwgZGV2LT5pbmZvLgoKCSogaW5jbHVkZS9mbGF0c2IuaCwgcmVsYXkzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglBZGRlZCBzdHVicyBhbmQgZGVmaW5lcyBmb3IgdGhlIGZsYXQgc2Nyb2xsYmFyIGNvbW1vbiBjb250cm9sLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJQWRkZWQgc29tZSBkZWZpbmVzIG5lZWRlZCBmb3IgY3VzdG9tIGRyYXcnaW5nIGFuZCBkYXRldGltZSBjb21tb24KCWNvbnRyb2xzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBFZGRpZSBDYXJwZW50ZXIgPGVjYXJwZW50ZXJAaXRleC5jby56YT4KCUZpeGVkIGEgc21hbGwgYnVnIGluIGZ1bmN0aW9uIEV4dHJhY3RJY29uRXgzMkEuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglIVEFTSzE2IC0+IHRocmVhZElEIG1hcHBpbmcgb2YgV01fQUNUSVZBVEVBUFAuCgoJKiBmaWxlcy9maWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglNYWtlIERlbGV0ZUZpbGUgZmFpbCBmb3IgZW1wdHkgcGF0aC4KCgkqIG1zZG9zL2lvcG9ydHMuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXggZHVtbXlfY3RyIHN0dWZmIHRvIHdvcmsgZXZlbiB3aXRob3V0IERJUkVDVF9JT19BQ0NFU1MuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHdyb25nIGJ1ZmZlciB3aGljaCBjYXVzZWQgZml4dXBzIHRvIGZhaWwuCgoJKiBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGluY2x1ZGUvZDNkLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgYWxsIHRoZSBEaXJlY3QzRCBlcnJvciBjb2RlcwoJLSBhZGRlZCA4Yml0IHBhbGV0dGl6ZWQgdGV4dHVyZSBzdXBwb3J0CgoJKiBtc2Rvcy9jZHJvbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWlmZGVmcyBmb3IgZGVmaW5lcyBub3QgaW4gbGludXggMi4wLgoKCSogcmVsYXkzMi93aW5zcG9vbC5zcGVjLCBtaXNjL3ByaW50ZHJ2LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0d28gc3R1YnMgZm9yIEFkZFByaW50ZXJEcml2ZXIuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVF1ZXVlIFNJR0FMUk0gdG8gcmVkdWNlIHRoZSAic2lnbmFsIDE0IGxvc3QiIGNvbXBsYWludHMuCglBZGRlZCBzdXBwb3J0IGZvciByZXByb2dyYW1taW5nIHRoZSBET1MgdGltZXIsIGFuZCByZWFkaW5nIGJhY2sgdGhlCgljdXJyZW50IHZhbHVlLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdpbmUgaGFuZ3Mgd2hlbiByZWdpc3RyeSAoY29ycnVwdGVkKSBoYXMgbG9uZSBcIGF0IGVuZCBvZiBmaWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglLb3N0eWEgSXZhbm92IDxrb3N0eWFAd2FybWNhdC5leGNvbS5zcGIuc3U+CglTbWFsbCBwYXRjaCB0aGF0IGVuYWJsZXMgQ2xhcmlvbiBmb3IgV2luZG93cyBub3QgdG8gdHJhcCB3aGlsZQoJbG9hZGluZy4KCgkqIG9sZS92YXJpYW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZSB0cm91Ymxlc29tZSBhc3NpZ25tZW50cyBieSBtZW1zZXQgZm9yIHdob2xlIHN0cnVjdC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgaGFuZGxpbmcgb2YgdGhlICdwYWxlbnQnIGZpZWxkIG9mIHRoZSBDcmVhdGVQYWxldHRlIHByb2NlZHVyZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBkZXNjcmlwdGlvbiBhYm91dCBpbmNsdWRpbmcvZXhjbHVkaW5nIGZ1bmN0aW9ucyBmcm9tIHJlbGF5Cgl0cmFjZS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWFkIGF0IGxlYXN0IDEgaW5wdXQgcmVjb3JkIGluIFJlYWRDb25zb2xlSW5wdXRBLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUZpeGVkIENyZWF0ZU1hcHBpbmcgd2hlbiBhIG1hcHBpbmcgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLgoKV2VkIEphbiAgNiAxMDozNzoyOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2ZpbGUuYzogRml4ZWQgZmlsZSBkZXN0cnVjdGlvbiB3aGVuIGZpbGUgaGFzIG5vIG5hbWUuCgpUdWUgSmFuICA1IDE4OjM4OjU5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXYXJucyB1c2VyIGlmIG11bHRpcGxlIC1kbGwgc3dpdGNoZXMgYXJlIHVzZWQgb24gY29tbWFuZCBsaW5lLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4ZWQgYSBsZWZ0b3ZlciBIZWFwRnJlZSBpbiB0aGUgdHJhY2tiYXIgY29tbW9uIGNvbnRyb2wuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS90YWIuaCwgZGxscy9jb21jdGwzMi90YWIuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXhlZCBzb21lIHByb2JsZW1zIHdpdGggdGhlIHRhYiBjb21tb24gY29udHJvbCAod2l0aCB0aGFua3MgdG8gQW5kZXJzCglDYXJsc3NvbiA8YW5kZXJzLmNhcmxzc29uQGxpbnV4Lm51PikuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9wcm9wc2hlZXQuaCwgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUFkZGVkIGEgbWlzc2luZyBQcm9wZXJ0eVNoZWV0MzJBVyBhbmQgQ3JlYXRlUHJvcGVydHlTaGVldFBhZ2Ugc3R1YiwKCWFuZCBzb21lIG1pc3NpbmcgZGVmaW5lcy4KCgkqIG1pc2MvbWFpbi5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgZ3JhcGhpY3MvdmdhLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBNYWtlQ3JpdGljYWxTZWN0aW9uR2xvYmFsIG9uIGFsbCBjcml0aWNhbCBzZWN0aW9ucyB1c2VkIGFjcm9zcwoJcHJvY2VzcyBib3VuZGFyaWVzLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBwcm90b3R5cGVzIGZvciBNYWtlQ3JpdGljYWxTZWN0aW9uR2xvYmFsLCBDb252ZXJ0VG9HbG9iYWxIYW5kbGUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIHRoZSBtYW4gcGFnZS4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgYXJncyBvZiBNWl9DcmVhdGVQcm9jZXNzLgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHN0cmluZyBidWcgaW4gcHJvZ3JhbXMvLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzdHVwaWQgImFjdGlvbiIgZW11bGF0aW9uIGZvciBoYXJkd2FyZSB0aW1lcnMgaW4gaW9wb3J0cy5jLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZ2FpbiBhIHNtYWxsIERPU0FTUEkgcGF0Y2guCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMsIGRvY3VtZW50YXRpb24vZm9udHMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGNoZWNrIGlmIHBhbGV0dGUgaXMgbm90IG51bGwgd2hlbiBzZXR0aW5nIGEgcGFsZXR0ZQoJLSBjaGVjayBpZiB3aW5kb3cgaGFuZGxlIGlzIHZhbGlkIGJlZm9yZSBnZXR0aW5nIGl0cyAnZHJhd2FibGUnCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcmV2ZW50IGNvcmUgZHVtcCB3aXRoIHNvbWUgVFRGICh3aGVuIFgxMSBydW5zIHdpdGggYSB0cnVlIHR5cGUKCXNlcnZlcikuCgoJKiBzZXJ2ZXIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBzdGRvdXQgZm9yIGRlZmF1bHQgY29uc29sZSBvdXRwdXQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKYW4gIDMgMTc6MDA6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvd2luZV9nbC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0M0QsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdGRyYXcsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGJlZ2lubmluZyBvZiBpbXBsZW1lbnRhdGlvbiBvZiBEaXJlY3QzRDIgKERYIDUuMCkgYW5kIGFzc29jaWF0ZWQgY2xhc3NlcwoJLSBzb21lIGJhc2ljIGNvZGUgZm9yIERpcmVjdDNEIGFuZCBEaXJlY3QzREV4ZWN1dGVCdWZmZXIgKERYIDMuMCkKCS0gYWRkZWQgc3RyZXRjaGluZyB0byBCbHQgZnVuY3Rpb24KCgkqIG1pc2MvdmVyc2lvbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyeSB0byBhdXRvZGV0ZWN0IE5UNC4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkwIG1lYW5zIHN1Y2Nlc3MsIGFsbCBlbHNlIGZhaWx1cmUgZm9yIFdhaXRGb3JTaW5nbGVPYmplY3QuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCURvIG5vdCBhZHZhbmNlIHRoZSBjdXJzb3IgaW4gY2VydGFpbiByb3V0aW5lcy4gVGhpcyBjbGVhbmVkIHVwIHRoZQoJaW1wbGVtZW50YXRpb24gcXVpdGUgYSBiaXQuCgoJKiBsb2FkZXIvbWFpbi5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVNldCBjb25zb2xlIHZpZGVvIG1vZGUgd2hlbiBsb2FkaW5nIERPUyBhcHAuIChFdmVudHVhbGx5LCBJIHdhbnQgdG8KCW1pbWljIFdpbmRvd3MgOXgncyBiZWhhdmlvciBieSBzZXR0aW5nIHRoZSB2aWRlbyBtb2RlIG9ubHkgd2hlbiBub24KCUlOVCAyMSBjYWxscyBhcmUgdXNlZCB0byBhbGxvdyBmb3IgYXJiaXRyYXJ5LXNpemVkIGNvbnNvbGVzKS4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUveHRlcm0uYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJWHRlcm0gZHJpdmVyIGNhbiBub3cgcmVzaXplIHRoZSB0ZXJtaW5hbCB3aGVuIGEgbW9kZSBjaGFuZ2UgaXMKCWRldGVjdGVkLgoKCSogY29uc29sZS9nZW5lcmljLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTG9uZyBzdGFuZGluZyBzY3JvbGwgYnVnIGZpeGVkIQoKCSogY29uc29sZS9uY3Vyc2VzLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9jb25zb2xlLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglSZXdyaXRlIG9mIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHRvIHN1cHBvcnQgInJlZ3VsYXIiIGN1cnNlcyBhcyB3ZWxsIGFzCgllbGltaW5hdGluZyB0aGUgLS13aXRoLW5jdXJzZXMgb3B0aW9uLiBOb3csIG5jdXJzZXMgc3VwcG9ydCB3aWxsIGJlCglidWlsdCBpbiBpZiBhIGNvbXBhdGlibGUgbGlicmFyeSBpcyBkZXRlY3RlZC4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaCwgd2luZG93cy9kZWZkbGcuYzoKCU5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4IHRoZSByZXR1cm4gdHlwZSBvZiBETEdQUk9DIHR5cGUgYW5kIG1hc2sgb3V0IHRoZSB1bnNldCBoaWdod29yZCBvZgoJdGhlIHJldHVybiB3aGVuIGEgMTYgYml0IGRpYWxvZyBwcm9jIGlzIGNhbGxlZC4KCgkqIGluY2x1ZGUvaW50ZXJmYWNlcy5oOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkIGludGVyZmFjZSBJRCdzIGZvciB1cGNvbWluZyBJVHlwZUxpYiBpbXBsZW1lbnRhdGlvbi4KCgkqIGZpbGVzL2Rvc19mcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeCBmb3IgdHJhaWxpbmcgc2xhc2hlcywgcmVwZXRpdGlvbiBvZiAnLycgb3IgJ1wnIGFuZAoJU2V0TGFzdEVycm9yKCkgaW4gR2V0RnVsbFBhdGhuYW1lLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCB3aW4zMi9BdHRpYy9hZHZhcGkuYywgd2luMzIvQXR0aWMvc2VjdXJpdHkuYywgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2luaXQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgQURWQVBJMzIgZmlsZXMgdG8gZGxscy9hZHZhcGkzMi4KCUFkZGVkIHN0dWJzIGZvciBldmVudGxvZyBmdW5jdGlvbnMuCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIE5UU0hDaGFuZ2VOb3RpZnlSZWdpc3RlciwgTlRTSENoYW5nZU5vdGlmeURlcmVnaXN0ZXIuCglDbGVhbnVwLCBzb21lIG1vcmUgZnVuY3Rpb25zIFVOSUNPREUgcmVhZHkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNIQ2xvbmVTcGVjaWFsSURMaXN0IGltcGxlbWVudGVkLgoJU0hHZXREYXRhRnJvbUlETGlzdEEgY29ycmVjdGVkLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTaGVsbF9HZXRDYWNoZWRJbWFnZUluZGV4MzJbQXxXXSBpbXBsZW1lbnRlZC4KCgkqIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvZHJpdmUuaDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUltcGxlbWVudGVkIHJhdyBkZXZpY2UgYWNjZXNzIGNhbGxzIGZvciBpb2N0bEdlbmVyaWNCbGtEZXZSZXEoKQoJYW5kIHRoZXJlZm9yZSBtb3ZlZCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIGludDJbNTZdLmMgaW50byBmaWxlcy9kcml2ZS5jLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBhdXRvbWF0aWMgQ01PUyBSQU0gY2hlY2tzdW0gY2FsY3VsYXRpb24uCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGRvY3VtZW50YXRpb24vYXNwaSwgcmVsYXkzMi93bmFzcGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU2VuZEFTUEkzMkNvbW1hbmQzMiBoYXMgdG8gYmUgX19jZGVjbC4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbi9hc3BpIGFuZCByZXZlcnRlZCBhbiBFUlIgYmFjayB0byBXQVJOLgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglPZiBjb3Vyc2Ugd2Ugd2FudCB0aGUgbGFzdCAxMDAgbGluZXMsIG5vdCB0aGUgZmlyc3QgMTAwIGxpbmVzLgoJVXNlICd0YWlsJyBpbnN0ZWFkIG9mICdoZWFkJy4gQWxzbyBmaXggdGV4dCBhbGlnbm1lbnQgZnJvbQoJcHJldmlvdXMgcGF0Y2guCgoJKiBtdWx0aW1lZGlhL2pveXN0aWNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVhZGluZyBqb3lzdGljayA1IHdoZW4gd2Ugb25seSBzdXBwb3J0IDQgc2hvdWxkIGZhaWwgaW5zdGVhZCBvZgoJaGFuZy4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUGxheWluZyBhIG5vbi1leGlzdGVudCBDRCBzaG91bGQgZmFpbCBpbnN0ZWFkIG9mIGNyYXNoLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIG5lY2Vzc2FyeSBjb25maWd1cmUgcmVydW5zIGZvciBNYWtlZmlsZSBhbmQgTWFrZS5ydWxlcwoJZ2VuZXJhdGlvbi4KCgkqIG1pc2NlbXUvaW5zdHIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglFbXVsYXRlcyBpbnMvb3V0cyBjb3JyZWN0bHkgZm9yIERPUyBwcm9ncmFtcy4KCgkqIG9sZS9zdG9yYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2ZpbGUuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9kZXZpY2UuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvY3J0ZGxsLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL3Z4ZC5jOgoJSW1wbGVtZW50ZWQgZmlsZSBzaGFyaW5nIGNoZWNrcyBpbiB0aGUgc2VydmVyLgoJQWRkZWQgc2V0IGZpbGUgdGltZSBzZXJ2ZXIgcmVxdWVzdC4KCU92ZXJhbGwgY2xlYW4gdXAgb2YgdGhlIGZpbGUgaGFuZGxpbmcgKERPUyBkZXZpY2UgaGFuZGxpbmcgaXMgbm93Cglicm9rZW4sIHNob3VsZCBiZSByZWRvbmUpLgoKU2F0IEphbiAgMiAwODoyMjozNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUZpeGVkIGJ1ZyBpbiBDcmVhdGVGaWxlTWFwcGluZyB3aGVuIG5hbWUgaXMgbm90IE5VTEwuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jOiBGaXhlZCBDSEVDS19TVFJJTkcgZGlzcGxheS4KCkZyaSBKYW4gIDEgMTk6NTE6MjUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWVtb3J5L2xvY2FsLmM6CglSaWNoYXJkIEEgTG91Z2ggPHJhbG91Z2guY2VkQGRuZXQuY28udWs+CglQdXQgcmV0dXJuIHZhbHVlIG9mIExvY2FsQWxsb2MgaW4gQ1ggdG9vLgoKCSogaW5jbHVkZS9wc2Rydi5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlIGluY2x1ZGVzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBVc2UgcHJvcGVyIHN5c3RlbSBkaXJlY3RvcnkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBHb3QgcmlkIG9mIENMSUVOVF9HZXRQcm9jZXNzSW5mby4KCgkqIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW5oZWxwLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW5yZWcuaCwgaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci9tb2R1bGUuYywgbWlzYy9jb21tLmMsIG1pc2Mvc2hlbGwuYywgbWlzYy9zcG9vbGVyLmMsIG1pc2Mvc3B5LmMsIG1pc2Mvd2luc29jay5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2xlL29sZW9iai5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc3RhdGljLmMsIGRlYnVnZ2VyL2RiZy55LCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZGlzcGxheS5oLCBpbmNsdWRlL2ltYWdlbGlzdC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zdG9yYWdlLmgsIGluY2x1ZGUvc3RydWN0MzIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCU1vdmVzIG1vcmUgc3R1ZmYgZnJvbSB3aW5kb3dzLmguCgktIGluY2x1ZGUvd2ludXNlci5oIC0gaW50ZXJmYWNlIHJlbGV2YW50IHRvIHVzZXIzMi5zcGVjCgktIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCAtIHRoZSBvbGQgMTYgYml0IGludGVyZmFjZSAoaW50ZXJuYWwgdXNlKQoJLSBpbmNsdWRlL3dpbmJhc2UuaCAtIHNvbWUgbWlub3IgdXBkYXRlcyB0byBrZWVwIHRoaW5ncyBjb2hlcmVudC4KCS0gTG90IG9mIG90aGVyIGZpbGVzIG1hZGUgdG8gaW5jbHVkZSB3aW5lL3dpbnVzZXIxNi5oLCB3aGljaCBpcyBubwoJICBsb25nZXIgaW5jbHVkZWQgZnJvbSB3aW5kb3dzLmgKCgkqIHNjaGVkdWxlci9oYW5kbGUuYzogRml4ZWQgQ2xvc2VIYW5kbGUoKSBvbiBnbG9iYWwgaGFuZGxlcy4KCgkqIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLCBkb2N1bWVudGF0aW9uL3dpbjk1bG9vaywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUFkZCBzb21lIGluZm9ybWF0aW9uIHRvIHRoZSBtYW4gcGFnZSBhbmQgUkVBRE1FIGZpbGUuCglNYWtlIGRvY3VtZW50YXRpb24vd2luOTVsb29rIHNheSBbVHdlYWsuTGF5b3V0XSBpbnN0ZWFkIG9mCglbVHdlYWtzLkxheW91dF0uCglGaXggaW5jb3JyZWN0IGNvbW1hbmQgZ2l2ZW4gaW4gZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLgoJU3RhbmRhcmQgZXJyb3Igd2FzIG5vdCBiZWluZyByZWRpcmVjdGVkLCBzbyBtb3N0IG9mIHRoZQoJb3V0cHV0IHdhcyBsb3N0LgoKCSogb2JqZWN0cy9iaXRtYXAuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglEZWxwaGkgMi4wIG5lZWRzIHRvIGFsbG9jYXRlIGEgYml0bWFwIGJpZ2dlciB0aGFuIDQwOTYgYml0cyB3aWRlLgoKCSogbWlzYy9wcmludGRydi5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUluaXRpYWxpemUgbHBkd05lZWRlZC4KCgkqIGlmMTYzMi9zbm9vcC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbmNsdWRlIHN0dWZmIGV2ZW4gaWYgbm90IG9uIF9faTM4Nl9fIGZvciBkZWJ1ZyBkZWZpbmVzLgoKCSogb2xlL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQW5vdGhlciAvLyBjb21tZW50IGZpeGVkLgoKCSogc2VydmVyL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTmVlZCA8ZXJybm8uaD4gZm9yIGVycm5vIGRlY2wuIG9uIFNvbGFyaXMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3gxMWZvbnQuaCwgb2JqZWN0cy9mb250LmM6CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCUltcGxlbWVudCBUcmFuc2xhdGVDaGFyc2V0SW5mbywgY2hhbmdlIGNoYXJzZXQgdHlwZSB0byBCWVRFLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBpbmNsdWRlL2NvbWJvLmg6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAZ2FsYXh5LmFtcy5zdW55c2IuZWR1PgoJQmV0dGVyIENCX1NFVENVUlNFTCBtZXNzYWdlIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglNb3ZlZCBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3QgaW1wbGVtZW50YXRpb24gdG8gVVNFUiByb3V0aW5lcywgdXNpbmcKCWEgbm9ybWFsIFdpbjMyIGV2ZW50LgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0czogU2VuZCBkZWJ1Z2dpbmcgb3V0cHV0IHRvIHN0ZGVyci4KCgkqIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCB3aW4zMi9jb25zb2xlLmM6CglDbGVhbmVkIHVwIGFuZCByZW1vdmVkIHNvbWUgbm8gbG9uZ2VyIHVzZWQgY29kZS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IFVzZSBzZXJ2ZXIgZmlsZSBtYXBwaW5nIG9iamVjdHMuCgoJKiBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmg6CglBZGRlZCBzZXJ2ZXItc2lkZSBmaWxlIG1hcHBpbmcgb2JqZWN0IHN1cHBvcnQuCgoJKiBtaXNjL2NydGRsbC5jOgoJSGFja2VkIHN0ZGlvIGZ1bmN0aW9ucyB0byB1c2UgV2luMzIgZmlsZSBoYW5kbGVzLiBTdGlsbCBuZWVkcyBhIHByb3BlcgoJc3RkaW8gZW11bGF0aW9uLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYzoKCVVzZSBXaW4zMiBmaWxlIGhhbmRsZXMgaW5zdGVhZCBvZiBVbml4IG9uZXMuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL2Rvc2V4ZS5oOgoJVGFrZSBpbnRvIGFjY291bnQgaGFuZGxlIGluaGVyaXRhbmNlIGZsYWcuCgpUaHUgRGVjIDMxIDE1OjU1OjE5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCUNoYW5nZWQgZGJfdGFza19wcmludHN5bSB0byBhbHdheXMgcHJpbnQgYSBmdWxsIGFkZHJlc3MsIG5vIG1hdHRlcgoJd2hhdCB0aGUgb3BlcmFuZCBzaXplIGlzLgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6IFJlLWltcGxlbWVudGVkIHVzaW5nIGEgcmVhbCBzZW1hcGhvcmUuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvazMyb2JqLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvc2lnbmFsLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvdG9vbGhlbHAuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYzoKCVJlbW92ZWQgY2xpZW50LXNpZGUgd2FpdCBmdW5jdGlvbnM7IGFsbCB3YWl0aW5nIGlzIG5vdyBkb25lIHRocm91Z2gKCXRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0Lmg6CglBZGRlZCBjaGFuZ2Ugbm90aWZpY2F0aW9ucy4KCUFkZGVkIGdsb2JhbCBoYW5kbGUgc3VwcG9ydC4KCldlZCBEZWMgMzAgMTI6MTE6NTIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeW5jaHJvLmM6CglDaGFuZ2VkIHNlcnZlciB3YWl0IGxvZ2ljIGEgYml0LgoKCSogd2luMzIvY29uc29sZS5jOgoJSGFja3MgdG8gc3VwcG9ydCBzZXJ2ZXItc2lkZSBjb25zb2xlLiBTaG91bGQgYmUgcmVkb25lIHByb3Blcmx5Cglzb21lIGRheS4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCB3aW4zMi9maWxlLmMsIHdpbjMyL25ld2Zucy5jOgoJUmVpbXBsZW1lbnRlZCBSZWFkL1dyaXRlRmlsZSB0byB1c2Ugc2VydmVyIGZpbGUgZGVzY3JpcHRvcnMuCglSZW1vdmVkIGZpbGUgcG9zaXRpb24gaGFjayBhcyBpdCBpcyB3cm9uZyBmb3IgV2luMzIgKHNob3VsZCBiZSByZWRvbmUKCWZvciBXaW4xNiBvbmx5KS4KCgkqIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvcGlwZS5jOgoJQWRkZWQgYW5vbnltb3VzIHBpcGUgc3VwcG9ydAoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc2V2ZXJhbCBmaWxlIHNlcnZlciByZXF1ZXN0cwoJQWRkZWQgc2VydmVyLXNpZGUgcGlwZXMgYW5kIGNvbnNvbGVzCgpTdW4gRGVjIDI3IDE1OjI4OjU1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NydGRsbC5jLCBtc2Rvcy9pbnQyMS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGxvYWRlci9tYWluLmMsIG1lbW9yeS92aXJ0dWFsLmM6CglBZGRlZCBiZWdpbm5pbmdzIG9mIHNlcnZlci1zaWRlIGZpbGUgaGFuZGxpbmcuCglBZGRlZCAtZGVidWdtc2cgK3NlcnZlciBzdXBwb3J0LgoJQmV0dGVyIHNlcnZlciByZXF1ZXN0IGR1bXBpbmcgZm9yIHZhcmFyZ3MgcmVxdWVzdHMuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUZpeGVkIFNldEZvY3VzIHRoYXQgd2FzIGJyb2tlbiB3aGVuIG1vdmVkIHRvIHgxMWRydi4KCgkqIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jOgoJQWRkZWQgYWRkX3F1ZXVlL3JlbW92ZV9xdWV1ZSB0byBzZXJ2ZXIgb2JqZWN0IG9wZXJhdGlvbnMuCglNb3ZlZCBzZWxlY3QoKSBsb29wIGZ1bmN0aW9ucyB0byBzZWxlY3QuYy4KClNhdCBEZWMgMjYgMTk6NDc6MDAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jOgoJUmVuYW1lZCBFUlIgbWFjcm8gdG8gYXZvaWQgY29uZnVzaW5nIHRoZSBtYWtlX2RlYnVnIHNjcmlwdC4KCgkqIG9sZS9zdG9yYWdlLmMsIG9sZS90eXBlbGliLmMsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvc3RvcmFnZS5oLCBpbmNsdWRlL3dpbnZlcnNpb24uaCwgb2xlL2NvbXBvYmouYywgb2xlL29sZTIuYywgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdG9ucyBvZiBpbmNvbXBsZXRlIHByb3RvdHlwZXMsIGFzc2lnbm1lbnQncyBvZiBwb2ludGVyIHdpdGgKCWRpZmZlcmVudCBzaWduZWRuZXNzLCBzdXBlcmZsb3VzICcsJyBhbmQgJzsnIGluIHN0cnVjdHVyZXMsIHdyb25nCglyZXR1cm4tdHlwZXMsIGxvc2Ugb2YgZGlnaXRzIGFuZCBzb21lIHNtYWxsIGdsaXRjaGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGdhbGF4eS5hbXMuc3VueXNiLmVkdT4KCUNsZWFuZWQgdXAgZm9udCBlbmNvZGluZyBoYW5kbGluZy4gQWRkZWQgJ0lnbm9yZSMnIG9wdGlvbiB0byB0aGUKCVtmb250c10gc2VjdGlvbi4gQWxzbywgZmlsZSB3aXRoIGNhY2hlZCBtZXRyaWNzIG5vdyBoYXMgdGhlIHZhbHVlIG9mCgkkRElTUExBWSBhcHBlbmRlZCB0byB0aGUgZmlsZW5hbWUuCgoJKiBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHJjL3N5c3Rlc3QuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3BhdGguYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5pb2N0bC5oLCBtaXNjL21haW4uYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvbGUvb2xlMi5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCAvLyBjb21tZW50cyB0byAvKiAqLyBzbyBXSU5FIGNvbXBpbGVzIHdpdGggbm9uLWdjYyBjb21waWxlcnMKCWFnYWluLgoKCSogd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRlYnVnZ2VyL2RiZy55LCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2Rpc3BsYXkuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBtb3JlIHRoaW5ncyB0byB0aGUgWDExIGRyaXZlci4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvYnJ1c2guYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCUZpeGVkIHRoZSBwcm90b3R5cGUgb2YgQ3JlYXRlRElCUGF0dGVybkJydXNoUHQKCgkqIGluY2x1ZGUvd2luZG93cy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglSZW1vdmVkIHRoZSBDTl94eHggbWFjcm9zIHNpbmNlIHRoZXkgYXJlIG5vdCB1c2VkLCBkbyBub3QgY29ycmVzcG9uZCB0bwoJYW55IFdpbmRvd3MgZGVmaW5lIGFuZCBjb25mbGljdCB3aXRoIE1GQyBkZWZpbmVzLgoJd2luZG93cy5oIG11c3QgcHJvdmlkZSBhbGwgdGhlIGRlZmluaXRpb25zIGNvbnRhaW5lZCBpbiB3aW5iYXNlLmgKCVNvbWUgWHh4MzIgZnVuY3Rpb25zIGRpZCBub3QgaGF2ZSB0aGUgYXNzb2NpYXRlZCBYeHggbWFjcm8uCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCUFkZGVkIGEgdHlwZWRlZiBmb3IgX19pbnQ2NCB3aGljaCBpcyBhIGJ1aWx0aW4gVmlzdWFsIEMrKyB0eXBlCglBZGRlZCBhIHR5cGVkZWYgZm9yIFBVSU5UCgoJKiBpbmNsdWRlL29iamJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJUkVGSUlEIHdhcyBub3QgZGVmaW5lZC4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy93aW5zb2NrLmMsIGNvbmZpZ3VyZToKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+Cgljb25maWd1cmUgZmlyc3QgY2hlY2tzIHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8gY29tcGlsZSBJUFggY29kZSB3aXRoCglHbGliYyBoZWFkZXJzLiBJZiBpdCBmYWlscywgbmV4dCBjaGVjayBkZXRlcm1pbmVzIHdoZXRoZXIgZGlyZWN0IGluY2x1c2lvbgoJb2YgPGxpbnV4L2lweC5oPiB3b3Jrcy4KCgkqIGluY2x1ZGUvdGNoYXIuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJUHJvdmlkZXMgdGhlIG1hcHBpbmdzLiBNQkNTIGFuZCBVbmljb2RlIGZ1bmN0aW9ucyBhcmUgbm90IGltcGxlbWVudGVkLgoJU3RhbmRhcmQgKFNCQ1MpIGZ1bmN0aW9ucyBtYXkgZXhpc3Qgb3Igbm90LCB3aXRoIHRoZSBzYW1lIG9yIGEgZGlmZmVyZW50CglzZW1hbnRpY3MuCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvaXBhZGRyZXNzLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJSVBhZGRyZXNzIGNvbW1vbiBjb250cm9sIGltcGxlbWVudGF0aW9uLiBGaXJzdCB0cnk7IG5lZWRzIG1vcmUgd29yayB0bwoJcmVtb3ZlIGJvcmluZyBidWdzLgoKRnJpIERlYyAyNSAwODo1NToxNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHRoZSBURVhUIHJlZGVmaW5lZCB3YXJuaW5ncy4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJSG9vayBpbnRvIHRoZSAoc3R1YmJlZCkgcmVzaXplIGNvZGUgaW4gbXNkb3MgaW50MTAuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS9vcHRpb25zLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGQgc3VwcG9ydCBmb3Igc2VsZWN0aW9uIG9mIGNvbnNvbGUgbW9kZSBkcml2ZXJzIHRvIHVzZSB1c2luZyB0aGUKCS1jb25zb2xlIG9wdGlvbi4gQ3VycmVudGx5ICJ0dHkiLCAibmN1cnNlcyIsIGFuZCAieHRlcm0iIGFyZQoJc3VwcG9ydGVkLgoJQWRkIHN0dWJzIGZvciByZXNpemluZyB0aGUgc2NyZWVuIG9uIG1vZGUgY2hhbmdlcy4KCgkqIGluY2x1ZGUvZGRlbWwuaCwgbWlzYy9kZGVtbC5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJSmVhbi1DbGF1ZGUgQ290ZSA8amVhbi1jbGF1ZGVAbWFjYWRhbWlhbi5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZm9sbG93aW5nIERERSBBUElzOgoJRGRlQ21wU3RyaW5nSGFuZGxlcywgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlLCBEZGVGcmVlU3RyaW5nSGFuZGxlLAoJRGRlUXVlcnlTdHJpbmcsIERkZVVuaW5pdGlhbGl6ZS4KClRodSBEZWMgMjQgMTY6NTk6MTcgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL3BhcnNlZHQuYywgb2xlL3BhcnNlZHQuaCwgb2xlL3ZhcmlhbnQuYzoKCUplYW4tQ2xhdWRlIENvdGUgPGplYW4tY2xhdWRlQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgVmFyRGF0ZUZyb21TdHIgQVBJLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBpbmNsdWRlL3RyYWNrYmFyLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBUb29sdGlwIHN1cHBvcnQKCS0gVmVydGljYWwgdHJhY2tiYXJzIHN1cHBvcnRlZCBub3cKCS0gVEJTX0JPVEggc3VwcG9ydCAoZ29lcyBhbG9uZyB3aXRoIHBhcnRpYWwgY2xlYW51cCBvZiBkcmF3aW5nIGNvZGUpCgktIFVzZSBDT01DVEwzMiBoZWFwIGluc3RlYWQgb2Ygc3lzdGVtIGhlYXAKCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBhbGwgY2xpcHBlciYzZCBzdHVicy4KCVN0YXJ0aW5nIENvbG9yS2V5IHN1cHBvcnQuCglGaXhlZCB0cmFjZSBzdGF0ZW1lbnQgaW4gRGlyZWN0RHJhd0NyZWF0ZSBhcyBmb3JtYXR0aW5nIHdhc24ndCBjb3JyZWN0LgoJQ2hhbmdlZCAicmV0dXJuIDA7IiB0byAicmV0dXJuIEREX09LIiBvciAicmV0dXJuIFNfT0siIGFzIGFwcHJvcHJpYXRlLgoJQWRkZWQgU3VyZmFjZUVudW0gZHdGbGFncy4KCgkqIGluY2x1ZGUvZHBsYXkuaCwgbXVsdGltZWRpYS9kcGxheS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIG1hY3JvcyB0byBoZWFkZXIgZmlsZSBmb3IgZWFzaWVyIGZ1bmN0aW9uIGNhbGxpbmcuCglDaGFuZ2VkIGltcGxlbWVudGF0aW9uIGEgbGl0dGxlIGJpdC4KCUFkZGVkIHN0dWJzIGZvciBkcGxheTMuIFN0aWxsIG5lZWQgdG8gYnJlYWsgaW50byBBIGFuZCBXIHZlcnNpb25zLgoKCSogd2luMzIvZmlsZS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQ3JlYXRlRmlsZTMyQSB3YXMgb25seSBhbGxvd2luZyBjb25zb2xlIG9wZW5zIG9uIENPTklOJC9PVVQkLiBUaGlzCgloYXMgYmVlbiBjaGFuZ2VkIHRvIGhhdmUgYSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG9uJ3Qgc2VuZCBPREFfRU5USVJFIGZvciBlbXB0eSBsaXN0Ym94ZXMgKExJU1RCT1hfUGFpbnQpLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIva2VybmVsMzIuYzoKCUplYW4tQ2xhdWRlIENvdGUgPGplYW4tY2xhdWRlQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIEdldEJpbmFyeVR5cGUgQVBJIGZ1bmN0aW9uLgoKCSogbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL2Rvcy9kb3Ntb2QuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb21lIG5ldyBkb3Ntb2QgY29tbXVuaWNhdGlvbiBwb3NzaWJpbGl0aWVzLCBpbmNsdWRpbmcKCWFjdGl2YXRpbmcgYSBkb3Ntb2Qtc3BlY2lmaWMgc2V0aXRpbWVyKCksIGFuZCB0aGUgY2FwdHVyZSBvZiBzb21lCgljb21tb24gc2lnbmFscywgd2hpY2ggaXMgcmV0dXJuZWQgdG8gV2luZSAocHJldmlvdXNseSBhIFNJR0lMTAoJd291bGQganVzdCBjYXVzZSBhICJkb3Ntb2Qgc3luYyBsb3N0IiB3aXRob3V0IGV4cGxhbmF0aW9uLCBub3cgaXQKCWludm9rZXMgdGhlIFdpbmUgZGVidWdnZXIpLiBJbnZva2VzIGludCAwOCB1cG9uIHJlY2VpcHQgb2YgZG9zbW9kCglTSUdBTFJNLCB0aHVzIHNpbXVsYXRpbmcgdGhlIERPUyB0aW1lci4gTWFkZSBET1MgaW50ZXJydXB0IGNhbGxzCgliZSByZXBvcnRlZCBieSAtZGVidWdtc2cgK3JlbGF5IGluc3RlYWQgb2YgLWRlYnVnbXNnICtpbnQuIEFuZAoJZml4ZWQgbm9uLWkzODYgY29tcGlsYXRpb24gb2YgZG9zbW9kLiAoQW55dGhpbmcgZWxzZT8hKQoKCSogbG9hZGVyL21haW4uYywgd2luZG93cy93aW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRGVza3RvcCB3aW5kb3cgcXVldWUgaGFuZGxpbmcgYWRhcHRlZC4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVF1ZXVlIGhhbmRsaW5nIGFkYXB0ZWQgdG8gbmV3IHF1ZXVlIHJvdXRpbmVzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3Rhc2suaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgc3R1YiBmb3IgSW5pdFRocmVhZElucHV0LgoJVXNlIEdldFRocmVhZFF1ZXVlL0dldEZhc3RRdWV1ZSBpbnN0ZWFkIG9mIEdldFRhc2tRdWV1ZS4KCgkqIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgQ2FsbG91dCB0YWJsZSBpbnN0ZWFkIG9mIGRpcmVjdCBHZXRQcm9jQWRkcmVzcy4KCVVzZXJZaWVsZCBtb3ZlZCB0byBVU0VSLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsb3V0IHRhYmxlIChmb3IgS0VSTkVMLT5VU0VSIGNhbGxzKSBhZGRlZC4KCUNhbGxiYWNrcy0+Q2FsbFBvc3RBcHBNZXNzYWdlUHJvYyByZW1vdmVkLgoKCSogbWlzYy9jYWxsYmFjay5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci90YXNrLmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIYW5kbGUgbm9uLWhhcmR3YXJlIFggZXZlbnRzIGNvcnJlY3RseSB3aXRoIG5hdGl2ZSBVU0VSCgkocmVtb3ZlZCByZWZlcmVuY2UgdG8gTUVTU0FHRVFVRVVFIGZyb20gS0VSTkVMIGNvZGUpLgoJSGFuZGxlIEV4cG9zZSBldmVudHMgd2l0aCBuYXRpdmUgVVNFUi4KCgkqIG1pc2MvY3J0ZGxsLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglCZXR0ZXIgX3VsdG9hKCkuCgoJKiB3aW4zMi90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXggc21hbGwgcHJvYmxlbSBpbiBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTG93ZXN0IHNjYW4gY29kZSBzZWVtcyB0byBiZSAxLCBub3QgemVyby4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YnMgZm9yIElEaXJlY3QzRCgyKTo6Q3JlYXRlTGlnaHQgYW5kIENyZWF0ZURldmljZSB0byBhdm9pZCBjcmFzaGVzLgoKCSogZGxscy9udGRsbC9ydGwuYywgcmVsYXkzMi9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZXMgY3Jhc2ggd2hlbiBydW5uaW5nIHdpdGhvdXQgZXh0ZXJuYWwgc2hlbGwzMi5kbGwuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIG1lc3NhZ2VzIFtMQl8qLEVNXypdIHRyYW5zbGF0ZWQgMzJBIGZyb20vdG8gMzJXLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglEZXN0IGJ1ZmZlciB3YXMgcHJpbnRlZCBvdXQgYXMgc3RyLgoKCSogbWlzYy92ZXIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglHZXR0aW5nIHN0cmluZ3Mgd2l0aCBWZXJRdWVyeVZhbHVlMzJXIHdhcyBicm9rZW4uIENvbXBsZXRlCglyZWNvbnN0cnVjdGlvbiBvZiB0aGUgZnVuY3Rpb24uCgoJKiBtaXNjL3Rvb2xoZWxwLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IG51bWJlciBhbmQgdHlwZSBvZiBhcmdzIGluIGRlYnVnZ2luZyBzdGF0ZW1lbnRzLgoKCSogb2xlL3N0b3JhZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAbXVkLmRlPgoJSVN0b3JhZ2UzMiB2dGFibGUgd2FzIG1pc3NpbmcgMyBzdHViIGVudHJpZXMuCgpGcmkgRGVjIDE4IDE3OjM4OjM5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2ZvbnQuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglEb2N1bWVudGF0aW9uIGZvciBUcmFuc2xhdGVDaGFyc2V0SW5mby4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGlmMTYzMi93cHJvY3Muc3BlYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSB0aGUgRE9TQVNQSSBwYXJ0IHVzZSB0aGUgZXhjZWxsZW50IERQTUkgUk1DQiBpbXBsZW1lbnRhdGlvbiBkb25lCglieSBPdmUgS2FhdmVuLCB3aGljaCBtYWtlcyB0aGUgY29kZSBfbXVjaF8gY2xlYW5lci4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCVVzZSAtbHdpbmUgZm9yIGxpbmtpbmcuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGFsd2F5cyBjbGVhciBRU18uLi4gZnJvbSAqYm90aCogY2hhbmdlQml0cyBhbmQgd2FpdEJpdHMuCglCdWdmaXg6IHF1ZXVlLT5oU2VuZGluZ1Rhc2sgaXMgKnF1ZXVlKiBoYW5kbGUsIG5vdCB0YXNrIGhhbmRsZS4KCgkqIGlmMTYzMi9zdG9yYWdlLnNwZWMsIGluY2x1ZGUvaW50ZXJmYWNlcy5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9zdG9yYWdlLmgsIG9sZS9pZnMuYywgb2xlL3N0b3JhZ2UuYzoKCUZyYW7nb2lzIEdvdWdldCA8Z291Z2V0QG1ldGFpbnRlZ3JhdGlvbi5uZXQ+CglGaXJzdCBzdGVwIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gY2FsbCBDT00gaW50ZXJmYWNlcyBmcm9tIEMrKyBjb2RlIGluCglXaW5lbGliLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJUHJlbGltaW5hcnkgdG9vbHRpcCBzdXBwb3J0LgoJV01fU0VURk9OVC9HRVRGT05UIGFkZGVkLgoJU29tZSBidWcgZml4ZXMuCglVc2UgQ09NQ1RMMzIgaGVhcCBpbnN0ZWFkIG9mIHN5c3RlbSBoZWFwLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBQb2x5bGluZVRvLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjOiBBZHJpYW4gSGFydmV5IDxhZHJpYW5Ac2VsZWN0LmNvbS5hdT4KCVRoZSBady4uLiBGdW5jdGlvbnMgaW4gbnRkbGwuZGxsIGFyZSBqdXN0IGFsdGVybmF0ZSBlbnRyeQoJcG9pbnRzIGZvciB0aGUgc2FtZSBmdW5jdGlvbnMgYXMgdGhlIE50Li4uIGZ1bmN0aW9uIG9mIHRoZQoJc2FtZSBuYW1lcy4gIENoYW5nZWQgbnRkbGwuc3BlYyB0byBtYXRjaCB0aGlzLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW9yZ2FuaXplZCBQRSBtb2R1bGUgbG9hZGluZyB0byBwcmVwYXJlIGZvciBlbGYtZGxsIGxvYWRlci4KCVdJTkVfTU9EUkVGIGNyZWF0aW9uIG1vdmVkIHRvIG9uZSBjZW50cmFsIGxvY2F0aW9uLgoJQnVnZml4OiBjb3JyZWN0bHkgc2VsZWN0IG5hdGl2ZS9idWlsdC1pbiB2ZXJzaW9uIGlmIC5ETEwKCWV4dGVuc2lvbiBpcyBtaXNzaW5nIGluIExvYWRMaWJyYXJ5IGNhbGwuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBlcnJvciB2YWx1ZXMgTUNJX0lOVEVSTkFMIHRvIHRoZWlyIGNvcnJlY3QgdmFsdWVzLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCB3YXJuaW5nLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgc2VuZGluZyBkaXJlY3RseSBtZXNzYWdlcyB0byBEcml2ZXJQcm9jIGJ1dCByYXRoZXIgZ28gdGhyb3VnaAoJTUNJIGxheWVyIChyZXF1aXJlZCBmb3Igb3Blbi9jbG9zZSkuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgaW5jb3JyZWN0IHBhdGNoIGZvciBNQ0lfT1BFTiBhbmMgTUNJX0NMT1NFIHBhcmFtZXRlcnMgKHRoYW5rcyB0byBSb2JlcnQgUmlnZ3MKCWZvciBwb2ludGluZyBvdXQgdGhlIGJ1Zywgc2VlIHRoZSBmaXggaW4gbWNpc3RyaW5nLmMpCglGaXhlZCBNQ0kgc2Vla2luZyBvbiBDRCBhdWRpby4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgV2FpdE5hbWVkUGlwZVtBfFddLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBDb250cm9sX0ZpbGxDYWNoZV9SdW5ETEwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNIR2V0RmlsZUluZm8zMkE6IGdldCBTSEdGSV9TWVNJQ09OSU5ERVggaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUlMQXBwZW5kIHNlZW1zIHRvIHdvcmsgbm93LgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgV2FpdE5hbWVkUGlwZVtBfFddLgoKVHVlIERlYyAxNSAxODowNDo1OCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IEdldFRlbXBQYXRoMzIgaWYgY291bnQ9MC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYzoKCVRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCS0gYWRkIC1sb3NzYXVkaW8gaWYgbmVlZGVkLCBhbmQgYSBjaGVjayBmb3IgPHNvdW5kY2FyZC5oPiwgdG8gY29uZmlndXJlLmluCgkgIChydW4gYXV0b2NvbmYgYWZ0ZXIgdGhpcykuICBOb3RlIHRoYXQgdGhlIGNoZWNrIGhhcyBiZWVuIGFsdGVyZWQgdG8gYnJlYWsKCSAgb3V0IG9mIHRoZSBBQ19DSEVDS19IRUFERVJTIGFmdGVyIHRoZSBmaXJzdCBtYXRjaCAtIHRoaXMgaXMgc28KCSAgPHN5cy9zb3VuZGNhcmQuaD4sIGlmIGZvdW5kIG9uIE5ldEJTRCAoYSBgcmVhbCcgT1NTKSwgd2lsbCBub3QgY29uZmxpY3QKCSAgd2l0aCB0aGUgZW11bGF0ZWQgb3NzYXVkaW8uCgktIGNoZWNrIGZvciA8c291bmRjYXJkLmg+IGFsb25nIHdpdGggdGhlIG90aGVyIHR3byBpbiBhIG11dHVhbGx5LWV4Y2x1c2l2ZQoJICBtYW5uZXIgaW4gdGhlIHZhcmlvdXMgKi5jIGZpbGVzIHRoYXQgbmVlZCBpdDsgY2hhbmdlIGluY2x1ZGUgb2YKCSAgIm1tc3lzdGVtLmgiIHRvICJtdWx0aW1lZGlhLmgiIHNvIHRoaXMgbG9naWMgaXMgYWxsIGluIG9uZSBwbGFjZQoJLSBjaGFuZ2UgbWNpY2RhLmMgdG8gYWxsb3cgZm9yIENEIGF1ZGlvIG1hbmlwdWxhdGlvbiBvbiBOZXRCU0QuICBUaGlzCgkgIGluY2x1ZGVzOgoJICAqIGNoYW5naW5nIGlvY3RsKCkgY2FsbHMgdG8gYmUgTk9OLVNQTElUIHdpdGggZXhhY3RseSAzIGFyZ3M7IG9uIE5ldEJTRAoJICAgIG9zc2F1ZGlvLCBpb2N0bCgpIGlzICNkZWZpbmVkIHRvIGJlIF9vc3NfaW9jdGwgYnkgPHNvdW5kY2FyZC5oPiwgYW5kCgkgICAgbmVpdGhlciBzcGxpdHRpbmcgd2l0aCAjLWRpcmVjdGl2ZXMgbm9yIGEgdHdvLWFyZyBpb2N0bCB3b3JrOwoJICAqIGNoYW5naW5nIHRoZSAjaWYgbG9naWMgdG8gYWxsb3cgYm90aCBGcmVlQlNEIGFuZCBOZXRCU0QgdG8gc2hhcmUgdGhlCgkgICAgYXBwcm9wcmlhdGUgY29kZSBibG9ja3MKCS0gYmxvY2sgb3V0IE1JREkgY29kZSBmb3IgTmV0QlNEIChpbml0LmMpIGFuZC9vciBtaXNzaW5nIFNORENUTF9NSURJX0lORk8KCSAgKG1pZGkuYywgbWNpbWlkaS5jKS4gIE5ldEJTRCdzIE9TUyBlbXVsYXRpb24gZG9lcyBub3QgKHlldCkgc3VwcG9ydCBNSURJLgoJVGhhbmtzIGdvIHRvIG15Y3JvZnRAbmV0YnNkLm9yZyBmb3IgdGhlIDk5JSBidWxrIG9mIHRoaXMgd29yay4KCgkqIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHV0aWwuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGluY2x1ZGUvdHNfeHV0aWwuaDoKCURpcmsgVGhpZXJiYWNoIDx0aGllcmJhY2hAbWF0aGVtYXRpay50dS1kYXJtc3RhZHQuZGU+CglTZXQgdGhlIGNsYXNzIGhpbnRzIGZvciBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBmaWxlcy9kb3NfZnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXg6IEdldEZ1bGxQYXRoTmFtZSBzZXRzIGxwRmlsZVBhcnQgb25seSB3aGVuIHRoZSBsYXN0IGVsZW1lbnQKCWRvZXMgbm90IGVuZCB3aXRoICdcJy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgbWlzYy9kZGVtbC5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGlmMTYzMi91c2VyLnNwZWM6CglQYXVsIFF1aW5uIDxwYXVscUBDT1JFTC5DQT4KCUxvdHMgb2YgbmV3IGRlZmluZXMgYW5kIHN0dWJzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJVGhlc2UgcGF0Y2hlcyBhZGQgc3VwcG9ydCBmb3IgLS1lbmFibGUtZGxsIG9uIE5ldEJTRCwgYW5kIG1heSBldmVuIGRvIHNvIGZvcgoJRnJlZUJTRCBhLm91dC4gIE5vdywgTmV0QlNEIGNhbiB1c2UgbGlid2luZSBhcyBhIHNoYXJlZCBvYmplY3QuICBUaGFua3MgdG8KCW15Y3JvZnRAbmV0YnNkLm9yZyBmb3IgZG9pbmcgdGhpcyB3b3JrIQoKCSogdG9vbHMvd3JjL3dyaXRlcmVzLmM6IFRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCUdsb2JhbCBjb25zdHJ1Y3RvcnMgdXNpbmcgYC5zZWN0aW9uIC5jdG9ycycgYXJlIGJvZ3VzIGZvciBOZXRCU0QncwoJYXNzZW1ibGVyLiBVc2UgdGhlIGFwcHJvcHJpYXRlIGAuc3RhYnMnIHdoZW4gb24gTmV0QlNELgoKCSogb2xlL3ZhcmlhbnQuYzogVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJVW5kZWZpbmVkIENIQVJfTUFYIGFuZCBDSEFSX01JTiAoI2RlZmluZWQgYnkgTmV0QlNEJ3Mgc3lzdGVtIGhlYWRlcnMpLgoJRml4ZWQgc29tZSBjb25zdGFudHMgdGhhdCBhcmUgdG9vIGJpZyBmb3IgYSBwbGFpbiBgaW50Jy4KCgkqIG9sZS92YXJpYW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE1BWEZMT0FUIGlmIEZMVF9NQVggaXNuJ3QgdGhlcmUuCgoJKiBncmFwaGljcy9wc2Rydi9NYWtlZmlsZS5pbjogVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJZ3JhcGhpY3MvcHNkcnYgZm9yZ2V0cyB0byBwdWxsIGluIEBETExGTEFHU0AsIGFuZCBzbyBpcyBjb21waWxlZCBub24tUElDIGlmCgl1c2luZyAtLWVuYWJsZS1kbGwuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCVZla3NsZXIgTWljaGFlbCA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglNb3ZlIGRlY2xhcmF0aW9ucyBmcm9tIHdpbmRvd3MuaCB0byB3aW5nZGkuaCBhbmQgd2ludXNlci5oLgoKTW9uIERlYyAxNCAxODoxNToxMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jLCBmaWxlcy9NYWtlZmlsZS5pbiwgZmlsZXMvYXN5bmMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2FzeW5jLmgsIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvc2lnbmFsLmMsIG1pc2Mvd2luc29ja19kbnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSBhc3luYyBJTyAoU0lHSU8pIHN0dWZmIGZyb20gV0lOU09DSyBnZW5lcmljIHVzZWFibGUuCglBZGRlZCBhc3luYyBJTyBzdXBwb3J0IHRvIEZJTEUgYW5kIENPTlNPTEUgb2JqZWN0cy4KCgkqIG1pc2Mvd2luc29jay5jOiBTdGVwaGVuIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJUHJldmVudCBzZWdmYXVsdCBpbiBzZXRzb2Nrb3B0IHdoZW4gb3B0bmFtZSBpcyBTT19MSU5HRVIgYW5kIG9wdHZhbCBpcwoJbnVsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNvbWUgY2xlYW51cC4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hNYXBQSURMVG9TeXN0ZW1JbWFnZUxpc3RJbmRleCB0cnkncyB0byBkZXRlcm1pbmUgYW5kIGxvYWQgdGhlIGV4YWN0CglpY29uIGZvciBmaWxlcyAoYnkgdHlwZSkgbm93LgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgSENSX0dldERlZmF1bHRJY29uIChpbnRlcm5hbCkuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIERQTUkgd3JhcHBlciBhbGxvY2F0aW9uIGNvZGUgdG8gZG9zbWVtLmMgdG8gUkVBTExZIG1ha2UgdGhlCglSTWNhbGwgc2hvcnRjdXRzIGluZGVwZW5kZW50IG9mIGRvc21vZC4gU1MgaGFkIGJlZW4gbGVmdCBvdXQgb2YKCXRoZSBSRUFMTU9ERUNBTEwgY29weSByb3V0aW5lcyBmb3Igc29tZSByZWFzb24sIGZpeGVkIG5vdy4gQWxzbwoJY2xlYW5lZCB1cCBhIGZldyBjb21waWxlciB3YXJuaW5ncy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCUFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBYIGZvbnRzIHVzZWQgZm9yIEhlbHYgYW5kIFRtcyBSbW4gdHlwZWZhY2VzCgl3aXRoIERlZmF1bHRTZXJpZiBhbmQgRGVmYXVsdFNhbnNTZXJpZiBJTkkga2V5cy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JpdGVyZXMuYywgdG9vbHMvd3JjL0NIQU5HRVM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJLSBBZGRlZCBhIGdsb2JhbCBsYWJlbCBmb3IgZWxmLWRsbCBsaW5raW5nIGFuZCBhIGxvbmcgd2l0aCB0aGUgcmVzb3VyY2UKCSAgc2l6ZSBhbmQgYSBsb25nIHdpdGggdGhlIGRpcmVjdG9yeSBzaXplLgoJLSBLaWxsZWQgYW4gYW5ub3lpbmcgd2FybmluZyBzaW5jZSB2ZXJzaW9uIDEuMC4wIGluIHBhcnNlci55IGFib3V0IGEKCSAgdmFyIGJlaW5nIHVzZWQgYmVmb3JlIGluaXQuCgoJKiBpbmNsdWRlL3NobG9iai5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRzIHRoZSBJUGVyc2lzdEZpbGUgSW50ZXJmYWNlIHRvIElTaGVsbExpbmtbV10gYW5kIGdhdmUgYm90aCBvd24KCUlDbGFzc0ZhY3RvcnlzLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCShSZWFkQ29uc29sZTMyQSk6IHNtYWxsIGFuZCBzdHVwaWQgYnVnIGZpeGVkCgkoV3JpdGVDb25zb2xlT3V0cHV0KTogYnVnIGZpeGVkIChhdHRyaWJ1dGVzIG1heSBjaGFuZ2Ugd2l0aGluIGxpbmVzKQoJYW5kIGVuaGFuY2VkIHNwZWVkd2lzZSBieSB1c2luZyBidWZmZXJpbmcuCgkoQ09OU09MRV9zdHJpbmdfMl9JUik6IGVuaGFuY2VkLCBub3cgZ2V0cyBzY2FuY29kZXMgYW5kIHZpcnR1YWxrZXljb2RlcwoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJX3VsdG9hIGltcGxlbWVudGVkLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgaGFjayB0byBnZXQgcmlkIG9mIGFubm95aW5nIGVycjpyZXNvdXJjZTogbWVzc2FnZSBmb3IKCU1lc3NhZ2VCb3hlcy4KCgkqIHJlbGF5MzIvZHNvdW5kLnNwZWM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUZpeCBvZmYtYnktMSBlcnJvciBpbiBEaXJlY3RTb3VuZCBvcmRpbmFscy4gVGhhbmtzIHRvIFJvYmVydCBSaWdncyBmb3IKCXRoZSBwb2ludGVyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglTYXZlIHRoZSBvcmlnaW5hbCB2aWRlbyBtb2RlIGJlZm9yZSBnb2luZyBmdWxsc2NyZWVuIGFuZCByZXN0b3JlIGl0Cgl3aGVuIHRoZSBsYXN0IERpcmVjdERyYXdfUmVsZWFzZSBpcyBjYWxsZWQuIEFsc28gZml4IGEgcHJvYmxlbSB3aGVyZQoJdGhlIHZpZXdwb3J0IHdhc24ndCBzZXQgdG8gMCwwLgoKCSogY29uc29sZS94dGVybS5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU1hZGUgbW9yZSBjcm9zcy1wbGF0Zm9ybSBieSBjaGFuZ2luZyAtPl9maWxlbm8gdG8gZmlsZW5vKCkuCgoJKiB3aW5kb3dzL3dpbi5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeCB0aGUgWi1vcmRlciBvZiBtYXhpbWl6ZWQvbWluaW1pemVkIGNoaWxkIHdpbmRvd3MuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJWExGRHMgc2hvdWxkIGJlIHdlbGwtZm9ybWVkICgxNCBoeXBoZW5zKSB0byBtYXRjaCBzY2FsYWJsZSBmb250cy4KCVN0b3Agc2xhbnQgZmllbGQgYmVjb21pbmcgd2lsZGNhcmRlZCB0b28gZWFybHkuCgoJKiB3aW5kb3dzL2ZvY3VzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJKEZPQ1VTX1N3aXRjaEZvY3VzKSBjaGVjayBmb3IgcEZvY3VzVG8gPT0gTlVMTCBpbnN0ZWFkIG9mIGhGb2N1c1RvPT0wLgoKCSogb2xlL29sZTJubHMuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglIYWNrIE9MRV9HZXRGb3JtYXQqIHRvIHJldHVybiBzb21ldGhpbmcgaWYgZGF0ZWxlbiA9IDAuCglSZW1vdmUgdW5uZWNlc3NhcnkgV0lOQVBJJ3MuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZyaSBEZWMgMTEgMTU6MDQ6MTEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RsaGVscDMyLmgsIGluY2x1ZGUvdG9vbGhlbHAuaCwgbWlzYy90b29saGVscC5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglQYXRyaWNrIFNwaW5sZXIgPHNwaW5sZXIucGF0cmlja0BtYXlvLmVkdT4KCUltcGxlbWVudGVkIENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdCwgaW5jbHVkaW5nIHR3byBvZiB0aGUgcm91dGluZXMKCXVzaW5nIHNuYXBzaG90cywgUHJvY2VzczMyRmlyc3QgYW5kIFByb2Nlc3MzMk5leHQuCgoJKiByZWxheTMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBvbGUvY29tcG9iai5jLCBvbGUvdmFyaWFudC5jOgoJSnVzdGluIEJyYWRmb3JkIDxqdXN0aW5AdWthbnMuZWR1PgoJTW9zdCBvZiB0aGUgY3VycmVuY3kgdmFyaWFudCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZC4KCU1pbm9yIGJ1Z2ZpeGVzIGFuZCBoZWFkZXIgdGlkeWluZy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3Jhcy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIHJlbGF5MzIvcmFzYXBpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgUmFzRW51bUNvbm5lY3Rpb25zIHN0dWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4IGluIFBhdGhDb21iaW5lMzJbQXxXXS4KCVZpZXcgbWVudSBpbiBleHBsb3JlciBhbmQgb24gcmlnaHQgbW91c2UgYnV0dG9uIGlzIHdvcmtpbmcgbm93LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCAgSUxHZXREaXNwbGF5TmFtZS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdGFydGVkIGltcGxlbWVudGF0aW9uIG9mIFNoZWxsRXhlY3V0ZUV4MzJBLgoJU21hbGwgY2hhbmdlcy4KCgkqIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgbWVudSByZXNvdXJjZXMgdG8gcmMtZmlsZS4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgb2xlL29sZTJubHMuYywgd2luMzIvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUd28gZGVidWcgbWVzc2FnZXMgY2xhcmlmaWVkLCBvbmUgdXNlbGVzcyBwcm90b3R5cGUgcmVtb3ZlZC4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBvbGUvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkyOTQgbWlzc2luZyBXSU5BUEkgYWRkZWQuCgoJKiB0b29scy90ZXN0cnVuOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUtpbGwgc3dhcHBlZCBvdXQgKHdpbmUpIHByb2Nlc3NlcyB0b28gYW5kIHRydW5jYXRlIGRpZmYgYWZ0ZXIgc29tZSB4eHgKCWxpbmVzLgoKCSogb2xlL29sZTJubHMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBTZXRMYXN0RXJyb3Igd2l0aCB3cm9uZyB2YWx1ZS4KCgkqIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBncmFwaGljcy9wYWludGluZy5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IEFib3J0RG9jMTYsIG1vdmUgQWJvcnREb2MzMiBhbmQgU3RhcnREb2MzMlcgdG8KCW1pc2MvcHJpbnRkcnYuYyBhbmQgZml4IGEgZmV3IGNvbXBpbGUgd2FybmluZ3MuCgoJKiB3aW4zMi9vcmRpbmFscy5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvbnRkbGwvbnQuYywgaWYxNjMyL3R5cGVsaWIuc3BlYywgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2ludDIxLmMsIG9sZS9vbGUybmxzLmMsIG9sZS90eXBlbGliLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBhIGJ1bmNoIG9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZmlsZXMvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFdpbjMyIHN5bmNocm8gdG8gRklMRXMgKHVzZWZ1bCBvbmx5IGZvciB0ZXJtaW5hbCBoYW5kbGVzKS4KClRodSBEZWMgMTAgMTY6MDQ6NTEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCByZWxheTMyL2NvbWN0bDMyLnNwZWMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL21wci5zcGVjLCByZWxheTMyL3NoZWxsMzIuc3BlYywgcmVsYXkzMi90YXBpMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgcmVsYXkzMi93aW5zcG9vbC5zcGVjLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL3RpbWUuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpZjE2MzIvZGRlbWwuc3BlYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9kZGVtbC5jLCBtaXNjL25ldHdvcmsuYywgbWlzYy9wcmludGRydi5jLCBtaXNjL3RhcGkzMi5jLCBjb250cm9scy9lZGl0LmMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVN5bHZhaW4gU3QtR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJTG90cyBvZiBuZXcgc3R1YnMuCgoJKiBtc2Rvcy92eGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMZXQgdGhlIFN5c3RlbV9UaW1lX1NlbGVjdG9yIGNsb2NrIHRpY2suCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjZW11L2luc3RyLmMsIG1zZG9zL2Rvc21lbS5jLCBncmFwaGljcy9kaXNwZGliLmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS92Z2EuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBDcmVhdGVTeXN0ZW1UaW1lciBpbnRlcmZhY2UgY2hhbmdlLgoKCSogaWYxNjMyL3N5c3RlbS5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgbWlzYy9jYWxsYmFjay5jLCBtaXNjL3N5c3RlbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDbGVhbmVkIHVwIENyZWF0ZVN5c3RlbVRpbWVyIGludGVyZmFjZSBmb3IgdXNlIHdpdGggMzItYml0IGNhbGxiYWNrcy4KCShOT1RFOiAxNi1iaXQgY2FsbGJhY2tzIHN0aWxsIGRvbid0IHdvcmshKQoKCSogd2luZG93cy9tZGkuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CgktIEhhbmRsZSBXTV9NRElSRVNUT1JFIGJ5IGNhbGxpbmcgV01fU1lTQ09NTUFORCBmb3IKCXRoZSBjaGlsZCB3aW5kb3cgc28gdGhhdCB0aGUgc3lzdGVtIG1lbnUgaXMgc2V0IGNvcnJlY3RseS4KCS0gSW4gTURJQ2FzY2FkZSBhbmQgTURJVGlsZSB1c2UgV01fTURJUkVTVE9SRSBtZXNzYWdlCgl0byByZXN0b3JlIG1heGltaXplZCB3aW5kb3cgc28gdGhhdCBzeXN0ZW0gbWVudSBpcwoJaGFuZGxlZCBjb3JyZWN0bHkuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS90eXBlbGliLmMsIG9sZS92YXJpYW50LmMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCUplYW4tQ2xhdWRlIENvdGUgPGplYW4tY2xhdWRlQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFZBUklBTlQgQVBJcy4KCgkqIGZpbGVzL2RyaXZlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIERSSVZFX0dldEZyZWVTcGFjZSB0byBoYW5kbGUgc3BhY2UgPiA0IEdCeXRlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJaGFuZGxlIFRWSUZfVEVYVCBieSBUUkVFVklFV19TZXRJdGVtIGFjY29yZGluZyB0byBNUyBkb2N1bWVudGF0aW9uLgoJYmV0dGVyIGhhbmRsaW5nIG9mIExQU1RSX1RFWFRDQUxMQkFDSzMyQQoJVFJFRVZJRVdfR2V0TmV4dHxQcmV2TGlzdEl0ZW0gZGlkbid0IGRlc2NlbmQgaW50byB2aXNpYmxlIGNoaWxkIGl0ZW1zLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2FybiBpZiB0d28gLmV4ZXMgY29uZmxpY3Qgd2l0aCBlYWNoIG90aGVyIGFuZCB0aGUgc2Vjb25kIGRvZXMgbm90CgloYXZlIHJlbG9jYXRpb24gcmVjb3Jkcy4KCgkqIG1pc2MvY29tbWRsZy5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBHZXRGaWxlVGl0bGUzMkEgbm90IGZpbGxpbmcgdXAgbHBUaXRsZSBpZiBscEZpbGUgZGlkbid0Cgljb250YWluICcvJywnXFwnIG9yICc6Jy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJRml4ZWQgYSBwb3RlbnRpYWwgY3Jhc2ggaWYgYSB1c2FibGUgdmlkZW8gbW9kZSBpcyBub3QgZGV0ZWN0ZWQuCgoJKiB0b29scy9tYWtlX2F1dGhvcnM6IFNjcmlwdCB0byBnZW5lcmF0ZSBhdXRob3JzIGZpbGVzCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJU3R1YnMgZm9yIElEaXJlY3RJbnB1dEVmZmVjdCBhbmQgSURpcmVjdElucHV0RGV2aWNlMkEgbWV0aG9kcywKCWFzIHdlbGwgYXMgQWRkUmVmKCksIEdldENhcGFiaWxpdGVzKCksIEVudW1PYmplY3RzKCksCglHZXRQcm9wZXJ0eSgpLCBHZXRPYmplY3RJbmZvKCksIEdldERldmljZUluZm8oKSwgSW5pdGlhbGl6ZSgpLAoJYW5kIFJ1bkNvbnRyb2xQYW5lbCgpIGZvciBJRGlyZWN0SW5wdXREZXZpY2UuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJU2V0IHdpbmRvdyBmb2N1cyBpbiAgX2NvbW1vbl9JRGlyZWN0RHJhd19TZXREaXNwbGF5TW9kZSgpLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCUFjY2VwdCBNQ0lfT1BFTiBhbmQgTUNJX0NMT1NFIG1lc3NhZ2VzIGluIE1DSUNEQVVESU9fRHJpdmVyUHJvYzMyKCkuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBkZWZlcnJlZCBFeHBvc2UgZXZlbnRzIGhhbmRsaW5nLgoKCSogd2luZG93cy9kY2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjbGlwIFZpc1JnbiBhZ2FpbnN0IFggZGVza3RvcC4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMb2FkTW9kdWxlMzIvV2luRXhlYzMyIHNob3VsZCByZXR1cm4gMTYtYml0IGhJbnN0YW5jZS9oVGFzay4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTYW5pdHkgY2hlY2sgb24gZm9udCBzaXplLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgcGFyZW50aGVzZXMgYWRkZWQuCgpXZWQgRGVjICA5IDE2OjM3OjA1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvdGFzay5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS93aW5jb24uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW5oYW5jZWQgV2luMzIgQ29uc29sZSAoWFRFUk0pCgktIGlucHV0aGFuZGxpbmcgZW5oYW5jZWQgKGtleXMgYW5kIG1vdXNlY2xpY2tzKQoJLSB3aW4zMiBzeW5jaHJvbml6YXRpb24gKHBhcnRpYWwpCgktIGxvdHMgb2YgZW5oYW5jZW1lbnRzIHRvIGRyYXdpbmcgZnVuY3Rpb25zCgktIHNpbXBsZS9jb21wbGV4IGNvbnNvbGUgKHNpbXBsZS1zdGRpbi9zdGRvdXQgLT4gY29tcGxleC14dGVybSkuCgoJKiBjb25zb2xlL01ha2VmaWxlLmluLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGNvbnNvbGUveHRlcm0uYywgaW5jbHVkZS9jb25zb2xlLmg6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZCBhIGRyaXZlciB0byBvcGVuIHVwIGEgbmV3IHh0ZXJtIHdpbmRvdyB3aGVuZXZlciBjb25zb2xlIG91dHB1dCBpcwoJbmVlZGVkLiBEZXJpdmVkIGZyb20gY29uc29sZS93aW4zMi5jIGJ1dCB3ZSBhcmUgbm90IHlldCByZWFkeSB0byBtZXJnZQoJdGhlIGNvZGUgY29tcGxldGVseS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmRvd3MuaCwgdG9vbHMvZm50MmJkZi5jOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglJbXByb3ZlZCB0aGUgaGFuZGxpbmcgb2YgZm9udCBlbmNvZGluZ3MuCgoJKiBtc2Rvcy9kcG1pLmMsIGluY2x1ZGUvbWlzY2VtdS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIERQTUkgUk1DQnMgdXNpbmcgdGhlIERPUyBzdWJzeXN0ZW0sIGFuZCBhIGZldyBvdGhlcgoJaW1wcm92ZW1lbnRzLiBBbHNvLCBzb21lIHNwZWNpYWwtY2FzZWQgc2hvcnRjdXQgcGF0aHMgd2lsbCBhbGxvdyBzb21lCgljb21tb24gcmVhbC1tb2RlIGNhbGwvUk1DQiBjb21iaW5hdGlvbnMgdG8gd29yayBldmVuIHdpdGhvdXQgY2FsbGluZyB0aGUKCURPUyBzdWJzeXN0ZW0sIHRodXMgbGV0dGluZyBBUElzIGxpa2UgRE9TQVNQSSB3b3JrIHdpdGhvdXQgYW55IGRpcnR5IGhhY2tzCglldmVuIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCB1c2UgZG9zbW9kLgoKCSogbXVsdGltZWRpYS90aW1lLmMsIG9sZS9jb21wb2JqLmMsIGZpbGVzL2NoYW5nZS5jLCBsb2FkZXIvbW9kdWxlLmMsIG1pc2MvbHpleHBhbmQuYywgbWlzYy9tYWluLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgdW5uZWNlc3NhcnkgI2luY2x1ZGUgYW5kIG1lc3NhZ2VzIHJlbW92ZWQuCgoJKiBvbGUvb2xlMm5scy5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTb21lIHNtYWxsIGNvcnJlY3Rpb25zIHRvIEVudW1TeXN0ZW1Mb2NhbGVzMzJBVwoKVHVlIERlYyAgOCAxNTowNjozOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglUcmllZCBhbm90aGVyIGtsdWRnZSBmb3IgdGhlIFhtZC5oIHByb2JsZW0uCgoJKiB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKCVN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJQWRkZWQgZnVsbHNjcmVlbiBER0Egc3VwcG9ydC4KCgkqIG1pc2MvbWFpbi5jOiBQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUZpeGVkIGR1bW15IGVudHJpZXMgaW4gTUFJTl9QYXJzZUxhbmd1YWdlT3B0aW9uKCkuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIG11bHRpbWVkaWEvbWNpY2RhLmM6CglCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgTUNJX0NEQV9TVEFUVVNfVFlQRV9UUkFDSy4KCUZpeCBhbiBvZmYtYnktb25lIGJ1ZyB3aXRoIE1DSV9TVEFUVVNfTEVOR1RILgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBlcmZsb3VzIFdJTkFQSSByZW1vdmVkLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2FybiBhYm91dCBpbnZhbGlkIGVudHJ5cG9pbnRzIChjcmVhdGVkIGJ5IHZpcnVzZXMpIHdoaWNoIHJlc3VsdCBpbgoJV2luZSBjcmFzaGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGUgWDExIHBhbGV0dGUgb24gRGlyZWN0RHJhd1N1cmZhY2U6OlNldFBhbGV0dGUsIG5vdCBiZWZvcmUgKHdlCgltaWdodCBub3QgaGF2ZSBhbiBYMTEgd2luZG93IHlldCkuCgoJKiBsb2FkZXIvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmUgVFdFQUtfSW5pdCBmcm9tIFVTRVIgdG8gR0RJSW5pdC4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS93aW5kb3dzLmgsIG1pc2MvcHJpbnRkcnYuYywgbWlzYy9zcG9vbGVyLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IGZvciBTZXRBYm9ydFByb2MxNiwgc3R1YiBmb3IgU2V0QWJvcnRQcm9jMzIgYW5kIHRpZHkgdXAgc29tZSBvdGhlcgoJcHJpbnRpbmcgZnVuY3Rpb25zLgoKCSogd2luZG93cy9mb2N1cy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBpbmNsdWRlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBYMTFEUlZfRXh0VGV4dE91dCBmb3Igcm90YXRlZCB0ZXh0IGlmIGVpdGhlciBvZiBscER4LCBicmVha0V4dHJhCglvciBjaGFyRXh0cmEgYXJlIG5vbi16ZXJvLgoKCSogaW5jbHVkZS9BdHRpYy9ncmFwaGljcy5oLCBtaXNjL3NoZWxsLmMsIHdpbmRvd3MvQXR0aWMvZ3JhcGhpY3MuYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zY3JvbGwuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglSZXBsYWNlIEdSQVBIXyBmdW5jdGlvbnMgd2l0aCBXaW4gU0RLIGVxdWl2YWxlbnRzLgoKTW9uIERlYyAgNyAxNjoyMzo0MiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFsZXhhbmRlciBMYXJzc29uIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJUmV2ZXJ0ZWQgcHJldmlvdXMgcGF0Y2guCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IGRlZmluZSBNWl9TVVBQT1JURUQgb24gbm9uLWkzODYgcGxhdGZvcm1zLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIERQTUlfQ2FsbFJNUHJvYyAoSSB0aGluaykuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgTlBTR2V0UHJvdmlkZXJIYW5kbGVBLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogQnJpYW4gR2Vyc3QgPGJnZXJzdEBxdWFyay52cHBsdXMuY29tPgoJVGhlIHNjYW5jb2RlIFdpbmRvd3Mgc2VuZCBmb3IgZXh0ZW5kZWQga2V5cyBpcyB0aGUgc2NhbmNvZGUgb2YgdGhlCgl1bmV4dGVuZGVkIGVxdWl2YWxlbnQgb2YgdGhlIGtleSwgcGx1cyB0aGUgZXh0ZW5kZWQgZmxhZy4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGEgcmVhbCBtb2RlIHByb2JsZW0uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglORV9NT0RVTEUuc3RhY2tfc2l6ZSB3YXMgc2V0IHRvIGEgcmlkaWN1bG91c2x5IHNtYWxsIHZhbHVlIG9mIDUuCglXaW5kb3dzIHNldHMgMHgxNDAwIGluIHN1Y2ggY2FzZXMgZm9yIHByb2dyYW1zLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJV2UgZG9uJ3QgeWV0IHdhbnQgdGhlIHN0YXRpYyBjb250cm9sIHRvIGNhbGwgRGVzdHJveUljb24uCgoJKiB3aW5kb3dzL2NsYXNzLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJQWRkZWQgY2FzZSBmb3IgR0NXX0FUT00gaW50IEdldENsYXNzTG9uZzMyQS4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOiBHYWVsIGRlIENoYWxlbmRhciA8Z2FlbEBsaW1zaS5mcj4KCVN0dWIgZm9yIFdOZXRPcGVuRW51bTMyVy4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmMsIHJlbGF5MzIvZHNvdW5kLnNwZWM6CglSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJTW9yZSBnZW5lcmFsIGNvZGUgY2xlYW51cCBmb3IgcmVhZGFiaWxpdHkuCglBIGZldyBtb3JlIHBhcmFtZXRlciB2YWxpZGF0aW9uIGNoZWNrcy4KCVJldHVybiBEU19PSyByYXRoZXIgdGhhbiAwIGluIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucy4KCUZpeGVkIHByaW1hcnkgYnVmZmVyIHJlZiBjb3VudCBidWcgaW4gQ3JlYXRlU291bmRCdWZmZXIoKS4KCUhhbmRsZSAxLTMgYnl0ZSBzb3VuZCBmcmFnbWVudHMgdGhhdCB3b3VsZCBjYXVzZSBidWZmZXIgb3ZlcnJ1bnMuCglDbGVhciBwcmltYXJ5IGJ1ZmZlciB3aXRoIGEgbmV1dHJhbCB2YWx1ZSBpbnN0ZWFkIG9mIGFsd2F5cyAwCgkoYmVjYXVzZSAxMjggaXMgbmV1dHJhbCBmb3IgOC1iaXQgc291bmQpLgoJRml4IGJ1ZyB3aXRoIG1peGluZyA4LWJpdCBzb3VuZCBpbnRvIHRoZSBwcmltYXJ5IGJ1ZmZlci4KCUJyb2tlIG91dCB0aGUgbWFpbiBibG9jayBpbiBEU09VTkRfdGhyZWFkKCkgdG8gYW5vdGhlciBmdW5jdGlvbiBmb3IKCXJlYWRhYmlsaXR5LgoJSGFuZGxlICJubyBhdWRpbyIgYW5kICJhdWRpbyBidXN5IiBjYXNlcyBwcm9wZXJseSB3aGVuIGluaXRpYWxpemluZwoJZHNvdW5kLiBSZW5hbWUgRGxsQ2FuVW5sb2FkTm93KCkgdG8gRFNPVU5EX0RsbENhblVubG9hZE5vdygpLgoKCSogZGVidWdnZXIvaGFzaC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgdmFyaWFibGVzIG9wdGltaXplZCBpbnRvIHJlZ2lzdGVycyBhY2Nlc3NpYmxlLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRoZSBzcGVjIGRlZmluaXRpb24gZm9yIE1vbml0b3JGcm9tV2luZG93IHdhcyB3cm9uZy4KCgkqIG1zZG9zL2ludDIxLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJRmlsZSBoYW5kbGUgYnVnIGZpeC4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgcGFyYWdyYXBoIGFib3V0IGRpZmZlcmVudCBkbGwgdmVyc2lvbnMgYW5kIHN0cnVjdHVyZSBzaXplcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIG1pc3NpbmcgVE9PTElORk8gc3RydWN0dXJlLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBhIGhlYXAgYnVnLgoKCSogbG9hZGVyL3Rhc2suYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL2NhbGxiYWNrLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvdnhkLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIFNldmVyYWwga2VybmVsLnNwZWMgcmV0dXJuIHR5cGUgbWlzbWF0Y2ggZml4ZXMKCS0gW0dTXWV0U2VsZWN0b3JCYXNlIFdpbjMycyBvZmZzZXQgc3VwcG9ydCBieSBVbHJpY2ggV2VpZ2FuZCAodGhhbmtzIHYubS4gISEpCgktIE1vdmUgQXBwVG9XaW5lL1dpbmVUb0FwcCBtYWNyb3MgYXMgVzMyU19BUFAyV0lORSBldGMuIHRvIGxkdC5oCgktIExvY2FsTm90aWZ5KCkgYmFzaWMgc3VwcG9ydAoJLSBGaXhlcyBmb3IgbG9jYWwgaGVhcCBoYW5kbGluZyB3aXRoIGhlYXAgaGFuZGxlcyBjcmVhdGVkIGJ5IFZpcnR1YWwqKCkKCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IC1taWNyb3NvZnQtc3ltYm9sIGVuY29kaW5nIHdhcyBub3QgcmVjb2duaXplZC4KCgkqIHdpbmRvd3Mvd2luLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBXSU5fUmVzZXRRdWV1ZVdpbmRvd3Mgd291bGQgc2tpcCBzb21lIHdpbmRvd3MuCgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IHJlY3Vyc2l2ZWx5IHJlZW50ZXJpbmcgQ0FMTDMyX0xhcmdlU3RhY2suCgoJKiBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi8uY3ZzaWdub3JlLCB3aW5kb3dzL3R0eWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy90dHlkcnYvd25kLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgdGhlIG5ldyBUVFkgZHJpdmVyLgoKCSogaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIG1vcmUgY29kZSB0byB0aGUgWDExIGRyaXZlci4KClRodSBEZWMgIDMgMTY6Mjk6NTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI5LmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUNhbGwgdGhlIG5ldyBjb25zb2xlIGRyaXZlciBmb3Igc29tZSByb3V0aW5lcy4gVGhpcyBpcyBub3QgY29tcGxldGVseQoJZG9uZSB5ZXQgYW5kIG1vcmUgZm9yIHRlc3RpbmcgcHVycG9zZXMuCgpXZWQgRGVjICAyIDE5OjU4OjA5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGNvbnNvbGUvLmN2c2lnbm9yZSwgY29uc29sZS9NYWtlZmlsZS5pbiwgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3R0eS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGRlZCBjb25zb2xlIHN1cHBvcnQuCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIGxvYWRlci9tYWluLmMsIG9iamVjdHMvQXR0aWMvb2VtYml0bWFwLmMsIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3ZlIE9FTSByZXNvdXJjZXMgdG8gdGhlIHgxMWRydi4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxsYUBseXNhdG9yLmxpdS5zZT4KCU9wZW5pbmcgYSBmaWxlIGluIGEgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3QgcmV0dXJucwoJRVJST1JfRklMRV9OT1RfRk9VTkQgaW5zdGVhZCBvZiBFUlJPUl9QQVRIX05PVF9GT1VORC4KCgkqIG1lbW9yeS9hdG9tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIGF0b21zICIjIG5vbiBudW1iZXIiIChvcmFjbGUgY2xpZW50KS4KClR1ZSBEZWMgIDEgMTY6MjM6MTkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWlzYy9lcnJvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW5hbWVkIEtFUk5FTC4zMjcgdG8gSGFuZGxlUGFyYW1FcnJvciAoYXMgaW4gJ1VuZG9jLiBXaW5kb3dzJykuCglGaXhlZCB3cm9uZyBvcmRpbmFscy9wcm90b3R5cGUgZm9yIE1hcFByb2Nlc3NIYW5kbGUvR2V0TW9kdWxlRmlsZU5hbWUzMi4KCUFkZGVkIG5hbWVzIGZvciBzb21lIHVuZG9jdW1lbnRlZCBleHBvcnRzLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgR2xvYmFsQ2hhbmdlTG9ja0NvdW50IChLRVJORUwuMzY1KS4KCgkqIGlmMTYzMi90b29saGVscC5zcGVjLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1lbW9yeS9oZWFwLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIExvY2FsMzJJbmZvLCBzdHVicyBmb3IgTG9jYWwzMkZpcnN0L05leHQgKEtFUk5FTC40NDQtNDQ2KS4KCgkqIGlmMTYzMi9nZGkuc3BlYywgb2JqZWN0cy9nZGlvYmouYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgR2RpRnJlZVJlc291cmNlcyAoR0RJLjYwOSkuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCUZpeGVkIDgtYml0IFdBViBmb3JtYXQgaGFuZGxpbmcgKGl0IGlzIHVuc2lnbmVkIGRhdGEpLgoJRml4ZWQgb2ZmLWJ5LW9uZSBjaGVja3MgZm9yIGJ1ZmZlciB3cmFwLgoJSW5jcmVtZW50IHJlZiBjb3VudCBmb3IgcHJpbWFyeSBidWZmZXIgaW4gQ3JlYXRlU291bmRCdWZmZXIoKS4KCUFkZGVkIERTQlBOX09GRlNFVFNUT1Agc3VwcG9ydCB0byBwb3NpdGlvbiBub3RpZmljYXRpb24gY29kZS4KCUxvdHMgb2YgbWlub3IgcGFyYW1ldGVyIHZhbGlkYXRpb24gY2hlY2tzLgoJU3R1YnMgZm9yOiBJRGlyZWN0U291bmRfaW5pdGlhbGl6ZSgpLCBJRGlyZWN0U291bmRfQ29tcGFjdCgpLAoJYW5kIElEaXJlY3RTb3VuZF9HZXRTcGVha2VyQ29uZmlnKCkuCglGaXhlZCBmcmVxIHNoaWZ0aW5nIHdpdGggMTYtYml0IGRhdGEgcHJvYmxlbSwgZml4ZWQgOGJpdDwtPjE2Yml0Cgljb252ZXJzaW9uLgoJTG90cyBvZiB0aHJlYWQgbG9ja2luZyBmb3IgRGlyZWN0U291bmQgYnVmZmVycy4KCURlYWxsb2MgcHJpbWFyeSBidWZmZXIgd2hlbiBkc291bmQgaXMgZGVhbGxvY2F0ZWQuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0aGUgVEVYVCgpIGFuZCBNQUtFTFJFU1VMVCgpIGRlZmluaXRpb25zLgoKCSogd2luZG93cy9xdWV1ZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGNoYW5nZS4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglSZXZlcnQgbWlzZ3VpZGVkIGNoYW5nZSB0byBpbnN0YWxsX2xpYiB0aGF0IGJyb2tlIC1kaXNhYmxlLWxpYgoJY29uZmlndXJlIG9wdGlvbi4KCgkqIG1pc2MvbWFpbi5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHBhcmFtZXRlciBTUElfR0VURFJBR0ZVTExXSU5ET1cuCglPbmUgbWlzc2luZyBicmVhayBpbiBTUElfR0VURFJBR0ZVTExXSU5ET1cuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZ1bmN0aW9ucyBJTEdsb2JhbENsb25lL0lMR2xvYmFsRnJlZS4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmc6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZCBhIG5vdGUgYWJvdXQgV2luUHJpbnRlcnMuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIHJlbGF5MzIvb2xlMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBzdHVicywgc29tZSBwdHItPnN0ciBjb252ZXJzaW9ucy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaCwgcmVsYXkzMi9kZHJhdy5zcGVjOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGRlZmluaXRpb24gb2YgRGlyZWN0RHJhd0NyZWF0ZUNsaXBwZXIuCgktIG1vcmUgdmVyc2F0aWxlIHN1cHBvcnQgb2Ygc3VyZmFjZXMgLyBiZXR0ZXIgc3VyZmFjZSBkZXNjcmlwdGlvbiBzdXBwb3J0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdyb25nIHBhcmFtZXRlciBjb3VudCBmb3IgU0hDaGFuZ2VOb3RpZnlEZXJlZ2lzdGVyLCAgU0hGcmVlVW51c2VkTGlicmFyaWVzLgoJTmV3IGZ1bmN0aW9ucyBQYXJzZUZpZWxkLCBHZXQvU2V0SW5zdGFuY2VFeHBsb3JlcigpLCBQYXRoSXNVTkMsIFBhdGhJc1JlbGF0aXZlLgoJU3R1YnMgU0hXYWl0Rm9yRmlsZVRvT3BlbiwgUGF0aEZpbmRPblBhdGguCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGNoYW5nZXMgdG8gcHJpbnQgdGhlIHN0cmluZ3MgaW4gdGhlIHJlbGF5LXRyYWNlLgoKCSogd2luZG93cy9jbGFzcy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCVRoZSBjbGFzcyBuYW1lIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIGdldHB0ci4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1lbW9yeS9zdGF0dXMgcmVjb3Zlcnkgd2hlbiBlcnJvciBvY2N1cmVkIGluIE1JRElfbWNpT3Blbi4KCUZpeGVkIHN1cHBvcnQgZm9yIFJNSUQgZmlsZXMgaW4gTUlESV9tY2lPcGVuLgoJRml4ZWQgYnVnIGZvciBwbGF5aW5nIE1JREkgZmlsZXMgd2l0aCB0ZW1wbyBjaGFuZ2VzLiBTb3VuZCBvdXRwdXQgaXMKCW5vdyBjb3JyZWN0LCBidXQgbGVuZ3RoIG9mIHRyYWNrcyAoYW5kIHRoZXJlZm9yZSBvZiB3aG9sZSBmaWxlKSBpcyBub3QKCWNvcnJlY3QuCglDaGFuZ2VkIGVycm9yIHZhbHVlcyAoSU5URVJOQUwgPT4gSU5WQUxJRF9GSUxFKSB3aGVuIGZpbGUgY2Fubm90IGJlIHJlYWQuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtZW1vcnkvc3RhdHVzIHJlY292ZXJ5IHdoZW4gZXJyb3Igb2NjdXJlZCBpbiBXQVZFX21jaU9wZW4uCglDaGFuZ2VkIGVycm9yIHZhbHVlcyAoSU5URVJOQUwgPT4gSU5WQUxJRF9GSUxFKSB3aGVuIGZpbGUgY2Fubm90CgliZSByZWFkLgoKCSogbXVsdGltZWRpYS9tc3ZpZGVvLmMsIHJlbGF5MzIvbXN2ZnczMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgTUNJV25kQ3JlYXRlW0F8V10uCgoJKiBtaXNjL3Zlci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVZlclF1ZXJ5VmFsdWUsIGJ1Z2ZpeDogd2UgY2FudCBjb252ZXJ0IGJpbmFyeSBkYXRhIHdpdGgKCUhFQVBfc3RyZHVwV3RvQSAoXFZhckZpbGVJbmZvXFRyYW5zbGF0aW9uKS4KCk1vbiBOb3YgMzAgMTc6NDE6MTcgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgd2luMzIvYWR2YXBpLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzIGZvciBFbnVtU2VydmljZVN0YXR1czMyLCBzbWFsbCBjaGFuZ2VzLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTG9hZCBub3cgdGhlIGZpcnN0IGljb24gZnJvbSB0aGUgKi5hbmkgZmlsZSBpbnN0ZWFkIG9mIGNyYXNoaW5nLgoKCSogbWlzY2VtdS9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4IHdhcm5pbmdzIGluIG1pc2NlbXUvbWFpbi5jLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGFkZGVkIHNvbWUgZGVmaW5lcyBhcm91bmQgdGhlIENvbW1Qb3J0IChQVVJHRV9YWFggYW5kIE1TX1hYWF9PTikKCS0gYWRkZWQgdGhlIERMR1RFTVBMQVRFIGFuZCBETEdJVEVNVEVNUExBVEUgc3RydWN0dXJlcwoJLSBhZGRlZCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBmb3IgU3RhcnRQYWdlLEVuZFBhZ2UsR2V0Q29tbU1hc2ssCgkJR2V0Q29tbU1vZGVtU3RhdHVzIGFuZCBQdXJnQ29tbSxXYWl0Q29tbUV2ZW50LgoKCSogd2luZG93cy9kZWZ3bmQuYzogUGF1bCBRdWlubiA8UGF1bFFAY29yZWwuY29tPgoJRml4ZWQgYWN0aXZhdGlvbi9Gb2N1cyBtZXNzYWdlIG9yZGVyIHByb2JsZW0gd2hlbiBjcmVhdGluZyBhIG5ldyBIV05ELgoKCSogd2luZG93cy93aW5wb3MuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglQYXVsIFF1aW5uIDxQYXVsUUBjb3JlbC5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBDaGlsZFdpbmRvd0Zyb21Qb2ludEV4IGZ1bmN0aW9ucy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPgoJRml4ZWQgcmVnaXN0cnkgcXVlcnkgZXJyb3IgdmFsdWU6IG5vdyByZXR1cm5zIEVSUk9SX0ZJTEVfTk9UX0ZPVU5ELgoKCSogb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglHZXRTeXN0ZW1QYWxldHRlRW50cmllcyByZXR1cm5zIHBhbGV0dGUgc2l6ZSBpZiBlbnRyaWVzPT1OVUxMLgoJVXNlIHRoaXMgaW5zdGVhZCBvZiBDT0xPUl9HZXRTeXN0ZW1QYWxldHRlU2l6ZS4KCgkqIHJlbGF5MzIvZHNvdW5kLnNwZWMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIGNsYXNzIGZhY3RvcnkgZm9yIGRzb3VuZC4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgbWlzYy9jb21tLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGZpeGVkIGEgbWluaW1hbCBlcnJvciBpbiBHZXRDb21tTWFzayBkZWZpbml0aW9uLgoJLSBhZGRzIHN0dWJzIGZvciBHZXRDb21tTW9kZW1TdGF0dXMgYW5kIFdhaXRDb21tRXZlbnQuCgoJKiBpbmNsdWRlL3htYWxsb2MuaCwgbGlicmFyeS93aW5lc3R1Yi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZXMgZm9yIEMrKyBXaW5lbGliIGNvbXBpbGF0aW9uLgoKCSogb2xlL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglCdWdmaXg6IHNlY29uZCBSZWdPcGVuS2V5IHNob3VsZCB1c2UgQ0xTSURrZXkgaW5zdGVhZCBvZiBIS0VZX0NMQVNTRVNfUk9PVC4KCkZyaSBOb3YgMjcgMTY6MDY6MDggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEJVR1MsIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcsIGRvY3VtZW50YXRpb24vbm8td2luZG93cywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglGaXhlZCAnbWFrZSBpbnN0YWxsJyB0byByZWFsbHkgY2hlY2sgZm9yIGxpYndpbmUuYSBiZWZvcmUgaW5zdGFsbGluZwoJaXQuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmM6CglTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCUFkZGVkIGEgbmV3IGNtZGxpbmUgc3dpdGNoIHRvIGRpc2FibGUgWEY4NiBER0EgRXh0ZW5zaW9ucywgLW5vZGdhLgoKCSogZmlsZXMvZHJpdmUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJSW1wcm92ZWQgR2V0RGlza0ZyZWVTcGFjZTMyQSgpLgoKVGh1IE5vdiAyNiAxNjozMjowMCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglSZW1vdmUgaW5jbHVkZWQgY29sb3IuaC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBjaGVjayBmb3IgZW50cnlwb2ludCBhZGRyZXNzICh0ZXN0IGJpbmFyeSB3YXMKCWluZmVjdGVkIGJ5IGEgdmlydXMgd2hpY2ggdXNlcyBpbnZhbGlkIFBFIGxvYWRpbmcgc3R1ZmYpLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YnMgZm9yIFN0YXJ0cGFnZSBhbmQgRW5kUGFnZS4KCgkqIGlmMTYzMi90aHVuay5jLCBvYmplY3RzL2RjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBGSVhNRSBvdXRwdXRzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBLRVJORUwuNjAyIGFuZCBzdHViIGZvciBLRVJORUwuNDkwLgoKCSogb2xlL29sZTJubHMuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERvICpub3QqIHplcm8gb3V0IG91dHB1dCBidWZmZXIgaW4gR2V0TnVtYmVyRm9ybWF0MzJbQVddLgoKV2VkIE5vdiAyNSAxODoxNTo1MyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL25scy9ncmMubmxzLCBvbGUvbmxzL3NreS5ubHMsIG9sZS9ubHMvdGhhLm5scywgb2xlL25scy90cmsubmxzLCBvbGUvb2xlMm5scy5jOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglTbWFsbCBmaXhlcy4KCgkqIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgLi4uUmVzb3VyY2UxNiByb3V0aW5lcyB0byBsb2FkZXIvcmVzb3VyY2UuYy4KCUltcGxlbWVudGVkIGFjY2Vzc2luZyBQRS1maWxlIHJlc291cmNlcyB3aXRoIDE2LWJpdCByZXNvdXJjZSByb3V0aW5lcy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbG9hZGVyL25lL01ha2VmaWxlLmluLCBsb2FkZXIvbmUvY29udmVydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBQRS0+TkUgcmVzb3VyY2UgY29udmVyc2lvbiByb3V0aW5lcyAoS0VSTkVMLjYxNS02MTgpLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIG9sZS9vbGUyZGlzcC5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCAzIG1ldGhvZHM6IFN5c0FsbG9jU3RyaW5nTGVuKCksIFN5c1JlQWxsb2NTdHJpbmdMZW4oKQoJYW5kIFN5c1N0cmluZ0xlbigpLiBFbnN1cmUgdGhhdCB0aGUgQlNUUiBvYmplY3RzIHdlcmUgYWxsb2NhdGVkCglhY2NvcmRpbmcgdG8gdGhlIFdpbmRvd3MgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBleGlzdGluZyBwYXRoIC0gZnVuY3Rpb25zIHRvIHNoZWxscGF0Y2guYy4KCU5ldzogUGF0aFJlbW92ZUJsYW5rczMyQXxXLCAgUGF0aE1hdGNoU3BlYzMyQXxXLAoJUGF0aFNldERsZ0l0ZW1QYXRoMzJBfFcuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBleGlzdGluZyBJU2hlbGxMaW5rIGNsYXNzLiBOZXcgc3R1YnMgZm9yIElTaGVsbExpbmtXLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBpbmNsdWRlL3gxMWZvbnQuaCwgbWlzYy9tYWluLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL0F0dGljL2dyYXBoaWNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy91c2VyLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3dpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUmVtb3ZlIFhfRENfSU5GTyBmcm9tIERDIGFuZCBtYWtlIGl0IGJlaGF2ZSBsaWtlIGFueSBvdGhlciBQREVWSUNFLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgbXNkb3MvaW50MmYuYywgbXNkb3MveG1zLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoYW5nZWQgQ1RYX1NFR19PRkZfVE9fTElOIHRvIGFsbG93IGxpbmVhciBhZGRyZXNzZXMgaW4gMzItYml0CglyZWdpc3RlcnMgKHVzZWQgYnkgRGV2aWNlSW9Db250cm9sKS4gQWRhcHRlZCBhbGwgdXNlcnMuCgoJKiBpbmNsdWRlL3dpbmlvY3RsLmgsIHdpbjMyL2RldmljZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCAobW9zdCkgVldpbjMyLlZ4RCBEZXZpY2VJb0NvbnRyb2wgcm91dGluZXMuCgpUdWUgTm92IDI0IDIwOjQ3OjE3IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogU2V0IHRoZSBURUJGX1dJTjMyIGZsYWcgaW4gdGViLmZsYWdzIGZvciAzMi1iaXQgdGhyZWFkcy4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBDYWxsIEluaXRUaHJlYWRJbnB1dCBpbiBHZXRGYXN0UXVldWUgd2l0aCBjb3JyZWN0IHBhcmFtZXRlcgoJZm9yIDMyLWJpdCBxdWV1ZXMuCgoJKiB3aW4zMi9rZXJuZWwzMi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogW1FGXVRfVGh1bmsgc2hvdWxkIGNsZWFyIEhJV09SRChFQVgpIG9uIHJldHVybi4KCUJ1Z2ZpeDogaGFjayBmb3Igc3R1cGlkIFVTRVIzMiBDYWxsYmFja0dsdWVMUyByb3V0aW5lIGluIENvbW1vbjMyVGhrTFMuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEJhZCBqdW1wIGdlbmVyYXRlZCBpbiBUSFVOS19BbGxvY0xTVGh1bmtsZXQuCglCdWdmaXg6IEZvcmdvdCB0byBjb252ZXJ0IHNlZ3B0ciBpbiBBbGxvY0xTVGh1bmtsZXRDYWxsYmFja0V4LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IEVyaWMgV2FybmtlIDxlcmljQHNub3dtb29uLmNvbT4KCURvbid0IG1hdGNoIGFnYWluc3QgU3ltYm9sIG9yIE5pbCBmb250cy4KCgkqIG1lbW9yeS9nbG9iYWwuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglSZXR1cm4gdGhlICJidWZmZXJzIiBhbmQgImNhY2hlZCIgbWVtb3J5IGFzIGZyZWUgc2luY2UgaXQgaXMKCWRlYWxsb2NhdGVkIHdoZW4gYSBwcm9ncmFtIG5lZWRzIGl0IGFueXdheS4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXg6IFNldERsZ0l0ZW1UZXh0MzIgcmV0dXJucyBCT09MIG5vdCB2b2lkLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBHZXRVc2VyT2JqZWN0SW5mb3JtYXRpb25BfFcuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBsZWZ0IG92ZXIgJ3Nob3cnIGFuZCB1c2VsZXNzIGRlYWRiZWVmIGNoZWNraW5nIHdoaWNoIGRvZXNuJ3QKCXdvcmsuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGp1c3QgYnJva2VuIGVudHJ5cG9pbnQgYWRkcmVzc2VzLiAod2luOTggbm90ZXBhZC5leGUpCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgYWNjb3JkaW5nIHRvIGRldmVsb3BtZW50LgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBuZXcgc3R1YnMgKG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zLCBzb21lIG1jaSBmdW5jdGlvbnMsIGFuZAoJc29tZSBtbWlvIGZ1bmN0aW9ucykuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBNQ0kgcGFydCB0byBtY2ltaWRpLmMgOyBhZGRlZCBEcml2ZXJQcm9jLgoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIE1DSSBwYXJ0IHRvIG1jaXdhdmUuYyA7IGFkZGVkIHNvbWUgZXJyb3IgY2hlY2tpbmcgOyBhZGRlZAoJRHJpdmVyUHJvYwoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtY2ltaWRpIGFuZCBtY2l3YXZlLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQgOyBmaXhlZCBwYXVzZS9yZXN1bWUgY29tbWFuZHMgOyBmaXhlZAoJc2VlayBjb21tYW5kLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRpbmcgd3JpdGluZyBNQ0kgcGFydCA7IGZpeGVkIGJ1ZyBpbiBNQ0lfSU5GTyBjb21tYW5kLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtaXNzaW5nIHN0dWJzIGluIDMyIGJpdCBwYXJ0LgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHVzZSBvZiBuZXcgMTYvMzIgTUNJIG1lc3NhZ2UgaGFuZGxpbmcgaW4gbW1zeXN0ZW0uYy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbmV3IGZ1bmN0aW9ucy9zdHJ1Y3R1cmVzIGRlZmluaXRpb25zLihJIGNvdWxkbid0IGdldCBhbGwKCXRoZSBtYW5pZmVzdCBjb25zdGFudHMgdmFsdWVzIHRoYXQgTVMgd2FzIHJlZmVycmluZyB0byBpbiBpdHMgc3BlY3MuLi4KCWlmIHNvbWVvbmUgaGFzIHRoZW0uLi4pCgoJKiBtdWx0aW1lZGlhL21jaWFuaW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIGVycm9yIGNoZWNraW5nIDsgbWFkZSB1c2Ugb2YgbmV3IDE2LzMyIE1DSSBtZXNzYWdlIGhhbmRsaW5nCglpbiBtbXN5c3RlbS5jIDsgZml4ZWQgYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgZXJyb3IgY2hlY2tpbmcgOyBtYWRlIHVzZSBvZiBuZXcgMTYvMzIgTUNJIG1lc3NhZ2UKCWhhbmRsaW5nIGluIG1tc3lzdGVtLmMuCglBZGRlZCBXaW45NSBjb21tYW5kIHRvIGhhbmRsZSBjZC1yb20gd2l0aCBib3RoIGRhdGEgYW5kIGF1ZGlvIDsgZml4ZWQKCWJ1ZyBpbiBNQ0lfSU5GTyBjb21tYW5kIDsgc2hhZG93aW5nIE1DSSBzdGF0dXMgZm9yIGRldmljZXMgdGhhdCBjYW4ndAoJZ2V0IGN1cnJlbnQgc3RhdHVzIDsgZml4ZWQgc3RhdHVzIG5vdCBiZWluZyB1cGRhdGVkIG9uIGNkIGNoYW5nZS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGYWN0b3JpemVkIDE2LzMyIGJpdCBNQ0kgZnVuY3Rpb24gYnkgdXNpbmcgIG1lc3NhZ2UgbWFwcGluZyBmcm9tIDE2Cgl0byAzMiBiaXRzIDsgYWRkZWQgc29tZSBuZXcgcHJvdG90eXBlcyBtY2lTZW5kQ29tbWFuZCwgbWNpU2VuZFN0cmluZywKCW1jaShTZXQvR2V0KVlpZWxkUHJvYyA7IHN0YXJ0ZWQgd3JpdGluZyBtaWRpU3RyZWFtWFhYIGZ1bmN0aW9ucyAtIG5vdAoJeWV0IHdvcmtpbmcuIEZpeGVkIHNvbWUgaXNzdWVzIHJlZ2FyZGluZyBhc3luY2hyb25vdXMgTUNJIGNvbW1hbmRzIDsKCWZpeGVkIE1DSV9TWVNJTkZPIGNvbW1hbmQuCgoJKiByZXNvdXJjZXMvc3lzcmVzX0ZyLnJjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgcXVpcmtzLgoKU3VuIE5vdiAyMiAxODoyOTo1MCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZnVuY3Rpb246IF9JTEdldEV4dGVuc2lvbi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NsYXNzZXMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUuIEhLRVlfQ0xBU1NFU19ST09UIGhhbmRsaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglVcGRhdGVkLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9oZWFkZXIuaCwgaW5jbHVkZS9saXN0dmlldy5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9yZWJhci5oLCBpbmNsdWRlL3N0YXR1cy5oLCBpbmNsdWRlL3Rvb2xiYXIuaCwgaW5jbHVkZS90b29sdGlwcy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFVuaWNvZGUgc3VwcG9ydCAoYXQgbGVhc3QgcGFydGlhbGx5KS4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2NvbXBvYmouYywgb2xlL29sZW9iai5jLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIElPbGVBZHZpc2VIb2xlciBpbnRlcmZhY2UgKHN0aWxsIGEgZHVtbXkpIGFuZCBmaXhlZAoJQ3JlYXRlT2xlQWR2aXNlSG9sZGVyKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBnbG9iYWwgc3ViY2xhc3NpbmcgYXRvbSwgdXNlZCBieSB0b29sdGlwcyBhbmQgdXBkb3duIChub3QgeWV0KS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGxheW91dCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIEltYWdlTGlzdF9Mb2FkSW1hZ2UoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgQ01FTV9TRVRJVEVNMzJBIGFuZCBtZXNzYWdlIGZvcndhcmRpbmcgdG8gY29tYm9ib3guCgoJKiBvbGUvbW9uaWtlci5jLCByZWxheTMyL29sZTMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ3JlYXRlSXRlbU1vbmlrZXIoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSB1bmRvY3VtZW50ZWQgZnVuY3Rpb24gbmFtZXMgYW5kIGltcGxlbWVudGVkIERQQV9NZXJnZQoJcGFydGlhbGx5LgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglFbmFibGVkIGRvdWJsZSBjbGljayBmb3IgYnV0dG9ucy4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgY29tbWFuZCBhbmQgcmV0dXJuIGNvbnN0YW50cyB1c2VkIGJ5IFdNX05PVElGWUZPUk1BVC4KCgkqIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3Blbi5jLCB3aW5kb3dzL0F0dGljL2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL3gxMWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3ZlZCBEQ19TZXR1cEdDIGZ1bmN0aW9ucyB0byBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYy4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMgdG8gZ2V0IHRoZSBkZWZhdWx0IGxhbmd1YWdlIHRvIGEgc2Vuc2libGUgdmFsdWUuCglUaGFua3MgdG8gUGFibG8uCgoJKiBBTk5PVU5DRSwgREVWRUxPUEVSUy1ISU5UUywgUkVBRE1FLCBkb2N1bWVudGF0aW9uL1JFQURNRS5kb2N1bWVudGF0aW9uLCBkb2N1bWVudGF0aW9uL2hvdy10by1wb3J0LCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJTWlzY2VsbGFuZW91cyBzbWFsbCBmaXhlcy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIFdpbjE2IGltcGxlbWVudGF0aW9uIGZvciBHZXRSZWdpb25EYXRhKCkuCgoJKiBvbGUvdHlwZWxpYi5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglFbmhhbmNlZCBPQUJ1aWxkVmVyc2lvbigpIHRvIHJldHVybiBkaWZmZXJlbnQgdmVyc2lvbiB2YWx1ZXMgZm9yCglkaWZmZXJlbnQgd2ludmVycy4KCgkqIG1zZG9zL2ludDIxLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIElOVDIxX1BhcnNlRmlsZU5hbWVJbnRvRkNCKCkgYW5kIHNvbWUgb3RoZXIgdGhpbmdzIHRvIGdldAoJQ09NTUFORC5DT00gd29ya2luZy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBtaXNzaW5nIGVudHJ5IGZvciBHZXROdW1iZXJGb3JtYXRXLgoKCSogb2JqZWN0cy9wYWxldHRlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hlY2tpbmcgZm9yIE5VTEwtcG9pbnRlci4KCgkqIG9sZS9ubHMvZnJhLm5scywgb2xlL25scy9mcmIubmxzLCBvbGUvbmxzL2ZyYy5ubHMsIG9sZS9ubHMvZnJsLm5sczoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglCZXR0ZXIgT0xFIHN1cHBvcnQgaW4gRnJlbmNoIGxhbmd1YWdlcy4KCgkqIGxvYWRlci9tb2R1bGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBDcmVhdGVQcm9jZXNzMzJXLgoKCSogd2luZG93cy9ldmVudC5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglRdWV1aW5nIG9mIGRlZmVycmVkIEV4cG9zZSBldmVudHMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTEJfR0VUVEVYVDogSGFuZGxlIHBhc3NlZCBOVUxMIGJ1ZmZlci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ0JfR0VUVEVYVDogVXNlIGxwQnVmZmVyIGluc3RlYWQgb2YgbHBUZXh0IGZvciBMQl9HRVRURVhUMzIsIGhhbmRsZSAwCglieXRlIE5VTEwgYnVmZmVyLgoKCSogb2xlL25scy9mcnMubmxzLCBvbGUvbmxzL3NreS5ubHMsIG9sZS9vbGUybmxzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR1cm4gbWVnYSBkb3VibGUgc3dpdGNoIGludG8gc3RhdGljIHRhYmxlIChyZWR1Y2VzIGNvbXBpbGUgdGltZSkuCgoJKiBBVVRIT1JTLCBpbmNsdWRlL2F1dGhvcnMuaDogQWRkZWQgUm9iZXJ0IFJpZ2dzLgoKCSogaW5jbHVkZS9kM2QuaDogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCWluY2x1ZGUgZGRyYXcuaCwgcXVlc3Rpb25hYmxlIGZpeCBmb3IgcXVlc3Rpb25hYmxlIHN0cnVjdC91bmlvbgoJY29uc3RydWN0IGluIE1TJ3MgRDNEVkVDVE9SIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJTW9yZSBmbGFncyAoRGlyZWN0WCA1LjIpLCBEaXJlY3RTb3VuZDNETGlzdGVuZXIgYW5kCglEaXJlY3RTb3VuZDNEQnVmZmVyIHN0cnVjdHVyZXMsIGluY2x1ZGUgc29tZSByZXF1aXJlZCBmaWxlcwoJKHdpbmRvd3MuaCwgY29tcG9iai5oLCBhbmQgZDNkLmgpLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCURpcmVjdFNvdW5kM0RMaXN0ZW5lciBhbmQgRGlyZWN0U291bmQzREJ1ZmZlciBzdHVicywgbmV3IG1peGVyIGNvZGUsCglwcmltYXJ5IGJ1ZmZlciBpcyBpbXBsZW1lbnRlZCBjbG9zZXIgdG8gd2hhdCB0aGUgU0RLIGRvY3Mgc3BlY2lmeSwKCW90aGVyIFNESyBkb2N1bWVudGVkIGJlaGF2aW91ciBlbmZvcmNlZC4gQ29tcGxldGVkIHRoZSBkZXZjYXBzIGxpc3QuCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgc3RyZGF0ZSwgc3RydGltZS4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHR5cG8gaW4gU1VuTWFwTFNfSVBfRUJQXzggbGVhZCB0byBzdGFjayBjb3JydXB0aW9uLgoKCSogbWlzYy9jb21tLmM6IENsaWZmIFdyaWdodCA8Y2xpZmZAc25pcGU0NDQub3JnPgoJRml4ZWQgYSBtYXNrIHNldCwgYW5kIG90aGVyIHBhcml0eSBzZXR0aW5nIGJ1Z3MgZm9yIHNlcmlhbCBwb3J0cy4KCgkqIGluY2x1ZGUvc2lnX2NvbnRleHQuaDogVmFzdWRldiBNdWxjaGFuZGFuaSA8dmFzdUB0ZWlsLnNvZnQubmV0PgoJQWRkZWQgQlNESSBzaWdjb250ZXh0IGRlZmluaXRpb25zLgoKCSogd2luZG93cy9jbGFzcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgdHlwby4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgbm93IHVzZWxlc3MgUkVMQVlfU2hvd0RlYnVnbXNnc1JlbGF5IGNoZWNrLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHJlbG9jYXRlIHRoZSBwb2ludGVycyBpbiB0aGUgSU1BR0VfVEhSRUFEX0xPQ0FMX1NUT1JBR0UKCWRpcmVjdG9yeSwgZm9yIHRoZXkgc2VlbSB0byBiZSByZWxvY2F0ZWQgYnkgdGhlIHN0YW5kYXJkIHJlbG9jYXRpbmcKCW1lY2hhbmlzbS4gKEV4cGxpY2l0bHkgY2hlY2tlZCBvbmUgcHJvZ3JhbSB1c2luZyBpdCkKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBhdGhBZGRCYWNrc2hsYXNoLCBQYXRoUmVtb3ZlQmFja3NsYXNoOiBhcmd1bWVudCBpcyBub3QgY29uc3RhbnQuCgoJKiB3aW5kb3dzL3dpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIHduZFB0ciBmb3IgTlVMTC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQmx0RmFzdDogSG9ub3IgbFBpdGNoLCBMb2NrL1VubG9jayBzdXJmYWNlcyAoeGxpYiBuZWVkcyB1bmxvY2sgdG8gZHJhdykuCgoJKiBtaXNjL3Nwb29sZXIuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzY2VtdS9tYWluLmMsIE1ha2VmaWxlLmluLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGxvYWRlci9tYWluLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVRha2VzIHByaW50IHNwb29sZXIgZnVuY3Rpb25zIG91dCBvZiB3aW4xNmRydi4KCUFsbG93cyB0aGUgUG9zdFNjcmlwdCBkcml2ZXIgdG8gZ28gaW50byBsaWJ3aW5lLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgc3R1YnMgZm9yIHR3byB1bmRvY3VtZW50ZWQgR0RJIHJvdXRpbmVzLCBTZXRNYWdpY0NvbG9ycyBhbmQKCVNldFNvbGlkQnJ1c2guIFRoaXMgYWxsb3dzIFdpbjk4IG5hdGl2ZSBVU0VSIHRvIHN0YXJ0IHVwLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglGaXhlZCB0aGUgREdBIGRldGVjdGlvbiBjb2RlIGluIGRkcmF3LiBZb3UgZG9uJ3QgbmVlZCByb290IGFjY2VzcywKCWhhdmluZyByK3cgYWNjZXNzIHRvIC9kZXYvbWVtIGlzIGVub3VnaC4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdGRyYXcsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3dpbmcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaXJlY3REcmF3IHN0YXR1cyB1cGRhdGVkLgoJVXNlIGNvb3BlcmF0aXZlIHdpbmRvdyBmb3IgZHJhd2luZyBpbiB4bGliIGltcGxlbWVudGF0aW9uIGlmIHBvc3NpYmxlLgoJU2xpZ2h0bHkgcmVzdHJ1Y3R1cmVkIElEaXJlY3REcmF3U3VyZmFjZTo6Qmx0IHNvIGl0IGRvZXNuJ3QgY3Jhc2guCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglNaWNybyBwYXRjaCBmb3IgQWx0R3Iga2V5IG9uIGdlcm1hbiBrZXlib2FyZHMuCgoJKiBmaWxlcy9kb3NfZnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlcyBlcnJvciBoYW5kbGluZyAoU2V0TGFzdEVycm9yKCkgYW5kIHJldHVybiB2YWx1ZSkuCgoJKiBvYmplY3RzL3RleHQuYywgaW5jbHVkZS93aW5kb3dzLmg6IEdhZWwgZGUgQ2hhbGVuZGFyIDxnYWVsQGxpbXNpLmZyPgoJUGFydGlhbGx5IGNvbXBsZXRlIEdldFRleHRDaGFyc2V0SW5mbyBhbmQgY29ycmVjdHMgcmV0dXJuIHZhbHVlcyBmb3IKCXRoaXMgZmFtaWx5IG9mIGZ1bmN0aW9ucy4KClN1biBOb3YgMTUgMTg6MTI6MTIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9jb21wb2JqLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnIGZpeC4KCgkqIG9iamVjdHMvZGliLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCByZXRyaWV2YWwgb2YgaW52YWxpZCBwYWxldHRlIGRhdGEgaW4gR2V0RElCaXRzKCkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJQWxsb3cgU1dQX0hJREVXSU5ET1cgdG8gYmUgY2FsbGVkIG9uIHdpbmRvd3MgdGhhdCBhcmUgYWxyZWFkeSBoaWRkZW4KCXdpdGhvdXQgdW5tYXBwaW5nIHRoZW0gYWdhaW4uCgoJKiB3aW5kb3dzL3Njcm9sbC5jOiBQaW0gQm9sbGVuIDxwaW1AZ2ltbGkuaWFlaHYubmw+CglGaXhlZCBzY3JvbGwgYnVnIGluIFNjcm9sbFdpbmRvd0V4MzIgd2hpY2ggY2F1c2VkIGdhcmJhZ2Ugb24gc2NyZWVuCglvdXRzaWRlIGRlc2t0b3Agd2luZG93IHdpdGggZ3R3aW4uZXhlIChEdXRjaCBiYW5raW5nIHByb2dyYW0pLgoKCSogbG9hZGVyL21haW4uYywgbWVtb3J5L2F0b20uYywgbWlzYy9kZGVtbC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBpbmNsdWRlL0F0dGljL2F0b20uaCwgaW5jbHVkZS9nbG9iYWwuaDoKCVNtYWxsIGF0b20gZml4ZXMuCgoJKiBvYmplY3RzL2RpYi5jOiBEaXJrIFRoaWVyYmFjaCA8dGhpZXJiYWNoQG1hdGhlbWF0aWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYnVnIGluIFN0cmV0Y2hESUJpdHMzMiAod3Jvbmcgb3JpZ2luKS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194c2htLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCVNvbWUgY29ycmVjdGlvbnMgdG8gdGhlIGhhbmRsaW5nIG9mIG9mZi1zY3JlZW4gYnVmZmVycy4KCUNvcnJlY3Rpb24gdG8gdGhlIEVudW1EaXNwbGF5TW9kZXMgZnVuY3Rpb24uCglBZGRlZCBYU2htIHN1cHBvcnQgdG8gWGxpYiBkcml2ZXIuCglPcGVuIGEgRGlyZWN0WCB3aW5kb3cgZXZlbiB3aGVuIHVzaW5nIHRoZSBER0EgZHJpdmVyLgoKCSogaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBtaXNjL3NoZWxsLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNsZWFudXAsIHNtYWxsIGZpeGVzLCBhIGZldyBuZXcgc3R1YnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUhhbmRsaW5nIGZvciBsaXN0dmlld3N0eWxlcywgdmlldyBtb2RlIGJ1dHRvbnMgaW4gZmlsZWRpYWxvZ3MKCWVuYWJsZWQgYW5kIGhhbmRsZWQuCglOZXcgbGlzdHZpZXcgY29sdW1ucyBTaXplLCBUeXBlLCBNb2RpZmllZCBmb3IgcmVwb3J0dmlldwoJY3JlYXRlZCBhbmQgaGFuZGxlZC4KCgkqIGRsbHMvc2hlbGwzMi9pZl9tYWNyb3MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUsIHdyYXBwZXIgZm9yIElTaGVsbEJyb3dzZXIgY2xhc3MuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLCBzb21lIGhlbHBlciBmdW5jdGlvbnMgZm9yIGljb24gY2FjaGUuCglJbXBsZW1lbnRlZCBFeHRyYWN0SWNvbkV4OyBtb3ZlZCBTSE1hcFBJRExUb1N5c3RlbUltYWdlTGlzdEluZGV4LAoJU2hlbGxfR2V0SW1hZ2VMaXN0IGluIHRoaXMgZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkOiBJTElzRXFhbCwgSUxGaW5kQ2hpbGQsIF9JTEdldEZpbGVEYXRlLCBfSUxHZXRGaWxlU2l6ZS4KCgkqIGxvYWRlci9tb2R1bGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMb2FkTGlicmFyeUV4OiBzaG93IGEgd2FybmluZyB3aGVuIGNhbGxlZCB3aXRoIHVuaW1wbGVtZW50ZWQgcGFybS4KCgkqIG1pc2NlbXUvaW5zdHIuYzogQ2xlYW5lZCB1cCBhIGJpdC4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjZW11L2luc3RyLmMsIHRvb2xzL2J1aWxkLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNsZWFuIGludmFsaWQgc2VsZWN0b3JzIG9uIHRoZSBwb3AgJXhzIGZyb20gdGhlIFNUQUNLRlJBTUUgaXRzZWxmCglpbnN0ZWFkIG9mIHVzaW5nIGxpbmtlZCBsaXN0IGhhY2suCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlZCBnZXRzIG1lc3NhZ2UuCgoJKiBvbGUvbmxzL3RoYS5ubHM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUFkZGVkIFRoYWkgbmxzLXJlc291cmNlcy4KCgkqIG9sZS9ubHMvUkVBRE1FLCBvbGUvbmxzL2N6ZS5ubHMsIG9sZS9ubHMvZXNlLm5scywgb2xlL25scy9lc2cubmxzLCBvbGUvbmxzL2VzdC5ubHMsIG9sZS9ubHMvZXVxLm5scywgb2xlL25scy9mb3MubmxzLCBvbGUvbmxzL2hydi5ubHMsIG9sZS9ubHMvaHVuLm5scywgb2xlL25scy9pc2wubmxzLCBvbGUvbmxzL25vci5ubHMsIG9sZS9ubHMvcGxrLm5scywgb2xlL25scy9wdGcubmxzLCBvbGUvbmxzL3JvbS5ubHMsIG9sZS9ubHMvc2x2Lm5scywgb2xlL25scy9zdmUubmxzLCBvbGUvb2xlMm5scy5jLCBpbmNsdWRlL3dpbm5scy5oOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglEaXNwbGF5IHRoZSBsYW5ndWFnZSBpZCBmb3IgIlhYWCBub3Qgc3VwcG9ydGVkIGZvciB5b3VyIGxhbmd1YWdlIgoJbWVzc2FnZXMuCglBZGRlZCBhbGwgbGFuZ3VhZ2VzIGFuZCBzdWJsYW5ndWFnZXMgZm9yIGxhbmd1YWdlcyBzdXBwb3J0ZWQgaW4KCXJlc291cmNlcy9zeXNyZXNfWHguCgoJKiBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUFkZCBzdHVicyBmb3IgR2V0UnVubmluZ09iamVjdFRhYmxlMzIgYW5kIE9sZVJlZ0dldFVzZXJUeXBlLgoKCSogb2xlL21vbmlrZXIuYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPgoJRW5zdXJlIHRoYXQgQ3JlYXRlRmlsZU1vbmlrZXIgZnVuY3Rpb25zIGRvbid0IHJldHVybiBhIGJvZ3VzIG1vbmlrZXIKCW9iamVjdCBvbiBmYWlsdXJlLgoKCSogaW5jbHVkZS9jbGFzcy5oLCB3aW5kb3dzL2NsYXNzLmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUFkZGVkIGNvZGUgdG8gbWFuYWdlIEFzY2lpIGFuZCBXaWRlQ2hhciBjbGFzcyBuYW1lcywgYW5kIHRvIHJldHVybiB0aGUKCW5hbWVzIGluIHRoZSBHZXRDbGFzc0luZm8gZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IENvbnN0YW50aW5lIFNhcHVudHpha2lzIDxjc2FwdW50ekBzdGFuZm9yZC5lZHU+CglGaXggdG8gTGludXggSVBYIHNvIGNvbXBpbGVzIG9uIG5vbi1saW51eCBwbGF0Zm9ybXMuCgoJKiBtaXNjL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPd24gWDExIGVycm9yaGFuZGxlciB0byBsb2NhdGUgWDExIGVycm9ycy4gVXNlZnVsIG9ubHkgd2l0aCAtc3luYy4KClNhdCBOb3YgMTQgMTg6NTk6MzAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL3BhbGV0dGUuaCwgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmRvd3MvZGVmd25kLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdhcm5pbmdzLCBzb21lIG9ubHkgdmlzaWJsZSB3aXRoIC1Xc3RyaWN0LXByb3RvdHlwZXMgb3IgLXBlZGFudGljLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIGluY2x1ZGUvZGlzcGxheS5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgaWYxNjMyL2Rpc3BsYXkuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgWDExIG1vdXNlIGN1cnNvciBoYW5kbGluZyB0byB0aGUgRElTUExBWSBkcml2ZXIuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL2NhbGxiYWNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTb21lIGZpeGVzIHRvIFdpbmUgc3RhcnR1cC90ZXJtaW5hdGlvbiBzZXF1ZW5jZSB3aXRoIG5hdGl2ZSBVU0VSLgoJRG8gbm90IGNhbGwgYnVpbHQtaW4gVVNFUiBzaWduYWwgaGFuZGxlciB3aGVuIHVzaW5nIG5hdGl2ZSBVU0VSLgoKCSogZGVidWdnZXIvYnJlYWsuYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL3Rhc2suaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiAtZGVidWcgZGlkbid0IHdvcmsgYW55bW9yZSBhZnRlciB0aGUgbGFzdCBzdGFydHVwIHNlcXVlbmNlIHBhdGNoLgoKCSogb2xlL2NvbXBvYmouYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIGxpc3QgaW5zZXJ0aW9uIGJ1ZyBpbiBDb0xvYWRMaWJyYXJ5KCkuCgoJKiBpZjE2MzIvd3Byb2NzLnNwZWMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy92eGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc3R1YnMgZm9yIHNldmVyYWwgVnhEcyAvIGludGVycnVwdHMuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU2hvdWxkIGdldCB3aW4xNmRydiBBYm9ydFByb2Mgd29ya2luZy4gSG9wZWZ1bGx5LgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIEdldEtleWJvYXJkTGF5b3V0TmFtZTE2IHRvIHdpbmRvd3MvaW5wdXQuYy4KCgkqIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnR5cGVzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHNvbWUgZGVjbGFyYXRpb25zIGZyb20gaW1hZ2VobHAuaCB0byBjb21tb24gaW5jbHVkZSBmaWxlcy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvdGhyZWFkLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgaW1wbGVtZW50YXRpb25zIGZvciBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCkgYW5kCglJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSgpLgoKCSogd2luMzIvY29uc29sZS5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVzIGEgZmV3IG9mIHRoZSBtYW55IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVtdWxhdGUgIm1vdiBjcjQsZWF4IiAodG9tYnJhaWRlciAzIGRlbW8pLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgZW51bWVyYXRlIEQzRCBkZXZpY2VzIHdlIGNhbid0IGhhbmRsZSBhbnl3YXkuCglSZXR1cm4gYml0bWFza3MgZm9yIGhpL3RydWVjb2xvciBkZXB0aHMgaW4gRW51bURpc3BsYXlNb2Rlcy4KCgkqIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL3Nub29wLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvc25vb3AuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3BlZWQgdXAgcmVsYXkzMiwgc25vb3AxNiBhbmQgc25vb3AzMiBpbmNsdWRlL2V4Y2x1ZGVzIGJ5IGRvaW5nIHRoZW0KCWp1c3Qgb25jZSBhdCBjcmVhdGlvbiB0aW1lLgoKCSogcmVsYXkzMi9vbGUzMi5zcGVjLCBvbGUvY29tcG9iai5jLCBvbGUvb2xlMi5jOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBDb1Jldm9rZUNsYXNzT2JqZWN0IGFuZCBPbGVTZXRDbGlwYm9hcmQuCgoJKiB3aW5kb3dzL3dpbi5jOiBQZXIgxW5nc3Ry9m0gPHBhbmdAbWluZC5udT4KCUVudW1UYXNrV2luZG93czE2OiBCYXNpbmcgdGhlIHNlbGVjdGlvbiBvbiBhIHdpbmRvdydzIHRhc2sgaXMgbm90IG9ubHkKCW1vcmUgc3RyYWlnaHRmb3J3YXJkIHRoYW4gY29tcGFyaW5nIG1lc3NhZ2UgcXVldWVzLCBpdCBhbHNvIHdvcmtzCgliZXR0ZXIgZm9yIFdpbjMyIGFwcGxpY2F0aW9ucy4KCgkqIG1lbW9yeS9sb2NhbC5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUNoYW5nZWQgc29tZSBvZiB0aGUgbWVzc2FnZSBjbGFzc2VzLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8RGF2aWQuRmF1cmVAaW5zYS1seW9uLmZyPgoJU3BlY2lhbCBjYXNlIGhhbmRsaW5nIG9mIDogU2hpZnQgKyBhcnJvdywgc2hpZnQgKyBob21lLCAuLi4KCVggcmV0dXJucyBhIGNoYXIgZm9yIGl0LCBidXQgV2luZG93cyBkb2Vzbid0LiBJZ25vcmUgWCBjaGFyLgoJQWxzbyBhZGRlZCBzb21lIGRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy93aW5zb2NrLmM6CglTdGVwaGVuIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJQnVnZml4ZXMgZm9yIElQWCBjb2RlIGFuZCBwcmVsaW1pbmFyeSBncm91bmR3b3JrIGZvciBvdGhlciBhZGRyZXNzCglmYW1pbHkgc3VwcG9ydC4KCgkqIG9sZS9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJKENvR2V0Q2xhc3NPYmplY3QpIG9uZSBtaXNzaW5nIENBTExCQUNLLCBleHRyZW1lbHkgc2ltcGxpZmllZCBjbHNpZAoJbG9va3VwIChSZWdpc3RyeSBpcyBjYXNlIGluc2Vuc2l0aXZlKS4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgd2luMzIvYWR2YXBpLmMsIGRsbHMvbnRkbGwvcnRsLmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnM6IFNldFNlcnZpY2VTdGF0dXMsIFJlZ2lzdGVyU2VydmljZUN0cmxIYW5kbGVyQS9XLAoJU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXIzMkEvVywgUnRsU3lzdGVtVGltZVRvTG9jYWxUaW1lLAoJUnRsVGltZVRvVGltZUZpZWxkcy4KCgkqIGluY2x1ZGUvd2luZG93cy5oLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIGZvciBHZXROdW1iZXJGb3JtYXQzMlcuCgoJKiBtaXNjL2NydGRsbC5jOiBEYXZpZCBBLiBDdXRoYmVydCA8ZGFjdXRAZWNlLmNtdS5lZHU+CglnZXRzKCkgZml4ZXMuCgoJKiBvbGUvbmxzL3J1cy5ubHM6IEFsZXhhbmRlciBWLiBMdWt5YW5vdiA8bGF2QGxvbmcueWFyLnJ1PgoJRml4IFNDT1VOVFJZLCBTTkFUSVZFQ1RSWU5BTUUsIFNBQkJSRVZEQVlOQU1FMzsgY2hhbmdlIHNvbWUgU01PTlRITkFNRSoKCXRvIGJlIGluIG5vbWluYXRpdmUgY2FzZS4KCgkqIHdpbmRvd3MvcXVldWUuYzogUGVyIMVuZ3N0cvZtIDxwYW5nQG1pbmQubnU+CglGaXhlZCBTZXRNZXNzYWdlUXVldWUzMiB0byByZXR1cm4gRkFMU0UsIG5vdCBUUlVFLCB3aGVuIGNhbGxlZCB3aXRoCglhbiBpbnZhbGlkIHNpemUgcGFyYW1ldGVyLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIEdldENhcHMsIGNoYW5nZWQgUGxheSBhbmQgU3RvcCBoYW5kbGluZwoJb2YgcG9zaXRpb25zIGluZGV4ZXMsIHN1cHByZXNzZWQgd2FybmluZ3MuCgoJKiBtZW1vcnkvbG9jYWwuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDb3JyZWN0ZWQgYnVnIGluIFRSQUNFIGZ1bmN0aW9uLgoKCSogQVVUSE9SUywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ29ycmVjdGVkIGJ1ZyBpbiBEaXJlY3REcmF3U3VyZmFjZSBjcmVhdGlvbiBhbmQgaGFuZGxpbmcgZm9yIGRyaXZlcgoJYmFzZWQgdXBvbiBYbGlsYi4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJV2luZSBrZXlib2FyZCBhbmQgbW91c2UgaGF2ZSBub3cgdGhlaXIgb3duIFVJRHMuCgoJKiBvYmplY3RzL2JydXNoLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IGFsbG9jYXRpb24gc2l6ZSBpbiBDcmVhdGVESUJQYXR0ZXJuQnJ1c2gqLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gTm92ICA4IDE2OjQ0OjQxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIGtleXN0cm9rZSBhY2NlbGVyYXRvcnMgaW4gZGlhbG9ncyB3aGljaCBoYXZlIGNvbnRyb2xzIGNvbnRhaW5pbmcKCW90aGVyIGNvbnRyb2xzIGFzIGNoaWxkIHdpbmRvd3MuCgoJKiBpbmNsdWRlL3dpbnByb2MuaCwgbWlzYy9jb21tZGxnLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZXM6IExCXy9DQl8vRU1fIG1lc3NhZ2VzIGZvciBnZXR0aW5nL3NldHRpbmcgdGV4dCBhbmQgYSBidWcgaW4KCTE2LT4zMiBiaXQgY29udmVyc2lvbi4KCgkqIG9iamVjdHMvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJldmVudCBDcmVhdGVESUJTZWN0aW9uIGZyb20gc2VnIGZhdWx0aW5nIHdoZW4gb25lIGRpbWVuc2lvbiBvZgoJc2VjdGlvbiBpcyAwLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYzoKCVN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglTdXBwb3J0IGZvciBJUFggbmV0d29ya2luZyB2aWEgd2luc29jayB1bmRlciBMaW51eC4KCgkqIHJlbGF5MzIvZ2RpMzIuc3BlYywgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgc3R1YiBmb3IgU3RhcnREb2NBIGFuZCBFbmREb2MuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUphbWVzIFN1dGhlcmxhbmQgPEphbWVzU3V0aGVybGFuZEBnbXguZGU+CglNb3JlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZXRDdHJsSGFuZGxlcigpIGZ1bmN0aW9uIChhbmQgdGhlCglyZWxhdGVkIGNvbnNvbGUgZnVuY3Rpb25zKS4KCgkqIG9iamVjdHMvYnJ1c2guYywgcmVsYXkzMi9nZGkzMi5zcGVjOiBKZWZmIEpvaGFubiA8ampvaGFubkBraXZhLm5ldD4KCUFkZGVkIENyZWF0ZURJQlBhdHRlcm5CcnVzaFB0IChHREkzMi4zNSkgd2l0aCBtaW5vciBkb2N1bWVudGF0aW9uCgl1cGRhdGVzLgoKCSogZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvdmdhLmgsIG1zZG9zL2lvcG9ydHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2ltdWxhdGUgdGhlIFZHQSB2ZXJ0aWNhbCByZWZyZXNoLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBzdXBwb3J0IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyBpbiBCbGl0IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgZGV2aWNlIHR5cGUgY29uc3RhbnRzIGFuZCB1c2VkIHRoZW0gaW4gZGV2aWNlIGVudW1lcmF0aW9uCglmdW5jdGlvbi4KCgkqIG1pc2MvcmVnaXN0cnkuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQVBJIGRvY3VtZW50YXRpb24gc2F5cyB0aGF0IFJlZ0VudW1LZXlFeCwgUmVnRW51bVZhbHVlIGFuZAoJUmVnUXVlcnlJbmZvS2V5IHRha2VzIHRoZSBzaXplIG9mIHRoZSBidWZmZXJzIGFzIGNoYXJhY3RlcnMuCgoJKiBvbGUvY29tcG9iai5jOiBBZGRlZCBtaXNzaW5nICNpbmNsdWRlICJjb25maWcuaCIKCgkqIEFVVEhPUlMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgb2xlL2NvbXBvYmouYzoKCUp1c3RpbiBCcmFkZm9yZCA8anVzdGluQHVrYW5zLmVkdT4KCVJlcGxhY2VzIENvQ3JlYXRlR3VpZCBzdHViIHdpdGggYW4gaW1wbGVtZW50YXRpb24gb2YgRENFJ3MgVVVJRAoJc3BlY2lmaWNhdGlvbi4gQWxzbyByZW1vdmVzIHNvbWUgdW5uZWNlc3NhcnkgY29kZSBmcm9tIFN0cmluZ0Zyb21DTFNJRC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludHlwZXMuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGFuIGV4dGVybiAiQyIgc2FmZWd1YXJkLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvd2luZG93cy5oLCB3aW5kb3dzL2lucHV0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGFkZHMgR2V0RXhpdENvZGVQcm9jZXNzCgktIGNvcnJlY3RzIHRoZSByZXR1cm4tdHlwZSBvZiBHZXRLZXlTdGF0ZQoJLSBjb3JyZWN0cyB0aGUgd2luZWxpYiBkZWZpbml0aW9uIG9mIElzRGlhbG9nTWVzc2FnZQoJLSBhZGRzIHdpbmVsaWIgZGVmaW5pdGlvbnMgZm9yIFByaW50RGxnCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglFeHRTZWxlY3RDbGlwUmduIGZpeDogUkdOX0RJRkYgZGlkIG5vdCB3b3JrLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gbmV3IGlucHV0IGV2ZW50IGhhbmRsaW5nLgoKCSogaWYxNjMyL3RodW5rLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvaW5wdXQuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvaW5wdXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVVNFUi1zaWRlIHBhcnQgb2YgaW5wdXQgZXZlbnQgaGFuZGxpbmc6IGNvbnRhaW5zIGltcGxlbWVudGF0aW9uIG9mCglrZXliZF9ldmVudCBhbmQgbW91c2VfZXZlbnQsIGFuZCBVU0VSLXJlbGF0ZWQgY29kZSByZW1vdmVkIGZyb20KCXdpbmRvd3MvZXZlbnQuYyBhbmQgd2luZG93cy9rZXlib2FyZC5jLgoKCSogd2luZG93cy9kaXNwbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN0dWJzIGZvciBESVNQTEFZLkRSViByZW1vdmVkIGZyb20ga2V5Ym9hcmQuYy4KCgkqIGlmMTYzMi9tb3VzZS5zcGVjLCBpbmNsdWRlL21vdXNlLmgsIHdpbmRvd3MvbW91c2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgTU9VU0UuRFJWIChjb250YWlucyBzb21lIGNvZGUgdGFrZW4gZnJvbQoJd2luZG93cy9ldmVudC5jKS4KCgkqIGlmMTYzMi9rZXlib2FyZC5zcGVjLCBpbmNsdWRlL2tleWJvYXJkLmgsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgS0VZQk9BUkQuRFJWIChjb2RlIG1vc3RseSB0YWtlbiBmcm9tIHByZXZpb3VzCgl3aW5kb3dzL2tleWJvYXJkLmMpLgoKCSogbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogcmVhbGx5ICpkbyogc3dpdGNoIHRvIHRoZSBpbml0aWFsIHRhc2sncyBzdGFjay4KCUNhbGxMYXJnZVN0YWNrIG1lY2hhbmlzbSByZS1lbmFibGVkLgoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCU5ldyBGaWxlcy4gQWRkZWQgJ2RhdGUgYW5kIHRpbWUgcGlja2VyJyBhbmQgJ21vbnRoIGNhbGVuZGFyJyBjb250cm9sCglkdW1taWVzLiBUaGV5IGFyZSB1c2VkIGJ5IE91dGxvb2sgRXhwcmVzcy4KCgkqIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHViIGZvciBDcmVhdGVCaW5kQ3R4KCkgYW5kIGFkZGVkIG1pc3NpbmcgQ29HZXRDbGFzc09iamVjdCgpCgl0byAqLnNwZWMgZmlsZS4gTWFrZXMgSW50ZXJuZXQgRXhwbG9yZXIgNC4wMSBoYXBweSA7LSkKCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUxpdHRsZSBpbXByb3ZlbWVudC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHByZWxpbWluYXJ5IGhpdCB0ZXN0aW5nLiBNYWtlcyByZWdlZGl0LmV4ZSBoYXBweSA7LSkKCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGRvY3VtZW50YXRpb24gYW5kIGZpeGVkIHR5cG9zLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgRHJhd1N0YXR1c1RleHQzMkFXKCkgYW5kIENyZWF0ZVN0YXR1c1dpbmRvdzMyQVcoKS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGRpc3BsYXkgYW5kIGxheW91dCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kYXRldGltZS5oLCBpbmNsdWRlL21vbnRoY2FsLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTmV3IEZpbGVzLiBBZGRlZCAnZGF0ZSBhbmQgdGltZSBwaWNrZXInIGFuZCAnbW9udGggY2FsZW5kYXInIGNvbnRyb2wKCWR1bW1pZXMuIFRoZXkgYXJlIHVzZWQgYnkgT3V0bG9vayBFeHByZXNzLgoKU2F0IE5vdiAgNyAxMjo1NjozMiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCByZWxheTMyL2dkaTMyLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oOgoJQ2hhcmxlcyBTdXByaW4gPGNzdXByaW5AbHlueC5kYWMubmV1LmVkdT4KCUFkZGVkIHN0dWJzIGZvciBTZXRXaW5NZXRhRmlsZUJpdHMgYW5kIEdldEVuaE1ldGFGaWxlUGFsZXR0ZUVudHJpZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU3RvcCBYMTFEUlZfUm91bmRSZWN0IGNhbGxpbmcgWERyYXdBcmMgd2l0aCAtdmUgd2lkdGgvaGVpZ2h0IHBhcmFtcwoJd2hpY2ggaXQgZGlkIGlmIGVpdGhlciBlbGxpcHNlIGRpbWVuc2lvbiB3YXMgemVyby4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJT3B0aW1pemUgUm91bmRSZWN0MzIgdG8gY2FsbCBSZWN0YW5nbGUzMiBpZiBlaXRoZXIgZWxsaXBzZSBkaW1lbnNpb24KCWlzIHplcm8uCgoJKiByZWxheTMyL21wci5zcGVjLCBtaXNjL25ldHdvcmsuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN0dWIgV05ldEVudW1DYWNoZWRQYXNzd29yZHMuCgoJKiBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFkZSB0aGlzIGZpbGUgRE9TTU9EIGZyaWVuZGx5LgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVbmlmaWVkICJObyBpbXBsZW1lbnRhdGlvbiBmb3IuLi4iIHdhcm5pbmdzLgoKCSogd2luMzIvZGV2aWNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbW9ub2RlYmcudnhkIHVzZWQgYnkgc29tZSBPcmlnaW4gcHJvZ3JhbXMgaW1wbGVtZW50ZWQuCgoJKiBvYmplY3RzL2JpdG1hcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmFpbCBpZiBsZXNzIHRoZW4gb25lIGVudGlyZSBsaW5lIHJlcXVlc3RlZCBpbiBHZXRCaXRtYXBCaXRzMzIuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIFdNX0dFVERMR0NPREUgaGFuZGxpbmcgaW4gKFVuKU1hcE1zZzMyQXRvMTYuCgoJKiBpZjE2MzIvY29tcG9iai5zcGVjLCBpbmNsdWRlL29sZS5oLCBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgQ29Mb2FkTGlicmFyeSwgQ29GcmVlQWxsTGlicmFyaWVzLAoJQ29GcmVlVW51c2VkTGlicmFyaWVzLCBDb0ZyZWVMaWJyYXJ5LgoJRml4ZWQgbWlzc3BlbGxpbmcgb2YgQ29VbmluaXRpYWxpemUuCgoJKiBwcm9ncmFtcy9jbG9jay9DaGFuZ2VMb2csIHByb2dyYW1zL2Nsb2NrL21haW4uYzoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglGaXhlcyBmb3Igb3RoZXIgbGFuZ3VhZ2VzLgoKRnJpIE5vdiAgNiAxNzozNjoxMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJRml4IHdpZGUgY2hhcmFjdGVyIGZ1bmN0aW9ucyB0byByZXR1cm4gY2hhcmFjdGVyIGNvdW50IGluIGNoYXJhY3RlcgoJcXVhbnRpdGllcyBub3QgYnl0ZSBxdWFudGl0aWVzLiAgTWFrZSBSZWdRdWVyeUluZm9LZXkgYW5kCglSZWdRdWVyeUluZm9LZXkgYmVoYXZlIGNvcnJlY3RseSBpbiB3aW45NSBtb2RlLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ2hhbmdlZCBtb3VzZSBidXR0b24gbWFwcGluZyBhbmQgY2hlY2sgc2l6ZSBvZiByZXR1cm4gYnVmZmVyLgoKCSogb2JqZWN0cy9jbGlwcGluZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRXh0U2VsZWN0Q2xpcFJnbigpIHdpdGggUkdOX0NPUFkgY29waWVzIHRoZSB3cm9uZyByZWdpb24uCgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGFuIGVycm9yIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBGSUxFX1NoYXJlRGVueS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvZGVidWd0b29scy5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29sYXJpcyByZWRlZmluZXMgRVJSIGFuZCBDUywgZml4ZWQgb2NjdXJhbmNlcy4KCVNvbGFyaXMgaGFzIFRSQVBOTyBpbiBpdHMgc2lnY29udGV4dCwgYWRkZWQgdG8gc2lnX2NvbnRleHQuaAoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL21taW8uYywgcmVsYXkzMi93aW5tbS5zcGVjLCBpZjE2MzIvbW1zeXN0ZW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSBtbWlvU2V0QnVmZmVyIGNhbGxhYmxlIGZyb20gMTYgYW5kIDMyIGJpdCBjb2RlLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdyb25nIGFyZyB0eXBlLgoKCSogb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9nZGlvYmouYywgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUveDExZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmVkIFgxMSBESUIgc3R1ZmYgdG8geDExZHJ2LgoKCSogd2luMzIvY29kZV9wYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUaGUgQVBJIGZvciBXaWRlQ2hhclRvTXVsdGlCeXRlIHNheXMgdGhhdCB0aGUgc3JjLXN0cmluZyBoYXMgb25seSB0byBiZQoJdHJlYXRlZCBhcyBOVUxMLXRlcm1pbmF0ZWQgaWYgc3JjbGVuIGlzIC0xLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3dpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHN1cmUgQ29uZmlndXJlTm90aWZ5IGlzIHByb2Nlc3NlZCBiZWZvcmUgRXhwb3NlLCBkZWZlcnJpbmcgdGhlCglFeHBvc2UgZXZlbnQgaWYgbmVjZXNzYXJ5LCB0aHVzIHdvcmtpbmcgYXJvdW5kIGEgV00gZmxhdyB3aXRoIHZpcnR1YWwKCWRlc2t0b3Agc2Nyb2xsaW5nIGluIC1tYW5hZ2VkIG1vZGUuCgoJKiByZXNvdXJjZXMvc3lzcmVzX0ZyLnJjOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAbGVtZWwuZnI+CglUcmFuc2xhdGVkIGluIEZyZW5jaCAobm90IHNvIGdvb2QgYW55aG93KSBtZXNzYWdlIGZvciB0aGUgbWFyayBvbgoJc3lzdGVtIG1lbnUuCgoJKiBtaXNjL21haW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHRoZSBkZWZhdWx0IGZyb20gMCB0byAweDQwOSAoZW5nLXVzKS4KCgkqIHdpbmRvd3MvbWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHdvIG1pc3NpbmcgV0lOQVBJcy4KCgkqIGluY2x1ZGUvaW50ZXJmYWNlcy5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIG9uZSB3cm9uZyBwYXJhbWV0ZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCAtLWRpc2FibGUtbGliLgoKVGh1IE5vdiAgNSAxMDozMzoxOCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvbnN0YW50cyBmb3IgY29udHJvbHMgaW4gY29tbW9uIGRpYWxvZ3MuCgpXZWQgTm92ICA0IDE4OjA4OjMzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NydGRsbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgpTdW4gTm92ICAxIDE5OjI3OjI0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wb3MuYywgbWlzYy9jb21tZGxnLmMsIG1pc2Mvc2hlbGwuYywgbWlzYy93aW5zb2NrLmMsIG1pc2NlbXUvaW5zdHIuYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2pveXN0aWNrLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9kaWIuYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL21kaS5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBtZW1vcnkvaGVhcC5jOgoJSmVzcGVyIFNrb3YgPGpza292QGN5Z251cy5jby51az4KCWVnY3MgJ2FtYmlndW91cyBlbHNlJyB3YXJuaW5ncyBmaXhlcy4KCgkqIGluY2x1ZGUvdG9vbGhlbHAuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUdldCByaWQgb2YgdGhlIHJlZGVmaW5pdGlvbiBvZiBNQVhfUEFUSCBhbmQgbW92ZSBQUk9DRVNTRU5UUlkzMgoJZGVmaW5pdGlvbiB0byB0b29saGVscC5oLgoKCSogd2luZG93cy93aW4uYywgaW5jbHVkZS9wZV9pbWFnZS5oLCBsaWJyYXJ5L3dpbmVzdHViLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9jYWxsYmFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSdW4gV2luZWxpYiBhcHBsaWNhdGlvbnMgYXMgMzItYml0IHByb2Nlc3NlcyBpbiB0aGUgaW5pdGlhbCB0YXNrLgoJU2ltcGxpZmllZC9yZW1vdmVkIHNldmVyYWwgc3BlY2lhbCAnaWYgKF9fd2luZWxpYiknIGNhc2VzIGluCglXaW5lIG1haW4gY29kZSBvYnNvbGV0ZWQgYnkgdGhhdCBjaGFuZ2UuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBtb3VzZSBkcml2ZXIgY2FsbGJhY2sgYWxzbyBpZiB3aW5kb3dzIGFyZSBub3QgcmVnaXN0ZXJlZCB3aXRoIFgKCShpZiB1c2luZyBuYXRpdmUgVVNFUi5FWEUpLgoKCSogbWVtb3J5L2F0b20uYywgaW5jbHVkZS9hdG9tLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gc2VwYXJhdGlvbiBiZXR3ZWVuIEtFUk5FTCBhbmQgVVNFUi4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi9nZGkzMi5zcGVjLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIG5ldyBXaW5lIHN0YXJ0dXAgc2VxdWVuY2UsIHNlcGFyYXRpbmcgc3RhcnR1cCBpbnRvCglLRVJORUwvVVNFUi9HREkgcmVsYXRlZCBwYXJ0cywgYWxsb3dpbmcgbmF0aXZlIHJlcGxhY2VtZW50LgoJSW1wbGVtZW50ZWQgaW5pdGlhbCAna2VybmVsJyB0YXNrLgoKCSogaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvY29tcG9iai5jOgoJSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIElucHJvY1NlcnZlcjMyIENvR2V0Q2xhc3NPYmplY3QuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3JlIGJpdG1hcCBmaXhlcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBGaXhlZCBjcmFzaGVzIHdpdGggV01fR0VURExHQ09ERSB0cmFuc2xhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvLmN2c2lnbm9yZSwgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW4uaCwgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIG1vdmluZyBzb21lIFgxMSB3aW5kb3cgbWFuYWdlbWVudCBjb2RlIHRvIHdpbmRvd3MveDExZHJ2LgoKCSogaWYxNjMyL3VzZXIuc3BlYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy93aW5wcm9jLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIElzRGlhbG9nTWVzc2FnZTE2LgoKCSogTWFrZWZpbGUuaW46IERvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJVGVsbCBwZW9wbGUgdG8gaWdub3JlIHRoZSAnZ2V0cycgd2FybmluZy4gU29tZSB3aWxsIGxpc3Rlbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgd2luZG93cy9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBIGNvdXBsZSBvZiBzbWFsbCBmaXhlcyB0byBteSBiaXRtYXAgcGF0Y2guCgoJKiByZXNvdXJjZXMvVE9ETywgcmVzb3VyY2VzL3N5c3Jlc19EZS5yYywgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYywgd2luZG93cy9ub25jbGllbnQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFsbG93IHRoZSB1c2VyIHRvIHB1dCBhIG1hcmsgaW4gdGhlIGRlYnVnIGxvZyBieSBhZGRpbmcgYSBpdGVtIGluIHRoZQoJU1lTTUVOVS4gVGhlIG1lc3NhZ2VzIG5lZWRzIGltcGxlbWVudGF0aW9uIGluIGFsbCBvdGhlciBsYW5ndWFnZXMgdGhhbgoJRW5nbGlzaCBhbmQgR2VybWFuLgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHaXZlIHRlbXBmaWxlIGEgZGlmZmVyZW50IG5hbWUgZXZlbiBpZiB0aGV5IGFyZSBjcmVhdGVkIGluIHRoZSBzYW1lCglzZWNvbmQuIFJlbW92ZWQgc29tZSBmaXhtZXMgZnJvbSB0aGUgU2hhcmVEZW55IHN0dWZmLgoKCSogaW5jbHVkZS9tZGkuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ3JlYXRlV2luZG93RXgzMltBV10gbm93IGNyZWF0ZXMgYW4gTURJIGNoaWxzIHdoZW4gdGhlIFdNX0VYX01ESUNISUxECglleHRlbmRlZCBzdHlsZSBpcyBzcGVjaWZpZWQuIEFsc28gaW1wbGVtZW50ZWQgQ3JlYXRlTURJV2luZG93MzJBKCkKCWNhbGwgLSBzaW5nbGUgdGhyZWFkIG9ubHkgLS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFcnJlZCBpbiB0aGUgYml0IG1hY3JvcyBpbiB0cmVldmlldy5jLiBTaGlmdGNvdW50cyB3ZXJlIHdyb25nLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgaW1wb3J0cyB3aXRoIENoYXJhY3RlcmlzdGljcyAwIGZhaWwgZm9yIEJvcmxhbmQKCXByb2dyYW1zICh3aGljaCBzZWVtIHRvIGhhdmUgYWx3YXlzIGNoYXJhY3RlcmlzdGljcyAwKS4gQ2hhbmdlZCB0byBhbGdvcml0aG0KCXRvIHNvbWV0aGluZyBhIGJpdCBtb3JlIGludGVsbGlnZW50LgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIENvRnJlZUxpYnJhcnkgc3R1Yi4KCgkqIFJFQURNRTogVXBkYXRlZCBGQVEgbG9jYXRpb24uCgoJKiBncmFwaGljcy9lc2NhcGUuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgU0VHUFRSIGNvbnZlcnNpb24gZm9yIFNUQVJURE9DIGluIEVzY2FwZTMyKCkuCgoJKiBvYmplY3RzL2RjLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBTZXREQ1N0YXRlIGRpZCBub3QgcmVzZXQgY2xpcHBpbmcgcmVnaW9uIHRvIGVtcHR5LgoKCSogd2luMzIvaW5pdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNtYWxsIG9mZiBieSBvbmUgZXJyb3IgaW4gR2V0Q29tcHV0ZXJOYW1lMzJXLCBhbHdheXMga2lsbGVkIHRoZQoJbGFzdCBjaGFyYWN0ZXIgb2YgYSBob3N0bmFtZS4KCgkqIG9iamVjdHMvZGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QgSGVhcEZyZWUoKSBjb2xvcm1hcCBpZiB3ZSBkaWRuJ3QgYWxsb2NhdGUgb25lLgoKCSogd2luMzIvYWR2YXBpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvd2ludHlwZXMuaCwgbWlzYy9jcnRkbGwuYywgbWlzYy9wcmludGRydi5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHJlbGF5MzIvY3J0ZGxsLnNwZWMsIHJlbGF5MzIvbXByLnNwZWMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCByZWxheTMyL3dpbnNwb29sLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWJzIGZvciB1c2VyMzIsYWR2YXBpMzIgZnVuY3Rpb25zLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL250ZGxsLyosIGluY2x1ZGUvbnRkbGwuaCwgbWlzYy9BdHRpYy9udGRsbC5jLCBtaXNjL01ha2VmaWxlLmluLCByZWxheTMyL250ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgTnQqIGFuZCBSdGwqIGZ1bmN0aW9uIHN0dWJzLCBtb3ZlZCBudGRsbC5jIHRvIGRsbHMvbnRkbGwvLgoKCSogbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9oZWFwLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUNoYW5nZWQgbWFueSBXQVJOKClzIHJlbGF0ZWQgdG8gaW50ZXJuYWwgV2luZSBtZW1vcnkgZmFpbHVyZXMgdG8KCUVSUigpcy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIC5zcGVjIGVudHJ5IGZvciBLRVJORUwuUmVnaXN0ZXJTZXJ2aWNlUHJvY2Vzcy4KCgkqIGlmMTYzMi9kaXNwbGF5LnNwZWMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN0dWIgZm9yIENoZWNrQ3Vyc29yKCkuCgoJKiBpbmNsdWRlL2RpYWxvZy5oLCB3aW5kb3dzL2RlZmRsZy5jOiBUaW0gTmV3c29tZSA8bnVpc2FuY2VAY211LmVkdT4KCUZpeCBmb3Igbm9uLW1vZGFsIGRpYWxvZyBjbG9zaW5nLgoKCSogd2luZG93cy9kaW5wdXQuYzogRGF2aWQgRmF1cmUgIDxmYXVyZUBrZGUub3JnPgoJUmV3cm90ZSB0aGUgdHdvIHJvdXRpbmVzIHVzaW5nIHRoZSB2a2V5LT5zY2FuY29kZSBhcnJheSB0byB1c2UKCWtleWMydmtleSBmb3IgZWFjaCBrZXljb2RlLCBpbnN0ZWFkLiBOb3QgdGVzdGVkLgoJUmVtb3ZlZCB1bnVzZWQgSURpcmVjdElucHV0RGV2aWNlQV9HZXREZXZpY2VTdGF0ZS4KCUZpeGVkIHdhcm5pbmcgaW4gVFJBQ0UoKSBjYWxsLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8ZmF1cmVAa2RlLm9yZz4KCURlbGV0ZWQgdGhlIHZrZXktPnNhbmNvZGUgYXJyYXksIGJlY2F1c2UgUVdFUlRZIHNwZWNpZmljLgoJQmFjayB0byB1c2luZyB0aGUgWCBrZXljb2RlIGluc3RlYWQgYXMgdGhlIHNjYW5jb2RlLiBUZXN0ZWQuCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVByaW50IGEgbWVzc2FnZSBpZiB0aGUgUG9zdFNjcmlwdCBkcml2ZXIgY2FuJ3QgZmluZCBhIFBQRCBmaWxlLgoKCSogbXNkb3MvaW50MTAuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBWR0EgMjU2LWNvbG9yIG1vZGUgMHgxMyB1c2luZyB0aGUgRGlzcGxheURpYiBWR0EgZW11bGF0aW9uLgoJKERPUyBhcHBzL2dhbWVzIHVzaW5nIHRoaXMgbW9kZSBjb21lcyB1cCBub3csIGFsdGhvdWdoIHlvdSBjYW4ndAoJcmVhbGx5IGRvIGFueXRoaW5nIHdpdGggdGhlbSAoeWV0PykuKQoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBtYWNybyBWODZfRkxBRy4KCgkqIG1zZG9zL2Rvc21lbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNldCBkZWZhdWx0IHZpZGVvIG1vZGUgdG8gMyAoODB4MjUgY29sb3IpLgoKCSogbG9hZGVyL2Rvcy9kb3Ntb2QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJZ25vcmVzIGEgY291cGxlIG9mIHNpZ25hbHMuCgoJKiBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZGlzcGRpYi5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaCwgbXNkb3MvaW9wb3J0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBWR0EtZW11bGF0aW5nIERpcmVjdFggY29kZSBmcm9tIGRpc3BkaWIuYyB0byBhIHNlcGFyYXRlCglmaWxlLiBNYWRlIGl0IHVzZSBhIHN5c3RlbSB0aW1lciBhbmQgdHJhcCBJL08gYWNjZXNzZXMgdG8gdGhlIFZHQQoJREFDIHJlZ2lzdGVycyB0byBhY2NvbW1vZGF0ZSBEaXNwbGF5RGliLXVzaW5nIHByb2dyYW1zIHRoYXQgdHJ5IHRvCglhY2Nlc3MgdGhlIFZHQSBoYXJkd2FyZSBkaXJlY3RseS4KCgkqIG1pc2NlbXUvaW5zdHIuYywgaWYxNjMyL3NpZ25hbC5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1pc2Mvc3lzdGVtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUluZGlyZWN0aW9uIGZvciBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gZm9yIHVzZSBieSBET1MgY29kZS4KCUFkZGVkIHN1cHBvcnQgZm9yIGEgNTVIeiBzeXN0ZW0gdGltZXIsIGxldHRpbmcgRE9TIGFwcHMgY2FsaWJyYXRlCgl0aGVpciBkZWxheSBsb29wcyBhbmQgc3VjaC4gQ2FsbHMgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uIGZvcgoJaW5zdHJ1Y3Rpb24gZW11bGF0aW9uIChwcmluY2lwYWxseSBJL08gcG9ydCBhY2Nlc3MpLiBBZGRlZCBtYWNybwoJVjg2X0ZMQUcuCgpTYXQgT2N0IDMxIDEyOjIwOjU2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpbnB1dC5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBmaXhlcy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB0aGUgRklYTUUoKSBhbmQgbW92ZWQgU2V0TGFzdEVycm9yKDApIHRvIHRoZSBlbmQgKHNvIHRoYXQKCUdldFRlbXBGaWxlTmFtZSBldC5hbC4gY2FuJ3Qgb3ZlcndyaXRlIGl0KS4KCgkqIG1pc2MvQXR0aWMvbnRkbGwuYywgcmVsYXkzMi9udGRsbC5zcGVjLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb3RzIG9mIHN0dWJzIHRvIGdldCB3aW5sb2dvbi5leGUgZnJvbSBudDMuNTEgYW5kIG90aGVyIE5UMy41MSBhcHBsZXRzCglhIGJpdCBmdXJ0aGVyLgoKCSogd2luZG93cy9tZGkuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1ESWNoaWxkIGNyZWF0ZWQgd2hlbiB0aGUgTURJIGNsaWVudCBoYXMgdGhlIE1ESVNfQUxMQ0hJTERTVFlMRVMKCXN0eWxlLCBzaG91bGQgbm90IGJlIHNob3duIGF0IGNyZWF0aW9uIG5vciBhY3RpdmF0ZWQgdW5sZXNzIHRoZQoJV1NfVklTSUJMRSBmbGFnIGlzIHNldC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBTdGVwaGVuIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJQnVnZml4IGZvciBmaXh1cF9pbXBvcnRzOiBFbmFibGUgY2hlY2tpbmcgZm9yIHRlcm1pbmF0aW5nIGltcG9ydAoJc3RydWN0IHdpdGggQ2hhcmFjdGVyaXN0aWNzIGJpdGZpZWxkIHNldCB0byAwLgoKCSogd2luZG93cy93aW4uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURlbGF5IGxpbmtpbmcgbmV3bHkgY3JlYXRlZCB3aW5kb3cgaW4gbGlua2VkIGxpc3QgdW50aWwgYWZ0ZXIgdGhlCglXTV9OQ0NSRUFURSBtZXNzYWdlLgoKCSogZmlsZXMvZmlsZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJU21hbGwgYnVnIGluIEZJTEVfSW5Vc2UgZG9lcyBub3QgZG8gYSByZWxlYXNlIG9uIGV2ZXJ5IGFjcXVpcmVkIGZpbGUKCXBvaW50ZXIuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglscHN6TmFtZSBvZiBOVUxMIGlzIGhhbmRsZWQgKHJlbW92ZXMgc29tZSB3YXJuaW5ncykuCgoJKiB0b29scy90ZXN0cnVuOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU5vdyBhbGxvd3Mgc3BlY2lmaWNhdGlvbiBvZiBhIHN0YXJ0IGRpcmVjdG9yeSBvbiB0aGUgY21kbGluZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRzIHJpZCBvZiB0aGUgYXJjaC1kZXBlbmRlbnQgYml0IG9wZXJhdGlvbnMgKHRlc3RlZCBvbiBMaW51eCBhbmQKCVNvbGFyaXMveDg2KS4KCldlZCBPY3QgMjggMTQ6NTg6MDIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQSBkZXN0IGJ1ZmZlciB3YXMgcHJpbnRlZCBvdXQgYXMgc3RyaW5nLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb3JyZWN0ZWQgMiB3cm9uZyBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglQYXRyaWNrIFNwaW5sZXIgPHNwaW5sZXIucGF0cmlja0BtYXlvLmVkdT4KCUFkZGVkIHN0dWJzIGZvciBQcm9jZXNzMzJGaXJzdC9Qcm9jZXNzMzJOZXh0LgoKCSogaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcmVnaW9uLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvdHlwZXMuYzoKCUZyYW7nb2lzIEdvdWdldCA8Z291Z2V0QG1ldGFpbnRlZ3JhdGlvbi5uZXQ+CglGaXhlZCBzb21lIExQUE9JTlQvTFBTSVpFIG1pc21hdGNoZXMgYW5kIHNvbWUgbWlzc2luZyAiY29uc3QiIGluIHRoZQoJaGVhZGVycyBwcm90b3R5cGVzLgoKCSogZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9vZW1iaXRtYXAuYywgd2luZG93cy9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZGVkIHBCaXRtYXBCaXRzIGFuZCBwQ3JlYXRlQml0bWFwIHRvIHRoZSBHREkgZnVuY3Rpb24gdGFibGUgYW5kCgltb3ZlZCB0aGUgWDExIGRlcGVuZGVudCBzdHVmZiBvdXQgb2Ygb2JqZWN0cy9iaXRtYXAuYyBpbnRvIHgxMWRydi4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGwuaCwgZGxscy9zaGVsbDMyL3BpZGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IFNIR2V0U2ltcGxlSURMaXN0RnJvbVBhdGgzMkFXLgoJVW5pY29kZS1zYWZlOiBQYXRoRmluZEZpbGVuYW1lMzJBVy4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEp1c3RpbiBCcmFkZm9yZCA8anVzdGluQGJ1c2JveS5zcGVkLnVrYW5zLmVkdT4KCUlFeHRyYWN0SWNvbiBoYWQgYW4gZXh0cmEgYyBpbiBhIHN0cnVjdCBkZWZpbml0aW9uLgoKCSogcmVsYXkzMi9kcGxheS5zcGVjOgoJSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LnNwYW1sZXNzLmNvbT4KCUFkZGVkIGVudHJ5IGZvciBEaXJlY3RQbGF5RW51bWVyYXRlLgoKCSogb2xlL25scy9za3kubmxzLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBTbG92YWsgbmxzLXJlc291cmNlcy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgZGlmZmVyZW5jZXMgYmV0d2VlbiBTZXRSZWN0UmduMTYgYW5kIFNldFJlY3RSZ24zMi4gQWxzbyBhIGJ1ZyBmaXggZm9yCglDcmVhdGVSb3VuZFJlY3RSZ24uCgpUdWUgT2N0IDI3IDE1OjQxOjU0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3VzZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbnVtRGlzcGxheU1vZGVzKiByZXR1cm5zIGEgc3RhdGljIGxpc3Qgb2YgbW9kZXMgd2l0aCBhbGwgZGVwdGhzCgkoaGVscHMgaGV4ZW4yZGVtbyksIENoYW5nZURpc3BsYXlTZXR0aW5ncyByZXR1cm5zIHRydWUgYWxsIHRoZSB0aW1lLgoKCSogaW5jbHVkZS93aW50eXBlcy5oLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgbWlkaU9wZW5TdHJlYW0gKGhlbHBzIGhleGVuMmRlbW8pLgoKCSogb2xlL25scy9lbmMubmxzLCBvbGUvbmxzL2ZyYy5ubHMsIHJlc291cmNlcy9zeXNyZXNfRnIucmM6CglSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJU21hbGwgcGF0Y2ggZm9yIGJldHRlciBGcmVuY2ggc3VwcG9ydC4KCgkqIGxvYWRlci9lbGYuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IG1lbW9yeSBvdmVyd3JpdGUgYnVnLgoKTW9uIE9jdCAyNiAxMTowNDoxMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jOiBQYXNjYWwgQ3VvcSA8cGN1b3FAZW5zLWx5b24uZnI+CgkzMi1iaXQgY2xpcGJvYXJkIHN1cHBvcnQuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4IGZvciBRVUVVRV9TaWduYWw6IEFsd2F5cyB1c2UgUG9zdEV2ZW50IGlmIG5vIHRocmVhZCBpcyB3YWl0aW5nCglvbiB0aGUgcXVldWUuCgoJKiB3aW5kb3dzL21kaS5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIGEgbWlub3IgcHJvYmxlbSB3aXRoIHRoZSBtZW51cyBmb3IgbWRpIGNoaWxkIHdpbmRvd3MuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBjb21tZW50ZWQgb3V0IGNvZGUsIGRlc3Ryb3kgb2xkIHdpbmRvdwoJd2hlbiBTZXREaXNwbGF5TW9kZSBpcyBjYWxsZWQgYWdhaW4sIEVudW1EaXNwbGF5TW9kZXMgbm93IHJldHVybnMKCWFsbCBwb3NzaWJsZSBtb2RlcyAodXNpbmcgYSBzdGF0aWMgbGlzdCkuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFub24gc2hhcmVkIG1hcHBpbmcgZml4ZWQgZm9yIGZpbGUgc2hhcmluZy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE9jdCAyNSAxMDozMjoyMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL29sZTJubHMuYywgaW5jbHVkZS93aW5ubHMuaDogQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglGaXhlcyBmb3IgTEFOR19ORVVUUkFMLgoKCSogaW5jbHVkZS90YXNrLmg6CglBZGRlZCBzb21lIHBhZGRpbmcgdG8gdGhlIFBEQiBmb3IgaWxsLWJlaGF2aW5nIGFwcHMgKHByb2JsZW0gcmVwb3J0ZWQKCWJ5IEFuZHJlYXMgTW9ocikuCgoJKiBkb2N1bWVudGF0aW9uL2lvcG9ydC10cmFjZS1oaW50cywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBtaXNjZW11L2luc3RyLmM6CglKb25hdGhhbiBCdXp6YXJkIDxqYWJAaGV4LnByZXN0ZWwuY28udWs+CglBZGRlZCBhIG5ldyBkZWJ1Z2dpbmcgY2hhbm5lbCBpbyB0byBhbGxvdyByZWFkL3dyaXRlcyBvbiBhIHBvcnQgdG8gYmUKCWxvZ2dlZCB0byBhIGZpbGUuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglSZXBsYWNlZCAweDAwIHdpdGggMHgwMSBpbiB0aGUgdmtleS0+c2FuY29kZSBhcnJheSwgc28gdGhhdCBubyBrZXkgaXMKCWlnbm9yZWQuIDB4MDAgaXMgdXNlZCBmb3IgZ2VuZXJhdGVkIGtleSBldmVudHMgb25seS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCUFQSSBEb2N1bWVudGF0aW9uIGZvciBTZW5kTWVzc2FnZSwgR2V0VGlja0NvdW50LCBQb3N0UXVpdE1lc3NhZ2UsCglHZXRNZXNzYWdlUG9zLCBHZXRNZXNzYWdlVGltZS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGVsZXRlIHRoZSBmaWxlbmFtZSBmb3IgdGhlIG1hcHBpbmcgaW5zdGFudGx5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJTWljaGFlbCBQb29sZSA8cG9vbGVAZ3Jhdml0b24ucmVzLmNtdS5lZHU+CglTdHViIGZvciBTSFNpbXBsZUlETGlzdEZyb21QYXRoLgoKCSogbG9hZGVyL3Rhc2suYzogRml4ZWQgYnVnIGluIFN3aXRjaFN0YWNrVG8uCgpTYXQgT2N0IDI0IDEzOjA2OjE2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9zY3JvbGwuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDaGVjayBpZiBzY3JvbGxiYXIgYW5kIHBhcmVudCBhcmUgdmlzaWJsZSBiZWZvcmUgcmVkcmF3LgoKCSogaWYxNjMyL3NoZWxsLnNwZWMsIGluY2x1ZGUvc2hlbGwuaCwgbWlzYy9zaGVsbC5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGRhcm1zdGFkdC5uZXRzdXJmLmRlPgoJQWRkZWQgRHJhZyozMiBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IEthaSBNb3JpY2ggPGthaS5tb3JpY2hAZGFybXN0YWR0Lm5ldHN1cmYuZGU+CglBZGRlZCBEcmFnJkRyb3AgZnJvbSBLREUgYXBwIHRvIDE2LzMyIGJpdCBXaW5kb3plIGFwcC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGRhcm1zdGFkdC5uZXRzdXJmLmRlPgoJQWRkZWQgRklYTUUgbWVzc2FnZSBpbiBQb3N0TWVzc2FnZTMyeCBpZiBwYXJhbWV0ZXJzIGFyZSB0cnVuY2F0ZWQKCXdoZW4gY2FsbGluZyBQb3N0TWVzc2FnZTE2LgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgZ2xvYmFsIGhhbmRsZXMsIGltcGxlbWVudGVkIENvbnZlcnRUb0dsb2JhbEhhbmRsZS4KCUFsbG9jYXRlIHN0YXJ0dXAgZGF0YSBhbmQgMTYtYml0IHN0YWNrIGZvciBpbml0aWFsIHByb2Nlc3MuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzogTGVpZ2ggV2VkZGluZyA8bHdlZGRpbmdAY29ycGxpbmsuY29tLmF1PgoJU21hbGwgZml4LgoKCSogcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL0VzLnJjLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvRXMucmMsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL0VzLnJjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglBZGRlZCBTcGFuaXNoIHJlc291cmNlcy4KCgkqIG9sZS9ubHMvZXVxLm5scywgcmVzb3VyY2VzL3N5c3Jlc19Fcy5yYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJU21hbGwgY29ycmVjdGlvbnMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvYWRMaWJyYXJ5RXhXIHNwZWMgYWRkZWQgKGZ1bmN0aW9uIHdhcyB0aGVyZSkuCglTZXRQcm9jZXNzUHJpb3JpdHlCb29zdCBzdHViIGFkZGVkLgoKCSogbXNkb3MvZHBtaS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBTb2xhcmlzLgoKCSogaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL2Rpc3BkaWIuc3BlYywgaW5jbHVkZS9kaXNwZGliLmgsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kaXNwZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIERpc3BsYXlEaWIuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYWNrIHRvIHN1cHBvcnQgaW50ZWdlciBpZHMgaW4gYWxsIHN0YXRpYyBjb250cm9scy4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUJlZ2lubmluZyBvZiBtb3VzZSBzdXBwb3J0IGluIERpcmVjdElucHV0IChvbmx5ICJzdGFuZGFyZCIgbW91c2UKCWNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIGZvciBub3cpLgoKCSogaW5jbHVkZS8qLmgsIGRsbHMvY29tY3RsMzIvKi5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHh4eF9VbnJlZ2lzdGVyKCkgZnVuY3Rpb25zIHRvIGFsbCBjb21tb24gY29udHJvbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTb21lIG1pbm9yIGltcHJvdmVtZW50cyBhbmQgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGluY2x1ZGUvcmViYXIuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCB0aGUgcmViYXIgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRyYW5zcGFyZW50IGFuZCB0cmFja2luZyB0b29sdGlwcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIGEgcG9wdXAgbWVudSBzZWxlY3Rpb24gYnVnLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIERyYXdDYXB0aW9uMTYoKSBhbmQgRHJhd0NhcHRpb25UZW1wMTYoKS4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCUZpeGVkIHdhcm5pbmcuCgoJKiBncmFwaGljcy9wc2Rydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3BzZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BzZHJ2LmgsIG9iamVjdHMvZGliLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZHMgQXJjLCBDaG9yZCwgR2V0Q2hhcldpZHRoLCBQaWUsIFBvbHlQb2x5Z29uLCBQb2x5UG9seWxpbmUsIFJvdW5kUmVjdCwKCVNldFBpeGVsLCBoYXRjaGVkIGJydXNoZXMgYW5kIGEgc3R1YiBmb3IgU3RyZXRjaERJQml0cyB0byB0aGUgUG9zdFNjcmlwdAoJZHJpdmVyLgoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludGVycnVwdHMuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGludDE3IGFuZCBpbnQxOS4KCgkqIG1zZG9zL2ludDE5LmM6IENhcmwgdmFuIFNjaGFpayA8Y2FybEBkcmVhbWNvYXQuY2hlLnVjdC5hYy56YT4KCVN0dWJzIGZvciBkb3MgbW9kZSByZWJvb3QgaW50ZXJydXB0LgoKCSogbXNkb3MvaW50MTcuYzogQ2FybCB2YW4gU2NoYWlrIDxjYXJsQGRyZWFtY29hdC5jaGUudWN0LmFjLnphPgoJU29tZSBwcmludGVyIHN0dWJzIGZvciBET1MgYWRkZWQuCgoJKiBtc2Rvcy9pbnQxMy5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglNb3JlIHN0dWJzIGFkZGVkLiBUaGVzZSBjaGFuZ2VzIGFyZSBvbmx5IHBhcnRpYWxseSBtaW5lLCBJIGp1c3QgbWFkZQoJdGhlbSBjb21waWxlLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgc29tZSB0cmFjZXMgYW5kIGNsZWFuZWQgdXAgYSBjb3VwbGUgb2YgdGhpbmdzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIG1lbW9yeS9zdHJpbmcuYywgb2xlL29sZTJubHMuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCBzb21lIHN0cmluZy1zaGVsbDMyIGZ1bmN0aW9ucyB0byAzMkFXLCBwYXJhbWV0ZXIgYXJlCglvcyBkZXBlbmRpbmcgMzJBIG9yIDMyVyAoLXdpbnZlciBudDM1MSBvciBudDQwKSwgc29tZSBuZXcgZnVuY3Rpb25zLgoJU29tZSBmaXhlcyBpbiBvbGUybmxzLgoJTmV3IE9MRTJOTFNfQ2hlY2tMb2NhbGUoKSB0byBoYW5kbGUgTG9jYWxlX1VzZXJfRGVmYXVsdCBhbmQKCUxvY2FsZV9TeXN0ZW1fRGVmYXVsdC4KCVNoZWxsMzIgbm93IGR5bmFtaWNseSBsaW5rcyB0byBEUEFfKigpLCBjb21kbGczMiB3b3JrcyBhZ2FpbgoJKGNvbWN0bDMyIGhlYXAgYWxsb2MgcGF0Y2ggYnJva2UgaXQpLgoKCSogaW5jbHVkZS93aW52ZXJzaW9uLmgsIG1pc2MvdmVyc2lvbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBWRVJTSU9OX0lzT3NVbmljb2RlKCkuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb3JlIG9mZi1ieS1vbmUgZXJyb3JzIGZpeGVkLgoKCSogaW5jbHVkZS9maWxlLmgsIG1pc2MvY3J0ZGxsLmMsIG1zZG9zL3Z4ZC5jLCB3aW4zMi9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpbGUgc2hhcmluZyBmaXhlcy4KCkZyaSBPY3QgMjMgMTc6MjY6NDQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY29tbWRsZy5jOiBOaWNrIEhvbGxvd2F5IDxhbGZpZUBhbGZpZS5kZW1vbi5jby51az4KCUJ1ZyBmaXguCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIERPUyBlbnZpcm9ubWVudCBwYXNzaW5nLgoKCSogbWlzYy9tYWluLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3lzbWV0cmljczMyVyBmb3IgU1BJX0dFVElDT05USVRMRUxPR0ZPTlQgcmV0dXJucyBjb3JyZWN0IGZvbnRuYW1lLgoKCSogaW5jbHVkZS9mb250LmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgRk9OVF9HZXRPYmplY3QzMlcoKSwgR2V0T2JqZWN0MzJXKCkuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW4zMi9vcmRpbmFscy5jLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWIgUmVnaXN0ZXJUYXNrTGlzdC4KCU5ldyBmdW5jdGlvbiBFbnVtRGlzcGxheVNldHRpbmdzMzJXKCkuCgoJKiBtaXNjL250ZGxsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBwYXJhbWV0ZXIgY2hlY2tpbmcgaW4gUmx0Q29weVNpZC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgbWVzc2FnZSBtYXBwaW5nIDMyQTwtLT4zMlcgZm9yIEVNXywgQ0JfLCBMQl8gZm9yIFVuaWNvZGUuCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYXZpZmlsMzIuc3BlYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgbmV3IGRsbCBhdmlmaWwzMi5kbGwuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYywgaW5jbHVkZS9kb3NleGUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRmlyc3Qgc2hvdCBhdCBEUE1JIHJlYWxtb2RlIGNhbGxzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzZXZlcmFsIGJ1Z3Mgd2l0aCBETEwgaW5pdGlhbGl6YXRpb24uCgpUaHUgT2N0IDIyIDE3OjAyOjI1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvc3lzbGV2ZWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBvcmRpbmFsIGZvciB0d28gc3lzbGV2ZWwgZnVuY3Rpb25zLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQW5vdGhlciBtaXNzaW5nIFdJTkFQSS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBjb3JyZWN0aW9ucyBpbiBtbWlvIGRlY2xhcmF0aW9ucy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRha2UgdmlydHVhbCBzaXplcyBpbiBhY2NvdW50IGZvciB0aGUgdG90YWwgdm1hIHNpemUuCgoJKiBvbGUvbmxzL3JvbS5ubHM6IERpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglBZGQgc29tZSBtb3JlIE5MUyBkZWZpbml0aW9ucyBmb3IgdGhlIFJvbWFuaWFuIGxhbmd1YWdlLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHByb2dyYW1zIChxdWFrZTIgZXQgYWwpIGRvIGNoZWNrIGZvciBEU0NBUFNfRU1VTERSSVZFUiBhbmQgc3RvcAoJdG8gd29yay4gJ0FkanVzdCcgY2FwcyBmbGFncyBhY2NvcmRpbmdseS4KCgkqIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCVBldGUgUmF0emxhZmYgPHByYXR6bGFmZkBjZmEuaGFydmFyZC5lZHU+CglTdHViIGZvciBDb0NyZWF0ZUd1aWQoKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgbXVsdGltZWRpYS9tY2ljZGEuYzoKCUJyaWFuIExpdHppbmdlciA8YnJpYW5AbGl0emluZ2VyLmNvbT4KCUZpeGVzIGZvciBGcmVlQlNELgoKCSogbGlidGVzdC8uY3ZzaWdub3JlLCBsaWJ0ZXN0L01ha2VmaWxlLmluOgoJUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUBtaW5lcnZhLmNjLnVpdC5ubz4KCU1ha2Ugc3VyZSBoZWxsbzNyZXMuaCBpcyBnZW5lcmF0ZWQgZXZlbiBpZiAnbWFrZSBkZXBlbmQnIG5ldmVyIGhhcwoJYmVlbiBydW4uCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIG1vdmluZyBhbmQgc2l6aW5nIG9mIGNoaWxkIHdpbmRvd3MuCgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJWFF1ZXJ5S2V5bWFwIC0+IFRTWFF1ZXJ5S2V5bWFwIChmaXhlcyB0aGUgWElPIGVycm9ycyByZXBvcnRlZCkuCgpXZWQgT2N0IDIxIDE3OjIwOjQ4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1pc2NlbXUvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBpbmRpcmVjdGlvbiBmb3IgY3R4X2RlYnVnIHRvIHRoZSBET1MgbG9hZGVyLCBzbyBXaW5lbGliIHdvcmtzCglhZ2Fpbi4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3VwcG9ydCBhbm9uIHNoYXJlZCBtYXBwaW5ncyB1c2luZyB0ZW1wb3JhcnkgZmlsZXMgKHdvbnQgYmUgZGVsZXRlZAoJeWV0KS4KCgkqIG1pc2MvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdhcyBmcmVlaW5nIHRoZSBpbmNvcnJlY3QgcG9pbnRlcnMgLT4gY3Jhc2ggaW4gbWFsbG9jcy9mcmVlcy4KCgkqIGZpbGVzL2Rvc19mcy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURlZmluZURvc0RldmljZSBzdHViIGFkZGVkLgoKCSogbWlzY2VtdS9tYWluLmMsIHdpbmUuaW5pOiBDaGFkIFBvd2VsbCAocHhweEB1c2EubmV0KQoJQWRkZWQgYSBkZWZhdWx0IHByb2dyYW0gb3B0aW9uIGluIHdpbmUuY29uZiBpbiBzZWN0aW9uIFtwcm9ncmFtc10ga2V5CglEZWZhdWx0LgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBEYXZpZCBDdXRoYmVydCA8ZGFjdXRAZWNlLmNtdS5lZHU+CglCZXR0ZXIgZml4IGZvciB0aGlzX2lzX2Ffc3ludGF4X2Vycm9yLgoKCSogb2xlL25scy8qLm5sczoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJQWRkZWQgdGhlIGVudHJpZXMgZm9yIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgYW5kCglMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVVwZGF0ZWQgbWFucGFnZS4KCgkqIHJlbGF5MzIvbXNhY20zMi5zcGVjOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHdyb25nIG9yZGluYWxzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXhlZCBhIGJ1ZyBpbiBSZWN0SW5SZWdpb24uCgpUdWUgT2N0IDIwIDE1OjI2OjI2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnRlcnJ1cHRzLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJUmVtb3ZlZCBhbiBpbmNvcnJlY3QgZXJyb3IgbWVzc2FnZS4KCgkqIGZpbGVzL2RyaXZlLmM6IFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAbWluZXJ2YS5jYy51aXQubm8+CglNYWtlIHN1cmUgdGhlIGFjY2VzcyBmdW5jdGlvbnMgYXJlIGFsd2F5cyB1c2VkIHRvIGdldCBsYWJlbCBhbmQgc2VyaWFsCgludW1iZXIuCgpNb24gT2N0IDE5IDA4OjQ4OjI0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvb2xlMm5scy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAaG9sLmZyPgoJRml4ZWQgYnVnIG9uIHBsYXRmb3JtcyB3ZXJlIGJ1ZmZlcnMgcmV0dXJuZWQgYnkgZ2V0ZW52KCkgc2hhbGwgbm90IGJlCglmcmVlKCknZWQuIEFkZGVkIEZyZW5jaCAoZGVmYXVsdCkgaW4gbG9jYWxlIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBEYXZlIEN1dGhiZXJ0IDxkYWN1dEBlY2UuY211LmVkdT4KCUNoYW5nZWQgInRoaXMgaXMgYSBzeW50YXggZXJyb3IiIHRvICJ0aGlzX2lzX2Ffc3ludGF4X2Vycm9yIiB0byBtYWtlIGEKCWNvbXBpbGUtdGltZSBlcnJvciBtZXNzYWdlIG1ha2UgbW9yZSBzZW5zZS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIG9mZiBieSBvbmUgZXJyb3IgaW4gSEFORExFX0dldE9ialB0ci4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE9jdCAxOCAxNDo0ODozMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUcnkgdG8gaW1wbGVtZW50IHRoZSBPRl9TSEFSRV9YWFggb3B0aW9ucy4KCU1vdmUgdGhlIG1vZGUgdHJhbnNsYXRpb25zIHRvIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbWFpbi5oLCBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlMm5scy5jLCBvbGUvb2xlc3ZyLmMsIG9sZS9zdG9yYWdlLmM6CglNYXR0aGV3IEJlY2tlciA8bWJlY2tlckBnbGFzc2NpdHkubmV0PgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YiBmb3IgQ29TZXRTdGF0ZTMyLgoKCSogbWlzY2VtdS9tYWluLmM6IENoYWQgUG93ZWxsIDxweHB4QHVzYS5uZXQ+CglBZGRlZCBhYmlsaXR5IHRvIHJlYWQgYSBzdGFydHVwIHByb2dyYW0gZnJvbSB3aW5lLmluaSBmaWxlLgoJUHV0IGl0IGluIHNlY3Rpb24gW3Byb2dyYW1zXSBrZXkgU3RhcnR1cC4KCgkqIGluY2x1ZGUvdHJhY2tiYXIuaCwgaW5jbHVkZS90cmVldmlldy5oLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGdXJ0aGVyIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJSW1wbGVtZW50ZWQgTG9hZEN1cnNvckZyb21GaWxlLCBmaXhlZCBEcmF3SWNvbkV4IHRvIHN1cHBvcnQgb2Zmc2NyZWVuCglkcmF3aW5nLCBmaXhlZCBDVVJTT1JJQ09OX0NyZWF0ZUZyb21SZXNvdXJjZSB0byBzdXBwb3J0IExSXyBzZW1hbnRpY3MuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBMb2FkSW1hZ2UgdG8gc3VwcG9ydCBhbG1vc3QgYWxsIExSXyBmbGFncy4KCgkqIG9iamVjdHMvZGliLmM6IFR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgYnVnIGluIERJQl9TZXRJbWFnZUJpdHNfUkxFOCAoYmVjYXVzZSAnY29sb3InIHZhciB3YXMgV09SRCwgYWxsCglDT0xPUkVGcyBoYWQgcmVkIHBhcnQgemVyb2VkKSB0aGF0IG1hZGUgcGxlbnR5IG9mIGN5YW4gY29sb3JzLCBtaW5vcgoJYnVnIGZpeGVzLCBjaGFuZ2VzIHRvIHN1cHBvcnQgTFJfIGZsYWdzLgoKCSogaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJQWRkZWQgVklSVFVBTF9NYXBGaWxlVyB0byBtYXAgZmlsZSB0byBtZW1vcnkgaW4gb25lIGZ1bmN0aW9uIGNhbGwuCgoJKiBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIHdpbmRvd3MvbXVsdGltb24uYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJTW92ZWQgTXVsdGltb25pdG9yIEFQSSBkZWNsYXJhdGlvbnMgdG8gd2luZG93cy5oLgoKCSogaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9kcml2ZXIuaCwgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjLCB3aW5kb3dzL2RyaXZlci5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglJbXBsZW1lbnRlZCBEZWZEcml2ZXJQcm9jMzIgZnJvbSB3aW5tbS5kbGwuCgoJKiBjb250cm9scy9zY3JvbGwuYywgaW5jbHVkZS9zY3JvbGwuaCwgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBhbXMuc3VueXNiLmVkdT4KCUdvdCByaWQgb2YgZmxpY2tlcmluZyBzY3JvbGxiYXIgYXJyb3dzLiBNREkgc2Nyb2xsaW5nIHNwZWVkZWQgdXAgYQoJYml0LgoKCSogaW5jbHVkZS93aW5ubHMuaCwgb2xlL25scy9kZXUubmxzLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglHZXRMb2NhbGVJbmZvMzJBIGNhbiBoYW5kbGUgbGVuPTAgbm93LCBzZXRzIExhc3RFcnJvciBhbmQgdG91Y2hlcwoJYnVmZmVyIG9ubHkgd2hlbiBuZWNlc3NhcnkuCglVcGRhdGVkIGRldS5ubHMgYW5kIHNvbWUgTENUWVBFUyBpbiB3aW5ubHMuaC4KCgkqIGlmMTYzMi9yZWxheS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ2FsbFByb2NbRXhdMzJXIGNhbGxlZCB3aXRoIGxwUHJvY0FkZHJlc3M9PU5VTEwgc2hvdWxkIHJldHVybiB6ZXJvIGFuZAoJbm90IGNyYXNoLgoKU2F0IE9jdCAxNyAxMzowNzo0OCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlZHVjZWQgaHVnZSAoMUdCKSBoZWFwIGNyZWF0aW9uIHRoYXQgY2F1c2VkIFN0YXJjcmFmdCB0byBmYWlsLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIHdpbmRvd3MvZGlhbG9nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBTb2xhcmlzLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIG5vbiBPU1Mgc3lzdGVtcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIG5vbiBYRjg2LURHQSBzeXN0ZW1zLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC92b2xpbmZvLmM6CglQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQHRkLm9yZy51aXQubm8+CglOZXcgZmlsZSB0byB0ZXN0IERSSVZFX0dldExhYmVsLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbC5jYT4KCVNtYWxsLCBzdWJvcHRpbWFsLCBmaXggZm9yIDMyIGJpdCBjZGF1ZGlvIG9wZW4gcm91dGluZXMuIE5lZWRzIHByb3BlcgoJMzJiaXQgY2RhdWRpbyBiaXQgc3VwcG9ydCBiZWZvcmUgaXQgY2FuIGJlIHJlbW92ZWQuLi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWwuY2E+CglBZGRlZCBhIGJ1bmNoIG9mIHN0dWJzIGZvciBkZHJhdyBzdWZhY2Ugcm91dGluZXMuIEFsbCBzdHVicyBmb3IKCXN1cmZhY2UgcHJlc2VudCBub3cuCglDb21tZW50ZWQgb3V0IG1lc3NhZ2UgcHVtcCBjYWxscy4gSSBkb24ndCBzZWUgYSByZWFzb24gZm9yIHRoZW0gYmVpbmcKCXRoZXJlLiBFdmVyeXRoaW5nIHdvcmtzIGZpbmUgd2l0aCAtZGVza3RvcCBhbmQgLW1hbmFnZWQgc3RpbGwgaGFzCglwcm9ibGVtcy4gRGlzYWdyZWVtZW50cz8KCgkqIG9sZS9vbGUybmxzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgR2V0TG9jYWxlSW5mbzMyQSBmb3Igb3RoZXIgbGFuZ3VhZ2VzIHRoYW4gZW5fdWsuCglNYWRlIGl0IHJlY29nbmlzZSBMT0NBTEVfU1lTVEVNX0RFRkFVTFQsIExPQ0FMRV9TWVNURU1fREVGQVVMVCBhbmQKCWxhc3QgYnV0IG5vdCBsZWFzdCB0aGUgZmlyc3QgYXJndW1lbnQgbGNpZCB3aGVyZSBpcyBhbGwgYWJvdXQuLi4KCgkqIGluY2x1ZGUvc3lzbGV2ZWwuaCwgbWlzYy9yZWdpc3RyeS5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgbXVsdGltZWRpYS90aW1lLmMsIHdpbmRvd3MvY2FyZXQuYywgZGxscy9tc2FjbTMyL2J1aWx0aW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSBtb3JlIG1pc3NpbmcgV0lOQVBJcyAoaG9wZWZ1bGx5IGNvcnJlY3QpLgoKCSogb2xlL29sZTJubHMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB0aGUgPSAtPiA9PSBidWcuCgoJKiBtc2Rvcy9pbnQyZi5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglTaGVsbCBwYXJhbWV0ZXJzIChjb25maWcuc3lzKSBhbmQgQU5TSSBzdXBwb3J0IHN0dWJzLgoKCSogbXNkb3MvTWFrZWZpbGUuaW46IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIGludDE2LmMgYW5kIGludDI5LmMuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50ZXJydXB0cy5jOgoJSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJTW9yZSBpbnRlcnJ1cHRzIHRoYXQgY2FuIGJlIGRvbmUgZnJvbSBET1MgbW9kZS4KCgkqIG1zZG9zL2ludDI5LmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIGludDI5IChGYXN0IFdyaXRlIHRvIFNjcmVlbikgc3VwcG9ydC4KCgkqIG1zZG9zL2ludDE2LmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCUpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIGludDE2IChLZXlib2FyZCkgc3VwcG9ydCwgbW9zdGx5IHN0dWJzLgoKRnJpIE9jdCAxNiAxNTo0MDoyMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBidWdmaXhlcywgbmV3IHN0dWJzIFNIR2V0UmVhbElETCwgU0hSZWdRdWVyeVZhbHVlMzJXLAoJU0hSZWdRdWVyeVZhbHVlRXgzMlcsIFN0clJldFRvU3RyTiwgU3RyQ2hyVywgU0hBbGxvY1NoYXJlZCwKCVNITG9ja1NoYXJlZCwgU0hVbmxvY2tTaGFyZWQsIFNIRnJlZVNoYXJlZCwgU2V0QXBwU3RhcnRpbmdDdXJzb3IzMiwKCVNITG9hZE9MRTMyLCBTaGVsbF9NZXJnZU1lbnVzMzIsIFBhdGhHZXREcml2ZU51bWJlcjMyLCBEcml2ZVR5cGUzMiwKCVNIQWJvcnRJbnZva2VDb21tYW5kLCBTSE91dE9mTWVtb3J5TWVzc2FnZUJveCwgU0hGbHVzaENsaXBib2FyZC4KCgkqIG1pc2MvbnRkbGwuYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJRGlldG1hciBLbGluZyA8ZGlldG1hci5rbGluZ0B1c2EubmV0PgoJQWRkZWQgdW5kb2N1bWVudGVkIGZ1bmN0aW9uIFJ0bE9wZW5DdXJyZW50VXNlci4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBtaXNjL3NoZWxsLmMsIG1pc2MvdmVyLmMsIG1pc2MvdmVyc2lvbi5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBpbmNsdWRlL25lZXhlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wZWV4ZS5oLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL21zYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVuYW1lZCBhbGwgTFBJTUFHRV8qIHR5cGVzIHRvIFBJTUFHRV8qLgoKVGh1IE9jdCAxNSAxMzowMzoxMCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wb3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIGFuIGVycm9yIHdoZW4gYW4gb3duZWQgd2luZG93IGFjdGl2YXRlcyBpdHMgb3duZXIgZHVyaW5nCgljcmVhdGlvbi4KCgkqIHdpbmRvd3MvZGVmZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDbG9zaW5nIGEgZGlhbG9nIHVzaW5nIHRoZSBtZW51IGJhciAoIngiIG9yICItIiBidXR0b24gb3Igd2luZG93cwoJbWVudSkgbXVzdCBnZW5lcmF0ZSBhIFdNX0NPTU1BTkQrSURDQU5DRUwgbWVzc2FnZSwgdW5saWtlIGNsb3NpbmcKCW5vcm1hbCB3aW5kb3dzIHdoZW4gRGVzdHJveVdpbmRvdygpIGlzIGNhbGxlZC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQGNpcC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJcy4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbjMyL29yZGluYWxzLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBQcml2YXRlRXh0cmFjdEljb25FeFtBV10sIFByaXZhdGVFeHRyYWN0SWNvbnNXLAoJUmVnaXN0ZXJTaGVsbEhvb2tXaW5kb3csIERlcmVnaXN0ZXJTaGVsbEhvb2tXaW5kb3csIEdldFByb2dtYW5XaW5kb3csCglHZXRUYXNrbWFuV2luZG93LCBTZXRQcm9nbWFuV2luZG93LCBTZXRTaGVsbFdpbmRvd0V4LAoJU2V0VGFza21hbldpbmRvdy4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgbWlzYy9udGRsbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgTnRRdWVyeUluZm9ybWF0aW9uVGhyZWFkLCBOdFF1ZXJ5SW5mb3JtYXRpb25Ub2tlbiwKCVJ0bEFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZCwgUnRsRXF1YWxTaWQsIFJ0bEZyZWVTaWQuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IFR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgUGxheVNvdW5kIHRvIHN0YXJ0IGl0cyB0aHJlYWQgdGhlIHJpZ2h0IHdheS4KCldlZCBPY3QgMTQgMTg6NDA6MzUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBhbXMuc3VueXNiLmVkdT4KCUNCX1NFVENVUlNFTCBhbmQgc29tZSBvdGhlciBmaXhlcy4KCgkqIHdpbmRvd3MvcXVldWUuYzogQWxleCBLb3JvYmthIDxrb3JvYmthQGFtcy5zdW55c2IuZWR1PgoJQmV0dGVyIFFVRVVFX0ZsdXNoTWVzc2FnZXMoKS4KCgkqIHJlbGF5MzIvZ2RpMzIuc3BlYywgb2JqZWN0cy9mb250LmMsIGluY2x1ZGUvd2luZG93cy5oLCBpZjE2MzIvZ2RpLnNwZWM6CglNb3NoZSBWYWluZXIgPG1vc2hldkBlYXN5YmFzZS5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdldE91dGxpbmVUZXh0TWV0cmljczMyQS4KCUFkZGVkIHN0cnVjdHVyZXMgZm9yIE9VVExJTkVURVhUTUVUUklDUy4KCgkqIG9iamVjdHMvZGMuYywgaW5jbHVkZS9nZGkuaCwgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvIG5vdCBjbGlwIHNvdXJjZSByZWN0YW5nbGUgZXZlbiBieSB2aXNpYmxlIHJlZ2lvbiBmb3IgYml0Ymx0cy4KCUFkZGVkIGZpZWxkICd0b3RhbEV4dGVudCcgdG8gV0lOX0RDX0lORk8uCgoJKiBtc2Rvcy92eGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdHViIGZvciBWTU0gUE0gQVBJIEFIPTAyNltkZV0gKG5ldmVyIHNheSAnc2FmZSBtb2RlJykuCgoJKiBtZW1vcnkvaGVhcC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogTG9jYWwzMkZyZWUgY2F1c2VkIGZyZWUgaGFuZGxlcyBsaXN0IGNvcnJ1cHRpb24uCgoJKiBpbmNsdWRlL2RlYnVndG9vbHMuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCAtLWRpc2FibGUtZGVidWcgY29uZmlnIG9wdGlvbi4KClR1ZSBPY3QgMTMgMTI6NTA6MDQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCUFkZGVkIHN0dWJzIFNIUmVnQ2xvc2VLZXkoKSwgU0hSZWdPcGVuS2V5W0FXXSgpLCBTSFJlZ1F1ZXJ5VmFsdWVFeEEoKQoJYW5kIEZpbGVJY29uSW5pdCgpIG5lZWRlZCBieSBXaW45NSBleHBsb3Jlci4KCk1vbiBPY3QgMTIgMDc6MjU6NTQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9tZW51LmM6CglOb3JtYW4gU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglJbXByb3Zpbmcga2V5Ym9hcmQgaGFuZGxpbmcsIGluY2x1ZGluZyBhY2NlbGVyYXRvciBrZXlzIGluIGRpYWxvZwoJYm94ZXMuIEFsc28gZml4ZXMgZW50ZXIga2V5IGluIEFnZW50MzIgZWRpdCBib3guCgpTdW4gT2N0IDExIDE5OjM3OjIzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NvbW1kbGcuYzogRXJpYyBQb3VlY2ggIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCUFkZGVkIHN1cHBvcnQgaW4gZmlsZSBkaWFsb2cgYm94ZXMgaGFuZGxpbmcgZm9yIGZpbHRlcnMgbGlrZQoJIioudHh0OyouYmF0Ii4KCgkqIHdpbjMyL2tlcm5lbDMyLmMsIHNjaGVkdWxlci90aHJlYWQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBuZXcgUEUgRExMIGluaXRhbGl6YXRpb24gY29kZSwgdHJ5aW5nIHRvIGNhbGwgdGhlCglEbGxFbnRyeVBvaW50IHJvdXRpbmVzIGFsd2F5cyBpbiBjb3JyZWN0IG9yZGVyIDotKQoJQnlwYXNzIHNub29waW5nIHdoZW4gZ2V0dGluZyBkYXRhIGJ1ZmZlciBhZGRyZXNzZXMgKHRodW5rIGJ1ZmZlcnMsCglfX0dQIGhhbmRsZXJzKSBhbmQgZm9yIDMyLWJpdCByb3V0aW5lcyBkaXJlY3RseSBjYWxsZWQgZnJvbSAxNi1iaXQKCShkdWUgdG8gc3RhY2sgYWRkcmVzcyBzaXplIHByb2JsZW1zKS4KCgkqIHdpbjMyL29yZGluYWxzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBDb21tb25VbmltcFN0dWIsIE1hcEhJbnN0KExTfFNMKV9QTiwgVzMyU19CYWNrVG8zMi4KCVN0dWIgZm9yIEhvdXNlQ2xlYW5Mb2dpY2FsbHlEZWFkSGFuZGxlcywgZml4ZWQgazMyd3ZzcHJpbnRmQS4KCgkqIHRvb2xzL2J1aWxkLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCAocGFydGlhbGx5KSB0aGUgS0VSTkVMIFRodW5rbGV0IEFQSSBhbmQgQ2FsbGJhY2sgQ2xpZW50CglBUEkgKEtFUk5FTC41NjAtNTY4LDYwNC02MTIsNjE5LTYyMikuCglBZGRlZCBzdHVicyBmb3IgSzIyOCwgSzIzNywgS0VSTkVMLjM2NSwgS0VSTkVMLjQ0Ny4KCgkqIG9iamVjdHMvYml0bWFwLmMsIGlmMTYzMi9nZGkuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3R1YnMgZm9yIENyZWF0ZVVzZXIoRGlzY2FyZGFibGUpQml0bWFwMTYuCgoJKiBtZW1vcnkvaGVhcC5jLCBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEhFQVBfV0lORV9DT0RFMTZTRUcgU0VHUFRSIGhlYXBzIHdpdGggMTYtYml0IGNvZGUgc2VnbWVudHMuCgoJKiBtZW1vcnkvZ2xvYmFsLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglHbG9iYWxGaXgxNiBpcyBzdXBwb3NlZCB0byByZXR1cm4gc2VsZWN0b3IgdG8gdGhlIG1lbW9yeSBhcmVhLgoKCSogbXNkb3MvdnhkLmMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL2NvbW0uc3BlYywgaWYxNjMyL3dwcm9jcy5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdHVicyBmb3IgQ09NTS5EUlYsIFJFQk9PVC5WWEQsIFZERC5WWEQuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3N5c2xldmVsLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBlbWVyZ2VuY3kgVEVCIHNlbGVjdG9yIHRvIGF2b2lkIGRlYnVnZ2VyIGNyYXNoZXMgd2hlbiBzdGVwcGluZwoJdGhyb3VnaCByZWxheSBzdHVicyAob3Igd2hlbiBGUyBpcyBpbnZhbGlkIG90aGVyd2lzZSkuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTU9VU0UuRFJWIHJvdXRpbmVzIG1vdmVkIHRvIGV2ZW50LmMuIENhbGwgbW91c2UgZXZlbnQgcHJvY2VkdXJlLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBpbmNsdWRlL2RjLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpZjE2MzIvZ2RpLnNwZWMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy9wYXRoLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoYW5nZWQgREMgbWVtYmVycyB3LmhWaXNSZ24sIHcuaENsaXBSZ24sIGFtZCB3LmhHQ0NsaXBSZ24gdG8KCWNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSBkZXZpY2UsIG5vdCB0aGUgREMgb3JpZ2luLiBUaGlzIGlzCgluZWNlc3NhcnkgdG8gY29ycmVjdGx5IGltcGxlbWVudCBHZXRDbGlwUmduMTYgYW5kIElucXVpcmVWaXNSZ24uCglTZWxlY3RWaXNSZ24gYWxzbyBleHBlY3RzIHJlZ2lvbiBpbiBkZXZpY2UtcmVsYXRpdmUgY29vcmRpbmF0ZXMuCglBZGFwdGVkIHRoZSByZXN0IG9mIFdpbmUgdG8gdGhpcyBjb29yZGluYXRlIGNoYW5nZS4KCUltcGxlbWVudGVkIEV4dFNlbGVjdENsaXBSZ24uCgoJKiB0b29scy93aW5hcGktY2hlY2ssIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBmaWxlcy9kb3NfZnMuYzoKCUFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJU21hbGwgZml4LgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9uZWV4ZS5oLCBpZjE2MzIva2VybmVsLnNwZWM6CglBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCVlldCBhbm90aGVyIHNtYWxsIHNlbGYtbG9hZGVyIGZpeC4KCgkqIGZpbGVzL2RyaXZlLmM6IEFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJRml4ZWQgc2V2ZXJlIGJ1ZzogU2V0Q3VycmVudERpcmVjdG9yeTMyQSBkaWRuJ3Qgc2V0IHBUYXNrLT5jdXJkaXIKCWNvcnJlY3RseSBkdWUgdG8gY3VycmVudCBkcml2ZSBiZWluZyBzZXQgdG9vIGxhdGUuCgoJKiBNYWtlLnJ1bGVzLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVzZSAkKEFTKSBpbnN0ZWFkIG9mICQoQ0MpIHRvIGNvbXBpbGUgLnMgZmlsZXMuCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYnVpbHRpbjMyLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9tbXJlZy5oLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBkbGxzL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIE1TQUNNLkRMTCwgTVNBQ00zMi5ETEwgYW5kIElNQUdFSExQLkRMTC4KCgkqIGluY2x1ZGUvaW1hZ2VobHAuaCwgcmVsYXkzMi9pbWFnZWhscC5zcGVjLCBkbGxzL2ltYWdlaGxwLy5jdnNpZ25vcmUsIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvaW1hZ2VobHAvZGVidWcuYywgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmMsIGRsbHMvaW1hZ2VobHAvaW50ZXJuYWwuYywgZGxscy9pbWFnZWhscC9tb2RpZnkuYywgZGxscy9pbWFnZWhscC9zeW1ib2wuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgSU1BR0VITFAuRExMLgoKCSogaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL21zYWNtZHJ2LmgsIHJlbGF5MzIvbXNhY20zMi5zcGVjLCBpZjE2MzIvbXNhY20uc3BlYywgZGxscy9tc2FjbTMyLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20zMi9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbTMyL2J1aWx0aW4uYywgZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zYWNtMzIvZmlsdGVyLmMsIGRsbHMvbXNhY20zMi9mb3JtYXQuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNU0FDTS5ETEwgYW5kIE1TQUNNMzIuRExMLgoKCSogd2luMzIvZGV2aWNlLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCB0aGluZ3MgdGhhdCB3ZXJlIGVhcmxpZXIgYWRkZWQgYnkgbWlzdGFrZS4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglUaGUgaW1wbGVtZW50YXRpb24gb2YgbW1pb1dyaXRlIGlzIG5vdyBjYWxsZWQgaW5zdGVhZCBvZiB0aGUgc3R1Yi4KCgkqIGluY2x1ZGUvc2hlbGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeGVzLCBzaGVsbHZpZXcgdXNlcyBEUEEncyBub3csIElTaGVsbFZpZXdfR2V0SXRlbU9iamVjdCBpbXBsZW1lbnRlZC4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHViczogU0hHZXRGaWxlSW5mbzMyVywgUmVhZENhYmluZXRTdGF0ZSwgV3JpdGVDYWJpbmV0U3RhdGUsIElzVXNlckFkbWluLgoJSW1wbGVtZW50ZWQ6IFNIR2V0UGF0aEZyb21JRExpc3QzMlcuCglDaGFuZ2VkIFBhdGhDb21iaW5lLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3RydWN0dXJlcyBEVkFTUEVDVCwgVFlNRUQsIElETExpc3QuCglTaGVsbCBzcGVjaWZpYyBjbGlwYm9hcmQgZm9ybWF0cy4KCgkqIHJlbGF5MzIvd2luc3Bvb2wuc3BlYywgbWlzYy9wcmludGRydi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIEVudW1QcmludGVyc1cuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBmaXJzdCBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgY2xhc3MgSURMTGlzdCAiSXRlbSBJRCBMaXN0IExpc3QiIChpbnRlcm5hbCkuCgoJKiBtaXNjL3Zlci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGNoYW5nZXMgKHVzZXMgSElXT1JEL0xPV09SRCkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJU2F0IE9jdCAxMCAxMjowMDowMCAxOTk4ICBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgQ3JlYXRlRGlhbG9nSW5kaXJlY3RQYXJhbUFvclcuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQ+CglEb24ndCBpbnN0YWxsIG9iamVjdCBmaWxlcyB3aGVuIC0tZGlzYWJsZS1saWIgaXMgc2VsZWN0ZWQuCgoJKiBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0PgoJRG9uJ3QgcHJpbnQgbmFtZSBmb3IgMzIgYml0IGxpYiBtdWx0aXBsZSB0aW1lcy4KCUNsZWFuIHVwIHByaW50aW5nIGluIERFQlVHX1Byb2Nlc3NEZWZlcnJlZERlYnVnLgoKCSogbWVtb3J5L2hlYXAuYywgZGxscy9jb21jdGwzMi90YWIuYywgY29udHJvbHMvY29tYm8uYzoKCURhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCVNtYWxsIGZpeGVzLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUB0ZC5vcmcudWl0Lm5vPgoJQnVnZml4OiBDaGFuZ2VkIEdldERyaXZlVHlwZTMyQShOVUxMKSB0byB1c2UgY3dkJ3Mgcm9vdC4KCgkqIG9sZS90eXBlbGliLmMsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGUybmxzLmMsIG9sZS9vbGVjbGkuYywgb2xlL29sZXN2ci5jLCBvbGUvc3RvcmFnZS5jLCBtaXNjL250ZGxsLmMsIG1pc2MvcmVnaXN0cnkuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2N1bWVudGF0aW9uIGNvcnJlY3Rpb25zL3N0YW5kYXJkaXphdGlvbnMuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCUVyaWMgUG91ZWNoICA8ZXJpYy5wb3VlY2hAbGVtZWwuZnI+CglTdGFydGVkIGNvZGluZyAzMiBiaXQgTUNJIGhhbmRsaW5nLgoJQWRkZWQgT3Blbi9DbG9zZSB0byBsb3ctbGV2ZWwgTUNJIGRyaXZlcnMgKGF1ZGlvLCBtaWRpLCBhbmltLCBjZGEpLgoJV3JvdGUgTUNJIE1JREkgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJWWV0IGFub3RoZXIgaW1wcm92ZW1lbnQgdG8gdGhlIGJlemllciBjb2RlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglHZXRUaWNrQ291bnRzKCkgaGFzIGEgZ3JhbnVsYXJpdHkgaW4gd2luZG93cyBvZiAyNSBtc2VjJ3MuCglHaXJvdGVsJ3Mgc2VyaWFsIGNvbW11bmljYXRpb24gYXBwZWFycyB0byBkZXBlbmQgb24gaXQsIHNvIEkgZ3Vlc3MKCWl0J3MgYSBmZWF0dXJlLi4uCgoJKiBtaXNjL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVVwZGF0ZSB0aGUgbW9kZW1uIHN0YXR1cyBiaXQgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgUkxTRCBsaW5lIGlzCglhY3RpdmUgaW4gZXZlcnkgY2FsbCB0byBHZXRDb21tRXJyb3IoKS4gVGhpcyBpcyBub3QgdGhlIHByb3BlciBwbGFjZSwKCWJ1dCBzaW5jZSB3aW5lIGRvZXNuJ3QgZG8gYW55IGV2ZW50LXN0dWZmLi4uCglGaXhlZCBzb21lIFRSQUNFIGNhbGwncyBmYWNlZCB3aXRoIG5vbiB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5ncy4KCVJlc3RvcmUgdGhlIHRlcm1pbmFsIHN0YXRlIGF0IENsb3NlQ29tbXQgdG8gdGhlIHN0YXRlIGl0IHdhcyBhdAoJT3BlbkNvbW0oKSwgc28gdGhlIG1vZGVtIHdpbGwgZ28gb2ZmLWhvb2suCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEFsZXhhbmRlciBMYXJzc29uICA8YWxsYUBseXNhdG9yLmxpdS5zZT4KCUdldE1vZHVsZUZpbGVOYW1lMzJBKCkgcmV0dXJucyBsb25nIGZpbGVuYW1lIGlmIGFwcCBzZXRzIG9zdmVyc2lvbiA+PQoJNC4wLiBBbHNvIG1vdmVkIHRoZSBsb25nIGZpbGVuYW1lIGhhY2tlcnkgdG8gR2V0TG9uZ1BhdGhOYW1lMzJBKCkgc28KCWl0IGNhbiBiZSB1c2VkIGJ5IHdpbjMyIHByb2dyYW1zLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFsZXhhbmRlciBMYXJzc29uIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJR2V0TG9uZ1BhdGhOYW1lMzJBKCkgcmV0dXJucyBkb3MgZm9ybWF0IGxvbmcgZmlsZW5hbWUgaW5zdGVhZCBvZiB1bml4Cglmb3JtYXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTbWFsbCBmaXhlcy4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBTSEZsdXNoQ2xpcGJvYXJkLgoKCSogcmVsYXkzMi9jb21jdGwzMi5zcGVjLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNvbWUgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucy4KCUNoYW5nZWQgYWxnb3JpdGhtIGluIERQQV9RdWlja1NvcnQoKS4KCUZpeGVkIGhlYXAgY3JlYXRpb24vZGVzdHJ1Y3Rpb24gYW5kIGNvbnRyb2wgW3VuXXJlZ2lzdHJhdGlvbiBpbgoJQ29tQ3RsMzJMaWJNYWluKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgYSBidWcuCgoJKiBpbmNsdWRlL3Rvb2x0aXBzLmgsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCB0cmFja2luZyBzdXBwb3J0IGFuZCBmaXhlZCBsb2FkaW5nIG9mIHJlc291cmNlIHN0cmluZ3MuCglBZGRlZCB1bnJlZ2lzdGVyIGNvZGUuCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvaXBhZGRyZXNzLmgsIGluY2x1ZGUvbmF0aXZlZm9udC5oLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIElQQWRkcmVzcyBhbmQgTmF0aXZlRm9udCBjb250cm9scy4KCgkqIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU29tZSBtaW5vciBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL3Rvb2xiYXIuaCwgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgZHJhd2luZyBhbmQgcGxhY2VtZW50IGNvZGUuIEV4cGxvcmVyIHN0eWxlIGNvbW1vbiBkaWFsb2dzIGFyZQoJbG9va2luZyBnb29kIG5vdy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgYnVnIGluIERyYXdJY29uRXgzMigpLgoKCSogbWlzYy9tYWluLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBHZXRTeXN0ZW1JbmZvcm1hdGlvbjMyW0EvV10uCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgaWYxNjMyL3VzZXIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBEcmF3Q2FwdGlvblsxNi8zMl0gYW5kIERyYXdDYXB0aW9uVGVtcFsxNi8zMkEvMzJXXS4KCUZpeGVkIGhhbmRsaW5nIG9mIFdTX0VYX1RPT0xXSU5ET1cuCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVVwZGF0ZWQuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgaW5jbHVkZS9rZXlib2FyZC5oOgoJRGF2aWQgRmF1cmUgPGZhdXJlQGtkZS5vcmc+CglBZGRlZCBLRVlCT0FSRF9VcGRhdGVTdGF0ZSwgdG8gcmVhZCB0aGUgbW9kaWZpZXJzIHdoZW4gdGhlIHdpbmUgYXBwIGlzCglhY3RpdmF0ZWQuIFVzZXMgdGhlIG5ldyBLRVlCT0FSRF9VcGRhdGVPbmVTdGF0ZS4KCUZpeGVkIGEgcHJvYmxlbSB3aXRoIG1lbnUgYWNjZWxlcmF0b3JzIChBbHQtbGV0dGVyIGdlbmVyYXRlcyBhIGRvd24KCWFycm93IGV2ZW50IHdoaWNoIGJlZXBzIGlmIG5vdCBmaWx0ZXJlZCkuCglTcGVlZGVkIHVwIFRvQXNjaWkxNi8zMigpIGEgbGl0dGxlIGJpdC4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvdHlwZXMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBXaW5lJ3MgZGVidWdnZXIgd29yayBzYXRpc2ZhY3RvcmlseSB3aXRoIERPUyBhcHBzLgoJUGVyaGFwcyBkZXJlZmVyZW5jaW5nIHdvcmsgYmV0dGVyIGZvciBXaW4xNiBhcHBzIHRvbyBub3csIGJ1dAoJaXQgYXBwZWFycyB0aGUgZGVidWdnZXIgY29yZSB3YXNuJ3QgZGVzaWduZWQgZm9yIHNlZ21lbnRhdGlvbi4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW11bGF0ZXMgRFBNSSBtZW1vcnkgbWFwIGJ5IGNvbnZlcnRpbmcgbG93ZXItTUIgc2VnbWVudCBiYXNlCglhZGRyZXNzZXMgYXMgbmVjZXNzYXJ5LiBJbXBsZW1lbnRlZCBhbGxvY2F0aW5nL2ZyZWVpbmcgRE9TIG1lbW9yeQoJYmxvY2tzLiBBZGRlZCBYTVMgaG9vay4gKERQTUkgcmVtYWlucyBkaXNhYmxlZCBieSBkZWZhdWx0IHVudGlsCglzb21lb25lIGltcGxlbWVudHMgdGhlIHJhdyBtb2RlIHN3aXRjaCBlbnRyeSBwb2ludHMgcGt1bnppcCBuZWVkcy4pCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUkgdGhpbmsgaXQncyB0aW1lIHRvIHJldGhpbmsgdGhlIEhGSUxFMTZfVE9fSEZJTEUzMiBzdHJhdGVneSwKCWNhbid0IGtlZXAgd29ya2luZyBhcm91bmQgZmxhd3MgaW4gaXQgbGlrZSB0aGlzIChub3cgc3RkaW8KCXdhcyBnZXR0aW5nIGNsb3NlZCB3aGVuIHByb2dyYW1zIGNsb3NlIGhhbmRsZXMgPj01KQoKCSogbXNkb3MveG1zLmMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnQyZi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBiYXNpYyBYTVMgZnVuY3Rpb25zLiB3Y2IuZXhlIChXaW4xNiBkaXNhc3NlbWJsZXIpIG5vdwoJc2VlbXMgdG8gd29yayBmaW5lIHVuZGVyIFdpbmUuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBzb21lIHN5c3RlbSBkZXBlbmRlbmNpZXMgdG8gbG9hZGVyL2Rvcy9kb3N2bS5jLiBJbXBsZW1lbnRlZAoJZW52aXJvbm1lbnRhbCBhcmd2WzBdIHBhc3NpbmcgdG8gRE9TIGFwcHMuIEFkZGVkIFhNUyBob29rcy4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBtZW1zZXQoKSB0byBwcmV2ZW50IGEgZGVidWdnZXIgc2VnZmF1bHQgY2F1c2VkIGJ5Cgl1bmluaXRpYWxpemVkIHBvaW50ZXJzIGluIHRoZSBzdGFicyBsb29rdXAgdGFibGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBIGZldyBmaXhlcy4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBSdGxBbGxvY2F0ZUFuZEluaXRpYWxpemVTaWQgZW50cnkuCgoJKiBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3BlZXhlLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZW5lcmljIGR5bmFtaWMgZGxsIGxvYWRlciB1c2luZyBkbCooKSBBUEkuCglJbmNsdWRlczogc3RkY2FsbC0+Y2RlY2wgbWFwcGluZyBhYmlsaXR5LCBzbm9vcGluZy4KCShUZXN0ZWQgb25seSB3aXRoIGdsaWRlMnguZGxsIC0+IGxpYmdsaWRlMnguc28pCgoJKiBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS90aW1lLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHdpbjMyIGVuaGFuY2VkIGZ1bmN0aW9uYWxpdHkgdG8gdGltZXIgY2FsbGJhY2tzLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGJhZCBoYWNrcyBzbyBXcml0ZUNvbnNvbGVPdXRwdXQgd29ya3Mgb24gdnQxMDAgYW5kIFBlZWtNZXNzYWdlCglkb2VzIGF0IGxlYXN0IGEgYml0IG9mIGtleWJvYXJkIGlucHV0LgoKCSogcmVsYXkzMi9zbm9vcC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNob3VsZCBkaXNwbGF5IGFnYWluLgoKU2F0IE9jdCAxMCAxNTo1Mjo0NiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglJbXBsZW1lbnRlZCBEU19DRU5URVIgZGlhbG9nIHN0eWxlLgoKCSogbWlzYy9tYWluLmM6IFBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJQWRkZWQgZnVuY3Rpb24gdG8gYnVpbGQgdGhlIFdpbmRvd3MgbnVtZXJpYyBsYW5ndWFnZSBJRCBmcm9tIGxhbmd1YWdlLAoJY29kZSwgY2hhcnNldCBhbmQgZGlhbGVjdCBzdHJpbmdzLCBsaWtlIHVzZWQgYnkgVW5peCBMQU5HIHZhcmlhYmxlLgoKCSogb2xlL29sZTJubHMuYywgb2xlL25scy9SRUFETUUsIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9ubHMvKi5ubHM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCU1vcmUgTkxTIGRhdGEuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBQZXRlciBTY2hsYWlsZSA8dWRiekByei51bmkta2FybHNydWhlLmRlPgoJRml4ZWQgYSBsb3Qgb2YgYnVncyBpbiBkZHJhdy5jIHRvIG1ha2UgeGxpYiBzdXBwb3J0IHdvcmsuCglSdW5zIHN1Y2Nlc3NmdWxseSBUUjJEZW1vIGFuZCBKYXp6IEphY2tyYWJiaXQgSUkgRGVtbyEKCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IENsaWZmIFdyaWdodCA8Y2xpZmZAc25pcGU0NDQub3JnPgoJQWRkZWQgREMgb2JqZWN0IHR5cGUgdG8gdGhlIGxpc3Qgb2YgdmFsaWQgb2JqZWN0cyB0aGF0IGNhbiBiZSBkZWxldGVkCglieSBEZWxldGVPYmplY3QzMi4KClN1biBPY3QgIDQgMTg6MjA6MjkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIENoYW5nZUxvZzoKCVN0YXJ0aW5nIG5ldyBmb3JtYXQgY2hhbmdlbG9nIChvbGRlciBjaGFuZ2VzIG1vdmVkIHRvCglkb2N1bWVudGF0aW9uL0NoYW5nZUxvZy5PTEQpLgo=