MjAwMjA2MjIKIC0gKGRqbSkgVXBkYXRlIFJFQURNRS5wcml2c2VwOyBzcG90dGVkIGJ5IGZyaWVzQAogLSAoZGptKSBSZWxlYXNlIDMuM3AxCgoyMDAyMDYyMQogLSAoZGptKSBTeW5jOgogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8yMSAwNTo1MDo1MQogICAgIFttb25pdG9yLmNdCiAgICAgRG9uJ3QgaW5pdGlhbGlzZSBjb21wcmVzc2lvbiBidWZmZXJzIHdoZW4gY29tcHJlc3Npb249bm8gaW4gc3NoZF9jb25maWc7CiAgICAgb2sgTmllbHNACiAgLSBJRCBzeW5jIGZvciBhdXRoLXBhc3N3ZC5jCiAtIChkam0pIFdhcm4gYW5kIGRpc2FibGUgY29tcHJlc3Npb24gb24gcGxhdGZvcm1zIHdoaWNoIGNhbid0IGhhbmRsZSBib3RoCiAgIHVzZXByaXZpbGVnZXNlcGFyYXRpb249eWVzIGFuZCBjb21wcmVzc2lvbj15ZXMKIC0gKGRqbSkgY29udHJpYi9yZWRoYXQvb3BlbnNzaC5zcGVjIGhhY2tpbmc6CiAgIC0gTWVyZ2UgaW4gc3BlYyBjaGFuZ2VzIGZyb20gc2ViYUBpcS5wbCAoU2ViYXN0aWFuIFBhY2h1dGEpCiAgIC0gQWRkIG5ldyB7c3NoLHNzaGR9X2NvbmZpZy41IG1hbnBhZ2VzCiAgIC0gQWRkIG5ldyBzc2gta2V5c2lnbiBwcm9ncmFtIGFuZCByZW1vdmUgc2V0dWlkIGZyb20gc3NoIGNsaWVudAoKMjAwMjA2MjAKIC0gKGJhbCkgRml4ZWQgQUlYIGVudmlyb25tZW50IGhhbmRsaW5nLCB1c2Ugc2V0cGNyZWQoKSBpbnN0ZWFkIG9mIGV4aXN0aW5nCiAgIGNvZGUuICAoQnVnemlsbGEgQnVnIDI2MSkKIC0gKGJhbCkgT3BlbkJTRCBDVlMgU3luYwogICAtIHRvZGRAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMTQgMjE6MzU6MDAKICAgICBbbW9uaXRvcl93cmFwLmNdCiAgICAgc3BlbGxpbmc7IGZyb20gQnJpYW4gUG9vbGUgPHJhakBjZXJpYXMucHVyZHVlLmVkdT4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMTUgMDA6MDE6MzYKICAgICBbYXV0aGZkLmMgYXV0aGZkLmggc3NoLWFkZC5jIHNzaC1hZ2VudC5jXQogICAgIGJyZWFrIGFnZW50IGtleSBsaWZldGltZSBwcm90b2NvbCBhbmQgYWxsb3cgb3RoZXIgY29udHJhaW50cyBmb3Iga2V5CiAgICAgdXNhZ2UuCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzE1IDAwOjA3OjM4CiAgICAgW2F1dGhmZC5jIGF1dGhmZC5oIHNzaC1hZGQuYyBzc2gtYWdlbnQuY10KICAgICBmaXggc3R1cGlkIHR5cG8KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMTUgMDE6Mjc6NDgKICAgICBbYXV0aGZkLmMgYXV0aGZkLmggc3NoLWFkZC5jIHNzaC1hZ2VudC5jXQogICAgIHJlbW92ZSB0aGUgQ09OU1RSQUlOX0lERU5USVRZIG1lc3NhZ2VzIGFuZCBpbnRyb2R1Y2UgYSBuZXcKICAgICBBRERfSUQgbWVzc2FnZSB3aXRoIGNvbnRyYWludHMgaW5zdGVhZC4gY29udHJhaW50cyBjYW4gYmUKICAgICBvbmx5IGFkZGVkIHRvZ2V0aGVyIHdpdGggdGhlIHByaXZhdGUga2V5LgogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8xNiAyMTozMDo1OAogICAgIFtzc2gta2V5c2Nhbi5jXQogICAgIHVzZSBUQUlMUV94eCBtYWNyby4gIGZyb20gbHVrZW1AbmV0YnNkLiAgbWFya3VzIG9rCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8xNyAwNjowNTo1NgogICAgIFtzY3AuY10KICAgICBtYWtlIHVzYWdlIGxpa2UgbWFuIHBhZ2UKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzE5IDAwOjI3OjU1CiAgICAgW2F1dGgtYnNkYXV0aC5jIGF1dGgtc2tleS5jIGF1dGgxLmMgYXV0aDItY2hhbGwuYyBhdXRoMi1ub25lLmMgYXV0aGZkLmMKICAgICAgYXV0aGZkLmggbW9uaXRvcl93cmFwLmMgbXNnLmMgbmNoYW4uYyByYWRpeC5jIHJlYWRjb25mLmMgc2NwLmMgc2Z0cC4xCiAgICAgIHNzaC1hZGQuMSBzc2gtYWRkLmMgc3NoLWFnZW50LjEgc3NoLWFnZW50LmMgc3NoLWtleWdlbi4xIHNzaC1rZXlnZW4uYwogICAgICBzc2gta2V5c2lnbi5jIHNzaC4xIHNzaGNvbm5lY3QuYyBzc2hjb25uZWN0Lmggc3NoY29ubmVjdDIuYyB0dHltb2Rlcy5jCiAgICAgIHhtYWxsb2MuaF0KICAgICBLTkYgZG9uZSBhdXRvbWF0aWNhbGx5IHdoaWxlIHJlYWRpbmcuLi4uCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzE5IDE4OjAxOjAwCiAgICAgW2NpcGhlci5jIG1vbml0b3IuYyBtb25pdG9yX3dyYXAuYyBwYWNrZXQuYyBwYWNrZXQuaF0KICAgICBtYWtlIHRoZSBtb25pdG9yIHN5bmMgdGhlIHRyYW5zZmVyIHNzaDEgc2Vzc2lvbiBrZXk7CiAgICAgdHJhbnNmZXIga2V5Y29udGV4dCBvbmx5IGZvciBSQzQgKHRoaXMgaXMgc3RpbGwgZGVwZW5kcyBvbiBFVlAKICAgICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBpcyBicm9rZW4pLgogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMjAgMTk6NTY6MDcKICAgICBbc3NoLjEgc3NoZC44XQogICAgIG1vdmUgY29uZmlndXJhdGlvbiBmaWxlIG9wdGlvbnMgZnJvbSBzc2guMS9zc2hkLjggdG8KICAgICBzc2hfY29uZmlnLjUvc3NoZF9jb25maWcuNTsgb2sgZGVyYWFkdEAgbWlsbGVydEAKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzIwIDIwOjAwOjA1CiAgICAgW3NjcC4xIHNmdHAuMV0KICAgICBzc2hfY29uZmlnKDUpCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8yMCAyMDowMzozNAogICAgIFtzc2hfY29uZmlnIHNzaGRfY29uZmlnXQogICAgIHJlZmVyIHRvIGNvbmZpZyBmaWxlIG1hbiBwYWdlCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzIwIDIzOjA1OjU2CiAgICAgW3NlcnZjb25mLmMgc2VydmNvbmYuaCBzZXNzaW9uLmMgc3NoZC5jXQogICAgIGFsbG93IENvbXByZXNzaW9uPXllcy9ubyBpbiBzc2hkX2NvbmZpZwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8yMCAyMzozNzoxMgogICAgIFtzc2hkX2NvbmZpZ10KICAgICBhZGQgQ29tcHJlc3Npb24KICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzI1IDIwOjQwOjA4CiAgICAgW0xJQ0VOQ0VdCiAgICAgbWlzc2VkIFBlciBBbGxhbnNzb24gKGF1dGgyLWNoYWxsLmMpCiAtIChiYWwpIEN5Z3dpbiBzcGVjaWFsIGhhbmRsaW5nIG9mIGVtcHR5IHBhc3N3b3JkcyB3cm9uZy4gIFBhdGNoIGJ5CiAgIHZpbnNjaGVuQHJlZGhhdC5jb20KIC0gKGJhbCkgTWlzc2VkIGludGVncmF0aW5nIHNzaF9jb25maWcuNSBhbmQgc3NoZF9jb25maWcuNQogLSAoYmFsKSBTdGlsbCBtb3JlIE1ha2VmaWxlLmluIHVwZGF0ZXMgZm9yIHNzaHtkfV9jb25maWcuNQoKMjAwMjA2MTMKIC0gKGJhbCkgdHlwbyBvZiBzZXRncm91cCBmb3IgY3lnd2luLiAgUGF0Y2ggYnkgdmluc2NoZW5AcmVkaGF0LmNvbQoKMjAwMjA2MTIKIC0gKGJhbCkgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8xMSAyMzowMzo1NAogICAgIFtzc2guY10KICAgICByZW1vdmUgdW51c2VkIGNydWZ0LgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8xMiAwMTowOTo1MgogICAgIFtzc2guY10KICAgICBzc2hfY29ubmVjdCByZXR1cm5zIDAgb24gc3VjY2VzcwogLSAoYmFsKSBCdWlsZCBub29wIHNldGdyb3VwcygpIGZvciBjeWd3aW4gdG8gY2xlYW4gdXAgY29kZSAoRm9yIG90aGVyCiAgIHBsYXRmb3JtcyB3aXRob3V0IHRoZSBzZXRncm91cHMoKSByZXF1aXJlbWVudCwgeW91IE1VU1QgZGVmaW5lCiAgIFNFVEdST1VQU19OT09QIGluIHRoZSBjb25maWd1cmUuYWMpIEJhc2VkIG9uIHBhdGNoIGJ5IHZpbnNjaGVuQHJlZGhhdC5jb20KIC0gKGJhbCkgU29tZSBwbGF0Zm9ybXMgZG9uJ3QgaGF2ZSBPTkxDUiAoTm90YWJsZSBNaW50KQoKMjAwMjA2MTEKIC0gKGJhbCkgc3NoLWFnZW50LmMgUkNTRCBmaXggKHx1bmV4cGFuZCBhbHJlYWR5IGRvbmUpCiAtIChiYWwpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA5IDIyOjE1OjE1CiAgICAgW3NzaC4xXQogICAgIHVwZGF0ZSBmb3Igbm8gc2V0dWlkIHJvb3QgYW5kIHNzaC1rZXlzaWduOyBvayBkZXJhYWR0QAogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8wOSAyMjoxNzoyMQogICAgIFtzc2hjb25uZWN0LmNdCiAgICAgcGFzcyBzYWxlbiB0byBzb2NrYWRkcl9udG9wIHNvIHRoYXQgd2UgYXJlIGhhcHB5IG9uIGxpbnV4L3NvbGFyaXMKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzEwIDE2OjUzOjA2CiAgICAgW2F1dGgtcnNhLmMgc3NoLXJzYS5jXQogICAgIGRpc3BsYXkgbWluaW11bSBSU0EgbW9kdWx1cyBpbiBlcnJvcigpOyBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8xMCAxNjo1NjozMAogICAgIFtzc2gta2V5c2lnbi44XQogICAgIG1lcmdlIGluIHN0dWZmIGZyb20gbXkgbWFuIHBhZ2U7IG9rIG1hcmt1c0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzEwIDE3OjM2OjIzCiAgICAgW3NzaC1hZGQuMSBzc2gtYWRkLmNdCiAgICAgdXNlIGNvbnZ0aW1lKCkgdG8gcGFyc2UgYW5kIHZhbGlkYXRlIGtleSBsaWZldGltZS4gIGNhbiBub3cKICAgICB1c2UgJy10IDJoJyBldGMuICBvayBtYXJrdXNAIHByb3Zvc0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzEwIDE3OjQ1OjIwCiAgICAgW3JlYWRjb25mLmMgc3NoLjFdCiAgICAgY2hhbmdlIFJob3N0c1JTQUF1dGhlbnRpY2F0aW9uIGFuZCBSaG9zdHNBdXRoZW50aWNhdGlvbiBkZWZhdWx0IHRvIG5vCiAgICAgc2luY2Ugc3NoIGlzIG5vIGxvbmdlciBzZXR1aWQgcm9vdCBieSBkZWZhdWx0OyBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8xMCAyMToyMToxMAogICAgIFtzc2hfY29uZmlnXQogICAgIHVwZGF0ZSBkZWZhdWx0cyBmb3IgUmhvc3RzUlNBQXV0aGVudGljYXRpb24gYW5kIFJob3N0c0F1dGhlbnRpY2F0aW9uCiAgICAgaGVyZSB0b28gKGFsbCBvcHRpb25zIGNvbW1lbnRlZCBvdXQgd2l0aCBkZWZhdWx0IHZhbHVlKS4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMTAgMjI6Mjg6NDEKICAgICBbY2hhbm5lbHMuYyBjaGFubmVscy5oIHNlc3Npb24uY10KICAgICBtb3ZlIGNyZWF0aW9uIG9mIGFnZW50IHNvY2tldCB0byBzZXNzaW9uLmM7IG5vIG5lZWQgZm9yIHVpZHN3YXBwaW5nCiAgICAgaW4gY2hhbm5lbC5jLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8xMSAwNDoxNDoyNgogICAgIFtzc2guYyBzc2hjb25uZWN0LmMgc3NoY29ubmVjdC5oXQogICAgIG5vIGxvbmdlciB1c2UgdWlkc3dhcC5bY2hdIGZyb20gdGhlIHNzaCBjbGllbnQKICAgICBydW4gbGVzcyBjb2RlIHdpdGggZXVpZD09MCBpZiBzc2ggaXMgaW5zdGFsbGVkIHNldHVpZCByb290CiAgICAganVzdCBzd2l0Y2ggdGhlIGV1aWQsIGRvbid0IHN3aXRjaCB0aGUgY29tcGxldGUgc2V0IG9mIGdyb3VwcwogICAgICh0aGlzIGlzIG9ubHkgbmVlZGVkIGJ5IHNzaGQpLiBvayBwcm92b3NACiAgIC0gbXBlY2hAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMTEgMDU6NDY6MjAKICAgICBbYXV0aC1rcmI0LmMgbW9uaXRvci5oIHNlcnZlcmxvb3AuYyBzZXNzaW9uLmMgc3NoLWFnZW50LmMgc3NoZC5jXQogICAgIHBpZF90IGNsZWFudXAuIE1hcmt1cyBuZWVkIHRoaXMgbm93IHRvIGtlZXAgaGFja2luZy4KICAgICBtYXJrdXNALCBtaWxsZXJ0QCBvawogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8xMSAwODoxMTo0NQogICAgIFtjYW5vaG9zdC5jXQogICAgIHVzZSAibnRvcCIgb25seSBhZnRlciBpbml0aWFsaXplZAogLSAoYmFsKSBDeWd3aW4gZml4IHVwIGZyb20gc3dhcCB1aWQgY2xlYW4gdXAgaW4gc3NoLmMgcGF0Y2ggYnkKICAgdmluc2NoZW5AcmVkaGF0LmNvbQoKMjAwMjA2MDkKIC0gKGJhbCkgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8wOCAwNTowNzo1NgogICAgIFtzc2guY10KICAgICBudWtlIHB0cmFjZSBjb21tZW50CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA4IDA1OjA3OjA5CiAgICAgW3NzaC1rZXlzaWduLmNdCiAgICAgb25seSBhY2NlcHQgMjAgYnl0ZSBzZXNzaW9uIGlkcwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8wOCAwNToxNzowMQogICAgIFtyZWFkY29uZi5jIHJlYWRjb25mLmggc3NoLjEgc3NoLmNdCiAgICAgZGVwcmVjYXRlIEZhbGxCYWNrVG9Sc2ggYW5kIFVzZVJzaDsgcGF0Y2ggZnJvbSBkam1ACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA4IDA1OjQwOjAxCiAgICAgW3JlYWRjb25mLmNdCiAgICAganVzdCB3YXJuIGFib3V0IERlcHJlY2F0ZWQgb3B0aW9ucyBmb3Igbm93CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA4IDA1OjQxOjE4CiAgICAgW3NzaF9jb25maWddCiAgICAgcmVtb3ZlIEZhbGxCYWNrVG9Sc2gvVXNlUnNoCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA4IDEyOjM2OjUzCiAgICAgW3NjcC5jXQogICAgIHJlbW92ZSBGYWxsQmFja1RvUnNoCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA4IDEyOjQ2OjE0CiAgICAgW3JlYWRjb25mLmNdCiAgICAgc2lsZW50bHkgaWdub3JlIGRlcHJlY2F0ZWQgb3B0aW9ucywgc2luY2UgRmFsbEJhY2tUb1JzaCBtaWdodCBiZSBwYXNzZWQKICAgICBieSByZW1vdGUgc2NwIGNvbW1hbmRzLgogIC0gaXRvanVuQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA4IDIxOjE1OjI3CiAgICAgW3NzaGNvbm5lY3QuY10KICAgICBhbHdheXMgdXNlIGdldG5hbWVpbmZvLiAgKGRpYWcgbWVzc2FnZSBvbmx5KQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8wOSAwNDozMzoyNwogICAgIFtzc2hjb25uZWN0LmNdCiAgICAgYWJvcnQoKSAtID4gZmF0YWwoKQogLSAoYmFsKSBSQ1NJRCB0YWcgdXBkYXRlcyBvbiBjaGFubmVscy5jLCBjbGllbnRsb29wLmMsIG5jaGFuLmMsCiAgIHNmdHAtY2xpZW50LmMsIHNzaC1hZ2VuZXQuYywgc3NoLWtleWdlbi5jIGFuZCBjb25uZWN0LmggKHdlIGRpZCB1bmV4cGFuZAogICBpbmRlcGVuZGFudCBvZiB0aGVtKQoKMjAwMjA2MDcKIC0gKGJhbCkgUmVtb3ZlZCAtLXtlbmFibGUvZGlzYWJsZX0tc3VpZC1zc2gKIC0gKGJhbCkgTWlzc2VkIF9fcHJvZ25hbWUgaW4gc3NoLWtleXNpZ24uYyAgcGF0Y2ggYnkgZHR1Y2tlckB6aXAuY29tLmF1CiAtIChiYWwpIHVzZSAnTE9HSU5fUFJPR1JBTScgIG5vdCAnL3Vzci9iaW4vbG9naW4nIGluIHNlc3Npb24uYyBwYXRjaCBieQogICBCZXJ0cmFuZC5WZWxsZUBhcG9nZWUtY29tLmZyCgoyMDAyMDYwNgogLSAoYmFsKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzE1IDIxOjU2OjM4CiAgICAgW3NlcnZjb25mLmMgc3NoZC44IHNzaGRfY29uZmlnXQogICAgIHJlLWVuYWJsZSBwcml2c2VwIGFuZCBkaXNhYmxlIHNldHVpZCBmb3IgcG9zdC0zLjIuMgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8xNiAyMjowMjo1MAogICAgIFtjaXBoZXIuYyBrZXguaCBtYWMuY10KICAgICBmaXggd2FybmluZ3MgKG9wZW5zc2wgMC45LjcgcmVxdWlyZXMgY29uc3QpCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8xNiAyMjowOTo1OQogICAgIFtzZXNzaW9uLmMgc3NoLmNdCiAgICAgZG9uJ3QgbGltaXQgeGF1dGggcGF0aGxlbiBvbiBjbGllbnQgc2lkZSBhbmQgbG9uZ2VyIHByaW50IGxlbmd0aCBvbgogICAgIHNlcnZlciB3aGVuIGRlYnVnOyBvayBtYXJrdXNACiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8xOSAyMDo1NDo1MgogICAgIFtsb2cuaF0KICAgICBleHRyYSBjb21tYXMgaW4gZW51bSBub3QgMTAwJSBwb3J0YWJsZQogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMjIgMjM6MTg6MjUKICAgICBbc3NoLmMgc3NoZC5jXQogICAgIHNwZWxsaW5nOyBhYmlzaG9mZkBhcmMubmFzYS5nb3YKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMjMgMTk6MjQ6MzAKICAgICBbYXV0aGZpbGUuYyBhdXRoZmlsZS5oIHBhdGhuYW1lcy5oIHNzaC5jIHNzaGNvbm5lY3QuYyBzc2hjb25uZWN0LmggCiAgICAgIHNzaGNvbm5lY3QxLmMgc3NoY29ubmVjdDIuYyBzc2gta2V5c2lnbi44IHNzaC1rZXlzaWduLmMgTWFrZWZpbGUuaW5dCiAgICAgYWRkIC91c3IvbGliZXhlYy9zc2gta2V5c2lnbjogYSBzZXR1aWQgaGVscGVyIHByb2dyYW0gZm9yIGhvc3RiYXNlZCAKICAgICBhdXRoZW50aWNhdGlvbiBpbiBwcm90b2NvbCB2MiAobmVlZHMgdG8gYWNjZXNzIHRoZSBob3N0a2V5cykuCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzIzIDE5OjM5OjM0CiAgICAgW3NzaC5jXQogICAgIGFkZCBjb21tZW50IGFib3V0IHNzaC1rZXlzaWduCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzI0IDA4OjQ1OjE0CiAgICAgW3NzaGNvbm5lY3QyLmNdCiAgICAgc3RhdCBzc2gta2V5c2lnbiBmaXJzdCwgcHJpbnQgZXJyb3IgaWYgc3RhdCBmYWlsczsKICAgICBzb21lIGRlYnVnLT5lcnJvcjsgZml4IGNvbW1lbnQKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMjUgMDg6NTA6MzkKICAgICBbc3NoY29ubmVjdDIuY10KICAgICBleGVjbHAtPmV4ZWNsOyBmcm9tIHN0ZXZlc2sKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMjUgMTg6NTE6MDcKICAgICBbYXV0aC5oIGF1dGgyLmMgYXV0aDItaG9zdGJhc2VkLmMgYXV0aDIta2JkaW50LmMgYXV0aDItbm9uZS5jCiAgICAgIGF1dGgyLXBhc3N3ZC5jIGF1dGgyLXB1YmtleS5jIE1ha2VmaWxlLmluXQogICAgIHNwbGl0IGF1dGgyLmMgaW50byBvbmUgZmlsZSBwZXIgbWV0aG9kOyBvayBwcm92b3NAL2RlcmFhZHRACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8yNiAyMDozNToxMAogICAgIFtzc2guMV0KICAgICBzb3J0IENoYWxsZW5nZVJlc3BvbnNlQXV0aGVudGljYXRpb247IG9rIG1hcmt1c0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzI4IDE2OjQ1OjI3CiAgICAgW21vbml0b3JfbW0uY10KICAgICBwcmludCBzdHJlcnJvcihlcnJubykgb24gbW1hcC9tdW5tYXAgZXJyb3I7IG9rIG1hcmt1c0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzI4IDE3OjI4OjAyCiAgICAgW3VpZHN3YXAuY10KICAgICBmb3JtYXQgc3BlYyBjaGFuZ2UvY2FzdHMgYW5kIHNvbWUgS05GOyBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8yOCAyMToyNDowMAogICAgIFt1aWRzd2FwLmNdCiAgICAgdXNlIGNvcnJlY3QgZnVuY3Rpb24gbmFtZSBpbiBmYXRhbCgpCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8yOSAwMzowNjozMAogICAgIFtzc2guMSBzc2hkLjhdCiAgICAgc3BlbGxpbmcKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMjkgMTE6MjE6NTcKICAgICBbc3NoZC5jXQogICAgIGRvbid0IHN0YXJ0IGlmIHByaXZzZXAgaXMgZW5hYmxlZCBhbmQgU1NIX1BSSVZTRVBfVVNFUiBvcgogICAgIF9QQVRIX1BSSVZTRVBfQ0hST09UX0RJUiBhcmUgbWlzc2luZzsgb2sgZGVyYWFkdEAKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMzAgMDg6MDc6MzEKICAgICBbY2lwaGVyLmNdCiAgICAgdXNlIHJpam5kYWVsL2FlcyBmcm9tIGxpYmNyeXB0byAob3BlbnNzbCA+PSAwLjkuNykgaW5zdGVhZCBvZgogICAgIG91ciBvd24gaW1wbGVtZW50YXRpb24uIGFsbG93IHVzZSBvZiBBRVMgaGFyZHdhcmUgdmlhIGxpYmNyeXB0bywgCiAgICAgb2sgZGVyYWFkdEAKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMzEgMTA6MzA6MzMKICAgICBbc3NoY29ubmVjdDIuY10KICAgICBleHRlbnQgc3NoLWtleXNpZ24gcHJvdG9jb2w6CiAgICAgcGFzcyAjIG9mIHNvY2tldC1mZCB0byBzc2gta2V5c2lnbiwga2V5c2lnbiB2ZXJmaWVzIGxvY2FsbHkgdXNlZAogICAgIGlwLWFkZHJlc3MgdXNpbmcgdGhpcyBzb2NrZXQtZmQsIHJlc3RyaWN0cyBmYWtlIGxvY2FsIGhvc3RuYW1lcwogICAgIHRvIGFjdHVhbCBsb2NhbCBob3N0bmFtZXM7IG9rIHN0ZXZlc2tACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzMxIDExOjM1OjE1CiAgICAgW2F1dGguaCBhdXRoMi5jXQogICAgIG1vdmUgQXV0aG1ldGhvZCBkZWZpbml0b25zIHRvIHBlci1tZXRob2QgZmlsZS4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMzEgMTM6MTY6NDgKICAgICBba2V5LmNdCiAgICAgYWRkIGNvbW1lbnQ6CiAgICAga2V5X3ZlcmlmeSByZXR1cm5zIDEgZm9yIGEgY29ycmVjdCBzaWduYXR1cmUsIDAgZm9yIGFuIGluY29ycmVjdCBzaWduYXR1cmUKICAgICBhbmQgLTEgb24gZXJyb3IuCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzMxIDEzOjIwOjUwCiAgICAgW3NzaC1yc2EuY10KICAgICBwYWQgcmVjZWl2ZWQgc2lnbmF0dXJlIHdpdGggbGVhZGluZyB6ZXJvcywgYmVjYXVzZSBSU0FfdmVyaWZ5IGV4cGVjdHMKICAgICBhIHNpZ25hdHVyZSBvZiBSU0Ffc2l6ZS4gdGhlIGRyYWZ0cyBzYXlzIHRoZSBzaWduYXR1cmUgaXMgdHJhbnNtaXR0ZWQKICAgICB1bnBhZGRlZCAoZS5nLiBwdXR0eSBkb2VzIG5vdCBwYWQpLCByZXBvcnRlZCBieSBhbmFraW5AcG9ib3guY29tCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8wMyAxMjowNDowNwogICAgIFtzc2guaF0KICAgICBjb21wYXRpYmxpdHkgLT4gY29tcGF0aWJpbGl0eQogICAgIGRlY3JpcHRvciAtPiBkZXNjcmlwdG9yCiAgICAgYXV0aGVudGNpYXRlZCAtPiBhdXRoZW50aWNhdGVkCiAgICAgdHJhbnNtaXRpb24gLT4gdHJhbnNtaXNzaW9uCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA0IDE5OjQyOjM1CiAgICAgW21vbml0b3IuY10KICAgICBvbmx5IGFsbG93IGVuYWJsZWQgYXV0aGVudGljYXRpb24gbWV0aG9kczsgb2sgcHJvdm9zQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8wNCAxOTo1Mzo0MAogICAgIFttb25pdG9yLmNdCiAgICAgc2F2ZSB0aGUgc2Vzc2lvbiBpZCAoaGFzaCkgZm9yIHNzaDIgKGl0IHdpbGwgYmUgcGFzc2VkIHdpdGggdGhlIAogICAgIGluaXRpYWwgc2lnbiByZXF1ZXN0KSBhbmQgdmVyaWZ5IHRoYXQgdGhpcyB2YWx1ZSBpcyB1c2VkIGR1cmluZyAKICAgICBhdXRoZW50aWNhdGlvbjsgb2sgcHJvdm9zQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8wNCAyMzowMjowNgogICAgIFtwYWNrZXQuY10KICAgICByZW1vdmUgX19GVU5DVElPTl9fCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA0IDIzOjA1OjQ5CiAgICAgW2NpcGhlci5jIG1vbml0b3IuYyBtb25pdG9yX2ZkcGFzcy5jIG1vbml0b3JfbW0uYyBtb25pdG9yX3dyYXAuY10KICAgICBfX0ZVTkNUSU9OX18gLT4gX19mdW5jX18KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMDUgMTY6MDg6MDcKICAgICBbc3NoLWFnZW50LjEgc3NoLWFnZW50LmNdCiAgICAgJy1hIGJpbmRfYWRkcmVzcycgYmluZHMgdGhlIGFnZW50IHRvIHVzZXItc3BlY2lmaWVkIHVuaXgtZG9tYWluCiAgICAgc29ja2V0IGluc3RlYWQgb2YgL3RtcC9zc2gtWFhYWFhYWFgvYWdlbnQuPHBpZD47IG9rIGRqbUAgKHNvbWUgdGltZSBhZ28pLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8wNSAxNjowODowNwogICAgIFtzc2gtYWdlbnQuMSBzc2gtYWdlbnQuY10KICAgICAnLWEgYmluZF9hZGRyZXNzJyBiaW5kcyB0aGUgYWdlbnQgdG8gdXNlci1zcGVjaWZpZWQgdW5peC1kb21haW4KICAgICBzb2NrZXQgaW5zdGVhZCBvZiAvdG1wL3NzaC1YWFhYWFhYWC9hZ2VudC48cGlkPjsgb2sgZGptQCAoc29tZSB0aW1lIGFnbykuCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA1IDE2OjQ4OjU0CiAgICAgW3NzaC1hZ2VudC5jXQogICAgIGNvcHkgY3VycmVudCByZXF1ZXN0IGludG8gYW4gZXh0cmEgYnVmZmVyIGFuZCBqdXN0IGZsdXNoIHRoaXMKICAgICByZXF1ZXN0IG9uIGVycm9ycywgb2sgcHJvdm9zQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNi8wNSAxOTo1NzoxMgogICAgIFthdXRoZmQuYyBhdXRoZmQuaCBzc2gtYWRkLjEgc3NoLWFkZC5jIHNzaC1hZ2VudC5jXQogICAgIHNzaC1hZGQgLXggZm9yIGxvY2sgYW5kIC1YIGZvciB1bmxvY2tpbmcgdGhlIGFnZW50LgogICAgIHRvZG86IGVuY3J5cHQgcHJpdmF0ZSBrZXlzIHdpdGggbG9ja2VkLi4uCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA1IDIwOjU2OjM5CiAgICAgW3NzaC1hZGQuY10KICAgICBhZGQgLXgvLVggdG8gdXNhZ2UKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMDUgMjE6NTU6NDQKICAgICBbYXV0aGZkLmMgYXV0aGZkLmggc3NoLWFkZC4xIHNzaC1hZGQuYyBzc2gtYWdlbnQuY10KICAgICBzc2gtYWRkIC10IGxpZmUsICBTZXQgbGlmZXRpbWUgKGluIHNlY29uZHMpIHdoZW4gYWRkaW5nIGlkZW50aXRpZXM7IAogICAgIG9rIHByb3Zvc0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA2LzA2IDAxOjA5OjQxCiAgICAgW21vbml0b3IuaF0KICAgICBubyB0cmFpbGluZyBjb21tYSBpbiBlbnVtOyBjaGluYUB0aGV3cml0dGVud29yZC5jb20KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMDYgMTc6MTI6NDQKICAgICBbc2Z0cC1zZXJ2ZXIuY10KICAgICBkaXNjYXJkIHJlbWFpbmluZyBieXRlcyBvZiBjdXJyZW50IHJlcXVlc3Q7IG9rIHByb3Zvc0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDYvMDYgMTc6MzA6MTEKICAgICBbc2Z0cC1zZXJ2ZXIuY10KICAgICB1c2UgZ2V0X2ludCgpIG1hY3JvIChoaWRlIGlxdWV1ZSkKIC0gKGJhbCkgTWlzc2VkIG1zZy5bY2hdIGluIG1lcmdlLiAgUmVxdWlyZWQgZm9yIHNzaC1rZXlzaWduLgogLSAoYmFsKSBGb3Jnb3QgdG8gYWRkIG1zZy5jIE1ha2VmaWxlLmluLgogLSAoYmFsKSBtb25pdG9yX21tLmMgdHlwb3MuCiAtIChiYWwpIFJlZml4ZWQgYXV0aDIuYy4gIEl0IHdhcyBuZXZlciBmdWxseSBjb21taXRlZCB3aGlsZSBzcGxpdGluZyBvdXQKICAgYXV0aGVudGljYXRpb24gdG8gZGlmZmVyZW50IGZpbGVzLgogLSAoYmFsKSBzc2gta2V5c2lnbiBzaG91bGQgYnVpbGQgYW5kIGluc3RhbGwgY29ycmVjdGx5IG5vdy4gIFBoYXNlIHR3bwogICB3b3VsZCBiZSB0byBjbGVhbiBvdXQgYW55IGRlYWQgd29vZCBhbmQgZGlzYWJsZSBzc2ggc2V0dWlkIG9uIGluc3RhbGwuCiAtIChiYWwpIFJldmVyc2UgbG9naWMsIHVzZSBfX2Z1bmNfXyBmaXJzdCBzaW5jZSBpdCdzIEM5OQoKMjAwMjA2MDQKIC0gKHN0ZXZlc2spIFtjaGFubmVscy5jXSBidWcgIzE2NCBwYXRjaCBmcm9tIFlPU0hJRlVKSSBIaWRlYWtpIChjaGFuZ2VkCiAgIHNldHNvY2tvcHQgZnJvbSBkZWJ1ZyB0byBlcnJvciBmb3Igbm93KS4KCjIwMDIwNTI3CiAtICh0aW0pIFtjb25maWd1cmUuYWMub3JpZyBtb25pdG9yX2ZkcGFzcy5jXSBFbmFobmNlIG1zZ2hkciB0ZXN0cyB0byBhZGRyZXNzCiAgIGJ1aWxkIHByb2JsZW0gb24gSXJpeCByZXBvcnRlZCBieSBEYXZlIExvdmUgPGQubG92ZUBkbC5hYy51az4uIEJhY2sgb3V0CiAgIGxhc3QgbW9uaXRvcl9mZHBhc3MuYyBjaGFuZ2VzIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQgd2l0aCBuZXcgdGVzdHMuCiAgIFBhdGNoIHRlc3RlZCBvbiBJcml4IGJ5IEphbi1Gcm9kZSBNeWtsZWJ1c3QgPGphbmZyb2RlQHBhcmFsbGFiLnVpYi5ubz4KCjIwMDIwNTIyCiAtIChkam0pIEZpeCBzcGVsbGluZyBtaXN0YWtlcywgc3BvdHRlZCBieSBTb2xhciBEZXNpZ25lciBpCiAgIDxzb2xhckBvcGVud2FsbC5jb20+CiAtIFN5bmMgc2NhcmQvIChub3Qgc3VyZSB3aGVuIGl0IGRyaWZ0ZWQpCiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmM6CiAgIFthdXRoLmNdCiAgIEZpeCB0eXBvL3RoaW5rby4gIFBhc3MgaW4gYXMgdG8gYXV0aF9hcHByb3ZhbCgpLCBub3QgTlVMTC4KICAgQ2xvc2VzIFBSIDI2NTkuCiAtIENyYW5rIHZlcnNpb24KIC0gQ3JhbmsgUlBNIHNwZWMgdmVyc2lvbnMKCjIwMDIwNTIxCiAtIChzdGV2ZXNrKSBbc3NoZC5jXSBidWcgMjQ1OyBkaXNhYmxlIHNldHNpZCgpIGZvciBub3cKIC0gKHN0ZXZlc2spIFtzc2hkLmNdICNpZm5kZWYgSEFWRV9DWUdXSU4gZm9yIHNldGdyb3VwcygpCgoyMDAyMDUxNwogLSAodGltKSBbY29uZmlndXJlLmFjXSByZW1vdmUgZXh0cmEgTUQ1X01TRz0ibm8iIGxpbmUuCgoyMDAyMDUxNQogLSAoYmFsKSBDVlMgSUQgZml4IHVwIG9uIGF1dGgtcGFzc3dkLmMKIC0gKGJhbCkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMDcgMTk6NTQ6MzYKICAgICBbc3NoLmhdCiAgICAgdXNlIHNzaCB1aWQKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzA4IDIxOjA2OjM0CiAgICAgW3NzaC5oXQogICAgIG1vdmUgdG8gc3NoZC5zc2hkIGluc3RlYWQKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzExIDIwOjI0OjQ4CiAgICAgW3NzaC5oXQogICAgIHR5cG8gaW4gY29tbWVudAogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8xMyAwMjozNzozOQogICAgIFthdXRoLXNrZXkuYyBhdXRoMi5jXQogICAgIGxlc3Mgd2FybmluZ3MuICBza2V5X3tyZXNwb25kLHF1ZXJ5fSBhcmUgcHVibGljIChpbiBhdXRoLmgpCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzEzIDIwOjQ0OjU4CiAgICAgW2F1dGgtb3B0aW9ucy5jIGF1dGguYyBhdXRoLmhdCiAgICAgbW92ZSB0aGUgcGFja2V0X3NlbmRfZGVidWcgaGFuZGxpbmcgZnJvbSBhdXRoLW9wdGlvbnMuYyB0byBhdXRoLmM7IAogICAgIG9rIHByb3Zvc0AKICAgLSBtaWxsZXJ0QGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzEzIDE1OjUzOjE5CiAgICAgW3NzaGQuY10KICAgICBDYWxsIHNldHNpZCgpIGluIHRoZSBjaGlsZCBhZnRlciBzc2hkIGFjY2VwdHMgdGhlIGNvbm5lY3Rpb24gYW5kIGZvcmtzLgogICAgIFRoaXMgaXMgbmVlZGVkIGZvciBwcml2c2VwIHdoaWNoIGNhbGxzIHNldGxvZ2luKCkgd2hlbiBpdCBjaGFuZ2VzIHVpZHMuCiAgICAgV2l0aG91dCB0aGlzLCB0aGVyZSBpcyBhIHJhY2Ugd2hlcmUgdGhlIGxvZ2luIG5hbWUgb2YgYW4gZXhpc3RpbmcgCiAgICAgY29ubmVjdGlvbiwgYXMgcmV0dXJuZWQgYnkgZ2V0bG9naW4oKSwgbWF5IGJlIGNoYW5nZWQgdG8gdGhlIHByaXZzZXAgCiAgICAgdXNlciAoc3NoZCkuICBtYXJrdXNAIE9LCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzEzIDIxOjI2OjQ5CiAgICAgW2F1dGgtcmhvc3RzLmNdCiAgICAgaGFuZGxlIGRlYnVnIG1lc3NhZ2VzIGR1cmluZyByaG9zdHMtcnNhIGFuZCBob3N0YmFzZWQgYXV0aGVudGljYXRpb247IAogICAgIG9rIHByb3Zvc0AKICAgLSBtb3VyaW5nQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA1LzE1IDE1OjQ3OjQ5CiAgICAgW2tleC5jIG1vbml0b3IuYyBtb25pdG9yX3dyYXAuYyBzc2hkLmNdCiAgICAgJ21vbml0b3InIHZhcmlhYmxlIGNsYXNoZXMgd2l0aCBhdCBsZWFzdCBvbmUgbGFtZSBwbGF0Zm9ybSAoTmVYVCkuICBpCiAgICAgUmVuYW1lZCB0byAncG1vbml0b3InLiAgcHJvdm9zQAogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDUvMDQgMDI6Mzk6MzUKICAgICBbc2VydmNvbmYuYyBzc2hkLjggc3NoZF9jb25maWddCiAgICAgZW5hYmxlIHByaXZzZXAgYnkgZGVmYXVsdDsgcHJvdm9zIG9rCiAgIC0gbWlsbGVydEBjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8wNiAyMzozNDozMwogICAgIFtzc2guMSBzc2hkLjhdCiAgICAgS2lsbC9hZGp1c3Qgcihsb2dpbnxleGVjKWQ/IHJlZmVyZW5jZXMgbm93IHRoYXQgdGhvc2UgYXJlIG5vIGxvbmdlciBpbgogICAgIHRoZSB0cmVlLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8xNSAyMTowMjo1MwogICAgIFtzZXJ2Y29uZi5jIHNzaGQuOCBzc2hkX2NvbmZpZ10KICAgICBkaXNhYmxlIHByaXZzZXAgYW5kIGVuYWJsZSBzZXR1aWQgZm9yIHRoZSAzLjIuMiByZWxlYXNlCiAtIChiYWwpIEZpeGVkIHVwIFBBTSBjYXNlLiAgSSB0aGluay4KIC0gKGJhbCkgQ2xhcmlmaWVkIG9wZW5ic2QtY29tcGF0LyotY3JheS4qIExpY2VuY2UgcHJvdmlkZWQgYnkgV2VuZHkKIC0gKGJhbCkgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNS8xNSAyMTowNToyOQogICAgIFt2ZXJzaW9uLmhdCiAgICAgZW50ZXIgT3BlblNTSF8zLjIuMgogLSAoYmFsKSBDYWxkYXJhLCBTdXNlLCBhbmQgUmVkaGF0IG9wZW5zc2guc3BlY3MgdXBkYXRlZC4KCjIwMDIwNTE0CiAtIChzdGV2ZXNrKSBbUkVBRE1FLnByaXZzZXBdIFBBTStwcml2c2VwIHdvcmtzIHdpdGggU29sYXJpcyA4LgogLSAodGltKSBbc3NocHR5LmNdIHNldCB0dHkgbW9kZXMgd2hlbiBhbGxvY2F0aW5nIG9sZCBzdHlsZSBic2QgcHR5cyB0bwogICBtYXRjaCB3aGF0IG5ld2VyIHN0eWxlIHB0eXMgaGF2ZSB3aGVuIGFsbG9jYXRlZC4gQmFzZWQgb24gYSBwYXRjaCBieQogICBSb2dlciBDb3JuZWxpdXMgPHJhY0B0ZW56aW5nLm9yZz4KIC0gKHRpbSkgW1JFQURNRS5wcml2c2VwXSBVbml4V2FyZSA3IGFuZCBPcGVuVU5JWCA4IHdvcmsuCiAtICh0aW0pIFtSRUFETUUucHJpdnNlcF0gcmVtb3ZlIHJlZmVyZW5jZSB0byBVbml4V2FyZSA3IGFuZCBPcGVuVU5JWCA4CiAgIGZyb20gUEFNLWVuYWJsZWQgcHJhZ3JhcGguIFVuaXhXYXJlIGhhcyBubyBQQU0uCiAtICh0aW0pIFtjb250cmliL2NhbGRlcmEvb3BlbnNzaC5zcGVjXSB1cGRhdGUgdmVyc2lvbi4KCjIwMDIwNTEzCiAtIChzdGV2ZXNrKSBhZGQgaW5pdGlhbCBSRUFETUUucHJpdnNlcAogLSAoc3RldmVzaykgW2NvbmZpZ3VyZS5hY10gbmljZXIgbWVzc2FnZTogLS13aXRoLXByaXZzZXAtdXNlcj11c2VyCiAtIChkam0pIEFkZCAtLXdpdGgtc3VwZXJ1c2VyLXBhdGg9eHh4IGNvbmZpZ3VyZSBvcHRpb24gdG8gc3BlY2lmeSAKICAgd2hhdCAkUEFUSCB0aGUgc3VwZXJ1c2VyIHJlY2VpdmVzLgogLSAoZGptKSBCdWcgIzIzMTogVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiB0dXJucyBvZmYgQmFubmVyLgogLSAoZGptKSBBZGQgLS13aXRoLXByaXZzZXAtcGF0aCBjb25maWd1cmUgb3B0aW9uCiAtIChkam0pIFVwZGF0ZSBSUE0gc3BlYyBmaWxlOiBkaWZmZXJlbnQgc3VwZXJ1c2VyIHBhdGgsIHVzZQogICAvdmFyL2VtcHR5L3NzaGQgZm9yIHByaXZzZXAKIC0gKGRqbSkgQnVnICMyMzQ6IG1pc3NpbmcgcmVhZHBhc3NwaHJhc2UgZGVjbGFyYXRpb24gYW5kIGRlZmluZXMKIC0gKGRqbSkgQWRkIElOU1RBTEwgd2FybmluZyBhYm91dCBTU0ggcHJvdG9jb2wgMSBibG93ZmlzaCB3LyAKICAgIE9wZW5TU0wgPCAwLjkuNgoKMjAwMjA1MTEKIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gYXBwbGllZCBhIHJld29yayBvZiBkam0ncyBPcGVuU1NMIHNlYXJjaCBjbGVhbnVwIHBhdGNoLgogICBOb3cgb25seSBzZWFyY2hlcyBzeXN0ZW0gYW5kIC91c3IvbG9jYWwvc3NsIChPcGVuU1NMJ3MgZGVmYXVsdCBpbnN0YWxsIHBhdGgpCiAgIE90aGVycyBtdXN0IHVzZSAtLXdpdGgtc3NsLWRpcj0uLi4uCiAtICh0aW0pIFttb25pdG9yX2ZkcGFzcy5jXSBmaXggZm9yIHN5c3RlbXMgdGhhdCBoYXZlIGJvdGgKICAgSEFWRV9BQ0NSSUdIVFNfSU5fTVNHSERSIGFuZCBIQVZFX0NPTlRST0xfSU5fTVNHSERSLiBJZS4gc3lzL3NvY2tldC5oIAogICBoYXMgI2RlZmluZSBtc2dfYWNjcmlnaHRzIG1zZ19jb250cm9sCgoyMDAyMDUxMAogLSAoc3RldmVzaykgW2F1dGguY10gU2hhZG93IGFjY291bnQgYW5kIGV4cGlyYXRpb24gY2xlYW51cC4gIE5vdwogICBjaGVjayBmb3Igcm9vdCBmb3JjZWQgZXhwaXJlLiAgU3RpbGwgZG9uJ3QgY2hlY2sgZm9yIGluYWN0aXZlLgogLSAoZGptKSBSZXdvcmsgUmVkSGF0IFJQTSBmaWxlcy4gQmFzZWQgb24gc3BlYyBmcm9tIE5hbGluIAogICBEYWh5YWJoYWkgPG5hbGluQHJlZGhhdC5jb20+IGFuZCBwYXRjaGVzIGZyb20gCiAgIFBla2thIFNhdm9sYSA8cGVra2FzQG5ldGNvcmUuZmk+CiAtIChkam0pIFRyeSB0byBkcm9wIHN1cHBsZW1lbnRhbCBncm91cHMgYXQgZGFlbW9uIHN0YXJ0dXAuIFBhdGNoIGZyb20gCiAgIFJlZEhhdAogLSAoYmFsKSBCYWNrIGFsbCB0aGUgd2F5IG91dCBvZiBhdXRoLXBhc3N3ZC5jIGNoYW5nZXMuICBCcmVha3MgdG9vIG1hbnkKICAgdGhpbmdzIHRoYXQgZG9uJ3Qgc2V0IHB3LT5wd19wYXNzd2QuCgoyMDAyMDUwOQogLSAodGltKSBbTWFrZWZpbGUuaW5dIFVuYnJlYWsgbWFrZSAtZiBNYWtlZmlsZS5pbiBkaXN0cHJlcAoKMjAwMjA1MDgKIC0gKHRpbSkgW29wZW5ic2QtY29tcGF0L2JzZC1hcmM0cmFuZG9tLmNdIGZpeCBsb2dpYyBvbiB3aGVuIHNlZWRfcm5nKCkgaXMKICAgY2FsbGVkLiBSZXBvcnQgYnkgQ2hyaXMgTWF4d2VsbCA8bWF4d2VsbEBjcy5kYWwuY2E+CiAtICh0aW0pIFtNYWtlZmlsZS5pbiBjb25maWd1cmUuYWNdIHNldCBTSEVMTCB2YXJpYWJsZSBpbiBNYWtlZmlsZQogLSAoZGptKSBEaXNhYmxlIFBBTSBrYmQtaW50IGF1dGggaWYgcHJpdnNlcCBpcyB0dXJuZWQgb24gKGl0IGRvZXNuJ3Qgd29yaykKCjIwMDIwNTA3CiAtICh0aW0pIFtjb25maWd1cmUuYWMgb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuYyBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5oXQogICBBZGQgdHJ1bmNhdGUoKSBlbXVsYXRpb24gdG8gYWRkcmVzcyBCdWcgMjA4CgoyMDAyMDUwNgogLSAoZGptKSBVbmJyZWFrIGF1dGgtcGFzc3dkLmMgZm9yIFBBTSBhbmQgU0lBCiAtIChkam0pIFVuYnJlYWsgUEFNIGF1dGggZm9yIHByb3RvY29sIDEuIFJlcG9ydCBmcm9tIFBla2thIFNhdm9sYSAKICAgPHBla2thc0BuZXRjb3JlLmZpPgogLSAoZGptKSBEb24ndCByZWluaXRpYWxpc2UgUEFNIGNyZWRlbnRpYWxzIGJlZm9yZSB3ZSBoYXZlIHN0YXJ0ZWQgUEFNLgogICBSZXBvcnQgZnJvbSBQZWtrYSBTYXZvbGEgPHBla2thc0BuZXRjb3JlLmZpPgogICAKMjAwMjA1MDYKIC0gKGJhbCkgRml4ZWQgYXV0aC1wYXNzd2QuYyB0byByZXNvbHZlIFBlcm1pdEVtcHR5UGFzc3dvcmQgaXNzdWUKIAoyMDAyMDUwMQogLSAoZGptKSBJbXBvcnQgT3BlbkJTRCByZWdyZXNzaW9uIHRlc3RzLiBSZXF1aXJlcyBCU0QgbWFrZSB0byBydW4KIC0gKGRqbSkgRml4IHJlYWRwYXNzcGhhc2UgY29tcGlsYXRpb24gZm9yIHN5c3RlbXMgd2hpY2ggaGF2ZSBpdAoKMjAwMjA0MjkKIC0gKHRpbSkgW2NvbnRyaWIvY2FsZGVyYS9vcGVuc3NoLnNwZWNdIHVwZGF0ZSBmaXhVUCB0byByZWZsZWN0IGNoYW5nZXMgaW4KICAgc3NoZF9jb25maWcuCiAtICh0aW0pIFtjb250cmliL2N5Z3dpbi9SRUFETUVdIHJlbW92ZSByZWZlcmVuY2UgdG8gcmVnZXguCiAgIHBhdGNoIGZyb20gQ29yaW5uYSBWaW5zY2hlbiA8dmluc2NoZW5AcmVkaGF0LmNvbT4KCjIwMDIwNDI2CiAtIChkam0pIEJ1ZyAjMTM3LCAjMjA5OiBmaXggbWFrZSBwcm9ibGVtcyBmb3Igc2NhcmQvU3NoLmJpbiwgZG8gdXVkZWNvZGUKICAgZHVyaW5nIGRpc3RwcmVwIG9ubHkKIC0gKGRqbSkgRGlzYWJsZSBQQU0gcGFzc3dvcmQgZXhwaXJ5IHVudGlsIGEgY29tcGxldGUgZml4IGZvciBidWcgIzE4OCAKICAgZXhpc3RzCiAtIChkam0pIEJ1ZyAjMTgwOiBTZXQgVG9TIGJpdHMgb24gSVB2NC1pbi1JUHY2IG1hcHBlZCBhZGRyZXNzZXMuIEJhc2VkIG9uIAogICBwYXRjaCBmcm9tIG9wZW5zc2hAbWlzYy50ZWNxLm9yZwoKMjAwMjA0MjUKIC0gKHN0ZXZlc2spIFtkZWZpbmVzLmhdIHJlbW92ZSBVU0VfVElNRVZBTDsgdW51c2VkCiAtIChzdGV2ZXNrKSBbYWNjb25maWcuaCBhdXRoLXBhc3N3ZC5jIGNvbmZpZ3VyZS5hYyBzc2hkLmNdIEhQLVVYIDEwLjI2CiAgIHN1cHBvcnQuICBidWcgIzE4NC4gIG1vc3QgZnJvbSBkY29sZUBrZXlzb2Z0c3lzLmNvbS4KCjIwMDIwNDI0CiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDQvMjMgMTI6NTQ6MTAKICAgICBbdmVyc2lvbi5oXQogICAgIDMuMi4xCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA0LzIzIDIyOjE2OjI5CiAgICAgW3NzaGQuY10KICAgICBJbXByb3ZlIGVycm9yIG1lc3NhZ2U7IG9rIG1hcmt1c0Agc3RldmVza0AKCjIwMDIwNDIzCiAtIChzdGV2ZXNrKSBbYWNjb25maWcuaCBjb25maWd1cmUuYWMgc2Vzc2lvbi5jXSBMT0dJTl9OT19FTkRPUFQgZm9yIEhQLVVYCiAtIChzdGV2ZXNrKSBbYWNjb25maWcuaF0gTkVFRF9JTl9TWVNUTV9IIHVudXNlZAogLSAobWFya3VzKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA0LzIzIDEyOjU4OjI2CiAgICAgW3JhZGl4LmNdCiAgICAgc2VuZCBjb21wbGV0ZSB0aWNrZXQ7IHNlbWVyYWRAc3MxMDAwLm1zLm1mZi5jdW5pLmN6CiAtIChkam0pIFRyaW0gQ2hhbmdlTG9nIHRvIGluY2x1ZGUgb25seSBwb3N0LTMuMSBjaGFuZ2VzCiAtIChkam0pIFVwZGF0ZSBSUE0gc3BlYyBmaWxlIHZlcnNpb25zCiAtIChkam0pIFJlZGhhdCBzcGVjIGVuYWJsZXMgS3JiViBieSBkZWZhdWx0CiAtIChkam0pIEFwcGxpZWQgT3BlblNDIHNtYXJ0Y2FyZCB1cGRhdGVzIGZyb20gTWFya3VzICYgCiAgIEFudHRpIFRhcGFuaW5lbiA8YWV0QGNjLmh1dC5maT4KIC0gKGRqbSkgRGVmaW5lIEJST0tFTl9SRUFMUEFUSCBmb3IgQUlYLCBwYXRjaCBmcm9tIAogICBBbnR0aSBUYXBhbmluZW4gPGFldEBjYy5odXQuZmk+CiAtIChkam0pIEJ1ZyAjMjE0OiBGaXggdXRtcCBmb3IgSXJpeCAoZG9uJ3Qgc3RyaXAgInR0eSIpLiBQYXRjaCBmcm9tIAogICBLZXZpbiBUYXlsb3IgPG5vQG5vd2hlcmUub3JnPiAoPz8pIHZpYSBQaGlsaXBwIEdyYXUKICAgPHBoZ3JhdUB6ZWRhdC5mdS1iZXJsaW4uZGU+CiAtIChkam0pIEJ1ZyAjMjEzOiBTaW1wbGlmeSBDTVNHX0FMSUdOIG1hY3JvcyB0byBhdm9pZCBzeW1ib2wgY2xhc2hlcy4gCiAgIFJlcG9ydGVkIGJ5IERvdWcgTWFudG9uIDxkbWFudG9uQGVtZWEuYXR0LmNvbT4KIC0gKGRqbSkgQnVnICMyMjI6IEZpeCB0ZXN0cyBmb3IgZ2V0YWRkcmluZm8gb24gT1NGLzEuIFNwb3R0ZWQgYnkKICAgUm9iZXJ0IFVyYmFuIDx1cmJhbkBzcGllbHdpZXNlLmRlPgogLSAoZGptKSBCdWcgIzIwNiAtIGJsaWJwYXRoIGlzbid0IGFsd2F5cyBuZWVkZWQgZm9yIEFJWCBsZCwgYXZvaWQgCiAgIHNpemVvZihsb25nIGxvbmcgaW50KSA9PSA0IGJyZWFrYWdlLiBQYXRjaCBmcm9tIE1hdHRoZXcgQ2xhcmtlCiAgIDxNYXR0aGV3X0NsYXJrZUBtaW5kbGluay5iYy5jYT4KIC0gKGRqbSkgTWFrZSBwcml2c2VwIHdvcmsgd2l0aCBQQU0gKHN0aWxsIGV4cGVyaW1lbnRhbCkKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDQvMjAgMDk6MDI6MDMKICAgICBbc2VydmNvbmYuY10KICAgICBObywgYWZzIHJlcXVpcmVzIGV4cGxpY2l0IGVuYWJsaW5nCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA0LzIwIDA5OjE0OjU4CiAgICAgW2J1ZmF1eC5jIGJ1ZmF1eC5oXQogICAgIGFkZCBidWZmZXJfe2dldCxwdXR9X3Nob3J0CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA0LzIwIDA5OjE3OjE5CiAgICAgW3JhZGl4LmNdCiAgICAgcmV3cml0ZSB1c2luZyB0aGUgYnVmZmVyXyogQVBJLCBmaXhlcyBvdmVyZmxvdzsgb2sgZGVyYWFkdEAKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA0LzIxIDE2OjE5OjI3CiAgICAgW3NzaGQuOCBzc2hkX2NvbmZpZ10KICAgICBkb2N1bWVudCBkZWZhdWx0IEFGU1Rva2VuUGFzc2luZyBubzsgb2sgZGVyYWFkdEAKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA0LzIxIDE2OjI1OjA2CiAgICAgW3NzaGNvbm5lY3QxLmNdCiAgICAgc3BlbGxpbmcgaW4gZXJyb3IgbWVzc2FnZTsgb2sgbWFya3VzQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNC8yMiAwNjoxNTo0NwogICAgIFtyYWRpeC5jXQogICAgIGZpeCBjaGVjayBmb3Igb3ZlcmZsb3cKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDQvMjIgMTY6MTY6NTMKICAgICBbc2VydmNvbmYuYyBzc2hkLjggc3NoZF9jb25maWddCiAgICAgZG8gbm90IGF1dG8tZW5hYmxlIEtlcmJlcm9zQXV0aGVudGljYXRpb247IG9rIGRqbUAsIHByb3Zvc0AsIGRlcmFhZHRACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA0LzIyIDIxOjA0OjUyCiAgICAgW2NoYW5uZWxzLmMgY2xpZW50bG9vcC5jIGNsaWVudGxvb3AuaCBzc2guY10KICAgICByZXF1ZXN0IHJlcGx5IChzdWNjZXNzL2ZhaWx1cmUpIGZvciAtUiBzdHlsZSBmd2QgaW4gcHJvdG9jb2wgdjIsCiAgICAgZGVwZW5kcyBvbiBvcmRlcmVkIHJlcGxpZXMuCiAgICAgZml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1pbmRyb3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU7IG9rIHByb3Zvc0AKCjIwMDIwNDIxCiAtICh0aW0pIFtlbnRyb3B5LmMuXSBQb3J0YWJpbGl0eSBmaXggZm9yIFNDTyBVbml4IDMuMnY0LnggKFNDTyBPU1IgMy4wKS4KICAgZW50cm9weS5jIG5lZWRzIHNldGV1aWQoZ2V0dWlkKCkpIGZvciB0aGUgc2V0dWlkKG9yaWdpbmFsX3VpZCkgdG8gCiAgIHN1Y2NlZWQuIFBhdGNoIGJ5IGdlcnRAZ3JlZW5pZS5tdWMuZGUuIFRoaXMgZml4ZXMgb25lIHBhcnQgb2YgQnVnIDIwOAoKMjAwMjA0MTgKIC0gKGRqbSkgQXZvaWQgU0lHQ0hMRCBicmVha2FnZSB3aGVuIHJ1biBmcm9tIHJzeW5jLiBGaXggZnJvbSAKICAgU3R1cmxlIFN1bmRlIDxzdHVybGUuc3VuZGVAdXNpdC51aW8ubm8+CgoyMDAyMDQxNwogLSAoZGptKSBUZWxsIHVzZXJzIHRvIGNvbmZpZ3VyZSAvZGV2L3JhbmRvbSBzdXBwb3J0IGludG8gT3BlblNTTCBpbiAKICAgSU5TVEFMTAogLSAoZGptKSBGaXggLk5tIGluIG1kb2MybWFuLnBsIGZyb20gcHNwZW5jZXJAZmllbGRzLnV0b3JvbnRvLmNhCiAtICh0aW0pIFtjb25maWd1cmUuYWNdIElzc3VlIHdhcm5pbmcgb24gLS13aXRoLWRlZmF1bHQtcGF0aD0vc29tZV9wYXRoCiAgIGlmIExPR0lOX0NBUCBpcyBlbmFibGVkLiBSZXBvcnQgJiB0ZXN0aW5nIGJ5IFR1YyA8dHVjQHR0c2cuY29tPgoKMjAwMjA0MTUKIC0gKGRqbSkgVW5icmVhayAibWFrZSBpbnN0YWxsIi4gRml4IGZyb20gRGFycmVuIFR1Y2tlciAKICAgPGR0dWNrZXJAemlwLmNvbS5hdT4KIC0gKHN0ZXZlc2spIGJzZC1jeWd3aW5fdXRpbC5bY2hdIEJTRCBsaWNlbnNlIGZyb20gQ29yaW5uYSBWaW5zY2hlbgogLSAodGltKSBbY29uZmlndXJlLmFjXSBhZGQgdGVzdHMgZm9yIHJlY3Ztc2cgYW5kIHNlbmRtc2cuCiAgIFttb25pdG9yX2ZkcGFzcy5jXSBhZGQgY2hlY2tzIGZvciBIQVZFX1NFTkRNU0cgYW5kIEhBVkVfUkVDVk1TRyBmb3IKICAgc3lzdGVtcyB0aGF0IEhBVkVfQUNDUklHSFRTX0lOX01TR0hEUiBidXQgbm8gcmVjdm1zZyBvciBzZW5kbXNnLgoKMjAwMjA0MTQKIC0gKGRqbSkgc3NoLXJhbmQtaGVscGVyIGltcHJvdmVtZW50cwogICAtIEFkZCBjb21tYW5kbGluZSBkZWJ1Z2dpbmcgb3B0aW9ucwogICAtIERvbid0IHdyaXRlIGJpbmFyeSBkYXRhIGlmIHN0ZG91dCBpcyBhIHR0eSAodXNlIGhleCBpbnN0ZWFkKQogICAtIEdpdmUgaXQgYSBtYW5wYWdlCiAtIChkam0pIFJhbmRvbSBudW1iZXIgY29sbGVjdGlvbiBkb2MgZml4ZXMgZnJvbSBCZW4KCjIwMDIwNDEzCiAtIChkam0pIEFkZCBLcmJWIHN1cHBvcnQgcGF0Y2ggZnJvbSBTaW1vbiBXaWxraW5zb24gPHNpbW9uQHN4dy5vcmcudWs+CgoyMDAyMDQxMgogLSAoc3RldmVzaykgW2F1dGgtc2lhLltjaF1dIGFkZCBCU0QgbGljZW5zZSBmcm9tIENocmlzIEFkYW1zCiAtICh0aW0pIFtjb25maWd1cmUuYWNdIGFkZCA8c3lzL3R5cGVzLmg+IHRvIG1zZ2hkciB0ZXN0cy4gQ2hhbmdlIC1MCiAgIHRvIC1oIG9uIHRlc3RpbmcgZm9yIC9iaW4gYmVpbmcgc3ltYm9saWMgbGluawogLSAoYmFsKSBNaXN0YWtlbiBpbiBDeWd3aW4gc2NyaXB0cyBmb3Igc3NoIHN0YXJ0aW5nLiAgUGF0Y2ggYnkKICAgQ29yaW5uYSBWaW5zY2hlbiA8dmluc2NoZW5AcmVkaGF0LmNvbT4gCiAtIChiYWwpIGRpc2FibGUgcHJpdnNlcCBpZiBubyBNQVBfQU5PTi4gIFdlIGNhbiByZS1lbmFibGUgaXQKICAgYWZ0ZXIgdGhlIHJlbGVhc2Ugd2hlbiB3ZSBjYW4gZG8gbW9yZSB0ZXN0aW5nLgoKMjAwMjA0MTEKIC0gKHN0ZXZlc2spIFthdXRoLXNpYS5jXSBjbGVhbnVwCiAtICh0aW0pIFthY2NvbmZpZy5oIGRlZmluZXMuaCBpbmNsdWRlcy5oXSBwdXQgaW5jbHVkZXMgaW4gaW5jbHVkZXMuaCBhbmQKICAgZGVmaW5lcyBpbiBkZWZpbmVzLmggW3Jpam5kYWVsLmMgb3BlbmJzZC1jb21wYXQvZmFrZS1zb2NrZXQuaAogICBvcGVuYnNkLWNvbXBhdC9pbmV0X2F0b24uY10gaW5jbHVkZSAiaW5jbHVkZXMuaCIgaW5zdGVhZCBvZiAiY29uZmlnLmgiCiAgIG9rIHN0ZXZlc2tACgoyMDAyMDQxMAogLSAoc3RldmVzaykgW2NvbmZpZ3VyZS5hYyBtb25pdG9yLmNdIEhBVkVfU09DS0VUUEFJUgogLSAoc3RldmVzaykgW2F1dGgtc2lhLmNdIGNvbXBpbGUgZml4IENocmlzIEFkYW1zIDxjbWFkYW1zQGhpd2FheS5uZXQ+CiAtIChiYWwpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDQvMTAgMDg6MjE6NDcKICAgICBbYXV0aDEuYyBjb21wYXQuYyBjb21wYXQuaF0KICAgICBzdHJpcCAnQCcgZnJvbSB1c2VybmFtZSBvbmx5IGZvciBLZXJiViBhbmQga25vd24gYnJva2VuIGNsaWVudHMsIAogICAgIGJ1ZyAjMjA0CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA0LzEwIDA4OjU2OjAxCiAgICAgW3ZlcnNpb24uaF0KICAgICBPcGVuU1NIXzMuMgogLSBBZGRlZCBwMSB0byBpZGVuaWZ5IFBvcnRhYmxlIHJlbGVhc2UgdmVyc2lvbi4KCjIwMDIwNDA4CiAtIChiYWwpIE1pbm9yIE9wZW5TQyB1cGRhdGVzLiAgRml4IHVwIGhlYWRlciBsb2NhdGlvbnMgYW5kIHVwZGF0ZQogICBSRUFETUUuc21hcnRjYXJkIHByb3ZpZGVkIGJ5IEp1aGEgWXJq9mzkIDxqeXJqb2xhQGNjLmh1dC5maT4KCjIwMDIwNDA3CiAtIChzdGV2ZXNrKSBIQVZFX0NPTlRST0xfSU5fTVNHSERSOyBub3QgdXNlZCByaWdodCBub3cuCiAgIEZ1dHVyZTogd2UgbWF5IHdhbnQgdG8gdGVzdCBpZiBmZCBwYXNzaW5nIHdvcmtzIGNvcnJlY3RseS4KIC0gKHN0ZXZlc2spIFttb25pdG9yX2ZkcGFzcy5jXSBmYXRhbCgpIGZvciBVc2VQcml2aWxlZ2VTZXBhcmF0aW9uPXllcwogICBhbmQgbm8gZmQgcGFzc2luZyBzdXBwb3J0LgogLSAoc3RldmVzaykgSEFWRV9NTUFQIGFuZCBIQVZFX1NZU19NTUFOX0ggYW5kIHVzZSB0aGVtIGluCiAgIG1vbml0b3JfbW0uYwogLSAoc3RldmVzaykgcmVtb3ZlIGNvbmZpZ3VyZSBzdXBwb3J0IGZvciBwb2xsLmg7IGl0IHdhcyByZW1vdmVkCiAgIGZyb20gc3NoZC5jIGEgbG9uZyB0aW1lIGFnby4KIC0gKHN0ZXZlc2spIC0td2l0aC1wcml2c2VwLXVzZXI7IGRlZmF1bHQgc3NoZAogLSAoc3RldmVzaykgd3JhcCBtdW5tYXAoKSB3aXRoIEhBVkVfTU1BUCBhbHNvLgoKMjAwMjA0MDYKIC0gKGRqbSkgVHlwbyBpbiBTdXNlIFNQRUMgZmlsZS4gRml4IGZyb20gQ2Fyc3RlbiBHcm9obWFubiAKICAgPGNhcnN0ZW4uZ3JvaG1hbm5AZHItYmFsZGV3ZWcuZGU+CiAtIChiYWwpIEFkZGVkIE1BUF9GQUlMRUQgdG8gYWxsb3cgQUlYIGFuZCBUcnVzdGVkIEhQIHRvIGNvbXBpbGUuCiAtIChiYWwpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDQvMDYgMDA6MzA6MDgKICAgICBbc2Z0cC1jbGllbnQuY10KICAgICBGaXggb2NjYXNpb25hbCBjb3JydXB0aW9uIG9uIHVwbG9hZCBkdWUgdG8gYmFkIHJldXNlIG9mIHJlcXVlc3QgCiAgICAgaWQsIHNwb3R0ZWQgYnkgY2hvbWJpZXJAbWFjLmNvbTsgb2sgbWFya3VzQAogICAtIG1vdXJpbmdAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDQvMDYgMTg6MjQ6MDkKICAgICBbc2NwLmNdCiAgICAgRml4ZXMgcG90ZW50YWwgZG91YmxlIC8vIHdpdGhpbiBwYXRoLgogICAgIGh0dHA6Ly9idWd6aWxsYS5taW5kcm90Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYKIC0gKGJhbCkgU2xpZ2h0IHVwZGF0ZSB0byBPcGVuU0Mgc3VwcG9ydC4gIEJldHRlciB2ZXJzaW9uIGNoZWNraW5nLiBwYXRjaAogICBieSBKdWhhIFlyavZs5CA8anlyam9sYUBjYy5odXQuZmk+IAogLSAoYmFsKSBSZXZlcmVkIG91dCBvZiBydW50aW1lIElSSVggZGV0ZWN0aW9uIG9mIGpvYmxpbWl0cy4gIENvZGUgaXMKICAgaW5jb21wbGV0ZS4KIC0gKGJhbCkgUXVpZXQgZG93biBjb25maWd1cmUuYWMgaWYgL2Jpbi90ZXN0IGRvZXMgbm90IGV4aXN0LgogLSAoYmFsKSBXZSBubyBsb25nZXIgdXNlIGF0ZXhpdCgpL3hhdGV4aXQoKS9vbl9leGl0KCkKCjIwMDIwNDA1CiAtIChiYWwpIFBhdGNoIGZvciBPcGVuU0MgU21hcnRDYXJkIGxpYnJhcnk7IG9rIG1hcmt1c0A7IHBhdGNoIGJ5CiAgIEp1aGEgWXJq9mzkIDxqeXJqb2xhQGNjLmh1dC5maT4KIC0gKGJhbCkgTWlub3IgZG9jdW1lbnRhdGlvbiB1cGRhdGUgdG8gcmVmbGVjdCBzbWFydGNhcmQgbGlicmFyeQogICBzdXBwb3J0IGNoYW5nZXMuCiAtIChiYWwpIFRvbyBtYW55IDxzeXMvcXVldWUuaD4gaXNzdWVzLiAgUmVtb3ZlIGFsbCB3b3JrYXJvdW5kcyBhbmQKICAgdXNpbmcgaW50ZXJuYWwgdmVyc2lvbiBvbmx5LgogLSAoYmFsKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNC8wNSAyMDo1NjoyMQogICAgIFtzc2hkLjhdCiAgICAgY2xhcmlmeSBzc2hyYyBzb21lIGFuZCBoYW5kbGUgWDExVXNlTG9jYWxob3N0PXllczsgb2sgbWFya3VzQAoKMjAwMjA0MDQKIC0gKHN0ZXZlc2spIFthdXRoLXBhbS5jIGF1dGgtcGFtLmggYXV0aC1wYXNzd2QuYyBhdXRoLXNpYS5jIGF1dGgtc2lhLmgKICAgIGF1dGgxLmMgYXV0aDIuY10gUEFNLCBPU0ZfU0lBIHBhc3N3b3JkIGF1dGggY2xlYW51cDsgZnJvbSBkam0uCiAtIChiYWwpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDQvMDMgMDk6MjY6MTEKICAgICBbY2lwaGVyLmMgbXlwcm9wb3NhbC5oXQogICAgIHJlLWFkZCByaWpuZGFlbC1jYmNAbHlzYXRvci5saXUuc2UgZm9yIE1hY1NTSDsgYXNoQGxhYi5wb2MubmV0CgoyMDAyMDQwMgogLSAoYmFsKSBIYW5kIFN5bmMgb2Ygc2NwLmMgKHJldmVydGVkIHRvIHVwc3RyZWFtIGNvZGUpCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8zMCAxNzo0NTo0NgogICAgIFtzY3AuY10KICAgICBzdHJldGNoIGJhbm5lcnMKIC0gKGJhbCkgQ1ZTIElEIHN5bmMgb2YgdWlkc3dhcC5jCiAtIChiYWwpIE9wZW5CU0QgQ1ZTIFN5bmMgKG5vdyBmb3IgdGhlIHJlYWwgc3luYykKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjcgMjI6MjE6NDUKICAgICBbc3NoLWtleWdlbi5jXQogICAgIHRyeSB0byBpbXBvcnQga2V5cyB3aXRoIGV4dHJhIHRyYWlsaW5nID09PSAoc2VlbiB3aXRoIHNzaC5jb20gPCAKICAgICAyLjAuMTIpCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI4IDE1OjM0OjUxCiAgICAgW3Nlc3Npb24uY10KICAgICBkbyBub3QgY2FsbCByZWNvcmRfbG9naW4gdHdpY2UgKGZvciB1c2VfcHJpdnNlcCkKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjkgMTg6NTk6MzIKICAgICBbc2Vzc2lvbi5jIHNlc3Npb24uaF0KICAgICByZXRyaWV2ZSBsYXN0IGxvZ2luIHRpbWUgYmVmb3JlIHRoZSBwdHkgaXMgYWxsb2NhdGVkLCBzdG9yZSBwZXIgCiAgICAgc2Vzc2lvbgogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjkgMTk6MTY6MjIKICAgICBbc3NoZC44XQogICAgIFJTQSBrZXkgbW9kdWx1cyBzaXplIG1pbmltdW0gNzY4OyBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yOSAxOToxODozMwogICAgIFthdXRoLXJzYS5jIHNzaC1yc2EuYyBzc2guaF0KICAgICBtYWtlIFJTQSBtb2R1bHVzIG1pbmltdW0gI2RlZmluZTsgb2sgbWFya3VzQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8zMCAxODo1MToxNQogICAgIFttb25pdG9yLmMgc2VydmVybG9vcC5jIHNmdHAtaW50LmMgc2Z0cC5jIHNzaGQuY10KICAgICBjaGVjayB3YWl0cGlkIGZvciBFSU5UUjsgYmFzZWQgb24gcGF0Y2ggZnJvbSBwZXRlckBpZm0ubGl1LnNlCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzA0LzAxIDIyOjAyOjE2CiAgICAgW3NmdHAtY2xpZW50LmNdCiAgICAgMjA0ODAgaXMgYW4gdXBwZXIgbGltaXQgZm9yIG9sZGVyIHNlcnZlcgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNC8wMSAyMjowNzoxNwogICAgIFtzZnRwLWNsaWVudC5jXQogICAgIGZhbGxiYWNrIHRvIHN0YXQgaWYgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgbHN0YXQKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDQvMDIgMTE6NDk6MzkKICAgICBbc3NoLWFnZW50LmNdCiAgICAgY2hlY2sgJFNIRUxMIGZvciAtayBhbmQgLWQsIHRvbzsKICAgICBodHRwOi8vYnVnemlsbGEubWluZHJvdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNC8wMiAxNzozNzo0OAogICAgIFtzZnRwLmNdCiAgICAgYWx3YXlzIGNhbGwgbG9nX2luaXQoKQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wNC8wMiAyMDoxMTozOAogICAgIFtzc2gtcnNhLmNdCiAgICAgaWdub3JlIFNTSF9CVUdfU0lHQkxPQiBmb3Igc3NoLXJzYTsgIzE4NwogLSAoYmFsKSBtaXNwZWxsaW5nIGluIHVpZHN3YXAuYyAocG9ydGFibGUgb25seSkKCjIwMDIwNDAxCiAtIChzdGV2ZXNrKSBbbW9uaXRvci5jXSBQQU0gc2hvdWxkIHdvcmsgYWdhaW47IHdpbGwgKm5vdCogd29yayB3aXRoCiAgIFVzZVByaXZpbGVnZVNlcGFyYXRpb249eWVzLgogLSAoc3RldmVzaykgW2F1dGgxLmNdIGZpeCBwYXNzd29yZCBhdXRoIGZvciBwcm90b2NvbCAxIHdoZW4KICAgIVVTRV9QQU0gJiYgIUhBVkVfT1NGX1NJQTsgbWVyZ2UgaXNzdWUuCgoyMDAyMDMzMQogLSAodGltKSBbY29uZmlndXJlLmFjXSB1c2UgL2Jpbi90ZXN0IC1MIHRvIHdvcmsgYXJvdW5kIGJyb2tlbiBidWlsdGluIG9uCiAgIFNvbGFyaXMgOAogLSAodGltKSBbc3NoY29ubmVjdDIuY10gY2hhbmdlIHVpbnQzMl90IHRvIHVfaW50MzJfdAoKMjAwMjAzMzAKIC0gKHN0ZXZlc2spIFtjb25maWd1cmUuYWNdIHJlbW92ZSBoZWFkZXIgY2hlY2sgZm9yIHN5cy90dGNvbXBhdC5oCiAgIGJ1ZyAxNjcKCjIwMDIwMzI3CiAtIChiYWwpICdwdycgc2hvdWxkIGJlICdhdXRoY3R4dC0+cHcnIGluIGF1dGgxLmMgc3BvdHRlZCBieSAKICAga2VudEBseXNhdG9yLmxpdS5zZQogLSAoYmFsKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI2IDExOjM0OjQ5CiAgICAgW3NzaC4xIHNzaGQuOF0KICAgICB1cGRhdGUgdG8gcmVjZW50IGRyYWZ0cwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yNiAxMTozNzowNQogICAgIFtzc2guY10KICAgICB1cGRhdGUgQ29weXJpZ2h0CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI2IDE1OjIzOjQwCiAgICAgW2J1ZmF1eC5jXQogICAgIGRvIG5vdCB0YWxrIGFib3V0IHBhY2tldHMgaW4gYnVmYXV4CiAgIC0gcmVlc0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yNiAxODo0Njo1OQogICAgIFtzY2FyZC5jXQogICAgIHRyeV9BVVQwIGluIHJlYWRfcHVia2V5IHRvbywgZm9yIHRob3NlIHBhcmFub2lkIGZldyB3aG8gd2FudCB0byAKICAgICBhY2wgJ3NoJwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yNiAyMjo1MDozOQogICAgIFtjaGFubmVscy5oXQogICAgIENIQU5ORUxfRUZEX09VVFBVVF9BQ1RJVkUgaXMgZmFsc2UgZm9yIENIQU5fQ0xPU0VfUkNWRCwgdG9vCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI2IDIzOjEzOjAzCiAgICAgW2F1dGgtcnNhLmNdCiAgICAgZGlzYWxsb3cgUlNBIGtleXMgPCA3NjggZm9yIHByb3RvY29sIDEsIHRvbyAocmhvc3RzLXJzYSBhbmQgcnNhIGF1dGgpCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI2IDIzOjE0OjUxCiAgICAgW2tleC5jXQogICAgIGdlbmVyYXRlIGEgbmV3IGNvb2tpZSBmb3IgZWFjaCBTU0gyX01TR19LRVhJTklUIG1lc3NhZ2Ugd2Ugc2VuZCBvdXQKICAgLSBtb3VyaW5nQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI3IDExOjQ1OjQyCiAgICAgW21vbml0b3IuY10KICAgICBtb25pdG9yX2FsbG93ZWRfa2V5KCkgcmV0dXJucyBpbnQgaW5zdGVhZCBvZiBwb2ludGVyLiAgb2sgbWFya3VzQAogIAoyMDAyMDMyNQogLSAoc3RldmVzaykgaW1wb3J0IE9wZW5CU0QgPHN5cy90cmVlLmg+IGFzICJvcGVuYnNkLWNvbXBhdC90cmVlLmgiCiAtIChiYWwpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzIzIDIwOjU3OjI2CiAgICAgW3NzaGQuY10KICAgICBzZXRwcm9jdGl0bGUoKSBhZnRlciBwcmVhdXRoIGNoaWxkOyBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI0IDE2OjAwOjI3CiAgICAgW3NlcnZlcmxvb3AuY10KICAgICByZW1vdmUgdW51c2VkIGRlYnVnCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI0IDE2OjAxOjEzCiAgICAgW3BhY2tldC5jXQogICAgIGRlYnVnLT5kZWJ1ZzMgZm9yIGV4dHJhIHBhZGRpbmcKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI0IDE3OjI3OjAzCiAgICAgW2tleGdleC5jXQogICAgIHR5cG87IG9rIG1hcmt1c0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI0IDE3OjUzOjE2CiAgICAgW21vbml0b3JfZmRwYXNzLmNdCiAgICAgbWlub3IgY2xlYW51cCBhbmQgbW9yZSBlcnJvciBjaGVja2luZzsgb2sgbWFya3VzQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yNCAxODowNToyOQogICAgIFtzY2FyZC5jXQogICAgIHdlIG5lZWQgdG8gZmlndXJlIG91dCBBVVQwIGZvciBzY19wcml2YXRlX2VuY3J5cHQsIHRvbwogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjQgMjM6MjA6MDAKICAgICBbbW9uaXRvci5jXQogICAgIHJlbW92ZSAiXG4iIGZyb20gZmF0YWwoKQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yNSAwOToyMToxMwogICAgIFthdXRoLXJzYS5jXQogICAgIHJldHVybiAwIChub3QgTlVMTCk7IHRvbWhAcG8uY3JsLmdvLmpwCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI1IDA5OjI1OjA2CiAgICAgW2F1dGgtcmgtcnNhLmNdCiAgICAgcm0gYm9ndXMgY29tbWVudAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yNSAxNzozNDoyNwogICAgIFtzY2FyZC5jIHNjYXJkLmggc3NoLWFnZW50LmMgc3NoLWtleWdlbi5jIHNzaC5jXQogICAgIGNoYW5nZSBzY19nZXRfa2V5IHRvIHNjX2dldF9rZXlzIGFuZCBoaWRlIHNtYXJ0Y2FyZCBkZXRhaWxzIGluIHNjYXJkLmMKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI1IDIwOjEyOjEwCiAgICAgW21vbml0b3JfbW0uYyBtb25pdG9yX3dyYXAuY10KICAgICBzc2l6ZV90IGFyZ3MgdXNlICIlbGQiIGFuZCBjYXN0IHRvIChsb25nKQogICAgIHNpemVfdCBhcmdzIHVzZSAiJWx1IiBhbmQgY2FzdCB0byAodV9sb25nKQogICAgIG9rIG1hcmt1c0AgYW5kIHRoYW5rcyBtaWxsZXJ0QAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yNSAyMTowNDowMgogICAgIFtzc2guY10KICAgICBzaW1wbGlmeSBudW1faWRlbnRpdHlfZmlsZXMgaGFuZGxpbmcKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjUgMjE6MTM6NTEKICAgICBbY2hhbm5lbHMuYyBjaGFubmVscy5oIGNvbXBhdC5jIGNvbXBhdC5oIG5jaGFuLmNdCiAgICAgZG9uJ3Qgc2VuZCBzdGRlcnIgZGF0YSBhZnRlciBFT0YsIGFjY2VwdCB0aGlzIGZyb20gb2xkZXIga25vd24gCiAgICAgKGJyb2tlbikgc3NoZCBzZXJ2ZXJzIG9ubHksIGZpeGVzCiAgICAgaHR0cDovL2J1Z3ppbGxhLm1pbmRyb3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzI2IDAzOjI0OjAxCiAgICAgW21vbml0b3IuaCBtb25pdG9yX2ZkcGFzcy5oIG1vbml0b3JfbW0uaCBtb25pdG9yX3dyYXAuaF0KICAgICAkT3BlbkJTRCQKCjIwMDIwMzI0CiAtIChzdGV2ZXNrKSBbc2Vzc2lvbi5jXSBkaXNhYmxlIExPR0lOX05FRURTX1RFUk0gdW50aWwgd2UgYXJlIHN1cmUKICAgaXQgY2FuIGJlIHJlbW92ZWQuIG9ubHkgdXNlZCBvbiBzb2xhcmlzLiB3aWxsIG5vIGxvbmdlciBjb21waWxlIHdpdGgKICAgcHJpdnNlcCBzaHVmZmxpbmcuCgoyMDAyMDMyMgogLSAoc3RldmVzaykgSEFWRV9BQ0NSSUdIVFNfSU5fTVNHSERSIGNvbmZpZ3VyZSBzdXBwb3J0CiAtIChzdGV2ZXNrKSBbbW9uaXRvci5jIG1vbml0b3Jfd3JhcC5jXSAjaWZkZWYgSEFWRV9QV19DTEFTU19JTl9QQVNTV0QKIC0gKHN0ZXZlc2spIGNvbmZpZ3VyZSBhbmQgY3BwIF9fRlVOQ1RJT05fXyBneW1uYXN0aWNzIHRvIGhhbmRsZSBuaWVsc2lzbXMKIC0gKHN0ZXZlc2spIFttb25pdG9yX2ZkcGFzcy5jXSBzdXBwb3J0IGZvciBhY2Nlc3MgcmlnaHRzIHN0eWxlIGZpbGUKICAgZGVzY3JpcHRvciBwYXNzaW5nCiAtIChzdGV2ZXNrKSBbYXV0aDIuY10gbWVyZ2UgY2xlYW51cC9zeW5jCiAtIChzdGV2ZXNrKSBbZGVmaW5lcy5oXSBocC11eCAxMSBoYXMgYW5jaWxsYXJ5IGRhdGEgc3R5bGUgZmQgcGFzc2luZywgYnV0CiAgIGlzIG1pc3NpbmcgQ01TR19MRU4oKSBhbmQgQ01TR19TUEFDRSgpIG1hY3Jvcy4KIC0gKHN0ZXZlc2spIFtkZWZpbmVzLmhdICNkZWZpbmUgTUFQX0FOT04gTUFQX0FOT05ZTU9VUyBmb3IgSFAtVVg7IG90aGVyCiAgIHBsYXRmb3JtcyBtYXkgbmVlZCB0aGlzLS1JJ20gbm90IHN1cmUuICBtbWFwKCkgaXNzdWVzIHdpbGwgbmVlZCB0byBiZQogICBhZGRyZXNzZWQgZnVydGhlci4KIC0gKHRpbSkgW2NpcGhlci5jXSBmaXggcHJvYmxlbSB3aXRoIE9wZW5CU0Qgc3luYwogLSAoc3RldmVzaykgW0xJQ0VOQ0VdIE9wZW5CU0Qgc3luYwoKMjAwMjAzMjEKIC0gKGJhbCkgT3BlbkJTRCBDVlMgU3luYwogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8wOCAwNjoxMDoxNgogICAgIFtzZnRwLWNsaWVudC5jXQogICAgIHByaW50ZiB0eXBlIG1pc21hdGNoCiAgIC0gaXRvanVuQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzExIDAzOjE4OjQ5CiAgICAgW3NmdHAtY2xpZW50LmNdCiAgICAgY29ycmVjdCB0eXBlIG1pc21hdGNoZXMgKHVfaW50NjRfdCAhPSB1bnNpZ25lZCBsb25nIGxvbmcpCiAgIC0gaXRvanVuQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzExIDAzOjE5OjUzCiAgICAgW3NmdHAtY2xpZW50LmNdCiAgICAgaW5kZW50CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzE0IDE1OjI0OjI3CiAgICAgW3NzaGNvbm5lY3QxLmNdCiAgICAgZG9uJ3QgdHJ1c3Qgc2l6ZSBzZW50IGJ5IChyb2d1ZSkgc2VydmVyOyBub3RlZCBieSAKICAgICBzLmVzc2VyQGUtbWF0dGVycy5kZQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8xNCAxNjozODoyNgogICAgIFtzc2hkLmNdCiAgICAgc3BsaXQgb3V0IHNzaDEgc2Vzc2lvbiBrZXkgZGVjcnlwdGlvbjsgb2sgcHJvdm9zQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8xNCAxNjo1NjozMwogICAgIFthdXRoLXJoLXJzYS5jIGF1dGgtcnNhLmMgYXV0aC5oXQogICAgIHNwbGl0IGF1dGhfcnNhKCkgZm9yIGJldHRlciByZWFkYWJpbGl0eSBhbmQgcHJpdnNlcDsgb2sgcHJvdm9zQAogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8xNSAxMTowMDozOAogICAgIFthdXRoLmNdCiAgICAgZml4IGZpbGUgdHlwZSBjaGVja2luZyAodXNlIFNfSVNSRUcpLiAgb2sgYnkgbWFya3VzCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzE2IDExOjI0OjUzCiAgICAgW2NvbXByZXNzLmNdCiAgICAgc2tpcCBpbmZsYXRlRW5kIGlmIGluZmxhdGUgZmFpbHM7IG9rIHByb3Zvc0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTYgMTc6MjI6MDkKICAgICBbYXV0aC1yaC1yc2EuYyBhdXRoLmhdCiAgICAgc3BsaXQgYXV0aF9yaG9zdHNfcnNhKCksIG9rIHByb3Zvc0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzE2IDE3OjQxOjI1CiAgICAgW2F1dGgta3JiNS5jXQogICAgIEJTRCBsaWNlbnNlLiAgZnJvbSBEYW5pZWwgS291cmlsIHZpYSBEdWcgU29uZy4gIG9rIG1hcmt1c0AKICAgLSBwcm92b3NAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTcgMjA6MjU6NTYKICAgICBbYXV0aC5jIGF1dGguaCBhdXRoMS5jIGF1dGgyLmNdCiAgICAgZ2V0cHduYW1hbGxvdyByZXR1cm5zIHN0cnVjdCBwYXNzd2QgKiBvbmx5IGlmIHVzZXIgdmFsaWQ7IAogICAgIG9rYXkgbWFya3VzQAogICAtIHByb3Zvc0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8xOCAwMToxMjoxNAogICAgIFthdXRoLmggYXV0aDEuYyBhdXRoMi5jIHNzaGQuY10KICAgICBoYXZlIHRoZSBhdXRoZW50aWNhdGlvbiBmdW5jdGlvbnMgcmV0dXJuIHRoZSBhdXRoZW50aWNhdGlvbiBjb250ZXh0CiAgICAgYW5kIHRoZW4gZG9fYXV0aGVudGljYXRlZDsgb2theSBtaWxsZXJ0QAogICAtIGR1Z3NvbmdAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTggMDE6MzA6MTAKICAgICBbYXV0aC1rcmI0LmNdCiAgICAgc2V0IGNsaWVudCB0byBOVUxMIGFmdGVyIHhmcmVlKCksIGZyb20gUm9sZiBCcmF1biAKICAgICA8cmJyYXVuK3NzaEBhbmRyZXcuY211LmVkdT4KICAgLSBwcm92b3NAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTggMDM6NDE6MDgKICAgICBbYXV0aC5jIHNlc3Npb24uY10KICAgICBtb3ZlIGF1dGhfYXBwcm92YWwgaW50byBnZXRwd25hbWFsbG93IHdpdGggaGVscCBmcm9tIG1pbGxlcnRACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzE4IDE3OjEzOjE1CiAgICAgW2NpcGhlci5jIGNpcGhlci5oXQogICAgIGV4cG9ydC9pbXBvcnQgY2lwaGVyIHN0YXRlczsgbmVlZGVkIGJ5IHNzaC1wcml2c2VwCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzE4IDE3OjE2OjM4CiAgICAgW3BhY2tldC5jIHBhY2tldC5oXQogICAgIGV4cG9ydC9pbXBvcnQgY2lwaGVyIHN0YXRlLCBpdiBhbmQgc3NoMiBzZXFucjsgbmVlZGVkIGJ5IHNzaC1wcml2c2VwCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzE4IDE3OjIzOjMxCiAgICAgW2tleS5jIGtleS5oXQogICAgIGFkZCBrZXlfZGVtb3RlKCkgZm9yIHNzaC1wcml2c2VwCiAgIC0gcHJvdm9zQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzE4IDE3OjI1OjI5CiAgICAgW2J1ZmF1eC5jIGJ1ZmF1eC5oXQogICAgIGJ1ZmZlcl9za2lwX3N0cmluZyBhbmQgZXh0cmEgc2FuaXR5IGNoZWNraW5nOyBuZWVkZWQgYnkgc3NoLXByaXZzZXAKICAgLSBwcm92b3NAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTggMTc6MzE6NTQKICAgICBbY29tcHJlc3MuY10KICAgICBleHBvcnQgY29tcHJlc3Npb24gc3RyZWFtcyBmb3Igc3NoLXByaXZzZXAKICAgLSBwcm92b3NAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTggMTc6NTA6MzEKICAgICBbYXV0aC1ic2RhdXRoLmMgYXV0aC1vcHRpb25zLmMgYXV0aC1yaC1yc2EuYyBhdXRoLXJzYS5jXQogICAgIFthdXRoLXNrZXkuYyBhdXRoLmggYXV0aDEuYyBhdXRoMi1jaGFsbC5jIGF1dGgyLmMga2V4LmMga2V4Lmgga2V4ZGguY10KICAgICBba2V4Z2V4LmMgc2VydmNvbmYuY10KICAgICBbc2Vzc2lvbi5oIHNlcnZjb25mLmggc2VydmVybG9vcC5jIHNlc3Npb24uYyBzc2hkLmNdCiAgICAgaW50ZWdyYXRlIHByaXZpbGVnZSBzZXBhcmF0ZWQgb3BlbnNzaDsgaXRzIHR1cm5lZCBvZmYgYnkgZGVmYXVsdCAKICAgICBmb3Igbm93LiB3b3JrIGRvbmUgYnkgbWUgYW5kIG1hcmt1c0AKICAgLSBwcm92b3NAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTggMTc6NTM6MDgKICAgICBbc3NoZC44XQogICAgIGNyZWRpdHMgZm9yIHByaXZzZXAKICAgLSBwcm92b3NAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTggMTc6NTk6MDkKICAgICBbc3NoZC44XQogICAgIGRvY3VtZW50IFVzZVByaXZpbGVnZVNlcGFyYXRpb24KICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzE4IDIzOjUyOjUxCiAgICAgW3NlcnZjb25mLmNdCiAgICAgVW5wcml2VXNlci9VbnByaXZHcm91cCB1c2FibGUgbm93LS1zcGVjaWZ5IG51bWVyaWMgdXNlci9ncm91cDsgb2sKICAgICBwcm92b3NACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8xOSAwMzowMzo0MwogICAgIFtwYXRobmFtZXMuaCBzZXJ2Y29uZi5jIHNlcnZjb25mLmggc3NoZC5jXQogICAgIF9QQVRIX1BSSVZTRVBfQ0hST09UX0RJUjsgb2sgcHJvdm9zQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTkgMDU6MjM6MDgKICAgICBbc3NoZC44XQogICAgIEJhbm5lciBoYXMgbm8gZGVmYXVsdC4KICAgLSBtcGVjaEBjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8xOSAwNjozMjo1NgogICAgIFtzZnRwLWludC5jXQogICAgIHVzZSB4ZnJlZSgpIGFmdGVyIHhzdHJkdXAoKS4KCiAgICAgbWFya3VzQCBvawogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8xOSAxMDozNTozOQogICAgIFthdXRoLW9wdGlvbnMuYyBhdXRoLmggc2Vzc2lvbi5jIHNlc3Npb24uaCBzc2hkLmNdCiAgICAgY2xlYW4gdXAgcHJvdG90eXBlcwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8xOSAxMDo0OTozNQogICAgIFthdXRoLWtyYjUuYyBhdXRoLXJoLXJzYS5jIGF1dGguYyBjaXBoZXIuYyBrZXkuYyBtaXNjLmhdCiAgICAgW3BhY2tldC5jIHNlc3Npb24uYyBzZnRwLWNsaWVudC5jIHNmdHAtZ2xvYi5oIHNmdHAuYyBzc2gtYWRkLmMgc3NoLmNdCiAgICAgW3NzaGNvbm5lY3QyLmMgc3NoZC5jIHR0eW1vZGVzLmNdCiAgICAgS05GIHdoaXRlc3BhY2UKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTkgMTQ6Mjc6MzkKICAgICBbYXV0aC5jIGF1dGgxLmMgYXV0aDIuY10KICAgICBtYWtlIGdldHB3bmFtYWxsb3coKSBhbGx3YXlzIGNhbGwgcHdjb3B5KCkKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMTkgMTU6MzE6NDcKICAgICBbYXV0aC5jXQogICAgIGNoZWNrIGZvciBOVUxMOyBmcm9tIHByb3Zvc0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzIwIDE5OjEyOjI1CiAgICAgW3NlcnZjb25mLmMgc2VydmNvbmYuaCBzc2guaCBzc2hkLmNdCiAgICAgZm9yIHVucHJpdmlsZWdlZCB1c2VyLCBncm91cCBkbzoKICAgICBwdz1nZXRwd25hbShTU0hfUFJJVlNFUF9VU0VSKTsgZG9fc2V0dXNlcmNvbnRleHQocHcpLiAgb2sgcHJvdm9zQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjAgMjE6MDg6MDgKICAgICBbc3NoZC5jXQogICAgIHN0cmVycm9yKCkgb24gY2hkaXIoKSBmYWlsOyBvayBwcm92b3NACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzIxIDEwOjIxOjIwCiAgICAgW3NzaC1hZGQuY10KICAgICBpZ25vcmUgZXJyb3JzIGZvciBub25leGlzdGluZyBkZWZhdWx0IGtleXMgaW4gc3NoLWFkZCwKICAgICBmaXhlcyBodHRwOi8vYnVnemlsbGEubWluZHJvdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OAogICAtIGpha29iQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzIxIDE1OjE3OjI2CiAgICAgW2NsaWVudGxvb3AuYyBzc2guMV0KICAgICBhZGQgYnVpbHQtaW4gY29tbWFuZCBsaW5lIGZvciBhZGRpbmcgbmV3IHBvcnQgZm9yd2FyZGluZ3Mgb24gdGhlIGZseS4KICAgICBiYXNlZCBvbiBhIHBhdGNoIGZyb20gYnJpYW4gd2VsbGluZ3Rvbi4gb2sgbWFya3VzQC4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjEgMTY6Mzg6MDYKICAgICBbc2NhcmQuY10KICAgICBtYWtlIGNvbXBpbGUgdy8gb3BlbnNzbCAwLjkuNwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yMSAxNjo1NDo1MwogICAgIFtzY2FyZC5jIHNjYXJkLmggc3NoLWtleWdlbi5jXQogICAgIG1vdmUga2V5IHVwbG9hZCB0byBzY2FyZC5bY2hdCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzIxIDE2OjU3OjE1CiAgICAgW3NjYXJkLmNdCiAgICAgcmVtb3ZlIGNvbnN0CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAyLzAzLzIxIDE2OjU4OjEzCiAgICAgW2NsaWVudGxvb3AuY10KICAgICByZW1vdmUgdW51c2VkCiAgIC0gcmVlc0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yMSAxODowODoxNQogICAgIFtzY2FyZC5jXQogICAgIEluIHNjX3B1dF9rZXkoKSwgc2NfcmVhZGVyX2lkIHNob3VsZCBiZSBpZC4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjEgMjA6NTE6MTIKICAgICBbc3NoZF9jb25maWddCiAgICAgYWRkIHByaXZzZXAgKG9mZikKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjEgMjE6MjM6MzQKICAgICBbc3NoZC5jXQogICAgIGFkZCBwcml2c2VwX3ByZWF1dGgoKSBhbmQgcmVtb3ZlIDEgZ290bzsgb2sgcHJvdm9zQAogICAtIHJlZXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDIvMDMvMjEgMjE6NTQ6MzQKICAgICBbc2NhcmQuYyBzY2FyZC5oIHNzaC1rZXlnZW4uY10KICAgICBBZGQgUElOLXByb3RlY3Rpb24gZm9yIHNlY3JldCBrZXkuCiAgIC0gcmVlc0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yMSAyMjo0NDowNQogICAgIFthdXRoZmQuYyBhdXRoZmQuaCBzc2gtYWRkLmMgc3NoLWFnZW50LmMgc3NoLmNdCiAgICAgQWRkIFBJTi1wcm90ZWN0aW9uIGZvciBzZWNyZXQga2V5LgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMi8wMy8yMSAyMzowNzozNwogICAgIFtjbGllbnRsb29wLmNdCiAgICAgcmVtb3ZlIHVudXNlZCwgc3luYyB3LyBjbWRsaW5lIHBhdGNoIGluIG15IHRyZWUuCgoyMDAyMDMxNwogLSAodGltKSBbY29uZmlndXJlLmFjXSBBc3N1bWUgcGF0aCBnaXZlbiB3aXRoIC0td2l0aC1waWQtZGlyPVBBVEggaXMgCiAgIHdhbnRlZCwgd2FybiBpZiBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QuIFB1dCBzeXN0ZW0gZGlyZWN0b3JpZXMgaW4gCiAgIGZyb250IG9mIFBBVEggZm9yIGZpbmRpbmcgZW50b3JweSBjb21tYW5kcy4KIC0gKHRpbSkgW2NvbnRyaWIvYWl4L2J1aWxkYmZmLnNoIGNvbnRyaWIvYWl4L2ludmVudG9yeS5zaF0gQUlYIHBhY2thZ2UKICAgYnVpbGQgZml4ZXMuICBQYXRjaCBieSBEYXJyZW4gVHVja2VyIDxkdHVja2VyQHppcC5jb20uYXU+CiAgIFtjb250cmliL3NvbGFyaXMvYnVpbGRwa2cuc2hdIGFkZCBtaXNzaW5nIGRpcnMgdG8gU1lTVEVNX0RJUi4gSGF2ZQogICBwb3N0aW5zdGFsbCBjaGVjayBmb3IgJHBpZGRpciBhbmQgYWRkIGlmIG5lY2Vzc2FyeS4KCjIwMDIwMzExCiAtICh0aW0pIFtjb250cmliL3NvbGFyaXMvYnVpbGRwa2cuc2gsIGNvbnRyaWIvc29sYXJpcy9SRUFETUVdIFVwZGF0ZWQgdG8KICAgYnVpbGQgb24gYWxsIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgU1ZSNCBzdHlsZSBwYWNrYWdlIHRvb2xzLiBOb3cgcnVucwogICBmcm9tIGJ1aWxkIGRpci4gUGFydHMgYXJlIGJhc2VkIG9uIHBhdGNoZXMgZnJvbSBBbnRvbmlvIE5hdmFycm8sIGFuZAogICBEYXJyZW4gVHVja2VyLgoKMjAwMjAzMDgKIC0gKGRqbSkgUmV2ZXJ0IGJpdHMgb2YgTWFya3VzJyBPcGVuU1NMIGNvbXBhdCBwYXRjaCB3aGljaCB3YXMgCiAgIGFjY2lkZW50YWxseSBjb21taXR0ZWQuCiAtIChkam0pIEFkZCBNYXJrdXMnIHBhdGNoIGZvciBjb21wYXQgd2loIE9wZW5TU0wgPCAwLjkuNi4gCiAgIEtub3duIGlzc3VlOiBCbG93ZmlzaCBmb3IgU1NIMSBkb2VzIG5vdCB3b3JrCiAtIChzdGV2ZXNrKSBlbnRyb3B5LmM6IHR5cG8gaW4gZGVidWcgbWVzc2FnZQogLSAoZGptKSBzc2gta2V5Z2VuIC1pIG5lZWRzIHNlZWRlZCBSTkc7IHJlcG9ydCBmcm9tIG1hcmt1c0AKCiRJZDogQ2hhbmdlTG9nLHYgMS4yMjQwIDIwMDIvMDYvMjEgMTU6NDQ6NDUgZGptIEV4cCAkCg==