LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGcmkgRGVjIDExIDE1OjA0OjExIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGxoZWxwMzIuaCwgaW5jbHVkZS90b29saGVscC5oLCBtaXNjL3Rvb2xoZWxwLmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVBhdHJpY2sgU3BpbmxlciA8c3Bpbmxlci5wYXRyaWNrQG1heW8uZWR1PgoJSW1wbGVtZW50ZWQgQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90LCBpbmNsdWRpbmcgdHdvIG9mIHRoZSByb3V0aW5lcwoJdXNpbmcgc25hcHNob3RzLCBQcm9jZXNzMzJGaXJzdCBhbmQgUHJvY2VzczMyTmV4dC4KCgkqIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG9sZS9jb21wb2JqLmMsIG9sZS92YXJpYW50LmM6CglKdXN0aW4gQnJhZGZvcmQgPGp1c3RpbkB1a2Fucy5lZHU+CglNb3N0IG9mIHRoZSBjdXJyZW5jeSB2YXJpYW50IGNvbnZlcnNpb24gZnVuY3Rpb25zIGltcGxlbWVudGVkLgoJTWlub3IgYnVnZml4ZXMgYW5kIGhlYWRlciB0aWR5aW5nLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvcmFzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgcmVsYXkzMi9yYXNhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBSYXNFbnVtQ29ubmVjdGlvbnMgc3R1Yi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXggaW4gUGF0aENvbWJpbmUzMltBfFddLgoJVmlldyBtZW51IGluIGV4cGxvcmVyIGFuZCBvbiByaWdodCBtb3VzZSBidXR0b24gaXMgd29ya2luZyBub3cuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkICBJTEdldERpc3BsYXlOYW1lLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgU2hlbGxFeGVjdXRlRXgzMkEuCglTbWFsbCBjaGFuZ2VzLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBtZW51IHJlc291cmNlcyB0byByYy1maWxlLgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBvbGUvb2xlMm5scy5jLCB3aW4zMi9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR3byBkZWJ1ZyBtZXNzYWdlcyBjbGFyaWZpZWQsIG9uZSB1c2VsZXNzIHByb3RvdHlwZSByZW1vdmVkLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIG9sZS92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCTI5NCBtaXNzaW5nIFdJTkFQSSBhZGRlZC4KCgkqIHRvb2xzL3Rlc3RydW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJS2lsbCBzd2FwcGVkIG91dCAod2luZSkgcHJvY2Vzc2VzIHRvbyBhbmQgdHJ1bmNhdGUgZGlmZiBhZnRlciBzb21lIHh4eAoJbGluZXMuCgoJKiBvbGUvb2xlMm5scy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIFNldExhc3RFcnJvciB3aXRoIHdyb25nIHZhbHVlLgoKCSogbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgQWJvcnREb2MxNiwgbW92ZSBBYm9ydERvYzMyIGFuZCBTdGFydERvYzMyVyB0bwoJbWlzYy9wcmludGRydi5jIGFuZCBmaXggYSBmZXcgY29tcGlsZSB3YXJuaW5ncy4KCgkqIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy91c2VyLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9udGRsbC9udC5jLCBpZjE2MzIvdHlwZWxpYi5zcGVjLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvaW50MjEuYywgb2xlL29sZTJubHMuYywgb2xlL3R5cGVsaWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIGEgYnVuY2ggb2YgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBmaWxlcy9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgV2luMzIgc3luY2hybyB0byBGSUxFcyAodXNlZnVsIG9ubHkgZm9yIHRlcm1pbmFsIGhhbmRsZXMpLgoKVGh1IERlYyAxMCAxNjowNDo1MSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KCgkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCByZWxheTMyL2NvbWN0bDMyLnNwZWMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL21wci5zcGVjLCByZWxheTMyL3NoZWxsMzIuc3BlYywgcmVsYXkzMi90YXBpMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgcmVsYXkzMi93aW5zcG9vbC5zcGVjLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL3RpbWUuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpZjE2MzIvZGRlbWwuc3BlYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9kZGVtbC5jLCBtaXNjL25ldHdvcmsuYywgbWlzYy9wcmludGRydi5jLCBtaXNjL3RhcGkzMi5jLCBjb250cm9scy9lZGl0LmMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVN5bHZhaW4gU3QtR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJTG90cyBvZiBuZXcgc3R1YnMuCgoJKiBtc2Rvcy92eGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMZXQgdGhlIFN5c3RlbV9UaW1lX1NlbGVjdG9yIGNsb2NrIHRpY2suCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjZW11L2luc3RyLmMsIG1zZG9zL2Rvc21lbS5jLCBncmFwaGljcy9kaXNwZGliLmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS92Z2EuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBDcmVhdGVTeXN0ZW1UaW1lciBpbnRlcmZhY2UgY2hhbmdlLgoKCSogaWYxNjMyL3N5c3RlbS5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgbWlzYy9jYWxsYmFjay5jLCBtaXNjL3N5c3RlbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDbGVhbmVkIHVwIENyZWF0ZVN5c3RlbVRpbWVyIGludGVyZmFjZSBmb3IgdXNlIHdpdGggMzItYml0IGNhbGxiYWNrcy4KCShOT1RFOiAxNi1iaXQgY2FsbGJhY2tzIHN0aWxsIGRvbid0IHdvcmshKQoKCSogd2luZG93cy9tZGkuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CgktIEhhbmRsZSBXTV9NRElSRVNUT1JFIGJ5IGNhbGxpbmcgV01fU1lTQ09NTUFORCBmb3IKCXRoZSBjaGlsZCB3aW5kb3cgc28gdGhhdCB0aGUgc3lzdGVtIG1lbnUgaXMgc2V0IGNvcnJlY3RseS4KCS0gSW4gTURJQ2FzY2FkZSBhbmQgTURJVGlsZSB1c2UgV01fTURJUkVTVE9SRSBtZXNzYWdlCgl0byByZXN0b3JlIG1heGltaXplZCB3aW5kb3cgc28gdGhhdCBzeXN0ZW0gbWVudSBpcwoJaGFuZGxlZCBjb3JyZWN0bHkuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS90eXBlbGliLmMsIG9sZS92YXJpYW50LmMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCUplYW4tQ2xhdWRlIENvdGUgPGplYW4tY2xhdWRlQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFZBUklBTlQgQVBJcy4KCgkqIGZpbGVzL2RyaXZlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIERSSVZFX0dldEZyZWVTcGFjZSB0byBoYW5kbGUgc3BhY2UgPiA0IEdCeXRlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJaGFuZGxlIFRWSUZfVEVYVCBieSBUUkVFVklFV19TZXRJdGVtIGFjY29yZGluZyB0byBNUyBkb2N1bWVudGF0aW9uLgoJYmV0dGVyIGhhbmRsaW5nIG9mIExQU1RSX1RFWFRDQUxMQkFDSzMyQQoJVFJFRVZJRVdfR2V0TmV4dHxQcmV2TGlzdEl0ZW0gZGlkbid0IGRlc2NlbmQgaW50byB2aXNpYmxlIGNoaWxkIGl0ZW1zLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2FybiBpZiB0d28gLmV4ZXMgY29uZmxpY3Qgd2l0aCBlYWNoIG90aGVyIGFuZCB0aGUgc2Vjb25kIGRvZXMgbm90CgloYXZlIHJlbG9jYXRpb24gcmVjb3Jkcy4KCgkqIG1pc2MvY29tbWRsZy5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBHZXRGaWxlVGl0bGUzMkEgbm90IGZpbGxpbmcgdXAgbHBUaXRsZSBpZiBscEZpbGUgZGlkbid0Cgljb250YWluICcvJywnXFwnIG9yICc6Jy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJRml4ZWQgYSBwb3RlbnRpYWwgY3Jhc2ggaWYgYSB1c2FibGUgdmlkZW8gbW9kZSBpcyBub3QgZGV0ZWN0ZWQuCgoJKiB0b29scy9tYWtlX2F1dGhvcnM6IFNjcmlwdCB0byBnZW5lcmF0ZSBhdXRob3JzIGZpbGVzCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJU3R1YnMgZm9yIElEaXJlY3RJbnB1dEVmZmVjdCBhbmQgSURpcmVjdElucHV0RGV2aWNlMkEgbWV0aG9kcywKCWFzIHdlbGwgYXMgQWRkUmVmKCksIEdldENhcGFiaWxpdGVzKCksIEVudW1PYmplY3RzKCksCglHZXRQcm9wZXJ0eSgpLCBHZXRPYmplY3RJbmZvKCksIEdldERldmljZUluZm8oKSwgSW5pdGlhbGl6ZSgpLAoJYW5kIFJ1bkNvbnRyb2xQYW5lbCgpIGZvciBJRGlyZWN0SW5wdXREZXZpY2UuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJU2V0IHdpbmRvdyBmb2N1cyBpbiAgX2NvbW1vbl9JRGlyZWN0RHJhd19TZXREaXNwbGF5TW9kZSgpLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCUFjY2VwdCBNQ0lfT1BFTiBhbmQgTUNJX0NMT1NFIG1lc3NhZ2VzIGluIE1DSUNEQVVESU9fRHJpdmVyUHJvYzMyKCkuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBkZWZlcnJlZCBFeHBvc2UgZXZlbnRzIGhhbmRsaW5nLgoKCSogd2luZG93cy9kY2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjbGlwIFZpc1JnbiBhZ2FpbnN0IFggZGVza3RvcC4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMb2FkTW9kdWxlMzIvV2luRXhlYzMyIHNob3VsZCByZXR1cm4gMTYtYml0IGhJbnN0YW5jZS9oVGFzay4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTYW5pdHkgY2hlY2sgb24gZm9udCBzaXplLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgcGFyZW50aGVzZXMgYWRkZWQuCgpXZWQgRGVjICA5IDE2OjM3OjA1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgoKCSogbG9hZGVyL3Rhc2suYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvd2luY29uLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVuaGFuY2VkIFdpbjMyIENvbnNvbGUgKFhURVJNKQoJLSBpbnB1dGhhbmRsaW5nIGVuaGFuY2VkIChrZXlzIGFuZCBtb3VzZWNsaWNrcykKCS0gd2luMzIgc3luY2hyb25pemF0aW9uIChwYXJ0aWFsKQoJLSBsb3RzIG9mIGVuaGFuY2VtZW50cyB0byBkcmF3aW5nIGZ1bmN0aW9ucwoJLSBzaW1wbGUvY29tcGxleCBjb25zb2xlIChzaW1wbGUtc3RkaW4vc3Rkb3V0IC0+IGNvbXBsZXgteHRlcm0pLgoKCSogY29uc29sZS9NYWtlZmlsZS5pbiwgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3R0eS5jLCBjb25zb2xlL3h0ZXJtLmMsIGluY2x1ZGUvY29uc29sZS5oOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGQgYSBkcml2ZXIgdG8gb3BlbiB1cCBhIG5ldyB4dGVybSB3aW5kb3cgd2hlbmV2ZXIgY29uc29sZSBvdXRwdXQgaXMKCW5lZWRlZC4gRGVyaXZlZCBmcm9tIGNvbnNvbGUvd2luMzIuYyBidXQgd2UgYXJlIG5vdCB5ZXQgcmVhZHkgdG8gbWVyZ2UKCXRoZSBjb2RlIGNvbXBsZXRlbHkuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5kb3dzLmgsIHRvb2xzL2ZudDJiZGYuYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJSW1wcm92ZWQgdGhlIGhhbmRsaW5nIG9mIGZvbnQgZW5jb2RpbmdzLgoKCSogbXNkb3MvZHBtaS5jLCBpbmNsdWRlL21pc2NlbXUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBEUE1JIFJNQ0JzIHVzaW5nIHRoZSBET1Mgc3Vic3lzdGVtLCBhbmQgYSBmZXcgb3RoZXIKCWltcHJvdmVtZW50cy4gQWxzbywgc29tZSBzcGVjaWFsLWNhc2VkIHNob3J0Y3V0IHBhdGhzIHdpbGwgYWxsb3cgc29tZQoJY29tbW9uIHJlYWwtbW9kZSBjYWxsL1JNQ0IgY29tYmluYXRpb25zIHRvIHdvcmsgZXZlbiB3aXRob3V0IGNhbGxpbmcgdGhlCglET1Mgc3Vic3lzdGVtLCB0aHVzIGxldHRpbmcgQVBJcyBsaWtlIERPU0FTUEkgd29yayB3aXRob3V0IGFueSBkaXJ0eSBoYWNrcwoJZXZlbiBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgdXNlIGRvc21vZC4KCgkqIG11bHRpbWVkaWEvdGltZS5jLCBvbGUvY29tcG9iai5jLCBmaWxlcy9jaGFuZ2UuYywgbG9hZGVyL21vZHVsZS5jLCBtaXNjL2x6ZXhwYW5kLmMsIG1pc2MvbWFpbi5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHVubmVjZXNzYXJ5ICNpbmNsdWRlIGFuZCBtZXNzYWdlcyByZW1vdmVkLgoKCSogb2xlL29sZTJubHMuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU29tZSBzbWFsbCBjb3JyZWN0aW9ucyB0byBFbnVtU3lzdGVtTG9jYWxlczMyQVcKClR1ZSBEZWMgIDggMTU6MDY6MzkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CgoJKiB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCVRyaWVkIGFub3RoZXIga2x1ZGdlIGZvciB0aGUgWG1kLmggcHJvYmxlbS4KCgkqIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglBZGRlZCBmdWxsc2NyZWVuIERHQSBzdXBwb3J0LgoKCSogbWlzYy9tYWluLmM6IFBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJRml4ZWQgZHVtbXkgZW50cmllcyBpbiBNQUlOX1BhcnNlTGFuZ3VhZ2VPcHRpb24oKS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgbXVsdGltZWRpYS9tY2ljZGEuYzoKCUJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBNQ0lfQ0RBX1NUQVRVU19UWVBFX1RSQUNLLgoJRml4IGFuIG9mZi1ieS1vbmUgYnVnIHdpdGggTUNJX1NUQVRVU19MRU5HVEguCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN1cGVyZmxvdXMgV0lOQVBJIHJlbW92ZWQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXYXJuIGFib3V0IGludmFsaWQgZW50cnlwb2ludHMgKGNyZWF0ZWQgYnkgdmlydXNlcykgd2hpY2ggcmVzdWx0IGluCglXaW5lIGNyYXNoZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZSBYMTEgcGFsZXR0ZSBvbiBEaXJlY3REcmF3U3VyZmFjZTo6U2V0UGFsZXR0ZSwgbm90IGJlZm9yZSAod2UKCW1pZ2h0IG5vdCBoYXZlIGFuIFgxMSB3aW5kb3cgeWV0KS4KCgkqIGxvYWRlci9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZSBUV0VBS19Jbml0IGZyb20gVVNFUiB0byBHRElJbml0LgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgbWlzYy9wcmludGRydi5jLCBtaXNjL3Nwb29sZXIuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggZm9yIFNldEFib3J0UHJvYzE2LCBzdHViIGZvciBTZXRBYm9ydFByb2MzMiBhbmQgdGlkeSB1cCBzb21lIG90aGVyCglwcmludGluZyBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2ZvY3VzLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IGluY2x1ZGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IFgxMURSVl9FeHRUZXh0T3V0IGZvciByb3RhdGVkIHRleHQgaWYgZWl0aGVyIG9mIGxwRHgsIGJyZWFrRXh0cmEKCW9yIGNoYXJFeHRyYSBhcmUgbm9uLXplcm8uCgoJKiBpbmNsdWRlL0F0dGljL2dyYXBoaWNzLmgsIG1pc2Mvc2hlbGwuYywgd2luZG93cy9BdHRpYy9ncmFwaGljcy5jLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3Njcm9sbC5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlcGxhY2UgR1JBUEhfIGZ1bmN0aW9ucyB3aXRoIFdpbiBTREsgZXF1aXZhbGVudHMuCgpNb24gRGVjICA3IDE2OjIzOjQyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFsZXhhbmRlciBMYXJzc29uIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJUmV2ZXJ0ZWQgcHJldmlvdXMgcGF0Y2guCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IGRlZmluZSBNWl9TVVBQT1JURUQgb24gbm9uLWkzODYgcGxhdGZvcm1zLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIERQTUlfQ2FsbFJNUHJvYyAoSSB0aGluaykuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgTlBTR2V0UHJvdmlkZXJIYW5kbGVBLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogQnJpYW4gR2Vyc3QgPGJnZXJzdEBxdWFyay52cHBsdXMuY29tPgoJVGhlIHNjYW5jb2RlIFdpbmRvd3Mgc2VuZCBmb3IgZXh0ZW5kZWQga2V5cyBpcyB0aGUgc2NhbmNvZGUgb2YgdGhlCgl1bmV4dGVuZGVkIGVxdWl2YWxlbnQgb2YgdGhlIGtleSwgcGx1cyB0aGUgZXh0ZW5kZWQgZmxhZy4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGEgcmVhbCBtb2RlIHByb2JsZW0uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglORV9NT0RVTEUuc3RhY2tfc2l6ZSB3YXMgc2V0IHRvIGEgcmlkaWN1bG91c2x5IHNtYWxsIHZhbHVlIG9mIDUuCglXaW5kb3dzIHNldHMgMHgxNDAwIGluIHN1Y2ggY2FzZXMgZm9yIHByb2dyYW1zLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJV2UgZG9uJ3QgeWV0IHdhbnQgdGhlIHN0YXRpYyBjb250cm9sIHRvIGNhbGwgRGVzdHJveUljb24uCgoJKiB3aW5kb3dzL2NsYXNzLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJQWRkZWQgY2FzZSBmb3IgR0NXX0FUT00gaW50IEdldENsYXNzTG9uZzMyQS4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOiBHYWVsIGRlIENoYWxlbmRhciA8Z2FlbEBsaW1zaS5mcj4KCVN0dWIgZm9yIFdOZXRPcGVuRW51bTMyVy4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmMsIHJlbGF5MzIvZHNvdW5kLnNwZWM6CglSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJTW9yZSBnZW5lcmFsIGNvZGUgY2xlYW51cCBmb3IgcmVhZGFiaWxpdHkuCglBIGZldyBtb3JlIHBhcmFtZXRlciB2YWxpZGF0aW9uIGNoZWNrcy4KCVJldHVybiBEU19PSyByYXRoZXIgdGhhbiAwIGluIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucy4KCUZpeGVkIHByaW1hcnkgYnVmZmVyIHJlZiBjb3VudCBidWcgaW4gQ3JlYXRlU291bmRCdWZmZXIoKS4KCUhhbmRsZSAxLTMgYnl0ZSBzb3VuZCBmcmFnbWVudHMgdGhhdCB3b3VsZCBjYXVzZSBidWZmZXIgb3ZlcnJ1bnMuCglDbGVhciBwcmltYXJ5IGJ1ZmZlciB3aXRoIGEgbmV1dHJhbCB2YWx1ZSBpbnN0ZWFkIG9mIGFsd2F5cyAwCgkoYmVjYXVzZSAxMjggaXMgbmV1dHJhbCBmb3IgOC1iaXQgc291bmQpLgoJRml4IGJ1ZyB3aXRoIG1peGluZyA4LWJpdCBzb3VuZCBpbnRvIHRoZSBwcmltYXJ5IGJ1ZmZlci4KCUJyb2tlIG91dCB0aGUgbWFpbiBibG9jayBpbiBEU09VTkRfdGhyZWFkKCkgdG8gYW5vdGhlciBmdW5jdGlvbiBmb3IKCXJlYWRhYmlsaXR5LgoJSGFuZGxlICJubyBhdWRpbyIgYW5kICJhdWRpbyBidXN5IiBjYXNlcyBwcm9wZXJseSB3aGVuIGluaXRpYWxpemluZwoJZHNvdW5kLiBSZW5hbWUgRGxsQ2FuVW5sb2FkTm93KCkgdG8gRFNPVU5EX0RsbENhblVubG9hZE5vdygpLgoKCSogZGVidWdnZXIvaGFzaC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgdmFyaWFibGVzIG9wdGltaXplZCBpbnRvIHJlZ2lzdGVycyBhY2Nlc3NpYmxlLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRoZSBzcGVjIGRlZmluaXRpb24gZm9yIE1vbml0b3JGcm9tV2luZG93IHdhcyB3cm9uZy4KCgkqIG1zZG9zL2ludDIxLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJRmlsZSBoYW5kbGUgYnVnIGZpeC4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgcGFyYWdyYXBoIGFib3V0IGRpZmZlcmVudCBkbGwgdmVyc2lvbnMgYW5kIHN0cnVjdHVyZSBzaXplcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIG1pc3NpbmcgVE9PTElORk8gc3RydWN0dXJlLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBhIGhlYXAgYnVnLgoKCSogbG9hZGVyL3Rhc2suYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL2NhbGxiYWNrLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvdnhkLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIFNldmVyYWwga2VybmVsLnNwZWMgcmV0dXJuIHR5cGUgbWlzbWF0Y2ggZml4ZXMKCS0gW0dTXWV0U2VsZWN0b3JCYXNlIFdpbjMycyBvZmZzZXQgc3VwcG9ydCBieSBVbHJpY2ggV2VpZ2FuZCAodGhhbmtzIHYubS4gISEpCgktIE1vdmUgQXBwVG9XaW5lL1dpbmVUb0FwcCBtYWNyb3MgYXMgVzMyU19BUFAyV0lORSBldGMuIHRvIGxkdC5oCgktIExvY2FsTm90aWZ5KCkgYmFzaWMgc3VwcG9ydAoJLSBGaXhlcyBmb3IgbG9jYWwgaGVhcCBoYW5kbGluZyB3aXRoIGhlYXAgaGFuZGxlcyBjcmVhdGVkIGJ5IFZpcnR1YWwqKCkKCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IC1taWNyb3NvZnQtc3ltYm9sIGVuY29kaW5nIHdhcyBub3QgcmVjb2duaXplZC4KCgkqIHdpbmRvd3Mvd2luLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBXSU5fUmVzZXRRdWV1ZVdpbmRvd3Mgd291bGQgc2tpcCBzb21lIHdpbmRvd3MuCgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IHJlY3Vyc2l2ZWx5IHJlZW50ZXJpbmcgQ0FMTDMyX0xhcmdlU3RhY2suCgoJKiBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi8uY3ZzaWdub3JlLCB3aW5kb3dzL3R0eWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy90dHlkcnYvd25kLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgdGhlIG5ldyBUVFkgZHJpdmVyLgoKCSogaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIG1vcmUgY29kZSB0byB0aGUgWDExIGRyaXZlci4KClRodSBEZWMgIDMgMTY6Mjk6NTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CgoJKiBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyOS5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglDYWxsIHRoZSBuZXcgY29uc29sZSBkcml2ZXIgZm9yIHNvbWUgcm91dGluZXMuIFRoaXMgaXMgbm90IGNvbXBsZXRlbHkKCWRvbmUgeWV0IGFuZCBtb3JlIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgoKV2VkIERlYyAgMiAxOTo1ODowOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uc29sZS8uY3ZzaWdub3JlLCBjb25zb2xlL01ha2VmaWxlLmluLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZGVkIGNvbnNvbGUgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgbG9hZGVyL21haW4uYywgb2JqZWN0cy9BdHRpYy9vZW1iaXRtYXAuYywgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmUgT0VNIHJlc291cmNlcyB0byB0aGUgeDExZHJ2LgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFsZXhhbmRlciBMYXJzc29uIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJT3BlbmluZyBhIGZpbGUgaW4gYSBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCByZXR1cm5zCglFUlJPUl9GSUxFX05PVF9GT1VORCBpbnN0ZWFkIG9mIEVSUk9SX1BBVEhfTk9UX0ZPVU5ELgoKCSogbWVtb3J5L2F0b20uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgYXRvbXMgIiMgbm9uIG51bWJlciIgKG9yYWNsZSBjbGllbnQpLgoKVHVlIERlYyAgMSAxNjoyMzoxOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWlzYy9lcnJvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW5hbWVkIEtFUk5FTC4zMjcgdG8gSGFuZGxlUGFyYW1FcnJvciAoYXMgaW4gJ1VuZG9jLiBXaW5kb3dzJykuCglGaXhlZCB3cm9uZyBvcmRpbmFscy9wcm90b3R5cGUgZm9yIE1hcFByb2Nlc3NIYW5kbGUvR2V0TW9kdWxlRmlsZU5hbWUzMi4KCUFkZGVkIG5hbWVzIGZvciBzb21lIHVuZG9jdW1lbnRlZCBleHBvcnRzLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgR2xvYmFsQ2hhbmdlTG9ja0NvdW50IChLRVJORUwuMzY1KS4KCgkqIGlmMTYzMi90b29saGVscC5zcGVjLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1lbW9yeS9oZWFwLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIExvY2FsMzJJbmZvLCBzdHVicyBmb3IgTG9jYWwzMkZpcnN0L05leHQgKEtFUk5FTC40NDQtNDQ2KS4KCgkqIGlmMTYzMi9nZGkuc3BlYywgb2JqZWN0cy9nZGlvYmouYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgR2RpRnJlZVJlc291cmNlcyAoR0RJLjYwOSkuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCUZpeGVkIDgtYml0IFdBViBmb3JtYXQgaGFuZGxpbmcgKGl0IGlzIHVuc2lnbmVkIGRhdGEpLgoJRml4ZWQgb2ZmLWJ5LW9uZSBjaGVja3MgZm9yIGJ1ZmZlciB3cmFwLgoJSW5jcmVtZW50IHJlZiBjb3VudCBmb3IgcHJpbWFyeSBidWZmZXIgaW4gQ3JlYXRlU291bmRCdWZmZXIoKS4KCUFkZGVkIERTQlBOX09GRlNFVFNUT1Agc3VwcG9ydCB0byBwb3NpdGlvbiBub3RpZmljYXRpb24gY29kZS4KCUxvdHMgb2YgbWlub3IgcGFyYW1ldGVyIHZhbGlkYXRpb24gY2hlY2tzLgoJU3R1YnMgZm9yOiBJRGlyZWN0U291bmRfaW5pdGlhbGl6ZSgpLCBJRGlyZWN0U291bmRfQ29tcGFjdCgpLAoJYW5kIElEaXJlY3RTb3VuZF9HZXRTcGVha2VyQ29uZmlnKCkuCglGaXhlZCBmcmVxIHNoaWZ0aW5nIHdpdGggMTYtYml0IGRhdGEgcHJvYmxlbSwgZml4ZWQgOGJpdDwtPjE2Yml0Cgljb252ZXJzaW9uLgoJTG90cyBvZiB0aHJlYWQgbG9ja2luZyBmb3IgRGlyZWN0U291bmQgYnVmZmVycy4KCURlYWxsb2MgcHJpbWFyeSBidWZmZXIgd2hlbiBkc291bmQgaXMgZGVhbGxvY2F0ZWQuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0aGUgVEVYVCgpIGFuZCBNQUtFTFJFU1VMVCgpIGRlZmluaXRpb25zLgoKCSogd2luZG93cy9xdWV1ZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGNoYW5nZS4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglSZXZlcnQgbWlzZ3VpZGVkIGNoYW5nZSB0byBpbnN0YWxsX2xpYiB0aGF0IGJyb2tlIC1kaXNhYmxlLWxpYgoJY29uZmlndXJlIG9wdGlvbi4KCgkqIG1pc2MvbWFpbi5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHBhcmFtZXRlciBTUElfR0VURFJBR0ZVTExXSU5ET1cuCglPbmUgbWlzc2luZyBicmVhayBpbiBTUElfR0VURFJBR0ZVTExXSU5ET1cuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZ1bmN0aW9ucyBJTEdsb2JhbENsb25lL0lMR2xvYmFsRnJlZS4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmc6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZCBhIG5vdGUgYWJvdXQgV2luUHJpbnRlcnMuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIHJlbGF5MzIvb2xlMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBzdHVicywgc29tZSBwdHItPnN0ciBjb252ZXJzaW9ucy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaCwgcmVsYXkzMi9kZHJhdy5zcGVjOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGRlZmluaXRpb24gb2YgRGlyZWN0RHJhd0NyZWF0ZUNsaXBwZXIuCgktIG1vcmUgdmVyc2F0aWxlIHN1cHBvcnQgb2Ygc3VyZmFjZXMgLyBiZXR0ZXIgc3VyZmFjZSBkZXNjcmlwdGlvbiBzdXBwb3J0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdyb25nIHBhcmFtZXRlciBjb3VudCBmb3IgU0hDaGFuZ2VOb3RpZnlEZXJlZ2lzdGVyLCAgU0hGcmVlVW51c2VkTGlicmFyaWVzLgoJTmV3IGZ1bmN0aW9ucyBQYXJzZUZpZWxkLCBHZXQvU2V0SW5zdGFuY2VFeHBsb3JlcigpLCBQYXRoSXNVTkMsIFBhdGhJc1JlbGF0aXZlLgoJU3R1YnMgU0hXYWl0Rm9yRmlsZVRvT3BlbiwgUGF0aEZpbmRPblBhdGguCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGNoYW5nZXMgdG8gcHJpbnQgdGhlIHN0cmluZ3MgaW4gdGhlIHJlbGF5LXRyYWNlLgoKCSogd2luZG93cy9jbGFzcy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCVRoZSBjbGFzcyBuYW1lIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIGdldHB0ci4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1lbW9yeS9zdGF0dXMgcmVjb3Zlcnkgd2hlbiBlcnJvciBvY2N1cmVkIGluIE1JRElfbWNpT3Blbi4KCUZpeGVkIHN1cHBvcnQgZm9yIFJNSUQgZmlsZXMgaW4gTUlESV9tY2lPcGVuLgoJRml4ZWQgYnVnIGZvciBwbGF5aW5nIE1JREkgZmlsZXMgd2l0aCB0ZW1wbyBjaGFuZ2VzLiBTb3VuZCBvdXRwdXQgaXMKCW5vdyBjb3JyZWN0LCBidXQgbGVuZ3RoIG9mIHRyYWNrcyAoYW5kIHRoZXJlZm9yZSBvZiB3aG9sZSBmaWxlKSBpcyBub3QKCWNvcnJlY3QuCglDaGFuZ2VkIGVycm9yIHZhbHVlcyAoSU5URVJOQUwgPT4gSU5WQUxJRF9GSUxFKSB3aGVuIGZpbGUgY2Fubm90IGJlIHJlYWQuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtZW1vcnkvc3RhdHVzIHJlY292ZXJ5IHdoZW4gZXJyb3Igb2NjdXJlZCBpbiBXQVZFX21jaU9wZW4uCglDaGFuZ2VkIGVycm9yIHZhbHVlcyAoSU5URVJOQUwgPT4gSU5WQUxJRF9GSUxFKSB3aGVuIGZpbGUgY2Fubm90CgliZSByZWFkLgoKCSogbXVsdGltZWRpYS9tc3ZpZGVvLmMsIHJlbGF5MzIvbXN2ZnczMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgTUNJV25kQ3JlYXRlW0F8V10uCgoJKiBtaXNjL3Zlci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVZlclF1ZXJ5VmFsdWUsIGJ1Z2ZpeDogd2UgY2FudCBjb252ZXJ0IGJpbmFyeSBkYXRhIHdpdGgKCUhFQVBfc3RyZHVwV3RvQSAoXFZhckZpbGVJbmZvXFRyYW5zbGF0aW9uKS4KCk1vbiBOb3YgMzAgMTc6NDE6MTcgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CgoJKiByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHdpbjMyL2FkdmFwaS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgRW51bVNlcnZpY2VTdGF0dXMzMiwgc21hbGwgY2hhbmdlcy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxvYWQgbm93IHRoZSBmaXJzdCBpY29uIGZyb20gdGhlICouYW5pIGZpbGUgaW5zdGVhZCBvZiBjcmFzaGluZy4KCgkqIG1pc2NlbXUvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeCB3YXJuaW5ncyBpbiBtaXNjZW11L21haW4uYy4KCgkqIGluY2x1ZGUvd2luZG93cy5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBhZGRlZCBzb21lIGRlZmluZXMgYXJvdW5kIHRoZSBDb21tUG9ydCAoUFVSR0VfWFhYIGFuZCBNU19YWFhfT04pCgktIGFkZGVkIHRoZSBETEdURU1QTEFURSBhbmQgRExHSVRFTVRFTVBMQVRFIHN0cnVjdHVyZXMKCS0gYWRkZWQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIFN0YXJ0UGFnZSxFbmRQYWdlLEdldENvbW1NYXNrLAoJCUdldENvbW1Nb2RlbVN0YXR1cyBhbmQgUHVyZ0NvbW0sV2FpdENvbW1FdmVudC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IFBhdWwgUXVpbm4gPFBhdWxRQGNvcmVsLmNvbT4KCUZpeGVkIGFjdGl2YXRpb24vRm9jdXMgbWVzc2FnZSBvcmRlciBwcm9ibGVtIHdoZW4gY3JlYXRpbmcgYSBuZXcgSFdORC4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJUGF1bCBRdWlubiA8UGF1bFFAY29yZWwuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgQ2hpbGRXaW5kb3dGcm9tUG9pbnRFeCBmdW5jdGlvbnMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUZpeGVkIHJlZ2lzdHJ5IHF1ZXJ5IGVycm9yIHZhbHVlOiBub3cgcmV0dXJucyBFUlJPUl9GSUxFX05PVF9GT1VORC4KCgkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL3BhbGV0dGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2V0U3lzdGVtUGFsZXR0ZUVudHJpZXMgcmV0dXJucyBwYWxldHRlIHNpemUgaWYgZW50cmllcz09TlVMTC4KCVVzZSB0aGlzIGluc3RlYWQgb2YgQ09MT1JfR2V0U3lzdGVtUGFsZXR0ZVNpemUuCgoJKiByZWxheTMyL2Rzb3VuZC5zcGVjLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBjbGFzcyBmYWN0b3J5IGZvciBkc291bmQuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIG1pc2MvY29tbS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBmaXhlZCBhIG1pbmltYWwgZXJyb3IgaW4gR2V0Q29tbU1hc2sgZGVmaW5pdGlvbi4KCS0gYWRkcyBzdHVicyBmb3IgR2V0Q29tbU1vZGVtU3RhdHVzIGFuZCBXYWl0Q29tbUV2ZW50LgoKCSogaW5jbHVkZS94bWFsbG9jLmgsIGxpYnJhcnkvd2luZXN0dWIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVzIGZvciBDKysgV2luZWxpYiBjb21waWxhdGlvbi4KCgkqIG9sZS9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQnVnZml4OiBzZWNvbmQgUmVnT3BlbktleSBzaG91bGQgdXNlIENMU0lEa2V5IGluc3RlYWQgb2YgSEtFWV9DTEFTU0VTX1JPT1QuCgpGcmkgTm92IDI3IDE2OjA2OjA4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgoKCSogQlVHUywgZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZywgZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUZpeGVkICdtYWtlIGluc3RhbGwnIHRvIHJlYWxseSBjaGVjayBmb3IgbGlid2luZS5hIGJlZm9yZSBpbnN0YWxsaW5nCglpdC4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYzoKCVN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJQWRkZWQgYSBuZXcgY21kbGluZSBzd2l0Y2ggdG8gZGlzYWJsZSBYRjg2IERHQSBFeHRlbnNpb25zLCAtbm9kZ2EuCgoJKiBmaWxlcy9kcml2ZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglJbXByb3ZlZCBHZXREaXNrRnJlZVNwYWNlMzJBKCkuCgpUaHUgTm92IDI2IDE2OjMyOjAwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgoKCSogd2luZG93cy93aW4uYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglSZW1vdmUgaW5jbHVkZWQgY29sb3IuaC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBjaGVjayBmb3IgZW50cnlwb2ludCBhZGRyZXNzICh0ZXN0IGJpbmFyeSB3YXMKCWluZmVjdGVkIGJ5IGEgdmlydXMgd2hpY2ggdXNlcyBpbnZhbGlkIFBFIGxvYWRpbmcgc3R1ZmYpLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YnMgZm9yIFN0YXJ0cGFnZSBhbmQgRW5kUGFnZS4KCgkqIGlmMTYzMi90aHVuay5jLCBvYmplY3RzL2RjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBGSVhNRSBvdXRwdXRzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBLRVJORUwuNjAyIGFuZCBzdHViIGZvciBLRVJORUwuNDkwLgoKCSogb2xlL29sZTJubHMuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERvICpub3QqIHplcm8gb3V0IG91dHB1dCBidWZmZXIgaW4gR2V0TnVtYmVyRm9ybWF0MzJbQVddLgoKV2VkIE5vdiAyNSAxODoxNTo1MyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KCgkqIG9sZS9ubHMvZ3JjLm5scywgb2xlL25scy9za3kubmxzLCBvbGUvbmxzL3RoYS5ubHMsIG9sZS9ubHMvdHJrLm5scywgb2xlL29sZTJubHMuYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJU21hbGwgZml4ZXMuCgoJKiBsb2FkZXIvbmUvcmVzb3VyY2UuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIC4uLlJlc291cmNlMTYgcm91dGluZXMgdG8gbG9hZGVyL3Jlc291cmNlLmMuCglJbXBsZW1lbnRlZCBhY2Nlc3NpbmcgUEUtZmlsZSByZXNvdXJjZXMgd2l0aCAxNi1iaXQgcmVzb3VyY2Ugcm91dGluZXMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGxvYWRlci9uZS9NYWtlZmlsZS5pbiwgbG9hZGVyL25lL2NvbnZlcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgUEUtPk5FIHJlc291cmNlIGNvbnZlcnNpb24gcm91dGluZXMgKEtFUk5FTC42MTUtNjE4KS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBvbGUvb2xlMmRpc3AuYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgMyBtZXRob2RzOiBTeXNBbGxvY1N0cmluZ0xlbigpLCBTeXNSZUFsbG9jU3RyaW5nTGVuKCkKCWFuZCBTeXNTdHJpbmdMZW4oKS4gRW5zdXJlIHRoYXQgdGhlIEJTVFIgb2JqZWN0cyB3ZXJlIGFsbG9jYXRlZAoJYWNjb3JkaW5nIHRvIHRoZSBXaW5kb3dzIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgZXhpc3RpbmcgcGF0aCAtIGZ1bmN0aW9ucyB0byBzaGVsbHBhdGNoLmMuCglOZXc6IFBhdGhSZW1vdmVCbGFua3MzMkF8VywgIFBhdGhNYXRjaFNwZWMzMkF8VywKCVBhdGhTZXREbGdJdGVtUGF0aDMyQXxXLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgZXhpc3RpbmcgSVNoZWxsTGluayBjbGFzcy4gTmV3IHN0dWJzIGZvciBJU2hlbGxMaW5rVy4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgaW5jbHVkZS94MTFmb250LmgsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9BdHRpYy9ncmFwaGljcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdXNlci5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy93aW5nLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlbW92ZSBYX0RDX0lORk8gZnJvbSBEQyBhbmQgbWFrZSBpdCBiZWhhdmUgbGlrZSBhbnkgb3RoZXIgUERFVklDRS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL3htcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGFuZ2VkIENUWF9TRUdfT0ZGX1RPX0xJTiB0byBhbGxvdyBsaW5lYXIgYWRkcmVzc2VzIGluIDMyLWJpdAoJcmVnaXN0ZXJzICh1c2VkIGJ5IERldmljZUlvQ29udHJvbCkuIEFkYXB0ZWQgYWxsIHVzZXJzLgoKCSogaW5jbHVkZS93aW5pb2N0bC5oLCB3aW4zMi9kZXZpY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgKG1vc3QpIFZXaW4zMi5WeEQgRGV2aWNlSW9Db250cm9sIHJvdXRpbmVzLgoKVHVlIE5vdiAyNCAyMDo0NzoxNyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBTZXQgdGhlIFRFQkZfV0lOMzIgZmxhZyBpbiB0ZWIuZmxhZ3MgZm9yIDMyLWJpdCB0aHJlYWRzLgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IENhbGwgSW5pdFRocmVhZElucHV0IGluIEdldEZhc3RRdWV1ZSB3aXRoIGNvcnJlY3QgcGFyYW1ldGVyCglmb3IgMzItYml0IHF1ZXVlcy4KCgkqIHdpbjMyL2tlcm5lbDMyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBbUUZdVF9UaHVuayBzaG91bGQgY2xlYXIgSElXT1JEKEVBWCkgb24gcmV0dXJuLgoJQnVnZml4OiBoYWNrIGZvciBzdHVwaWQgVVNFUjMyIENhbGxiYWNrR2x1ZUxTIHJvdXRpbmUgaW4gQ29tbW9uMzJUaGtMUy4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQmFkIGp1bXAgZ2VuZXJhdGVkIGluIFRIVU5LX0FsbG9jTFNUaHVua2xldC4KCUJ1Z2ZpeDogRm9yZ290IHRvIGNvbnZlcnQgc2VncHRyIGluIEFsbG9jTFNUaHVua2xldENhbGxiYWNrRXguCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogRXJpYyBXYXJua2UgPGVyaWNAc25vd21vb24uY29tPgoJRG9uJ3QgbWF0Y2ggYWdhaW5zdCBTeW1ib2wgb3IgTmlsIGZvbnRzLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCVJldHVybiB0aGUgImJ1ZmZlcnMiIGFuZCAiY2FjaGVkIiBtZW1vcnkgYXMgZnJlZSBzaW5jZSBpdCBpcwoJZGVhbGxvY2F0ZWQgd2hlbiBhIHByb2dyYW0gbmVlZHMgaXQgYW55d2F5LgoKCSogd2luZG93cy9kaWFsb2cuYywgaW5jbHVkZS93aW5kb3dzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeDogU2V0RGxnSXRlbVRleHQzMiByZXR1cm5zIEJPT0wgbm90IHZvaWQuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIEdldFVzZXJPYmplY3RJbmZvcm1hdGlvbkF8Vy4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIGxlZnQgb3ZlciAnc2hvdycgYW5kIHVzZWxlc3MgZGVhZGJlZWYgY2hlY2tpbmcgd2hpY2ggZG9lc24ndAoJd29yay4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkanVzdCBicm9rZW4gZW50cnlwb2ludCBhZGRyZXNzZXMuICh3aW45OCBub3RlcGFkLmV4ZSkKCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWE6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCBhY2NvcmRpbmcgdG8gZGV2ZWxvcG1lbnQuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTb21lIG5ldyBzdHVicyAobWlkaVN0cmVhbVhYWCBmdW5jdGlvbnMsIHNvbWUgbWNpIGZ1bmN0aW9ucywgYW5kCglzb21lIG1taW8gZnVuY3Rpb25zKS4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIE1DSSBwYXJ0IHRvIG1jaW1pZGkuYyA7IGFkZGVkIERyaXZlclByb2MuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgTUNJIHBhcnQgdG8gbWNpd2F2ZS5jIDsgYWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IGFkZGVkCglEcml2ZXJQcm9jCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1jaW1pZGkgYW5kIG1jaXdhdmUuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZCA7IGZpeGVkIHBhdXNlL3Jlc3VtZSBjb21tYW5kcyA7IGZpeGVkCglzZWVrIGNvbW1hbmQuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGluZyB3cml0aW5nIE1DSSBwYXJ0IDsgZml4ZWQgYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3Npbmcgc3R1YnMgaW4gMzIgYml0IHBhcnQuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZSBoYW5kbGluZyBpbiBtbXN5c3RlbS5jLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBuZXcgZnVuY3Rpb25zL3N0cnVjdHVyZXMgZGVmaW5pdGlvbnMuKEkgY291bGRuJ3QgZ2V0IGFsbAoJdGhlIG1hbmlmZXN0IGNvbnN0YW50cyB2YWx1ZXMgdGhhdCBNUyB3YXMgcmVmZXJyaW5nIHRvIGluIGl0cyBzcGVjcy4uLgoJaWYgc29tZW9uZSBoYXMgdGhlbS4uLikKCgkqIG11bHRpbWVkaWEvbWNpYW5pbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgZXJyb3IgY2hlY2tpbmcgOyBtYWRlIHVzZSBvZiBuZXcgMTYvMzIgTUNJIG1lc3NhZ2UgaGFuZGxpbmcKCWluIG1tc3lzdGVtLmMgOyBmaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZC4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IG1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZQoJaGFuZGxpbmcgaW4gbW1zeXN0ZW0uYy4KCUFkZGVkIFdpbjk1IGNvbW1hbmQgdG8gaGFuZGxlIGNkLXJvbSB3aXRoIGJvdGggZGF0YSBhbmQgYXVkaW8gOyBmaXhlZAoJYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQgOyBzaGFkb3dpbmcgTUNJIHN0YXR1cyBmb3IgZGV2aWNlcyB0aGF0IGNhbid0CglnZXQgY3VycmVudCBzdGF0dXMgOyBmaXhlZCBzdGF0dXMgbm90IGJlaW5nIHVwZGF0ZWQgb24gY2QgY2hhbmdlLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZhY3Rvcml6ZWQgMTYvMzIgYml0IE1DSSBmdW5jdGlvbiBieSB1c2luZyAgbWVzc2FnZSBtYXBwaW5nIGZyb20gMTYKCXRvIDMyIGJpdHMgOyBhZGRlZCBzb21lIG5ldyBwcm90b3R5cGVzIG1jaVNlbmRDb21tYW5kLCBtY2lTZW5kU3RyaW5nLAoJbWNpKFNldC9HZXQpWWllbGRQcm9jIDsgc3RhcnRlZCB3cml0aW5nIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zIC0gbm90Cgl5ZXQgd29ya2luZy4gRml4ZWQgc29tZSBpc3N1ZXMgcmVnYXJkaW5nIGFzeW5jaHJvbm91cyBNQ0kgY29tbWFuZHMgOwoJZml4ZWQgTUNJX1NZU0lORk8gY29tbWFuZC4KCgkqIHJlc291cmNlcy9zeXNyZXNfRnIucmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBxdWlya3MuCgpTdW4gTm92IDIyIDE4OjI5OjUwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZnVuY3Rpb246IF9JTEdldEV4dGVuc2lvbi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NsYXNzZXMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUuIEhLRVlfQ0xBU1NFU19ST09UIGhhbmRsaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglVcGRhdGVkLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9oZWFkZXIuaCwgaW5jbHVkZS9saXN0dmlldy5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9yZWJhci5oLCBpbmNsdWRlL3N0YXR1cy5oLCBpbmNsdWRlL3Rvb2xiYXIuaCwgaW5jbHVkZS90b29sdGlwcy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFVuaWNvZGUgc3VwcG9ydCAoYXQgbGVhc3QgcGFydGlhbGx5KS4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2NvbXBvYmouYywgb2xlL29sZW9iai5jLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIElPbGVBZHZpc2VIb2xlciBpbnRlcmZhY2UgKHN0aWxsIGEgZHVtbXkpIGFuZCBmaXhlZAoJQ3JlYXRlT2xlQWR2aXNlSG9sZGVyKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBnbG9iYWwgc3ViY2xhc3NpbmcgYXRvbSwgdXNlZCBieSB0b29sdGlwcyBhbmQgdXBkb3duIChub3QgeWV0KS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGxheW91dCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIEltYWdlTGlzdF9Mb2FkSW1hZ2UoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgQ01FTV9TRVRJVEVNMzJBIGFuZCBtZXNzYWdlIGZvcndhcmRpbmcgdG8gY29tYm9ib3guCgoJKiBvbGUvbW9uaWtlci5jLCByZWxheTMyL29sZTMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ3JlYXRlSXRlbU1vbmlrZXIoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSB1bmRvY3VtZW50ZWQgZnVuY3Rpb24gbmFtZXMgYW5kIGltcGxlbWVudGVkIERQQV9NZXJnZQoJcGFydGlhbGx5LgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglFbmFibGVkIGRvdWJsZSBjbGljayBmb3IgYnV0dG9ucy4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgY29tbWFuZCBhbmQgcmV0dXJuIGNvbnN0YW50cyB1c2VkIGJ5IFdNX05PVElGWUZPUk1BVC4KCgkqIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3Blbi5jLCB3aW5kb3dzL0F0dGljL2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL3gxMWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3ZlZCBEQ19TZXR1cEdDIGZ1bmN0aW9ucyB0byBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYy4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMgdG8gZ2V0IHRoZSBkZWZhdWx0IGxhbmd1YWdlIHRvIGEgc2Vuc2libGUgdmFsdWUuCglUaGFua3MgdG8gUGFibG8uCgoJKiBBTk5PVU5DRSwgREVWRUxPUEVSUy1ISU5UUywgUkVBRE1FLCBkb2N1bWVudGF0aW9uL1JFQURNRS5kb2N1bWVudGF0aW9uLCBkb2N1bWVudGF0aW9uL2hvdy10by1wb3J0LCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJTWlzY2VsbGFuZW91cyBzbWFsbCBmaXhlcy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIFdpbjE2IGltcGxlbWVudGF0aW9uIGZvciBHZXRSZWdpb25EYXRhKCkuCgoJKiBvbGUvdHlwZWxpYi5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglFbmhhbmNlZCBPQUJ1aWxkVmVyc2lvbigpIHRvIHJldHVybiBkaWZmZXJlbnQgdmVyc2lvbiB2YWx1ZXMgZm9yCglkaWZmZXJlbnQgd2ludmVycy4KCgkqIG1zZG9zL2ludDIxLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIElOVDIxX1BhcnNlRmlsZU5hbWVJbnRvRkNCKCkgYW5kIHNvbWUgb3RoZXIgdGhpbmdzIHRvIGdldAoJQ09NTUFORC5DT00gd29ya2luZy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBtaXNzaW5nIGVudHJ5IGZvciBHZXROdW1iZXJGb3JtYXRXLgoKCSogb2JqZWN0cy9wYWxldHRlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hlY2tpbmcgZm9yIE5VTEwtcG9pbnRlci4KCgkqIG9sZS9ubHMvZnJhLm5scywgb2xlL25scy9mcmIubmxzLCBvbGUvbmxzL2ZyYy5ubHMsIG9sZS9ubHMvZnJsLm5sczoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglCZXR0ZXIgT0xFIHN1cHBvcnQgaW4gRnJlbmNoIGxhbmd1YWdlcy4KCgkqIGxvYWRlci9tb2R1bGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBDcmVhdGVQcm9jZXNzMzJXLgoKCSogd2luZG93cy9ldmVudC5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglRdWV1aW5nIG9mIGRlZmVycmVkIEV4cG9zZSBldmVudHMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTEJfR0VUVEVYVDogSGFuZGxlIHBhc3NlZCBOVUxMIGJ1ZmZlci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ0JfR0VUVEVYVDogVXNlIGxwQnVmZmVyIGluc3RlYWQgb2YgbHBUZXh0IGZvciBMQl9HRVRURVhUMzIsIGhhbmRsZSAwCglieXRlIE5VTEwgYnVmZmVyLgoKCSogb2xlL25scy9mcnMubmxzLCBvbGUvbmxzL3NreS5ubHMsIG9sZS9vbGUybmxzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR1cm4gbWVnYSBkb3VibGUgc3dpdGNoIGludG8gc3RhdGljIHRhYmxlIChyZWR1Y2VzIGNvbXBpbGUgdGltZSkuCgoJKiBBVVRIT1JTLCBpbmNsdWRlL2F1dGhvcnMuaDogQWRkZWQgUm9iZXJ0IFJpZ2dzLgoKCSogaW5jbHVkZS9kM2QuaDogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCWluY2x1ZGUgZGRyYXcuaCwgcXVlc3Rpb25hYmxlIGZpeCBmb3IgcXVlc3Rpb25hYmxlIHN0cnVjdC91bmlvbgoJY29uc3RydWN0IGluIE1TJ3MgRDNEVkVDVE9SIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJTW9yZSBmbGFncyAoRGlyZWN0WCA1LjIpLCBEaXJlY3RTb3VuZDNETGlzdGVuZXIgYW5kCglEaXJlY3RTb3VuZDNEQnVmZmVyIHN0cnVjdHVyZXMsIGluY2x1ZGUgc29tZSByZXF1aXJlZCBmaWxlcwoJKHdpbmRvd3MuaCwgY29tcG9iai5oLCBhbmQgZDNkLmgpLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCURpcmVjdFNvdW5kM0RMaXN0ZW5lciBhbmQgRGlyZWN0U291bmQzREJ1ZmZlciBzdHVicywgbmV3IG1peGVyIGNvZGUsCglwcmltYXJ5IGJ1ZmZlciBpcyBpbXBsZW1lbnRlZCBjbG9zZXIgdG8gd2hhdCB0aGUgU0RLIGRvY3Mgc3BlY2lmeSwKCW90aGVyIFNESyBkb2N1bWVudGVkIGJlaGF2aW91ciBlbmZvcmNlZC4gQ29tcGxldGVkIHRoZSBkZXZjYXBzIGxpc3QuCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgc3RyZGF0ZSwgc3RydGltZS4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHR5cG8gaW4gU1VuTWFwTFNfSVBfRUJQXzggbGVhZCB0byBzdGFjayBjb3JydXB0aW9uLgoKCSogbWlzYy9jb21tLmM6IENsaWZmIFdyaWdodCA8Y2xpZmZAc25pcGU0NDQub3JnPgoJRml4ZWQgYSBtYXNrIHNldCwgYW5kIG90aGVyIHBhcml0eSBzZXR0aW5nIGJ1Z3MgZm9yIHNlcmlhbCBwb3J0cy4KCgkqIGluY2x1ZGUvc2lnX2NvbnRleHQuaDogVmFzdWRldiBNdWxjaGFuZGFuaSA8dmFzdUB0ZWlsLnNvZnQubmV0PgoJQWRkZWQgQlNESSBzaWdjb250ZXh0IGRlZmluaXRpb25zLgoKCSogd2luZG93cy9jbGFzcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgdHlwby4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgbm93IHVzZWxlc3MgUkVMQVlfU2hvd0RlYnVnbXNnc1JlbGF5IGNoZWNrLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHJlbG9jYXRlIHRoZSBwb2ludGVycyBpbiB0aGUgSU1BR0VfVEhSRUFEX0xPQ0FMX1NUT1JBR0UKCWRpcmVjdG9yeSwgZm9yIHRoZXkgc2VlbSB0byBiZSByZWxvY2F0ZWQgYnkgdGhlIHN0YW5kYXJkIHJlbG9jYXRpbmcKCW1lY2hhbmlzbS4gKEV4cGxpY2l0bHkgY2hlY2tlZCBvbmUgcHJvZ3JhbSB1c2luZyBpdCkKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBhdGhBZGRCYWNrc2hsYXNoLCBQYXRoUmVtb3ZlQmFja3NsYXNoOiBhcmd1bWVudCBpcyBub3QgY29uc3RhbnQuCgoJKiB3aW5kb3dzL3dpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIHduZFB0ciBmb3IgTlVMTC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQmx0RmFzdDogSG9ub3IgbFBpdGNoLCBMb2NrL1VubG9jayBzdXJmYWNlcyAoeGxpYiBuZWVkcyB1bmxvY2sgdG8gZHJhdykuCgoJKiBtaXNjL3Nwb29sZXIuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzY2VtdS9tYWluLmMsIE1ha2VmaWxlLmluLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGxvYWRlci9tYWluLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVRha2VzIHByaW50IHNwb29sZXIgZnVuY3Rpb25zIG91dCBvZiB3aW4xNmRydi4KCUFsbG93cyB0aGUgUG9zdFNjcmlwdCBkcml2ZXIgdG8gZ28gaW50byBsaWJ3aW5lLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgc3R1YnMgZm9yIHR3byB1bmRvY3VtZW50ZWQgR0RJIHJvdXRpbmVzLCBTZXRNYWdpY0NvbG9ycyBhbmQKCVNldFNvbGlkQnJ1c2guIFRoaXMgYWxsb3dzIFdpbjk4IG5hdGl2ZSBVU0VSIHRvIHN0YXJ0IHVwLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglGaXhlZCB0aGUgREdBIGRldGVjdGlvbiBjb2RlIGluIGRkcmF3LiBZb3UgZG9uJ3QgbmVlZCByb290IGFjY2VzcywKCWhhdmluZyByK3cgYWNjZXNzIHRvIC9kZXYvbWVtIGlzIGVub3VnaC4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdGRyYXcsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3dpbmcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaXJlY3REcmF3IHN0YXR1cyB1cGRhdGVkLgoJVXNlIGNvb3BlcmF0aXZlIHdpbmRvdyBmb3IgZHJhd2luZyBpbiB4bGliIGltcGxlbWVudGF0aW9uIGlmIHBvc3NpYmxlLgoJU2xpZ2h0bHkgcmVzdHJ1Y3R1cmVkIElEaXJlY3REcmF3U3VyZmFjZTo6Qmx0IHNvIGl0IGRvZXNuJ3QgY3Jhc2guCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglNaWNybyBwYXRjaCBmb3IgQWx0R3Iga2V5IG9uIGdlcm1hbiBrZXlib2FyZHMuCgoJKiBmaWxlcy9kb3NfZnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlcyBlcnJvciBoYW5kbGluZyAoU2V0TGFzdEVycm9yKCkgYW5kIHJldHVybiB2YWx1ZSkuCgoJKiBvYmplY3RzL3RleHQuYywgaW5jbHVkZS93aW5kb3dzLmg6IEdhZWwgZGUgQ2hhbGVuZGFyIDxnYWVsQGxpbXNpLmZyPgoJUGFydGlhbGx5IGNvbXBsZXRlIEdldFRleHRDaGFyc2V0SW5mbyBhbmQgY29ycmVjdHMgcmV0dXJuIHZhbHVlcyBmb3IKCXRoaXMgZmFtaWx5IG9mIGZ1bmN0aW9ucy4KClN1biBOb3YgMTUgMTg6MTI6MTIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CgoJKiBvbGUvY29tcG9iai5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1ZyBmaXguCgoJKiBvYmplY3RzL2RpYi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgcmV0cmlldmFsIG9mIGludmFsaWQgcGFsZXR0ZSBkYXRhIGluIEdldERJQml0cygpLgoKCSogd2luZG93cy93aW5wb3MuYzogSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUFsbG93IFNXUF9ISURFV0lORE9XIHRvIGJlIGNhbGxlZCBvbiB3aW5kb3dzIHRoYXQgYXJlIGFscmVhZHkgaGlkZGVuCgl3aXRob3V0IHVubWFwcGluZyB0aGVtIGFnYWluLgoKCSogd2luZG93cy9zY3JvbGwuYzogUGltIEJvbGxlbiA8cGltQGdpbWxpLmlhZWh2Lm5sPgoJRml4ZWQgc2Nyb2xsIGJ1ZyBpbiBTY3JvbGxXaW5kb3dFeDMyIHdoaWNoIGNhdXNlZCBnYXJiYWdlIG9uIHNjcmVlbgoJb3V0c2lkZSBkZXNrdG9wIHdpbmRvdyB3aXRoIGd0d2luLmV4ZSAoRHV0Y2ggYmFua2luZyBwcm9ncmFtKS4KCgkqIGxvYWRlci9tYWluLmMsIG1lbW9yeS9hdG9tLmMsIG1pc2MvZGRlbWwuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgaW5jbHVkZS9BdHRpYy9hdG9tLmgsIGluY2x1ZGUvZ2xvYmFsLmg6CglTbWFsbCBhdG9tIGZpeGVzLgoKCSogb2JqZWN0cy9kaWIuYzogRGlyayBUaGllcmJhY2ggPHRoaWVyYmFjaEBtYXRoZW1hdGlrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGJ1ZyBpbiBTdHJldGNoRElCaXRzMzIgKHdyb25nIG9yaWdpbikuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS90c194c2htLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHNobS5jLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglTb21lIGNvcnJlY3Rpb25zIHRvIHRoZSBoYW5kbGluZyBvZiBvZmYtc2NyZWVuIGJ1ZmZlcnMuCglDb3JyZWN0aW9uIHRvIHRoZSBFbnVtRGlzcGxheU1vZGVzIGZ1bmN0aW9uLgoJQWRkZWQgWFNobSBzdXBwb3J0IHRvIFhsaWIgZHJpdmVyLgoJT3BlbiBhIERpcmVjdFggd2luZG93IGV2ZW4gd2hlbiB1c2luZyB0aGUgREdBIGRyaXZlci4KCgkqIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgbWlzYy9zaGVsbC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDbGVhbnVwLCBzbWFsbCBmaXhlcywgYSBmZXcgbmV3IHN0dWJzLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglIYW5kbGluZyBmb3IgbGlzdHZpZXdzdHlsZXMsIHZpZXcgbW9kZSBidXR0b25zIGluIGZpbGVkaWFsb2dzCgllbmFibGVkIGFuZCBoYW5kbGVkLgoJTmV3IGxpc3R2aWV3IGNvbHVtbnMgU2l6ZSwgVHlwZSwgTW9kaWZpZWQgZm9yIHJlcG9ydHZpZXcKCWNyZWF0ZWQgYW5kIGhhbmRsZWQuCgoJKiBkbGxzL3NoZWxsMzIvaWZfbWFjcm9zLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLCB3cmFwcGVyIGZvciBJU2hlbGxCcm93c2VyIGNsYXNzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZSwgc29tZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBpY29uIGNhY2hlLgoJSW1wbGVtZW50ZWQgRXh0cmFjdEljb25FeDsgbW92ZWQgU0hNYXBQSURMVG9TeXN0ZW1JbWFnZUxpc3RJbmRleCwKCVNoZWxsX0dldEltYWdlTGlzdCBpbiB0aGlzIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZDogSUxJc0VxYWwsIElMRmluZENoaWxkLCBfSUxHZXRGaWxlRGF0ZSwgX0lMR2V0RmlsZVNpemUuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTG9hZExpYnJhcnlFeDogc2hvdyBhIHdhcm5pbmcgd2hlbiBjYWxsZWQgd2l0aCB1bmltcGxlbWVudGVkIHBhcm0uCgoJKiBtaXNjZW11L2luc3RyLmM6IENsZWFuZWQgdXAgYSBiaXQuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgbWlzY2VtdS9pbnN0ci5jLCB0b29scy9idWlsZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDbGVhbiBpbnZhbGlkIHNlbGVjdG9ycyBvbiB0aGUgcG9wICV4cyBmcm9tIHRoZSBTVEFDS0ZSQU1FIGl0c2VsZgoJaW5zdGVhZCBvZiB1c2luZyBsaW5rZWQgbGlzdCBoYWNrLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZWQgZ2V0cyBtZXNzYWdlLgoKCSogb2xlL25scy90aGEubmxzOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglBZGRlZCBUaGFpIG5scy1yZXNvdXJjZXMuCgoJKiBvbGUvbmxzL1JFQURNRSwgb2xlL25scy9jemUubmxzLCBvbGUvbmxzL2VzZS5ubHMsIG9sZS9ubHMvZXNnLm5scywgb2xlL25scy9lc3QubmxzLCBvbGUvbmxzL2V1cS5ubHMsIG9sZS9ubHMvZm9zLm5scywgb2xlL25scy9ocnYubmxzLCBvbGUvbmxzL2h1bi5ubHMsIG9sZS9ubHMvaXNsLm5scywgb2xlL25scy9ub3IubmxzLCBvbGUvbmxzL3Bsay5ubHMsIG9sZS9ubHMvcHRnLm5scywgb2xlL25scy9yb20ubmxzLCBvbGUvbmxzL3Nsdi5ubHMsIG9sZS9ubHMvc3ZlLm5scywgb2xlL29sZTJubHMuYywgaW5jbHVkZS93aW5ubHMuaDoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJRGlzcGxheSB0aGUgbGFuZ3VhZ2UgaWQgZm9yICJYWFggbm90IHN1cHBvcnRlZCBmb3IgeW91ciBsYW5ndWFnZSIKCW1lc3NhZ2VzLgoJQWRkZWQgYWxsIGxhbmd1YWdlcyBhbmQgc3VibGFuZ3VhZ2VzIGZvciBsYW5ndWFnZXMgc3VwcG9ydGVkIGluCglyZXNvdXJjZXMvc3lzcmVzX1h4LgoKCSogb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglBZGQgc3R1YnMgZm9yIEdldFJ1bm5pbmdPYmplY3RUYWJsZTMyIGFuZCBPbGVSZWdHZXRVc2VyVHlwZS4KCgkqIG9sZS9tb25pa2VyLmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUVuc3VyZSB0aGF0IENyZWF0ZUZpbGVNb25pa2VyIGZ1bmN0aW9ucyBkb24ndCByZXR1cm4gYSBib2d1cyBtb25pa2VyCglvYmplY3Qgb24gZmFpbHVyZS4KCgkqIGluY2x1ZGUvY2xhc3MuaCwgd2luZG93cy9jbGFzcy5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglBZGRlZCBjb2RlIHRvIG1hbmFnZSBBc2NpaSBhbmQgV2lkZUNoYXIgY2xhc3MgbmFtZXMsIGFuZCB0byByZXR1cm4gdGhlCgluYW1lcyBpbiB0aGUgR2V0Q2xhc3NJbmZvIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBDb25zdGFudGluZSBTYXB1bnR6YWtpcyA8Y3NhcHVudHpAc3RhbmZvcmQuZWR1PgoJRml4IHRvIExpbnV4IElQWCBzbyBjb21waWxlcyBvbiBub24tbGludXggcGxhdGZvcm1zLgoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3duIFgxMSBlcnJvcmhhbmRsZXIgdG8gbG9jYXRlIFgxMSBlcnJvcnMuIFVzZWZ1bCBvbmx5IHdpdGggLXN5bmMuCgpTYXQgTm92IDE0IDE4OjU5OjMwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgoKCSogaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvcGFsZXR0ZS5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvcmVnaXN0cnkuYywgd2luZG93cy9kZWZ3bmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd2FybmluZ3MsIHNvbWUgb25seSB2aXNpYmxlIHdpdGggLVdzdHJpY3QtcHJvdG90eXBlcyBvciAtcGVkYW50aWMuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCBpZjE2MzIvZGlzcGxheS5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBYMTEgbW91c2UgY3Vyc29yIGhhbmRsaW5nIHRvIHRoZSBESVNQTEFZIGRyaXZlci4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2MvY2FsbGJhY2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNvbWUgZml4ZXMgdG8gV2luZSBzdGFydHVwL3Rlcm1pbmF0aW9uIHNlcXVlbmNlIHdpdGggbmF0aXZlIFVTRVIuCglEbyBub3QgY2FsbCBidWlsdC1pbiBVU0VSIHNpZ25hbCBoYW5kbGVyIHdoZW4gdXNpbmcgbmF0aXZlIFVTRVIuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvdGFzay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IC1kZWJ1ZyBkaWRuJ3Qgd29yayBhbnltb3JlIGFmdGVyIHRoZSBsYXN0IHN0YXJ0dXAgc2VxdWVuY2UgcGF0Y2guCgoJKiBvbGUvY29tcG9iai5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgbGlzdCBpbnNlcnRpb24gYnVnIGluIENvTG9hZExpYnJhcnkoKS4KCgkqIGlmMTYzMi93cHJvY3Muc3BlYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL3Z4ZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdHVicyBmb3Igc2V2ZXJhbCBWeERzIC8gaW50ZXJydXB0cy4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTaG91bGQgZ2V0IHdpbjE2ZHJ2IEFib3J0UHJvYyB3b3JraW5nLiBIb3BlZnVsbHkuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgR2V0S2V5Ym9hcmRMYXlvdXROYW1lMTYgdG8gd2luZG93cy9pbnB1dC5jLgoKCSogaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludHlwZXMuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgc29tZSBkZWNsYXJhdGlvbnMgZnJvbSBpbWFnZWhscC5oIHRvIGNvbW1vbiBpbmNsdWRlIGZpbGVzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi90aHJlYWQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBpbXBsZW1lbnRhdGlvbnMgZm9yIEludGVybG9ja2VkRXhjaGFuZ2VBZGQoKSBhbmQKCUludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCkuCgoJKiB3aW4zMi9jb25zb2xlLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgYSBmZXcgb2YgdGhlIG1hbnkgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBtaXNjZW11L2luc3RyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW11bGF0ZSAibW92IGNyNCxlYXgiICh0b21icmFpZGVyIDMgZGVtbykuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBlbnVtZXJhdGUgRDNEIGRldmljZXMgd2UgY2FuJ3QgaGFuZGxlIGFueXdheS4KCVJldHVybiBiaXRtYXNrcyBmb3IgaGkvdHJ1ZWNvbG9yIGRlcHRocyBpbiBFbnVtRGlzcGxheU1vZGVzLgoKCSogaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvc25vb3AuaCwgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTcGVlZCB1cCByZWxheTMyLCBzbm9vcDE2IGFuZCBzbm9vcDMyIGluY2x1ZGUvZXhjbHVkZXMgYnkgZG9pbmcgdGhlbQoJanVzdCBvbmNlIGF0IGNyZWF0aW9uIHRpbWUuCgoJKiByZWxheTMyL29sZTMyLnNwZWMsIG9sZS9jb21wb2JqLmMsIG9sZS9vbGUyLmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIENvUmV2b2tlQ2xhc3NPYmplY3QgYW5kIE9sZVNldENsaXBib2FyZC4KCgkqIHdpbmRvd3Mvd2luLmM6IFBlciDFbmdzdHL2bSA8cGFuZ0BtaW5kLm51PgoJRW51bVRhc2tXaW5kb3dzMTY6IEJhc2luZyB0aGUgc2VsZWN0aW9uIG9uIGEgd2luZG93J3MgdGFzayBpcyBub3Qgb25seQoJbW9yZSBzdHJhaWdodGZvcndhcmQgdGhhbiBjb21wYXJpbmcgbWVzc2FnZSBxdWV1ZXMsIGl0IGFsc28gd29ya3MKCWJldHRlciBmb3IgV2luMzIgYXBwbGljYXRpb25zLgoKCSogbWVtb3J5L2xvY2FsLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQ2hhbmdlZCBzb21lIG9mIHRoZSBtZXNzYWdlIGNsYXNzZXMuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglTcGVjaWFsIGNhc2UgaGFuZGxpbmcgb2YgOiBTaGlmdCArIGFycm93LCBzaGlmdCArIGhvbWUsIC4uLgoJWCByZXR1cm5zIGEgY2hhciBmb3IgaXQsIGJ1dCBXaW5kb3dzIGRvZXNuJ3QuIElnbm9yZSBYIGNoYXIuCglBbHNvIGFkZGVkIHNvbWUgZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYzoKCVN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglCdWdmaXhlcyBmb3IgSVBYIGNvZGUgYW5kIHByZWxpbWluYXJ5IGdyb3VuZHdvcmsgZm9yIG90aGVyIGFkZHJlc3MKCWZhbWlseSBzdXBwb3J0LgoKCSogb2xlL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkoQ29HZXRDbGFzc09iamVjdCkgb25lIG1pc3NpbmcgQ0FMTEJBQ0ssIGV4dHJlbWVseSBzaW1wbGlmaWVkIGNsc2lkCglsb29rdXAgKFJlZ2lzdHJ5IGlzIGNhc2UgaW5zZW5zaXRpdmUpLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCB3aW4zMi9hZHZhcGkuYywgZGxscy9udGRsbC9ydGwuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViczogU2V0U2VydmljZVN0YXR1cywgUmVnaXN0ZXJTZXJ2aWNlQ3RybEhhbmRsZXJBL1csCglTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlcjMyQS9XLCBSdGxTeXN0ZW1UaW1lVG9Mb2NhbFRpbWUsCglSdGxUaW1lVG9UaW1lRmllbGRzLgoKCSogaW5jbHVkZS93aW5kb3dzLmgsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgZm9yIEdldE51bWJlckZvcm1hdDMyVy4KCgkqIG1pc2MvY3J0ZGxsLmM6IERhdmlkIEEuIEN1dGhiZXJ0IDxkYWN1dEBlY2UuY211LmVkdT4KCWdldHMoKSBmaXhlcy4KCgkqIG9sZS9ubHMvcnVzLm5sczogQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAbG9uZy55YXIucnU+CglGaXggU0NPVU5UUlksIFNOQVRJVkVDVFJZTkFNRSwgU0FCQlJFVkRBWU5BTUUzOyBjaGFuZ2Ugc29tZSBTTU9OVEhOQU1FKgoJdG8gYmUgaW4gbm9taW5hdGl2ZSBjYXNlLgoKCSogd2luZG93cy9xdWV1ZS5jOiBQZXIgxW5nc3Ry9m0gPHBhbmdAbWluZC5udT4KCUZpeGVkIFNldE1lc3NhZ2VRdWV1ZTMyIHRvIHJldHVybiBGQUxTRSwgbm90IFRSVUUsIHdoZW4gY2FsbGVkIHdpdGgKCWFuIGludmFsaWQgc2l6ZSBwYXJhbWV0ZXIuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgR2V0Q2FwcywgY2hhbmdlZCBQbGF5IGFuZCBTdG9wIGhhbmRsaW5nCglvZiBwb3NpdGlvbnMgaW5kZXhlcywgc3VwcHJlc3NlZCB3YXJuaW5ncy4KCgkqIG1lbW9yeS9sb2NhbC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNvcnJlY3RlZCBidWcgaW4gVFJBQ0UgZnVuY3Rpb24uCgoJKiBBVVRIT1JTLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDb3JyZWN0ZWQgYnVnIGluIERpcmVjdERyYXdTdXJmYWNlIGNyZWF0aW9uIGFuZCBoYW5kbGluZyBmb3IgZHJpdmVyCgliYXNlZCB1cG9uIFhsaWxiLgoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglXaW5lIGtleWJvYXJkIGFuZCBtb3VzZSBoYXZlIG5vdyB0aGVpciBvd24gVUlEcy4KCgkqIG9iamVjdHMvYnJ1c2guYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggYWxsb2NhdGlvbiBzaXplIGluIENyZWF0ZURJQlBhdHRlcm5CcnVzaCouCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBOb3YgIDggMTY6NDQ6NDEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQga2V5c3Ryb2tlIGFjY2VsZXJhdG9ycyBpbiBkaWFsb2dzIHdoaWNoIGhhdmUgY29udHJvbHMgY29udGFpbmluZwoJb3RoZXIgY29udHJvbHMgYXMgY2hpbGQgd2luZG93cy4KCgkqIGluY2x1ZGUvd2lucHJvYy5oLCBtaXNjL2NvbW1kbGcuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlczogTEJfL0NCXy9FTV8gbWVzc2FnZXMgZm9yIGdldHRpbmcvc2V0dGluZyB0ZXh0IGFuZCBhIGJ1ZyBpbgoJMTYtPjMyIGJpdCBjb252ZXJzaW9uLgoKCSogb2JqZWN0cy9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcmV2ZW50IENyZWF0ZURJQlNlY3Rpb24gZnJvbSBzZWcgZmF1bHRpbmcgd2hlbiBvbmUgZGltZW5zaW9uIG9mCglzZWN0aW9uIGlzIDAuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5zb2NrLmgsIG1pc2Mvd2luc29jay5jOgoJU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCVN1cHBvcnQgZm9yIElQWCBuZXR3b3JraW5nIHZpYSB3aW5zb2NrIHVuZGVyIExpbnV4LgoKCSogcmVsYXkzMi9nZGkzMi5zcGVjLCBncmFwaGljcy9wYWludGluZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSBzdHViIGZvciBTdGFydERvY0EgYW5kIEVuZERvYy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luMzIvY29uc29sZS5jOgoJSmFtZXMgU3V0aGVybGFuZCA8SmFtZXNTdXRoZXJsYW5kQGdteC5kZT4KCU1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNldEN0cmxIYW5kbGVyKCkgZnVuY3Rpb24gKGFuZCB0aGUKCXJlbGF0ZWQgY29uc29sZSBmdW5jdGlvbnMpLgoKCSogb2JqZWN0cy9icnVzaC5jLCByZWxheTMyL2dkaTMyLnNwZWM6IEplZmYgSm9oYW5uIDxqam9oYW5uQGtpdmEubmV0PgoJQWRkZWQgQ3JlYXRlRElCUGF0dGVybkJydXNoUHQgKEdESTMyLjM1KSB3aXRoIG1pbm9yIGRvY3VtZW50YXRpb24KCXVwZGF0ZXMuCgoJKiBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaCwgbXNkb3MvaW9wb3J0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW11bGF0ZSB0aGUgVkdBIHZlcnRpY2FsIHJlZnJlc2guCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIHN1cHBvcnQgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIGluIEJsaXQgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBkZXZpY2UgdHlwZSBjb25zdGFudHMgYW5kIHVzZWQgdGhlbSBpbiBkZXZpY2UgZW51bWVyYXRpb24KCWZ1bmN0aW9uLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBUEkgZG9jdW1lbnRhdGlvbiBzYXlzIHRoYXQgUmVnRW51bUtleUV4LCBSZWdFbnVtVmFsdWUgYW5kCglSZWdRdWVyeUluZm9LZXkgdGFrZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlcnMgYXMgY2hhcmFjdGVycy4KCgkqIG9sZS9jb21wb2JqLmM6IEFkZGVkIG1pc3NpbmcgI2luY2x1ZGUgImNvbmZpZy5oIgoKCSogQVVUSE9SUywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBvbGUvY29tcG9iai5jOgoJSnVzdGluIEJyYWRmb3JkIDxqdXN0aW5AdWthbnMuZWR1PgoJUmVwbGFjZXMgQ29DcmVhdGVHdWlkIHN0dWIgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBEQ0UncyBVVUlECglzcGVjaWZpY2F0aW9uLiBBbHNvIHJlbW92ZXMgc29tZSB1bm5lY2Vzc2FyeSBjb2RlIGZyb20gU3RyaW5nRnJvbUNMU0lELgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW50eXBlcy5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYW4gZXh0ZXJuICJDIiBzYWZlZ3VhcmQuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHdpbmRvd3MvaW5wdXQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gYWRkcyBHZXRFeGl0Q29kZVByb2Nlc3MKCS0gY29ycmVjdHMgdGhlIHJldHVybi10eXBlIG9mIEdldEtleVN0YXRlCgktIGNvcnJlY3RzIHRoZSB3aW5lbGliIGRlZmluaXRpb24gb2YgSXNEaWFsb2dNZXNzYWdlCgktIGFkZHMgd2luZWxpYiBkZWZpbml0aW9ucyBmb3IgUHJpbnREbGcKCgkqIG9iamVjdHMvY2xpcHBpbmcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUV4dFNlbGVjdENsaXBSZ24gZml4OiBSR05fRElGRiBkaWQgbm90IHdvcmsuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBuZXcgaW5wdXQgZXZlbnQgaGFuZGxpbmcuCgoJKiBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9pbnB1dC5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9pbnB1dC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVU0VSLXNpZGUgcGFydCBvZiBpbnB1dCBldmVudCBoYW5kbGluZzogY29udGFpbnMgaW1wbGVtZW50YXRpb24gb2YKCWtleWJkX2V2ZW50IGFuZCBtb3VzZV9ldmVudCwgYW5kIFVTRVItcmVsYXRlZCBjb2RlIHJlbW92ZWQgZnJvbQoJd2luZG93cy9ldmVudC5jIGFuZCB3aW5kb3dzL2tleWJvYXJkLmMuCgoJKiB3aW5kb3dzL2Rpc3BsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3R1YnMgZm9yIERJU1BMQVkuRFJWIHJlbW92ZWQgZnJvbSBrZXlib2FyZC5jLgoKCSogaWYxNjMyL21vdXNlLnNwZWMsIGluY2x1ZGUvbW91c2UuaCwgd2luZG93cy9tb3VzZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBNT1VTRS5EUlYgKGNvbnRhaW5zIHNvbWUgY29kZSB0YWtlbiBmcm9tCgl3aW5kb3dzL2V2ZW50LmMpLgoKCSogaWYxNjMyL2tleWJvYXJkLnNwZWMsIGluY2x1ZGUva2V5Ym9hcmQuaCwgd2luZG93cy9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBLRVlCT0FSRC5EUlYgKGNvZGUgbW9zdGx5IHRha2VuIGZyb20gcHJldmlvdXMKCXdpbmRvd3Mva2V5Ym9hcmQuYykuCgoJKiBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiByZWFsbHkgKmRvKiBzd2l0Y2ggdG8gdGhlIGluaXRpYWwgdGFzaydzIHN0YWNrLgoJQ2FsbExhcmdlU3RhY2sgbWVjaGFuaXNtIHJlLWVuYWJsZWQuCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTmV3IEZpbGVzLiBBZGRlZCAnZGF0ZSBhbmQgdGltZSBwaWNrZXInIGFuZCAnbW9udGggY2FsZW5kYXInIGNvbnRyb2wKCWR1bW1pZXMuIFRoZXkgYXJlIHVzZWQgYnkgT3V0bG9vayBFeHByZXNzLgoKCSogb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWIgZm9yIENyZWF0ZUJpbmRDdHgoKSBhbmQgYWRkZWQgbWlzc2luZyBDb0dldENsYXNzT2JqZWN0KCkKCXRvICouc3BlYyBmaWxlLiBNYWtlcyBJbnRlcm5ldCBFeHBsb3JlciA0LjAxIGhhcHB5IDstKQoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTGl0dGxlIGltcHJvdmVtZW50LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgcHJlbGltaW5hcnkgaGl0IHRlc3RpbmcuIE1ha2VzIHJlZ2VkaXQuZXhlIGhhcHB5IDstKQoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBhbmQgZml4ZWQgdHlwb3MuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBEcmF3U3RhdHVzVGV4dDMyQVcoKSBhbmQgQ3JlYXRlU3RhdHVzV2luZG93MzJBVygpLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgZGlzcGxheSBhbmQgbGF5b3V0IGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RhdGV0aW1lLmgsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglOZXcgRmlsZXMuIEFkZGVkICdkYXRlIGFuZCB0aW1lIHBpY2tlcicgYW5kICdtb250aCBjYWxlbmRhcicgY29udHJvbAoJZHVtbWllcy4gVGhleSBhcmUgdXNlZCBieSBPdXRsb29rIEV4cHJlc3MuCgpTYXQgTm92ICA3IDEyOjU2OjMyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgaW5jbHVkZS93aW5kb3dzLmg6CglDaGFybGVzIFN1cHJpbiA8Y3N1cHJpbkBseW54LmRhYy5uZXUuZWR1PgoJQWRkZWQgc3R1YnMgZm9yIFNldFdpbk1ldGFGaWxlQml0cyBhbmQgR2V0RW5oTWV0YUZpbGVQYWxldHRlRW50cmllcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTdG9wIFgxMURSVl9Sb3VuZFJlY3QgY2FsbGluZyBYRHJhd0FyYyB3aXRoIC12ZSB3aWR0aC9oZWlnaHQgcGFyYW1zCgl3aGljaCBpdCBkaWQgaWYgZWl0aGVyIGVsbGlwc2UgZGltZW5zaW9uIHdhcyB6ZXJvLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglPcHRpbWl6ZSBSb3VuZFJlY3QzMiB0byBjYWxsIFJlY3RhbmdsZTMyIGlmIGVpdGhlciBlbGxpcHNlIGRpbWVuc2lvbgoJaXMgemVyby4KCgkqIHJlbGF5MzIvbXByLnNwZWMsIG1pc2MvbmV0d29yay5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YiBXTmV0RW51bUNhY2hlZFBhc3N3b3Jkcy4KCgkqIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWRlIHRoaXMgZmlsZSBET1NNT0QgZnJpZW5kbHkuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVuaWZpZWQgIk5vIGltcGxlbWVudGF0aW9uIGZvci4uLiIgd2FybmluZ3MuCgoJKiB3aW4zMi9kZXZpY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cgltb25vZGViZy52eGQgdXNlZCBieSBzb21lIE9yaWdpbiBwcm9ncmFtcyBpbXBsZW1lbnRlZC4KCgkqIG9iamVjdHMvYml0bWFwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGYWlsIGlmIGxlc3MgdGhlbiBvbmUgZW50aXJlIGxpbmUgcmVxdWVzdGVkIGluIEdldEJpdG1hcEJpdHMzMi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgV01fR0VURExHQ09ERSBoYW5kbGluZyBpbiAoVW4pTWFwTXNnMzJBdG8xNi4KCgkqIGlmMTYzMi9jb21wb2JqLnNwZWMsIGluY2x1ZGUvb2xlLmgsIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBDb0xvYWRMaWJyYXJ5LCBDb0ZyZWVBbGxMaWJyYXJpZXMsCglDb0ZyZWVVbnVzZWRMaWJyYXJpZXMsIENvRnJlZUxpYnJhcnkuCglGaXhlZCBtaXNzcGVsbGluZyBvZiBDb1VuaW5pdGlhbGl6ZS4KCgkqIHByb2dyYW1zL2Nsb2NrL0NoYW5nZUxvZywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jOgoJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCUZpeGVzIGZvciBvdGhlciBsYW5ndWFnZXMuCgpGcmkgTm92ICA2IDE3OjM2OjEzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglGaXggd2lkZSBjaGFyYWN0ZXIgZnVuY3Rpb25zIHRvIHJldHVybiBjaGFyYWN0ZXIgY291bnQgaW4gY2hhcmFjdGVyCglxdWFudGl0aWVzIG5vdCBieXRlIHF1YW50aXRpZXMuICBNYWtlIFJlZ1F1ZXJ5SW5mb0tleSBhbmQKCVJlZ1F1ZXJ5SW5mb0tleSBiZWhhdmUgY29ycmVjdGx5IGluIHdpbjk1IG1vZGUuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDaGFuZ2VkIG1vdXNlIGJ1dHRvbiBtYXBwaW5nIGFuZCBjaGVjayBzaXplIG9mIHJldHVybiBidWZmZXIuCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglFeHRTZWxlY3RDbGlwUmduKCkgd2l0aCBSR05fQ09QWSBjb3BpZXMgdGhlIHdyb25nIHJlZ2lvbi4KCgkqIGZpbGVzL2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYW4gZXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIEZJTEVfU2hhcmVEZW55LgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb2xhcmlzIHJlZGVmaW5lcyBFUlIgYW5kIENTLCBmaXhlZCBvY2N1cmFuY2VzLgoJU29sYXJpcyBoYXMgVFJBUE5PIGluIGl0cyBzaWdjb250ZXh0LCBhZGRlZCB0byBzaWdfY29udGV4dC5oCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIG11bHRpbWVkaWEvbW1pby5jLCByZWxheTMyL3dpbm1tLnNwZWMsIGlmMTYzMi9tbXN5c3RlbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIG1taW9TZXRCdWZmZXIgY2FsbGFibGUgZnJvbSAxNiBhbmQgMzIgYml0IGNvZGUuCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd3JvbmcgYXJnIHR5cGUuCgoJKiBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2dkaW9iai5jLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW92ZWQgWDExIERJQiBzdHVmZiB0byB4MTFkcnYuCgoJKiB3aW4zMi9jb2RlX3BhZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRoZSBBUEkgZm9yIFdpZGVDaGFyVG9NdWx0aUJ5dGUgc2F5cyB0aGF0IHRoZSBzcmMtc3RyaW5nIGhhcyBvbmx5IHRvIGJlCgl0cmVhdGVkIGFzIE5VTEwtdGVybWluYXRlZCBpZiBzcmNsZW4gaXMgLTEuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mvd2luLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgc3VyZSBDb25maWd1cmVOb3RpZnkgaXMgcHJvY2Vzc2VkIGJlZm9yZSBFeHBvc2UsIGRlZmVycmluZyB0aGUKCUV4cG9zZSBldmVudCBpZiBuZWNlc3NhcnksIHRodXMgd29ya2luZyBhcm91bmQgYSBXTSBmbGF3IHdpdGggdmlydHVhbAoJZGVza3RvcCBzY3JvbGxpbmcgaW4gLW1hbmFnZWQgbW9kZS4KCgkqIHJlc291cmNlcy9zeXNyZXNfRnIucmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCVRyYW5zbGF0ZWQgaW4gRnJlbmNoIChub3Qgc28gZ29vZCBhbnlob3cpIG1lc3NhZ2UgZm9yIHRoZSBtYXJrIG9uCglzeXN0ZW0gbWVudS4KCgkqIG1pc2MvbWFpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgdGhlIGRlZmF1bHQgZnJvbSAwIHRvIDB4NDA5IChlbmctdXMpLgoKCSogd2luZG93cy9tZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUd28gbWlzc2luZyBXSU5BUElzLgoKCSogaW5jbHVkZS9pbnRlcmZhY2VzLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgb25lIHdyb25nIHBhcmFtZXRlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIC0tZGlzYWJsZS1saWIuCgpUaHUgTm92ICA1IDEwOjMzOjE4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29uc3RhbnRzIGZvciBjb250cm9scyBpbiBjb21tb24gZGlhbG9ncy4KCldlZCBOb3YgIDQgMTg6MDg6MzMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY3J0ZGxsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgc29tZSBjb21waWxlciB3YXJuaW5ncy4KClN1biBOb3YgIDEgMTk6Mjc6MjQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnBvcy5jLCBtaXNjL2NvbW1kbGcuYywgbWlzYy9zaGVsbC5jLCBtaXNjL3dpbnNvY2suYywgbWlzY2VtdS9pbnN0ci5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvam95c3RpY2suYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL2RpYi5jLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG1lbW9yeS9oZWFwLmM6CglKZXNwZXIgU2tvdiA8anNrb3ZAY3lnbnVzLmNvLnVrPgoJZWdjcyAnYW1iaWd1b3VzIGVsc2UnIHdhcm5pbmdzIGZpeGVzLgoKCSogaW5jbHVkZS90b29saGVscC5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2V0IHJpZCBvZiB0aGUgcmVkZWZpbml0aW9uIG9mIE1BWF9QQVRIIGFuZCBtb3ZlIFBST0NFU1NFTlRSWTMyCglkZWZpbml0aW9uIHRvIHRvb2xoZWxwLmguCgoJKiB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxpYnJhcnkvd2luZXN0dWIuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2NhbGxiYWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJ1biBXaW5lbGliIGFwcGxpY2F0aW9ucyBhcyAzMi1iaXQgcHJvY2Vzc2VzIGluIHRoZSBpbml0aWFsIHRhc2suCglTaW1wbGlmaWVkL3JlbW92ZWQgc2V2ZXJhbCBzcGVjaWFsICdpZiAoX193aW5lbGliKScgY2FzZXMgaW4KCVdpbmUgbWFpbiBjb2RlIG9ic29sZXRlZCBieSB0aGF0IGNoYW5nZS4KCgkqIHdpbmRvd3MvZXZlbnQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIG1vdXNlIGRyaXZlciBjYWxsYmFjayBhbHNvIGlmIHdpbmRvd3MgYXJlIG5vdCByZWdpc3RlcmVkIHdpdGggWAoJKGlmIHVzaW5nIG5hdGl2ZSBVU0VSLkVYRSkuCgoJKiBtZW1vcnkvYXRvbS5jLCBpbmNsdWRlL2F0b20uaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBzZXBhcmF0aW9uIGJldHdlZW4gS0VSTkVMIGFuZCBVU0VSLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyL2dkaTMyLnNwZWMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgbmV3IFdpbmUgc3RhcnR1cCBzZXF1ZW5jZSwgc2VwYXJhdGluZyBzdGFydHVwIGludG8KCUtFUk5FTC9VU0VSL0dESSByZWxhdGVkIHBhcnRzLCBhbGxvd2luZyBuYXRpdmUgcmVwbGFjZW1lbnQuCglJbXBsZW1lbnRlZCBpbml0aWFsICdrZXJuZWwnIHRhc2suCgoJKiBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9jb21wb2JqLmM6CglKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSW5wcm9jU2VydmVyMzIgQ29HZXRDbGFzc09iamVjdC4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vcmUgYml0bWFwIGZpeGVzLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEZpeGVkIGNyYXNoZXMgd2l0aCBXTV9HRVRETEdDT0RFIHRyYW5zbGF0aW9uLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi8uY3ZzaWdub3JlLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbi5oLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgbW92aW5nIHNvbWUgWDExIHdpbmRvdyBtYW5hZ2VtZW50IGNvZGUgdG8gd2luZG93cy94MTFkcnYuCgoJKiBpZjE2MzIvdXNlci5zcGVjLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgSXNEaWFsb2dNZXNzYWdlMTYuCgoJKiBNYWtlZmlsZS5pbjogRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglUZWxsIHBlb3BsZSB0byBpZ25vcmUgdGhlICdnZXRzJyB3YXJuaW5nLiBTb21lIHdpbGwgbGlzdGVuLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCB3aW5kb3dzL2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUEgY291cGxlIG9mIHNtYWxsIGZpeGVzIHRvIG15IGJpdG1hcCBwYXRjaC4KCgkqIHJlc291cmNlcy9UT0RPLCByZXNvdXJjZXMvc3lzcmVzX0RlLnJjLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWxsb3cgdGhlIHVzZXIgdG8gcHV0IGEgbWFyayBpbiB0aGUgZGVidWcgbG9nIGJ5IGFkZGluZyBhIGl0ZW0gaW4gdGhlCglTWVNNRU5VLiBUaGUgbWVzc2FnZXMgbmVlZHMgaW1wbGVtZW50YXRpb24gaW4gYWxsIG90aGVyIGxhbmd1YWdlcyB0aGFuCglFbmdsaXNoIGFuZCBHZXJtYW4uCgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdpdmUgdGVtcGZpbGUgYSBkaWZmZXJlbnQgbmFtZSBldmVuIGlmIHRoZXkgYXJlIGNyZWF0ZWQgaW4gdGhlIHNhbWUKCXNlY29uZC4gUmVtb3ZlZCBzb21lIGZpeG1lcyBmcm9tIHRoZSBTaGFyZURlbnkgc3R1ZmYuCgoJKiBpbmNsdWRlL21kaS5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9tZGkuYywgd2luZG93cy93aW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDcmVhdGVXaW5kb3dFeDMyW0FXXSBub3cgY3JlYXRlcyBhbiBNREkgY2hpbHMgd2hlbiB0aGUgV01fRVhfTURJQ0hJTEQKCWV4dGVuZGVkIHN0eWxlIGlzIHNwZWNpZmllZC4gQWxzbyBpbXBsZW1lbnRlZCBDcmVhdGVNRElXaW5kb3czMkEoKQoJY2FsbCAtIHNpbmdsZSB0aHJlYWQgb25seSAtLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVycmVkIGluIHRoZSBiaXQgbWFjcm9zIGluIHRyZWV2aWV3LmMuIFNoaWZ0Y291bnRzIHdlcmUgd3JvbmcuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiBpbXBvcnRzIHdpdGggQ2hhcmFjdGVyaXN0aWNzIDAgZmFpbCBmb3IgQm9ybGFuZAoJcHJvZ3JhbXMgKHdoaWNoIHNlZW0gdG8gaGF2ZSBhbHdheXMgY2hhcmFjdGVyaXN0aWNzIDApLiBDaGFuZ2VkIHRvIGFsZ29yaXRobQoJdG8gc29tZXRoaW5nIGEgYml0IG1vcmUgaW50ZWxsaWdlbnQuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgQ29GcmVlTGlicmFyeSBzdHViLgoKCSogUkVBRE1FOiBVcGRhdGVkIEZBUSBsb2NhdGlvbi4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBTRUdQVFIgY29udmVyc2lvbiBmb3IgU1RBUlRET0MgaW4gRXNjYXBlMzIoKS4KCgkqIG9iamVjdHMvZGMuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFNldERDU3RhdGUgZGlkIG5vdCByZXNldCBjbGlwcGluZyByZWdpb24gdG8gZW1wdHkuCgoJKiB3aW4zMi9pbml0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc21hbGwgb2ZmIGJ5IG9uZSBlcnJvciBpbiBHZXRDb21wdXRlck5hbWUzMlcsIGFsd2F5cyBraWxsZWQgdGhlCglsYXN0IGNoYXJhY3RlciBvZiBhIGhvc3RuYW1lLgoKCSogb2JqZWN0cy9kaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEb24ndCBIZWFwRnJlZSgpIGNvbG9ybWFwIGlmIHdlIGRpZG4ndCBhbGxvY2F0ZSBvbmUuCgoJKiB3aW4zMi9hZHZhcGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS93aW50eXBlcy5oLCBtaXNjL2NydGRsbC5jLCBtaXNjL3ByaW50ZHJ2LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgcmVsYXkzMi9jcnRkbGwuc3BlYywgcmVsYXkzMi9tcHIuc3BlYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHJlbGF5MzIvd2luc3Bvb2wuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YnMgZm9yIHVzZXIzMixhZHZhcGkzMiBmdW5jdGlvbnMuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvKiwgaW5jbHVkZS9udGRsbC5oLCBtaXNjL0F0dGljL250ZGxsLmMsIG1pc2MvTWFrZWZpbGUuaW4sIHJlbGF5MzIvbnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBOdCogYW5kIFJ0bCogZnVuY3Rpb24gc3R1YnMsIG1vdmVkIG50ZGxsLmMgdG8gZGxscy9udGRsbC8uCgoJKiBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L2hlYXAuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQ2hhbmdlZCBtYW55IFdBUk4oKXMgcmVsYXRlZCB0byBpbnRlcm5hbCBXaW5lIG1lbW9yeSBmYWlsdXJlcyB0bwoJRVJSKClzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgLnNwZWMgZW50cnkgZm9yIEtFUk5FTC5SZWdpc3RlclNlcnZpY2VQcm9jZXNzLgoKCSogaWYxNjMyL2Rpc3BsYXkuc3BlYywgd2luZG93cy9rZXlib2FyZC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ2hlY2tDdXJzb3IoKS4KCgkqIGluY2x1ZGUvZGlhbG9nLmgsIHdpbmRvd3MvZGVmZGxnLmM6IFRpbSBOZXdzb21lIDxudWlzYW5jZUBjbXUuZWR1PgoJRml4IGZvciBub24tbW9kYWwgZGlhbG9nIGNsb3NpbmcuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBEYXZpZCBGYXVyZSAgPGZhdXJlQGtkZS5vcmc+CglSZXdyb3RlIHRoZSB0d28gcm91dGluZXMgdXNpbmcgdGhlIHZrZXktPnNjYW5jb2RlIGFycmF5IHRvIHVzZQoJa2V5YzJ2a2V5IGZvciBlYWNoIGtleWNvZGUsIGluc3RlYWQuIE5vdCB0ZXN0ZWQuCglSZW1vdmVkIHVudXNlZCBJRGlyZWN0SW5wdXREZXZpY2VBX0dldERldmljZVN0YXRlLgoJRml4ZWQgd2FybmluZyBpbiBUUkFDRSgpIGNhbGwuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxmYXVyZUBrZGUub3JnPgoJRGVsZXRlZCB0aGUgdmtleS0+c2FuY29kZSBhcnJheSwgYmVjYXVzZSBRV0VSVFkgc3BlY2lmaWMuCglCYWNrIHRvIHVzaW5nIHRoZSBYIGtleWNvZGUgaW5zdGVhZCBhcyB0aGUgc2NhbmNvZGUuIFRlc3RlZC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUHJpbnQgYSBtZXNzYWdlIGlmIHRoZSBQb3N0U2NyaXB0IGRyaXZlciBjYW4ndCBmaW5kIGEgUFBEIGZpbGUuCgoJKiBtc2Rvcy9pbnQxMC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIFZHQSAyNTYtY29sb3IgbW9kZSAweDEzIHVzaW5nIHRoZSBEaXNwbGF5RGliIFZHQSBlbXVsYXRpb24uCgkoRE9TIGFwcHMvZ2FtZXMgdXNpbmcgdGhpcyBtb2RlIGNvbWVzIHVwIG5vdywgYWx0aG91Z2ggeW91IGNhbid0CglyZWFsbHkgZG8gYW55dGhpbmcgd2l0aCB0aGVtICh5ZXQ/KS4pCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIG1hY3JvIFY4Nl9GTEFHLgoKCSogbXNkb3MvZG9zbWVtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2V0IGRlZmF1bHQgdmlkZW8gbW9kZSB0byAzICg4MHgyNSBjb2xvcikuCgoJKiBsb2FkZXIvZG9zL2Rvc21vZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUlnbm9yZXMgYSBjb3VwbGUgb2Ygc2lnbmFscy4KCgkqIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kaXNwZGliLmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3ZnYS5oLCBtc2Rvcy9pb3BvcnRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIFZHQS1lbXVsYXRpbmcgRGlyZWN0WCBjb2RlIGZyb20gZGlzcGRpYi5jIHRvIGEgc2VwYXJhdGUKCWZpbGUuIE1hZGUgaXQgdXNlIGEgc3lzdGVtIHRpbWVyIGFuZCB0cmFwIEkvTyBhY2Nlc3NlcyB0byB0aGUgVkdBCglEQUMgcmVnaXN0ZXJzIHRvIGFjY29tbW9kYXRlIERpc3BsYXlEaWItdXNpbmcgcHJvZ3JhbXMgdGhhdCB0cnkgdG8KCWFjY2VzcyB0aGUgVkdBIGhhcmR3YXJlIGRpcmVjdGx5LgoKCSogbWlzY2VtdS9pbnN0ci5jLCBpZjE2MzIvc2lnbmFsLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWlzYy9zeXN0ZW0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW5kaXJlY3Rpb24gZm9yIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbiBmb3IgdXNlIGJ5IERPUyBjb2RlLgoJQWRkZWQgc3VwcG9ydCBmb3IgYSA1NUh6IHN5c3RlbSB0aW1lciwgbGV0dGluZyBET1MgYXBwcyBjYWxpYnJhdGUKCXRoZWlyIGRlbGF5IGxvb3BzIGFuZCBzdWNoLiBDYWxscyBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gZm9yCglpbnN0cnVjdGlvbiBlbXVsYXRpb24gKHByaW5jaXBhbGx5IEkvTyBwb3J0IGFjY2VzcykuIEFkZGVkIG1hY3JvCglWODZfRkxBRy4KClNhdCBPY3QgMzEgMTI6MjA6NTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGZpeGVzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHRoZSBGSVhNRSgpIGFuZCBtb3ZlZCBTZXRMYXN0RXJyb3IoMCkgdG8gdGhlIGVuZCAoc28gdGhhdAoJR2V0VGVtcEZpbGVOYW1lIGV0LmFsLiBjYW4ndCBvdmVyd3JpdGUgaXQpLgoKCSogbWlzYy9BdHRpYy9udGRsbC5jLCByZWxheTMyL250ZGxsLnNwZWMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvdHMgb2Ygc3R1YnMgdG8gZ2V0IHdpbmxvZ29uLmV4ZSBmcm9tIG50My41MSBhbmQgb3RoZXIgTlQzLjUxIGFwcGxldHMKCWEgYml0IGZ1cnRoZXIuCgoJKiB3aW5kb3dzL21kaS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTURJY2hpbGQgY3JlYXRlZCB3aGVuIHRoZSBNREkgY2xpZW50IGhhcyB0aGUgTURJU19BTExDSElMRFNUWUxFUwoJc3R5bGUsIHNob3VsZCBub3QgYmUgc2hvd24gYXQgY3JlYXRpb24gbm9yIGFjdGl2YXRlZCB1bmxlc3MgdGhlCglXU19WSVNJQkxFIGZsYWcgaXMgc2V0LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IFN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglCdWdmaXggZm9yIGZpeHVwX2ltcG9ydHM6IEVuYWJsZSBjaGVja2luZyBmb3IgdGVybWluYXRpbmcgaW1wb3J0CglzdHJ1Y3Qgd2l0aCBDaGFyYWN0ZXJpc3RpY3MgYml0ZmllbGQgc2V0IHRvIDAuCgoJKiB3aW5kb3dzL3dpbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRGVsYXkgbGlua2luZyBuZXdseSBjcmVhdGVkIHdpbmRvdyBpbiBsaW5rZWQgbGlzdCB1bnRpbCBhZnRlciB0aGUKCVdNX05DQ1JFQVRFIG1lc3NhZ2UuCgoJKiBmaWxlcy9maWxlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglTbWFsbCBidWcgaW4gRklMRV9JblVzZSBkb2VzIG5vdCBkbyBhIHJlbGVhc2Ugb24gZXZlcnkgYWNxdWlyZWQgZmlsZQoJcG9pbnRlci4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWxwc3pOYW1lIG9mIE5VTEwgaXMgaGFuZGxlZCAocmVtb3ZlcyBzb21lIHdhcm5pbmdzKS4KCgkqIHRvb2xzL3Rlc3RydW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTm93IGFsbG93cyBzcGVjaWZpY2F0aW9uIG9mIGEgc3RhcnQgZGlyZWN0b3J5IG9uIHRoZSBjbWRsaW5lLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldHMgcmlkIG9mIHRoZSBhcmNoLWRlcGVuZGVudCBiaXQgb3BlcmF0aW9ucyAodGVzdGVkIG9uIExpbnV4IGFuZAoJU29sYXJpcy94ODYpLgoKV2VkIE9jdCAyOCAxNDo1ODowMiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBIGRlc3QgYnVmZmVyIHdhcyBwcmludGVkIG91dCBhcyBzdHJpbmcuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvcnJlY3RlZCAyIHdyb25nIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVBhdHJpY2sgU3BpbmxlciA8c3Bpbmxlci5wYXRyaWNrQG1heW8uZWR1PgoJQWRkZWQgc3R1YnMgZm9yIFByb2Nlc3MzMkZpcnN0L1Byb2Nlc3MzMk5leHQuCgoJKiBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9yZWdpb24uYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJRnJhbudvaXMgR291Z2V0IDxnb3VnZXRAbWV0YWludGVncmF0aW9uLm5ldD4KCUZpeGVkIHNvbWUgTFBQT0lOVC9MUFNJWkUgbWlzbWF0Y2hlcyBhbmQgc29tZSBtaXNzaW5nICJjb25zdCIgaW4gdGhlCgloZWFkZXJzIHByb3RvdHlwZXMuCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL29lbWJpdG1hcC5jLCB3aW5kb3dzL2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgcEJpdG1hcEJpdHMgYW5kIHBDcmVhdGVCaXRtYXAgdG8gdGhlIEdESSBmdW5jdGlvbiB0YWJsZSBhbmQKCW1vdmVkIHRoZSBYMTEgZGVwZW5kZW50IHN0dWZmIG91dCBvZiBvYmplY3RzL2JpdG1hcC5jIGludG8geDExZHJ2LgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgU0hHZXRTaW1wbGVJRExpc3RGcm9tUGF0aDMyQVcuCglVbmljb2RlLXNhZmU6IFBhdGhGaW5kRmlsZW5hbWUzMkFXLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVzdGluIEJyYWRmb3JkIDxqdXN0aW5AYnVzYm95LnNwZWQudWthbnMuZWR1PgoJSUV4dHJhY3RJY29uIGhhZCBhbiBleHRyYSBjIGluIGEgc3RydWN0IGRlZmluaXRpb24uCgoJKiByZWxheTMyL2RwbGF5LnNwZWM6CglKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuc3BhbWxlc3MuY29tPgoJQWRkZWQgZW50cnkgZm9yIERpcmVjdFBsYXlFbnVtZXJhdGUuCgoJKiBvbGUvbmxzL3NreS5ubHMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIFNsb3ZhayBubHMtcmVzb3VyY2VzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBkaWZmZXJlbmNlcyBiZXR3ZWVuIFNldFJlY3RSZ24xNiBhbmQgU2V0UmVjdFJnbjMyLiBBbHNvIGEgYnVnIGZpeCBmb3IKCUNyZWF0ZVJvdW5kUmVjdFJnbi4KClR1ZSBPY3QgMjcgMTU6NDE6NTQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvdXNlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVudW1EaXNwbGF5TW9kZXMqIHJldHVybnMgYSBzdGF0aWMgbGlzdCBvZiBtb2RlcyB3aXRoIGFsbCBkZXB0aHMKCShoZWxwcyBoZXhlbjJkZW1vKSwgQ2hhbmdlRGlzcGxheVNldHRpbmdzIHJldHVybnMgdHJ1ZSBhbGwgdGhlIHRpbWUuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmgsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBtaWRpT3BlblN0cmVhbSAoaGVscHMgaGV4ZW4yZGVtbykuCgoJKiBvbGUvbmxzL2VuYy5ubHMsIG9sZS9ubHMvZnJjLm5scywgcmVzb3VyY2VzL3N5c3Jlc19Gci5yYzoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglTbWFsbCBwYXRjaCBmb3IgYmV0dGVyIEZyZW5jaCBzdXBwb3J0LgoKCSogbG9hZGVyL2VsZi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogbWVtb3J5IG92ZXJ3cml0ZSBidWcuCgpNb24gT2N0IDI2IDExOjA0OjEzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9lZGl0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmM6IFBhc2NhbCBDdW9xIDxwY3VvcUBlbnMtbHlvbi5mcj4KCTMyLWJpdCBjbGlwYm9hcmQgc3VwcG9ydC4KCgkqIHdpbmRvd3MvcXVldWUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXggZm9yIFFVRVVFX1NpZ25hbDogQWx3YXlzIHVzZSBQb3N0RXZlbnQgaWYgbm8gdGhyZWFkIGlzIHdhaXRpbmcKCW9uIHRoZSBxdWV1ZS4KCgkqIHdpbmRvd3MvbWRpLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQgYSBtaW5vciBwcm9ibGVtIHdpdGggdGhlIG1lbnVzIGZvciBtZGkgY2hpbGQgd2luZG93cy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBubyBsb25nZXIgbmVjZXNzYXJ5IGNvbW1lbnRlZCBvdXQgY29kZSwgZGVzdHJveSBvbGQgd2luZG93Cgl3aGVuIFNldERpc3BsYXlNb2RlIGlzIGNhbGxlZCBhZ2FpbiwgRW51bURpc3BsYXlNb2RlcyBub3cgcmV0dXJucwoJYWxsIHBvc3NpYmxlIG1vZGVzICh1c2luZyBhIHN0YXRpYyBsaXN0KS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQW5vbiBzaGFyZWQgbWFwcGluZyBmaXhlZCBmb3IgZmlsZSBzaGFyaW5nLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gT2N0IDI1IDEwOjMyOjIzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvb2xlMm5scy5jLCBpbmNsdWRlL3dpbm5scy5oOiBBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCUZpeGVzIGZvciBMQU5HX05FVVRSQUwuCgoJKiBpbmNsdWRlL3Rhc2suaDoKCUFkZGVkIHNvbWUgcGFkZGluZyB0byB0aGUgUERCIGZvciBpbGwtYmVoYXZpbmcgYXBwcyAocHJvYmxlbSByZXBvcnRlZAoJYnkgQW5kcmVhcyBNb2hyKS4KCgkqIGRvY3VtZW50YXRpb24vaW9wb3J0LXRyYWNlLWhpbnRzLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIG1pc2NlbXUvaW5zdHIuYzoKCUpvbmF0aGFuIEJ1enphcmQgPGphYkBoZXgucHJlc3RlbC5jby51az4KCUFkZGVkIGEgbmV3IGRlYnVnZ2luZyBjaGFubmVsIGlvIHRvIGFsbG93IHJlYWQvd3JpdGVzIG9uIGEgcG9ydCB0byBiZQoJbG9nZ2VkIHRvIGEgZmlsZS4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCVJlcGxhY2VkIDB4MDAgd2l0aCAweDAxIGluIHRoZSB2a2V5LT5zYW5jb2RlIGFycmF5LCBzbyB0aGF0IG5vIGtleSBpcwoJaWdub3JlZC4gMHgwMCBpcyB1c2VkIGZvciBnZW5lcmF0ZWQga2V5IGV2ZW50cyBvbmx5LgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJQVBJIERvY3VtZW50YXRpb24gZm9yIFNlbmRNZXNzYWdlLCBHZXRUaWNrQ291bnQsIFBvc3RRdWl0TWVzc2FnZSwKCUdldE1lc3NhZ2VQb3MsIEdldE1lc3NhZ2VUaW1lLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZWxldGUgdGhlIGZpbGVuYW1lIGZvciB0aGUgbWFwcGluZyBpbnN0YW50bHkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglNaWNoYWVsIFBvb2xlIDxwb29sZUBncmF2aXRvbi5yZXMuY211LmVkdT4KCVN0dWIgZm9yIFNIU2ltcGxlSURMaXN0RnJvbVBhdGguCgoJKiBsb2FkZXIvdGFzay5jOiBGaXhlZCBidWcgaW4gU3dpdGNoU3RhY2tUby4KClNhdCBPY3QgMjQgMTM6MDY6MTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNoZWNrIGlmIHNjcm9sbGJhciBhbmQgcGFyZW50IGFyZSB2aXNpYmxlIGJlZm9yZSByZWRyYXcuCgoJKiBpZjE2MzIvc2hlbGwuc3BlYywgaW5jbHVkZS9zaGVsbC5oLCBtaXNjL3NoZWxsLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUthaSBNb3JpY2ggPGthaS5tb3JpY2hAZGFybXN0YWR0Lm5ldHN1cmYuZGU+CglBZGRlZCBEcmFnKjMyIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvZXZlbnQuYzogS2FpIE1vcmljaCA8a2FpLm1vcmljaEBkYXJtc3RhZHQubmV0c3VyZi5kZT4KCUFkZGVkIERyYWcmRHJvcCBmcm9tIEtERSBhcHAgdG8gMTYvMzIgYml0IFdpbmRvemUgYXBwLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEthaSBNb3JpY2ggPGthaS5tb3JpY2hAZGFybXN0YWR0Lm5ldHN1cmYuZGU+CglBZGRlZCBGSVhNRSBtZXNzYWdlIGluIFBvc3RNZXNzYWdlMzJ4IGlmIHBhcmFtZXRlcnMgYXJlIHRydW5jYXRlZAoJd2hlbiBjYWxsaW5nIFBvc3RNZXNzYWdlMTYuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdXBwb3J0IGZvciBnbG9iYWwgaGFuZGxlcywgaW1wbGVtZW50ZWQgQ29udmVydFRvR2xvYmFsSGFuZGxlLgoJQWxsb2NhdGUgc3RhcnR1cCBkYXRhIGFuZCAxNi1iaXQgc3RhY2sgZm9yIGluaXRpYWwgcHJvY2Vzcy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOiBMZWlnaCBXZWRkaW5nIDxsd2VkZGluZ0Bjb3JwbGluay5jb20uYXU+CglTbWFsbCBmaXguCgoJKiBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vRXMucmMsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9Fcy5yYywgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svRXMucmMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvRXMucmMsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW46CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUFkZGVkIFNwYW5pc2ggcmVzb3VyY2VzLgoKCSogb2xlL25scy9ldXEubmxzLCByZXNvdXJjZXMvc3lzcmVzX0VzLnJjOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglTbWFsbCBjb3JyZWN0aW9ucy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG9hZExpYnJhcnlFeFcgc3BlYyBhZGRlZCAoZnVuY3Rpb24gd2FzIHRoZXJlKS4KCVNldFByb2Nlc3NQcmlvcml0eUJvb3N0IHN0dWIgYWRkZWQuCgoJKiBtc2Rvcy9kcG1pLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIFNvbGFyaXMuCgoJKiBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvZGlzcGRpYi5zcGVjLCBpbmNsdWRlL2Rpc3BkaWIuaCwgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2Rpc3BkaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgRGlzcGxheURpYi4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhY2sgdG8gc3VwcG9ydCBpbnRlZ2VyIGlkcyBpbiBhbGwgc3RhdGljIGNvbnRyb2xzLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQmVnaW5uaW5nIG9mIG1vdXNlIHN1cHBvcnQgaW4gRGlyZWN0SW5wdXQgKG9ubHkgInN0YW5kYXJkIiBtb3VzZQoJY29uZmlndXJhdGlvbiBzdXBwb3J0ZWQgZm9yIG5vdykuCgoJKiBpbmNsdWRlLyouaCwgZGxscy9jb21jdGwzMi8qLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgeHh4X1VucmVnaXN0ZXIoKSBmdW5jdGlvbnMgdG8gYWxsIGNvbW1vbiBjb250cm9scy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9scywgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNvbWUgbWlub3IgaW1wcm92ZW1lbnRzIGFuZCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgaW5jbHVkZS9yZWJhci5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIHRoZSByZWJhciBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgdHJhbnNwYXJlbnQgYW5kIHRyYWNraW5nIHRvb2x0aXBzLgoKCSogY29udHJvbHMvbWVudS5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgYSBwb3B1cCBtZW51IHNlbGVjdGlvbiBidWcuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgRHJhd0NhcHRpb24xNigpIGFuZCBEcmF3Q2FwdGlvblRlbXAxNigpLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8RGF2aWQuRmF1cmVAaW5zYS1seW9uLmZyPgoJRml4ZWQgd2FybmluZy4KCgkqIGdyYXBoaWNzL3BzZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9wc2Rydi9iaXRtYXAuYywgZ3JhcGhpY3MvcHNkcnYvYnJ1c2guYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcHNkcnYuaCwgb2JqZWN0cy9kaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkcyBBcmMsIENob3JkLCBHZXRDaGFyV2lkdGgsIFBpZSwgUG9seVBvbHlnb24sIFBvbHlQb2x5bGluZSwgUm91bmRSZWN0LAoJU2V0UGl4ZWwsIGhhdGNoZWQgYnJ1c2hlcyBhbmQgYSBzdHViIGZvciBTdHJldGNoRElCaXRzIHRvIHRoZSBQb3N0U2NyaXB0Cglkcml2ZXIuCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50ZXJydXB0cy5jOgoJSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgaW50MTcgYW5kIGludDE5LgoKCSogbXNkb3MvaW50MTkuYzogQ2FybCB2YW4gU2NoYWlrIDxjYXJsQGRyZWFtY29hdC5jaGUudWN0LmFjLnphPgoJU3R1YnMgZm9yIGRvcyBtb2RlIHJlYm9vdCBpbnRlcnJ1cHQuCgoJKiBtc2Rvcy9pbnQxNy5jOiBDYXJsIHZhbiBTY2hhaWsgPGNhcmxAZHJlYW1jb2F0LmNoZS51Y3QuYWMuemE+CglTb21lIHByaW50ZXIgc3R1YnMgZm9yIERPUyBhZGRlZC4KCgkqIG1zZG9zL2ludDEzLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCU1vcmUgc3R1YnMgYWRkZWQuIFRoZXNlIGNoYW5nZXMgYXJlIG9ubHkgcGFydGlhbGx5IG1pbmUsIEkganVzdCBtYWRlCgl0aGVtIGNvbXBpbGUuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBzb21lIHRyYWNlcyBhbmQgY2xlYW5lZCB1cCBhIGNvdXBsZSBvZiB0aGluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgbWVtb3J5L3N0cmluZy5jLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHNvbWUgc3RyaW5nLXNoZWxsMzIgZnVuY3Rpb25zIHRvIDMyQVcsIHBhcmFtZXRlciBhcmUKCW9zIGRlcGVuZGluZyAzMkEgb3IgMzJXICgtd2ludmVyIG50MzUxIG9yIG50NDApLCBzb21lIG5ldyBmdW5jdGlvbnMuCglTb21lIGZpeGVzIGluIG9sZTJubHMuCglOZXcgT0xFMk5MU19DaGVja0xvY2FsZSgpIHRvIGhhbmRsZSBMb2NhbGVfVXNlcl9EZWZhdWx0IGFuZAoJTG9jYWxlX1N5c3RlbV9EZWZhdWx0LgoJU2hlbGwzMiBub3cgZHluYW1pY2x5IGxpbmtzIHRvIERQQV8qKCksIGNvbWRsZzMyIHdvcmtzIGFnYWluCgkoY29tY3RsMzIgaGVhcCBhbGxvYyBwYXRjaCBicm9rZSBpdCkuCgoJKiBpbmNsdWRlL3dpbnZlcnNpb24uaCwgbWlzYy92ZXJzaW9uLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIFZFUlNJT05fSXNPc1VuaWNvZGUoKS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vcmUgb2ZmLWJ5LW9uZSBlcnJvcnMgZml4ZWQuCgoJKiBpbmNsdWRlL2ZpbGUuaCwgbWlzYy9jcnRkbGwuYywgbXNkb3MvdnhkLmMsIHdpbjMyL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmlsZSBzaGFyaW5nIGZpeGVzLgoKRnJpIE9jdCAyMyAxNzoyNjo0NCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jb21tZGxnLmM6IE5pY2sgSG9sbG93YXkgPGFsZmllQGFsZmllLmRlbW9uLmNvLnVrPgoJQnVnIGZpeC4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgRE9TIGVudmlyb25tZW50IHBhc3NpbmcuCgoJKiBtaXNjL21haW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTeXNtZXRyaWNzMzJXIGZvciBTUElfR0VUSUNPTlRJVExFTE9HRk9OVCByZXR1cm5zIGNvcnJlY3QgZm9udG5hbWUuCgoJKiBpbmNsdWRlL2ZvbnQuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBGT05UX0dldE9iamVjdDMyVygpLCBHZXRPYmplY3QzMlcoKS4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3MvdXNlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YiBSZWdpc3RlclRhc2tMaXN0LgoJTmV3IGZ1bmN0aW9uIEVudW1EaXNwbGF5U2V0dGluZ3MzMlcoKS4KCgkqIG1pc2MvbnRkbGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIHBhcmFtZXRlciBjaGVja2luZyBpbiBSbHRDb3B5U2lkLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBtZXNzYWdlIG1hcHBpbmcgMzJBPC0tPjMyVyBmb3IgRU1fLCBDQl8sIExCXyBmb3IgVW5pY29kZS4KCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9hdmlmaWwzMi5zcGVjLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBuZXcgZGxsIGF2aWZpbDMyLmRsbC4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jLCBpbmNsdWRlL2Rvc2V4ZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXJzdCBzaG90IGF0IERQTUkgcmVhbG1vZGUgY2FsbHMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNldmVyYWwgYnVncyB3aXRoIERMTCBpbml0aWFsaXphdGlvbi4KClRodSBPY3QgMjIgMTc6MDI6MjUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9zeXNsZXZlbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG9yZGluYWwgZm9yIHR3byBzeXNsZXZlbCBmdW5jdGlvbnMuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbm90aGVyIG1pc3NpbmcgV0lOQVBJLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGNvcnJlY3Rpb25zIGluIG1taW8gZGVjbGFyYXRpb25zLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGFrZSB2aXJ0dWFsIHNpemVzIGluIGFjY291bnQgZm9yIHRoZSB0b3RhbCB2bWEgc2l6ZS4KCgkqIG9sZS9ubHMvcm9tLm5sczogRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUFkZCBzb21lIG1vcmUgTkxTIGRlZmluaXRpb25zIGZvciB0aGUgUm9tYW5pYW4gbGFuZ3VhZ2UuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgcHJvZ3JhbXMgKHF1YWtlMiBldCBhbCkgZG8gY2hlY2sgZm9yIERTQ0FQU19FTVVMRFJJVkVSIGFuZCBzdG9wCgl0byB3b3JrLiAnQWRqdXN0JyBjYXBzIGZsYWdzIGFjY29yZGluZ2x5LgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJUGV0ZSBSYXR6bGFmZiA8cHJhdHpsYWZmQGNmYS5oYXJ2YXJkLmVkdT4KCVN0dWIgZm9yIENvQ3JlYXRlR3VpZCgpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBtdWx0aW1lZGlhL21jaWNkYS5jOgoJQnJpYW4gTGl0emluZ2VyIDxicmlhbkBsaXR6aW5nZXIuY29tPgoJRml4ZXMgZm9yIEZyZWVCU0QuCgoJKiBsaWJ0ZXN0Ly5jdnNpZ25vcmUsIGxpYnRlc3QvTWFrZWZpbGUuaW46CglQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQG1pbmVydmEuY2MudWl0Lm5vPgoJTWFrZSBzdXJlIGhlbGxvM3Jlcy5oIGlzIGdlbmVyYXRlZCBldmVuIGlmICdtYWtlIGRlcGVuZCcgbmV2ZXIgaGFzCgliZWVuIHJ1bi4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQgbW92aW5nIGFuZCBzaXppbmcgb2YgY2hpbGQgd2luZG93cy4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy9rZXlib2FyZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglYUXVlcnlLZXltYXAgLT4gVFNYUXVlcnlLZXltYXAgKGZpeGVzIHRoZSBYSU8gZXJyb3JzIHJlcG9ydGVkKS4KCldlZCBPY3QgMjEgMTc6MjA6NDggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbWlzY2VtdS9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGluZGlyZWN0aW9uIGZvciBjdHhfZGVidWcgdG8gdGhlIERPUyBsb2FkZXIsIHNvIFdpbmVsaWIgd29ya3MKCWFnYWluLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBwb3J0IGFub24gc2hhcmVkIG1hcHBpbmdzIHVzaW5nIHRlbXBvcmFyeSBmaWxlcyAod29udCBiZSBkZWxldGVkCgl5ZXQpLgoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2FzIGZyZWVpbmcgdGhlIGluY29ycmVjdCBwb2ludGVycyAtPiBjcmFzaCBpbiBtYWxsb2NzL2ZyZWVzLgoKCSogZmlsZXMvZG9zX2ZzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGVmaW5lRG9zRGV2aWNlIHN0dWIgYWRkZWQuCgoJKiBtaXNjZW11L21haW4uYywgd2luZS5pbmk6IENoYWQgUG93ZWxsIChweHB4QHVzYS5uZXQpCglBZGRlZCBhIGRlZmF1bHQgcHJvZ3JhbSBvcHRpb24gaW4gd2luZS5jb25mIGluIHNlY3Rpb24gW3Byb2dyYW1zXSBrZXkKCURlZmF1bHQuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IERhdmlkIEN1dGhiZXJ0IDxkYWN1dEBlY2UuY211LmVkdT4KCUJldHRlciBmaXggZm9yIHRoaXNfaXNfYV9zeW50YXhfZXJyb3IuCgoJKiBvbGUvbmxzLyoubmxzOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglBZGRlZCB0aGUgZW50cmllcyBmb3IgTE9DQUxFX1NJU082MzlMQU5HTkFNRSBhbmQKCUxPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVXBkYXRlZCBtYW5wYWdlLgoKCSogcmVsYXkzMi9tc2FjbTMyLnNwZWM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgd3Jvbmcgb3JkaW5hbHMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIGEgYnVnIGluIFJlY3RJblJlZ2lvbi4KClR1ZSBPY3QgMjAgMTU6MjY6MjYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludGVycnVwdHMuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglSZW1vdmVkIGFuIGluY29ycmVjdCBlcnJvciBtZXNzYWdlLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUBtaW5lcnZhLmNjLnVpdC5ubz4KCU1ha2Ugc3VyZSB0aGUgYWNjZXNzIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIHVzZWQgdG8gZ2V0IGxhYmVsIGFuZCBzZXJpYWwKCW51bWJlci4KCk1vbiBPY3QgMTkgMDg6NDg6MjQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9vbGUybmxzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEBob2wuZnI+CglGaXhlZCBidWcgb24gcGxhdGZvcm1zIHdlcmUgYnVmZmVycyByZXR1cm5lZCBieSBnZXRlbnYoKSBzaGFsbCBub3QgYmUKCWZyZWUoKSdlZC4gQWRkZWQgRnJlbmNoIChkZWZhdWx0KSBpbiBsb2NhbGUgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IERhdmUgQ3V0aGJlcnQgPGRhY3V0QGVjZS5jbXUuZWR1PgoJQ2hhbmdlZCAidGhpcyBpcyBhIHN5bnRheCBlcnJvciIgdG8gInRoaXNfaXNfYV9zeW50YXhfZXJyb3IiIHRvIG1ha2UgYQoJY29tcGlsZS10aW1lIGVycm9yIG1lc3NhZ2UgbWFrZSBtb3JlIHNlbnNlLgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgb2ZmIGJ5IG9uZSBlcnJvciBpbiBIQU5ETEVfR2V0T2JqUHRyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gT2N0IDE4IDE0OjQ4OjMxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRyeSB0byBpbXBsZW1lbnQgdGhlIE9GX1NIQVJFX1hYWCBvcHRpb25zLgoJTW92ZSB0aGUgbW9kZSB0cmFuc2xhdGlvbnMgdG8gZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9tYWluLmgsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGUybmxzLmMsIG9sZS9vbGVzdnIuYywgb2xlL3N0b3JhZ2UuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdHViIGZvciBDb1NldFN0YXRlMzIuCgoJKiBtaXNjZW11L21haW4uYzogQ2hhZCBQb3dlbGwgPHB4cHhAdXNhLm5ldD4KCUFkZGVkIGFiaWxpdHkgdG8gcmVhZCBhIHN0YXJ0dXAgcHJvZ3JhbSBmcm9tIHdpbmUuaW5pIGZpbGUuCglQdXQgaXQgaW4gc2VjdGlvbiBbcHJvZ3JhbXNdIGtleSBTdGFydHVwLgoKCSogaW5jbHVkZS90cmFja2Jhci5oLCBpbmNsdWRlL3RyZWV2aWV3LmgsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZ1cnRoZXIgaW1wcm92ZW1lbnRzLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglJbXBsZW1lbnRlZCBMb2FkQ3Vyc29yRnJvbUZpbGUsIGZpeGVkIERyYXdJY29uRXggdG8gc3VwcG9ydCBvZmZzY3JlZW4KCWRyYXdpbmcsIGZpeGVkIENVUlNPUklDT05fQ3JlYXRlRnJvbVJlc291cmNlIHRvIHN1cHBvcnQgTFJfIHNlbWFudGljcy4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeGVkIExvYWRJbWFnZSB0byBzdXBwb3J0IGFsbW9zdCBhbGwgTFJfIGZsYWdzLgoKCSogb2JqZWN0cy9kaWIuYzogVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBidWcgaW4gRElCX1NldEltYWdlQml0c19STEU4IChiZWNhdXNlICdjb2xvcicgdmFyIHdhcyBXT1JELCBhbGwKCUNPTE9SRUZzIGhhZCByZWQgcGFydCB6ZXJvZWQpIHRoYXQgbWFkZSBwbGVudHkgb2YgY3lhbiBjb2xvcnMsIG1pbm9yCglidWcgZml4ZXMsIGNoYW5nZXMgdG8gc3VwcG9ydCBMUl8gZmxhZ3MuCgoJKiBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglBZGRlZCBWSVJUVUFMX01hcEZpbGVXIHRvIG1hcCBmaWxlIHRvIG1lbW9yeSBpbiBvbmUgZnVuY3Rpb24gY2FsbC4KCgkqIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgd2luZG93cy9tdWx0aW1vbi5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglNb3ZlZCBNdWx0aW1vbml0b3IgQVBJIGRlY2xhcmF0aW9ucyB0byB3aW5kb3dzLmguCgoJKiBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2RyaXZlci5oLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWMsIHdpbmRvd3MvZHJpdmVyLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUltcGxlbWVudGVkIERlZkRyaXZlclByb2MzMiBmcm9tIHdpbm1tLmRsbC4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBpbmNsdWRlL3Njcm9sbC5oLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGFtcy5zdW55c2IuZWR1PgoJR290IHJpZCBvZiBmbGlja2VyaW5nIHNjcm9sbGJhciBhcnJvd3MuIE1ESSBzY3JvbGxpbmcgc3BlZWRlZCB1cCBhCgliaXQuCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBvbGUvbmxzL2RldS5ubHMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUdldExvY2FsZUluZm8zMkEgY2FuIGhhbmRsZSBsZW49MCBub3csIHNldHMgTGFzdEVycm9yIGFuZCB0b3VjaGVzCglidWZmZXIgb25seSB3aGVuIG5lY2Vzc2FyeS4KCVVwZGF0ZWQgZGV1Lm5scyBhbmQgc29tZSBMQ1RZUEVTIGluIHdpbm5scy5oLgoKCSogaWYxNjMyL3JlbGF5LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDYWxsUHJvY1tFeF0zMlcgY2FsbGVkIHdpdGggbHBQcm9jQWRkcmVzcz09TlVMTCBzaG91bGQgcmV0dXJuIHplcm8gYW5kCglub3QgY3Jhc2guCgpTYXQgT2N0IDE3IDEzOjA3OjQ4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVkdWNlZCBodWdlICgxR0IpIGhlYXAgY3JlYXRpb24gdGhhdCBjYXVzZWQgU3RhcmNyYWZ0IHRvIGZhaWwuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgd2luZG93cy9kaWFsb2cuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIFNvbGFyaXMuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3Igbm9uIE9TUyBzeXN0ZW1zLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3Igbm9uIFhGODYtREdBIHN5c3RlbXMuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L3ZvbGluZm8uYzoKCVBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCU5ldyBmaWxlIHRvIHRlc3QgRFJJVkVfR2V0TGFiZWwuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsLmNhPgoJU21hbGwsIHN1Ym9wdGltYWwsIGZpeCBmb3IgMzIgYml0IGNkYXVkaW8gb3BlbiByb3V0aW5lcy4gTmVlZHMgcHJvcGVyCgkzMmJpdCBjZGF1ZGlvIGJpdCBzdXBwb3J0IGJlZm9yZSBpdCBjYW4gYmUgcmVtb3ZlZC4uLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbC5jYT4KCUFkZGVkIGEgYnVuY2ggb2Ygc3R1YnMgZm9yIGRkcmF3IHN1ZmFjZSByb3V0aW5lcy4gQWxsIHN0dWJzIGZvcgoJc3VyZmFjZSBwcmVzZW50IG5vdy4KCUNvbW1lbnRlZCBvdXQgbWVzc2FnZSBwdW1wIGNhbGxzLiBJIGRvbid0IHNlZSBhIHJlYXNvbiBmb3IgdGhlbSBiZWluZwoJdGhlcmUuIEV2ZXJ5dGhpbmcgd29ya3MgZmluZSB3aXRoIC1kZXNrdG9wIGFuZCAtbWFuYWdlZCBzdGlsbCBoYXMKCXByb2JsZW1zLiBEaXNhZ3JlZW1lbnRzPwoKCSogb2xlL29sZTJubHMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBHZXRMb2NhbGVJbmZvMzJBIGZvciBvdGhlciBsYW5ndWFnZXMgdGhhbiBlbl91ay4KCU1hZGUgaXQgcmVjb2duaXNlIExPQ0FMRV9TWVNURU1fREVGQVVMVCwgTE9DQUxFX1NZU1RFTV9ERUZBVUxUIGFuZAoJbGFzdCBidXQgbm90IGxlYXN0IHRoZSBmaXJzdCBhcmd1bWVudCBsY2lkIHdoZXJlIGlzIGFsbCBhYm91dC4uLgoKCSogaW5jbHVkZS9zeXNsZXZlbC5oLCBtaXNjL3JlZ2lzdHJ5LmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBtdWx0aW1lZGlhL3RpbWUuYywgd2luZG93cy9jYXJldC5jLCBkbGxzL21zYWNtMzIvYnVpbHRpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIG1vcmUgbWlzc2luZyBXSU5BUElzIChob3BlZnVsbHkgY29ycmVjdCkuCgoJKiBvbGUvb2xlMm5scy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHRoZSA9IC0+ID09IGJ1Zy4KCgkqIG1zZG9zL2ludDJmLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCVNoZWxsIHBhcmFtZXRlcnMgKGNvbmZpZy5zeXMpIGFuZCBBTlNJIHN1cHBvcnQgc3R1YnMuCgoJKiBtc2Rvcy9NYWtlZmlsZS5pbjogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgaW50MTYuYyBhbmQgaW50MjkuYy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglNb3JlIGludGVycnVwdHMgdGhhdCBjYW4gYmUgZG9uZSBmcm9tIERPUyBtb2RlLgoKCSogbXNkb3MvaW50MjkuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgaW50MjkgKEZhc3QgV3JpdGUgdG8gU2NyZWVuKSBzdXBwb3J0LgoKCSogbXNkb3MvaW50MTYuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgaW50MTYgKEtleWJvYXJkKSBzdXBwb3J0LCBtb3N0bHkgc3R1YnMuCgpGcmkgT2N0IDE2IDE1OjQwOjIxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGJ1Z2ZpeGVzLCBuZXcgc3R1YnMgU0hHZXRSZWFsSURMLCBTSFJlZ1F1ZXJ5VmFsdWUzMlcsCglTSFJlZ1F1ZXJ5VmFsdWVFeDMyVywgU3RyUmV0VG9TdHJOLCBTdHJDaHJXLCBTSEFsbG9jU2hhcmVkLAoJU0hMb2NrU2hhcmVkLCBTSFVubG9ja1NoYXJlZCwgU0hGcmVlU2hhcmVkLCBTZXRBcHBTdGFydGluZ0N1cnNvcjMyLAoJU0hMb2FkT0xFMzIsIFNoZWxsX01lcmdlTWVudXMzMiwgUGF0aEdldERyaXZlTnVtYmVyMzIsIERyaXZlVHlwZTMyLAoJU0hBYm9ydEludm9rZUNvbW1hbmQsIFNIT3V0T2ZNZW1vcnlNZXNzYWdlQm94LCBTSEZsdXNoQ2xpcGJvYXJkLgoKCSogbWlzYy9udGRsbC5jLCByZWxheTMyL250ZGxsLnNwZWM6CglEaWV0bWFyIEtsaW5nIDxkaWV0bWFyLmtsaW5nQHVzYS5uZXQ+CglBZGRlZCB1bmRvY3VtZW50ZWQgZnVuY3Rpb24gUnRsT3BlbkN1cnJlbnRVc2VyLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmMsIG1pc2Mvc2hlbGwuYywgbWlzYy92ZXIuYywgbWlzYy92ZXJzaW9uLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGluY2x1ZGUvbmVleGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3BlZXhlLmgsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZW5hbWVkIGFsbCBMUElNQUdFXyogdHlwZXMgdG8gUElNQUdFXyouCgpUaHUgT2N0IDE1IDEzOjAzOjEwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgYW4gZXJyb3Igd2hlbiBhbiBvd25lZCB3aW5kb3cgYWN0aXZhdGVzIGl0cyBvd25lciBkdXJpbmcKCWNyZWF0aW9uLgoKCSogd2luZG93cy9kZWZkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNsb3NpbmcgYSBkaWFsb2cgdXNpbmcgdGhlIG1lbnUgYmFyICgieCIgb3IgIi0iIGJ1dHRvbiBvciB3aW5kb3dzCgltZW51KSBtdXN0IGdlbmVyYXRlIGEgV01fQ09NTUFORCtJRENBTkNFTCBtZXNzYWdlLCB1bmxpa2UgY2xvc2luZwoJbm9ybWFsIHdpbmRvd3Mgd2hlbiBEZXN0cm95V2luZG93KCkgaXMgY2FsbGVkLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25AY2lwLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBXSU5BUElzLgoKCSogd2luZG93cy93aW5wb3MuYywgd2luMzIvb3JkaW5hbHMuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIFByaXZhdGVFeHRyYWN0SWNvbkV4W0FXXSwgUHJpdmF0ZUV4dHJhY3RJY29uc1csCglSZWdpc3RlclNoZWxsSG9va1dpbmRvdywgRGVyZWdpc3RlclNoZWxsSG9va1dpbmRvdywgR2V0UHJvZ21hbldpbmRvdywKCUdldFRhc2ttYW5XaW5kb3csIFNldFByb2dtYW5XaW5kb3csIFNldFNoZWxsV2luZG93RXgsCglTZXRUYXNrbWFuV2luZG93LgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCBtaXNjL250ZGxsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBOdFF1ZXJ5SW5mb3JtYXRpb25UaHJlYWQsIE50UXVlcnlJbmZvcm1hdGlvblRva2VuLAoJUnRsQWxsb2NhdGVBbmRJbml0aWFsaXplU2lkLCBSdGxFcXVhbFNpZCwgUnRsRnJlZVNpZC4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBQbGF5U291bmQgdG8gc3RhcnQgaXRzIHRocmVhZCB0aGUgcmlnaHQgd2F5LgoKV2VkIE9jdCAxNCAxODo0MDozNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGFtcy5zdW55c2IuZWR1PgoJQ0JfU0VUQ1VSU0VMIGFuZCBzb21lIG90aGVyIGZpeGVzLgoKCSogd2luZG93cy9xdWV1ZS5jOiBBbGV4IEtvcm9ia2EgPGtvcm9ia2FAYW1zLnN1bnlzYi5lZHU+CglCZXR0ZXIgUVVFVUVfRmx1c2hNZXNzYWdlcygpLgoKCSogcmVsYXkzMi9nZGkzMi5zcGVjLCBvYmplY3RzL2ZvbnQuYywgaW5jbHVkZS93aW5kb3dzLmgsIGlmMTYzMi9nZGkuc3BlYzoKCU1vc2hlIFZhaW5lciA8bW9zaGV2QGVhc3liYXNlLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgR2V0T3V0bGluZVRleHRNZXRyaWNzMzJBLgoJQWRkZWQgc3RydWN0dXJlcyBmb3IgT1VUTElORVRFWFRNRVRSSUNTLgoKCSogb2JqZWN0cy9kYy5jLCBpbmNsdWRlL2dkaS5oLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG8gbm90IGNsaXAgc291cmNlIHJlY3RhbmdsZSBldmVuIGJ5IHZpc2libGUgcmVnaW9uIGZvciBiaXRibHRzLgoJQWRkZWQgZmllbGQgJ3RvdGFsRXh0ZW50JyB0byBXSU5fRENfSU5GTy4KCgkqIG1zZG9zL3Z4ZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIFZNTSBQTSBBUEkgQUg9MDI2W2RlXSAobmV2ZXIgc2F5ICdzYWZlIG1vZGUnKS4KCgkqIG1lbW9yeS9oZWFwLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBMb2NhbDMyRnJlZSBjYXVzZWQgZnJlZSBoYW5kbGVzIGxpc3QgY29ycnVwdGlvbi4KCgkqIGluY2x1ZGUvZGVidWd0b29scy5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIC0tZGlzYWJsZS1kZWJ1ZyBjb25maWcgb3B0aW9uLgoKVHVlIE9jdCAxMyAxMjo1MDowNCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUB0ZC5vcmcudWl0Lm5vPgoJQWRkZWQgc3R1YnMgU0hSZWdDbG9zZUtleSgpLCBTSFJlZ09wZW5LZXlbQVddKCksIFNIUmVnUXVlcnlWYWx1ZUV4QSgpCglhbmQgRmlsZUljb25Jbml0KCkgbmVlZGVkIGJ5IFdpbjk1IGV4cGxvcmVyLgoKTW9uIE9jdCAxMiAwNzoyNTo1NCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL21lbnUuYzoKCU5vcm1hbiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUltcHJvdmluZyBrZXlib2FyZCBoYW5kbGluZywgaW5jbHVkaW5nIGFjY2VsZXJhdG9yIGtleXMgaW4gZGlhbG9nCglib3hlcy4gQWxzbyBmaXhlcyBlbnRlciBrZXkgaW4gQWdlbnQzMiBlZGl0IGJveC4KClN1biBPY3QgMTEgMTk6Mzc6MjMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY29tbWRsZy5jOiBFcmljIFBvdWVjaCAgPGVyaWMucG91ZWNoQGxlbWVsLmZyPgoJQWRkZWQgc3VwcG9ydCBpbiBmaWxlIGRpYWxvZyBib3hlcyBoYW5kbGluZyBmb3IgZmlsdGVycyBsaWtlCgkiKi50eHQ7Ki5iYXQiLgoKCSogd2luMzIva2VybmVsMzIuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIG5ldyBQRSBETEwgaW5pdGFsaXphdGlvbiBjb2RlLCB0cnlpbmcgdG8gY2FsbCB0aGUKCURsbEVudHJ5UG9pbnQgcm91dGluZXMgYWx3YXlzIGluIGNvcnJlY3Qgb3JkZXIgOi0pCglCeXBhc3Mgc25vb3Bpbmcgd2hlbiBnZXR0aW5nIGRhdGEgYnVmZmVyIGFkZHJlc3NlcyAodGh1bmsgYnVmZmVycywKCV9fR1AgaGFuZGxlcnMpIGFuZCBmb3IgMzItYml0IHJvdXRpbmVzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIDE2LWJpdAoJKGR1ZSB0byBzdGFjayBhZGRyZXNzIHNpemUgcHJvYmxlbXMpLgoKCSogd2luMzIvb3JkaW5hbHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIENvbW1vblVuaW1wU3R1YiwgTWFwSEluc3QoTFN8U0wpX1BOLCBXMzJTX0JhY2tUbzMyLgoJU3R1YiBmb3IgSG91c2VDbGVhbkxvZ2ljYWxseURlYWRIYW5kbGVzLCBmaXhlZCBrMzJ3dnNwcmludGZBLgoKCSogdG9vbHMvYnVpbGQuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIChwYXJ0aWFsbHkpIHRoZSBLRVJORUwgVGh1bmtsZXQgQVBJIGFuZCBDYWxsYmFjayBDbGllbnQKCUFQSSAoS0VSTkVMLjU2MC01NjgsNjA0LTYxMiw2MTktNjIyKS4KCUFkZGVkIHN0dWJzIGZvciBLMjI4LCBLMjM3LCBLRVJORUwuMzY1LCBLRVJORUwuNDQ3LgoKCSogb2JqZWN0cy9iaXRtYXAuYywgaWYxNjMyL2dkaS5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdHVicyBmb3IgQ3JlYXRlVXNlcihEaXNjYXJkYWJsZSlCaXRtYXAxNi4KCgkqIG1lbW9yeS9oZWFwLmMsIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgSEVBUF9XSU5FX0NPREUxNlNFRyBTRUdQVFIgaGVhcHMgd2l0aCAxNi1iaXQgY29kZSBzZWdtZW50cy4KCgkqIG1lbW9yeS9nbG9iYWwuYywgaW5jbHVkZS93aW5kb3dzLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUdsb2JhbEZpeDE2IGlzIHN1cHBvc2VkIHRvIHJldHVybiBzZWxlY3RvciB0byB0aGUgbWVtb3J5IGFyZWEuCgoJKiBtc2Rvcy92eGQuYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvY29tbS5zcGVjLCBpZjE2MzIvd3Byb2NzLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN0dWJzIGZvciBDT01NLkRSViwgUkVCT09ULlZYRCwgVkRELlZYRC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvc3lzbGV2ZWwuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIGVtZXJnZW5jeSBURUIgc2VsZWN0b3IgdG8gYXZvaWQgZGVidWdnZXIgY3Jhc2hlcyB3aGVuIHN0ZXBwaW5nCgl0aHJvdWdoIHJlbGF5IHN0dWJzIChvciB3aGVuIEZTIGlzIGludmFsaWQgb3RoZXJ3aXNlKS4KCgkqIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNT1VTRS5EUlYgcm91dGluZXMgbW92ZWQgdG8gZXZlbnQuYy4gQ2FsbCBtb3VzZSBldmVudCBwcm9jZWR1cmUuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIGluY2x1ZGUvZGMuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGlmMTYzMi9nZGkuc3BlYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3BhdGguYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hhbmdlZCBEQyBtZW1iZXJzIHcuaFZpc1Jnbiwgdy5oQ2xpcFJnbiwgYW1kIHcuaEdDQ2xpcFJnbiB0bwoJY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIGRldmljZSwgbm90IHRoZSBEQyBvcmlnaW4uIFRoaXMgaXMKCW5lY2Vzc2FyeSB0byBjb3JyZWN0bHkgaW1wbGVtZW50IEdldENsaXBSZ24xNiBhbmQgSW5xdWlyZVZpc1Jnbi4KCVNlbGVjdFZpc1JnbiBhbHNvIGV4cGVjdHMgcmVnaW9uIGluIGRldmljZS1yZWxhdGl2ZSBjb29yZGluYXRlcy4KCUFkYXB0ZWQgdGhlIHJlc3Qgb2YgV2luZSB0byB0aGlzIGNvb3JkaW5hdGUgY2hhbmdlLgoJSW1wbGVtZW50ZWQgRXh0U2VsZWN0Q2xpcFJnbi4KCgkqIHRvb2xzL3dpbmFwaS1jaGVjaywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIGZpbGVzL2Rvc19mcy5jOgoJQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglTbWFsbCBmaXguCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL25lZXhlLmgsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCUFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJWWV0IGFub3RoZXIgc21hbGwgc2VsZi1sb2FkZXIgZml4LgoKCSogZmlsZXMvZHJpdmUuYzogQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglGaXhlZCBzZXZlcmUgYnVnOiBTZXRDdXJyZW50RGlyZWN0b3J5MzJBIGRpZG4ndCBzZXQgcFRhc2stPmN1cmRpcgoJY29ycmVjdGx5IGR1ZSB0byBjdXJyZW50IGRyaXZlIGJlaW5nIHNldCB0b28gbGF0ZS4KCgkqIE1ha2UucnVsZXMuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXNlICQoQVMpIGluc3RlYWQgb2YgJChDQykgdG8gY29tcGlsZSAucyBmaWxlcy4KCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9idWlsdGluMzIuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL21tcmVnLmgsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGRsbHMvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgTVNBQ00uRExMLCBNU0FDTTMyLkRMTCBhbmQgSU1BR0VITFAuRExMLgoKCSogaW5jbHVkZS9pbWFnZWhscC5oLCByZWxheTMyL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9pbWFnZWhscC9kZWJ1Zy5jLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywgZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYywgZGxscy9pbWFnZWhscC9pbnRlcm5hbC5jLCBkbGxzL2ltYWdlaGxwL21vZGlmeS5jLCBkbGxzL2ltYWdlaGxwL3N5bWJvbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBJTUFHRUhMUC5ETEwuCgoJKiBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbXNhY21kcnYuaCwgcmVsYXkzMi9tc2FjbTMyLnNwZWMsIGlmMTYzMi9tc2FjbS5zcGVjLCBkbGxzL21zYWNtMzIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbTMyL01ha2VmaWxlLmluLCBkbGxzL21zYWNtMzIvYnVpbHRpbi5jLCBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXNhY20zMi9maWx0ZXIuYywgZGxscy9tc2FjbTMyL2Zvcm1hdC5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbV9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIE1TQUNNLkRMTCBhbmQgTVNBQ00zMi5ETEwuCgoJKiB3aW4zMi9kZXZpY2UuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIHRoaW5ncyB0aGF0IHdlcmUgZWFybGllciBhZGRlZCBieSBtaXN0YWtlLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVRoZSBpbXBsZW1lbnRhdGlvbiBvZiBtbWlvV3JpdGUgaXMgbm93IGNhbGxlZCBpbnN0ZWFkIG9mIHRoZSBzdHViLgoKCSogaW5jbHVkZS9zaGVsbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4ZXMsIHNoZWxsdmlldyB1c2VzIERQQSdzIG5vdywgSVNoZWxsVmlld19HZXRJdGVtT2JqZWN0IGltcGxlbWVudGVkLgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzOiBTSEdldEZpbGVJbmZvMzJXLCBSZWFkQ2FiaW5ldFN0YXRlLCBXcml0ZUNhYmluZXRTdGF0ZSwgSXNVc2VyQWRtaW4uCglJbXBsZW1lbnRlZDogU0hHZXRQYXRoRnJvbUlETGlzdDMyVy4KCUNoYW5nZWQgUGF0aENvbWJpbmUuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHJ1Y3R1cmVzIERWQVNQRUNULCBUWU1FRCwgSURMTGlzdC4KCVNoZWxsIHNwZWNpZmljIGNsaXBib2FyZCBmb3JtYXRzLgoKCSogcmVsYXkzMi93aW5zcG9vbC5zcGVjLCBtaXNjL3ByaW50ZHJ2LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgRW51bVByaW50ZXJzVy4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGZpcnN0IGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBjbGFzcyBJRExMaXN0ICJJdGVtIElEIExpc3QgTGlzdCIgKGludGVybmFsKS4KCgkqIG1pc2MvdmVyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgY2hhbmdlcyAodXNlcyBISVdPUkQvTE9XT1JEKS4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglTYXQgT2N0IDEwIDEyOjAwOjAwIDE5OTggIEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBDcmVhdGVEaWFsb2dJbmRpcmVjdFBhcmFtQW9yVy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdD4KCURvbid0IGluc3RhbGwgb2JqZWN0IGZpbGVzIHdoZW4gLS1kaXNhYmxlLWxpYiBpcyBzZWxlY3RlZC4KCgkqIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQ+CglEb24ndCBwcmludCBuYW1lIGZvciAzMiBiaXQgbGliIG11bHRpcGxlIHRpbWVzLgoJQ2xlYW4gdXAgcHJpbnRpbmcgaW4gREVCVUdfUHJvY2Vzc0RlZmVycmVkRGVidWcuCgoJKiBtZW1vcnkvaGVhcC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBjb250cm9scy9jb21iby5jOgoJRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJU21hbGwgZml4ZXMuCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQHRkLm9yZy51aXQubm8+CglCdWdmaXg6IENoYW5nZWQgR2V0RHJpdmVUeXBlMzJBKE5VTEwpIHRvIHVzZSBjd2QncyByb290LgoKCSogb2xlL3R5cGVsaWIuYywgb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZTJubHMuYywgb2xlL29sZWNsaS5jLCBvbGUvb2xlc3ZyLmMsIG9sZS9zdG9yYWdlLmMsIG1pc2MvbnRkbGwuYywgbWlzYy9yZWdpc3RyeS5jOgoJTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCURvY3VtZW50YXRpb24gY29ycmVjdGlvbnMvc3RhbmRhcmRpemF0aW9ucy4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oOgoJRXJpYyBQb3VlY2ggIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCVN0YXJ0ZWQgY29kaW5nIDMyIGJpdCBNQ0kgaGFuZGxpbmcuCglBZGRlZCBPcGVuL0Nsb3NlIHRvIGxvdy1sZXZlbCBNQ0kgZHJpdmVycyAoYXVkaW8sIG1pZGksIGFuaW0sIGNkYSkuCglXcm90ZSBNQ0kgTUlESSBzdXBwb3J0LgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglZZXQgYW5vdGhlciBpbXByb3ZlbWVudCB0byB0aGUgYmV6aWVyIGNvZGUuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUdldFRpY2tDb3VudHMoKSBoYXMgYSBncmFudWxhcml0eSBpbiB3aW5kb3dzIG9mIDI1IG1zZWMncy4KCUdpcm90ZWwncyBzZXJpYWwgY29tbXVuaWNhdGlvbiBhcHBlYXJzIHRvIGRlcGVuZCBvbiBpdCwgc28gSSBndWVzcwoJaXQncyBhIGZlYXR1cmUuLi4KCgkqIG1pc2MvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJVXBkYXRlIHRoZSBtb2RlbW4gc3RhdHVzIGJpdCB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBSTFNEIGxpbmUgaXMKCWFjdGl2ZSBpbiBldmVyeSBjYWxsIHRvIEdldENvbW1FcnJvcigpLiBUaGlzIGlzIG5vdCB0aGUgcHJvcGVyIHBsYWNlLAoJYnV0IHNpbmNlIHdpbmUgZG9lc24ndCBkbyBhbnkgZXZlbnQtc3R1ZmYuLi4KCUZpeGVkIHNvbWUgVFJBQ0UgY2FsbCdzIGZhY2VkIHdpdGggbm9uIHplcm8gdGVybWluYXRlZCBzdHJpbmdzLgoJUmVzdG9yZSB0aGUgdGVybWluYWwgc3RhdGUgYXQgQ2xvc2VDb21tdCB0byB0aGUgc3RhdGUgaXQgd2FzIGF0CglPcGVuQ29tbSgpLCBzbyB0aGUgbW9kZW0gd2lsbCBnbyBvZmYtaG9vay4KCgkqIGxvYWRlci9tb2R1bGUuYzogQWxleGFuZGVyIExhcnNzb24gIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJR2V0TW9kdWxlRmlsZU5hbWUzMkEoKSByZXR1cm5zIGxvbmcgZmlsZW5hbWUgaWYgYXBwIHNldHMgb3N2ZXJzaW9uID49Cgk0LjAuIEFsc28gbW92ZWQgdGhlIGxvbmcgZmlsZW5hbWUgaGFja2VyeSB0byBHZXRMb25nUGF0aE5hbWUzMkEoKSBzbwoJaXQgY2FuIGJlIHVzZWQgYnkgd2luMzIgcHJvZ3JhbXMuCgoJKiBmaWxlcy9kb3NfZnMuYzogQWxleGFuZGVyIExhcnNzb24gPGFsbGFAbHlzYXRvci5saXUuc2U+CglHZXRMb25nUGF0aE5hbWUzMkEoKSByZXR1cm5zIGRvcyBmb3JtYXQgbG9uZyBmaWxlbmFtZSBpbnN0ZWFkIG9mIHVuaXgKCWZvcm1hdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNtYWxsIGZpeGVzLgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFNIRmx1c2hDbGlwYm9hcmQuCgoJKiByZWxheTMyL2NvbWN0bDMyLnNwZWMsIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zLgoJQ2hhbmdlZCBhbGdvcml0aG0gaW4gRFBBX1F1aWNrU29ydCgpLgoJRml4ZWQgaGVhcCBjcmVhdGlvbi9kZXN0cnVjdGlvbiBhbmQgY29udHJvbCBbdW5dcmVnaXN0cmF0aW9uIGluCglDb21DdGwzMkxpYk1haW4oKS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBhIGJ1Zy4KCgkqIGluY2x1ZGUvdG9vbHRpcHMuaCwgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHRyYWNraW5nIHN1cHBvcnQgYW5kIGZpeGVkIGxvYWRpbmcgb2YgcmVzb3VyY2Ugc3RyaW5ncy4KCUFkZGVkIHVucmVnaXN0ZXIgY29kZS4KCgkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9pcGFkZHJlc3MuaCwgaW5jbHVkZS9uYXRpdmVmb250LmgsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgSVBBZGRyZXNzIGFuZCBOYXRpdmVGb250IGNvbnRyb2xzLgoKCSogaW5jbHVkZS9pbWFnZWxpc3QuaCwgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTb21lIG1pbm9yIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvdG9vbGJhci5oLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBkcmF3aW5nIGFuZCBwbGFjZW1lbnQgY29kZS4gRXhwbG9yZXIgc3R5bGUgY29tbW9uIGRpYWxvZ3MgYXJlCglsb29raW5nIGdvb2Qgbm93LgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBidWcgaW4gRHJhd0ljb25FeDMyKCkuCgoJKiBtaXNjL21haW4uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIEdldFN5c3RlbUluZm9ybWF0aW9uMzJbQS9XXS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCBpZjE2MzIvdXNlci5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIERyYXdDYXB0aW9uWzE2LzMyXSBhbmQgRHJhd0NhcHRpb25UZW1wWzE2LzMyQS8zMlddLgoJRml4ZWQgaGFuZGxpbmcgb2YgV1NfRVhfVE9PTFdJTkRPVy4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJVXBkYXRlZC4KCgkqIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jLCBpbmNsdWRlL2tleWJvYXJkLmg6CglEYXZpZCBGYXVyZSA8ZmF1cmVAa2RlLm9yZz4KCUFkZGVkIEtFWUJPQVJEX1VwZGF0ZVN0YXRlLCB0byByZWFkIHRoZSBtb2RpZmllcnMgd2hlbiB0aGUgd2luZSBhcHAgaXMKCWFjdGl2YXRlZC4gVXNlcyB0aGUgbmV3IEtFWUJPQVJEX1VwZGF0ZU9uZVN0YXRlLgoJRml4ZWQgYSBwcm9ibGVtIHdpdGggbWVudSBhY2NlbGVyYXRvcnMgKEFsdC1sZXR0ZXIgZ2VuZXJhdGVzIGEgZG93bgoJYXJyb3cgZXZlbnQgd2hpY2ggYmVlcHMgaWYgbm90IGZpbHRlcmVkKS4KCVNwZWVkZWQgdXAgVG9Bc2NpaTE2LzMyKCkgYSBsaXR0bGUgYml0LgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIFdpbmUncyBkZWJ1Z2dlciB3b3JrIHNhdGlzZmFjdG9yaWx5IHdpdGggRE9TIGFwcHMuCglQZXJoYXBzIGRlcmVmZXJlbmNpbmcgd29yayBiZXR0ZXIgZm9yIFdpbjE2IGFwcHMgdG9vIG5vdywgYnV0CglpdCBhcHBlYXJzIHRoZSBkZWJ1Z2dlciBjb3JlIHdhc24ndCBkZXNpZ25lZCBmb3Igc2VnbWVudGF0aW9uLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNpbXVsYXRlcyBEUE1JIG1lbW9yeSBtYXAgYnkgY29udmVydGluZyBsb3dlci1NQiBzZWdtZW50IGJhc2UKCWFkZHJlc3NlcyBhcyBuZWNlc3NhcnkuIEltcGxlbWVudGVkIGFsbG9jYXRpbmcvZnJlZWluZyBET1MgbWVtb3J5CglibG9ja3MuIEFkZGVkIFhNUyBob29rLiAoRFBNSSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgdW50aWwKCXNvbWVvbmUgaW1wbGVtZW50cyB0aGUgcmF3IG1vZGUgc3dpdGNoIGVudHJ5IHBvaW50cyBwa3VuemlwIG5lZWRzLikKCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSSB0aGluayBpdCdzIHRpbWUgdG8gcmV0aGluayB0aGUgSEZJTEUxNl9UT19IRklMRTMyIHN0cmF0ZWd5LAoJY2FuJ3Qga2VlcCB3b3JraW5nIGFyb3VuZCBmbGF3cyBpbiBpdCBsaWtlIHRoaXMgKG5vdyBzdGRpbwoJd2FzIGdldHRpbmcgY2xvc2VkIHdoZW4gcHJvZ3JhbXMgY2xvc2UgaGFuZGxlcyA+PTUpCgoJKiBtc2Rvcy94bXMuYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludDJmLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGJhc2ljIFhNUyBmdW5jdGlvbnMuIHdjYi5leGUgKFdpbjE2IGRpc2Fzc2VtYmxlcikgbm93CglzZWVtcyB0byB3b3JrIGZpbmUgdW5kZXIgV2luZS4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIHNvbWUgc3lzdGVtIGRlcGVuZGVuY2llcyB0byBsb2FkZXIvZG9zL2Rvc3ZtLmMuIEltcGxlbWVudGVkCgllbnZpcm9ubWVudGFsIGFyZ3ZbMF0gcGFzc2luZyB0byBET1MgYXBwcy4gQWRkZWQgWE1TIGhvb2tzLgoKCSogZGVidWdnZXIvc3RhYnMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIG1lbXNldCgpIHRvIHByZXZlbnQgYSBkZWJ1Z2dlciBzZWdmYXVsdCBjYXVzZWQgYnkKCXVuaW5pdGlhbGl6ZWQgcG9pbnRlcnMgaW4gdGhlIHN0YWJzIGxvb2t1cCB0YWJsZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUEgZmV3IGZpeGVzLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFJ0bEFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZCBlbnRyeS4KCgkqIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcGVleGUuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdlbmVyaWMgZHluYW1pYyBkbGwgbG9hZGVyIHVzaW5nIGRsKigpIEFQSS4KCUluY2x1ZGVzOiBzdGRjYWxsLT5jZGVjbCBtYXBwaW5nIGFiaWxpdHksIHNub29waW5nLgoJKFRlc3RlZCBvbmx5IHdpdGggZ2xpZGUyeC5kbGwgLT4gbGliZ2xpZGUyeC5zbykKCgkqIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL3RpbWUuYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgd2luMzIgZW5oYW5jZWQgZnVuY3Rpb25hbGl0eSB0byB0aW1lciBjYWxsYmFja3MuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgYmFkIGhhY2tzIHNvIFdyaXRlQ29uc29sZU91dHB1dCB3b3JrcyBvbiB2dDEwMCBhbmQgUGVla01lc3NhZ2UKCWRvZXMgYXQgbGVhc3QgYSBiaXQgb2Yga2V5Ym9hcmQgaW5wdXQuCgoJKiByZWxheTMyL3Nub29wLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2hvdWxkIGRpc3BsYXkgYWdhaW4uCgpTYXQgT2N0IDEwIDE1OjUyOjQ2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUltcGxlbWVudGVkIERTX0NFTlRFUiBkaWFsb2cgc3R5bGUuCgoJKiBtaXNjL21haW4uYzogUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglBZGRlZCBmdW5jdGlvbiB0byBidWlsZCB0aGUgV2luZG93cyBudW1lcmljIGxhbmd1YWdlIElEIGZyb20gbGFuZ3VhZ2UsCgljb2RlLCBjaGFyc2V0IGFuZCBkaWFsZWN0IHN0cmluZ3MsIGxpa2UgdXNlZCBieSBVbml4IExBTkcgdmFyaWFibGUuCgoJKiBvbGUvb2xlMm5scy5jLCBvbGUvbmxzL1JFQURNRSwgaW5jbHVkZS93aW5ubHMuaCwgb2xlL25scy8qLm5sczoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJTW9yZSBOTFMgZGF0YS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFBldGVyIFNjaGxhaWxlIDx1ZGJ6QHJ6LnVuaS1rYXJsc3J1aGUuZGU+CglGaXhlZCBhIGxvdCBvZiBidWdzIGluIGRkcmF3LmMgdG8gbWFrZSB4bGliIHN1cHBvcnQgd29yay4KCVJ1bnMgc3VjY2Vzc2Z1bGx5IFRSMkRlbW8gYW5kIEphenogSmFja3JhYmJpdCBJSSBEZW1vIQoKCSogb2JqZWN0cy9nZGlvYmouYzogQ2xpZmYgV3JpZ2h0IDxjbGlmZkBzbmlwZTQ0NC5vcmc+CglBZGRlZCBEQyBvYmplY3QgdHlwZSB0byB0aGUgbGlzdCBvZiB2YWxpZCBvYmplY3RzIHRoYXQgY2FuIGJlIGRlbGV0ZWQKCWJ5IERlbGV0ZU9iamVjdDMyLgoKU3VuIE9jdCAgNCAxODoyMDoyOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQ2hhbmdlTG9nOgoJU3RhcnRpbmcgbmV3IGZvcm1hdCBjaGFuZ2Vsb2cgKG9sZGVyIGNoYW5nZXMgbW92ZWQgdG8KCWRvY3VtZW50YXRpb24vQ2hhbmdlTG9nLk9MRCkuCg==