MjAwMi0xMi0wNCAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIG1ha2UtcmVsYXRpdmUtcHJlZml4LmMgKEhBVkVfSE9TVF9FWEVDVVRBQkxFX1NVRkZJWCk6CglEZWZpbmUgZm9yIGhvc3RzIHdpdGggSE9TVF9FWEVDVVRBQkxFX1NVRkZJWC4KCjIwMDItMTEtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBtYWtlLXJlbGF0aXZlLXByZWZpeC5jIChtYWtlX3JlbGF0aXZlX3ByZWZpeCk6IEVuc3VyZSByZXR1cm4KCXN0cmluZyBpcyBlbXB0eSBiZWZvcmUgdXNpbmcgc3RyY2F0IHRvIGNvbnN0cnVjdCBpdC4KCjIwMDItMTEtMjIgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogTWFrZWZpbGUuaW46IEFkZCBtYWtlLXJlbGF0aXZlLXByZWZpeC5jLgoJKiBtYWtlLXJlbGF0aXZlLXByZWZpeC5jOiBOZXcgZmlsZS4KCSogZnVuY3Rpb25zLnRleGk6IFJlYnVpbHQuCgoyMDAyLTExLTE2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIG1kNS5jIChtZDVfcHJvY2Vzc19ibG9jayk6IEF2b2lkIGBmdW5jdGlvbi1saWtlIG1hY3JvICJGe0csSCxJfSIgbXVzdCBiZQoJdXNlZCB3aXRoIGFyZ3VtZW50cyBpbiB0cmFkaXRpb25hbCBDJyB3YXJuaW5ncy4KCjIwMDItMTAtMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnLnRhYmxlOiBVc2UgbWgtczM5MHBpYyBmb3IgczM5MHggdG9vLgoKMjAwMi0xMC0wNiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogbGliaWJlcnR5L2NwbHVzLWRlbS5jIChhZGFfZGVtYW5nbGUpOiBHZXQgcmlkIG9mIHVubmVlZGVkCgl2YXJpYWJsZSBhbmQgb2Ygc3RyaWN0LWFsaWFzaW5nIHdhcm5pbmcuCgkoZ3Jvd192ZWN0KTogVXNlIGNoYXIgYXMgZmlyc3QgcGFyYW1ldGVyLgoKMjAwMi0wOS0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGFsbCk6IEZpeCBtdWx0aWxpYiBwYXJhbGxlbCBidWlsZC4KCjIwMDItMDktMTkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaXVseTEuaGlhLm5yYy5jYT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xpbmdfbmV3KTogQ2FzdCAwIHRvIGVudW0uCgkoZGVtYW5nbGVfY2hhcik6IENhc3QgcmV0dXJuIG9mIHN0cmR1cCB0byBjaGFyICouCgkoaXNfZ251X3YzX21hbmdsZWRfY3Rvcik6IENhc3QgMCB0byBlbnVtLgoJKGlzX2dudV92M19tYW5nbGVkX2R0b3IpOiBMaWtld2lzZS4KCSogY3BsdXMtZGVtLmMgKGdyb3dfdmVjdCk6IENhc3QgcmV0dXJuIG9mIHhyZWFsbG9jIHRvIHZvaWQgKi4KCSh3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSk6IENhc3QgcmV0dXJuIG9mIHhtYWxsb2MgdG8gY2hhciAqKi4KCSogZmliaGVhcC5jIChmaWJub2RlX25ldyk6IENhc3QgcmV0dXJuIG9mIHhjYWxsb2MgdG8gZmlibm9kZV90LgoJKiBtZDUuYyAobWQ1X3Byb2Nlc3NfYnl0ZXMpOiBDYXN0IHJlc3VsdHMgYmFjayB0byBjb25zdCB2b2lkICouCgkobWQ1X3Byb2Nlc3NfYmxvY2spOiBBZGQgY2FzdCB0byBjb25zdCBtZDVfdWludDMyICouCgkqIHJlZ2V4LmMgKHJlX2NvbXBpbGVfZmFzdG1hcCk6IENhc3QgZW51bSB0byBVQ0hBUl9ULgoJKiBzYWZlLWN0eXBlLmMgKEwsIFhMLCBVLCBYVSwgRCwgUCwgXywgQywgWiwgTSwgViwgVCwgUyk6IEFkZCBjYXN0IHRvCgl1bnNpZ25lZCBzaG9ydC4KCSogc3BsYXktdHJlZS5jIChzcGxheV90cmVlX3htYWxsb2NfYWxsb2NhdGUpOiBDYXN0IHJldHVybiBvZiB4bWFsbG9jCgl0byB2b2lkICouCgkqIHZhc3ByaW50Zi5jIChpbnRfdmFzcHJpbnRmKTogQ2FzdCByZXR1cm4gb2YgbWFsbG9jIHRvIGNoYXIgKi4KCjIwMDItMDktMTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBSRUFETUU6IFVwZGF0ZSBlbWFpbCBhZGRyZXNzZXMgZm9yIGJ1Z3MgYW5kIHBhdGNoZXMuCgoyMDAyLTA5LTEwICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9zdWNjZXNzb3IpOiBGaXggY29tbWVudHMuCgoyMDAyLTA5LTExICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BsdXMtZGVtLmM6IENvZGUgdW5kZXIgI2lmZGVmIE1BSU4gbW92ZWQgdG8gZ2NjL2NwL2N4eGZpbHQuYy4KCSogdGVzdHN1aXRlL01ha2VmaWxlLmluOiBBZGp1c3QgZm9yIHRlc3QtZGVtYW5nbGUuCgkqIHRlc3RzdWl0ZS9yZWdyZXNzLWRlbWFuZ2xlOiBEZWxldGVkLgoJKiB0ZXN0c3VpdGUvdGVzdC1kZW1hbmdsZS5jOiBOZXcgZmlsZS4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBDaGFuZ2UgXCQgdG8gJCB0aHJvdWdob3V0LCBub3cgdGhhdAoJdGhpcyBmaWxlIGlzIG5vdCBiZWluZyByZWFkIGJ5IGEgc2hlbGwgc2NyaXB0LgoKMjAwMi0wOS0wNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiByZWdleC5jOiBPbmx5IHVzZSAiI3ByYWdtYSBhbGxvY2EiIG9uIEFJWCB3aGVuIG5vdCB1c2luZyBnY2MuCgoyMDAyLTA4LTA3ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIHJlZ2V4LmMgKHJlX2Vycm9yX21zZ2lkKTogSnVzdCB1c2UgYSBzaW1wbGUgYXJyYXkgb2Ygc3RyaW5ncy4KCShyZV9jb21waWxlX3BhdHRlcm4pOiBDb21wZW5zYXRlLgoJKHJlX2NvbXApOiBMaWtld2lzZS4KCShyZV9jb21wKTogTGlrZXdpc2UuCgkocmVnZXJyb3IpOiBMaWtld2lzZS4KCjIwMDItMDctMjkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwbHVzLWRlbS5jIChQUkVQRU5EX0JMQU5LKTogUmVtb3ZlLgoKMjAwMi0wNy0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9pZGVudGlmaWVyKTogU3VwcG9ydCBleHRlbmRlZCBVbmljb2RlCgljaGFyYWN0ZXJzLgoKMjAwMi0wNy0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGVfdjNfd2l0aF9kZXRhaWxzKTogV3JhcCBpbgoJIWRlZmluZWQgSU5fR0xJQkNQUF9WMy4KCjIwMDItMDctMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9vcGVyYXRvcl9uYW1lKTogQWRkIHR5cGVfYXJnIHBhcmFtZXRlci4KCVNldCBpdCBmb3IgdGhlICJzdCIgb3BlcmF0b3IuCgkoZGVtYW5nbGVfZXhwcmVzc2lvbik6IEhhbmRsZSBleHByZXNzaW9ucyB3aXRoIHR5cGVzIGFzIGFyZ3VtZW50cy4KCjIwMDItMDYtMzAgIERvdWdsYXMgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKE9VVFBVVF9PUFRJT04sTk9fTUlOVVNfQ19NSU5VU19PKTogQ29uZmlndXJlLgoJKiBNYWtlZmlsZS5pbiAoT1VUUFVUX09QVElPTik6IFVzZS4KCjIwMDItMDYtMjIgIFBldGVyIEJyZWl0ZW5sb2huZXIgPHBlYkBtcHBtdS5tcGcuZGU+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbF90b19saWJkaXIpOiBBZGQgJChERVNURElSKS4KCShpbnN0YWxsX3RvX3Rvb2xkaXIpOiBMaWtld2lzZS4KCjIwMDItMDYtMTcgIERvdWdsYXMgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBsYmFzZW5hbWUuYzogQWRkIDIwMDIgdG8gY29weXJpZ2h0LgoJKElTX0RJUl9TRVBBUkFUT1IpOiBSZW1vdmUgVk1TIGp1bmsuCgoyMDAyLTA2LTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmMgKGh0YWJfY3JlYXRlKTogTmV3IHN0dWIgZnVuY3Rpb24gZm9yIGJhY2t3YXJkCgljb21wYXRpYmlsaXR5LgoJKGh0YWJfdHJ5X2NyZWF0ZSk6IExpa2V3aXNlLgoKMjAwMi0wNi0wMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5jIChodGFiX2NyZWF0ZSk6IERlbGV0ZS4KCShodGFiX3RyeV9jcmVhdGUpOiBEZWxldGUuCgkoaHRhYl9jcmVhdGVfYWxsb2MpOiBOZXcuCgkoaHRhYl9kZWxldGUpOiBTdXBwb3J0IHVzZXItc3BlY2lmaWVkIG1lbW9yeSBhbGxvY2F0aW9uLgoJKGh0YWJfZXhwYW5kKTogTGlrZXdpc2UuCgoyMDAyLTA1LTIyICBSb21hbiBMZWNodGNoaW5za3kgIDxybEBjcy50dS1iZXJsaW4uZGU+CgoJKiBjb25maWd1cmUuaW46IEZpeCB0eXBvIGluIHRoZSBjb2RlIGNoZWNraW5nIGZvciBzeXNfZXJybGlzdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDItMDUtMTMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcudGFibGU6IFVzZSBtaC14ODZwaWMgYWxzbyBmb3IgeDg2LTY0LgoKMjAwMi0wNS0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKE9SSUdJTkFMX0xEX0ZPUl9NVUxUSUxJQlMpOiBQcmVzZXJ2ZSBMRCBhdAoJc2NyaXB0IGVudHJ5LCBhbmQgc2V0IExEIHRvIGl0IHdoZW4gY29uZmlndXJpbmcgbXVsdGlsaWJzLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAyLTA1LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluIChBQ19UWVBFX1BJRF9UKTogVXNlIGl0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBnZXRydW50aW1lLmM6IEluY2x1ZGUgPHN5cy90eXBlcy5oPi4KCSogd2FpdHBpZC5jOiBMaWtld2lzZS4gIFVzZSBwaWRfdCwgbm90IGludCwgYXMgdGhlIHR5cGUgb2YgInBpZCIuCgoyMDAyLTA0LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5jIChoaWdoZXJfcHJpbWVfbnVtYmVyKTogVXNlIDcgYXMgbWluaW11bS4KCShmaW5kX2VtcHR5X3Nsb3RfZm9yX2V4cGFuZCk6IERvbid0IGNvbXB1dGUgaGFzaDIgdW5sZXNzIG5lZWRlZC4KCShodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBMaWtld2lzZS4KCjIwMDItMDQtMDEgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIGNwLWRlbWFuZ2xlLmMgKF9fY3hhX2RlbWFuZ2xlKTogIEFsc28gcHJvdGVjdCB3aXRoIElOX0dMSUJDUFBfVjMuCgkoaXNfZ251X3YzX21hbmdsZWRfY3RvciwgaXNfZ251X3YzX21hbmdsZWRfY3Rvcik6ICBDb25kaXRpb25hbGx5Cglub3QgY29tcGlsZSBpZiBJTl9HTElCQ1BQX1YzIGRlZmluZWQuCgkqIGR5bi1zdHJpbmcuYzogIEFsc28gYWxsb3cgSU5fR0xJQkNQUF9WMyB0byBjaGFuZ2UgYWxsb2NhdGlvbiBzY2hlbWUuCgoyMDAyLTAzLTMwICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBjcC1kZW1hbmdsZS5jIChqYXZhX2RlbWFuZ2xlX3YzKTogRG9uJ3QgdHJ5IHRvIHJlbGVhc2UgImRlbWFuZ2xlZCIKCWlmIGl0IGlzIE5VTEwuCgoyMDAyLTAzLTI3ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGhleC5jOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShfaGV4X3ZhbHVlKTogUHJvdmlkZSBub24tQVNDSUkgZW1wdHkgdGFibGUuCgkoaGV4X2luaXQpOiBJbml0aWFsaXplIHRoZSBub24tQVNDSUkgdGFibGUuCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMi0wMy0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR5bi1zdHJpbmcuYzogQWRkIGxpYmdjYyBleGNlcHRpb24gdG8gY29weXJpZ2h0IG5vdGljZS4KCjIwMDItMDMtMjYgIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIGNvbmZpZy50YWJsZTogU3VwcG9ydCAtLXdpdGgtYnVpbGQtc3ViZGlyLgoJKiBjb25maWd1cmUuaW46IExpa2V3aXNlLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoyMDAyLTAzLTE4ICBTdHVhcnQgR3JpZmZpdGggIDxTdHVhcnRfR3JpZmZpdGhAY3JlZGVuY2UuY29tPgoKCSogc3RydG9kLmMgKHN0cnRvZCk6IEluY3JlbWVudCA4IGNoYXJzLCBub3QgNywgd2hlbiBgaW5maW5pdHknCglzZWVuLgoKMjAwMi0wMy0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmM6IEFkZCBsaWJnY2MgZXhjZXB0aW9uIHRvIGNwLWRlbWFuZ2xlLmMgY29weXJpZ2h0Cglub3RpY2UuCgoyMDAyLTAzLTExICBEb3VnbGFzIEIgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiB4YXRleGl0LmMgW1ZNU106IEluY2x1ZGUgc3RkbGliLmggYW5kIHVuaXhsaWIuaC4KCjIwMDItMDMtMDYgIEppbSBCbGFuZHkgIDxqaW1iQHJlZGhhdC5jb20+CgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfeG1hbGxvY19hbGxvY2F0ZSwKCXNwbGF5X3RyZWVfeG1hbGxvY19kZWFsbG9jYXRlKTogVXNlIEsmUi1zdHlsZSBkZWZpbml0aW9ucywgbm90Cglwcm90b3R5cGVkIGRlZmluaXRpb25zLiAgTWFyayBgZGF0YScgYXJndW1lbnRzIGFzIHVudXNlZC4KCjIwMDItMDMtMDYgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfYXJtX2V4dF9iaWcpOiBEZWxldGUgZGVmaW5pdGlvbi4KCjIwMDItMDMtMDQgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogIEFkZCAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBvcHRpb24uCgkqIE1ha2VmaWxlLmluIChJTlNUQUxMRURfSEVBREVSUyk6ICBOZXcgdmFyaWFibGUuCgkoaW5zdGFsbF90b19saWJkaXIpOiAgUG9zc2libHkgYWxzbyBjb3B5IGhlYWRlcnMuCgkqIGNvbmZpZ3VyZTogIFJlZ2VuZXJhdGVkLgoKMjAwMi0wMy0wNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogeG1hbGxvYy5jICh4bWFsbG9jX2ZhaWwpOiBDbGFyaWZ5IGVycm9yIG1lc3NhZ2UgZnVydGhlci4KCjIwMDItMDMtMDMgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIHhtYWxsb2MuYyAoeG1hbGxvY19mYWlsKTogQ2xhcmlmeSBlcnJvciBtZXNzYWdlLgoKMjAwMi0wMi0yMiAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV94bWFsbG9jX2FsbG9jYXRlLAoJc3BsYXlfdHJlZV94bWFsbG9jX2RlYWxsb2NhdGUpOiBOZXcgZnVuY3Rpb25zLgoJKHNwbGF5X3RyZWVfbmV3KTogQ2FsbCBzcGxheV90cmVlX25ld193aXRoX2FsbG9jYXRvciwgcGFzc2luZyB0aGUKCWFib3ZlIGZ1bmN0aW9ucyBhbmQgYSBkdW1teSBkYXRhIHBvaW50ZXIuCgkoc3BsYXlfdHJlZV9uZXdfd2l0aF9hbGxvY2F0b3IpOiBOZXcgZnVuY3Rpb24uCgkoc3BsYXlfdHJlZV9kZWxldGVfaGVscGVyLCBzcGxheV90cmVlX2RlbGV0ZSwgc3BsYXlfdHJlZV9pbnNlcnQsCglzcGxheV90cmVlX3JlbW92ZSk6IFVzZSB0aGUgc3BsYXkgdHJlZSdzIGFsbG9jYXRpb24gYW5kCglkZWFsbG9jYXRpb24gZnVuY3Rpb25zLgoKMjAwMi0wMi0xOSAgU2NvdHQgU255ZGVyICA8c255ZGVyQGZuYWwuZ292PgoKCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgdGVzdCBjYXNlIGZvciBpbmZpbml0ZSBsb29wIGluCglkZW1hbmdsZXIuCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9hcm1faHBfdGVtcGxhdGUpOiBTdG9wIHRyeWluZyB0byBkZW1hbmdsZQoJaWYgZG9fdHlwZSgpIGRvZXNuJ3QgbWFrZSBhbnkgcHJvZ3Jlc3MgLS0tIHByZXZlbnRzIGFuIGluZmluaXRlCglsb29wLgoKMjAwMi0wMi0xOCAgQ2FybG8gV29vZCAgPGNhcmxvQGdudS5vcmc+CgoJUFIgYysrLzUzOTAKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2ludGVncmFsX3ZhbHVlKTogQWNjZXB0IG11bHRpLWRpZ2l0CgludW1iZXJzIHRoYXQgZG8gbm90IHN0YXJ0IHdpdGggYW4gdW5kZXJzY29yZTsgVGhpcyBpcyBuZWVkZWQKCWZvciBpbnRlZ2VyIHRlbXBsYXRlIHBhcmFtZXRlcnMuIFRoaXMgZG9lc24ndCBicmVhayBhbnl0aGluZwoJYmVjYXVzZSBtdWx0aS1kaWdpdCBudW1iZXJzIGFyZSBuZXZlciBmb2xsb3dlZCBieSBhIGRpZ2l0LgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IENvcnJlY3RlZCBhbGwgbWFuZ2xlZCB0ZXN0CgljYXNlcyB3aXRoIG11bHRpLWRpZ2l0IHRlbXBsYXRlIHBhcmFtZXRlcnM6IGcrKyAyLjk1LnggZG9lcwoJbm90IGdlbmVyYXRlIHVuZGVyc2NvcmVzIGFyb3VuZCB0aGVzZSBwYXJhbWV0ZXJzLgoKMjAwMi0wMi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZmxhZ3MpOiBBZGQgRE1HTF9WRVJCT1NFCgkoY3BsdXNfZGVtYW5nbGVfdjNfcCk6IFJlbW92ZS4KCShkZW1hbmdsZV9pdCk6IEFkZCBETUdMX1RZUEVTIHRvIHBhc3NlZCBmbGFncy4KCSogY3AtZGVtYW5nbGUuYyAoY3BsdXNfZGVtYW5nbGVfdjNfYWxsKTogUmVtb3ZlLgoJKGNwbHVzX2RlbWFuZ2xlX3YzX3R5cGUpOiBSZW1vdmUuCgkoY3BsdXNfZGVtYW5nbGVfdjMpOiBBZGQgb3B0aW9ucyBwYXJtLgoKMjAwMi0wMi0wMiAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogY3AtZGVtYW5nbGUuYyAoY3BfZGVtYW5nbGVfdHlwZSk6IERvIG5vdCBwcm90ZWN0IHdpdGgKCUlOX0xJQkdDQzIuCgkoY3BsdXNfZGVtYW5nbGVfdjNfYWxsKTogTmV3LgoJKGNwbHVzX2RlbWFuZ2xlX3YzKTogQ2FsbCBjcGx1c19kZW1hbmdsZV92M19hbGwuCgkoY3BsdXNfZGVtYW5nbGVfdjNfdHlwZSk6IENhbGwgY3BsdXNfZGVtYW5nbGVfdjNfYWxsLgoKCSogY3BsdXMtZGVtLmMgKGNwbHVzX2RlbWFuZ2xlX3YzX3ApOiBOZXcgZnVuY3Rpb24gcG9pbnRlci4KCUluaXRpYWxpemVkIHRvIGNwbHVzX2RlbWFuZ2xlX3YzLgoJKGNwbHVzX2RlbWFuZ2xlX3dpdGhfc3R5bGUpOiBDYWxsIGNwbHVzX2RlbWFuZ2xlX3YzX3AgaW5zdGVhZAoJb2YgY3BsdXNfZGVtYW5nbGVfdjMuCgkobWFpbik6IFNldCBjcGx1c19kZW1hbmdsZV92M19wIHRvIGNwbHVzX2RlbWFuZ2xlX3YzX3R5cGUgZm9yCgljb21tYW5kIGxpbmUgc3ltYm9sLgoKCSogdGVzdHN1aXRlL3JlZ3Jlc3MtZGVtYW5nbGU6IFBhc3MgdGhlIG1hbmdsZWQgbmFtZSBhdCB0aGUKCWNvbW1hbmQgbGluZS4KCjIwMDItMDItMDEgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGNwLWRlbWFuZ2xlLmMgKGNwX2RlbWFuZ2xlX3R5cGUpOiBDYWxsIGRlbWFuZ2xpbmdfbmV3IHdpdGgKCURNR0xfR05VX1YzLgoKMjAwMi0wMS0zMSAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogY3AtZGVtYW5nbGUuYzogIFJldmVydCB5ZXN0ZXJkYXkncyBjaGFuZ2UuCgoyMDAyLTAxLTMxICBBZGFtIE1lZ2FjeiAgPGFkYW1AeHd0Lm9yZz4KCgkqIGdjYy9saWJpYmVydHkvY29uZmlndXJlLmluOiBUcmVhdCBtaW5ndyB0aGUgc2FtZSBhcyBjeXdpbgoJd3J0IEhBVkVfU1lTX0VSUkxJU1QuCgoyMDAyLTAxLTMwICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiBjcC1kZW1hbmdsZS5jIChjcF9kZW1hbmdsZV90eXBlKTogIERvIG5vdCBwcm90ZWN0IHdpdGggSU5fTElCR0NDMi4KCShjcGx1c19kZW1hbmdsZV92Myk6ICBNaW1pYyBfX2N4YV9kZW1hbmdsZSBhbmQgZmFsbCBiYWNrIG9uCgljcF9kZW1hbmdsZV90eXBlLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6ICBOZXcgZ251LXYzIHRlc3QuCgoyMDAyLTAxLTIyICBNb21jaGlsIFZlbGlrb3YgIDx2ZWxjb0BmYWRhdGEuYmc+CgoJKiBjb25maWd1cmUuaW4gKHZhcmlhYmxlIGRldGVjdGlvbik6IFVzZSBhcnJheXMgb2YgdW5zcGVjaWZpZWQKCXNpemUgaW5zdGVhZCBvZiBwbGFpbiBpbnRlZ2Vycy4KCjIwMDItMDEtMTggIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKFRFU1RMSUIpOiBOZXcuICBUaGlzIGxpYnJhcnkgaXMgZm9yIGZ1dHVyZQoJdGVzdHN1aXRlcy4KCShDRklMRVMsIFJFUVVJUkVEX09GSUxFUywgQ09ORklHVVJFRF9PRklMRVMpOiBSZS1hbHBoYWJldGl6ZSwKCWJyZWFrIGRvd24gYnkgbGV0dGVyLgoJKFJFUVVJUkVEX09GSUxFUyk6IExpc3QgbG9uZy10by1jb21waWxlIGZpbGVzIGZpcnN0LgoJKG1haW50LWRlcHMpOiBOZXcsIHRhcmdldCBmb3IgdXBkYXRpbmcgZGVwZW5kZW5jaWVzLgoJKGRlcGVuZGVuY2llcyk6IFVwZGF0ZS4KCSogbWFpbnQtdG9vbDogQWRkIGRlcGVuZGVuY3ktZ2VuZXJhdGluZyBvcHRpb24uCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIF9kb3BybnQgZXZlbiBpZiB3ZSdyZSBub3QgcHJvdmlkaW5nIGl0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBfZG9wcm50LmM6IE1vZGlmaWNhdGlvbnMgdG8gYWxsb3cgY29tcGlsaW5nIG9uIGFueSBwbGF0Zm9ybS4KCSogY29weXNpZ24uYzogTGlrZXdpc2UuCgkqIHB1dGVudi5jOiBMaWtld2lzZS4KCSogc2V0ZW52LmM6IExpa2V3aXNlLgoJKiB2c3ByaW50Zi5jOiBMaWtld2lzZS4KCjIwMDItMDEtMTUgIERvdWdsYXMgQiBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIG1rc3RlbXBzLmMgKG1rc3RlbXBzKTogT24gVk1TLCBvcGVuIHRlbXAgZmlsZSB3aXRoIG9wdGlvbgoJdGhhdCBjYXVzZXMgaXQgdG8gYmUgZGVsZXRlZCB3aGVuIGNsb3NlZC4KCjIwMDItMDEtMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGxvbmdfb3B0aW9ucyk6IENvbnN0LWlmeS4KCSogY3BsdXMtZGVtLmMgKGxvbmdfb3B0aW9ucyk6IExpa2V3aXNlLgoKCSogY3BsdXMtZGVtLmMgKG15c3Ryc3RyKTogRGVsZXRlLiAgQWxsIGNhbGxlcnMgY2hhbmdlZCB0byB1c2UKCXN0cnN0ciBpbnN0ZWFkLgoKMjAwMS0xMi0zMSAgSXJhIFJ1YmVuCTxpcmFAYXBwbGUuY29tPgoKCSogYWNsb2NhbC5tNCAobGliaWJlcnR5X0FDX0ZVTkNfU1RSTkNNUCk6IFVzZSBhbm9uIG1tYXAgYXMgMm5kIHRyeS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMTItMjQgIERvdWdsYXMgQi4gUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKHVpbnRwdHJfdCk6IFVzZSBBQ19DSEVDS19UWVBFLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0xMi0xMiAgQ3JhaWcgUm9kcmlndWVzICA8cm9kcmlnY0BnY2MuZ251Lm9yZz4KCglQUiBvdGhlci8yNzE5CgkqIGNwbHVzLWRlbS5jIChjb25zdW1lX2NvdW50KTogVHJlYXQgbmVnYXRpdmUgY291bnQgYXMgYW4gZXJyb3IuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkZWQgdGVzdGNhc2UuCgpUdWUgRGVjIDExIDA3OjA4OjU3IDIwMDEgIERvdWdsYXMgQi4gUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBjb25maWd1cmUuaW46IEhhcmRjb2RlIHRoYXQgdmZvcmsgd29ya3Mgb24gVk1TIGhvc3QuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTEyLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY3BsdXMtZGVtLmMgKGxpYmliZXJ0eV9kZW1hbmdsZXJzKTogQWRkIG5vX2RlbWFuZ2xpbmcgY2FzZS4KCShjcGx1c19kZW1hbmdsZSk6IFN1cHBvcnQgbm9fZGVtYW5nbGluZy4KCjIwMDEtMTEtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBfZG9wcm50LmM6IE1vdmVkIGhlcmUgZnJvbSBnY2MvZG9wcmludC5jLiAgQWRqdXN0IHRvIGJ1aWxkCglpbiBsaWJpYmVydHkgY29udGV4dC4gIEZpeCB0eXBvIGluIGxlYWRpbmcgY29tbWVudC4KCSogY29uZmlndXJlLmluOiBGaXggdmFyaW91cyBBQ19ERUZJTkVzIHNvIGF1dG9oZWFkZXIgd29ya3MuCglJZiBhbnkgb2YgdnByaW50ZiwgdnNwcmludGYsIHZmcHJpbnRmIGlzIG1pc3NpbmcgZnJvbSBsaWJjLAoJdGhlbiBBQ19SRVBMQUNFX0ZVTkNTKF9kb3BybnQpLgoKMjAwMS0xMS0yNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgkgICAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoc3RhbXAtaCk6IERlcGVuZCBvbiBNYWtlZmlsZSBmb3IgcHJvcGVyCglzZXJpYWxpemF0aW9uLgoJKCotc3ViZGlyKTogRGVwZW5kIG9uIGNvbmZpZy5oIGZvciBwcm9wZXIgc2VyaWFsaXphdGlvbi4KCjIwMDEtMTEtMjYgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgYWxsb2NhLmggKGZvciByZWdleC5jIGFuZCBwdXRlbnYuYykuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmg6IEFkZCBIQVZFX0FMTE9DQV9ILgoKMjAwMS0xMS0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcmVnZXguYzogQ2hlY2sgZGVmaW5lZChfX1NURENfXykgfHwgZGVmaW5lZChBTE1PU1RfU1REQykgfHwKCWRlZmluZWQoSEFWRV9TVFJJTkdJWkUpIHRvIGRldGVybWluZSB3aGV0aGVyIElTTyBDUFAgdG9rZW4gcGFzdGluZwoJaXMgYXZhaWxhYmxlLgoKVGh1IE5vdiAxNSAxMTowNjoyNSAyMDAxICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb25maWcuaW4gKEhBVkVfVUlOVFBUUl9UKTogUHJvdmlkZSBhdXRvY29uZiBzdHViLgoJKiBjb25maWd1cmUuaW4gKEhBVkVfVUlOVFBUUl9UKTogVGVzdCBmb3Igc3lzdGVtIGRlZmluaW5nCgl1aW50cHRyX3QgYW5kIGRlZmluZSBIQVZFX1VJTlRQVFJfVCBhcHByb3ByaWF0ZWx5LgoJKiByZWdleC5jICh1aW50cHRyX3QpOiBEbyBub3QgcHJvdmlkZSBhIGRlZmluaXRpb24gaWYgdGhlCglzeXN0ZW0gcHJvdmlkZWQgb25lLgoKCSogcmVnZXguYyAoUFJFRklYKTogUHJvdmlkZSBhbiBhbHRlcm5hdGUgZGVmaW5pdGlvbiBmb3IKCW5vbi1BTlNJL0lTTyBjb21waWxlcnMuCgkoQVJHX1BSRUZJWCk6IExpa2V3aXNlLgoKMjAwMS0xMS0xMiAgSmltIE1leWVyaW5nICA8bWV5ZXJpbmdAbHVjZW50LmNvbT4KCgkqIG9ic3RhY2suYyAoXyk6IEhvbm9yIHRoZSBzZXR0aW5nIG9mIEVOQUJMRV9OTFMuICBPdGhlcndpc2UsCgl0aGlzIGNvZGUgd291bGQgZW5kIHVwIGNhbGxpbmcgZ2V0dGV4dCBldmVuIGluIHBhY2thZ2VzIGJ1aWx0Cgl3aXRoIC0tZGlzYWJsZS1ubHMuCgkqIGdldG9wdC5jIChfKTogTGlrZXdpc2UuCgkqIHJlZ2V4LmMgKF8pOiBMaWtld2lzZS4KCjIwMDEtMTEtMDMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWd1cmUuaW46IENvcGUgd2l0aCBtaXNzaW5nIG1ha2VpbmZvLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAxLTEwLTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBoZXguYyAoaGV4X2luaXQpOiBQcm92aWRlIGVtcHR5IHN0dWIuCgoJKiBoZXguYyAoaGV4X2luaXQpOiBEZWxldGUuCgkoX2hleF92YWx1ZSk6IENvbnN0LWlmeSBhbmQgaW5pdGlhbGl6ZSBhdCBjb21waWxlLXRpbWUuCgoyMDAxLTEwLTE5ICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluICgkKFRBUkdFVExJQikpOiBBbHNvIGdlbmVyYXRlIHBpYy8kKFRBUkdFVExJQikgaWYKCW5lY2Vzc2FyeS4KCjIwMDEtMTAtMTcgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogYXJndi5jLCBhc3ByaW50Zi5jLCBjaG9vc2UtdGVtcC5jLCBjb25jYXQuYywgY3BsdXMtZGVtLmMsCglmZnMuYywgZm5tYXRjaC50eGgsIGdldHJ1bnRpbWUuYywgbWFrZS10ZW1wLWZpbGUuYywKCW1rc3RlbXBzLmMsIHBleGVjdXRlLmMsIHJhbmRvbS5jLCBzdHJzaWduYWwuYywgdmFzcHJpbnRmLmM6CglJbXByb3ZlIG1hbnVhbCBmb3JtYXR0aW5nLgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDEtMTAtMTUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKFRFWElGSUxFUyk6IEFkZCBmbm1hdGNoLnR4aC4KCShtYWludC11bmRvYyk6IE5ldy4KCW1haW50LXRvb2w6IEFkZCAidW5kb2MiIHRvb2wuCgkqIGFsbG9jYS5jLCBhcmd2LmMsIGFzcHJpbnRmLmMsIGNob29zZS10ZW1wLmMsIGNvbmNhdC5jLAoJZmRtYXRjaC5jLCBmZnMuYywgZ2V0cnVudGltZS5jLCBpbnNxdWUuYywgbGJhc2VuYW1lLmMsCgltYWtlLXRlbXAtZmlsZS5jLCBta3N0ZW1wcy5jLCBwZXhlY3V0ZS5jLCByYW5kb20uYywgc3BhY2VzLmMsCglzdHJlcnJvci5zLCBzdHJzaWduYWwuYywgc3RydG9sLmMsIHZhc3ByaW50Zi5jOiBBZGQgb3IgdXBkYXRlCglkb2N1bWVudGF0aW9uLgoJKiBmbm1hdGNoLnR4aDogTmV3LgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDEtMTAtMTAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGJjbXAuYywgc2V0ZW52LmM6IFVzZSAibm9uemVybyIgaW5zdGVhZCBvZiAibm9uLXplcm8iLgoJKiBzdHJ0b2QuYzogVXNlICJJU08gQyIgaW5zdGVhZCBvZiAiQU5TSSBDIi4KCSogZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGUuCgoyMDAxLTEwLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBhbGxvY2EuYywgY2xvY2suYywgZ2V0Y3dkLmMsIGdldHBhZ2VzaXplLmMsIGdldHB3ZC5jLCBpbmRleC5jLAoJbGliaWJlcnR5LnRleGksIG1lbWNoci5jLCBwdXRlbnYuYywgcmluZGV4LmMsIHN0cmNoci5jLCBzdHJkdXAuYywKCXN0cmVycm9yLmMsIHN0cnJjaHIuYywgc3Ryc3RyLmMsIHN0cnRvZC5jLCB0bXBuYW0uYywgdmZvcmsuYywKCXhhdGV4aXQuYywgeG1hbGxvYy5jLCB4c3RyZXJyb3IuYzogSW1wcm92ZSBtYW51YWwgZm9ybWF0dGluZy4gIEZpeAoJc3BlbGxpbmcuICBHaXZlIG5hbWVzIHRvIGZ1bmN0aW9uIGFyZ3VtZW50cyBpbiBkb2N1bWVudGF0aW9uLiAgVXNlCgkodm9pZCkgcHJvdG90eXBlcyBpbiBkb2N1bWVudGF0aW9uLgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDEtMTAtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFyZ3YuYyAoYnVpbGRhcmd2LCB0ZXN0cywgbWFpbik6IENvbnN0LWlmeS4KCSogY3AtZGVtYW5nbGUuYyAob3BlcmF0b3JfY29kZSk6IExpa2V3aXNlLgoJKiBjcGx1cy1kZW0uYyAob3B0YWJsZSwgbGliaWJlcnR5X2RlbWFuZ2xlcnMsCgljcGx1c19kZW1hbmdsZV9zZXRfc3R5bGUsIGNwbHVzX2RlbWFuZ2xlX25hbWVfdG9fc3R5bGUsCglwcmludF9kZW1hbmdsZXJfbGlzdCk6IExpa2V3aXNlLgoJKiBoYXNodGFiLmMgKGhpZ2hlcl9wcmltZV9udW1iZXIpOiBMaWtld2lzZS4KCSogc3RyY2FzZWNtcC5jIChjaGFybWFwKTogTGlrZXdpc2UuCgkqIHN0cmVycm9yLmMgKGVycm9yX2luZm8sIHN0cmVycm9yLCBtYWluKTogTGlrZXdpc2UuCgkqIHN0cm5jYXNlY21wLmMgKGNoYXJtYXApOiBMaWtld2lzZS4KCSogc3Ryc2lnbmFsLmMgKHNpZ25hbF9pbmZvKTogTGlrZXdpc2UuCgoyMDAxLTA5LTI5ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDktMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmNhdC5jOiBJbmNsdWRlIHN0ZGxpYi5oLgoKMjAwMS0wOS0yNyAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIGxpYmliZXJ0eS50ZXhpOiAoVG9wIGxldmVsKTogQWRkIHN5bmNvZGVpbmRleCBwZy4gIEFkZAoJQGRpcmNhdGVnb3J5IGFuZCBAZGlyZW50cnkgZGlyZWN0aXZlcy4gIEFkZCBAZmluYWxvdXQuCgkobWFueSBub2Rlcyk6IExvc2UgdGhlIG5leHQscHJldix1cCBwb2ludGVycyBvbiB0aGUgQG5pZGUgbGluZS4KCShVc2luZywgU3VwcGxlbWVudGFsIEZ1bmN0aW9ucywgUmVwbGFjZW1lbnQgRnVuY3Rpb25zKTogRml4CgltYXJrdXAuCgkoRnVuY3Rpb25zKTogTW92ZSBhcm91bmQsIHRvIGFsbG93IG1ha2VpbmZvIHRvIGJ1aWxkIHRoZSBtYW51YWwKCXdpdGhvdXQgbmV4dCxwcmV2LHVwIHBvaW50ZXJzIGluIHRoeWUgbm9kZSBsaW5lcy4KCShMaWNlbnNlcyk6IEZpeCB0eXBvcy4KCgkqIGluZGV4LmMsIHJpbmRleC5jLCBzdHJjaHIuYywgc3RyZXJyb3IuYywgc3RycmNoci5jLCBzdHJzdHIuYywKCXN0cnRvbC5jLCB4YXRleGl0LmMsIHhleGl0LmMsIHhtYWxsb2MuYzogRml4IHNwZWxsaW5nIGFuZCBtYXJrdXAuCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoKCSogY29weWluZy1saWIudGV4aTogTG9zZSB0aGUgbmV4dCxwcmV2LHVwIHBvaW50ZXJzIG9uIHRoZSBAbm9kZQoJbGluZS4KCjIwMDEtMDktMjcgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluOiBEb24ndCB1c2UgaW4tdHJlZSB0ZXhpbmZvLCBiZWNhdXNlIGxpYmliZXJ0eSBtdXN0CgliZSBidWlsdCBiZWZvcmUgaXQuICBDaGVjayBmb3IgbWFrZWluZm8gdmVyc2lvbiA0IG9yIGhpZ2hlci4KCSogZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGUuCgoyMDAxLTA5LTIwICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCSAgICBQaGlsIEVkd2FyZHMgIDxwZWR3YXJkc0BkaXNhc3Rlci5qYWouY29tPgoKCSogY29uZmlndXJlLmluIChNQUtFSU5GTywgUEVSTCk6IERldGVjdCB0aGVzZS4KCSgtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUpOiBBZGQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW4gKE1BS0VJTkZPLCBQRVJMKTogRGVmaW5lLgoJKGxpYmliZXJ0eS5pbmZvLCBsaWJpYmVydHkuZHZpLCBsaWJpYmVydHkuaHRtbCk6IE5ldy4KCShDRklMRVMpOiBBZGQgYnNlYXJjaC5jLgoJKENPTkZJR1VSRURfT0ZJTEVTKTogTmV3LCBsaXN0IG9mIG9iamVjdHMgY29uZmlndXJlIG1pZ2h0IGFkZC4KCShtYWludC1taXNzaW5nLCBtYWludC1idWlsZGFsbCk6IE5ldywgZm9yIG1haW50YWluZXJzIG9ubHkuCgkoY2xlYW4sIG1vc3RseWNsZWFuKTogQWRkIGluZm8vZHZpL2h0bWwgZmlsZXMuCgkqIGxpYmliZXJ0eS50ZXhpLCBjb3B5aW5nLWxpYi50ZXhpLCBvYnN0YWNrcy50ZXhpLCBmdW5jdGlvbnMudGV4aTogTmV3LgoJKiBnYXRoZXItZG9jczogTmV3LCBmb3IgbWFpbnRhaW5lcnMuCgkqIG1haW50LXRvb2w6IE5ldywgZm9yIG1haW50YWluZXJzLgoJKiBhbGxvY2EuYywgYXRleGl0LmMsIGJhc2VuYW1lLmMsIGJjbXAuYywgYmNvcHkuYywgYnNlYXJjaC5jLAoJYnplcm8uYywgY2FsbG9jLmMsIGNsb2NrLmMsIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlLCBnZXRjd2QuYywKCWdldHBhZ2VzaXplLmMsIGdldHB3ZC5jLCBpbmRleC5jLCBtZW1jaHIuYywgbWVtY21wLmMsIG1lbWNweS5jLAoJbWVtbW92ZS5jLCBtZW1zZXQuYywgcHV0ZW52LmMsIHJlbmFtZS5jLCByaW5kZXguYywgc2V0ZW52LmMsCglzaWdzZXRtYXNrLmMsIHN0cmNhc2VjbXAuYywgc3RyY2hyLmMsIHN0cmR1cC5jLCBzdHJlcnJvci5jLAoJc3RybmNhc2VjbXAuYywgc3RybmNtcC5jLCBzdHJyY2hyLmMsIHN0cnN0ci5jLCBzdHJ0b2QuYywgc3RydG9sLmMsCgl0bXBuYW0uYywgdmZvcmsuYywgdnByaW50Zi5jLCB3YWl0cGlkLmMsIHhhdGV4aXQuYywgeGV4aXQuYywKCXhtYWxsb2MuYywgeG1lbWR1cC5jLCB4c3RyZHVwLmMsIHhzdHJlcnJvci5jOiBBZGQgb3IgdXBkYXRlCglkb2N1bWVudGF0aW9uLgoKMjAwMS0wOS0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uY2F0LmMgKHJlY29uY2F0KTogRml4IGZvciB0cmFkaXRpb25hbCBDLgoKMjAwMS0wOS0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uY2F0LmMgKHJlY29uY2F0KTogTmV3IGZ1bmN0aW9uLgoKMjAwMS0wOS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uY2F0LmMgKHZjb25jYXRfbGVuZ3RoLCB2Y29uY2F0X2NvcHksIGNvbmNhdF9sZW5ndGgsCgljb25jYXRfY29weSwgY29uY2F0X2NvcHkyKTogTmV3IGZ1bmN0aW9ucy4KCShjb25jYXQpOiBVc2UgdmNvbmNhdF9sZW5ndGgvdmNvbmNhdF9jb3B5LgoKCSogYWxsb2NhLmMgKGxpYmliZXJ0eV9vcHRyLCBsaWJpYmVydHlfbnB0ciwgbGliaWJlcnR5X2xlbik6CglEZWZpbmUuCgoyMDAxLTA5LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhc3ByaW50Zi5jOiBEb24ndCBkZWZpbmUgVVNFX1NUREFSRy4gIFVzZSBWUEFSQU1TLCBWQV9PUEVOLAoJVkFfRklYRURBUkcgJiBWQV9DTE9TRS4KCgkqIHZhc3ByaW50Zi5jOiBDaGVjayBIQVZFX1NUUklOR19IIHdoZW4gaW5jbHVkaW5nIHN0cmluZy5oLgoJKGNoZWNraXQpOiBEZWxldGUgcmVkdW5kYW50IHByb3RvdHlwZS4gIEFkZCBBVFRSSUJVVEVfUFJJTlRGXzEuCglVc2UgVkFfT1BFTiwgVkFfRklYRURBUkcgJiBWQV9DTE9TRS4gIEZyZWUgYWxsb2NhdGVkIHN0cmluZy4KCjIwMDEtMDgtMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmNhdC5jIChjb25jYXQpOiBVc2UgVlBBUkFNUywgVkFfT1BFTiwgVkFfRklYRURBUkcgJiBWQV9DTE9TRS4KCjIwMDEtMDgtMjMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckByZWRoYXQuY29tPgoKCSogcmVnZXguYyAodHJ1bmNhdGVfd2NoYXIpOiBVc2Ugd2NydG9tYiBub3Qgd2N0b21iLgoKMjAwMS0wOC0yMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBwb3NpeC9yZWdleC5jIFtfTElCQ10gKGNvbnZlcnRfbWJzX3RvX3djcyk6IFVzZSBfX21icnRvd2MKCWluc3RlYWQgb2YgbWJydG93Yy4KCVtfTElCQ106IFVzZSBfX2lzd2N0eXBlIGluc3RlYWQgb2YgaXN3Y3R5cGUsIF9fd2NzbGVuIGluc3RlYWQgb2YKCXdjc2xlbiwgYW5kIF9fd2NzY29sbCBpbnN0ZWFkIG9mIHdjc2NvbGwuCgoyMDAxLTA4LTIyICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNhcm5lZ2llbWVsbG9uLmVkdT4KCgkqIGZpYmhlYXAuYyAoZmliaGVhcF9pbml0LCBmaWJub2RlX2luaXQpOiBSZW1vdmUuCgkoZmliaGVhcF9uZXcsIGZpYm5vZGVfbmV3KTogVXNlIHhjYWxsb2MgdG8gYWxsb2NhdGUgYW5kCglpbml0aWFsaXplIG1lbW9yeS4KCShmaWJoZWFwX2luc2VydCk6IFJlbW92ZSBjaGVjayBmb3Igbm9kZSBhbGxvY2F0aW9uIGZhaWx1cmUuCgoyMDAxLTA4LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGZpYmhlYXAubyk6IERlcGVuZCBvbiBjb25maWcuaC4KCSogZmliaGVhcC5jOiBUaWR5IGZvcm1hdHRpbmcuICBVc2UgY29uZmlnLmguYCBSZWFycmFuZ2Ugc29tZQoJZnVuY3Rpb25zIGZvciBpbmxpbmluZy4KClR1ZSBBdWcgMjEgMTI6MzU6MDQgMjAwMSAgQ2hyaXN0b3BoZXIgRmF5bG9yIDxjZ2ZAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogTmVlZCB0byBzZXQgSEFWRV9TWVNfRVJSTElTVCBhbmQgSEFWRV9TWVNfTkVSUiB3aGVuZXZlcgoJaG9zdGluZyBvbiBjeWd3aW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDgtMjAgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfbTg4MTEwX2V4dCk6IFJlbW92ZSAjaWZkZWYKCUhBUlJJU19GTE9BVF9GT1JNQVQuCgkoZmxvYXRmb3JtYXRfaWE2NF9zcGlsbF9saXR0bGUsIGZsb2F0Zm9ybWF0X2lhNjRfcXVhZF9saXR0bGUpCgkoZmxvYXRmb3JtYXRfaWE2NF9zcGlsbF9iaWcsIGZsb2F0Zm9ybWF0X2lhNjRfcXVhZF9iaWcpCgkoZmxvYXRmb3JtYXRfYXJtX2V4dF9iaWcsIGZsb2F0Zm9ybWF0X2FybV9leHRfbGl0dGxlYnl0ZV9iaWd3b3JkKQoJKGZsb2F0Zm9ybWF0X204ODExMF9oYXJyaXNfZXh0KTogTmV3IGZsb2F0IGZvcm1hdHMuCgoyMDAxLTA4LTIwICBEYW5pZWwgQmVybGluICA8ZGFuQGNnc29mdHdhcmUuY29tPgoKCSogZmliaGVhcC5jOiBOZXcgZmlsZS4gRmlib25hY2NpIGhlYXAuCgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIGZpYmhlYXAuYy4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgZmliaGVhcC5vLgoJKGZpYmhlYXAubyk6IEFkZCBkZXBlbmRlbmNpZXMgZm9yIGZpYmhlYXAuby4KCjIwMDEtMDgtMTcgIENocmlzdG9waGVyIEZheWxvciA8Y2dmQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEFsd2F5cyBzZXQgSEFWRV9TWVNfRVJSTElTVCB3aGVuIHRhcmdldHRpbmcgY3lnd2luLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAxLTA4LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5jIChodGFiX2hhc2hfc3RyaW5nKTogTmV3LgoKMjAwMS0wOC0xMyAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF9pZWVlX2RvdWJsZV9saXR0bGVieXRlX2JpZ3dvcmQpOiBGaXgKCW5hbWUuCgoyMDAxLTA4LTEyICBJc2FtdSBIYXNlZ2F3YSAgPGlzYW11QHlhbWF0by5pYm0uY29tPgoKCSogcmVnZXguYyAod2NzX3JlZ2V4X2NvbXBpbGUpOiBVc2UgYXBwcm9wcmlhdGUgc3RyaW5nCgl0byBjb21wYXJlIHdpdGggY29sbGF0aW5nIGVsZW1lbnQuCglGaXggdGhlIHBhZGRpbmcgZm9yIHRoZSBhbGlnbm1lbnQuCgoyMDAxLTA4LTEwICBBbmRyZXcgQ2FnbmV5ICA8YWMxMzEzMTNAcmVkaGF0LmNvbT4KCgkqIGxiYXNlbmFtZS5jIChsYmFzZW5hbWUpOiBDaGFuZ2UgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byByZXR1cm4gYQoJY29uc3QgY2hhciBwb2ludGVyLgoKMjAwMS0wOC0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uX21lcnJpbGxAcmVkaGF0LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX3NwZWNpYWxfbmFtZSk6ICJHUiIgLT4gInJlZmVyZW5jZSB0ZW1wb3JhcnkKCWZvciIuCgoyMDAxLTA4LTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGNvbmNhdC5vKTogRGVwZW5kIG9uIGNvbmZpZy5oLgoKMjAwMS0wNy0zMCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uY2F0LmM6IEluY2x1ZGUgImNvbmZpZy5oIi4KCjIwMDEtMDctMzAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHJlZ2V4LmM6IERlY2xhcmUgd2NzIGZ1bmN0aW9ucyBvbmx5IGlmIGNvbXBpbGluZyB3aXRoCglNQlNfU1VQUE9SVC4KCURvbid0IHVzZSAjZWxpZiBmb3IgdHJhZGl0aW9uYWwgQy4KCjIwMDEtMDctMjMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckByZWRoYXQuY29tPgoKCSogcmVnZXguYzogUmV2YW1wIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBXQ0hBUiBmdW5jdGlvbnMgdG8KCW5vdCB1c2UgdG9vIG11Y2ggc3RhY2suCgoyMDAxLTA3LTMwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiByZWdleC5jOiBEZWNsYXJlIHdjcyBmdW5jdGlvbnMgb25seSBpZiBjb21waWxpbmcgd2l0aAoJTUJTX1NVUFBPUlQuCglEb24ndCB1c2UgI2VsaWYgZm9yIHRyYWRpdGlvbmFsIEMuCgoyMDAxLTA3LTI1ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIE1ha2VmaWxlLmluIChyZWdleC5vKTogQWRkIGRlcGVuZGVuY3kgb24gY29uZmlnLmguCgoyMDAxLTA3LTE4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogcmVnZXguYyAoV09SRENIQVJfUCkgW1dDSEFSXTogQWxzbyByZXR1cm4gdHJ1ZSBmb3IgdGhlCgl1bmRlcnNjb3JlIGNoYXJhY3Rlci4KCjIwMDEtMDctMTggIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckByZWRoYXQuY29tPgoKCSogcmVnZXguYzogTGltaXQgc3RyaW5nIGxlbmd0aCBwcmludGVkIGluIGRlYnVnIG1lc3NhZ2VzIHRvIDEwMAoJY2hhcnMuCgoyMDAxLTA3LTE4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiByZWdleC5jOiBQbGFjZSB1bmRlciBMR1BMIHZlcnNpb24gMi4xLgoKMjAwMS0wNy0xMCAgSmVmZiBKb2huc3RvbiAgPGpqb2huc3RuQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIHN1cHBvcnQgZm9yIHJlZ2V4IGNvZGUuCgkqIHJlZ2V4LmM6IE5ldyBmaWxlLgoKMjAwMS0wNy0wNSAgTWFyayBLbGVpbiAgPG1rbGVpbkBkaXMuY29tPgoKCSogTWFrZWZpbGUuaW46IEFkZCBmZnMuYyBkZXBlbmRlbmN5LgoJKiBjb25maWd1cmUuaW46IEFkZCBmZnMuYy4KCSogZmZzLmM6IE5ldyBmaWxlLgoKMjAwMS0wNi0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmNhdC5jOiBJbmNsdWRlIDxzeXMvdHlwZXMuaD4uCgoyMDAxLTA2LTExICBMb3JlbiBKLiBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCWJvb3RzdHJhcC8zMTA2CgkqIHN0cmVycm9yLmMgKHN5c19uZXJyKTogSGlkZSB0aGUgT1MgaGVhZGVyIHZlcnNpb24uCgkqIHN0cnNpZ25hbC5jIChzeXNfbnNpZyk6IExpa2V3aXNlLgoKMjAwMS0wNi0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmNhdC5jOiBJbmNsdWRlIHN0cmluZy5oLiAgRml4IGludCB2cyBzaXplX3QgdXNhZ2UuCglTaW1wbGlmeSB0aGUgaXRlcmF0aW9uIGxvb3BzLiAgVXNlIG1lbWNweS4KCjIwMDEtMDUtMTYgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY2FybmVnaWVtZWxsb24uZWR1PgoKCSogcGFydGl0aW9uLmM6IEZpeCBtaXNzcGVsbGluZyBvZiBgaW1wbGVtZW50YXRpb24nLgoKMjAwMS0wNS0wOSAgVGhpZW1vIFNldWZlciAgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgoJKiBtZDUuYyAobWQ1X2luaXRfY3R4KTogRGVjbGFyZSBjb25zdGFudHMgYXMgdW5zaWduZWQuCgkobWQ1X3Byb2Nlc3NfYmxvY2spOiBMaWtld2lzZS4KCjIwMDEtMDUtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV92M193aXRoX2RldGFpbHMsCglpc19nbnVfdjNfbWFuZ2xlZF9jdG9yLCBpc19nbnVfdjNfbWFuZ2xlZF9kdG9yKTogVXNlIEsrUiBzdHlsZQoJZnVuY3Rpb24gZGVmaW5pdGlvbi4KCSogdGVybmFyeS5jOiBVc2UgSytSIHN0eWxlIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgVXNlIFBUUiwgbm90Cgl2b2lkICouICBNYWtlIGFyZ3VtZW50cyBjb25zdGFudCB3aGVyZSBwb3NzaWJsZS4KCjIwMDEtMDUtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfbWF4KTogTmV3IGZ1bmN0aW9uLgoJKHNwbGF5X3RyZWVfbWluKTogTGlrZXdpc2UuCgoyMDAxLTA0LTE1ICBEYW5pZWwgQmVybGluICA8ZGFuQGNnc29mdHdhcmUuY29tPgoKCSogdGVybmFyeS5jOiBOZXcgZmlsZSAtIFRlcm5hcnkgc2VhcmNoIHRyZWUgaW1wbGVtZW50YXRpb24uCgoJKiBNYWtlZmlsZS5pbjogQWRkIHRlcm5hcnkubywgYW5kIHRlcm5hcnkuYyBkZXBlbmRlbmNpZXMuCgoyMDAxLTA0LTAzICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogbWFrZS10ZW1wLWZpbGUuYyAodHJ5KTogSW5saW5lLgoKMjAwMS0wMi0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChtYWtlLXRlbXAtZmlsZS5vKTogRGVwZW5kIG9uIGNvbmZpZy5oLgoKMjAwMS0wMy0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWVtY2hyLmMgKG1lbWNocik6IEFkanVzdCBjb25kaXRpb24gdG8gYXZvaWQgaW5maW5pdGUgbG9vcC4KCjIwMDEtMDMtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGVfZGlzY3JpbWluYXRvcik6IGBfMCcgaXMgZGlzY3JpbWluYXRvciAjMSwKCWBfJyBub3QgZm9sbG93ZWQgYnkgYSBkaWdpdCBpcyBpbnZhbGlkLgoKMjAwMS0wMy0yMiAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKHN0cmluZ19saXN0X2RlbGV0ZSk6IFVzZSBkeW5fc3RyaW5nX2RlbGV0ZQoJaW5zdGVhZCBvZiBmcmVlLCB0byBmcmVlIHRoZSBjb250ZW50cyBhcyB3ZWxsIGFzIHRoZSBzdHJpbmcKCXN0cnVjdHVyZS4KCjIwMDEtMDMtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBtYWtlLXRlbXAtZmlsZS5jOiBBbHdheXMgZGVmYXVsdCBESVJfU0VQQVJBVE9SIHRvICcvJy4KCURvbid0IGRlZmF1bHQgUF90bXBkaXIgdG8gYW55dGhpbmcuICBUcnkgL3Zhci90bXAgYmVmb3JlCgkvdXNyL3RtcC4KCjIwMDEtMDMtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBjaG9vc2UtdGVtcC5jOiBTcGxpdCBvZmYgbWFrZV90ZW1wX2ZpbGUsIGFuZCB0aGUgY29kZQoJZHVwbGljYXRlZCBiZXR3ZWVuIGl0IGFuZCBjaG9vc2VfdGVtcF9iYXNlLCBpbnRvLi4uCgkqIG1ha2UtdGVtcC1maWxlLmM6IC4uLiBoZXJlOyBuZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgbWFrZS10ZW1wLWZpbGUuYy4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgbWFrZS10ZW1wLWZpbGUuby4KCjIwMDEtMDMtMjAgIEppbSBCbGFuZHkgIDxqaW1iQHJlZGhhdC5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChzdHJ1Y3QgZGVtYW5nbGluZ19kZWYpOiBOZXcgZmllbGRzOgoJaXNfY29uc3RydWN0b3IgYW5kIGlzX2Rlc3RydWN0b3IuCgkoZGVtYW5nbGluZ19uZXcpOiBJbml0aWFsaXplIHRoZW0uCgkoZGVtYW5nbGVfY3Rvcl9kdG9yX25hbWUpOiBTZXQgdGhlbSwgaWYgd2UgZGV0ZWN0IGEgY29uc3RydWN0b3IKCW9yIGRlc3RydWN0b3IuCgkoZGVtYW5nbGVfdjNfd2l0aF9kZXRhaWxzLCBpc19nbnVfdjNfbWFuZ2xlZF9jdG9yLAoJaXNfZ251X3YzX21hbmdsZWRfZHRvcik6IE5ldyBmdW5jdGlvbnMuCgoyMDAxLTAzLTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNwbHVzLWRlbS5jIChtYWluKTogU2tpcCBpbml0aWFsICQuCgoyMDAxLTAzLTE1ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuYyAoaGlnaGVyX3ByaW1lX251bWJlcik6IFNpbGVuY2Ugd2FybmluZyB0aGF0IDQyOTQ5NjcyOTEKCW1pZ2h0IGJlIGEgc2lnbmVkIGludGVnZXIgdW5kZXIgcHJlLUlTTyBDIHN5c3RlbXMuCgoyMDAxLTAzLTEwICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgkgICAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGxpYmliZXJ0eS9sYmFzZW5hbWUuYzogTmV3IGZpbGUuCgkqIGxpYmliZXJ0eS9NYWtlZmlsZS5pbjogVXBkYXRlIGZvciBsYmFzZW5hbWUuCgoyMDAxLTAzLTA2ICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogYWNsb2NhbC5tNCAobGliaWJlcnR5X0FDX0ZVTkNfQ19BTExPQ0EpOiBOZXcuCgkqIGNvbmZpZ3VyZS5pbjogUmVwbGFjZSBhbGwgYWxsb2NhIGxvZ2ljIHdpdGggYSBzaW1wbGUgdXNlIG9mCgl0aGUgYWJvdmUgbmV3IG1hY3JvLgoJKiBjb25maWcudGFibGU6IEtpbGwgKi0qLWJlb3MqIGVudHJ5LgoJKiBjb25maWcvbWgtYmVvczogRGVsZXRlLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCgkqIE1ha2VmaWxlLmluIChBTExPQ0EsIEhGSUxFUyk6IEtpbGwuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIGFsbG9jYS5vLgoJKGFsbG9jYS5vKTogRGVwZW5kIG9uIGxpYmliZXJ0eS5oLgoJKGFyZ3Yubyk6IERvbid0IGRlcGVuZCBvbiBhbGxvY2EtY29uZi5oLgoJKiBhbGxvY2EtY29uZi5oOiBEZWxldGUuCgkqIGFsbG9jYS5jOiBJbmNsdWRlIGxpYmliZXJ0eS5oLiAgS2lsbCBhbGwgI2lmZGVmIGVtYWNzCglibG9ja3MuICBQcm92aWRlIHRoZSBDIGFsbG9jYSB1bmNvbmRpdGlvbmFsbHkuICBVc2UgUFRSIHdoZXJlCglhcHByb3ByaWF0ZS4gIE1ha2UgaTAwYWZ1bmMgc3RhdGljLgoJKiBhcmd2LmM6IERvbid0IGluY2x1ZGUgYWxsb2NhLWNvbmYuaC4KCjIwMDEtMDMtMDQgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBjcGx1cy1kZW0uYyAobWFpbik6IENhc3QgZW51bSBzdHlsZSB0byBpbnQuCgoyMDAxLTAyLTE2ICBMb3JlbiBKLiBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogY3BsdXMtZGVtLmMgKG1haW4pOiBJbml0aWFsaXplIHN0eWxlLgoKMjAwMS0wMi0wMiAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXMucmVkaGF0LmNvbT4KCgkqIENPUFlJTkcuTElCOiAgVXBkYXRlIHRvIExHUEwgMi4xIGZyb20gdGhlIEZTRi4KCjIwMDEtMDEtMzEgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCUFkZCBzdXBwb3J0IGZvciBKYXZhIGRlbWFuZ2xpbmcgdW5kZXIgdGhlIHYzIEFCSToKCSogY3AtZGVtYW5nbGUuYyAoTkFNRVNQQUNFX1NFUEFSQVRPUik6IE5ldyBkZWZpbmUuCgkoc3RydWN0IGRlbWFuZ2xpbmdfZGVmKTogQWRkIGBzdHlsZScgZmllbGQuCgkoZGVtYW5nbGluZ19uZXcpOiBOZXcgcGFyYW1ldGVyIGBzdHlsZScuIFNldCBpdCBpbiBkZW1hbmdsaW5nX3QuCgkoZGVtYW5nbGVfcHJlZml4KTogVXNlIE5BTUVTUEFDRV9TRVBBUkFUT1IuCgkoZGVtYW5nbGVfdHlwZV9wdHIpOiBEb24ndCBlbWl0IHBvaW50ZXIgc3ltYm9sIGlmIGRvaW5nIEphdmEgb3V0cHV0LgoJKGNwX2RlbWFuZ2xlKTogTmV3IHBhcmFtZXRlciBgc3R5bGUnLiBQYXNzIGl0IHRvIGRlbWFuZ2xpbmdfbmV3KCkuCgkobWFpbik6IENhbGwgY3BfZGVtYW5nbGUgd2l0aCBleHRyYSBwYXJhbWV0ZXIuCgkoamF2YV9kZW1hbmdsZV92Myk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2J1aWx0aW5fdHlwZV9uYW1lcyk6IE5ldy4gVGFibGUgb2YgcHJpbWl0aXZlIHR5cGUgbmFtZXMgdXNlZAoJZm9yIEphdmEgZGVtYW5nbGluZy4KCShkZW1hbmdsZV9idWlsdGluX3R5cGUpOiBMb29rIHVwIGluIGphdmFfYnVpbHRpbl90eXBlX25hbWVzIGlmIGRvaW5nCglKYXZhIG91dHB1dC4KCSogY3BsdXMtZGVtLmMgKGNwbHVzX2RlbWFuZ2xlKTogVXNlIGphdmFfZGVtYW5nbGVfdjMgdG8gZG8gSmF2YQoJZGVtYW5nbGluZy4KCShsb25nX29wdGlvbnMpOiBSZW1vdmUgb2Jzb2xldGUgYGphdmEnIG9wdGlvbi4KCShtYWluKTogUmVtb3ZlIGV4cGxpY2l0IGhhbmRsaW5nIG9mIGBqYXZhJyBvcHRpb24uIEluc3RlYWQsIHBhc3Mgc3R5bGUKCXBhcmFtZXRlciBpbiBjcGx1c19kZW1hbmdsZSBmbGFncyBhcyBnZGIgZG9lcy4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLmV4cGVjdGVkOiBBZGQgc29tZSBKYXZhIHRlc3QgY2FzZXMuCgoyMDAwLTEyLTI5ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGZubWF0Y2guYzogTWFrZSB0aGUgbm90ZSBhYm91dCB0aGUgb3JpZ2lucyBvZiB0aGlzIGZpbGUgbW9yZQoJYWNjdXJhdGUsIGF0IGxlYXN0IHVudGlsIHdlIGNhbiBzeW5jIHdpdGggZ2xpYmMuCgkqIGdldG9wdC5jOiBEaXR0by4KCSogZ2V0b3B0MS5jOiBEaXR0by4KCSogbWQ1LmM6IERpdHRvLgoJKiBvYnN0YWNrLmM6IERpdHRvLgoKMjAwMC0xMi0yNiAgTWljaGFlbCBTb2tvbG92ICA8bXNva29sb3ZAaXZhbi5IYXJoYW4uT1JHPgoKCSogYnNlYXJjaC5jOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmluIChmdW5jcyk6IEFkZCBic2VhcmNoLgoJKEFDX0NIRUNLX0ZVTkNTKTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0xMi0xMyAgTWljaGFlbCBTb2tvbG92ICA8bXNva29sb3ZAaXZhbi5IYXJoYW4uT1JHPgoKCSogc2FmZS1jdHlwZS5jOiAjaW5jbHVkZSAiYW5zaWRlY2wuaCIuCgkqIHN0cnRvZC5jOiBMaWtld2lzZS4KCjIwMDAtMTItMTMgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIHN0cnRvdWwuYzogSW5jbHVkZSBzYWZlLWN0eXBlLmgsIG5vdCBjdHlwZS5oLgoKMjAwMC0xMi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHNhZmUtY3R5cGUuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgc2FmZS1jdHlwZS5jLgoJKFJFUVVJUkVEX09GSUxFUyk6IEFkZCBzYWZlLWN0eXBlLm8uCgoJKiBhcmd2LmM6IERlZmluZSBJU0JMQU5LIGFuZCB1c2UgaXQsIG5vdCBpc3NwYWNlLgoJKiBiYXNlbmFtZS5jLCBjcGx1cy1kZW0uYywgZm5tYXRjaC5jLCBwZXhlY3V0ZS5jLCBzdHJ0b2QuYywKCXN0cnRvbC5jLCBzdHJ0b3VsLmM6IEluY2x1ZGUgc2FmZS1jdHlwZS5oLCBub3QgY3R5cGUuaC4gIFVzZQoJdXBwZXJjYXNlIGN0eXBlIG1hY3Jvcy4gIERvbid0IHRlc3QgSVNVUFBFUihjKS9JU0xPV0VSKGMpCgliZWZvcmUgY2FsbGluZyBUT0xPV0VSKGMpL1RPVVBQRVIoYykuCgoyMDAwLTEyLTA3ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZGlzdGNsZWFuKTogV2hlbiBjbGVhbmluZywgcmVtb3ZlIHRlc3RzdWl0ZS4KCjIwMDAtMTItMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoY3BsdXNfZGVtYW5nbGVfdjMpOiBDaGVjayB0aGF0IGl0J3MgYSB2MyBtYW5nbGVkCgluYW1lIGJlZm9yZSBhbGxvY2F0aW5nIHRoZSBkeW5fc3RyaW5nLgoKMjAwMC0xMi0wNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjcC1kZW1hbmdsZS5jOiBzL25ld19hYmkvdjMvLgoJKiBjcGx1cy1kZW0uYzogTGlrZXdpc2UuCgkoY3VycmVudF9kZW1hbmdsaW5nX3N0eWxlKTogTm93IGF1dG9fZGVtYW5nbGluZy4KCShjcGx1c19kZW1hbmdsZSk6IFRyeSB2MyBkZW1hbmdsaW5nIGlmIEFVVE9fREVNQU5HTElORy4KCShtYWluKTogVXNlIHN0YW5kYXJkIHN5bWJvbCBjaGFycyBmb3IgYXV0b19kZW1hbmdsaW5nLgoKMjAwMC0xMS0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGhhc2h0YWIuYyAoaGlnaGVyX3ByaW1lX251bWJlcik6IFVzZSBhIHRhYmxlLCByYXRoZXIgdGhhbiBhCglzZWl2ZSwgdG8gZmluZCB0aGUgbmV4dCBwcmltZS4KCjIwMDAtMTEtMjIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGNwbHVzLWRlbS5jIChtYWluKTogSGFuZGxlIGduYXRfZGVtYW5nbGluZy4KCjIwMDAtMTEtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBhY2xvY2FsLm00IChMSUJfQUNfUFJPR19DQyk6IE1vdmVkIGhlcmUgZnJvbSBjb25maWd1cmUuaW4uCgkoQUNfREVGSU5FX05PQVVUT0hFQURFUik6IE5ldyAtIHdvcmsgYXJvdW5kIGJ1ZyBpbiBhdXRvaGVhZGVyLgoJKiBjb25maWd1cmUuaW46IENhbGwgQUNfQ19JTkxJTkUgYW5kIEFDX0NfQ09OU1QuICBVc2UgdGhyZWUKCWFyZ3VtZW50IGZvcm0gb2YgQUNfREVGSU5FIGluIGR1bW15IGRlZmluaXRpb25zIGJsb2NrLiAgVXNlCglBQ19ERUZJTkVfTk9BVVRPSEVBREVSIGZvciByZWFsIGRlZmluaXRpb25zIG9mIHRoaW5ncyBkZWZpbmVkCglpbiBkdW1teSBibG9jay4gIFByZWxvYWQgY2FjaGUgdmFyaWFibGVzIGluc3RlYWQgb2YgYnlwYXNzaW5nCgl0ZXN0cywgd2hlcmUgcG9zc2libGUuCgkqIGFjY29uZmlnLmg6IFJlbW92ZWQuCgoJKiB4bWFsbG9jLmMgKHhtYWxsb2NfZmFpbGVkKTogTmV3IGZ1bmN0aW9uLCBkb2VzIGVycm9yCglyZXBvcnRpbmcgb24gZmFpbGVkIGFsbG9jYXRpb24uCgkoeG1hbGxvYywgeGNhbGxvYywgeHJlYWxsb2MpOiBVc2UgaXQuCgoyMDAwLTExLTIxICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjcGx1cy1kZW0uYyAoY3BsdXNfZGVtYW5nbGUpOiBGaXggZm9ybWF0dGluZy4KCShncm93X3ZlY3QpOiBEaXR0by4KCShhZGFfZGVtYW5nbGUpOiBEaXR0by4KCShpbnRlcm5hbF9jcGx1c19kZW1hbmdsZSk6IERpdHRvLgoJKG1vcF91cCk6IERpdHRvLgoKMjAwMC0xMS0yMSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogY3BsdXMtZGVtLmMgKG1haW4pOiBIYW5kbGUgamF2YV9kZW1hbmdsaW5nLgoKMjAwMC0xMS0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BsdXMtZGVtLmMgKGdyb3dfdmVjdCk6IFByb3RvdHlwZS4KCShhZGFfZGVtYW5nbGUpOiBDYXN0IHRoZSBhcmcgb2YgY3R5cGUgbWFjcm9zIHRvIHVuc2lnbmVkIGNoYXIuCgoyMDAwLTExLTE1ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjcGx1cy1kZW0uYyAoYWRhX2RlbWFuZ2xlKTogQWRkIGJhY2sgQVRUUklCVVRFX1VOVVNFRCBmb3IKCXBhcmFtZXRlciBgb3B0aW9uJy4KCjIwMDAtMTEtMTUgIEtlbm5ldGggQmxvY2sgIDxrZW5uZXRoLmJsb2NrQGNvbXBhcS5jb20+CgoJKiBjcGx1cy1kZW0uYzogRWxpbWluYXRlIHVzZSBvZiBERUZVTiwgaXQgaXMgb2Jzb2xldGUgYW5kIGNhbm5vdAoJYmUgdXNlZCBpbiBHQ0MuCgoyMDAwLTExLTE1ICBLZW5uZXRoIEJsb2NrICA8a2VubmV0aC5ibG9ja0Bjb21wYXEuY29tPgoKCSogY3BsdXMtZGVtLmM6IEFkZCBnbmF0IGRlbWFuZ2xlci4gIEFkZCBqYXZhIHRvIGRlbWFuZ2xlIHN0eWxlCglsaXN0LgoKMjAwMC0xMS0wNCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogaGFzaHRhYi5jIChodGFiX2V4cGFuZCk6IENoYW5nZSB0byByZXR1cm4gaW50LiAgVXNlIGNhbGxvYyBvcgoJeGNhbGxvYyBkZXBlbmRpbmcgb24gaHRhYi0+cmV0dXJuX2FsbG9jYXRpb25fZmFpbHVyZS4gIFJldHVybiB6ZXJvCglpZiBjYWxsb2MgZmFpbHMuCgkoaHRhYl9jcmVhdGUpOiBVcGRhdGUgY29tbWVudCB0byBjb3ZlciBtZW1vcnkgYWxsb2NhdGlvbi4KCShodGFiX3RyeV9jcmVhdGUpOiBOZXcuCgkoaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogUmV0dXJuIE5VTEwgaWYgaHRhYl9leHBhbmQgZmFpbHMuCglVcGRhdGUgY29tbWVudCB0byBjb3ZlciB0aGlzLgoKMjAwMC0xMS0wMyAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogaGFzaHRhYi5jOiBDaGFuZ2Ugdm9pZCAqIHRvIFBUUiB3aGVyZSBuZWNlc3NhcnkuCgkoaHRhYl9jcmVhdGUsIGh0YWJfZXhwYW5kKTogQ29ycmVjdCBmb3JtYXR0aW5nIG9mIGNvbW1lbnQgYmVmb3JlCglmdW5jdGlvbi4KCjIwMDAtMTAtMjIgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChzdHJpbmdfbGlzdF9kZWYpOiBBZGQgY2FyZXRfcG9zaXRpb24gYW5kIGNvbW1lbnRzLgoJKHJlc3VsdF9jYXJldF9wb3MpOiBOZXcgbWFjcm8uCgkocmVzdWx0X2FwcGVuZF9zdHJpbmcpOiBSZW5hbWUgdG8uLi4KCShyZXN1bHRfYWRkX3N0cmluZyk6IC4uLiB0aGlzLCBhbmQgaW5zZXJ0IGF0IGNhcmV0IHBvc2l0aW9uLgoJUmVuYW1lIHRocm91Z2hvdXQuCgkocmVzdWx0X2FwcGVuZCk6IFJlbmFtZSB0by4uLgoJKHJlc3VsdF9hZGQpOiAuLi4gdGhpcywgYW5kIGluc2VydCBhdCBjYXJldCBwb3NpdGlvbi4gIFJlbmFtZQoJdGhyb3VnaG91dC4KCShyZXN1bHRfYXBwZW5kX2NoYXIpOiBSZW5hbWUgdG8uLi4KCShyZXN1bHRfYWRkX2NoYXIpOiAuLi4gdGhpcywgYW5kIGluc2VydCBhdCBjYXJldCBwb3NpdGlvbi4gIFJlbmFtZQoJdGhyb3VnaG91dC4KCShyZXN1bHRfYXBwZW5kX3NwYWNlKTogUmVtb3ZlLgoJKHN0cmluZ19saXN0X25ldyk6IEluaXRpYWxpemUgY2FyZXQgcG9zaXRpb24uCgkocmVzdWx0X2FkZF9zZXBhcmF0ZWRfY2hhcik6IFVzZSBjYXJldCBwb3NpdGlvbi4KCShyZXN1bHRfZ2V0X2NhcmV0KTogTmV3IGZ1bnRpb24uCgkocmVzdWx0X3NldF9jYXJldCk6IExpa2V3aXNlLgoJKHJlc3VsdF9zaGlmdF9jYXJldCk6IExpa2V3aXNlLgoJKHJlc3VsdF9wcmV2aW91c19jaGFyX2lzX3NwYWNlKTogTGlrZXdpc2UuCgkoc3Vic3RpdHV0aW9uX3N0YXJ0KTogVXNlIGNhcmV0IHBvc2l0aW9uLgoJKHN1YnN0aXR1dGlvbl9hZGQpOiBMaWtld2lzZS4KCShkZW1hbmdsaW5nX25ldyk6IEluaXRpYWxpemUgY2FyZXQgcG9zaXRpb24uCgkoZGVtYW5nbGVfZW5jb2RpbmcpOiBVc2UgY2FyZXQgcG9zaXRpb24uCgkoZGVtYW5nbGluX25lc3RlZF9uYW1lKTogUHV0IENWIHF1YWxpZmllcnMgYWZ0ZXIgbmFtZS4KCShkZW1hbmdsZV90eXBlX3B0cik6IFVzZSBzd2l0Y2ggc3RhdGVtZW50LiAgSGFuZGxlIHBvaW50ZXJzIHRvCglhcnJheXMuICBEb24ndCB1c2UgcmVzdWx0X2FwcGVuZF9zcGFjZS4gIFVzZSBjYXJldCBwb3NpdGlvbi4KCShkZW1hbmdsZV90eXBlKTogRW1pdCBDViBxdWFsaWZpZXJzIGFmdGVyIHVuZGVybHlpbmcgdHlwZS4gIEFkanVzdAoJY2FsbCB0byBkZW1hbmdsZV9hcnJheV90eXBlLgoJKGRlbWFuZ2xlX2FycmF5X3R5cGUpOiBBZGQgcGFyYW1ldGVyIHRvIGhhbmRsZSBwb2ludGVycyB0byBhcnJheXMuCgoyMDAwLTEwLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5jIChzcGxheV90cmVlX2luc2VydCk6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9wcmVkZWNlc3Nvcik6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDAwLTA5LTE0ICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBzcGxheS10cmVlLmM6ICNpbmNsdWRlIDxzdGRpby5oPi4KCjIwMDAtMDktMTQgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgdHdvIHRlc3RzIGZvciBhbm9ueW1vdXMKCW5hbWVzcGFjZXMuCgkqIGNwbHVzLWRlbS5jIChnbnVfc3BlY2lhbCk6IEhhbmRsZSBhbm9ueW1vdXMgbmFtZXNwYWNlcy4KCjIwMDAtMDktMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfcHJlZGVjZXNzb3IpOiBOZXcgZnVuY3Rpb24uCgkoc3BsYXlfdHJlZV9zdWNjZXNzb3IpOiBMaWtld2lzZS4KCjIwMDAtMDktMTAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgZm91ciB0ZXN0cyBmb3IgdHlwZV9pbmZvCgltYW5nbGluZy4KCSogY3BsdXMtZGVtLmMgKGdudV9zcGVjaWFsKTogVXNlIGRvX3R5cGUsIG5vdCBkZW1hbmdsZV9mdW5kX3R5cGUsCglmb3IgYSBub24tdGVtcGxhdGUgbm9uLXF1YWxpZmllZCB0eXBlX2luZm8gZnVuY3Rpb24gb3Igbm9kZS4KCjIwMDAtMDktMDggIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jOiBGaXggY29weXJpZ2h0IGJhbm5lci4KCjIwMDAtMDktMDcgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIG1kNS5jOiAjaW5jbHVkZSAiYW5zaWRlY2wuaCIuCgoyMDAwLTA5LTA2ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoc3RhdHVzX2FsbG9jYXRpb25fZmFpbGVkKTogUmVhcnJhbmdlIHdoaXRlc3BhY2UuCgkoZGVtYW5nbGVfdHlwZSk6IEhhbmRsZSBzdWJzdGl0dXRpb24gY2FuZGlkYXRlcyBjb3JyZWN0bHkgaW4gdGhlCglmYWNlIG9mIHNwZWNpYWwgc3Vic3RpdHV0aW9ucy4KCjIwMDAtMDktMDUgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9lbmNvZGluZyk6IFJlbmFtZSB2YXJpYWJsZS4KCShkZW1hbmdsZV9uYW1lKTogUmVuYW1lIHBhcmFtZXRlci4gIEhhbmRsZSByZXR1cm4gdHlwZQoJc3VwcHJlc3Npb24uCgkoZGVtYW5nbGVfbmVzdGVkX25hbWUpOiBSZW5hbWUgcGFyYW1ldGVyLgoJKGRlbWFuZ2xlX3ByZWZpeCk6IExpa2V3aXNlLiAgQ2hhbmdlIHJldHVybiB0eXBlIHN1cHByZXNzaW9uLgoJKGRlbWFuZ2xlX3VucXVhbGlmaWVkX25hbWUpOiBBZGQgcGFyYW1ldGVyLiAgRmxhZyBjb25zdHJ1Y3RvcnMgYW5kCgljb252ZXJzaW9uIG9wZXJhdG9ycy4KCShkZW1hbmdsZV9zcGVjaWFsX25hbWUpOiBGaXggY29tbWVudC4KCShkZW1hbmdsZV90eXBlKTogUmVuYW1lIHZhcmlhYmxlLgoJKGRlbWFuZ2xlX2JhcmVfZnVuY3Rpb25fdHlwZSk6IENoZWNrIGZvciBtaXNzaW5nIHJldHVybiB0eXBlIGFuZAoJcGFyYW1ldGVyLgoJKGRlbWFuZ2xlX2NsYXNzX2VudW1fdHlwZSk6IFJlbmFtZSBwYXJhbWV0ZXIuCgkoZGVtYW5nbGVfZGlzY3JpbWluYXRvcik6IEZpeCBtaXNzcGVsbGluZyBpbiBjb21tZW50LgoKMjAwMC0wOC0zMSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKEN5Z3dpbik6IHNwZWNpYWwgY2FzZSBjeWd3aW4gb25seSB3aGVuIHdlJ3JlCglidWlsZGluZyBjeWd3aW4sIG5vdCB3aGVuIHdlJ3JlIGhvc3RpbmcgY3lnd2luLgoKMjAwMC0wOS0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX3RlbXBsYXRlX2FyZyk6IEVhdCBhbiBgRScgYWZ0ZXIgYW4KCTxleHByZXNzaW9uPi4KCjIwMDAtMDktMDQgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV90eXBlX3B0cik6IEluY3JlbWVudCBwb3NpdGlvbiBwYXN0Cglwb2ludGVyIGFuZCByZWZlcmVuY2UgY2hhcmFjdGVycy4KCjIwMDAtMDktMDQgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9udl9vZmZzZXQpOiBOZXcgZnVuY3Rpb24uCgkoZGVtYW5nbGVfdl9vZmZzZXQpOiBMaWtld2lzZS4KCShkZW1hbmdsZV9jYWxsX29mZnNldCk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX3NwZWNpYWxfbmFtZSk6IFVwZGF0ZSB0aHVuayBkZW1hbmdsaW5nIHRvIGNvbXBseSB3aXRoCglBQkkgY2hhbmdlcy4KCjIwMDAtMDktMDMgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChBTk9OWU1PVVNfTkFNRVNQQUNFX1BSRUZJWCk6IE5ldyBtYWNyby4KCShzdWJzdGl0dXRpb25fZGVmKTogUmVtb3ZlIHRlbXBsYXRlX3Bhcm1fbnVtYmVyLgoJKE5PVF9URU1QTEFURV9QQVJNKTogUmVtb3ZlLgoJKHJlc3VsdF9pbnNlcnRfc3RyaW5nKTogTmV3IG1hY3JvLgoJKHJlc3VsdF9pbnNlcnQpOiBMaWtld2lzZS4KCShyZXN1bHRfaW5zZXJ0X2NoYXIpOiBMaWtld2lzZS4KCShzdWJzdGl0dXRpb25fYWRkKTogUmVtb3ZlIGxhc3QgcGFyYW1ldGVyLiAgRG9uJ3Qgc3RvcmUgdGVtcGxhdGUKCXBhcm0gbnVtYmVyLgoJKEJGVF9OT19SRVRVUk5fVFlQRSk6IERlZmluZSBhcyBOVUxMLgoJKGRlbWFuZ2xlX2VuY29kaW5nKTogQWRqdXN0IGNhbGwgdG8gZGVtYW5nbGVfYmFyZV9mdW5jdGlvbl90eXBlLgoJKGRlbWFuZ2xlX25hbWUpOiBBZGp1c3Qgc3Vic3RpdHV0aW9uLiAgQWRqdXN0IGNhbGwgdG8KCXN1YnN0aXR1dGlvbl9hZGQuCgkoZGVtYW5nbGVfcHJlZml4KTogQWRqdXN0IGNhbGwgdG8gc3Vic3RpdHV0aW9uX2FkZC4KCShkZW1hbmdsZV9pZGVudGlmaWVyKTogSGFuZGxlIGFub255bW91cyBuYW1lc3BhY2VzLgoJKGRlbWFuZ2xlX29wZXJhdG9yX25hbWUpOiBDaGFuZ2UgZGVtYW5nbGluZyBvZiB2ZW5kb3ItZXh0ZW5kZWQKCW9wZXJhdG9yIHRvIG1hdGNoIEFCSSBjaGFuZ2VzLgoJKGRlbWFuZ2xlX3R5cGVfcHRyKTogQ2hhbmdlIHBhcmFtZXRlcnMuICBNYWtlIHJlY3Vyc2l2ZS4gIEhhbmRsZQoJc3Vic3RpdHV0aW9ucyBoZXJlLgoJKGRlbWFuZ2xlX3R5cGUpOiBBZGp1c3QgY2FsbHMgdG8gZGVtYW5nbGVfdGVtcGxhdGVfcGFyYW0sCglzdWJzdGl0dXRpb25fYWRkLCBhbmQgZGVtYW5nbGVfdHlwZV9wdHIuICBGaXggc3Vic3RpdHV0aW9uIG9mCgl0ZW1wbGF0ZWQgdHlwZXMuCgkoZGVtYW5nbGVfZnVuY3Rpb25fdHlwZSk6IENoYW5nZSBwYXJhbWV0ZXIgdG8gYSBwb2ludGVyLgoJKGRlbWFuZ2xlX2JhcmVfZnVuY3Rpb25fdHlwZSk6IExpa2V3aXNlLiAgQWRqdXN0IGluc2VydGlvbiBwb2ludC4KCShkZW1hbmdsZV90ZW1wbGF0ZV9wYXJhbSk6IFJlbW92ZSBsYXN0IHBhcmFtZXRlci4KCShkZW1hbmdsZV9leHByX3ByaW1hcnkpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLiAgQWRqdXN0IGNhbGwgdG8KCWRlbWFuZ2xlX3RlbXBsYXRlX3BhcmFtLgoJKGlzX21hbmdsZWRfY2hhcik6IEFjY2VwdCBgJCcgYW5kIGAuJy4KCSogY3BsdXMtZGVtLmMgKGdudV9uZXdfYWJpX3N5bWJvbF9jaGFyYWN0ZXJzKTogQWRkICckJyBhbmQgJy4nLgoJKiBkeW4tc3RyaW5nLmMgKGR5bl9zdHJpbmdfaW5zZXJ0X2NoYXIpOiBOZXcgZnVuY3Rpb24uCgoyMDAwLTA4LTMxICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIG5pbmUgdGVzdHMgZm9yCgl1bmRlcnNjb3JlLWFmdGVyLW51bWJlciBmb2xsb3dlZCBieSBmaXZlIHRlc3RzIGZvciBuYW1lLXNpZ25hdHVyZQoJZGVsaW1pdGVyLgoKMjAwMC0wOC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChtZDUubyk6IERlcGVuZCBvbiBjb25maWcuaC4KCjIwMDAtMDgtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKFJFUVVJUkVEX09GSUxFUyk6IEFkZCBtZDUuby4KCShDRklMRVMpOiBBZGQgbWQ1LmMuCgkqIG1kNS5jOiBOZXcgZmlsZS4KCjIwMDAtMDgtMjcgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9uYW1lKTogSW5pdGlhbGl6ZSB0ZW1wbGF0ZV9wIGluIGxvY2FsCgluYW1lIGNhc2UuICBEb24ndCByZS1hZGQgc3Vic3RpdHV0aW9ucyBhcyBjYW5kaWRhdGVzLgoJKGRlbWFuZ2xlX25lc3RlZF9uYW1lKTogVXNlIDx1bnF1YWxpZmllZC1uYW1lPi4KCShkZW1hbmdsZV9wcmVmaXgpOiBMaWtld2lzZS4gIERvbid0IGFkZCB0ZW1wbGF0ZSBuYW1lcyBhcwoJc3Vic3RpdHV0aW9uIGNhbmRpZGF0ZXMgdHdpY2UsIG9yIHJlLWFkZCBhIHN1YnN0aXR1dGlvbiBvciB0aGUKCWxhc3QgcHJlZml4IGNvbXBvbmVudC4KCShkZW1hbmdsZV9sb2NhbF9uYW1lKTogQWRqdXN0IG91dHB1dCBmb3JtYXQuCgoyMDAwLTA4LTI1ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAocmVzdWx0X2FkZF9zZXBhcmF0ZWRfY2hhcik6IENoYW5nZSBwYXJhbWV0ZXIgdG8KCWludC4KCShzdWJzdGl0dXRpb25fYWRkKTogRG9uJ3QgY2hlY2sgZm9yIGR1cGxpY2F0ZXMuICBDaGVjayBpZgoJcHJldmlvdXNseSBhbGxvY2F0ZWQgc2l6ZSBpcyB6ZXJvLgoJKGRlbWFuZ2xlX25hbWUpOiBSZW1vdmUgZHVwbGljYXRlIGNoZWNrIGZvciBzdGQgc3Vic3RpdHV0aW9uLgoJQ2xlYXIgdGVtcGxhdGUgZmxhZyBhcHByb3ByaWF0ZWx5LgoJKGRlbWFuZ2xlX3ByZWZpeCk6IFJlbW92ZSBhcmd1bWVudCB0byBkZW1hbmdsZV9zdWJzdGl0dXRpb24uCglEb24ndCBjaGVjayB0aGF0IHRlbXBsYXRlIGZsYWcgaXMgYWxyZWFkeSBzZXQuCgkoZGVtYW5nbGVfb3BlcmF0b3JfbmFtZSk6IEFkZCBwdCBvcGVyYXRvci4KCShkZW1hbmdsZV90eXBlKTogRG9uJ3QgdHJlYXQgciBhcyBidWlsdC1pbiB0eXBlLiAgUmVtb3ZlIGFyZ3VtZW50Cgl0byBkZW1hbmdsZV9zdWJzdGl0dXRpb24uICBGaXggc3Vic3RpdHV0aW9uIGNhbmRpZGF0ZSBtZWNoYW5pY3MuCglIYW5kbGUgPHRlbXBsYXRlLXRlbXBsYXRlLXBhcm0+cy4gIEltcHJvdmUgY29tbWVudHMuCgkoZGVtYW5nbGVfdGVtcGxhdGVfcGFyYW0pOiBEb24ndCBoYW5kbGUgdGVtcGxhdGUgYXJnIGxpc3RzIGhlcmUuCgkoZGVtYW5nbGVfc3Vic3RpdHV0aW9uKTogUmVtb3ZlIHBhcmFtZXRlci4KCShwcmludF91c2FnZSk6IFJlbW92ZSBleHRyYSBmcHJpbnRmIG9wdGlvbi4KCjIwMDAtMDgtMjQgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogbGliaWJlcnR5L3JhbmRvbS5jIChlbmRfcHRyKTogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCjIwMDAtMDgtMjQgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogbGliaWJlcnR5L2NwbHVzLWRlbS5jIChjcGx1c19kZW1hbmdsZV9vcG5hbWUsIGNwbHVzX21hbmdsZV9vcG5hbWUsCglkZW1hbmdsZV9leHByZXNzaW9uLCBkZW1hbmdsZV9mdW5jdGlvbl9uYW1lKTogVXNlIEFSUkFZX1NJWkUuCgkqIGxpYmliZXJ0eS9yYW5kb20uYyAoZW5kX3B0cik6IExpa2V3aXNlLgoKMjAwMC0wOC0yMyAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKHJlc3VsdF9jbG9zZV90ZW1wbGF0ZV9saXN0KTogUmVtb3ZlIGZ1bmN0aW9uLgoJKHJlc3VsdF9hZGRfc2VwYXJhdGVkX2NoYXIpOiBOZXcgZnVuY3Rpb24uCgkocmVzdWx0X29wZW5fdGVtcGxhdGVfbGlzdCk6IE5ldyBtYWNyby4KCShyZXN1bHRfY2xvc2VfdGVtcGxhdGVfbGlzdCk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX3ByZWZpeCk6IERvbid0IHNldCB0ZW1wbGF0ZV9wIGlmIHRoZQoJcHJlZml4IGVuZHMgd2l0aCBhIGN0b3IgbmFtZS4KCShkZW1hbmdsZV90eXBlX3B0cik6IFJlbW92ZSBkdXBsaWNhdGUgUkVUVVJOX0lGX0VSUk9SLgoJKGRlbWFuZ2xlX3R5cGUpOiBDaGVjayBmb3IgdGVtcGxhdGUgYXJncyBhZnRlciBzdWJzdGl0dXRpb24uCgkoZGVtYW5nbGVfdGVtcGxhdGVfYXJncyk6IFVzZSByZXN1bHRfb3Blbl90ZW1wbGF0ZV9saXN0LgoKMjAwMC0wOC0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogcGV4ZWN1dGUuYzogIERvbid0IHVzZSB2Zm9yay4gIEluaXRpYWxpemUgJ3BpZCcgYmVmb3JlIHJldHJ5IGxvb3AuCgoyMDAwLTA3LTI2ICBEYXZlIFBpdHRzICA8ZHBpdHRzQGNvenguY29tPgoKCSogY29uZmlnL21oLW9wZW5lZGl0aW9uLmg6IEFkZGVkIC1ETEUzNzAgZGVmaW5pdGlvbi4KCjIwMDAtMDctMjYgTWFyayBFbGJyZWNodCA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogcGV4ZWN1dGUuYyAocGV4ZWN1dGUpIFtfX01TRE9TX19dOiBDaGFuZ2UgX19HTzMyX18gdG8KCV9fREpHUFBfXy4gVXNlIFBfV0FJVCBpbnN0ZWFkIG9mIGNvbnN0YW50IGluIHRoZSBzcGF3bnYqIGNhbGwuCglDYXN0IHByb2dyYW0gdG8gJ2NoYXIgKicgaW4gZXJybXNnX2FyZyBhc3NpZ25tZW50LgoJKFBXQUlUX0VSUk9SKTogRGVmaW5lLgoJKHB3YWl0KTogVXNlIFBXQUlUX0VSUk9SLiAgQWRqdXN0IERKR1BQJ3Mgc3RhdHVzIGNvZGUgdG8gY29uZm9ybQoJdG8gREpHUFAncyBXSUYqIG1hY3Jvcy4KCjIwMDAtMDctMjcgIFJvZG5leUJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgkgICAgSmVmZiBMYXcgPGxhd0BjeWdudXMuY29tPgoKCSogZ2V0Y3dkLmM6IEluY2x1ZGUgc3RyaW5nLmgsIHN0ZGxpYi5oIGZvciBwcm90b3R5cGVzCgoJKiBNYWtlZmlsZS5pbiAocmVuYW1lLm8sIHdhaXRwaWQubyk6IERlcGVuZCBvbiBjb25maWcuaAoJKiByZW5hbWUuYzogSW5jbHVkZSBjb25maWcuaCwgdW5pc3RkLmgKCSogd2FpdHBpZC5jOiBJbmNsdWRlIGNvbmZpZy5oLCBzeXMvd2FpdC5oCgoyMDAwLTA3LTI0ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGNwbHVzLWRlbS5jICh3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSk6IE5ldy4KCShkZWxldGVfbm9uX0JfS193b3JrX3N0dWZmKTogTmV3LgoJKGRlbGV0ZV93b3JrX3N0dWZmKTogTmV3LgoJKG1vcF91cCk6IEJyZWFrIG91dCB3b3JrX3N0dWZmIHBhcnRseSBkZXN0cnVjdGlvbiB0bwoJZGVsZXRlX25vbl9CX0tfd29ya19zdHVmZi4KCShpdGVyYXRlX2RlbWFuZ2xlX2Z1bmN0aW9uKTogTmV3LgoJKGRlbWFuZ2xlX3ByZWZpeCk6IENhbGwgaXRlcmF0ZV9kZW1hbmdsZV9mdW5jdGlvbiBpbnN0ZWFkIG9mCglkZW1hbmdsZV9mdW5jdGlvbl9uYW1lLiAgTGVhdmUgaGFuZGxpbmcgb2YgbmFtZS1zaWduYXR1cmUKCV9fLWRlbGltaXRlcnMgdG8gaXRlcmF0ZV9kZW1hbmdsZV9mdW5jdGlvbi4KCShkZW1hbmdsZV9pbnRlZ3JhbF92YWx1ZSk6IFN0cmlwIGFuIG9wdGlvbmFsCglmb2xsb3dpbmcgdW5kZXJzY29yZSBjYXV0aW91c2x5LiAgSGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMuCgoyMDAwLTA3LTI0ICBEYW5pZWwgQmVybGluIDxkYmVybGluQHJlZGhhdC5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfc2lnbmF0dXJlKTogQ2hhbmdlIGlmIChHTlVfREVNQU5HTElORykgdG8KCWlmIChBVVRPX0RFTUFOR0xJTkcgfHwgR05VX0RFTUFOR0xJTkcpCgoyMDAwLTA3LTIxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGVfY3Rvcl9kdG9yX25hbWUpOiBSZW1vdmUgbm90LWluLWNoYXJnZQoJYWxsb2NhdGluZyBjdG9yIG1hbmdsaW5nLgoJKGRlbWFuZ2xlX2FycmF5X3R5cGUpOiBIYW5kbGUgZW1wdHkgYW5kIG5vbi1jb25zdGFudCBhcnJheSBsZW5ndGguCgoyMDAwLTA3LTIzICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgkgICAgSmVmZiBMYXcgPGxhd0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChBQ19DSEVDS19IRUFERVJTKTogQWRkIHRpbWUuaC4KCShBQ19IRUFERVJfVElNRSk6IEFkZCBjaGVjay4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGdldHJ1bnRpbWUuYzogUG9ydGFibHkgI2luY2x1ZGUgPHN5cy90aW1lLmg+IGFuZC9vciA8dGltZS5oPi4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfQ0hFQ0tfSEVBREVSUyk6IEFkZCBsaW1pdHMuaC4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIHNvcnQuYzogUG9ydGFibHkgI2luY2x1ZGUgPGxpbWl0cy5oPiBhbmQvb3IgPHN5cy9wYXJhbS5oPi4KCSogc3RydG9sLmMsIHN0cnRvdWwuYzogI2luY2x1ZGUgImNvbmZpZy5oIi4gUG9ydGFibHkgI2luY2x1ZGUKCTxsaW1pdHMuaD4gYW5kL29yIDxzeXMvcGFyYW0uaD4uCgkqIE1ha2VmaWxlLmluIChzdHJ0b2wubywgc3RydG91bC5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCgkqIGFjbG9jYWwubTQgKGxpYmliZXJ0eV9BQ19ERUNMQVJFX0VSUk5PKTogTmV3IG1hY3JvLgoJKiBjb25maWd1cmUuaW4gKGxpYmliZXJ0eV9BQ19ERUNMQVJFX0VSUk5PKTogQWRkIGNoZWNrLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogcGV4ZWN1dGUuYywgc3RydG9sLmMsIHN0cnRvdWwuYzogRGVjbGFyZSBlcnJubyBpZiBuZWNlc3NhcnkuCgoJKiBjcC1kZW1hbmdsZS5jLCBta3N0ZW1wcy5jOiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+LgoKMjAwMC0wNy0yMSAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHhleGl0Lm8pOiBBZGQgZGVwZW5kZW5jeSBmb3IgY29uZmlnLmggaW4geGV4aXQuYy4KCSogKHZhc3ByaW50Zi5vKTogQWRkIGRlcGVuZGVuY3kgZm9yIGNvbmZpZy5oIGluIHZhc3ByaW50Zi5jLgoKMjAwMC0wNy0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtZGVtYW5nbGUuYyAoY3BfZGVtYW5nbGVfdHlwZSk6IFdyYXAgaW4gSU5fTElCR0NDMi4KCgkqIHNldGVudi5jIChzZXRlbnYpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBlcCcuCgoJKiBzaWdzZXRtYXNrLmMgKGFib3J0KTogUHJvdG90eXBlLgoKCSogdmFzcHJpbnRmLmM6IEluY2x1ZGUgY29uZmlnLmguICBDaGVjayBBTlNJX1BST1RPVFlQRVMsIG5vdAoJX19TVERDX18gZm9yIHN0ZGFyZy5oIGluY2x1ZGUuCgkoaW50X3Zhc3ByaW50Zik6IFByb3RvdHlwZS4KCShjaGVja2l0KTogUHJvdG90eXBlLiAgVXNlIFZQQVJBTVMvQU5TSV9QUk9UT1RZUEVTL1ZBX1NUQVJUIGluCglkZWZpbml0aW9uLiAgQ2FzdCBgZ2xvYmFsX3RvdGFsX3dpZHRoJyBpbiBjb21wYXJpc29uLgoJKG1haW4pOiBQcm90b3R5cGUuICBSZXR1cm4gYSB2YWx1ZS4KCgkqIHZmb3JrLmMgKGZvcmspOiBQcm90b3R5cGUuCgoJKiB4ZXhpdC5jOiBJbmNsdWRlIGNvbmZpZy5oLgoKMjAwMC0wNy0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IE1ha2UgJ2RlYycgYW4gdW5zaWduZWQgaW50LAoJYW5kIHByaW50IGl0IHdpdGggJXUuCgoyMDAwLTA3LTE3ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHRlc3RzdWl0ZS9yZWdyZXNzLWRlbWFuZ2xlIChmYWlsZWQgdGVzdCk6IFNob3cgcmVzdWx0IGFuZAoJZXhwZWN0ZWQgb3V0cHV0LgoKMjAwMC0wNy0wNyAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAobWFpbik6IGZmbHVzaCgpIGFmdGVyIGVtaXR0aW5nIGxhc3QgY2hhciBiZWZvcmUKCXdhaXRpbmcgZm9yIGlucHV0LgoKMjAwMC0wNi0yOCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX2VuY29kaW5nKTogQWNjZXB0IG5vIHN1YnN0aXR1dGlvbnMuCgkoZGVtYW5nbGVfbmFtZSk6IEhhbmRsZSA8c3Vic3RpdHV0aW9uPiBmb2xsb3dlZCBieQoJPHVucXVhbGlmaWVkLXRlbXBsYXRlLW5hbWU+LgoJKGRlbWFuZ2xlX3R5cGUpOiBGb2xsb3cgc3BlY2lhbCBzdWJzdGl0dXRpb25zIHdpdGgKCTxjbGFzcy1lbnVtLXR5cGU+CgkoZGVtYW5nbGVfc3VidGl0dXRpb24pOiBTZXQgdGVtcGxhdGVfcCBmb3Igc3BlY2lhbCBzdWJzdGl0dXRpb25zLgoJKG1haW4pOiBGaXggdHlwb3MuCgoyMDAwLTA2LTI3ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGVfc3BlY2lhbF9uYW1lKTogU3dhcCBiYXNlIGFuZCBkZXJpdmVkCgljbGFzcyB3aGVuIGRlbWFuZ2xpbmcgY29uc3RydWN0aW9uIHZ0YWJsZXMuCgoyMDAwLTA2LTIxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYzogRG9uJ3QgaW5jbHVkZSBjdHlwZS5oLgoJKElTX0RJR0lUKTogTmV3IG1hY3JvLgoJKElTX0FMUEhBKTogTGlrZXdpc2UuICBVc2UgSVNfRElHSVQgYW5kIElTX0FMUEhBIHRocm91Z2hvdXQKCWluc3RlYWQgb2YgaXNkaWdpdCBhbmQgaXNhbHBhbnVtLgoJKGRlbWFuZ2xpbmdfZGVmKTogTWFrZSBuYW1lIGFuZCBuZXh0IGNvbnN0IHBvaW50ZXJzLgoJKFNUQVRVU19BTExPQ0FUSU9OX0ZBSUxFRCk6IE5ldyBzdGF0dXMgY29kZS4KCShkeW5fc3RyaW5nX2FwcGVuZF9zcGFjZSk6IEhhbmRsZSBmYWlsdXJlIGluCglkeW5fc3RyaW5nX2FwcGVuZF9jaGFyLgoJKGludF90b19keW5fc3RyaW5nKTogTGlrZXdpc2UuICBDaGFuZ2UgcmV0dXJuIHZhbHVlIHRvIHN0YXR1c190LgoJKHN0cmluZ19saXN0X25ldyk6IEhhbmRsZSBmYWlsdXJlIG9mIGR5bl9zdHJpbmdfaW5pdC4KCShyZXN1bHRfY2xvc2VfdGVtcGxhdGVfbGlzdCk6IENoYW5nZSByZXR1cm4gdHlwZSB0byBzdGF0dXNfdC4KCUhhbmRsZSBmYWlsdXJlIGluIGR5bl9zdHJpbmdfYXBwZW5kLgoJKHJlc3VsdF9wdXNoKTogQ2hhbmdlIHJldHVybiB2YWx1ZSB0byBzdGF0dXNfdC4gIEhhbmRsZSBmYWlsdXJlIGluCglzdHJpbmdfbGlzdF9uZXcuICBIYW5kbGUgZmFpbHVyZSBvZiByZXN1bHRfcHVzaCB0aHJvdWdob3V0LgoJKHN1YnN0aXR1dGlvbl9hZGQpOiBDaGFuZ2UgcmV0dXJuIHZhbHVlIHRvIHN0YXR1c190LiAgSGFuZGxlCglkeW5fc3RyaW5nIGZhaWx1cmVzLiAgSGFuZGxlIGZhaWx1cmUgb2Ygc3Vic3RpdHV0aW9uX2FkZAoJdGhyb3VnaG91dC4KCSh0ZW1wbGF0ZV9hcmdfbGlzdF9uZXcpOiBSZXR1cm4gTlVMTCBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCgkocmVzdWx0X2FwcGVuZF9zdHJpbmcpOiBSZXR1cm4gU1RBVFVTX0FMTE9DQVRJT05fRkFJTEVEIG9uIGVycm9yLgoJSGFuZGxlIGVycm9yIHJlc3VsdCB0aHJvdWdob3V0LgoJKHJlc3VsdF9hcHBlbmQpOiBMaWtld2lzZS4KCShyZXN1bHRfYXBwZW5kX2NoYXIpOiBMaWtld2lzZS4KCShyZXN1bHRfYXBwZW5kX3NwYWNlKTogTGlrZXdpc2UuCgkoZGVtYW5nbGluZ19uZXcpOiBNYWtlIGFyZ3VtZW50IGEgY29uc3QgcG9pbnRlci4gIEhhbmRsZQoJYWxsb2NhdGlvbiBmYWlsdXJlcy4KCShkZW1hbmdsZV90ZW1wbGF0ZV9hcmdzKTogSGFuZGxlIGZhaWx1cmUgaW4gdGVtcGxhdGVfYXJnX2xpc3RfbmV3CglhbmQgcmVzdWx0X2Nsb3NlX3RlbXBsYXRlX2xpc3QuCgkoZGVtYW5nbGVfZGlzY3JpbWluYXRvcik6IFJldHVybiBpZiBpbnRfdG9fZHluX3N0cmluZyBmYWlscy4KCShjcF9kZW1hbmdsZSk6IExpa2V3aXNlLgoJKGNwX2RlbWFuZ2xlX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoY3BsdXNfZGVtYW5nbGVfbmV3X2FiaSk6IERvbid0IGNhbGwgZHluX3N0cmluZ19kZWxldGUuICBBYm9ydCBvbgoJbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZS4KCShtYWluKTogTGlrZXdpc2UuCgkqIGR5bi1zdHJpbmcuYyAoUkVUVVJOX09OX0FMTE9DQVRJT05fRkFJTFVSRSk6IERlZmluZSBpZgoJSU5fTElCR0NDMi4KCShkeW5fc3RyaW5nX2luaXQpOiBDaGFuZ2UgcmV0dXJuIHZhbHVlIHRvIGludC4gIEhhbmRsZQoJUkVUVVJOX09OX0FMTE9DQVRJT05fRkFJTFVSRSBjYXNlLgoJKGR5bl9zdHJpbmdfbmV3KTogSGFuZGxlIFJFVFVSTl9PTl9BTExPQ0FUSU9OX0ZBSUxVUkUgY2FzZS4KCShkeW5fc3RyaW5nX3JlbGVhc2UpOiBEZWxldGUgdGhlIGR5bl9zdHJpbmcuCgkoZHluX3N0cmluZ19yZXNpemUpOiBIYW5kbGUgUkVUVVJOX09OX0FMTE9DQVRJT05fRkFJTFVSRSBjYXNlLgoJKGR5bl9zdHJpbmdfY29weSk6IENoYW5nZSByZXR1cm4gdHlwZSB0byBpbnQuCgkoZHluX3N0cmluZ19jb3B5X2NzdHIpOiBMaWtld2lzZS4KCShkeW5fc3RyaW5nX3ByZXBlbmQpOiBMaWtld2lzZS4KCShkeW5fc3RyaW5nX3ByZXBlbmRfY3N0cik6IExpa2V3aXNlLgoJKGR5bl9zdHJpbmdfaW5zZXJ0KTogTGlrZXdpc2UuCgkoZHluX3N0cmluZ19pbnNlcnRfY3N0cik6IExpa2V3aXNlLgoJKGR5bl9zdHJpbmdfYXBwZW5kKTogTGlrZXdpc2UuCgkoZHluX3N0cmluZ19hcHBlbmRfY3N0cik6IExpa2V3aXNlLgoJKGR5bl9zdHJpbmdfYXBwZW5kX2NoYXIpOiBMaWtld2lzZS4KCShkeW5fc3RyaW5nX3N1YnN0cmluZyk6IExpa2V3aXNlLgoKMjAwMC0wNi0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGVfb3BlcmF0b3JfbmFtZSk6IEFkZCBzcGFjZXMgYmVmb3JlCgluYW1lcyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlcjogZGVsZXRlLCBkZWxldGVbXSwgbmV3LCBuZXdbXSwKCXNpemVvZi4KCShkZW1hbmdsZV9zcGVjaWFsX25hbWUpOiBIYW5kbGUgVEYgPHR5cGU+IGFuZCBUSiA8dHlwZT4uCgpUaHUgSnVuICA4IDE4OjUyOjI0IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogY3AtZGVtYW5nbGUuYyAodGVtcGxhdGVfYXJnX2xpc3RfbmV3KTogUmV2ZXJ0IHByZXZpb3VzIFBBUkFNUyBwYXRjaC4KClRodSBKdW4gIDggMDk6MjU6NTQgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBjcC1kZW1hbmdsZS5jIChzdGRpby5oKTogRmlsZSBpbmNsdWRlZCB1bmNvbmRpdGlvbmFseS4KCSh0ZW1wbGF0ZV9hcmdfbGlzdF9uZXcpOiBQYXJhbWV0ZXIgbGlzdCBpcyBQQVJBTVMgKCh2b2lkKSksIG5vdCAoKS4KCSogZHluLXN0cmluZy5jIChzdGRpby5oKTogRmlsZSBpbmNsdWRlZC4KCSogcGFydGl0aW9uLmMgKHBhcnRpdGlvbl9wcmludCk6IE5vIGAmJyBuZWVkZWQgdG8gdGFrZSB0aGUgYWRkcmVzcyBvZgoJYSBmdW5jdGlvbi4KCjIwMDAtMDYtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoYWNfbGliaWJlcnR5X3dhcm5fY2ZsYWdzKTogQWRkIC1wZWRhbnRpYy4KCgkqIGNob29zZS10ZW1wLmMgKHRyeSwgY2hvb3NlX3RlbXBfYmFzZSwgbWFrZV90ZW1wX2ZpbGUpOiBDb25zdGlmeS4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX2NoYXIpOiBDaGFuZ2UgcGFyYW1ldGVyIGZyb20gY2hhciB0byBpbnQuCgkoZGVtYW5nbGVfZXhwcmVzc2lvbiwgZGVtYW5nbGVfZXhwcl9wcmltYXJ5KTogUmVtb3ZlIGV4dHJhCglzZW1pLWNvbG9uIGluIHByb3RvdHlwZS4KCgkqIGR5bi1zdHJpbmcuYyAoZHluX3N0cmluZ19hcHBlbmRfY2hhcik6IENoYW5nZSBwYXJhbWV0ZXIgZnJvbQoJY2hhciB0byBpbnQuCgoJKiBtZW1jbXAuYyAobWVtY21wKTogQ29uc3RpZnkuCgoJKiBta3N0ZW1wcy5jIChnY2NfdWludDY0X3QpOiBNYXJrIEdOVUMgYGxvbmcgbG9uZycgY2FzZSB3aXRoCglfX2V4dGVuc2lvbl9fLgoKCSogcGFydGl0aW9uLmMgKGVsZW1fY29tcGFyZSk6IFByb3RvdHlwZS4gIERvbid0IGNhc3QgYXdheQoJY29uc3QtbmVzcy4KCgkqIHNldGVudi5jIChzZXRlbnYpOiBVc2UgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScuCgoyMDAwLTA2LTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoY3AtZGVtYW5nbGUubyk6IERlcGVuZCBvbiAkKElOQ0RJUikvZGVtYW5nbGUuaC4KCgkqIGNwLWRlbWFuZ2xlLmM6IEluY2x1ZGUgZGVtYW5nbGUuaC4KCSh0ZW1wbGF0ZV9hcmdfbGlzdF9uZXcpOiBEZUFOU0lmeS4KCShjcF9kZW1hbmdsZSk6IE1ha2Ugc3RhdGljIGFuZCBhZGQgcHJvdG90eXBlLgoJKG9wZXJhdG9yX2NvZGUsIG9wZXJhdG9ycyk6IENvbnN0aWZ5LgoJKGRlbWFuZ2xlX29wZXJhdG9yX25hbWUpOiBMaWtld2lzZSBmb3IgdmFyaWFibGVzIGBwMScsIGBwMicgYW5kIGBwJy4KCjIwMDAtMDYtMDUgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9wcmVmaXgpOiBDYXN0IGFyZ3VtZW50IHRvIGlzZGlnaXQgdG8KCXVuc2lnbmVkIGNoYXIuCgkoZGVtYW5nbGVfdW5xdWFsaWZpZWRfbmFtZSk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX251bWJlcl9saXRlcmFsbHkpOiBMaWtld2lzZS4KCShkZW1hbmdsZV90eXBlKTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfc3Vic3RpdHV0aW9uKTogTGlrZXdpc2UuCgkoaXNfbWFuZ2xlZF9jaGFyKTogTGlrZXdpc2UsIGZvciBpc2FsbnVtLgoKMjAwMC0wNi0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgY3AtZGVtYW5nbGUuYyBhbmQgZHluLXN0cmluZy5jLgoJKFJFUVVJUkVEX09GSUxFUyk6IEFkZCBjcC1kZW1hbmdsZS5vIGFuZCBkeW4tc3RyaW5nLm8uCgkoY3AtZGVtYW5nbGUubyk6IE5ldyBkZXBlbmRlbmN5LgoJKGR5bi1zdHJpbmcubyk6IExpa2V3aXNlLgoKCSogZHluLXN0cmluZy5jOiBNb3ZlIGhlcmUgZnJvbSBnY2MvZHluLXN0cmluZy5jLiAgQWRkIG5ldyBmdW5jdGlvbnMuCgoJKiBjcGx1cy1kZW0uYyAobGliaWJlcnR5X2RlbWFuZ2xlcnMpOiBBZGQgaW5pdGlhbGl6ZXIgZm9yIG5ldy1BQkkKCWRlbWFuZ2xlci4KCShjcGx1c19kZW1hbmdsZSk6IENhbGwgY3BsdXNfZGVtYW5nbGVfbmV3X2FiaSBpZiBpbiBuZXctQUJJCglkZW1hbmdsaW5nIG1vZGUuCgkoZ251X25ld19hYmlfc3ltYm9sX2NoYXJhY3RlcnMpOiBOZXcgZnVuY3Rpb24uCgkobWFpbik6IFVzZSBnbnVfbmV3X2FiaV9zeW1ib2xfY2hhcmFjdGVycy4gICogY3AtZGVtYW5nbGUuYzogTmV3CglmaWxlLgoJKiBjcC1kZW1hbmdsZS5jOiBOZXcgZmlsZS4KClR1ZSBNYXkgMzAgMTY6NDU6MjUgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZmxvYXRmb3JtYXQuYzogQWRkIG5hbWUgdG8gZWFjaCBmbG9hdGZvcm1hdCBmaWVsZC4KClR1ZSBNYXkgMzAgMTU6MDc6NTIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKG9iamFsbG9jLm8pOiBEZXBlbmQgb24gY29uZmlnLmgKCjIwMDAtMDUtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGhhc2h0YWIuYywgcGFydGl0aW9uLmMsIHNvcnQuYywgeG1lbWR1cC5jOiBJbmNsdWRlIHN0cmluZy5oCglpZiBIQVZFX1NUUklOR19ILgoJKiBwZXhlY3V0ZS5jLCB4ZXhpdC5jOiBJbmNsdWRlIHN0ZGxpYi5oIGlmIEhBVkVfU1RETElCX0guCgkqIG9iamFsbG9jLmM6IEluY2x1ZGUgY29uZmlnLmguICBJbmNsdWRlIHN0ZGxpYi5oIGFuZCBkb24ndAoJZGVjbGFyZSBtYWxsb2Mgb3IgZnJlZSBpZiBIQVZFX1NURExJQl9ILgoJKiBzdHJlcnJvci5jLCBzdHJzaWduYWwuYzogSW5jbHVkZSBzdGRsaWIuaCBpZiBIQVZFX1NURExJQl9ILAoJZWxzZSBkZWNsYXJlIG1hbGxvYyB3aXRob3V0IHByb3RvdHlwZS4gIEluY2x1ZGUgc3RyaW5nLmggaWYKCUhBVkVfU1RSSU5HX0gsIGVsc2UgZGVjbGFyZSBtZW1zZXQgd2l0aG91dCBwcm90b3R5cGUuICBEb24ndAoJaW5jbHVkZSBzdGRkZWYuaC4KCjIwMDAtMDUtMjMgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIE1ha2VmaWxlLmluICh4bWFsbG9jLm8pOiBBZGQgZGVwZW5kZW5jeSBmb3IgY29uZmlnLmgsIGZpeGVzIG1ha2UKCS1qMy4KCjIwMDAtMDUtMTggIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogeG1hbGxvYy5jOiBJbmNsdWRlIGNvbmZpZy5oIGZvciBIQVZFX1NCUksgZGVmaW5pdGlvbi4KCjIwMDAtMDUtMTYgIEhvcnN0IHZvbiBCcmFuZCA8dm9uYnJhbmRAc2xlaXBuaXIudmFscGFyYWlzby5jbD4KCgkqIGhhc2h0YWIuYyAoaGFzaF9wb2ludGVyKTogRGVsZXRlIGxvdy1vcmRlciBiaXRzIHdoaWNoIGFyZQoJcHJvYmFibHkgemVybywgYWxzbyBlbGltaW5hdGUgYSB3YXJuaW5nIG9uIGFscGhhLgoKMjAwMC0wNS0xNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW46IENoYW5nZSAicGljIiB0byBkZXBlbmQgb24gJChQSUNGTEFHKSwgbm90CglvbiAkKGVuYWJsZV9zaGFyZWQpLgoKMjAwMC0wNS0xMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcudGFibGU6IFVzZSBtaC1zcGFyY3BpYyBmb3Igc3BhcmMqLSotKi4KCjIwMDAtMDUtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIHN0cm5jbXAuYy4KCShORUVERUQpOiBBZGQgc3RybmNtcC4KCjIwMDAtMDUtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwbHVzLWRlbS5jIChjcGx1c19kZW1hbmdsZV9vcG5hbWUsIGRlbWFuZ2xlX2Z1bmN0aW9uX25hbWUpOgoJQ2FzdCB0aGUgYXJndW1lbnRzIHRvIGBpc2xvd2VyJyB0byBgdW5zaWduZWQgY2hhcicuCgkocHJpbnRfZGVtYW5nbGVyX2xpc3QpOiBQcm90b3R5cGUuCgpUaHUgTWF5ICA0IDE3OjE0OjQxIDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogc29ydC5jIChVQ0hBUl9NQVgpOiBQcm92aWRlIGZhbGxiYWNrIGRlZmluaXRpb24uCgoyMDAwLTA0LTI5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChtYWludGFpbmVyLWNsZWFuLXN1YmRpcik6IEZpeCBoYW5kbGluZyBvZiBlbXB0eQoJU1VCRElSUy4KCjIwMDAtMDQtMjggIEtlbm5ldGggQmxvY2sgIDxibG9ja0B6azMuZGVjLmNvbT4KCSAgICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChsaWJpYmVydHlfZGVtYW5nbGVycyk6IE5ldyB0YWJsZSBmb3IgZGVtYW5nbGUgc3R5bGVzLgoJKGNwbHVzX2RlbWFuZ2xlX3NldF9zdHlsZSk6IE5ldyBmdW5jdGlvbiBmb3Igc2V0dGluZyBzdHlsZS4KCShjcGx1c19kZW1hbmdsZV9uYW1lX3RvX3N0eWxlKTogTmV3IGZ1bmN0aW9uIHRvIHRyYW5zbGF0ZSBuYW1lLgoKMjAwMC0wNC0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWNsb2NhbC5tNDogTmV3IGZpbGUgd2l0aCBuZXcgdGVzdCBsaWJpYmVydHlfQUNfRlVOQ19TVFJOQ01QLgoKCSogY29uZmlndXJlLmluIChBQ19DSEVDS19IRUFERVJTKTogQWRkIHN5cy9tbWFuLmggZmNudGwuaC4KCShsaWJpYmVydHlfQUNfRlVOQ19TVFJOQ01QKTogSW52b2tlLgoKCSogc3RybmNtcC5jOiBOZXcgZmlsZS4KClRodSBBcHIgMjcgMTY6NTg6NDMgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBoYXNodGFiLmMgKGh0YWJfZXhwYW5kKTogQWRkIHByb3RvdHlwZS4KCShmaW5kX2VtcHR5X3Nsb3RfZm9yX2V4cGFuZCk6IExpa2V3aXNlLgoKMjAwMC0wNC0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaGFzaHRhYi5jIChoYXNoX3BvaW50ZXIsIGVxX3BvaW50ZXIpOiBNYWtlIGRlZmluaXRpb24gc3RhdGljIHRvCgltYXRjaCBwcm90b3R5cGUuCgkoaHRhYl9leHBhbmQpOiBDYXN0IHRoZSByZXR1cm4gdmFsdWUgb2YgeGNhbGxvYy4KCjIwMDAtMDQtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBoYXNodGFiLmMgKGhhc2hfcG9pbnRlcik6IE5ldyBmdW5jdGlvbi4KCShlcV9wb2ludGVyKTogTGlrZXdpc2UuCgkoaHRhYl9oYXNoX3BvaW50ZXIpOiBOZXcgdmFyaWFibGUuCgkoaHRhYl9lcV9wb2ludGVyKTogTGlrZXdpc2UuCgoyMDAwLTA0LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc29ydC5jIChzb3J0X3BvaW50ZXJzKTogRml4IGVuZGlhbm5lc3MgYnVncy4KCgkqIHNvcnQuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgc29ydC5jCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIHNvcnQuby4KCShzb3J0Lm8pOiBOZXcgdGFyZ2V0LgoKMjAwMC0wNC0yMSAgTWljaGFlbCBTb2tvbG92ICA8bXNva29sb3ZAaXZhbi5IYXJoYW4uT1JHPgoKCSogTWFrZWZpbGUuaW4gKCotc3ViZGlyKTogUmV2YW1wIHNsaWdodGx5IHRvIGF2b2lkIGxvc2luZyBvbgoJNC4zQlNEIHN5c3RlbXMuCgpUdWUgQXByIDE4IDE2OjIzOjMxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBoYXNodGFiLmM6IFZhcmlvdXMgbWlub3IgY2xlYW51cHMuCgkoaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogSU5TRVJUIGlzIG5vdyBlbnVtIGluc2VydF9vcHRpb24uCgkoaHRhYl9maW5kX3Nsb3QpOiBMaWtld2lzZS4KCjIwMDAtMDQtMTYgIERhdmUgUGl0dHMgIDxkcGl0dHNAY296eC5jb20+CgoJKiBjcGx1cy1kZW0uYyAoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogQ2hhbmdlZCB0byB1c2UgaXNsb3dlci4KCjIwMDAtMDQtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfcmVtb3ZlKTogTmV3LgoKMjAwMC0wMy0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGhhc2h0YWIuYyAoZmluZF9lbXB0eV9zbG90X2Zvcl9leHBhbmQpOiBVc2UgaGFzaHZhbF90IGZvciBoYXNoCgljb2Rlcy4KCShodGFiX2ZpbmRfd2l0aF9oYXNoKTogTGlrZXdpc2UuCgkoaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogTGlrZXdpc2UuCgoyMDAwLTAzLTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBoYXNodGFiLmMgKGh0YWJfZmluZF93aXRoX2hhc2gpOiBBdm9pZCBjYWxjdWxhdGluZyBoYXNoMgoJdW5sZXNzIGl0IHdpbGwgYmUgdXNlZC4gIFJlYXJyYW5nZSBsb29wIGZvciBiZXR0ZXIKCW9wdGltaXphdGlvbi4KCShoaWdoZXJfcHJpbWVfbnVtYmVyKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgpUaHUgTWFyIDE2IDAxOjMzOjU4IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChwYXJ0aXRpb24ubyk6IERlcGVuZCBvbiBjb25maWcuaAoKMjAwMC0wMy0xNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBoYXNodGFiLmMgKGZpbmRfZW1wdHlfc2xvdF9mb3JfZXhwYW5kKTogTmV3IGZ1bmN0aW9uLgoJKGh0YWJfZXhwYW5kKTogVXNlIGl0IGluc3RlYWQgb2YgaHRhYl9maW5kX3Nsb3QuCgkoaHRhYl9maW5kX3dpdGhfaGFzaCk6IFJlbmFtZWQgZnJvbSBodGFiX2ZpbmQ7IG5vdyBhY2NlcHRzIGV4dHJhCglhcmd1bWVudCBIQVNILgoJKGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCk6IExpa2V3aXNlIGZvciBodGFiX2ZpbmRfc2xvdC4KCShodGFiX2ZpbmQpOiBOZXcgd3JhcHBlciBmdW5jdGlvbi4KCShodGFiX2ZpbmRfc2xvdCk6IExpa2V3aXNlLgoJKGh0YWJfdHJhdmVyc2UpOiBQYXNzIHNsb3QsIG5vdCBlbnRyeSwgdG8gY2FsbGVkIGZ1bmN0aW9uLgoKMjAwMC0wMy0wOSAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgcGFydGl0aW9uLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIHBhcnRpdGlvbi5vLgoJKHBhcnRpdGlvbi5vKTogTmV3IHJ1bGUuCgkqIHBhcnRpdGlvbi5jOiBOZXcgZmlsZS4KCjIwMDAtMDMtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGhhc2h0YWIuYyAoaHRhYl9jcmVhdGUpOiBTZXQgZGVsX2YuCgkoaHRhYl9kZWxldGUsIGh0YWJfZW1wdHksIGh0YWJfcmVtb3ZlX2VsdCwgaHRhYl9jbGVhcl9zbG90KToKCVVzZSBpdC4KCjIwMDAtMDMtMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGhhc2h0YWIuYzogUmVtb3ZlIGRlYnVnZ2luZyB2YXJpYWJsZXMgKGFsbF9zZWFyY2hlcywKCWFsbF9jb2xsaXNpb25zLCBhbGxfZXhwYW5zaW9ucykuIERlbGV0ZQoJYWxsX2hhc2hfdGFibGVfY29sbGlzaW9ucy4KCShjcmVhdGVfaGFzaF90YWJsZSwgZGVsZXRlX2hhc2hfdGFibGUsIGVtcHR5X2hhc2hfdGFibGUsCglmaW5kX2hhc2hfdGFibGVfZW50cnksIHJlbW92ZV9lbGVtZW50X2Zyb21faGFzaF90YWJsZV9lbnRyeSwKCWNsZWFyX2hhc2hfdGFibGVfc2xvdCwgdHJhdmVyc2VfaGFzaF90YWJsZSwgaGFzaF90YWJsZV9zaXplLAoJaGFzaF90YWJsZV9lbGVtZW50c19udW1iZXIsIGhhc2hfdGFibGVfY29sbGlzaW9ucyk6IFJlbmFtZSB0bzoKCWh0YWJfY3JlYXRlLCBodGFiX2RlbGV0ZSwgaHRhYl9lbXB0eSwgaHRhYl9maW5kX3Nsb3QsCglodGFiX3JlbW92ZV9lbHQsIGh0YWJfY2xlYXJfc2xvdCwgaHRhYl90cmF2ZXJzZSwgaHRhYl9zaXplLAoJaHRhYl9lbGVtZW50cywgaHRhYl9jb2xsaXNpb25zLgoJKGh0YWJfZmluZCk6IE5ldyBmdW5jdGlvbiwgaGFuZGxlcyBjb21tb24gY2FzZSB3aGVyZSB5b3UgZG9uJ3QKCXBsYW4gdG8gYWRkIG9yIGRlbGV0ZSBhbiBlbnRyeS4KCShodGFiX2V4cGFuZCk6IERvbid0IGNyZWF0ZSBhIHdob2xlIG5ldyB0YWJsZSwganVzdCBhIG5ldwoJZW50cnkgdmVjdG9yLgoJKGh0YWJfZmluZF9zbG90KTogU2ltcGxpZnkgbG9naWMuCgoxOTk5LTA4LTAzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmM6IEFkZCBjYXN0cyB0byBhdm9pZCBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgkqIHBleGVjdXRlLmM6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIGFzIG5lZWRlZCBvbiBVbml4LgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGxfdG9fbGliZGlyKTogQ2hhbmdlICQoVEFSR0VUTElCKS5uIHRvCgkkKFRBUkdFVExJQiluIHNvIGl0IHdvcmtzIG9uIE1TRE9TLgoJKGluc3RhbGxfdG9fdG9vbGRpcik6IExpa2V3aXNlLgoKMTk5OS0wNy0yMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJRnJvbSBNYXJrIEVsYnJlY2h0OgoJKiBtYWtlZmlsZS5kb3M6IFJlbW92ZTsgb2Jzb2xldGUuCgkqIGNvbmZpZ3VyZS5iYXQ6IFJlbW92ZTsgb2Jzb2xldGUuCgoxOTk5LTA3LTExICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9pbnNlcnQpOiBBZGQgaW5pdGlhbGl6YXRpb24gdG8gYXZvaWQKCXdhcm5pbmcuCgoyMDAwLTAxLTA0ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIHBleGVjdXRlLmM6IENvbmRpdGlvbmFsbHkgaW5jbHVkZSBzdHJpbmcuaC4KCShmaXhfYXJndik6IEhhbmRsZSBlbWJlZGRlZCB3aGl0ZXNwYWNlIGluIGFyZ3MgZm9yIE1pbmd3MzIuCgoyMDAwLTAxLTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW4gKGFjX2xpYmliZXJ0eV93YXJuX2NmbGFncyk6IFR1cm4gb24gd2FybmluZ3MgaWYKCXdlJ3JlIHVzaW5nIGdjYy4KCgkqIE1ha2VmaWxlLmluIChDT01QSUxFLmMpOiBBZGQgQGFjX2xpYmliZXJ0eV93YXJuX2NmbGFnc0AKCjE5OTktMTItMjcgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHZhc3ByaW50Zi5jIChpbnRfdmFzcHJpbnRmKTogRG9uJ3QgcmUtcmVhZCB0aGUgZm9ybWF0IGNoYXJhY3RlcgoJYXMgdGhpcyBtaXNoYW5kbGVzIHN0cmluZ3MgbGlrZSAnJSVzJy4KCjE5OTktMTItMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfbmV3KTogVXNlIHN0cnVjdCBzcGxheV90cmVlX25vZGVfcwoJcmF0aGVyIHRoYW4gc3RydWN0IHNwbGF5X3RyZWVfbm9kZS4KCShzcGxheV90cmVlX2luc2VydCk6IFVzZSBzdHJ1Y3Qgc3BsYXlfdHJlZV9zIHJhdGhlciB0aGFuIHN0cnVjdAoJc3BsYXlfdHJlZS4KClN1biBOb3YgMjggMDA6NTk6MzkgMTk5OSAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBoYXNodGFiLmMgKHN5cy90eXBlcy5oKTogRmlsZSBpbmNsdWRlZC4KCjE5OTktMTEtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogc3RydG91bC5jLCBzdHJ0b2wuYywgcmFuZG9tLmM6IFJlbW92ZSBhZHZlcnRpc2luZyBjbGF1c2UgZnJvbQoJQlNEIGxpY2Vuc2UsIHB1cnN1YW50IHdpdGgKCgkgIGZ0cDovL2Z0cC5jcy5iZXJrZWxleS5lZHUvcHViLzRic2QvUkVBRE1FLkltcHQuTGljZW5zZS5DaGFuZ2UKCldlZCBOb3YgMTAgMDk6NDI6MzkgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaGFzaHRhYi5jOiBJbmNsdWRlIHN0ZGlvLmguCgpNb24gTm92ICA4IDA5OjIzOjQxIDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGhhc2h0YWIuYyAodHJhdmVyc2VfaGFzaF90YWJsZSk6IFByb3RlY3QgcHJvdG90eXBlIHdpdGggUEFSQU1TLgoKVHVlIE5vdiAgMiAwMzoyMzoxMyAxOTk5ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIHhzdHJkdXAgKHN5cy90eXBlcy5oKTogSW5jbHVkZSB0aGlzIGZpbGUuCgoxOTk5LTEwLTI4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogTWFrZWZpbGUuaW4gKFNVQkRJUlMpOiBOZXcgbWFjcm8uCgkobW9zdGx5Y2xlYW4sIGNsZWFuLCBkaXN0Y2xlYW4sIG1haW50YWluZXItY2xlYW4pOiBBZGp1c3QgdG8KCWF2b2lkIG11bHRpcGxlIHN1YmRpcmVjdG9yeSBjbGVhbmluZy4KCSgqLXN1YmRpcik6IFVzZSBTVUJESVJTLgoKMTk5OS0xMC0yNSAgSmltIEtpbmdkb24gIDxodHRwOi8vZGV2ZWxvcGVyLnJlZGhhdC5jb20vPgoKCSogY3BsdXMtZGVtLmM6IE1vdmUgZGVjbGFyYXRpb25zIG9mIHN0YW5kYXJkX3N5bWJvbF9jaGFyYWN0ZXJzIGFuZAoJaHBfc3ltYm9sX2NoYXJhY3RlcnMgaW5zaWRlICNpZmRlZiBNQUlOIHRvIGF2b2lkIGNvbXBpbGVyCgl3YXJuaW5ncy4KCjE5OTktMTAtMjMgMDg6NTEgLTA3MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGJpdG1vdmVyLmNvbT4KCgkqIGhhc2h0YWIuYyAoZmluZF9oYXNoX3RhYmxlX2VudHJ5KTogV2hlbiByZXR1cm5pbmcgYQoJREVMRVRFRF9FTlRSWSBzbG90LCBjaGFuZ2UgaXQgdG8gRU1QVFlfRU5UUlkgZmlyc3QuCgkoY2xlYXJfaGFzaF90YWJsZV9zbG90KTogTmV3IGZ1bmN0aW9uIHdoaWNoIGRlbGV0ZXMgYW4gZW50cnkKCWJ5IGl0cyBwb3NpdGlvbiBpbiB0aGUgdGFibGUsIG5vdCBpdHMgdmFsdWUuCgkodHJhdmVyc2VfaGFzaF90YWJsZSk6IE5ldyBmdW5jdGlvbiB3aGljaCBjYWxscyBhIGhvb2sKCWZ1bmN0aW9uIGZvciBldmVyeSBsaXZlIGVudHJ5IGluIHRoZSB0YWJsZS4KCjE5OTktMTAtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcGx1cy1kZW0uYyAoSU5UQlVGX1NJWkUpOiBOZXcgbWFjcm8uCgkoc3RyaW5nX2FwcGVuZF90ZW1wbGF0ZV9pZHgpOiBOZXcgZnVuY3Rpb24uCgkoZGVtYW5nbGVfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX2ludGVncmFsX3ZhbHVlKTogVXNlIGl0LgoJKGRlbWFuZ2xlX3JlYWxfdmFsdWUpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0pOiAuLi4gaGVyZS4gIFVzZQoJc3RyaW5nX2FwcGVuZF90ZW1wbGF0ZV9pZHguICBVc2UgZGVtYW5nbGVfcmVhbF92YWx1ZS4KCShkZW1hbmdsZV90ZW1wbGF0ZSk6IFVzZSBzdHJpbmdfYXBwZW5kX3RlbXBsYXRlX2lkeC4KCShkZW1hbmdsZV9xdWFsaWZpZWQpOiBVc2UgY29uc3VtZV9jb3VudF93aXRoX3VuZGVyc2NvcmVzLgoJKGdldF9jb3VudCk6IFR3ZWFrIGZvcm1hdHRpbmcuCgkoZG9fdHlwZSk6IFVzZSBzdHJpbmdfYXBwZW5kX3RlbXBsYXRlX2lkeC4KCjE5OTktMTAtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGxvYy5jOiBBZGQgYSBwdWJsaWMgZG9tYWluIG5vdGljZS4KCk1vbiBPY3QgMTggMDI6MzA6NDcgMTk5OSAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBzZXRlbnYuYyAoc3lzL3R5cGVzLmgsIHN0ZGlvLmgpOiBJbmNsdWRlIHRob3NlIGZpbGVzIHVuY29uZGl0aW9uYWx5LgoKRnJpIE9jdCAxNSAwMTo0Nzo1MSAxOTk5ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgaGFzaHRhYi5jCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIGhhc2h0YWIubwoJKGhhc2h0YWIubyk6IEFkZCBkZXBlbmRlbmNpZXMuCgkqIGhhc2h0YWIuYzogTmV3IGZpbGUKCldlZCBPY3QgMTMgMDE6MTY6NDcgMTk5OSAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBiYXNlbmFtZS5jIChESVJfU0VQQVJBVE9SKTogTmV3IG1hY3JvLgoJKERJUl9TRVBBUkFUT1JfMik6IExpa2V3aXNlLgoJKEhBVkVfRE9TX0JBU0VEX0ZJTEVTWVNURU0pOiBMaWtld2lzZS4KCShJU19ESVJfU0VQQVJBVE9SKTogTGlrZXdpc2UuCgkobWFpbik6IEhhbmRsZSBNU0RPUyBzdHlsZSBwYXRobmFtZS4KCjE5OTktMTAtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZG9fdHlwZSk6IEhhbmRsZSBwb2ludGVyIHRvIG1lbWJlciB0eXBlcyB3aG9zZQoJZW5jbG9zaW5nIGNsYXNzZXMgaGF2ZSBuYW1lc3BhY2Ugc2NvcGUuCgpTdW4gT2N0IDEwIDAxOjIzOjUwIDE5OTkgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIGNvbmZpZy50YWJsZTogIFByb3ZpZGUgYSBiYWNrdXAgc2hlbGwgZm9yIGV4ZWN1dGluZyBtb3ZlLWlmLWNoYW5nZS4KCjE5OTktMTAtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB4bWFsbG9jLmMgKHhtYWxsb2MpOiBGaXggc3BlbGxpbmcgZXJyb3IuCgkoeGNhbGxvYywgeHJlYWxsb2MpOiBMaWtld2lzZS4KCjE5OTktMTAtMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwbHVzLWRlbS5jIChmYW5jeV9hYm9ydCwgZGVtYW5nbGVfaW50ZWdyYWxfdmFsdWUsCglkZW1hbmdsZV9hcm1faHBfdGVtcGxhdGUsIHJlY3Vyc2l2ZWx5X2RlbWFuZ2xlLAoJc3RhbmRhcmRfc3ltYm9sX2NoYXJhY3RlcnMsIGhwX3N5bWJvbF9jaGFyYWN0ZXJzLCBtYWluKTogQWRkIHByb3RvdHlwZS4KCShwcm9ncmFtX25hbWUsIHByb2dyYW1fdmVyc2lvbiwgZmF0YWwpOiBDb25zdGlmeSBhIGNoYXIqLgoJKHVzYWdlLCBmYXRhbCk6IE1hcmsgd2l0aCBBVFRSSUJVVEVfTk9SRVRVUk4uCgkobWFpbik6IENhbGwgcmV0dXJuLCBub3QgZXhpdC4KCjE5OTktMDktMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNob29zZS10ZW1wLmM6IFJlbW92ZSBvYnNvbGV0ZSBjb21tZW50IGFib3V0IGdjYy4KCShtYWtlX3RlbXBfZmlsZSk6IENvbnN0aWZ5IGEgY2hhciouCgpXZWQgU2VwICA4IDIwOjAzOjI4IDE5OTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHhtZW1kdXAuYzogSW5jbHVkZSBzeXMvdHlwZXMuaC4KCjE5OTktMDktMDcgIEplZmYgR2FyemlrICA8amdhcnppa0Bwb2JveC5jb20+CgoJKiB4bWVtZHVwLmM6IE5ldyB4bWVtZHVwIGZ1bmN0aW9uLgoJKiBNYWtlZmlsZS5pbiwgbWFrZWZpbGUudm1zLCB2bXNidWlsZC5jb206ICBVc2UgeG1lbWR1cC5bY29dLgoKVHVlIFNlcCAgNyAyMzozMjoxOCAxOTk5ICBMaW5hcyBWZXBzdGFzICA8bGluYXNAbGluYXMub3JnPgoKCSogY29uZmlnLnRhYmxlOiBBZGQgb3BlbmVkaXRpb24gdGFyZ2V0LgoJKiBjb25maWcvbWgtb3BlbmVkaXRpb246IE5ldyBmaWxlLgoKVGh1IFNlcCAgMiAwMTozNjoxMiAxOTk5ICBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBwZXhlY3V0ZS5jIChwZXhlY3V0ZSk6ICBGaWxsIGluIHRlbXBfYmFzZSB3aGVuIG5lZWRlZC4KCjE5OTktMDgtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBnZXRwd2QuYzogQ2hlY2sgSEFWRV9HRVRDV0QgYmVmb3JlIGRlZmluaW5nIGl0IGF3YXkuCgoxOTk5LTA4LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIGNhbGxvYy5jIGFuZCBnZXRwd2QuYy4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgZ2V0cHdkLm8uCgkoZ2V0cHdkLm8pOiBBZGQgdGFyZ2V0LgoKCSogY29uZmlndXJlLmluIChBQ19QUkVSRVEpOiBCdW1wIHRvIDIuMTMuCgkoQUNfQ0hFQ0tfSEVBREVSUyk6IEFkZCBjaGVjayBmb3IgPHN5cy9zdGF0Lmg+LgoKCSogZ2V0cHdkLmM6IE5ldyBmaWxlLCBtb3ZlZCBoZXJlIGZyb20gZ2NjLgoKMTk5OS0wOC0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BsdXMtZGVtLmMgKGdudV9zcGVjaWFsKTogQ2FzdCBhIGBzaXplX3QnIHRvIGBsb25nJyB3aGVuCgljb21wYXJpbmcgYWdhaW5zdCBhIHNpZ25lZCBxdWFudGl0eS4KCShhcm1fc3BlY2lhbCk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IExpa2V3aXNlLgoJKGRvX2hwYWNjX3RlbXBsYXRlX2NvbnN0X3ZhbHVlKTogTWFyayBwYXJhbWV0ZXIgYHdvcmsnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgkobWFpbik6IENvbnN0aWZ5IHZhcmlhYmxlIGB2YWxpZF9zeW1ib2xzJy4KClR1ZSBBdWcgMjQgMDI6NTA6NDUgMTk5OSAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBzdHJ0b3VsLmMgKHN0cnRvdWwpOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kICYmIHdpdGhpbiB8fC4KCkZyaSBBdWcgIDYgMjM6MzI6MjkgMTk5OSAgRGFuaWVsIEphY29ib3dpdHogPGRyb3dAZHJvdy50aGVtLm9yZz4KCgkqIE1ha2VmaWxlLmluIChGTEFHU19UT19QQVNTKTogSW5jbHVkZSBwcmVmaXgsIGV4ZWNfcHJlZml4LAoJbGliZGlyLCBsaWJzdWJkaXIgYW5kIHRvb2xkaXIuCgoxOTk5LTA4LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5jIChzcGxheV90cmVlX2luc2VydCk6IFJldHVybiB0aGUgbmV3IG5vZGUuCgoxOTk5LTA3LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYXJndi5jOiBJbmNsdWRlIHN0ZGxpYi5oIGFuZCBzdHJpbmcuaCBpbnN0ZWFkIG9mCglwcm90b3R5cGluZyBkaXJlY3RseS4KCSogY2hvb3NlLXRlbXAuYzogQ29uZGl0aW9uYWxseSBpbmNsdWRlIHN0cmluZy5oLgoKMTk5OS0wNy0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKE5FRURFRCk6IEFkZCBiY21wLCBiY29weSwgYnplcm8uCgoxOTk5LTA3LTExICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9pbnNlcnQpOiBBZGQgaW5pdGlhbGl6YXRpb24gdG8gYXZvaWQKCXdhcm5pbmcuCgoxOTk5LTA3LTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAobmVlZGVkLWxpc3QpOiBPbmx5IGluY2x1ZGUgc3R1ZmYgd2UgYWN0dWFsbHkgbmVlZAoJZm9yIGxpYnN0ZGMrKy4KCjE5OTktMDYtMjEgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmNzLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAoY2hlY2tmdW5jcyk6IEFkZCBnZXR0aW1lb2ZkYXkuCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCk1vbiBKdW4gMjEgMDU6NTY6MDEgMTk5OSAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBjb25maWd1cmUuaW4gKCotKi11d2luKik6IFVXSU4gaGFzIHN5c197ZXJybGlzdCxuZXJyfSBldmVuIGlmCgl0aGUgdGVzdCBmYWlscy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMTk5OS0wNi0xMCAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHNldGVudi5vKTogQWRkIGNvbmZpZy5oIGRlcCBmb3Igc2V0ZW52Lm8gdG8gZml4CglwYXJhbGxlbCBidWlsZHMuCgoxOTk5LTA1LTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwdXRlbnYuYzogSW5jbHVkZSBhbnNpZGVjbC5oIHRvIGRlZmluZSBgY29uc3QnLgoJKiBzZXRlbnYuYzogTGlrZXdpc2UuCgpXZWQgTWF5IDI2IDAzOjU4OjIwIDE5OTkgICJNZWxpc3NhIE8nTmVpbGwiIDxvbmVpbGxAY3Muc2Z1LmNhPgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBwdXRlbnYuYyBhbmQgc2V0ZW52LmMuCgkqIGNvbmZpZ3VyZS5pbiAoZnVuY3MpOiBBZGQgcHV0ZW52IGFuZCBzZXRlbnYuCgkoQUNfQ0hFQ0tfRlVOQ1MpOiBDaGVjayBmb3IgcHV0ZW52IGFuZCBzZXRlbnYuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogcHV0ZW52LmMgc2V0ZW52LmM6IE5ldyBmaWxlcy4KCgkqIGdldGN3ZC5jIChnZXRjd2QpOiBJZiBwYXRobmFtZSBpcyBOVUxMLCB0aGVuIG9idGFpbiBTSVpFCglieXRlcyBvZiBzcGFjZSB1c2luZyBtYWxsb2MuCgpNb24gTWF5IDE3IDAxOjQyOjM0IDE5OTkgIFN0dSBHcm9zc21hbiAgPGdyb3NzbWFuQGJhYnlsb24tNS5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmRfdHlwZSAobmVhciAnSScgY2FzZSkpOiBEb24ndCBhZHZhbmNlCgl0aGUgKm1hbmdsZWQgcG9pbnRlciBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAgQ2xlYW4gdXAgY29kZSB0bwoJbWF0Y2ggcHJldmFpbGluZyBjb2Rpbmcgc3R5bGUuCgoxOTk5LTA1LTEzICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiB0bXBuYW0uYyAoTF90bXBuYW0pOiBGaXggdHlwby4KClRodSBNYXkgMTMgMDE6MTQ6NDYgMTk5OSBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBjcGx1cy1kZW0uYyAoc3RhbmRhcmRfc3ltYm9sX2NoYXJhY3RlcnMpOiBSZW5hbWVkIGZyb20KCXN0YW5kYXJkX3N5bWJvbF9hbHBoYWJldC4gIE5vIGxvbmdlciBtb2RpZnkgVEFCTEUuCgkoaHBfc3ltYm9sX2NoYXJhY3RlcnMpOiBSZW5hbWVkIGZyb20gaHBfc3ltYm9sX2FscGhhYmV0LiAgTm8gbG9uZ2VyCgltb2RpZnkgVEFCTEUuCgkobWFpbik6IENvcnJlc3BvbmRpbmcgY2hhbmdlcy4gIFVzZSBzdHJjaHIgdG8gZGV0ZXJtaW5lIGlmIGEKCWNoYXJhY3RlciBpcyB2YWxpZC4KCjE5OTktMDUtMTEgIEppbSBCbGFuZHkgIDxqaW1iQHp3aW5nbGkuY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChtYWluKTogVXNlIHRhYmxlIGxvb2t1cCB0byBkaXN0aW5ndWlzaCBpZGVudGlmaWVyCgljaGFyYWN0ZXJzIGZyb20gbm9uLWlkZW50aWZpZXIgY2hhcmFjdGVycy4KCShzdGFuZGFyZF9zeW1ib2xfYWxwaGFiZXQsIGhwX3N5bWJvbF9hbHBoYWJldCk6IE5ldyBmdW5jdGlvbnMuCgpUaHUgTWF5ICA2IDIwOjM0OjQyIDE5OTkgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBjb25maWd1cmUuaW4gKHN5cy9yZXNvdXJjZS5oKTogQWRkIHRvIEFDX0NIRUNLX0hFQURFUlMgbGlzdC4KCSogZ2V0cnVudGltZS5jOiBPbmx5IGF0dGVtcHQgdG8gaW5jbHVkZSBzeXMvcmVzb3VyY2UuaCBhbmQKCXVzZSBnZXRydXNhZ2UgaWYgYm90aCBIQVZFX0dFVFJVU0FHRSBhbmQgSEFWRV9TWVNfUkVTT1VSQ0VfSAoJYXJlIGRlZmluZWQuCgpNb24gQXByIDI2IDAxOjM2OjA2IDE5OTkgIERvbm4gVGVycnkgKGRvbm5AaW50ZXJpeC5jb20pCgoJKiBjb25maWd1cmUuaW4gKGFsbG9jYSBkZXRlY3Rpb24pOiBIYW5kbGUgYWxsb2NhIGRpcmVjdGx5IGZvciBpbnRlcml4LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgpTdW4gQXByIDI1IDAxOjE4OjIxIDE5OTkgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogY2hvb3NlLXRlbXAuYyAoRElSX1NFUEFSQVRPUik6IFVzZSAnXFwnIG9ubHkgZm9yIG5hdGl2ZSB3aW5kb3dzMzIuCgoxOTk5LTA0LTIwICBKaW0gQmxhbmR5ICA8amltYkB6d2luZ2xpLmN5Z251cy5jb20+CgoJRml4IGZyb20gRGFsZSBIYXdraW5zOgoJKiBjcGx1cy1kZW0uYyAobW9wX3VwKTogU2V0IHR5cGV2ZWNfc2l6ZSB0byB6ZXJvLCBzbyBpdCdsbCBiZQoJcmVhbGxvY2F0ZWQgcHJvcGVybHkgaWYgd2UgdXNlIGl0IGFnYWluLgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IENoZWNrIGZvciBidWZmZXIgb3ZlcnJ1bi4gIEJlCglzdHJpY3RlciBhYm91dCBzeW50YXguICBBbHdheXMgbnVsbC10ZXJtaW5hdGUgc3RyaW5nLgoKVGh1IEFwciAxNSAyMzowMDo1NSAxOTk5ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoY2hlY2tmdW5jcyk6IENoZWNrIGZvciBzYnJrLgoJKiBjb25maWcuaW46IFJlYnVpbHQuCgkqIGNvbmZpZ3VyZTogTGlrZXdpc2UuCgkqIHhtYWxsb2MuYzogVXNlIEhBVkVfU0JSSyBpbnN0ZWFkIG9mIHRoZSBob3N0IHNwZWNpZmljIGRlZmluaXRpb25zLgoKMTk5OS0wNC0xMiAgSmltIEJsYW5keSAgPGppbWJAendpbmdsaS5jeWdudXMuY29tPgoKCUZpeCBmcm9tIE1hcmN1cyBEYW5pZWxzOgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfZnVuZF90eXBlKTogRG9uJ3QgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZQoJaWRlbnRpZmllciBsb29raW5nIGZvciBhbm90aGVyIHVuZGVyc2NvcmUuCgpTdW4gQXByIDExIDIzOjIwOjU5IDE5OTkgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogcGV4ZWN1dGUuYzogQ2hhbmdlIGFsbCByZWZlcmVuY2VzIHRvIF9fVVdJTl9fIHRvIF9VV0lOLgoJKiB4bWFsbG9jLmM6IExpa2V3aXNlLgoJKHhjYWxsb2MpOiBVV0lOIGhhcyBzYnJrLgoJKHhyZWFsbG9jKTogRml4IGd1YXJkIG1hY3JvLgoKMTk5OS0wNC0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFsbG9jYS1jb25mLmggKGFsbG9jYSkgW0NfQUxMT0NBXTogRG9uJ3QgdXNlIEdjYyBidWlsdGluCglvciA8YWxsb2NhLmg+LgoJKiBjbG9jay5jIChHTlVfSFopOiBOZXcgZGVmaW5pdGlvbi4KCShjbG9jayk6IFVzZSBpdC4KCSogZ2V0cnVudGltZS5jOiBMaWtld2lzZS4KCgkqIGNvbmZpZy50YWJsZTogVXNlIG1oLWJlb3MuCgkqIGNvbmZpZy9taC1iZW9zOiBOZXcgZmlsZS4KCjE5OTktMDQtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfdGVtcGxhdGVfdmFsdWVfcGFybSk6IEhhbmRsZQoJcG9pbnRlcnMtdG8tbWVtYmVycy4KCShkb190eXBlKTogSGFuZGxlIHRlbXBsYXRlIHBhcmFtZXRlcnMgYXMgcXVhbGlmaWVycy4KCjE5OTktMDQtMDEgIEppbSBCbGFuZHkgIDxqaW1iQHp3aW5nbGkuY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBBdHRlbXB0IHRvIGhhbmRsZSBvdmVyZmxvd3MgaW4gY291bnRzIHdpdGggc29tZQoJc2VtYmxhbmNlIG9mIGdyYWNlLgoJKGNvbnN1bWVfY291bnQpOiBEZXRlY3Qgb3ZlcmZsb3dzLiAgUmV0dXJuIC0xIHRvIGluZGljYXRlIGVycm9ycywKCWluc3RlYWQgb2YgemVyby4KCShkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtLCBkZW1hbmdsZV90ZW1wbGF0ZSk6IEhhbmRsZSBjaGFuZ2UKCXRvIGNvbnN1bWVfY291bnQncyByZXR1cm4gY29udmVudGlvbi4KCjE5OTktMDQtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHRlc3RzdWl0ZS9yZWdyZXNzLWRlbWFuZ2xlOiBOZXcgZmlsZS4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluIChhbGwsIGNoZWNrLCBpbnN0YWxsY2hlY2ssIGluZm8sIGluc3RhbGwtaW5mbywKCWNsZWFuLWluZm8sIGR2aSwgaW5zdGFsbCwgZXRhZ3MsIHRhZ3MsIG1vc3RseWNsZWFuLCBjbGVhbiwKCWRpc3RjbGVhbiwgbWFpbnRhaW5lci1jbGVhbiwgcmVhbGNsZWFuKTogRGVwZW5kIG9uIGNvcnJlc3BvbmRpbmcKCWAtc3ViZGlyJyB0YXJnZXQuCgkoYWxsLXN1YmRpciBjaGVjay1zdWJkaXIgaW5zdGFsbGNoZWNrLXN1YmRpciBpbmZvLXN1YmRpcgoJaW5zdGFsbC1pbmZvLXN1YmRpciBjbGVhbi1pbmZvLXN1YmRpciBkdmktc3ViZGlyCglpbnN0YWxsLWluZm8tc3ViZGlyIGV0YWdzLXN1YmRpciBtb3N0bHljbGVhbi1zdWJkaXIgY2xlYW4tc3ViZGlyCglkaXN0Y2xlYW4tc3ViZGlyIG1haW50YWluZXItY2xlYW4tc3ViZGlyKTogTmV3IHRhcmdldC4KCSogdGVzdHN1aXRlL01ha2VmaWxlLmluOiBOZXcgZmlsZS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBjb25maWd1cmUuaW46IENyZWF0ZSB0ZXN0c3VpdGUvTWFrZWZpbGUuCgoxOTk5LTA0LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2NvbXBhcmVfcG9pbnRlcnMpOiBEZWZpbmUuCgoxOTk5LTAzLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5jIChzcGxheV90cmVlX2NvbXBhcmVfaW50cyk6IERlZmluZS4KCjE5OTktMDMtMzAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChjb25zdW1lX2NvdW50KTogSWYgYGNvdW50JyB3cmFwcywgcmV0dXJuIDAgYW5kCglkb24ndCBhZHZhbmNlIGlucHV0IHBvaW50ZXIuCgkoZGVtYW5nbGVfY2xhc3NfbmFtZSk6IElmIGNvbnN1bWVfY291bnQgZGlkbid0IGZpbmQgYSBjb3VudCwgZG8KCW5vdGhpbmcuICBEb24ndCBib3RoZXIgd2l0aCBgc3RybGVuJyBzYW5pdHkgY2hlY2s7IGNvbnN1bWVfY291bnQKCWRvZXMgaXQgZm9yIHVzLgoKMTk5OS0wMy0xNiAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCUZyb20gQXJ0IEhhYXMgIDxhaGFhc0BuZW9zb2Z0LmNvbT46CgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9wcmVmaXgpOiBEb24ndCBncmFiIGFsbCB0aGUgJ19fJyBzdHJpbmdzCgl3aGVuIGRvaW5nIGFybSBvciBocCBzdHlsZS4KCShkZW1hbmdsZV9uZXN0ZWRfYXJncyk6IERlY3IgZm9yZ2V0dGluZ190eXBlcyBmaWVsZCB3aGVuIGRvbmUuCgpUaHUgTWFyIDExIDAxOjIyOjU4IDE5OTkgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogcGV4ZWN1dGUuYyAoX19DWUdXSU4zMl9fKTogUmVuYW1lIHRvCgkoX19DWUdXSU5fXyk6IHRoaXMuCgkqIHhtYWxsb2MuYzogTGlrZXdpc2UuCgoJQ2hhbmdlcyB0byBzdXBwb3J0IGkzODYtcGMtdXdpbi4KCSogY29uZmlndXJlLmluICgqLSotdXdpbiopOiBXb3JrYXJvdW5kIGZvciB2Zm9yayBidWcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogcGV4ZWN1dGUuYyAocGV4ZWN1dGUpOiBCZSBsaWtlIHN0YW5kYXJkIFVuaXguCgkocHdhaXQpOiBMaWtld2lzZS4KCSogeG1hbGxvYy5jIChmaXJzdF9icmVhayk6IERlZmluZS4KCSh4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUpOiBVc2UuCgkoeG1hbGxvYyk6IFVzZS4KClRodSBNYXIgMTEgMDE6MDc6NTUgMTk5OSAgRnJhbnogU2lybCA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiBjb25maWcudGFibGU6IENsZWFudXAgYW5kIGFkZCBtaC0qcGljIGhhbmRsaW5nIGZvciBhbHBoYSwgYXJtLCBwb3dlcnBjCgpTdW4gRmViIDI4IDIyOjMwOjQ0IDE5OTkgIEdlb2ZmcmV5IE5vZXIgIDxub2VyQGN5Z251cy5jb20+CgoJKiBjb25maWcudGFibGU6IENoZWNrIGN5Z3dpbiosIG5vdCBjeWd3aW4zMiouCgpUdWUgRmViICA5IDE2OjM5OjAxIDE5OTkgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBDaGFuZ2UgbWtzdGVtcCAtPiBta3N0ZW1wcy4KClR1ZSBGZWIgIDkgMDE6MTI6MjcgMTk5OSAgTWFyYyBFc3BpZSA8TWFyYy5Fc3BpZUBsaWFmYS5qdXNzaWV1LmZyPgoKCSogTWFrZWZpbGUuaW4gKFJFUVVJUkVEX09GSUxFUyk6IHJlbW92ZSBta3N0ZW1wLm8KCSogY29uZmlndXJlLmluIChmdW5jcyk6IENoZWNrIGZvciBhbmQgY29uZGl0aW9uYWxseSBhZGQgbWtzdGVtcHMgdG8KCXRoZSBsaXN0IG9mIGZ1bmN0aW9ucyBsaWJpYmVydHkgd2lsbCBwcm92aWRlLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgpXZWQgRmViICAzIDAwOjAxOjE1IDE5OTkgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogY2xvY2suYyAoSFopOiBEZWZpbmUgaW4gdGVybXMgb2YgKElTTyBDKSBDTE9DS1NfUEVSX1NFQyBvbgoJcGxhdGZvcm1zIHRoYXQgZG9uJ3QgaGF2ZSBIWi4KCSogZ2V0cnVudGltZS5jIChIWik6IExpa2V3aXNlLgoKU2F0IEphbiAzMCAxMzoyODowNCAxOTk5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHhzdHJkdXAubyk6IERlcGVuZCBvbiBjb25maWcuaC4KCldlZCBKYW4gMTMgMDc6MjY6NDQgMTk5OSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogY3BsdXMtZGVtLmMgKG1vcF91cCk6IFNldCB3b3JrLT5wcmV2aW91c19hcmd1bWVudCB0byBOVUxMIGFmdGVyCglmcmVlaW5nIGl0LgoKV2VkIEphbiAxMyAxNDoxNjozNiAxOTk5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB4c3RyZHVwLmMgKHhzdHJkdXApOiBTd2l0Y2ggZnJvbSBzdHJjcHkgdG8gbWVtY3B5IGZvciBzcGVlZC4KClR1ZSBKYW4gIDUgMTU6NTg6MjkgMTk5OSAgRWxlbmEgWmFubm9uaSAgPGV6YW5ub25pQGt3aWtlbWFydC5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IGZpeCB0eXBvLCBzcGxheS10cmVlLmMgaW5zdGVhZCBvZgoJc3BsYXktdHJlZS5vLgoKMTk5OS0wMS0wNCAgSmFzb24gTW9sZW5kYSAgKGpzbUBidWdzaGFjay5jeWdudXMuY29tKQoKCSogY29uZmlndXJlLmluOiBSZXF1aXJlIGF1dG9jb25mIDIuMTIuMSBvciBoaWdoZXIuCgoxOTk4LTEyLTMwICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIHJhbmRvbS5jIChOVUxMKTogRG9uJ3QgcmVkZWZpbmUgTlVMTCBpZiBpdCBpcyBhbHJlYWR5IGRlZmluZWQuCgpUdWUgRGVjIDIyIDA5OjQzOjM1IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFyZ3YuYyAoYnVpbGRhcmd2KTogQ2FzdCB0aGUgcmVzdWx0IG9mIGFsbG9jYSBpbiBhc3NpZ25tZW50LgoKCSogY2hvb3NlLXRlbXAuYzogSW5jbHVkZSBzdGRsaWIuaC4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9hcm1fcHQpOiBSZW1vdmUgdW51c2VkIHByb3RvdHlwZS4KCShzbmFyZl9udW1lcmljX2xpdGVyYWwpOiBDb25zdGlmeSBmaXJzdCBwYXJhbWV0ZXIuCgkoY29kZV9mb3JfcXVhbGlmaWVyKTogQXZvaWQgYSBnY2MgZXh0ZW5zaW9uLCBtYWtlIHRoZSBwYXJhbWV0ZXIgYW4KCWludCwgbm90IGEgY2hhci4KCShkZW1hbmdsZV9xdWFsaWZpZXIpOiBMaWtld2lzZS4KCShkZW1hbmdsZV9zaWduYXR1cmUpOiBDYXN0IHRoZSBhcmd1bWVudCBvZiBhIGN0eXBlIGZ1bmN0aW9uIHRvCgl1bnNpZ25lZCBjaGFyLgoJKGFybV9wdCk6IEFkZCBwYXJlbnMgYXJvdW5kIGFzc2lnbm1lbnQgdXNlZCBhcyB0cnV0aCB2YWx1ZS4KCShkZW1hbmdsZV9hcm1faHBfdGVtcGxhdGUpOiBDb25zdGlmeSB2YXJpYWJsZSBgYXJncycuCgkoZG9faHBhY2NfdGVtcGxhdGVfY29uc3RfdmFsdWUpOiBDYXN0IHRoZSBhcmd1bWVudCBvZiBhIGN0eXBlCglmdW5jdGlvbiB0byB1bnNpZ25lZCBjaGFyLgoJKGRvX2hwYWNjX3RlbXBsYXRlX2xpdGVyYWwpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBpJy4KCShzbmFyZl9udW1lcmljX2xpdGVyYWwpOiBDb25zdGlmeSBwYXJhbWV0ZXIgYGFyZ3MnLgoJQ2FzdCB0aGUgYXJndW1lbnQgb2YgYSBjdHlwZSBmdW5jdGlvbiB0byB1bnNpZ25lZCBjaGFyLgoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfdG9fZG91YmxlKTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0bwoJYXZvaWQgYW1iaWd1b3VzIGBlbHNlJy4KCgkqIGZubWF0Y2guYyAoZm5tYXRjaCk6IENoYW5nZSB0eXBlIG9mIHZhcmlhYmxlcyBgYycsIGBjMScsCglgY3N0YXJ0JyBhbmQgYGNlbmQnIHRvIHVuc2lnbmVkIGNoYXIuICBDYXN0IHRoZSBhcmd1bWVudCBvZiBtYWNybwoJYEZPTEQnLCB3aGljaCB1c2VzIGN0eXBlIGZ1bmN0aW9ucywgdG8gdW5zaWduZWQgY2hhci4KCgkqIG9iamFsbG9jLmMgKGZyZWUpOiBBZGQgcHJvdG90eXBlLgoKU3VuIERlYyAyMCAxNjowMzo0NiAxOTk4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLnNlPgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEZpeCB0eXBvOiBzcGxheS10cmVlLmMsIG5vdCBzcGxheS10cmVlLm8KCkZyaSBEZWMgMTggMTc6NTA6MTggMTk5OCAgRGF2aWQgVGF5bG9yICA8dGF5bG9yQHRleGFzLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfYXJtX3B0KTogcmVtb3ZlIGRlY2xhcmF0aW9uIC0tIGZ1bmN0aW9uCglkb2Vzbid0IGV4aXN0LgoJKGRvX2hwYWNjX3RlbXBsYXRlX2xpdGVyYWwpOiByZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBpJy4KCkZyaSBEZWMgMTggMTY6MTE6NDMgRVNUIDE5OTggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9mdW5kX3R5cGUpOiBQcm9jZXNzIENWIGFuZCB1IGNvZGVzIGJlZm9yZQoJYnVtcGluZyB0aGUgcG9pbnRlciB3ZSByZWFkIGZyb20uIEFsc28gcHJlcGVuZCB0aGVzZSBjb2RlcywKCWFzIHdlIGRvIGluIG90aGVyIHBsYWNlcy4KCjE5OTgtMTItMTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfYXJtX2hwX3RlbXBsYXRlKTogTWFrZSB2YXJpYWJsZSAnYXJncycgYmUKCSdjb25zdCBjaGFyIConIGluIG9yZGVyIHRvIG1hdGNoIGl0cyB1c2FnZSB3aGVuIGNhbGxpbmcgc2libGluZ3MuCgkoc25hcmZfbnVtZXJpY19saXRlcmFsKTogTWFrZSBmaXJzdCBhcmcgJ2NvbnN0IGNoYXIgKionIGluIG9yZGVyCgl0byBtYXRjaCB1c2FnZS4KCk1vbiBEZWMgMTQgMDk6NTU6NTAgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2hvb3NlLXRlbXAuYzogRG9uJ3QgY2hlY2sgSU5fR0NDIGFueW1vcmUuCgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF9mcm9tX2RvdWJsZSk6IFVzZSBgY29uc3QnLCBub3QgYENPTlNUJy4KCSogbWVtY2hyLmMgKG1lbWNocik6IExpa2V3aXNlLgoJKiBtZW1jcHkuYyAobWVtY3B5KTogTGlrZXdpc2UuCgkqIG1lbW1vdmUuYyAobWVtbW92ZSk6IExpa2V3aXNlLgoKCSogbWtzdGVtcC5jOiBEb24ndCBjaGVjayBJTl9HQ0MgYW55bW9yZS4KCSogcGV4ZWN1dGUuYzogTGlrZXdpc2UuCgkqIHNwbGF5LXRyZWUuYzogTGlrZXdpc2UuCgoJKiBzdHJjaHIuYyAoc3RyY2hyKTogVXNlIGBjb25zdCcsIG5vdCBgQ09OU1QnLgoJKiBzdHJyY2hyLmMgKHN0cnJjaHIpOiBMaWtld2lzZS4KCSogc3RydG9sLmMgKHN0cnRvbCk6IExpa2V3aXNlLgoJKiBzdHJ0b3VsLmMgKHN0cnRvdWwpOiBMaWtld2lzZS4KCkZyaSBEZWMgIDQgMTM6NTE6MDQgMTk5OCAgRGF2aWQgVGF5bG9yICAgPHRheWxvckB0ZXhhcy5jeWdudXMuY29tPgoJCQkgIEVsZW5hIFphbm5vbmkgIDxlemFubm9uaUBjeWdudXMuY29tPgoJCQkgIFN0YW4gU2hlYnMgICAgIDxzaGVic0BjeWdudXMuY29tPgoJCQkgIEVkaXRoIEVwc3RlaW4gIDxlZXBzdGVpbkBjeWdudXMuY29tPgoJCQkgIEFuZHJlcyBNYWNMZW9kIDxhbWFjbGVvZEBjeWdudXMuY29tPgoJCQkgIFNhdGlzaCBQYWkJIDxwYWlAYXBvbGxvLmhwLmNvbT4KCgkqIEhQIGFDQyBkZW1hbmdsaW5nIHN1cHBvcnQuCgkqIGNwbHVzLWRlbS5jCgkobWFpbik6IFJlbW92ZSBkZWZhdWx0IHRvIEhQIHN0eWxlIGRlbWFuZ2xpbmcsIHNldCB0byBFREcKCWRlbWFuZ2xpbmcgY29ycmVjdGx5IHdoZW4gLWVkZyBzcGVjaWZpZWQ7IHNldCB0aGUgZGVtYW5nbGluZyBzdHlsZQoJd2hlbiB1c2VyIHNwZWNpZmllcyAnZWRnJy4gU2V0IHN0cmlwX3VuZGVyc2NvcmUgdG8KCXByZXBlbmRzX3VuZGVyc2NvcmUsIGlmIG5vdCBIUFVYSFBQQS4gIFNldAoJY3VycmVudF9kZW1hbmdsaW5nX3N0eWxlIHRvIGhwX2RlbWFuZ2xpbmcgaWYgSFBVWEhQUEEuICBTZXQKCWN1cnJlbnQgZGVtYW5nbGluZyBzdHlsZSBjb3JyZWN0bHkgaWYgdGhlIHN3aXRjaCBpcyBocC4gIFJlYWQKCWxhYmVsIGNvcnJlY3RseSBhbHNvIGluIHRoZSBIUCBzdHlsZSBjYXNlLgoJKHdvcmtfc3R1ZmYpOiBhZGQgdGVtcF9zdGFydCBmaWVsZDsgYWRkIGZpZWxkIGZvciB2b2xhdGlsZSBtZW1iZXIKCWZ1bmN0aW9uLgoJKGFybV9wdCk6IGhhbmRsZSBBUk1fREVNQU5HTElORyBhbmQgRURHX0RFTUFOR0xJTkcgc3R5bGVzOyBIUAoJc3R5bGUgZm9yIHRoaXMgY2FzZSBpcyB0aGUgc2FtZSBhcyBBUk0uCgkoZGVtYW5nbGVfYXJncyk6IGhhbmRsZSBFREdfREVNQU5HTElORyBzdHlsZTsgc3VwcG9ydCBIUCBzdHlsZS4KCShkZW1hbmdsZV9hcm1faHBfdGVtcGxhdGUpOiBuZXcgZnVuY3Rpb24uIChJdCB3YXMKCWRlbWFuZ2xlX2FybV9wdC4pOyBjaGVjayBhbmQgc2V0IHZhbHVlIG9mIHRlbXBfc3RhcnQgZmllbGQgaW4KCW11bHRpcGxlIHBsYWNlcy4gQWxzbywgd2hlbiBjZWNoaW5nIGZvciBlbmQgb2YgdGVtcGxhdGUgYXJncywKCWNoZWNrIHRvIHNlZSBpZiBhdCBlbmQgb2Ygc3RhdGljIG1lbWJlciBvZiB0ZW1wbGF0ZSBjbGFzcy4KCShkZW1hbmdsZV9jbGFzcyk6IG5ldyBsb2NhbCB2YXJpYWJsZSA6IHNhdmVfY2xhc3NfbmFtZV9lbmQgRG9uJ3QKCWluY2x1ZGUgdGVtcGxhdGUgYXJncyBpbiBzdHJpbmcgZGVmaW5pbmcgY2xhc3MuCgkoZGVtYW5nbGVfY2xhc3NfbmFtZSk6IHVzZSBkZW1hbmdlbF9hcm1faHBfdGVtcGxhdGUuCgkoZGVtYW5nbGVfZnVuY3Rpb25fbmFtZSk6IGhhbmRsZSBjYXNlIHdoZXJlIGRlbWFuZ2xpbmcgc3R5bGUgaXMKCUhQX0RFTUFOR0xJTkcgYW5kIGN1cnJlbnRseSBwb2ludCBhdCBhbiAnWCcgaW4gdGhlIG1hbmdsZWQgbmFtZS4KCUhhbmRsZSBFREdfREVNQU5HTElORyBzdHlsZS4gIEhhbmRsZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvcgoJb3BzIGZvciBIUCBzdHlsZS4KCShkZW1hbmdsZV9wcmVmaXgpOiBoYW5kbGUgRURHX0RFTUFOR0xJTkcgYW5kIEFSTV9ERU1BTkdMSU5HCglzdHlsZXMuICBnbG9iYWwgZGVzdHJ1Y3RvciBhbmQgY29uc3RydWN0b3IgZm9yIEhQIHN0eWxlIGFyZSBzYW1lCglhcyBmb3IgQVJNIHN0eWxlLiBTYW1lIGZvciBsb2NhbCB2YXJpYWJsZXMuCgkoZGVtYW5nbGVfcXVhbGlmaWVkKTogaGFuZGxlIEVER19ERU1BTkdMSU5HIHN0eWxlLgoJKGRlbWFuZ2xlX3NpZ25hdHVyZSk6IGFkZCBjYXNlIGZvciB2b2xhdGlsZSBtZW1iZXIgZnVuY3Rpb24uICBGb3IKCWNhc2VzICcxJyAtICc5JyA6IGluaXRpYWxpemUgdGhlIHRlbXBfc3RhcnQgZmllbGQgdG8gLTEgYW5kIGhhbmRsZQoJdGhlIEVER19ERU1BTkdMSU5HIHN0eWxlLiAgZm9yIGNhc2UgJ0YnIDogaGFuZGxlIEVER19ERU1BTkdMSU5HCglhbmQgQVVUT19ERU1BTkdMSU5HIHN0eWxlcy4gIElmIGV4cGVjdGluZyBhIGZ1bmN0aW9uIGFuZCBtYW5hZ2VkCgl0byBkZW1hbmdsZSB0aGUgZnVuY3QgYXJncywgdGhlbiBoYW5kbGUgdGhlIExVQ0lEX0RFTUFOR0xJTkcsCglBUk1fREVNQU5HTElORywgYW5kIEVER19ERU1BTkdMSU5HIHN0eWxlcy4gIEFkZCBjYXNlIGZvciBsb2NhbAoJY2xhc3MgbmFtZSBhZnRlciAiTG5ubl8gaW4gSFAgc3R5bGUgY2FzZS4gSFAgc3R5bGUgdG9vIG5lZWRzIHRvCglmb3JnZXQgdHlwZXMuICBfbm5uIGlzIE9LIGZvciBIUCBzdHlsZSwgc28gZG9uJ3QgcmVwb3J0IGZhaWx1cmUuCgkoZG9faHBhY2NfdGVtcGxhdGVfY29uc3RfdmFsdWUpOiBuZXcgZnVuY3Rpb24uIEhhbmRsZSB0ZW1wbGF0ZSdzCgl2YWx1ZSBwYXJhbSBmb3IgSFAvYUNDLgoJKGRvX2hwYWNjX3RlbXBsYXRlX2xpdGVyYWwpOiBuZXcgZnVuY3Rpb24uICBIYW5kbGUgYSB0ZW1wbGF0ZSdzCglsaXRlcmFsIHBhcmFtZXRlciBmb3IgSFAgYUNDLgoJKHJlY3Vyc2l2ZWx5X2RlbWFuZ2xlKTogbmV3IGZ1bmN0aW9uCgkoc25hcmZfbnVtZXJpY19saXRlcmFsKTogbmV3IGZ1bmN0aW9uLgoJKHVzYWdlKTogYWRkICdlZGcnIHRvIHRoZSBsaXN0IG9mIGRlbWFuZ2xpbmcgc3R5bGVzOyBhZGQgaHAgc3dpdGNoCgl0byBtZXNzYWdlLgoKU2F0IE5vdiAyOCAxNzoyNToyMiAxOTk4ICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkBjeWdudXMuY29tPgoKCSogcGV4ZWN1dGUuYzogUmVtb3ZlIG9ic29sZXRlIGlmZGVmZWQgY3lnd2luIGNvZGUuCgpGcmkgTm92IDI3IDEzOjI2OjA2IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNob29zZS10ZW1wLmM6IEFsd2F5cyBpbmNsdWRlIGxpYmliZXJ0eS5oLiAgQXZvaWQgcmVkdW5kYW5jaWVzLgoJKiBjcGx1cy1kZW0uYzogTGlrZXdpc2UuICBDb25mb3JtIHRvIGxpYmliZXJ0eS5oLgoJKiBwZXhlY3V0ZS5jOiBMaWtld2lzZS4KCSogc3BsYXktdHJlZS5jOiBMaWtld2lzZS4KCjE5OTgtMTEtMjUgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChzcGxheS10cmVlLm8pOiBBZGQgY29uZmlnLmggZGVwZW5kZW5jeS4KCk1vbiBOb3YgMjMgMTY6NTk6NDkgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogIGNvbmZpZ3VyZS5pbjogVXNlIEFDX1BSRVJFUSgyLjEyLjEpLgoKMTk5OC0xMS0xNiAgQmVuamFtaW4gS29zbmlrICA8YmtvekBoYWlnaHQuY29uc3RhbnQuY29tPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IEFkZCBkZW1hbmdsaW5nIGZvciBDOXggdHlwZXMuCgpUaHUgTm92IDE5IDIyOjE1OjUwIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIG1wdy5jIChtcHdfYWNjZXNzKTogQWRkIG1pc3NpbmcgcGFyZW5zLgoKVGh1IE5vdiAxOSAxMjo1OToyMSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW46IENhbGwgQUNfSEVBREVSX1NZU19XQUlULgoKCSogcGV4ZWN1dGUuYzogSW5jbHVkZSBzeXMvd2FpdC5oIHdoZW4gIUlOX0dDQy4KClRodSBOb3YgMTkgMTQ6Mzg6MjAgMTk5OCAgR2VvZmZyZXkgTm9lciAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIHBleGVjdXRlLmM6IHJldmVydCBiYWNrIHRvIGNoZWNraW5nIG9sZCBDeWd3aW4KCXByZXByb2Nlc3NvciBzeW1ib2wgdW50aWwgc29tZSB0aW1lIGhhcyBwYXNzZWQuCgpXZWQgTm92IDE4IDA4OjUyOjI2IDE5OTggIENocmlzdG9waGVyIEZheWxvciA8Y2dmQGN5Z251cy5jb20+CgoJKiBwZXhlY3V0ZS5jOiBSZW9yZ2FuaXplIFdJTjMyIGNhc2UgdG8gYWNjb21vZGF0ZSBDeWd3aW4KCXNpbmNlIGl0IHdpbGwgbm93IHN1cHBvcnQgc2ltaWxhciBjb25zdHJ1Y3RzLgoKRnJpIE5vdiAxMyAxOToxODowNSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBjYWxsb2MuCgoJKiBjYWxsb2MuYzogTmV3CWZpbGUuCgoJKiB4bWFsbG9jLmMgKHhjYWxsb2MpOiBOZXcgZnVuY3Rpb24uCgpGcmkgTm92IDEzIDA4OjUxOjQ2IEVTVCAxOTk4ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKmNwbHVzLWRlbS5jIChkZW1hbmdsZV9wcmVmaXgpOiBVc2UgdGhlIGxhc3QgIl9fIgoJaW4gdGhlIG1hbmdsZWQgbmFtZSB3aGVuIGxvb2tpbmcgZm9yIHRoZSBzaWduYXR1cmUuIFRoaXMgYWxsb3dzCgl0ZW1wbGF0ZSBuYW1lcyB0byBiZWdpbiB3aXRoICJfXyIuCgoxOTk4LTExLTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3BsdXMtZGVtLmMgKHR5cGVfa2luZF90KTogQWRkIHRrX3JlZmVyZW5jZS4KCShkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtKTogSGFuZGxlIGl0LgoJKGRvX3R5cGUpOiBVc2UgaXQgZm9yIHJlZmVyZW5jZXMsIGluc3RlYWQgb2YgdGtfcG9pbnRlci4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtKTogVXNlIGNwbHVzX2RlbWFuZ2xlLAoJbm90IGludGVybmFsX2NwbHVzX2RlbWFuZ2xlLgoKU2F0IE5vdiAgNyAxNjowMjoxMCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjaG9vc2UtdGVtcC5jOiBEb24ndCBpbmNsdWRlIGdhbnNpZGVjbC5oLgoJKiBta3N0ZW1wLmM6IExpa2V3aXNlLgoJKiBwZXhlY3V0ZS5jOiBMaWtld2lzZS4KCk1vbiBOb3YgIDIgMTU6MDU6MzMgMTk5OCAgR2VvZmZyZXkgTm9lciAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogZGV0ZWN0IGN5Z3dpbiogaW5zdGVhZCBvZiBjeWd3aW4zMioKCSogY29uZmlndXJlOiByZWdlbmVyYXRlCgpNb24gTm92ICAyIDEwOjIyOjAxIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHBleGVjdXRlLmM6IENoZWNrIEhBVkVfQ09ORklHX0gsIG5vdCBJTl9HQ0MsIHdoZW4gZGV0ZXJtaW5pbmcKCXdoZXRoZXIgdG8gaW5jbHVkZSBjb25maWcuaC4gIFBvc3NpYmx5IGluY2x1ZGUgdW5pc3RkLmggaW4gdGhlCgkhSU5fR0NDIGNhc2UuICBEZWZpbmUgVkZPUktfU1RSSU5HIGFzIGEgcHJpbnRhYmxlIGZ1bmN0aW9uIGNhbGwKCWZvciBlcnJvciBtZXNzYWdlcyAoZWl0aGVyICJ2Zm9yayIgb3IgImZvcmsiLikgIElmIEhBVkVfVkZPUktfSCBpcwoJZGVmaW5lZCwgaW5jbHVkZSB2Zm9yay5oLiAgSWYgVk1TIGlzIGRlZmluZWQsIGRlZmluZSB2Zm9yaygpCglhcHByb3ByaWF0ZWx5LiAgUmVtb3ZlIHZmb3JrIGNoZWNrIG9uIFVTRywgd2UncmUgdXNpbmcgYXV0b2NvbmYuCgkocGV4ZWN1dGUpOiBTZXQgYGVycm1zZ19mbXQnIHRvIFZGT1JLX1NUUklORyBpbnN0ZWFkIG9mIGNoZWNraW5nCglsb2NhbGx5IHdoYXQgc3RyaW5nIHRvIHVzZS4KCjE5OTgtMTAtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBzcGxheS10cmVlLmM6IFR3ZWFrIGluY2x1ZGUgZGlyZWN0aXZlcyB0byBtYWtlIHN1cmUgZGVjbGFyYXRpb25zIG9mCgl4bWFsbG9jIGFuZCBmcmVlIGFyZSBhdmFpbGFibGUuCgoxOTk4LTEwLTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3BsdXMtZGVtLmMgKGdudV9zcGVjaWFsKTogRml4IGhhbmRsaW5nIG9mIHZpcnR1YWwgdGFibGVzIGluCglhbm9ueW1vdXMgbmFtZXNwYWNlcy4KCjE5OTgtMTAtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcGx1cy1kZW0uYyAod29ya19zdHVmZik6IFJlcGxhY2UgY29uc3RfdHlwZSBhbmQgdm9sYXRpbGVfdHlwZQoJd2l0aCB0eXBlX3F1YWxzLgoJKFRZUEVfVU5RVUFMSUZJRUQpOiBOZXcgbWFjcm8uCgkoVFlQRV9RVUFMX0NPTlNUKTogTGlrZXdpc2UuCgkoVFlQRV9RVUFMX1ZPTEFUSUxFKTogTGlrZXdpc2UuCgkoVFlQRV9RVUFMX1JFU1RSSUNUKTogTGlrZXdpc2UuCgkoY29kZV9mb3JfcXVhbGlmaWVyKTogTmV3IGZ1bmN0aW9uLgoJKHF1YWxpZmllcl9zdHJpbmcpOiBMaWtld2lzZS4KCShkZW1hbmdsZV9xdWFsaWZpZXIpOiBMaWtld2lzZS4KCShpbnRlcm5hbF9jcGx1c19kZW1hbmdsZSk6IFVzZSB0aGVtLgoJKGRlbWFuZ2xlX3NpZ25hdHVyZSk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0pOiBMaWtld2lzZS4KCShkb190eXBlKTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfZnVuZF90eXBlKSk6IExpa2V3aXNlLgoKVGh1IE9jdCAyMiAxOTo1ODo0MyAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfZm9yZWFjaF9oZWxwZXIpOiBNYWtlIGRlZmluaXRpb24gc3RhdGljCgl0byBtYXRjaCBwcm90b3R5cGUuCgoxOTk4LTEwLTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogc3BsYXktdHJlZS5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBpdC4KCShSRVFVSVJFRF9PRklMRVMpOiBMaWtld2lzZS4KCShzcGxheS10cmVlLm8pOiBBZGQgZGVwZW5kZW5jaWVzLgoKVHVlIE9jdCAyMCAxMjoyOTowMiAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5jcy51bmktZG9ydG11bmQuZGU+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfcXVhbGlmaWVkKTogRml4IG9mZi1ieS1vbmUgd2hlbiBjaGVja2luZwoJcmFuZ2Ugb2YgJ0snIGluZGV4LgoKVGh1IE9jdCAxNSAxODo1MToxMiAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjaG9vc2UtdGVtcC5jOiBQcm90b3R5cGUgbWtzdGVtcHMoKSB3aGVuIElOX0dDQy4KCgkqIGNwbHVzLWRlbS5jIChjb25zdW1lX2NvdW50KTogQ2FzdCBhcmd1bWVudCBvZiBjdHlwZSBtYWNybyB0bwoJYHVuc2lnbmVkIGNoYXInLgoJKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IENhc3QgdGhlIHJlc3VsdCBvZiBgc3RybGVuJyB0byAoaW50KSB3aGVuCgljb21wYXJpbmcgYWdhaW5zdCBvbmUuCgkoY3BsdXNfbWFuZ2xlX29wbmFtZSk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX2ludGVncmFsX3ZhbHVlKTogQ2FzdCBhcmd1bWVudCBvZiBjdHlwZSBtYWNybyB0bwoJYHVuc2lnbmVkIGNoYXInLgoJKGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0pOiBMaWtld2lzZS4KCShkZW1hbmdsZV90ZW1wbGF0ZSk6IEluaXRpYWxpemUgdmFyaWFibGUgYGJpbmRleCcuICBDYXN0IHRoZQoJcmVzdWx0IG9mIGBzdHJsZW4nIHRvIChpbnQpIHdoZW4gY29tcGFyaW5nIGFnYWluc3Qgb25lLiAgUmVtb3ZlCgl1bnVzZWQgdmFyaWFibGUgYHN0YXJ0X29mX3ZhbHVlX3Bhcm0nLgoJKGRlbWFuZ2xlX2NsYXNzX25hbWUpOiBDYXN0IHRoZSByZXN1bHQgb2YgYHN0cmxlbicgdG8gKGludCkgd2hlbgoJY29tcGFyaW5nIGFnYWluc3Qgb25lLgoJKGRlbWFuZ2xlX3ByZWZpeCk6IENhc3QgYXJndW1lbnQgb2YgY3R5cGUgbWFjcm8gdG8gYHVuc2lnbmVkIGNoYXInLgoJKGdudV9zcGVjaWFsKTogTGlrZXdpc2UuICBDYXN0IHRoZSByZXN1bHQgb2YgYHN0cmxlbicgdG8gKGludCkKCXdoZW4gY29tcGFyaW5nIGFnYWluc3Qgb25lLgoJKGRlbWFuZ2xlX3F1YWxpZmllZCk6IENhc3QgYXJndW1lbnQgb2YgY3R5cGUgbWFjcm8gdG8gYHVuc2lnbmVkIGNoYXInLgoJKGdldF9jb3VudCk6IExpa2V3aXNlLgoJKGRvX3R5cGUpOiBMaWtld2lzZS4gIENhc3QgdGhlIHJlc3VsdCBvZiBgc3RybGVuJyB0byAoaW50KSB3aGVuCgljb21wYXJpbmcgYWdhaW5zdCBvbmUuCgkoZGVtYW5nbGVfZnVuZF90eXBlKTogQ2FzdCBhcmd1bWVudCBvZiBjdHlwZSBtYWNybyB0byBgdW5zaWduZWQgY2hhcicuCgkoZGVtYW5nbGVfZnVuY3Rpb25fbmFtZSk6IENhc3QgdGhlIHJlc3VsdCBvZiBgc3RybGVuJyB0byAoaW50KQoJd2hlbiBjb21wYXJpbmcgYWdhaW5zdCBvbmUuCgoJKiBta3N0ZW1wLmMgKG1rc3RlbXBzKTogQ2FzdCB2YXJpYWJsZSBgbGVuJyB0byAoaW50KSB3aGVuCgljb21wYXJpbmcgYWdhaW5zdCBvbmUuCgpUdWUgT2N0IDEzIDIzOjUxOjUxIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIG1rc3RlbXAuYzogQ2hlY2sgSEFWRV9TWVNfVElNRV9IIGJlZm9yZSBpbmNsdWRpbmcgc3lzL3RpbWUuaAoJKiBjb25maWd1cmUuaW4gKEFDX0NIRUNLX0hFQURFUlMpOiBDaGVjayBmb3Igc3lzL3RpbWUuaCB0b28uCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlOiBSZWJ1aWx0LgoKCSogZ2V0b3B0LmM6IENoZWNrIEhBVkVfU1RSSU5HU19IIGJlZm9yZSBpbmNsdWRpbmcgc3RyaW5ncy5oLgoJKiBjb25maWd1cmUuaW4gKEFDX0NIRUNLX0hFQURFUlMpOiBDaGVjayBmb3Igc3RyaW5ncy5oIHRvby4KCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlYnVpbHQuCgpNb24gT2N0IDEyIDE5OjE1OjU5IDE5OTggIEdlb2ZmcmV5IE5vZXIgIDxub2VyQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IGluIGNvbW1lbnQsIGNhbGwgQUNfRVhFRVhUIGluc3RlYWQgb2YgQU1fRVhFRVhUCgpTdW4gT2N0IDExIDE3OjM2OjA2IDE5OTggIE1pY2hhZWwgVGllbWFubiAgPHRpZW1hbm5AaG9sb2RlY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjcGx1cy1kZW0ubywgb2JzdGFjay5vKTogRGVwZW5kIHVwb24gY29uZmlnLmguCgpUaHUgT2N0ICA4IDIzOjQyOjA4IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1lcmdlIGVnY3MgJiBkZXZvIGxpYmliZXJ0eS4KCjE5OTgtMDktMDggIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfYXJtX3B0KTogRGVtYW5nbGUgYW5vbnltb3VzIG5hbWVzcGFjZXMuCgpNb24gU2VwICA3IDIzOjI5OjAxIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1rc3RlbXAuYzogSW5jbHVkZSBjb25maWcuaCBldmVuIHdoZW4gbm90IElOX0dDQy4gIFdyYXAgaGVhZGVyCglpbmNsdXNpb25zIGluc2lkZSBIQVZFXypfSCBtYWNyb3MuICBJbmNsdWRlIGFuc2lkZWNsLmggd2hlbiBub3QKCUlOX0dDQy4KCgkqIHZhc3ByaW50Zi5jOiBJbmNsdWRlIHN0ZGFyZy5oL3ZhcmFyZ3MuaCBmaXJzdC4KCgkqIHZwcmludGYuYzogTGlrZXdpc2UuCgpTYXQgU2VwICA1IDAzOjI0OjQ5IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBleGVjdXRlLmM6IFVwZGF0ZXMgZnJvbSBnY2MuICBDb3B5IGluIGdjYyBoYXMgYmVlbiByZW1vdmVkLiAgVGhpcwoJaXMgdGhlIGNhbm9uaWNhbCBjb3B5LiAgRGVmaW5lIElTU1BBQ0UgaWYgIUlOX0dDQy4KCSogYWxsb2NhLmMsIHZmcHJpbnRmLmMsIGNob29zZS10ZW1wLmMsIG1rc3RlbXAuYywgZ2V0b3B0LmM6IFNpbWlsYXJseS4KCSogZ2V0b3B0MS5jLCBvYnN0YWNrLmM6IFNpbWlsYXJseS4KCSogTWFrZWZpbGUuaW46IEJ1aWxkIG1rc3RlbXAubwoKVHVlIFNlcCAgMSAyMzoxMjo0NyAxOTk4ICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBJbmNsdWRlIGFzcHJpbnRmIGluIGxpc3Qgb2YgZnVuY3Rpb25zIGtub3duIG5vdAoJdG8gYmUgaW4gbmV3bGliLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgpXZWQgQXVnIDE5IDE0OjA1OjAxIDE5OTggIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogY3BsdXMtZGVtLmMgKHdvcmtfc3R1ZmYpOiBBZGQgZGxsaW1wb3J0ZWQuCgkoZGVtYW5nbGVkX3ByZWZpeCk6IE1hcmsgc3ltYm9scyBpbXBvcnRlZCBmcm9tIFBFIERMTC4KCShpbnRlcm5hbF9jcGx1c19kZW1hbmdsZWQpOiBIYW5kbGUuCgoxOTk4LTA4LTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZG9fdHlwZSk6IEZpeCBzaW1wbGUgYXJyYXkgaGFuZGxpbmcuICBJZiB3ZSBmYWlsLAoJc3RheSBmYWlsZWQuCgpNb24gQXVnIDE3IDEwOjQwOjM0IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwbHVzLWRlbS5jOiBJbmNsdWRlIGNvbmZpZy5oIGlmIGl0IGV4aXN0cy4gIEFsc28sIG9ubHkKCXByb3RvdHlwZSBtYWxsb2MvcmVhbGxvYyBpZiB3ZSBjYW4ndCBnZXQgc3RkbGliLmguCgpTYXQgQXVnIDE1IDE2OjE1OjAxIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogU3dpdGNoIGJhY2sgdG8gY2hlY2tpbmcgLS13aXRoLXRhcmdldC1zdWJkaXIgd2hlbgoJZGVjaWRpbmcgd2hldGhlciB0byBjaGVjayBmb3IgbmV3bGliLCB1bmRvaW5nIHBhcnQgb2YgSnVseSAxNQoJY2hhbmdlLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgpUaHUgQXVnIDEzIDE2OjQ3OjM4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcGx1cy1kZW0uYyAodHlwZV9raW5kX3QpOiBOZXcgdHlwZS4KCShkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtKTogQWRkIHR5cGVfa2luZF90IHBhcmFtZXRlci4gIFJlbHkKCW9uIHRoaXMgcGFyYW10ZXIsIHJhdGhlciB0aGFuIGRlbWFuZ2xpbmcgdGhlIHR5cGUgYWdhaW4uCgkoZGVtYW5nbGVfaW50ZWdyYWxfdmFsdWUpOiBQYXNzIHRrX2ludGVncmFsLgoJKGRlbWFuZ2xlX3RlbXBsYXRlXzogUGFzcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBkb190eXBlLgoJKGRvX3R5cGUpOiBSZXR1cm4gYSB0eXBlX2tpbmRfdC4gIFBhc3MgdGtfaW50ZWdyYWwgdG8KCWRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0gZm9yIGFycmF5IGJvdW5kcy4KCShkZW1hbmdsZV9mdW5kX3R5cGUpOiBMaWtld2lzZS4KCglBbHNvIGluY29ycG9yYXRlIGZyb20gR0NDIHZlcnNpb246CgoJVHVlIEp1bCAyMSAxMzoyODoxOSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZG9fdHlwZSk6IFVzZSBkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtIGZvciBhcnJheXMuCgpUaHUgQXVnIDEzIDE2OjQ3OjM4IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9uZXN0ZWRfYXJncyk6IE1ha2UgZnVuY3Rpb24gZGVmaW5pdGlvbgoJc3RhdGljIHRvIG1hdGNoIHRoZSBwcm90b3R5cGUuCgpUdWUgSnVsIDI4IDExOjMzOjA5IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcGx1cy1kZW0uYyAodHlwZV9raW5kX3QpOiBOZXcgdHlwZS4KCShkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtKTogQWRkIHR5cGVfa2luZF90IHBhcmFtZXRlci4gIFJlbHkKCW9uIHRoaXMgcGFyYW10ZXIsIHJhdGhlciB0aGFuIGRlbWFuZ2xpbmcgdGhlIHR5cGUgYWdhaW4uCgkoZGVtYW5nbGVfaW50ZWdyYWxfdmFsdWUpOiBQYXNzIHRrX2ludGVncmFsLgoJKGRlbWFuZ2xlX3RlbXBsYXRlXzogUGFzcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBkb190eXBlLgoJKGRvX3R5cGUpOiBSZXR1cm4gYSB0eXBlX2tpbmRfdC4gIFBhc3MgdGtfaW50ZWdyYWwgdG8KCWRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0gZm9yIGFycmF5IGJvdW5kcy4KCShkZW1hbmdsZV9mdW5kX3R5cGUpOiBMaWtld2lzZS4KCglBbHNvIGluY29ycG9yYXRlIGZyb20gR0NDIHZlcnNpb246CgoJVHVlIEp1bCAyMSAxMzoyODoxOSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZG9fdHlwZSk6IFVzZSBkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtIGZvciBhcnJheXMuCgpNb24gSnVsIDI3IDEyOjE2OjA4IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChBTExPQ0EpOiBOZXcgdmFyaWFibGUuCgkoJChUQVJHRVRMSUIpKTogQWRkICQoQUxMT0NBKSB0byBsaWJyYXJ5LgoJKG5lZWRlZC1saXN0KTogQWRkICQoQUxMT0NBKS4KCSgkKEFMTE9DQSkpOiBEZXBlbmQgdXBvbiBzdGFtcC1waWNkaXIuCgpTdW4gSnVsIDE5IDA4OjIzOjE3IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9uZXN0ZWRfYXJncyk6IE1ha2UgZnVuY3Rpb24gZGVmaW5pdGlvbgoJc3RhdGljIHRvIG1hdGNoIHRoZSBwcm90b3R5cGUuCgpXZWQgSnVsIDE1IDAwOjEyOjU4IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgLS13aXRoLWNyb3NzLWhvc3QgcmF0aGVyIHRoYW4KCS0td2l0aC10YXJnZXQtc3ViZGlyIHdoZW4gZGVjaWRpbmcgd2hldGhlciBidWlsZCB1c2VzIGEgY3Jvc3MKCWNvbXBpbGVyLCBhbmQgd2hlbiBkZWNpZGluZyB3aGVyZSB0byBpbnN0YWxsIHRoZSBsaWJyYXJ5LgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgpTdW4gSnVsIDEyIDAxOjI3OjA1IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9uZXN0ZWRfYXJncyk6IFJldHVybiBhIHZhbHVlLgoKU2F0IEp1bCAxMSAxNjoxOTo0OCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3BsdXMtZGVtLmMgKHN0cmluZyk6IE1vdmUgZGVmaW5pdGlvbiBiZWZvcmUgd29ya19zdHVmZi4KCSh3b3JrX3N0dWZmKTogQWRkIHZvbGF0aWxlX3R5cGUsIGZvcmdldHRpbmdfdHlwZXMsCglwcmV2aW91c19hcmd1bWVudCwgYW5kIG5yZXBlYXRzIGZpZWxkcy4KCShTQ09QRV9TVFJJTkcpOiBOZXcgbWFjcm8uCgkoZGVtYW5nbGVfdGVtcGxhdGUpOiBBZGQgYHJlbWVtYmVyJyBwYXJhbWV0ZXIuICBBZGQgY29tbWVudC4KCVJlZ2lzdGVyIHRoZSBgQicgY29kZSB0eXBlIGhlcmUsIGlmIHJlbWVtYmVyaW5nLiAgVGlkeS4gIEZpeCBjcmFzaAoJb24gTlVMTCB0bXBsX2FyZ3ZlYy4gIEJlIGNvbnNpc3RlbnQgd2l0aCB1c2Ugb2YgdG5hbWUvdHJhd25hbWUuCgkoZGVtYW5nbGVfbmVzdGVkX2FyZ3MpOiBOZXcgZnVuY3Rpb24uCgkoaW50ZXJuYWxfY3BsdXNfZGVtYW5nbGUpOiBIYW5kbGUgdm9sYXRpbGUtcXVhbGlmaWVkIG1lbWJlcgoJZnVuY3Rpb25zLgoJKG1vcF91cCk6IERlbGV0ZSB0aGUgcHJldmlvdXNfYXJndW1lbnQgc3RyaW5nIGlmIHByZXNlbnQuCgkoZGVtYW5nbGVfc2lnbmF0dXJlKTogVGlkeS4gIEhhbmRsZSB2b2xhdGlsZS1xdWFsaWZpZWQgbWVtYmVyCglmdW5jdGlvbnMuICBIYW5kbGUgYmFjay1yZWZlcmVuY2VzIHVzaW5nIHRoZSBgQicgY29kZS4gIFVzZSBleHRyYQoJcGFyYW1ldGVyIHRvIGRlbWFuZ2xlX3RlbXBsYXRlIGFuZCBTQ09QRV9TVFJJTkcgd2hlcmUgYXBwcm9wcmlhdGUuCgkoZGVtYW5nbGVfdGVtcGxhdGVfdmFsdWVfcGFybSk6IEZpeCB0aGlua287ICdCJyBpcyBub3QgYW4gaW50ZWdyYWwKCWNvZGUuCgkoZGVtYW5nbGVfY2xhc3MpOiBVc2UgU0NPUEVfU1RSSU5HLgoJKGdudV9zcGVjaWFsKTogUGFzcyBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIGRlbWFuZ2xlX3RlbXBsYXRlLgoJVXNlIFNDT1BFX1NUUklORy4KCShkZW1hbmdsZV9xdWFsaWZpZWQpOiBTYXZlIHF1YWxpZmllZCB0eXBlcyBmb3IgbGF0ZXIKCWJhY2stcmVmZXJlbmNlcy4gIEhhbmRsZSBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGZvciB0ZW1wbGF0ZQoJdHlwZXMgY29ycmVjdGx5LgoJKGRvX3R5cGUpOiBUaWR5LiAgVXNlIFNDT1BFX1NUUklORy4gIFBhc3MgZXh0cmEgYXJndW1lbnQgdG8KCWRlbWFuZ2xlX3RlbXBsYXRlLiAgVXNlIGRlbWFuZ2xlZF9uZXN0ZWRfYXJncy4gIERvbid0IHJlbWVtYmVyCglxdWFsaWZpZWQgdHlwZXMgaGVyZTsgdGhhdCdzIG5vdyBkb25lIGluIGRlbWFuZ2xlX3F1YWxpZmllZC4KCVNpbWlsYXJseSBmb3IgdGVtcGxhdGVzLgoJKGRvX2FyZyk6IEltcHJvdmUgY29tbW1lbnQuICBIYW5kbGUgJ24nIHJlcGVhdCBjb2RlLgoJKHJlbWVtYmVyX3R5cGUpOiBDaGVjayBmb3JnZXR0aW5nX3R5cGVzLgoJKGRlbWFuZ2xlX2FyZ3MpOiBEZWFsIHdpdGggJ24nIHJlcGVhdCBjb2Rlcy4gIFRpZHkuCgpUaHUgSnVsICAyIDE2OjI2OjI0IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy50YWJsZTogT25seSB1c2UgbWgtZmJzZDIxIG9uICotKi1mcmVlYnNkMi4yLlswMTJdLCBub3Qgb24KCSotKi1mcmVlYnNkMi4yLiouICBGcm9tIERtaXRyaWogVGVqYmx1bSA8dGVqYmx1bUBhcmMuaHEuY3RpLnJ1Pi4KCk1vbiBKdW4gMTUgMTY6Mjk6MDEgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChzZXRvYmpzKTogQ29ycmVjdCBxdW90aW5nIGVycm9yIGluIGN5Z3dpbjMyIGNhc2UuCglGcm9tIENocmlzIEZheWxvciA8Y2dmQGN5Z251cy5jb20+LgoKTW9uIEp1biAgMSAxMzo0Nzo1NSAxOTk4ICBKYXNvbiBNb2xlbmRhICAoY3Jhc2hAYnVnc2hhY2suY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suYzogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KCk1vbiBKdW4gIDEgMTQ6MTc6MzYgMTk5OCAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZWZpbGUuaW46IEFkZCBhIGRlcGVuZGVuY3kgb24gc3RhbXAtcGljZGlyIGZvciB0aGUKCW9iamVjdHMsIHNvIHRoYXQgd2UgY2FuIGRvIGEgcGFyYWxsZWwgYnVpbGQuCgpTYXQgTWF5IDMwIDIyOjE3OjEzIDE5OTggIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogY29uZmlndXJlLmluIChjaGVja2Z1bmNzKTogQWRkIG1pc3NpbmcgIiciLgoKRnJpIE1heSAyOSAxMjo0MDo0MSAxOTk4ICBKYXNvbiBNb2xlbmRhICAoY3Jhc2hAYnVnc2hhY2suY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suYyAoX29ic3RhY2tfbWVtb3J5X3VzZWQpOiAgRWxpZGUgdGhpcyBmdW5jdGlvbiBpZiB3ZSdyZQoJb24gYSBzeXN0ZW0gd2l0aCBHTlUgbGliYy4KClR1ZSBNYXkgMjYgMTg6Mjg6NDMgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGRpc3RjbGVhbik6IFJlbW92ZSBjb25maWcubG9nLgoKVHVlIE1heSAyNiAxNTowMTo1MiAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIE1ha2VmaWxlLmluIChkaXN0Y2xlYW4pOiBEb24ndCByZW1vdmUgYWxsb2NhLWNvbmYuaC4KCkZyaSBNYXkgMjIgMDE6Mzg6MDcgMTk5OCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5zZT4KCgkqIGNwbHVzLWRlbS5jIChNQlVGX1NJWkUpOiBCdW1wZWQgZnJvbSA1MTIgdG8gMzI3NjcuCgoxOTk4LTA1LTIxICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjcGx1cy1kZW0uYyAoZG9fdHlwZSk6IEhhbmRsZSB2b2xhdGlsZSBxdWFsaWZpY2F0aW9uLgoKMTk5OC0wNS0yMSAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgdW5pc3RkLmggYXMgd2VsbC4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoJKiBjb25maWcuaW46IFJlYnVpbGQuCgkqIGdldHBhZ2VzaXplLmMgKEdOVV9PVVJfUEFHRVNJWkUpOiBVc2Ugc3lzY29uZiBvbmx5IGlmIF9TQ19QQUdFU0laRQoJaXMgZGVmaW5lZCBpbiB1bmlzdGQuaC4gUmVmb3JtYXQgY29uZGl0aW9uYWwgYmxvY2sgZm9yIGVhc2llciByZWFkaW5nLgoKCSogY29uZmlnLnRhYmxlIChzaGFyZWQpOiBEZWZhdWx0IHRvIG5vIGlmICR7ZW5hYmxlX3NoYXJlZH0KCWlzIHVuc2V0IG9yIGVtcHR5OyB0aGlzIGxvZ2ljIGlzIHVzZWQgYnkgdGhlIHRvcGxldmVsCgljb25maWd1cmUgc2NyaXB0cywgdG9vLgoKU2F0IE1heSAxNiAxNDowMToyNiAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb25maWcudGFibGU6IEFkZCBsaW5lIHRvIHNldCBlbmFibGVfc2hhcmVkIGluIHRoZSBNYWtlZmlsZQoJYXMgbmVlZGVkLgoKV2VkIE1heSAxMyAxNDoyNDozOCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcGx1cy1kZW0uYyAoc3F1YW5nbGVfbW9wX3VwKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIHZvaWQuCgkoaW50ZXJuYWxfY3BsdXNfZGVtYW5nbGUpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBgb3B0aW9ucycuCglBbGwgY2FsbGVycyBjaGFuZ2VkLgoJKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IFJlbW92ZSBmdW5jdGlvbiB3aWRlIHZhcmlhYmxlIGBpbnQgaScgYW5kCglyZXBsYWNlIHdpdGggYHNpemVfdCBpJyBhdCBlYWNoIGxvY2F0aW9uIHdoZXJlIGl0IGlzIHVzZWQuCgkoY3BsdXNfbWFuZ2xlX29wbmFtZSk6IGNoYW5nZSB0eXBlIG9mIGBpJyBmcm9tIGludCB0byBzaXplX3QuCgpXZWQgTWF5IDEzIDEzOjM5OjM4IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGFsbG9jYS1jb25mLmg6IEluY2x1ZGUgY29uZmlnLmguICBDaGVjayBIQVZFX0FMTE9DQV9IIHJhdGhlcgoJdGhhbiBzcGFyYyBvciBzdW4uCgkqIE1ha2VmaWxlLmluIChhcmd2Lm8pOiBEZXBlbmQgdXBvbiBjb25maWcuaCBhbmQgYWxsb2NhLWNvbmYuaC4KCkZyaSBNYXkgIDggMDA6MjM6NTEgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBTZXQgbGliaWJlcnR5X3RvcGRpciBjb3JyZWN0bHkgd2hlbiBzcmNkaXIgaXMKCSIuIiBhbmQgd2l0aF90YXJnZXRfc3ViZGlyIGlzIG5vdCBzZXQuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KClRodSBNYXkgIDcgMTM6MDE6NDQgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBBZGQgKi0qLW1pbmd3MzIqIGNhc2UuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCldlZCBNYXkgIDYgMTE6MzM6NTEgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlnLnRhYmxlOiBOZXZlciB1c2UgYSBQSUMgZmlsZSBmb3IgKi0qLWN5Z3dpbjMyKi4KCgkqIE1ha2VmaWxlLmluIChjb25maWcuc3RhdHVzKTogRGVwZW5kIHVwb24gY29uZmlnLnRhYmxlLgoKCSogY29uZmlndXJlLmluOiBPbiBhIGN5Z3dpbjMyIGhvc3QsIGFsd2F5cyBjb21waWxlIHJhbmRvbSwgYW5kCglkb24ndCB0ZXN0IGZvciBzeXNfc2lnbGlzdCwgc3Ryc2lnbmFsLCBvciBwc2lnbmFsLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoJKiBjbG9jay5jOiBDaGVjayBIQVZFX1NZU19QQVJBTV9IIHJhdGhlciB0aGFuIE5PX1NZU19QQVJBTV9ILgoJKiBnZXRjd2QuYzogTGlrZXdpc2UuCgkqIGdldHBhZ2VzaXplLmM6IExpa2V3aXNlLgoJKiBnZXRydW50aW1lLmM6IExpa2V3aXNlLgoKVHVlIE1heSAgNSAxODowODozMiAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJVXNlIGF1dG9jb25mIHRlc3RzIHJhdGhlciB0aGFuIHRoZSBvbGQgZHVtbXkuYyB0ZXN0OgoJKiBjb25maWd1cmUuaW46IEFkZCBBQ19BUkdfV0lUSCBjYWxscyBmb3IgLS13aXRoLXRhcmdldC1zdWJkaXIgYW5kCgktLXdpdGgtbmV3bGliLiAgQWRkIEFDX0NPTkZJR19IRUFERVIuICBVc2UgQUNfUkVQTEFDRV9GVU5DUyBmb3IKCW1vc3QgZnVuY3Rpb25zLiAgQWRkIHNwZWNpYWwgY2FzZXMgdG8gaGFuZGxlIG5ld2xpYiBhbmQgVnhXb3Jrcy4KCVJlbW92ZSB0YXJnZXRfbWFrZWZpbGVfZnJhZy4gIENyZWF0ZSBzdGFtcC1oIGluIEFDX09VVFBVVCBpZgoJQ09ORklHX0hFQURFUlMgaXMgc2V0LiAgT25seSBjYWxsIGNvbmZpZy1tbC5pbiBpbiBBQ19PVVRQVVQgaWYKCUNPTkZJR19GSUxFUyBpcyBzZXQ7IHNldCBhY19maWxlIGJlZm9yZSBjYWxsaW5nIGl0LgoJKiBjb25maWcudGFibGUgKGFybS0qLXJpc2NpeCosICotKi1jeWd3aW4zMik6IFJlbW92ZS4KCSgqLSotaHB1eCosICotKi1oaXV4KiwgKi0qLWlyaXg0KiwgKi0qLXNvbGFyaXMyKik6IFJlbW92ZS4KCSgqLSotc3lzdjQqLCAqLSotZ28zMiwgKi0qLXZ4d29ya3M1KiwgKi0qLXZ4d29ya3MpOiBSZW1vdmUKCShpWzM0NTZdLSotbWluZ3czMiopOiBSZW1vdmUuCgkqIE1ha2VmaWxlLmluIChFUlJPUlNfQ0MsIENPTkZJR19ILCBORUVERURfTElTVCk6IFJlbW92ZS4KCShMSUJPQkpTKTogTmV3IHZhcmlhYmxlLgoJKEhPU1RfT0ZJTEVTLCBET19BTFNPLCBTVEFHRVNUVUZGKTogUmVtb3ZlLgoJKGFsbCk6IERlcGVuZCB1cG9uIG5lZWRlZC1saXN0LiAgRG9uJ3QgY2hlY2sgUlVMRTEuCgkoQHRhcmdldF9tYWtlZmlsZV9mcmFnQCk6IFJlbW92ZS4KCShDT01QSUxFLmMpOiBJbmNsdWRlIEBERUZTQC4KCShIRklMRVMpOiBBZGQgYWxsb2NhLWNvbmYuaC4KCShSRVFVSVJFRF9PRklMRVMpOiBSZW1vdmUgYmFzZW5hbWUuby4KCSgkKFRBUkdFVExJQikpOiBOZXcgdGFyZ2V0LgoJKHN0YW1wLW5lZWRlZCwgbG5lZWRlZC1saXN0LCBuZWVkZWQuYXdrLCBzdGFtcC1jb25maWcpOiBSZW1vdmUuCgkobGNvbmZpZy5oLCBuZWVkZWQyLmF3aywgZHVtbXkubywgZXJyb3JzKTogUmVtb3ZlLgoJKG5lZWRlZC1saXN0LCBjb25maWcuaCk6IFJld3JpdGUuCgkoUlVMRTEsICQoUlVMRTEpLCBSVUxFMiwgJChSVUxFMikpOiBSZW1vdmUuCgkoLmFsd2F5cy4pOiBSZW1vdmUuCgkoTWFrZWZpbGUpOiBTZXQgQ09ORklHX0ZJTEVTIGFuZCBDT05GSUdfSEVBREVSUy4KCShzdGFtcC1oKTogTmV3IHRhcmdldC4KCShhdGV4aXQubywgY2xvY2subywgZ2V0Y3dkLm8sIGdldHBhZ2VzaXplLm8pOiBOZXcgdGFyZ2V0cy4KCShiYXNlbmFtZS5vKTogRG9uJ3QgZGVwZW5kIHVwb24gY29uZmlnLmguCgkoZ2V0cnVudGltZS5vKTogRGVwZW5kIHVwb24gY29uZmlnLmguCgkqIGF0ZXhpdC5jOiBJbmNsdWRlIGNvbmZpZy5oLiAgQ2hlY2sgSEFWRV9PTl9FWElUIHJhdGhlciB0aGFuCglORUVEX29uX2V4aXQuCgkqIGJhc2VuYW1lLmM6IERvbid0IGluY2x1ZGUgY29uZmlnLmguICBEb24ndCBjaGVjayBORUVEX2Jhc2VuYW1lLgoJKiBjbG9jay5jOiBJbmNsdWRlIGNvbmZpZy5oLgoJKiBnZXRjd2QuYzogTGlrZXdpc2UuCgkqIGdldHBhZ2VzaXplLmM6IExpa2V3aXNlLgoJKiBnZXRydW50aW1lLmM6IExpa2V3aXNlLiAgRml4IGNoZWNrcyB3aGljaCBzZXQgSEFWRV9HRVRSVVNBR0UgYW5kCglIQVZFX1RJTUVTLgoJKiBzdHJlcnJvci5jOiBDaGFuZ2UgdXNlcyBvZiBORUVEX3N5c19lcnJsaXN0IHRvCglIQVZFX1NZU19FUlJMSVNULiAgTGlrZXdpc2UgZm9yIE5FRURfc3RyZXJyb3IgYW5kIEhBVkVfU1RSRVJST1IuCgkqIHN0cnNpZ25hbC5jOiBMaWtld2lzZSBmb3IgTkVFRF9zeXNfc2lnbGlzdCBhbmQgSEFWRV9TWVNfU0lHTElTVCwKCWFuZCBmb3IgTkVFRF9zdHJzaWduYWwgYW5kIEhBVkVfU1RSU0lHTkFMIGFuZCBmb3IgTkVFRF9wc2lnbmFsIGFuZAoJSEFWRV9QU0lHTkFMLgoJKiBhY2NvbmZpZy5oOiBOZXcgZmlsZS4KCSogZHVtbXkuYzogUmVtb3ZlLgoJKiBmdW5jdGlvbnMuZGVmOiBSZW1vdmUuCgkqIGNvbmZpZy9taC1jeHV4NyAoSERFRklORVMpOiBSZW1vdmUgLURIQVZFX1NZU0NPTkYuCgkqIGNvbmZpZy9taC13aW5kb3dzIChIREVGSU5FUyk6IFJlbW92ZS4KCSogY29uZmlnL21oLWN5Z3dpbjMyOiBSZW1vdmUuCgkqIGNvbmZpZy9taC1nbzMyOiBSZW1vdmUuCgkqIGNvbmZpZy9taC1pcml4NDogUmVtb3ZlLgoJKiBjb25maWcvbWgtcmlzY2l4OiBSZW1vdmUuCgkqIGNvbmZpZy9taC1zeXN2NDogUmVtb3ZlLgoJKiBjb25maWcvbXQtbWluZ3czMjogUmVtb3ZlLgoJKiBjb25maWcvbXQtdnh3b3JrczU6IFJlbW92ZS4KCSogY29uZmlnLmluOiBOZXcgZmlsZSwgZ2VuZXJhdGVkIHVzaW5nIGF1dG9oZWFkZXIuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCk1vbiBNYXkgIDQgMTM6MDA6MjggMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBSZXdyaXRlIHRvIHVzZSBhdXRvY29uZi4KCSogY29uZmlndXJlOiBHZW5lcmF0ZSB1c2luZyBhdXRvY29uZi4KCSogY29uZmlnL21oLWE2OGJzZDogUmVtb3ZlLgoJKiBjb25maWcvbWgtYXBvbGxvNjg6IFJlbW92ZS4KCSogY29uZmlnL21oLWhwYnNkOiBSZW1vdmUuCgkqIGNvbmZpZy9taC1uY3IzMDAwOiBSZW1vdmUuCgkqIGNvbmZpZy9taC1zeXN2OiBSZW1vdmUuCgkqIGNvbmZpZy9taC1haXggKFJBTkxJQiwgSU5TVEFMTCk6IERvbid0IGRlZmluZS4KCSogY29uZmlnL21oLWN4dXg3IChSQU5MSUIsIElOU1RBTEwpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9taC1pcml4NCAoQ0MsIFJBTkxJQiwgSU5TVEFMTCk6IERvbid0IGRlZmluZS4KCSogY29uZmlnL21oLXN5c3Y0IChSQU5MSUIsIElOU1RBTEwpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy50YWJsZTogQ2hhbmdlIGNvbmZpZ19zaGVsbCB0byBDT05GSUdfU0hFTEwsIGFuZCB1c2UKCWxpYmliZXJ0eV90b3BkaXIgdG8gZmluZCBtb3ZlLWlmLWNoYW5nZS4KCShtNjhrLWFwb2xsby1ic2QqLCBtNjhrLWFwb2xsby1zeXN2Kik6IFJlbW92ZS4KCShpWzM0NTZdODYtbmNyLXN5c3Y0KiwgKi0qLWRndXgqLCBocHBhKi1ocC1ic2QqKTogUmVtb3ZlLgoJKCotKi1pcml4KiwgKi0qLW04OGtiY3MqLCAqLSotc3lzdiopOiBSZW1vdmUuCgkqIE1ha2VmaWxlLmluIChzcmNkaXIpOiBTZXQgdG8gQHNyY2RpckAuCgkoVlBBVEgpOiBMaWtld2lzZS4KCShwcmVmaXgsIGV4ZWNfcHJlZml4LCBiaW5kaXIsIGxpYmRpcik6IFNldCB0byBhdXRvY29uZiB2YXJpYWJsZXMuCgkoU0hFTEwsIElOU1RBTEwsIElOU1RBTExfUFJPR1JBTSwgSU5TVEFMTF9EQVRBKTogTGlrZXdpc2UuCgkoQ0MsIENGTEFHUywgUkFOTElCKSk6IExpa2V3aXNlLgoJKGRhdGFkaXIsIG1hbipkaXIsIGluZm9kaXIsIGluY2x1ZGVkaXIsIE1BS0VJTkZPKTogUmVtb3ZlLgoJKHRhcmdldF9tYWtlZmlsZV9mcmFnLCBob3N0X21ha2VmaWxlX2ZyYWcpOiBBZGQgc3Vic3RpdHV0aW9ucy4KCShJTlNUQUxMX0RFU1QpOiBTZXQgdG8gQElOU1RBTExfREVTVEAuCgkoTWFrZWZpbGUpOiBEZXBlbmQgdXBvbiBjb25maWcuc3RhdHVzLiAgRG9uJ3QgZGVwZW5kIHVwb24KCSQoaG9zdF9tYWtlZmlsZV9mcmFnKSBvciAkKHRhcmdldF9tYWtlZmlsZV9mcmFnKS4KCShjb25maWcuc3RhdHVzKTogTmV3IHRhcmdldC4KClN1biBNYXkgIDMgMTc6NTg6NDkgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlnL210LXN1bm9zNDogUmVtb3ZlLiAgU2hvdWxkIGJlIGhhbmRsZWQgYnkgLS13aXRoLWhlYWRlcnMKCWFuZCAtLXdpdGgtbGlicmFyaWVzIG9wdGlvbnMgYXQgdG9wIGxldmVsLgoJKiBjb25maWcudGFibGU6IE5ldmVyIHVzZSBtdC1zdW5vczQuCgoJKiBhbGxvY2EtY29uZi5oOiBOZXcgZmlsZSwgY29tYmluaW5nIGFsbG9jYS1ub3JtLmggYW5kCglhbGxvY2EtYm90Y2guaC4KCSogYWxsb2NhLW5vcm0uaDogUmVtb3ZlLgoJKiBhbGxvY2EtYm90Y2guaDogUmVtb3ZlLgoJKiBjb25maWd1cmUuaW46IFNldCBzaGVsbCB2YXJpYWJsZXMgZmlsZXMgYW5kIGxpbmtzIHRvIGVtcHR5LgoJKiBjb25maWcudGFibGU6IERvbid0IHNldCBzaGVsbCB2YXJpYWJsZSBmaWxlcy4KCSogY29uZmlndXJlLmJhdDogRG9uJ3QgY3JlYXRlIGFsbG9jYS1jb25mLmguCgkqIG1ha2VmaWxlLnZtczogTGlrZXdpc2UuCgkqIG1wdy1jb25maWcuaW46IExpa2V3aXNlLgoJKiB2bXNidWlsZC5jb206IExpa2V3aXNlLgoKRnJpIE1heSAgMSAxMTo0MTo0MiAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoJChIT1NUX09GSUxFUykgJChSRVFVSVJFRF9PRklMRVMpKTogUmVtb3ZlIG9sZAoJdGFyZ2V0IGRlcGVuZGluZyB1cG9uIGNvbmZpZy5oLgoJKGFsbG9jYS5vKTogQWRkIHRhcmdldCBkZXBlbmRpbmcgdXBvbiBjb25maWcuaAoJKGJhc2VuYW1lLm8sIGNob29zZS10ZW1wLm8sIGZubWF0Y2gubyk6IExpa2V3aXNlLgoJKGdldG9wdC5vLCBnZXRvcHQxLm8sIHBleGVjdXRlLm8sIHN0cmVycm9yLm8pOiBMaWtld2lzZS4KCShzdHJzaWduYWwubywgeHN0cmVycm9yLm8pOiBMaWtld2lzZS4KCkZyaSBNYXkgIDEgMDQ6MjY6MjUgMTk5OCAgUGV0ZXIgU2NoYXVlciA8cGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGU+CgoJKiBjcGx1cy1kZW0uYyAoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogIEluaXRpYWxpemUgd29yay4KCk1vbiBBcHIgMjcgMTU6NTM6MzAgRURUIDE5OTggQW5kcmV3IE1hY0xlb2QgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfcXVhbGlmaWVkKTogUmVwbGFjZSBtaXNzaW5nIGVsc2UuCgpTdW4gQXByIDI2IDE1OjM4OjUwIDE5OTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgoKCSogY3BsdXMtZGVtLmMgKGdudV9zcGVjaWFsKTogRml4IG9mZi1ieS1vbmUgYnVnIHdoZW4gY2hlY2tpbmcgdGhlCglsZW5ndGggaW4gdGhlIG5hbWUgb2YgYSB2aXJ0dWFsIHRhYmxlLgoKV2VkIEFwciAyMiAxMDo1Mzo0OSBFRFQgMTk5OCBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoc3RydWN0IHdvcmsgc3R1ZmYpOiBBZGQgZmllbGQgZm9yIEIgYW5kIEsgbWFuZ2xlIGNvZGVzLgoJKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IENhbGwgbW9wX3VwX3NxdWFuZ2xlLgoJKGNwbHVzX2RlbWFuZ2xlKTogSW5pdGlhbGl6ZSBzcXVhbmdsZSBpbmZvLCB0aGVuIGNhbGwKCWludGVybmFsX2NwbHVzX2RlbWFuZ2xlLiAoTW9zdCBjb2RlIG1vdmVkIHRoZXJlIGFzIHdlbGwpCgkoaW50ZXJuYWxfY3BsdXNfZGVtYW5nbGUpOiBOZXcgZnVuY3Rpb24sIHBlcmZvcm1zIG1vc3Qgb2Ygd2hhdCB1c2UKCXRvIGJlIGRvbmUgaW4gY3BsdXNfZGVtYW5nbGUsIGJ1dCBpcyBvbmx5IGNhbGxlZCB3aXRoIHRoaXMgZmlsZS4KCShzcXVhbmdsZV9tb3BfdXApOiBOZXcgZnVuY3Rpb24gdG8gY2xlYW4gdXAgQiBhbmQgSyBjb2RlIGRhdGEuCgkobW9wX3VwKTogc2V0IHBvaW50ZXJzIHRvIE5VTEwgYWZ0ZXIgZnJlZWluZy4KCShkZW1hbmdsZV9zaWduYXR1cmUsIGRlbWFuZ2xlX3RlbXBsYXRlLCBkZW1hbmdsZV9jbGFzcyk6IEFkZAoJc3dpdGNoIGVsZW1lbnRzIHRvIGhhbmRsZSBLIGFuZCBCIGNvZGVzLgoJKGRlbWFuZ2xlX3ByZWZpeCwgZ251X3NwZWNpYWwsIGRlbWFuZ2xlX3F1YWxpZmllZCk6IEFkZAoJY29kZSB0byBoYW5kbGUgSyBhbmQgQiBjb2Rlcy4KCShkb190eXBlLCBkZW1hbmdsZV9mdW5kX3R5cGUpOiBIYW5kbGUgQiBhbmQgSyBjb2Rlcy4KCShyZW1lbWJlcl9LdHlwZSk6IE5ldyBmdW5jdGlvbiB0byBzdG9yZSBLIGluZm8uCgkocmVnaXN0ZXJfQnR5cGUsIHJlbWVtYmVyX0J0eXBlKTogTmV3IGZ1bmN0aW9ucyBmb3IgQiBjb2Rlcy4KCShmb3JnZXRfQl9hbmRfS190eXBlcyk6IE5ldyBmdW5jdGlvbiB0byBkZXN0cm95IEIgYW5kIEsgaW5mby4KCkZyaSBBcHIgMTAgMDE6NDk6MTAgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogQ09QWUlORy5MSUIsIGNob29zZS10ZW1wLmMsIGNwbHVzLWRlbS5jOiBTeW5jIHdpdGggZWdjcyAmIGdjYy4KClRodSBNYXIgIDUgMDk6MjM6MjggMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY29uZmlnLnRhYmxlOiBNYWtlIGxvY2F0aW5nIGZyYWcgZmlsZXMgZmFpbHNhZmUgZXZlbiBmb3IgdGhlCglzcGVjaWFsIGNhc2UgaWYgY29uZmlndXJpbmcgYW5kIGJ1aWxkaW5nIGluIHNyY2Rpci4KCk1vbiBGZWIgMjMgMTQ6MzM6MTUgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY2hvb3NlLXRlbXAuYzogRml4IGhhbmRsaW5nIG9mIHN5cy9maWxlLmggdG8gd29yayBpbiBsaWJpYmVydHkuCgpTdW4gRmViIDIyIDE4OjAzOjIzIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNob29zZS10ZW1wLmM6IFN5bmMgd2l0aCBjb3B5IGluIGdjYy4KClRodSBGZWIgMTIgMTY6Mjk6NDkgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZ2V0b3B0LmM6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgkqIGdldG9wdDEuYzogTGlrZXdpc2UuCgpUdWUgRmViIDEwIDE2OjU4OjMzIDE5OTggIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChnbnVfc3BlY2lhbCk6IERvbid0IGdldCBjb25mdXNlZCBieSAuPGRpZ2l0cz4KCXN0cmluZ3MgdGhhdCBhcmUgbm90IGFjdHVhbGx5IGxlbmd0aHMuCgpGcmkgRmViICA2IDAxOjM1OjE3IDE5OTggIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIE1ha2VmaWxlLmluIChGTEFHU19UT19QQVNTKTogRG9uJ3QgcGFzcyBQSUNGTEFHLgoJKC5jLm8pOiBDaGVjayB2YWx1ZSBvZiBlbmFibGVfc2hhcmVkLCBub3QgUElDRkxBRy4KCShzdGFtcC1waWNkaXIpOiBEaXRvLgoKVGh1IEZlYiAgNSAxODo0ODo1NiAxOTk4ICBHZW9mZnJleSBOb2VyICA8bm9lckBjeWdudXMuY29tPgoKCSogY29uZmlnL21oLWN5Z3dpbjMyOiByZW1vdmUgdmFzcHJpbnRmLm8gZnJvbSBFWFRSQV9PRklMRVMKCXNpbmNlIGl0IGdldHMgYnVpbHQgYXV0b21hdGljYWxseQoKU3VuIEZlYiAgMSAwMjo1MjozMiAxOTk4ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBjb25maWcudGFibGUgKHZ4d29ya3MgY29uZmlncyk6IERlZmF1bHQgdG8gVnhXb3JrcyA1LngsIGFzIHRoYXQgaXMKCXRoZSBjdXJyZW50bHkgc2hpcHBpbmcgT1MuCgpUdWUgSmFuIDI3IDE2OjA4OjIwIDE5OTggIFBhdCBSYW5raW4gIDxyYW5raW5AZXFsLmNhbHRlY2guZWR1PgoKCSogdm1zYnVpbGQuY29tIFtSRVFVSVJFX09GSUxFU106IFN5bmNocm9uaXplZCB3aXRoIE1ha2VmaWxlLmluOgoJQWRkIGZubWF0Y2gubyBhbmQgb2JqYWxsb2MubzsgcmVtb3ZlIHZhc3ByaW50Zi5vLgoJW2NvbmZpZy5oXTogRGVmaW5lIE5FRURfc3Ryc2lnbmFsLgoKTW9uIEphbiAxOSAxMjoyMDowMSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbnMuZGVmOiBDb3JyZWN0IGFyZ3VtZW50IHR5cGVzIGZvciBzdHJlcnJvciBhbmQKCXN0cnNpZ25hbC4gIFJlcG9ydGVkIGJ5IEFsZXggR3V0bWFuIDxhZ3V0bWFuQGVtYy5jb20+LgoKU3VuIEphbiAxOCAxNTo1NzoyOCAxOTk4ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAY2xlYXZlci5jeWdudXMuY29tPgoKCSogdmFzcHJpbnRmLmMgKGludF92YXNwcmludGYpOiBJbmNyZWFzZSBidWZmZXIgc2l6ZSBmb3IgZmxvYXQvZG91YmxlCgl2YWx1ZXMuCgpTYXQgSmFuIDE3IDIyOjI4OjM4IDE5OTggIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoJCQkgIEouSi4gVmFuZGVySGVpamRlbiA8Si5KLnZhbmRlckhlaWpkZW5Ac3R1ZGVudC51dHdlbnRlLm5sPgoKCUFkZCBtaW5ndzMyIHN1cHBvcnQuCgkqIHBleGVjdXRlLmMgKHBleGVjdXRlKTogTmV3IGZ1bmN0aW9uIGZvciBtaW5ndzMyLiBTdXBwb3J0cyBwaXBlcy4KCShwd2FpdCk6IE5ldyBmdW5jdGlvbiBmb3IgbWluZ3czMi4KCgkqIGNvbmZpZy50YWJsZSAoaVszNDU2XTg2LSotbWluZ3czMiopOiBTdXBwb3J0IGZvciBpMzg2LW1pbmd3MzIuCgkqIGNvbmZpZy9tdC1taW5ndzMyOiBOZXcgZmlsZS4KCSogeG1hbGxvYy5jIChmaXJzdF9icmVhayk6IE5vdCB1c2VkIGZvciBtaW5ndzMyLgoJKHhtYWxsb2Nfc2V0X3Byb2dyYW1fbmFtZSk6IERvbid0IHVzZSBzYnJrIG9uIG1pbmd3MzIuCgkoeG1hbGxvYyk6IExpa2V3aXNlLgoJKHhyZWFsbG9jKTogTGlrZXdpc2UuCgpTYXQgSmFuIDE3IDIyOjI4OjA1IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNob29zZS10ZW1wLmM6IFN5bmMgd2l0aCBnY2MgdmVyc2lvbi4KClR1ZSBKYW4gMTMgMTg6MzQ6MzkgMTk5OCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGxfdG9fbGliZGlyLCBpbnN0YWxsX3RvX3Rvb2xkaXIpOiBBZGQgTVVMVElTVUJESVIKCXRvIGFsbCBmaWxlbmFtZXMgaW4gbGliZGlyIGFuZCB0b29sZGlyLgoJKGRpc3RjbGVhbik6IERvIE1VTFRJQ0xFQU4gYmVmb3JlIGRlbGV0aW5nIE1ha2VmaWxlLgoJKHN0YW1wLW5lZWRlZCwgc3RhbXAtY29uZmlnKTogQWRkIE1VTFRJU1JDVE9QIHRvCglwYXRobmFtZSBmb3IgbW92ZS1pZi1jaGFuZ2UuCgpUaHUgRGVjICA0IDE3OjI1OjE5IDE5OTcgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHN0cnNpZ25hbC5jIChzeXNfbnNpZyk6IFRyeSBOU0lHIGFuZCBfTlNJRy4KCldlZCBOb3YgMTkgMTM6Mzc6MDYgMTk5NyAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGN5Z251cy5jb20+CgoJKiBhbGxvY2Etbm9ybS5oIChhbGxvY2EsIEdDQyBjYXNlKTogRG9uJ3QgcmVkZWZpbmUgYWxsb2NhIGlmIGl0Cgl3YXMgYWxyZWFkeSBkZWZpbmVkIHByZXZpb3VzbHkuCgpNb24gTm92IDEwIDEyOjQ4OjAzIDE5OTcgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogTWFrZWZpbGUuaW4gKElOU1RBTEwpOiBVc2UgLi4vaW5zdGFsbC1zaCwgbm90IGluc3RhbGwuCgpUdWUgT2N0IDI4IDIzOjQxOjE1IDE5OTcgIEp1ZHkgR29sZGJlcmcgIDxqb2R5Z0BpZHQubmV0PgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBwZXhlY3V0ZS5jLgoKV2VkIE9jdCAxNSAxOToxMzo0OCAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBhc3ByaW50Zi5jOiBDb25zaXN0ZW50bHkgdXNlIGVpdGhlciBzdGRhcmcgb3IgdmFyYXJncy4KClR1ZSBPY3QgMTQgMTI6MDE6MDAgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3NpZ25hdHVyZSk6IERvbid0IGxvb2sgZm9yIHJldHVybiB0eXBlcyBvbgoJY29uc3RydWN0b3JzLiAgSGFuZGxlIG1lbWJlciB0ZW1wbGF0ZSBjb25zdHJ1Y3RvcnMuCgpGcmkgT2N0ICAzIDE3OjUzOjMwIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIFJFQURNRTogRml4IGNvbmZpZ3VyYXRpb24gaW5zdHJ1Y3Rpb25zLgoKTW9uIFNlcCAyOSAxMjoyODo0MSAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBwZXhlY3V0ZS5jOiBVcGRhdGUgdG8gY3VycmVudCB2ZXJzaW9uIGZyb20gL2dkL2dudS9saWI6CgoJTW9uIFNlcCAyOSAxMjoyNzo1OSAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBwZXhlY3V0ZS5jOiBVc2Ugc3Bhd24gaWYgX19DWUdXSU4zMl9fLgoKCTE5OTctMDgtMDggIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogcGV4ZWN1dGUuYzogSW5jbHVkZSAiY29uZmlnLmgiIGZpcnN0LCBhcyBwZXIgYXV0b2NvbmYgbWFudWFsLgoKCUZyaSBKdW4gMjcgMTU6MjA6MjkgMTk5NyAgU2NvdHQgQ2hyaXN0bGV5IDxzY290dGNAbmV0LWNvbW11bml0eS5jb20+CgoJKiBwZXhlY3V0ZS5jIChmaXhfYXJndik6IE5ldyBmdW5jdGlvbi4KCShwZXhlY3V0ZSk6IFdpbjMyIGJ1dCBub3QgQ3lnd2luMzIgbmVlZHMgaXRzIGFyZ3VtZW50cyBmaXhlZC4KCUFkZCB1bmRlcnNjb3JlIHRvIGN3YWl0IGZ1bmN0aW9uIGNhbGwuCgpTdW4gU2VwIDI4IDEyOjAwOjUyIDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6IEFkZCBuZXcgcGFyYW1ldGVyLiAgSGFuZGxlIG5ldwoJdGVtcGxhdGUtZnVuY3Rpb24gbWFuZ2xpbmcuCgkoY29uc3VtZV9jb3VudF93aXRoX3VuZGVyc2NvcmVzKTogTmV3IGZ1bmN0aW9uLgoJKGRlbWFuZ2xlX3NpZ25hdHVyZSk6IEhhbmRsZSBuZXcgbmFtZS1tYW5nbGluZyBzY2hlbWUuCgpXZWQgU2VwIDI0IDAwOjMxOjU5IDE5OTcgIEZlbGl4IExlZSAgPGZsZWVAeWluLmN5Z251cy5jb20+CgoJKiBhc3ByaW50Zi5jOiBzdGRhcmcuaCB3aGVuIEFMTU9TVF9TVERDCgkqIGNvbmZpZy9taC13aW5kb3dzIChFWFRSQV9PRklMRVMpOiBhZGQgYXNwcmludGYubyBhbmQKCXN0cm5jYXNlY21wLm8uCgpUaHUgQXVnIDI4IDE0OjI3OjE1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHZhc3ByaW50Zi5jICh2YXNwcmludGYpOiBBbGxvdyBmb3IgX0JTRF9WQV9MSVNUXy4KCgkqIGNvbmZpZy50YWJsZTogQWRkIGNhc2UgZm9yIEZyZWVCU0QgMi4xIGFuZCAyLjIsIG5lZWRzIG1oLWZic2QyMS4KCgkqIGNvbmZpZy9taC1mYnNkMjEgKEVYVFJBX09GSUxFUyk6IEZvcmNlIHZhc3ByaW50Zi5vCgpXZWQgU2VwIDEwIDEyOjQzOjEwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9mdW5kX3R5cGUpOiBDaGFuZ2UgImNvbXBsZXgiIHRvICJfX2NvbXBsZXgiLgoKRnJpIFNlcCAgNSAxNjozNDo0MiAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBhc3ByaW50Zi5jIChhc3ByaW50Zik6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIGFzcHJpbnRmLmMKCSogZnVuY3Rpb25zLmRlZjogRGl0dG8uCgpUaHUgQXVnIDI4IDE4OjUzOjM0IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGFyZ3YuYyAoZHVwYXJndik6IE5ldyBmdW5jdGlvbiwgZHVwbGljYXRlIGFuIGFyZ3VtZW50IHZlY3Rvci4KClR1ZSBBdWcgMTkgMjA6Mjg6NDUgMTk5NyAgR2VvZmZyZXkgTm9lciAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taC1jeWd3aW4zMjogYWxzbyBidWlsZCByYW5kb20ubwoKVHVlIEF1ZyAxOSAxNzoxMDo1NiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYzogQWRkICdleHRlcm4nIHRvIHByZXBlbmRzX3VuZGVyc2NvcmUuCgpXZWQgSnVsIDMwIDExOjQyOjE5IDE5OTcgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmM6IFZhcmlvdXMgY2hhbmdlcyB0byBwcm9kdWNlIEphdmEgb3V0cHV0IHdoZW4gcGFzc2VkCglETUdMX0pBVkEuICBUaHVzICI6OiIgYmVjb21lcyAiLiIgYW5kICJKQXJyYXk8Rm9vPiIgYmVjb21lcyAiRm9vW10iLgoJKG1haW4pOiBTdXBwb3J0IC0tamF2YSBhbmQgLWogZmxhZ3MgdG8gc2V0IERNR0xfSkFWQS4KClR1ZSBKdWwgMjIgMTk6MDU6MjMgMTk5NyAgUm9iZXJ0IEhvZWhuZSA8cm9iZXJ0LmhvZWhuZUBNYXRoZW1hdGlrLlRVLUNoZW1uaXR6LkRFPgoKCSogY29uZmlnL21oLWdvMzIgKENDLCBBUiwgUkFOTElCKTogRG9uJ3QgZGVmaW5lLgoKVHVlIEp1bCAyMiAxNzo0OTo1NCAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoUkVRVUlSRURfT0ZJTEVTKTogQWRkIHBleGVjdXRlLm8uCgkocGV4ZWN1dGUubyk6IE5ldyB0YXJnZXQuCgoJKiBNYWtlZmlsZS5pbiAoc3RhbXAtbmVlZGVkKTogTmV3IHRhcmdldCwgcmVwbGFjaW5nIG5lZWRlZC1saXN0LgoJKG5lZWRlZC1saXN0KTogSnVzdCBkZXBlbmQgdXBvbiBzdGFtcC1uZWVkZWQuCgkoc3RhbXAtY29uZmlnKTogTmV3IHRhcmdldCwgcmVwbGFjaW5nIGNvbmZpZy5oLgoJKGNvbmZpZy5oKTogSnVzdCBkZXBlbmQgdXBvbiBzdGFtcC1jb25maWcuCgkobW9zdGx5Y2xlYW4pOiBSZW1vdmUgc3RhbXAtKi4KClRodSBKdW4gMTIgMTE6MDA6MTggMTk5NyAgQW5nZWxhIE1hcmllIFRob21hcyAoYW5nZWxhQGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoRkxBR1NfVE9fUEFTUyk6IHBhc3MgSU5TVEFMTCwgSU5TVEFMTF9QUk9HUkFNIGFuZAoJSU5TVEFMTF9EQVRBIGZvciBtdWx0aWxpYmJlZCBpbnN0YWxscwoKVHVlIEp1biAgMyAxMzoyMTowNSAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCVR1ZSBEZWMgMTAgMDk6NDQ6NTcgMTk5NiAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAdHdpbnN1bi5jb20+CgoJKiBjaG9vc2UtdGVtcC5jIChjaG9vc2VfdGVtcF9iYXNlKTogRG9uJ3QgZHVtcCBjb3JlIGlmIFRNUERJUiBpcyBlbXB0eS4KCgkqIGNob29zZS10ZW1wLmMgKHRyeSk6IEluc2lzdCB0aGF0IHRlbXAgZGlyIGJlIHNlYXJjaGFibGUuCgoJV2VkIE9jdCAyMyAxNzozNjozOSAxOTk2ICBEb3VnIFJ1cHAgIChydXBwQGduYXQuY29tKQoKCSogY2hvb3NlLXRlbXAuYyAoY2hvb3NlX3RlbXBfYmFzZSk6IE9uIFZNUywgdXNlIHByb3BlciBzeW50YXgKCWZvciBjdXJyZW50IGRpcmVjdG9yeS4KCglTYXQgRmViIDE1IDE5OjAzOjQ4IDE5OTcgIEdlb2ZmcmV5IE5vZXIgIChub2VyQGN5Z251cy5jb20pCgoJKiBwZXhlY3V0ZS5jOiBSZW1vdmUgc3BlY2lhbCBjYXNlcyBmb3IgY3lnd2luMzIuCgkocHdhaXQpOiBSZW1vdmUgbG9jYWwgZGVmaW5pdGlvbiBvZiBgcGlkJy4KCglUdWUgTm92IDEyIDE4OjI2OjE1IDE5OTYgIERvdWcgUnVwcCAgKHJ1cHBAZ25hdC5jb20pCgoJKiBwZXhlY3V0ZS5jICh2Zm9yayk6IFN1cHBseSBuZXcgZGVmaW5pdGlvbiBmb3IgVk1TLgoJKHB3YWl0KTogVXNlIHdhaXRwaWQgaW5zdGVhZCBvZiB3YWl0IGZvciBWTVMuCgpUdWUgTWF5IDIwIDE0OjAyOjIwIDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkb190eXBlKTogSGFuZGxlIGBKJy4KCShkZW1hbmdsZV9mdW5kX3R5cGUpOiBQcmludCAiY29tcGxleCIgZm9yIGl0LgoKV2VkIEFwciAzMCAxMjoxNTo0NSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IERvbid0IHR1cm4gb24gbXVsdGlsaWIgaGVyZS4KCk1vbiBBcHIgMjggMTk6MDQ6MzEgMTk5NyAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQGNsZWF2ZXIuY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suYzogbW92ZSBfb2JzdGFja19tZW1vcnlfdXNlZCBvdXRzaWRlIG9mIGlmZGVmLiAgQ2Fubm90IGJlCgllbGlkZWQ7IG5lZWRlZCBieSBnZGIgYW5kIG5vdCBwcmVzZW50IGluIGxpYmMuCgpUaHUgQXByIDI0IDE5OjMzOjQ3IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjbGVhbik6IFJlbW92ZSB0bXBtdWx0aS5vdXQuCgpUdWUgQXByIDIyIDEwOjI1OjE1IDE5OTcgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfaWVlZV9kb3VibGVfbGl0dGxlYnl0ZV9iaWd3b3JkKToKCUFkZCBuZXcgZmxvYXRmb3JtYXQsIG1haW5seSBmb3IgQVJNIGRvdWJsZXMuCgpNb24gQXByIDE0IDEyOjExOjE2IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy50YWJsZTogVXNlICR7Y29uZmlnX3NoZWxsfSB3aXRoICR7bW92ZWlmY2hhbmdlfS4gIEZyb20KCVRob21hcyBHcmFpY2hlbiA8Z3JhaWNoZW5AcnpwZC5kZT4uCgpGcmkgQXByICA0IDAzOjA5OjI0IDE5OTcgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBFbmFibGUgbXVsdGlsaWJpbmcgYnkgZGVmYXVsdC4KCVVwZGF0ZSBtdWx0aWxpYiB0ZW1wbGF0ZSB0byByZWFkIGNvbmZpZy1tbC5pbi4KClR1ZSBBcHIgIDEgMTY6MjY6MzkgMTk5NyAgS2xhdXMgS2FlbXBmICA8a2thZW1wZkBwcm9naXMuZGU+CgoJKiBtYWtlZmlsZS52bXM6IEFkZCBvYmphbGxvYy4KCk1vbiBNYXIgMzEgMjM6NTc6NTEgMTk5NyAgSC5KLiBMdSAgPGhqbEBnbnUuYWkubWl0LmVkdT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9pdCk6IEFkZCBwcm90b3R5cGUgZGVjbGFyYXRpb24uCgkodXNhZ2UsIGZhdGFsKTogTGlrZXdpc2UuCgoJKiB4ZXhpdC5jIChfeGV4aXRfY2xlYW51cCk6IEFkZCBwcm90b3R5cGUuCgoJKiBzdHJlcnJvci5jIChpbml0X2Vycm9yX3RhYmxlcyk6IERlY2xhcmUuCgpGcmkgTWFyIDI4IDExOjQzOjIwIDE5OTcgIEguSi4gTHUgIDxoamxAbHVjb24ub3JnPgoKCSogZnVuY3Rpb25zLmRlZjogQWRkIERFRiBvZiB2YXNwcmludGYsIGFuZCBERUZGVU5DIG9mIHN0cnNpZ25hbC4KCSogc3Ryc2lnbmFsLmM6IE9ubHkgZGVmaW5lIHN0cnNpZ25hbCBpZiBORUVEX3N0cnNpZ25hbC4KCSogTWFrZWZpbGUuaW4gKFJFUVVJUkVEX09GSUxFUyk6IFJlbW92ZSB2YXNwcmludGYuby4KCSogY29uZmlndXJlLmluOiBBZGQgTkVFRF9zdHJzaWduYWwgdG8geGNvbmZpZy5oLiAgQWRkIHZhc3ByaW50Zi5vCgl0byB4bmVlZGVkLWxpc3QuCgkqIGNvbmZpZy9taC1jeWd3aW4zMiAoSERFRklORVMpOiBBZGQgLURORUVEX3N0cnNpZ25hbC4KCShFWFRSQV9PRklMRVMpOiBEZWZpbmUgdG8gdmFzcHJpbnRmLm8uCgkqIGNvbmZpZy9taC13aW5kb3dzIChIREVGSU5FUyk6IEFkZCAtRE5FRURfc3Ryc2lnbmFsLgoJKEVYVFJBX09GSUxFUyk6IEFkZCB2YXNwcmludGYuby4KCSogY29uZmlnL210LXZ4d29ya3M1ICh2eGNvbmZpZy5oKTogRGVmaW5lIE5FRURfc3Ryc2lnbmFsLgoJKHZ4bmVlZGVkLWxpc3QpOiBBZGQgdmFzcHJpbnRmLm8uCgpUaHUgTWFyIDIwIDE3OjAyOjA5IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIG9iamFsbG9jLmM6IEluY2x1ZGUgPHN0ZGlvLmg+LgoKTW9uIE1hciAxNyAxOToyMzoxMSAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBvYmphbGxvYy5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBvYmphbGxvYy5jCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIG9iamFsbG9jLm8uCgkob2JqYWxsb2Mubyk6IE5ldyB0YXJnZXQuCgpTYXQgTWFyIDE1IDE4OjQ5OjQxIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suYzogVXBkYXRlIHRvIGN1cnJlbnQgRlNGIHZlcnNpb24uCgpGcmkgTWFyIDE0IDE0OjE4OjQ3IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBBZGQgcHJvdG90eXBlcyBmb3IgYWxsIHN0YXRpYyBmdW5jdGlvbnMuCgkobXlzdHJzdHIpOiBNYWtlIHN0YXRpYy4gIE1ha2UgYXJndW1lbnRzIGFuZCByZXN1bHQgY29uc3QuCgkoY3BsdXNfbWF0Y2gpOiBSZW1vdmU7IG5vdCB1c2VkLgoKVHVlIE1hciAxMSAxNDoyMDozMSAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZ251X3NwZWNpYWwpOiBDYWxsIGRlbWFuZ2xlZF9mdW5kX3R5cGUgZm9yIG90aGVyCglfX3QqIHN5bWJvbHMuCgpUdWUgTWFyIDExIDE1OjQxOjIxIDE5OTcgIEguSi4gTHUgIDxoamxAbHVjb24ub3JnPgoKCSogc3BhY2VzLmM6IERlY2xhcmUgbWFsbG9jIGFuZCBmcmVlIHByb3Blcmx5LgoJKiBzdHJzaWduYWwuYyAoaW5pdF9zaWduYWxfdGFibGVzKTogQWRkIHByb3RvdHlwZS4KCSogeGF0ZXhpdC5jIChfeGV4aXRfY2xlYW51cCk6IEFkZCBwYXJhbWV0ZXIgZGVjbGFyYXRpb25zLgoKV2VkIEZlYiAxOSAxNTo0MzoyNCAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAobG5lZWRlZC1saXN0KTogSWYgYWxsb2NhLm8gaXMgbmVlZGVkLCB4ZXhpdC5vIGlzCglhbHNvIHJlcXVpcmVkIGJlY2F1c2Ugb2YgeG1hbGxvYy5vLgoKRnJpIEZlYiAxNCAxMzo0MzozOCAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBzdHJzaWduYWwuYzogVW5jb25kaXRpb25hbGx5IHJlZGVmaW5lIHN5c19zaWdsaXN0IGFyb3VuZCB0aGUKCWluY2x1c2lvbiBvZiB0aGUgc3lzdGVtIGhlYWRlciBmaWxlcy4KClRodSBGZWIgMTMgMjI6MDE6MDQgMTk5NyAgS2xhdXMgS2FlbXBmICA8a2thZW1wZkBwcm9naXMuZGU+CgoJKiBtYWtlZmlsZS52bXM6IFJlbW92ZSA4IGJpdCBjaGFyYWN0ZXJzLiAgVXBkYXRlIHRvIGxhdGVzdAoJZ2NjIHJlbGVhc2UuCgpUdWUgRmViICA0IDExOjUyOjE5IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIHN0cnNpZ25hbC5jOiBVc2UgTkVFRF9zeXNfc2lnbGlzdCBpbnN0ZWFkIG9mCglMT1NJTkdfU1lTX1NJR0xJU1QuCgkqIGNvbmZpZy50YWJsZTogRG9uJ3QgdXNlIG1oLWx5bnhvcy4KCSogY29uZmlnL21oLWx5bnhvczogUmVtb3ZlLgoKVGh1IEphbiAxNiAxNDo1MTowMyAxOTk3ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBGaXggaW5kZW50aW5nOyBtYWtlIGlkZW50aWNhbCB0byB0aGUgY29weQoJaW4gR0NDLgoJKGRvX3R5cGUsIGNhc2UgJ00nKTogQ2hlY2sgZm9yIGEgdGVtcGxhdGUgYXMgd2VsbCBhcyBhIGNsYXNzLgoKVGh1IERlYyAxOSAxMzo1MTozMyAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjb25maWcvbXQtdnh3b3JrczUgKHZ4bmVlZGVkLWxpc3QpOiBSZW1vdmUgc2lnc2V0bWFzay5vLCBzaW5jZQoJdnh3b3JrcyA1LlswLTNdIGFsbCBoYXZlIHNpZ3NldG1hc2sgaW4gdGhlbTsgdGhlIG9uZSBwcm92aWRlZCBieQoJbGliaWJlcnR5IGlzIGluY29ycmVjdCwgYXMgd2VsbC4KCk1vbiBEZWMgIDIgMTU6MDM6NDIgMTk5NiAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHRpa3Rvay5jeWdudXMuY29tPgoKCSogYWxsb2NhLmMgKGFsbG9jYSk6IFdoZW4gY29tcGlsZWQgd2l0aCBhbiBBTlNJL0lTTyBjb21waWxlciwKCWFsbG9jYSB0YWtlcyBhIHNpemVfdCBhcmd1bWVudCwgbm90IGp1c3QgdW5zaWduZWQuCgpNb24gTm92IDE4IDE1OjQyOjA4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBOb3RlIHRoYXQgdGhpcyBmaWxlIGFsc28gbGl2ZXMgaW4gR0NDLgoKTW9uIE5vdiAxOCAxNToxOTowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBhbGxvY2EuYzogUmVtb3ZlIGluY2x1ZGUgb2YgbGliaWJlcnR5LmggZm9yIGhwdXguCgkqIGFyZ3YuYzogIFJlcGxhY2UgZGVmcyBmcm9tIGxpYmliZXJ0eS5oLgoJKiBzcGFjZXMuYzogUHV0IGJhY2sgZXh0ZXJucyBmcm9tIHJlbW92ZWQgZnJvbSBsaWJpYmVydHkuaC4KCSogdmFzcHJpbnRmLmM6IFJlbW92ZSBpbmNsdWRlIG9mIGxpYmliZXJ0eS5oIGZvciBocHV4LgoKTW9uIE5vdiAxOCAxNDowODowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYzogQ2hlY2tpbmcgaW4gYWdhaW47IGxhc3QgY2hlY2tpbiBmaWxlZCBkdWUgdG8gc3RpY2t5IHRhZy4KCldlZCBOb3YgMTMgMDg6MjI6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmM6IFJldmVydCBsYXN0IHR3byBjb21taXRzIGR1ZSB0byBjb25mbGljdHMgd2l0aAoJaHB1eCBzeXN0ZW0gaGVhZGVycy4KCldlZCBOb3YgMTMgMDg6MjI6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogYWxsb2NhLmMsIGFyZ3YuYywgc3BhY2VzLmMsIHN0cmNhc2VjbXAuYywgdmFzcHJpbnRmLmMsIHZwcmludGYuYzoKCVJldmVydCBsYXN0IGNvbW1pdCBkdWUgdG8gY29uZmxpY3RzIHdpdGggaHB1eCBzeXN0ZW0gaGVhZGVycy4KCldlZCBOb3YgMTMgMTA6MzY6NTAgMTk5NiAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHRpa3Rvay5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKHh7bSxyZX1hbGxvYyk6IE1ha2UgZGVjbGFyYXRpb25zIGNvbXBhdGliaWxlIHdpdGgKCWxpYmliZXJ0eS5oIHdoZW4gY29tcGlsZWQgd2l0aCBhIHN0YW5kYXJkIGNvbXBpbGVyLgoKVHVlIE5vdiAxMiAxNjozMTowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBhbGxvY2EuYzogSW5jbHVkZSBsaWJpYmVydHkuaCBmb3IgZGVmaW5pdGlvbiBvZiB4bWFsbG9jLgoJRG9uJ3QgcmVkZWZpbmUgTlVMTC4KCSogYXJndi5jOiBNb3ZlIHByb3RvdHlwZXMgdG8gbGliaWJlcnR5LmguCgkqIGNwbHVzLWRlbS5jOiBJbmNsdWRlIGxpYmliZXJ0eS5oIGZvciBkZWZpbml0aW9uIG9mIHhtYWxsb2MuCglEb24ndCByZWRlZmluZSBOVUxMLgoJVXNlIGNhc3RzIHRvIGVsaW1pbmF0ZSBjb21waWxlciB3YXJuaW5ncy4KCSogc3BhY2VzLmM6IFJlbW92ZSBwcm90b3R5cGVzIGZvciBtYWxsb2MgYW5kIGZyZWUgd2hpY2ggYXJlCglhbHJlYWR5IGluIGxpYmlicnR5LmguCgkqIHN0cmNhc2VjbXAuYzogVXNlIGNhc3RzIHRvIGVsaW1pbmF0ZSBjb21waWxlciB3YXJuaW5ncy4KCSogdmFzcHJpbnRmLmM6IEluY2x1ZGUgbGliaWJlcnR5LmggZm9yIGRlZmluaXRpb24gb2YgbWFsbG9jLgoJRG9uJ3QgcmVkZWZpbmUgTlVMTC4KCSogdnByaW50Zi5jOiBJbmNsdWRlIHN0ZGFyZy5oIGlmIF9fU1REQ19fLgoKRnJpIE9jdCAxMSAxNTo0MjoxMiAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogY29uZmlnL21oLXdpbmRvd3M6ICBBZGQgc3RyY2FzZWNtcC5vIHRvIEVYVFJBX09GSUxFUy4KCkZyaSBPY3QgMTEgMTE6MTY6MzEgMTk5NiAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogbXB3LmMgKG1wd2lmeV9maWxlbmFtZSk6IFJld3JpdGUgdG8gc2ltcGxpZnksIGFuZCB0byBoYW5kbGUKCXVwd2FyZCBjb21wb25lbnRzIGNvcnJlY3RseS4KClR1ZSBPY3QgIDggMDg6NTU6MzQgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy50YWJsZSwgY29uZmlnL21oLXdpbmRvd3M6ICBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgdW5kZXIKCU1TVkMgKHRoZSBNaWNyb3NvZnQgYnVpbGQgZW52aXJvbm1lbnQpLgoKTW9uIE9jdCAgNyAxMDo1MDoyNyAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBmbm1hdGNoLmM6IFVuZGVmIGNvbnN0IGlmIG5vdCBfX1NURENfXy4KClRodSBPY3QgIDMgMTM6NDY6MzkgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZm5tYXRjaC5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBmbm1hdGNoLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIGZubWF0Y2guby4KCShmbm1hdGNoLm8pOiBOZXcgdGFyZ2V0LgoKV2VkIFNlcCAxOCAxNDo0OToxMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfdGVtcGxhdGUpOiBGaXggaGFuZGxpbmcgb2YgYWRkcmVzcyBhcmdzLgoJKGdudV9zcGVjaWFsKTogSGFuZGxlIHR5cGVfaW5mbyBzdHVmZi4KCkZyaSBTZXAgMTMgMTc6NTI6NTUgMTk5NiAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogbXB3LmMgKERlYnVnUEkpOiBNYWtlIHNldHRhYmxlIGZyb20gdGhlIGVudiB2YXIgREVCVUdfUEFUSE5BTUVTLgoJKG1wd2lmeV9maWxlbmFtZSk6IEhhbmRsZSAiOjovIiBjYXNlLgoKVGh1IFNlcCAxMiAxMzozMDo0MCAxOTk2ICBHZW9mZnJleSBOb2VyICA8bm9lckBjeWdudXMuY29tPgoKCSogY29uZmlnL21oLWN5Z3dpbjMyOiBuZXcgZmlsZSAobmVlZCAtRE5FRURfYmFzZW5hbWUgYW5kCgkJLURORUVEX3N5c19zaWdsaXN0IGZvciBuYXRpdmUgTlQgcmVidWlsZGluZykKCSogY29uZmlnLnRhYmxlICgqLSotY3lnd2luMzIpOiBuZXcgZW50cnkKCSogY2hvb3NlLXRlbXAuYzogYnJpbmcgaW4gc3luYyB3aXRoIGdjYyAocmV2ZXJ0IEF1ZyAxNyBjaGFuZ2UpCgpUaHUgQXVnIDI5IDE2OjQ4OjQ1IDE5OTYgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckB0aWt0b2suY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy50YWJsZSAoaVszNDVdODYtKi0qKTogUmVjb2duaXplIGk2ODYgZm9yIHBlbnRpdW0gcHJvLgoKVHVlIEF1ZyAyNyAxMzo0Nzo1OCAxOTk2ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBwZXhlY3V0ZS5jIChwZXhlY3V0ZSkgW01QV106IFJlbW92ZSBvbGQgYm9ndXMgY29kZSB0aGF0CgltZXNzZWQgd2l0aCBhcmd1bWVudHMgdGhhdCBpbmNsdWRlZCBhICcvJywgYWRkIGVzY2FwZSBjaGFycwoJdG8gZG91YmxlIHF1b3RlcywgcmVtb3ZlIGNvbnN0IGRlY2wgZnJvbSBhcmcgdGhhdCBNYWMKCWNvbXBpbGVycyBkb24ndCBzZWVtIHRvIGxpa2UuCgpTYXQgQXVnIDE3IDA0OjQ0OjI3IDE5OTYgIEdlb2ZmcmV5IE5vZXIgIDxub2VyQGN5Z251cy5jb20+CgoJKiBwZXhlY3V0ZS5jOiBVcGRhdGUgdGVzdCBmb3Igd2luMzIgKCYmICEgY3lnd2luMzIpLgoJKiBjaG9vc2UtdGVtcC5jOiBmaXggV0lOMzIgcHJlcHJvY2Vzc29yIGRlZmluZXMKClRodSBBdWcgMTUgMTI6MjY6NDggMTk5NiAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogbXB3LW1ha2Uuc2VkOiBBZGQgQERBU0hfQ19GTEFHQCBhbmQgQFNFR01FTlRfRkxBRyh7RGVmYXVsdH0pQAoJdG8gZWRpdGluZyBvZiBkZWZhdWx0IG1ha2VmaWxlIHJ1bGUuCgpTdW4gQXVnIDExIDIxOjAzOjI3IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBhbGxvY2Etbm9ybS5oOiAgSW5jbHVkZSA8bWFsbG9jLmg+IGlmIF9XSU4zMi4KCSogYXJndi5jOiAgSW5jbHVkZSBub24tcHJvdG90eXBlZCBkZWNscyBmb3IgbWFsbG9jIGFuZCBzdHJpbmcKCWZ1bmN0aW9ucyBpZiAhIF9XSU4zMiBvciBpZiBfX0dOVUNfXy4KClRodSBBdWcgIDggMTI6NDI6NDAgMTk5NiAgS2xhdXMgS2FlbXBmICA8a2thZW1wZkBwcm9naXMuZGU+CgoJKiBjb25maWcuaC12bXM6IE5ldyBmaWxlLgoJKiBtYWtlZmlsZS52bXM6IFVzZSBpdC4KCldlZCBBdWcgIDcgMTc6MTY6MTIgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5jIChfZ2V0b3B0X2ludGVybmFsKTogIElmIGFyZ2MgaXMgMCwganVzdCByZXR1cm4gKGJlZm9yZQoJd2UgcmVmZXJlbmNlICphcmd2IGFuZCBzZWdmYXVsdCkuCgpNb24gQXVnICA1IDAxOjI5OjA4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChkaXN0Y2xlYW4pOiBBZGQgbXVsdGlsaWIub3V0LgoKVGh1IEp1bCAxOCAxNzo0MDo1NSAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBhbGxvY2Etbm9ybS5oOiBDaGFuZ2UgI2lmZGVmIHNwYXJjIHRvICNpZiBkZWZpbmVkIChzcGFyYykgJiYKCWRlZmluZWQgKHN1bikuICBGcm9tIEFuZHJldyBHaWVydGggPEFORFJFV0dAbWljcm9saXNlLmNvLnVrPi4KCk1vbiBKdWwgIDEgMTM6NDA6NDQgMTk5NiAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGN5Z251cy5jb20+CgoJVHVlIE1heSAyOCAxNToyOTowMyAxOTk2ICBQYXQgUmFua2luICA8cmFua2luQGVxbC5jYWx0ZWNoLmVkdT4KCgkqIHZtc2J1aWxkLmNvbSAoUkVRVUlSRF9PRklMRVMpOiBBZGQgY2hvb3NlLXRlbXAubyBhbmQgeHN0cmR1cC5vLgoKCVRodSBKYW4gMjUgMTg6MjA6MDQgMTk5NiAgUGF0IFJhbmtpbiAgPHJhbmtpbkBlcWwuY2FsdGVjaC5lZHU+CgoJKiB2bXNidWlsZC5jb206IENoYW5nZXMgdG8gaGFuZGxlIERFRkZVTkMob25fZXhpdCkuCgkoZG9fb2ZpbGVzKTogQWxsb3cgbm9uZXhpc3RlbnQgc291cmNlIGZpbGUgaW4gcGFzcyAzLgoJKGNoa19kZWZmdW5jKTogTmV3IHJvdXRpbmUuCgpUdWUgSnVuIDI1IDE5OjI0OjQzIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBwZXhlY3V0ZS5jIChQRVhFQ1VURV9WRVJCT1NFKTogRGVmaW5lLgoJKE1QVyBwZXhlY3V0ZSk6IENoZWNrIGZsYWdzICYgUEVYRUNVVEVfVkVSQk9TRSBpbnN0ZWFkIG9mIHZlcmJvc2VfZmxhZy4KClR1ZSBKdW4gMjUgMjM6MTE6NDggMTk5NiAgSmFzb24gTW9sZW5kYSAgKGNyYXNoQGdvZHppbGxhLmN5Z251cy5jby5qcCkKCgkqIE1ha2VmaWxlLmluIChkb2NkaXIpOiBSZW1vdmVkLgoKVHVlIEp1biAyNSAyMzowMTowNyAxOTk2ICBKYXNvbiBNb2xlbmRhICAoY3Jhc2hAZ29kemlsbGEuY3lnbnVzLmNvLmpwKQoKCSogTWFrZWZpbGUuaW4gKG9sZGluY2x1ZGVkaXIpOiBSZW1vdmVkLgoKVHVlIEp1biAyNSAyMjo1MDowNyAxOTk2ICBKYXNvbiBNb2xlbmRhICAoY3Jhc2hAZ29kemlsbGEuY3lnbnVzLmNvLmpwKQoKCSogTWFrZWZpbGUuaW4gKGRhdGFkaXIpOiBTZXQgdG8gJChwcmVmaXgpL3NoYXJlLgoKVGh1IEp1biAyMCAyMToxNzo1MiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfYXJtX3B0KTogUmVpbmRlbnQuICBBdm9pZCBlbmRsZXNzIGxvb3AgYnkKCWNoZWNraW5nIGZvciBlcnJvcnMgZnJvbSBkb190eXBlLgoKVHVlIEp1biAxOCAxNDozNjoxOSAxOTk2ICBLbGF1cyBLYWVtcGYgIDxra2FlbXBmQHByb2dpcy5kZT4KCgkqIG1ha2VmaWxlLnZtczogTmV3IGZpbGUuCgkqIHhtYWxsb2MuYzogSWYgVk1TLCBpbmNsdWRlIDxzdGRsaWIuaD4gYW5kIDx1bml4bGliLmg+IHJhdGhlcgoJdGhhbiBkZWNsYXJpbmcgbWFsbG9jLCByZWFsbG9jLCBhbmQgc2Jyay4KCk1vbiBKdW4gMTAgMTM6MTc6MTcgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHBleGVjdXRlLmM6IE5ldyBmaWxlLgoKV2VkIEp1biAgNSAxNjo1Nzo0NSAxOTk2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEB0YW11LmVkdT4KCgkqIHhtYWxsb2MuYzogRGVjbGFyZSBzYnJrLgoKU2F0IE1heSAgNCAwNTowODo0NSAxOTk2ICBQZXRlciBTY2hhdWVyICAocGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGUpCgoJKiBhbGxvY2Etbm9ybS5oOiAgQWRkIFNQQVJDd29ya3MgY2MgY29tcGF0aWJsZSBfX2J1aWx0aW5fYWxsb2NhCglkZWNsYXJhdGlvbi4KCk1vbiBBcHIgMjIgMTg6NDE6NDkgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogeHN0cmVycm9yLmM6IEluY2x1ZGUgPHN0ZGlvLmg+LgoKU3VuIEFwciAyMSAxMTo1NToxMiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBhdGV4aXQuYy4KClN1biBBcHIgMjEgMDk6NTA6MDkgMTk5NiAgU3RlcGhlbiBMIE1vc2hpZXIgIChtb3NoaWVyQHdvcmxkLnN0ZC5jb20pCgoJKiBjaG9vc2UtdGVtcC5jOiBJbmNsdWRlIHN5cy90eXBlcy5oIGJlZm9yZSBzeXMvZmlsZS5oIGZvciBzY28zLjJ2NS4KCldlZCBBcHIgMTcgMTE6MTc6NTUgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNob29zZS10ZW1wLmM6IERvbid0ICNpbmNsdWRlIHN5cy9maWxlLmggaWZkZWYgTk9fU1lTX0ZJTEVfSC4KCSNpbmNsdWRlIDxzdGRpby5oPgoJKiBjb25maWcvbXQtdnh3b3JrczUgKEhERUZJTkVTKTogRGVmaW5lIE5PX1NZU19GSUxFX0guCgpUdWUgQXByIDE2IDExOjI3OjE2IDE5OTYgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChsbmVlZGVkLWxpc3QpOiBJZiBhbGxvY2EubyBpcyBuZWVkZWQsIHNvIGlzIHhtYWxsb2Muby4KCVJldmVydHMgRmViIDgsIDE5OTUgY2hhbmdlLgoKTW9uIEFwciAxNSAxMjo1MzoyNiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2hvb3NlLXRlbXAuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgY2hvb3NlLXRlbXAuYy4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgY2hvb3NlLXRlbXAuby4KClNhdCBBcHIgMTMgMTQ6MTk6MzAgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X3RvX2RvdWJsZSk6ICBEb24ndCBiaWFzIGV4cG9uZW50IHdoZW4KCWhhbmRsaW5nIHplcm8ncywgZGVub3JtcyBvciBOYU5zLgoKVGh1IEFwciAxMSAxMzozNjo1NiAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfdG9fZG91YmxlKTogIEZpeCBidWdzIHdpdGggaGFuZGxpbmcKCW51bWJlcnMgd2l0aCBmcmFjdGlvbnMgPCAzMiBiaXRzLgoKTW9uIEFwciAgOCAxNDo0ODozNCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWcudGFibGU6IFBlcm1pdCAtLWVuYWJsZS1zaGFyZWQgdG8gc3BlY2lmeSBhIGxpc3Qgb2YKCWRpcmVjdG9yaWVzLgoKVHVlIE1hciAxOSAyMjowMjowNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfdGVtcGxhdGUpOiBGaXggZm9yIG5vbi1tYW5nbGVkIHBvaW50ZXIKCWFyZ3VtZW50cy4KCkZyaSBNYXIgIDggMTc6MjQ6MTggMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBJZiBzcmNkaXIgaXMgYC4nIGFuZCB3aXRoX3RhcmdldF9zdWJkaXIgaXMgbm90CglgLicsIHRoZW4gc2V0IE1VTFRJU1JDVE9QIGJlZm9yZSBjYWxsaW5nIGNvbmZpZy1tbC5pbi4KClRodSBNYXIgIDcgMTM6Mzc6MTAgMTk5NiAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogbXB3LmMgKG1wd19vcGVuKTogQWRkIGRlYnVnZ2luZyBvdXRwdXQgb3B0aW9uLgoKV2VkIE1hciAgNiAxNzozNjowMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfdGVtcGxhdGUpOiBGaXggZm9yIGFkZHJlc3Mtb2YtZXh0ZXJuIGFyZ3VtZW50cy4KClR1ZSBGZWIgMjcgMTI6MDA6NTAgMTk5NiAgUmF5bW9uZCBKb3UgIDxyam91QG1leGljYW4uY3lnbnVzLmNvbT4KCgkqIG1wdy5jIChtcHdpZnlfZmlsZW5hbWUpOiBDaGFuZ2UgNiB0byA1IGluCglzdHJuY21wICh1bml4bmFtZSwgIi90bXAvIiwgNSkuCgpUdWUgRmViIDIwIDEwOjU1OjUzIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6IEluaXRpYWxpemUgaXNfYm9vbC4gIENvcnJlY3RseQoJaGFuZGxlIDAgYXMgYSBwb2ludGVyIHZhbHVlIHBhcmFtZXRlci4KCk1vbiBGZWIgIDUgMTY6NDE6NDQgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGFsbCk6IERlcGVuZCB1cG9uIHJlcXVpcmVkLWxpc3QuCgkocmVxdWlyZWQtbGlzdCk6IE5ldyB0YXJnZXQuCgkoY2xlYW4pOiBSZW1vdmUgcmVxdWlyZWQtbGlzdC4KCldlZCBKYW4gMzEgMTA6MTk6NDEgMTk5NiAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIHdpbjMyLmM6IERlbGV0ZWQuCgkqIGNvbmZpZy50YWJsZSAoaTM4Ni0qLXdpbjMyKTogRGVsZXRlZC4KCSogY29uZmlnL21oLWkzODZ3aW4zMjogRGVsZXRlZC4KClRodSBKYW4gMTggMTE6MzQ6MTcgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IENoYW5nZSBvcG5hbWUgcGFyYW1ldGVyIHRvCgljb25zdCBjaGFyICouCgkoY3BsdXNfbWFuZ2xlX29wbmFtZSk6IENoYW5nZSByZXR1cm4gdHlwZSBhbmQgb3BuYW1lIHBhcmFtZXRlciB0bwoJY29uc3QgY2hhciAqLiAgRG9uJ3QgY2FzdCByZXR1cm4gdmFsdWUuCgpUdWUgSmFuIDE2IDEyOjEzOjExIDE5OTYgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIG1wdy5jOiBJbmNsdWRlIFRpbWVyLmgsIGluIG9yZGVyIHRvIGdldCBtNjhrIE1pY3Jvc2Vjb25kcyB0cmFwCglkZWZpbml0aW9uLgoKV2VkIEphbiAgMyAxMzoxNTowNCAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suYzogVXBkYXRlIGNvcHlyaWdodCB0byAxOTk2LgoJKF9vYnN0YWNrX21lbW9yeV91c2VkKTogRGVmaW5lIG5ldyBmdW5jdGlvbi4gIENhbGxlZCB2aWEKCW9ic3RhY2tfbWVtb3J5X3VzZWQgbWFjcm8uCgpUaHUgRGVjIDI4IDExOjM5OjQwIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIHhzdHJkdXAuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgeHN0cmR1cC5jLgoJKFJFUVVJUkVEX09GSUxFUyk6IEFkZCB4c3RyZHVwLm8uCgkoeHN0cmR1cC5vKTogTmV3IHRhcmdldC4KCk1vbiBEZWMgMTEgMTg6MTg6NTIgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogYXRleGl0LmM6IE5ldyBzdHViIHRvIHByb3ZpZGUgYXRleGl0IG9uIHN5c3RlbXMgdGhhdCBoYXZlCglvbl9leGl0LCBsaWtlIFN1bk9TIDQuMS54IHN5c3RlbXMuCgkqIGZ1bmN0aW9ucy5kZWYgKG9uX2V4aXQsIGF0ZXhpdCk6IERpdHRvLgoKTW9uIERlYyAxMSAxNTo0MjoxNCAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHcuYyAobXB3X2Fib3J0KTogUmVtb3ZlIGRlY2wuCgkobXB3X2FjY2Vzcyk6IE1vdmUgZGVidWdnaW5nIHByaW50Zi4KClNhdCBEZWMgIDIgMDE6MjU6MjMgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlnLnRhYmxlOiBDb25zaXN0ZW50bHkgdXNlICR7aG9zdH0gcmF0aGVyIHRoYW4gJHt4aG9zdH0gb3IKCSR7dGFyZ2V0fS4KCSogY29uZmlndXJlLmluOiBEb24ndCBib3RoZXIgdG8gc2V0ICR7eGhvc3R9IGJlZm9yZSBjYWxsaW5nCgljb25maWcudGFibGUuCgpUdWUgTm92IDI4IDE0OjE2OjU3IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluICguYy5vKTogVXNlIHRlc3QgaW5zdGVhZCBvZiB0aGUgbGVmdCBicmFja2V0LCB0bwoJYXZvaWQgcHJvYmxlbXMgd2l0aCBzb21lIHZlcnNpb25zIG9mIG1ha2UuCgpUdWUgTm92IDI4IDExOjQ1OjE3IDE5OTUgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIG1wdy1tYWtlLnNlZDogRml4IElOQ0RJUiBlZGl0IHRvIHdvcmsgd2l0aCBOb3YgMTQgY2hhbmdlLgoKVHVlIE5vdiAyMSAxMToyNjozNCAxOTk1ICBGcmVkIEZpc2ggIDxmbmZAcnRsLmN5Z251cy5jb20+CgoJKiBjb25maWcvbWgtaHB1eDogUmVtb3ZlLiAgSXQgd2FzIG9ubHkgdXNlZCB0byBkZWZpbmUgRVhUUkFfT0ZJTEVTLAoJd2hpY2ggd2FzIHNldCB0byBqdXN0IGFsbG9jYS5vLCB3aGljaCBpcyBub3cgYXV0b21hdGljYWxseSBtYXJrZWQKCWFzIG5lZWRlZCBieSB0aGUgYXV0b2NvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KClR1ZSBOb3YgMjEgMTQ6MTU6MDYgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlnLnRhYmxlOiBDaGVjayAke3dpdGhfY3Jvc3NfaG9zdH0gcmF0aGVyIHRoYW4gY29tcGFyaW5nCgkke2hvc3R9IGFuZCAke3RhcmdldH0uCgpUaHUgTm92IDE2IDE0OjM0OjQyIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogSWYgd2l0aF90YXJnZXRfc3ViZGlyIGlzIGVtcHR5LCBzZXQgeGhvc3QgdG8KCSR7aG9zdH0gcmF0aGVyIHRoYW4gJHt0YXJnZXR9IGJlZm9yZSBjYWxsaW5nIGNvbmZpZy50YWJsZS4KClR1ZSBOb3YgMTQgMDE6Mzg6MzAgMTk5NSAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChNVUxUSVRPUCk6IERlbGV0ZWQuCgkoTVVMVElTUkNUT1AsIE1VTFRJQlVJTERUT1ApOiBOZXcuCgkoRkxBR1NfVE9fUEFTUyk6IERlbGV0ZSBJTkNESVIuCgkoSU5DRElSKTogQWRkICQoTVVMVElTUkNUT1ApLgoJKGluc3RhbGxfdG9fbGliZGlyKTogQWRkICQoTVVMVElTVUJESVIpLiAgQ2FsbCAkKE1VTFRJRE8pLgoJKiBjb25maWd1cmUuaW46IERlbGV0ZSBjYWxsIHRvIGNmZy1tbC1jb20uaW4uICBDYWxsIGNvbmZpZy1tbC5pbgoJaW5zdGVhZCBvZiBjZmctbWwtcG9zLmluLgoJKGNyb3NzLWNvbXBpbGUgY2hlY2spOiBDaGFuZ2UgdG8gdGVzdCBmb3Igd2l0aF90YXJnZXRfc3ViZGlyLgoJKEVYVFJBX0xJTktTKTogRGVsZXRlLgoKU3VuIE5vdiAxMiAxMjoxMzowNCAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHctbWFrZS5zZWQ6IEFkZCBnZXRwYWdlc2l6ZS5jLm8gdG8gbmVlZGVkLWxpc3QuCgkqIG1wdy5jIFtVU0VfTVdfSEVBREVSU106IENvbmRpdGlvbmFsaXplIGNvbXBpbGluZyBvZgoJZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBsaWVkIGJ5IE1ldHJvd2Vya3MgbGlicmFyaWVzLgoJKGZzdGF0KTogQ2xlYW4gdXAgZGVzY3JpcHRvci0+cG9pbnRlciBjb252ZXJzaW9uIGNvZGUuCgkoSW5zdGFsbENvbnNvbGUsIGV0Yyk6IEVtcHR5IGRlZmluaXRpb25zLCBmb3Igd2hlbiBsaW5raW5nCgl3aXRoIFNJT1VYLgoKU3VuIE5vdiAgNSAxOToyNToyNyAxOTk1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChGTEFHU19UT19QQVNTKTogIEFsc28gcGFzcyBQSUNGTEFHUy4KCSguYy5vKTogIFN0eWxpc3RpYyBjaGFuZ2UuCgpUaHUgTm92ICAyIDEyOjA2OjI5IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIHN0cnRvbC5jLCBzdHJ0b3VsLmM6IERvbid0IGluY2x1ZGUgPHN0ZGxpYi5oPi4gIEZyb20KCXBoZG1AaW5mby51Y2wuYWMuYmUgKFBoaWxpcHBlIERlIE11eXRlcikuCgpXZWQgTm92ICAxIDExOjU5OjM2IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ29ycmVjdCBzZWQgY2FsbC4KCk1vbiBPY3QgMzAgMTM6MDM6NDUgMTk5NSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46ICBDbGVhbiB1cCAvIHNpbXBsaWZ5IGZvciBuYXRpdmUuCgoJKiBjb25maWd1cmUuaW46ICBNZXJnZSBpbiBzdHVmZiBmcm9tIC4uL3hpYmVydHkvY29uZmlndXJlLmluLgoJKiBNYWtlZmlsZS5pbiAoQ0MpOiAgQWRkIGRlZmluaXRpb24gKHNvIGl0IGNhbiBiZSBvdmVycnJpZGRlbgoJYnkgLi4vY29uZmlndXJlKS4KClR1ZSBPY3QgMjQgMTc6NTc6MjcgMTk5NSAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogbXB3LW1ha2Uuc2VkOiBMZWF2ZSBzdHJlcnJvci5jLm8gaW4gc3RhbmRhcmQgbGlzdCBvZiBmdW5jdGlvbnMuCgkqIG1wdy5jIChSX09LLCBFTk9FTlQsIEVBQ0NFU1MsIEVOT1NZUyk6IFJlbW92ZS4KCShsaW5rKTogUmVtb3ZlIHVzZWxlc3MgZGVmaW5pdGlvbiB3aXRoIGVycm9yIHJldHVybi4KCShsYXN0X21pY3Jvc2Vjb25kcywgd2Fybl9pZl9zcGluX2RlbGF5LCByZWNvcmRfZm9yX3NwaW5fZGVsYXkpOgoJVXNlIFVuc2lnbmVkV2lkZSB0eXBlIGZvciBtaWNyb3NlY29uZCBjb3VudHMuCgpUaHUgT2N0IDE5IDEwOjUyOjA3IDE5OTUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckB3b2dnbGVidWcudGlhYy5uZXQ+CgoJKiBtZW1jbXAuYyAobWVtY21wKTogQXJndW1lbnQgdHlwZXMgYXJlIGNvbnN0IHZvaWQgKiwgbm90IHZvaWQKCSpjb25zdC4KCgkqIHN0cm5jYXNlY21wLmMgKHN0cm5jYXNlY21wKTogSW5jbHVkZSBhbnNpZGVjbC5oL3N0ZGFyZy5oLCBub3QKCXN5cy90eXBlcy5oLgoJKiBzdHJjYXNlY21wLmMgKHN0cmNhc2VjbXApOiBEaXR0by4KClR1ZSBPY3QgMTAgMTE6MDM6MjQgMTk5NSAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQklTT04pOiAgUmVtb3ZlIG1hY3JvLgoKVHVlIFNlcCAyNiAxNTowNjo0NiAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoSEZJTEVTKTogQWRkIGRlZmF1bHQgZW1wdHkgZGVmaW5pdGlvbi4KCSogbXB3LWNvbmZpZy5pbiAoY29uZmlnLmgpOiBPbmx5IHVwZGF0ZSBpZiBjaGFuZ2VkLgoJKiBtcHctbWFrZS5pbjogUmVtb3ZlLgoJKiBtcHctbWFrZS5zZWQ6IE5ldyBmaWxlLCBlZGl0cyBNYWtlZmlsZS5pbiBpbnRvIE1QVyBtYWtlZmlsZS4KCSogbXB3LmM6IFJlbW92ZSBzZW1pLWNsb25lIG9mIHN0cmVycm9yIGNvZGUuCgkoc3lzX25lcnIsIHN5c19lcnJsaXN0KTogRGVmaW5lIGhlcmUuCgkoTWljcm9zZWNvbmRzKTogT25seSBkZWZpbmUgYXMgQS1saW5lIHRyYXAgaWYgbTY4ayBNYWMuCgpXZWQgU2VwIDIwIDEyOjUzOjMyIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChtYWludGFpbmVyLWNsZWFuKTogTmV3IHN5bm9ueW0gZm9yIGRpc3RjbGVhbi4KCk1vbiBBdWcgMjggMTk6NDc6NTIgMTk5NSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20+CgoJKiBjb25maWcudGFibGU6ICBGb3IgaG9zdCwgZ2VuZXJhbGl6ZSByczYwMDAtaWJtLWFpeCoKCXRvICotaWJtLWFpeCogc28gd2UgYWxzbyBpbmNsdWRlIHBvd2VycGMuCgpUdWUgQXVnIDIyIDAzOjE4OjA1IDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBrci1sYXB0b3AuY3lnbnVzLmNvbT4KCglGcmkgSnVuIDE2IDE4OjM1OjQwIDE5OTUgIFBhdCBSYW5raW4gIChyYW5raW5AZXFsLmNhbHRlY2guZWR1KQoKCSogeHN0cmVycm9yLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiwgdm1zYnVpbGQuY29tOiBDb21waWxlIGl0LgoKTW9uIEp1bCAzMSAxMjoxNjozMiAxOTk1ICBzdGV2ZSBjaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogY29uZmlnLnRhYmxlIChpMzg2LSotd2luMzIpOiBOZXcuCgpGcmkgSnVsIDIxIDExOjM1OjUyIDE5OTUgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTVVMVElUT1ApOiBOZXcgdmFyaWFibGUuCgkoTVVMVElESVJTLCBNVUxUSVNVQkRJUiwgTVVMVElETywgTVVMVElDTEVBTik6IExpa2V3aXNlLgoJKGFsbCk6IEFkZCBtdWx0aWxpYiBzdXBwb3J0LgoJKGluc3RhbGxfdG9fdG9vbGRpciwgKmNsZWFuKTogTGlrZXdpc2UuCgpNb24gSnVsIDEwIDExOjQ3OjI3IDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBjeWdudXMuY29tPgoKCSogbWFrZWZpbGUuZG9zIChPQkpTKTogQWRkIGhleC5vLiAgRnJvbSBESiBEZWxvcmllLgoKRnJpIEp1biAzMCAxNzoyODo1OSAxOTk1ICBQYXQgUmFua2luICAocmFua2luQGVxbC5jYWx0ZWNoLmVkdSkKCgkqIHZtc2J1aWxkLmNvbTogIGNyZWF0ZSAibmV3LWxpYi5vbGIiLCBidWlsZCBsaWJpYmVydHkgdW5kZXIgdGhhdAoJbmFtZSwgYW5kIHRoZW4gbWFrZSBpdCBiZWNvbWUgImxpYmVydHkub2xiIiB3aGVuIGRvbmUsIHNvIHRoYXQgYW4KCWluY29tcGxldGUgYnVpbGQgYXR0ZW1wdCBuZXZlciBsZWF2ZXMgYmVoaW5kIHNvbWV0aGluZyB3aGljaCBsb29rcwoJbGlrZSBhIGNvbXBsZXRlIGxpYnJhcnkuCgpUaHUgSnVuIDI5IDAwOjIyOjAyIDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBjb25maWcvbWgtaTM4NnBlOiBOZXcgZmlsZSBmb3IgUEUgaG9zdHMuCgkqIGNvbmZpZy50YWJsZTogVW5kZXJzdGFuZCBQRSBob3N0cy4KCldlZCBKdW4gMjggMTk6MTM6MjMgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYzogVXBkYXRlIGZyb20gZ2NjLgoKCSogYXJndi5jLCBkdW1teS5jOiBJZiBfX1NURENfXywgI2luY2x1ZGUgImFsbG9jYS1jb25mLmgiIGFmdGVyCgk8c3RkZGVmLmg+LgoJKiBhbGxvY2Etbm9ybS5oOiBJZiBfX1NURENfXywgZGVjbGFyZSBhbGxvY2Egd2l0aCBpdHMgcGFyYW1ldGVyLgoKVGh1IEp1biAyMiAxODo1Nzo0NyAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHctbWFrZS5pbiAoQUxMX0NGTEFHUyk6IERlZmluZSBORUVEX2Jhc2VuYW1lLgoJKiBtcHcuYzogT25seSB0ZXN0IERlYnVnUEkgb25jZSB3aGVuZXZlciBwcmludGluZyBkZWJ1ZyBpbmZvLgoJKG1wd2lmeV9maWxlbmFtZSk6IElmIGZpbGVuYW1lIGlzIC90bXAvZm9vLCBjaGFuZ2UgaXQgaW50byA6X2ZvbywKCWFsc28gZml4IHRvIG5vdCB3cml0ZSBvbiBpbnB1dCBmaWxlbmFtZSBidWZmZXIuCgkobXB3X2FjY2Vzcyk6IFVzZSBzdGF0KCkgaW5zdGVhZCBvZiBvcGVuKCksIHdvcmtzIGZvciBkaXJlY3RvcmllcwoJYXMgd2VsbCBhcyBmaWxlcy4KCk1vbiBKdW4gMTkgMDA6MzM6MjIgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbjogTWFzc2FnZSBicm9rZW4gc2hlbGxzIHRoYXQgcmVxdWlyZSAnZWxzZSB0cnVlJy4KClNhdCBKdW4gMTcgMjM6MjE6NTggMTk5NSAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBhbGxvY2Etbm9ybS5oOiBEZWNsYXJlIGFsbG9jYSBhcyB0eXBlICJQVFIiIHRvIG1hdGNoIGZ1bmN0aW9ucy5kZWYuCglEZWNsYXJlIF9fYnVpbHRpbl9hbGxvY2EgaW4gdGhlIHNwYXJjIGNhc2UsIGFzIGFyZ3YuYyBkaWQuCgkqIGFyZ3YuYzogUmVwbGFjZSBpbmxpbmUgdmVyc2lvbiBvZiBhbGxvY2Etbm9ybS5oIGF0IHN0YXJ0IG9mIGZpbGUgd2l0aAoJYSAjaW5jbHVkZSBvZiBhbGxvY2EtY29uZi5oLiAgUHJlY2VkZSBpdCB3aXRoIGFuIGluY2x1ZGUgb2YgYW5zaWRlY2wuaAoJYmVjYXVzZSBhbGxvY2Etbm9ybS5oIG5lZWRzIHRvIGRlY2xhcmUgYWxsb2NhIGFzICJQVFIiLgoKTW9uIEp1biAxMiAxNDoyNDoyNiAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogd2luMzIuYzogTmV3IGZpbGUuCgpGcmkgSnVuICA5IDE1OjE2OjE0IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogZHVtbXkuYzogI2luY2x1ZGUgImFsbG9jYS1jb25mLmgiLgoKV2VkIEp1biAgNyAxMTo0NjoyMyAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChtb3N0bHljbGVhbik6IFJlbW92ZSBzdGFtcC1waWNkaXIuCgkoY2xlYW4pOiBEb24ndC4KCk1vbiBKdW4gIDUgMTg6NDY6MDYgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBjb25maWcudGFibGUgKGZyYWdzKTogVXNlIHRvcGxldmVsIHBpYyBmcmFncy4KCgkqIE1ha2VmaWxlLmluIChQSUNGTEFHKTogTmV3IG1hY3JvLgoJKGFsbCk6IERlcGVuZCBvbiBzdGFtcC1waWNkaXIuCgkobmVlZGVkLWxpc3QpOiBEaXR0by4KCSguYy5vKTogQWxzbyBidWlsZCBwaWMgb2JqZWN0LgoJKHN0YW1wLXBpY2Rpcik6IE5ldyBydWxlLgoJKG1vc3RseWNsZWFuKTogUmVtb3ZlIHBpYy4KCShjbGVhbik6IFJlbW92ZSBzdGFtcC1waWNkaXIuCgpGcmkgTWFyIDI0IDE2OjU1OjQ4IDE5OTUgIFBhdCBSYW5raW4gIChyYW5raW5AZXFsLmNhbHRlY2guZWR1KQoKCSogdm1zYnVpbGQuY29tIChjb25maWcuaCk6IEFkZCBgI2RlZmluZSBORUVEX2Jhc2VuYW1lJy4KClR1ZSBNYXkgMjMgMTA6MTI6NDYgMTk5NSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20+CgoJKiBjbG9jay5jLCBnZXRvcHQuYywgc3RydG9kLmMsIHZzcHJpbnRmLmM6ICBDaGFuZ2UgZnJvbSB1c2luZyBMR1BMCgl0byBsaWJpby1zdHlsZSBjb3B5cmlnaHQuCgkqIGdldHBhZ2VzaXplLmM6ICBSZW1vdmUgRlNGIGNvcHlyaWdodC4KClNhdCBNYXkgMjAgMTI6MzA6MjMgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGtyLWxhcHRvcC5jeWdudXMuY29tPgoKCUFkZGVkIGltcHJvdmVkIFZNUyBzdXBwb3J0IGZyb20gUGF0IFJhbmtpbjoKCglGcmkgTWFyIDE3IDE4OjQwOjM2IDE5OTUgIFBhdCBSYW5raW4gIChyYW5raW5AZXFsLmNhbHRlY2guZWR1KQoKCSogdm1zYnVpbGQuY29tOiAgbmV3IGZpbGUuCgoJKiBnZXRwYWdlc2l6ZS5jIChnZXRwYWdlc2l6ZSk6ICBpbXBsZW1lbnQgZm9yIFZNUzsKCSogc3RyZXJyb3IuYyAoc3RyZXJyb3IsIHN0cmVycm5vLCBzdHJ0b2Vycm5vKTogIGFkZCBydWRpbWVudGFyeQoJc3VwcG9ydCBmb3IgRVZNU0VSUi4KClRodSBNYXkgMTggMTc6MDE6NDIgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGtyLWxhcHRvcC5jeWdudXMuY29tPgoKCVdlZCBNYXkgMTAgMTQ6Mjg6MTYgMTk5NSBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm1sdGQuY28udWspCgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF9hcm1fZXh0KTogRGVmaW5lLgoKVHVlIE1heSAxNiAxMzozMDo1OSAxOTk1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIGJhc2VuYW1lLmMsIGJjbXAuYywgZ2V0Y3dkLmMsIGluc3F1ZS5jLCByZW5hbWUuYywgc2lnc2V0bWFzay5jLAoJc3RyZXJyb3IuYywgc3Ryc2lnbmFsLmM6ICBSZW1vdmUgRlNGIGNvcHlyaWdodC4KCSogc2lnc2V0bWFzay5jOiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+IC0gc2VlbXMgdG8gYmUgbmVlZGVkIGJ5IElTQy4KCk1vbiBNYXkgMTUgMTk6NTM6MTcgMTk5NSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20+CgoJKiBiY29weS5jLCBiemVyby5jLCBtZW1jbXAuYywgbWVtY3B5LmMsIG1lbXNldC5jLCBzdHJjaHIuYywKCXN0cnJjaHIuYywgc3Ryc3RyLmMsIHZmb3JrLmM6ICBSZW1vdmUgRlNGIENvcHlyaWdodCwgYmVjYXVzZSB0aGlzCgltaWdodCBjb250YW1pbmF0ZSBsaWJzdGRjKysgd2l0aCB0aGUgTEdQTC4gIChPSydkIGJ5IFJNUyAxMSBPY3QgOTQuKQoJKiBzdHJjaHIuYywgc3RycmNoci5jOiAgQWRkIGNhc3QgdG8gc3VwcHJlc3MgY29uc3Qgd2FybmluZy4KClRodSBNYXkgIDQgMTQ6MzY6NDIgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYzogVXNlIGNvbnN0IGluc3RlYWQgb2YgQ09OU1QuICBEb24ndCBpbmNsdWRlCglhbnNpZGVjbC5oIGRpcmVjdGx5LgoKV2VkIEFwciAxOSAwMTozMDoyNyAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBEb24ndCBpbmNsdWRlIGxpYmliZXJ0eS5oLiAgRG8gZGVjbGFyZSB4bWFsbG9jIGFuZAoJeHJlYWxsb2MuCgkoLURNQUlOKTogRG9uJ3QgcmVseSBvbiBhbiBleHRlcm5hbGx5LWRlZmluZWQgdmVyc2lvbiBudW1iZXI7CglpbnN0ZWFkLCByZXF1aXJlIHRoZSB2ZXJzaW9uIG51bWJlciB0byBiZSBkZWZpbmVkIGFzIGEKCXByZXByb2Nlc3NvciBtYWNyby4gIEhhbmRsZSB0aGUgUlMvNjAwMCBsZWFkaW5nIGRvdC4gIERlZmluZQoJeG1hbGxvYywgeHJlYWxsb2MgYW5kIGZhdGFsLiAgRG9uJ3Qgc3RyaXAgYSBsZWFkaW5nIHVuZGVyc2NvcmUKCWlmIHdlIGNvdWxkbid0IGRlbWFuZ2xlIHRoZSB3b3JkLgoKVHVlIEFwciAgNCAxMzowMzo1MSAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKE9sZCBtcHcuYyBjaGFuZ2UgZGVzY3JpcHRpb25zIHJldGFpbmVkIGZvciBpbmZvcm1hdGlvbmFsIHZhbHVlLikKCSogbXB3LmMgKHdhcm5pbmdfdGhyZXNob2xkKTogRGVmYXVsdCB0byAuNCBzZWMuCgkob3ZlcmZsb3dfY291bnQsIGN1cnJlbnRfcHJvZ3Jlc3MpOiBOZXcgZ2xvYmFscy4KCSh3YXJuX2lmX3NwaW5fZGVsYXkpOiBJbmNsdWRlIGN1cnJlbnQgcHJvZ3Jlc3MgdHlwZSwKCXN1Y2ggYXMgcHJvZ3JhbSBuYW1lLCBpbiBtZXNzYWdlLgoJKG1wd19zdGFydF9wcm9ncmVzcyk6IFNldCBjdXJyZW50X3Byb2dyZXNzIHZhcmlhYmxlIGZyb20gYXJnLgoJKG1wd19lbmRfcHJvZ3Jlc3MpOiBSZXBvcnQgc3BpbiBkZWxheXMgYnkgcG93ZXItb2YtdHdvLXNpemUKCWJ1Y2tldHMgaW5zdGVhZCBvZiBjb25zdGFudC1zaXplIGJ1Y2tldHMuCgoJKiBtcHcuYzogQ2xlYW4gdXAgZm9ybWF0dGluZywgdHlwZXMsIHJldHVybnMsIGV0Yy4KCShFTk9TWVMpOiBEZWZpbmUuCgkobXB3X2ZyZWFkLCBtcHdfZndyaXRlKTogRGVmaW5lLgoJKHNsZWVwKTogRGVmaW5lIGNvcnJlY3RseS4KCgkqIG1wdy5jOiBOZXcgY29kZSB0byBpbXBsZW1lbnQgY3Vyc29yIHNwaW5uaW5nIHN1cHBvcnQuCgkodW1hc2spOiBOZXcgZnVuY3Rpb24uCgkobXB3X2ZvcGVuLCBtcHdfZnNlZWssIHN0YXQsIGZzdGF0KTogQ2FsbCBQUk9HUkVTUy4KCgkqIG1wdy5jIChtcHdfYmFzZW5hbWUsIG1wd19taXhlZF9iYXNlbmFtZSk6IE5ldyBmdW5jdGlvbnMsIGZpbmQKCWJhc2VuYW1lcyBmb3IgTVBXIGFuZCBNUFcvVW5peCBmaWxlbmFtZXMuCgkobXB3X3NwZWNpYWxfaW5pdCk6IE5ldyBmdW5jdGlvbiwgY2FsbHMgTWFjc2J1ZyBpZiBkZXNpcmVkLgoKCSogbXB3LmM6IEFkZCBHUEwgbm90aWNlLgoJKG1wd2lmeV9maWxlbmFtZSk6IEFkZCBtb3JlIHRyYW5zZm9ybWF0aW9ucy4KCShtcHdfZm9wZW4pOiBDYWxsIG1wd2lmeV9maWxlbmFtZSBvbiBmaWxlIG5hbWVzLgoJKHJlbmFtZSk6IFJlbW92ZS4KCShjaGRpciwgZ2V0Y3dkKTogQWRkIHNpbXBsZSBkZWZpbml0aW9ucy4KCgkqIG1wdy5jOiBSYW5kb20gY2xlYW51cHMsIHJlbW92ZSB1bnVzZWQgY29kZSBiaXRzLgoJQWRkZWQgY29weSBvZiBzdHJlcnJvci5jIGZvciBnY2MncyB1c2UuCgkoc3RhdCwgZnN0YXQsIF9zdGF0KTogTmV3IHZlcnNpb25zIGJhc2VkIG9uIEd1aWRvIHZhbiBSb3NzdW0gY29kZS4KCgkqIG1wdy5jIChtcHdfZnNlZWspOiBNYWtlIGl0IHdvcmsgY29ycmVjdGx5IHdoZW4gZG9pbmcgU0VFS19DVVIuCgoJKiBtcHcuYyAoc3RhdCk6IFJlbW92ZSBoYWNrIGRlZmluaXRpb24sIGdldCBmcm9tIHN5cy9zdGF0LmguCgkoZm9yaywgdmZvcmssIGV0Yyk6IFByaW50IGVycm9yIG1lc3NhZ2VzIGlmIGNhbGxlZC4KCShnZXRydXNhZ2UsIHNicmssIGVudmlyb24sIGlzYXR0eSwgbGluaywgdXRpbWUsIG1rZGlyLCBybWRpciwKCXJlbmFtZSwgY2hvd24pOiBEZWZpbmUuCgoJKiBtcHctY29uZmlnLmluOiBOZXcgZmlsZSwgTVBXIHZlcnNpb24gb2YgY29uZmlndXJlLmluLgoJKiBtcHctbWFrZS5pbjogTmV3IGZpbGUsIE1QVyB2ZXJzaW9uIG9mIE1ha2VmaWxlLmluLgoJKiBtcHcuYzogTmV3IGZpbGUsIE1QVyBjb21wYXRpYmlsaXR5IHJvdXRpbmVzLgoKRnJpIE1hciAyNCAxNDoxMDozMCAxOTk1ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGJhc2VuYW1lLmM6IEluY2x1ZGUgY29uZmlnLmggYmVmb3JlIGNoZWNraW5nIGZvciBORUVEX2Jhc2VuYW1lLgoKVGh1IE1hciAyMyAxOTowOTo1NCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9ucy5kZWY6IEFkZCBERUZGVU5DIGZvciBiYXNlbmFtZS4KCgkqIGJhc2VuYW1lLmM6IE9ubHkgZGVmaW5lIGJhc2VuYW1lIGlmIE5FRURfYmFzZW5hbWUuCgpUaHUgTWFyIDE2IDEzOjM2OjA1IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogY29uZmlnLnRhYmxlOiBGaXggLS1lbmFibGUtc2hhcmVkIGxvZ2ljIGZvciBuYXRpdmUgYnVpbGRzLgoKTW9uIE1hciAxMyAxMTowNToxMSAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6IERlbWFuZ2xlIGJvb2wgbGl0ZXJhbHMgcHJvcGVybHkuCgpNb24gTWFyICA2IDIzOjU3OjI4IDE5OTUgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGN5Z251cy5jb20pCgoJKiBzdHJ0b2wuYyBzdHJ0b3VsLmM6ICBSZXBsYWNlIHRoZXNlIHdpdGggbGVzcyBidWdneSB2ZXJzaW9ucyBmcm9tCglOZXRCU0QuICAoc3RydG91bCBpbiBwYXJ0aWN1bGFyIGNvdWxkbid0IGhhbmRsZSBiYXNlIDE2LikKCldlZCBNYXIgIDEgMTU6NTk6MDEgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlnL210LXZ4d29ya3M1IChIREVGSU5FUyk6IERlZmluZSBOT19TWVNfUEFSQU1fSC4KCgkqIGNsb2NrLmM6IElmIE5PX1NZU19QQVJBTV9IIGlzIGRlZmluZWQsIGRvbid0IGluY2x1ZGUKCTxzeXMvcGFyYW0uaD4uCgkqIGdldGN3ZC5jLCBnZXRwYWdlc2l6ZS5jLCBnZXRydW50aW1lLmM6IExpa2V3aXNlLgoKRnJpIEZlYiAxNyAxNTo0MDo1NSAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBnZXRydW50aW1lLmMgKGdldF9ydW5fdGltZSk6IERvbid0IGFzc3VtZSB0aGF0IENMT0NLU19QRVJfU0VDIGlzCglhIG51bWJlcjsgQU5TSSBhcHBlYXJzIHRvIHBlcm1pdCBhbnkgZXhwcmVzc2lvbiwgaW5jbHVkaW5nIGEKCWZ1bmN0aW9uIGNhbGwuCgoJKiBjb25maWcudGFibGUgKCotKi12eHdvcmtzNSopOiBVc2UgbXQtdnh3b3JrczUgd2hlbiBjb25maWd1cmluZwoJeGliZXJ0eS4KCSogY29uZmlnL210LXZ4d29ya3M1OiBOZXcgZmlsZS4KClRodSBGZWIgIDkgMTQ6MTk6NDUgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmFzZW5hbWUuYyAoYmFzZW5hbWUpOiBDaGFuZ2UgYXJndW1lbnQgdG8gYmUgY29uc3QuCgpXZWQgRmViICA4IDE4OjA2OjUyIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxuZWVkZWQtbGlzdCk6IERvbid0IHdvcnJ5IGFib3V0IHhtYWxsb2MuCgpTdW4gSmFuIDE1IDAwOjQwOjM2IDE5OTUgIEplZmYgTGF3ICAobGF3QHNuYWtlLmNzLnV0YWguZWR1KQoKCSogTWFrZWZpbGUuaW4gKGRpc3RjbGVhbik6IERlbGV0ZSB4aG9zdC1ta2ZyYWcuCgpUaHUgSmFuIDEyIDE2OjU0OjE4IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxuZWVkZWQtbGlzdCk6IElmIGFsbG9jYS5vIGlzIG5lZWRlZCwgc28gaXMgeG1hbGxvYy5vLgoKV2VkIEphbiAxMSAyMjozOTo1NiAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tPgoKCSogaGV4LmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoUkVRVUlSRURfT0ZJTEVTLCBDRklMRVMpOiBMaXN0IGl0LgoJKGhleC5vKTogQWRkIGRlcGVuZGVuY2llcy4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9wcmVmaXgpOiBGb3IgR05VIHN0eWxlIGNvbnN0cnVjdG9yIGFuZAoJZGVzdHJ1Y3RvciBuYW1lcywgdHJ5IGRlbWFuZ2xpbmcgdGhlIHJlbWFpbmRlciBvZiB0aGUgc3RyaW5nLgoKV2VkIERlYyAyOCAwMDo0OToxNSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20+CgoJKiB2YXNwcmludGYuYyAoaW50X3Zhc3ByaW50Zik6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkodmFzcHJpbnRmKTogVXNlIGludF92YXNwcmludGYuICBSZW1vdmVzIGFzc3VtcHRpb24gdGhhdCB2YV9saXN0CglpcyBhc3NpZ25tZW50IGNvbXBhdGlibGUuCgpTYXQgTm92ICA1IDE5OjI5OjEyIDE5OTQgIEphc29uIE1lcnJpbGwgIChqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKExJQkNGTEFHUyk6IE5ldyB2YXJpYWJsZS4KCShGTEFHU19UT19QQVNTKTogUGFzcyBpdC4KCSguYy5vKTogVXNlIGl0LgoKVGh1IE5vdiAgMyAxOTowOTo0NyAxOTk0ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tPgoKCSogZ2V0b3B0LmMsIGdldG9wdDEuYzogRG8gY29tcGlsZSB0aGVzZSBmdW5jdGlvbnMgdW5kZXIgTGludXgsCglzaW5jZSBtYW55IG5hdGl2ZSB2ZXJzaW9ucyBhcmUgYmFzZWQgb24gZ2xpYmMgYnV0IGFyZSBidWdneS4KCk1vbiBPY3QgMjQgMTU6MTY6NDYgMTk5NCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20+CgoJKiB2YXNwcmludGYuYzogIE1ha2UgJ2Zvcm1hdCcgYXJnIGJlIGNvbnN0LCB0byBhdm9pZCBhIG1pc21hdGNoCgl3aXRoIHByb3RvdHlwZSBpbiBHTlUgbGliYy4gIFN1cHBvcnQgc3RkYXJnLmggYXMgd2VsbCBhcyB2YXJhcmdzLmguCgpUdWUgT2N0IDExIDE3OjQ4OjI3IDE5OTQgIEphc29uIE1lcnJpbGwgIChqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKFJFUVVJUkVEX09GSUxFUyk6IEFkZCB2YXNwcmludGYuby4KCSogZnVuY3Rpb25zLmRlZjogUmVtb3ZlIHZhc3ByaW50Zi4KCldlZCBTZXAgMTQgMTc6MDQ6NTUgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBzYW5ndWluZS5jeWdudXMuY29tKQoKCSogeG1hbGxvYy5jIChmaXJzdF9icmVhayk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoeG1hbGxvY19zZXRfcHJvZ3JhbV9uYW1lKTogUmVjb3JkIHNicmsgKDApIGluIGZpcnN0X2JyZWFrLgoJKHhtYWxsb2MpOiBJZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscywgdHJ5IHRvIHJlcG9ydCBob3cgbXVjaAoJbWVtb3J5IHdhcyBhbGxvY2F0ZWQgYnkgdGhlIHByb2dyYW0gdXAgdG8gdGhpcyBwb2ludC4KCSh4cmVhbGxvYyk6IExpa2V3aXNlLgoKU3VuIFNlcCAwNCAxNzo1ODoxMCAxOTk0ICBSaWNoYXJkIEVhcm5zaGF3IChyd2VAcGVnYXN1cy5lc3ByaXQuZWMub3JnKQoKCSogTWFrZWZpbGUuaW4gKEVSUk9SU19DQyk6IE5ldyB2YXJpYWJsZSwgZGVmYXVsdGVkIHRvICQoQ0MpLiAgVXNlIGl0Cgl3aGVuIGxpbmtpbmcgZHVtbXkuCgkqIGNvbmZpZy50YWJsZTogQWRkIGhvc3QgUklTQ2lYIE1ha2VmaWxlIGZyYWcuCgkqIGNvbmZpZy9taC1yaXNjaXg6IE5ldyBmaWxlLgoKVGh1IEF1ZyAyNSAxNzoyOTo0NCAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHNhbmd1aW5lLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoRkxBR1NfVE9fUEFTUyk6IERlZmluZS4KCSgkKFJVTEUxKSk6IFVzZSAkKEZMQUdTX1RPX1BBU1MpLgoKV2VkIEF1ZyAyNCAxNzowODo0NyAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHNhbmd1aW5lLmN5Z251cy5jb20pCgoJKiB2YXNwcmludGYuYzogSW5jbHVkZSA8c3RyaW5nLmg+LgoJKHZhc3ByaW50Zik6IEFkZCBjYXN0cyB0byB2b2lkIGZvciB2YV9hcmcgdG8gYXZvaWQgZ2NjIHdhcm5pbmdzLgoJKiB4YXRleGl0LmM6IERlY2xhcmUgbWFsbG9jLgoKRnJpIEF1ZyAxOSAxNToyOToxMiAxOTk0ICBLdW5nIEhzdSAgKGt1bmdAbWV4aWNhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2FyZ3MpOiBGaXggYSBidWcgaW4gcHJldmlvdXMgcGF0Y2ggKHRoZQoJb25lIGJlbG93KS4KClRodSBBdWcgMTggMTQ6Mzc6MTQgMTk5NCAgS3VuZyBIc3UgIChrdW5nQG1leGljYW4uY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZSBhcmdzKTogSGFuZGxlIEFSTSByZXBlYXQgZW5jb2Rpbmcgd2hlcmUKCXRoZSB0eXBlIGluZGV4IGlzIGdyZWF0ZXIgdGhhbiA5LgoKV2VkIEF1ZyAxNyAxNjoxMzo0OSAxOTk0ICBLdW5nIEhzdSAgKGt1bmdAbWV4aWNhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3F1YWxpZmllZCk6IGFjY2VwdCBvcHRpb25hbCAnXycgYmV0d2VlbgoJcXVhbGlmaWVkIG5hbWUuIFRoaXMgaXMgYmFlY2F1c2UgdGhlIHRlbXBsYXRlIG5hbWUgbWF5IGVuZCB3aXRoCgludW1lcmljIGFuZCBjYW4gbWl4ZWQgdXAgd2l0aCB0aGUgbGVuZ3RoIG9mIG5leHQgcXVhbGlmaWVkIG5hbWUuCgpXZWQgQXVnICAzIDA1OjUyOjE0IDE5OTQgIEQuIFYuIEhlbmtlbC1XYWxsYWNlICAoZ3VtYnlAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy9tdC1zdW5vczQ6IFVzZSBvdXIgc3RhbmRhcmQgbG9jYXRpb24gZm9yIGNyb3NzLWluY2x1ZGVzCglhbmQgY3Jvc3MtbGlicyB3aGVuIHRoZSB0YXJnZXQgaXMgYWxzbyBhICJob3N0IiBlbnZpcm9ubWVudCAoaWUgbm8KCW5ld2xpYjsgaW5jbHVkZXMgYW5kIHN1Y2ggZG9uJ3QgYmVsb25nIHRvIHVzKS4gIFRoaXMgaXMgc3BlY2lmaWMKCXRvIHRoZSBDeWdudXMgU3VwcG9ydCBlbnZpcm9ubWVudC4KClR1ZSBBdWcgIDIgMTU6MjU6MTIgMTk5NCAgS3VuZyBIc3UgIChrdW5nQG1leGljYW4uY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6IGRlbWFuZ2xlIGFzIHh4eDwnUSc+IG5vdAoJeHh4PGNoPTgxPi4KCk1vbiBBdWcgIDEgMTc6MDI6NDggMTk5NCAgS3VuZyBIc3UgIChrdW5nQG1leGljYW4uY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChtYWluKTogZmx1c2ggc3Rkb3V0IHRvIG1ha2UgcGlwZSB3b3JrLgoKU2F0IEp1bCAxNiAxMjo1NjozMiAxOTk0ICBTdGFuIFNoZWJzICAoc2hlYnNAYW5kcm9zLmN5Z251cy5jb20pCgoJKiBjb25maWcudGFibGUgKCotKi1jeHV4NyopOiAgUmVjb2duaXplLgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF9tODgxMTBfZXh0KSBbSEFSUklTX0ZMT0FUX0ZPUk1BVF06CglIYXJyaXMtc3BlY2lmaWMgZmxvYXQgZm9ybWF0LgoJKiBjb25maWcvbWgtY3h1eDc6IE5ldyBmaWxlLgoKV2VkIEp1biAyOSAwMDoyNjoxNyAxOTk0ICBQZXRlciBTY2hhdWVyICAocGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGUpCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfdGVtcGxhdGUpOiAgTWFrZSBzdXJlIHRoYXQgdGhlIHJlc3VsdCBvZgoJY29uc3VtZV9jb3VudCBkb2Vzbid0IGluZGV4IGJleW9uZCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCgpNb24gSnVuIDIwIDIzOjU0OjM3IDE5OTQgIFBldGVyIFNjaGF1ZXIgIChwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZSkKCgkqIGNwbHVzLWRlbS5jIChnbnVfc3BlY2lhbCk6ICBIYW5kbGUgdnRhYmxlIG1hbmdsaW5nIG9mIGdjYy0yLjQuNSBhbmQKCWVhcmxpZXIuIEltcHJvdmUgdGVzdCBmb3IgbmV3IHZ0YWJsZSBtYW5nbGluZy4gQ2hhbmdlIG91dHB1dCBiYWNrCgl0byBgdmlydHVhbCB0YWJsZScuCgpNb24gSnVuIDIwIDExOjM3OjMwIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suYzogQWx3YXlzIGNvbXBpbGUgdGhpcyBjb2RlLCBldmVuIGlmIHVzaW5nIHRoZSBHTlUKCWxpYnJhcnkuICBBdm9pZHMgcHJvYmxlbXMgd2l0aCByZWxhdGl2ZWx5IHJlY2VudCBiaW5hcnkKCWluY29tcGF0aWJpbGl0eS4KClRodSBKdW4gMTYgMTc6NTQ6MDEgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmM6IEluY2x1ZGUgbGliaWJlcnR5LmguCgkoeG1hbGxvYywgeHJlYWxsb2MsIGZyZWUpOiBEb24ndCBkZWNsYXJlLgoJKHN0cnN0cik6IERvbid0IGRlY2xhcmUgcGFyYW1ldGVycy4KCSh4bWFsbG9jLCB4cmVhbGxvYyk6IERvbid0IGRlZmluZS4KCShsb25nX29wdGlvbnMpOiBBZGQgbm8tc3RyaXAtdW5kZXJzY29yZXMuCgkobWFpbik6IENhbGwgeG1hbGxvY19zZXRfcHJvZ3JhbV9uYW1lLiAgUGFzcyBuIGluIHNob3J0IG9wdGlvbnMgdG8KCWdldG9wdF9sb25nLiAgSGFuZGxlIG9wdGlvbiAnbicgdG8gbm90IHN0cmlwIHVuZGVyc2NvcmVzLgoJKHVzYWdlKTogTWVudGlvbiAtbiBhbmQgLS1uby1zdHJpcC11bmRlcnNjb3Jlcy4KClN1biBKdW4gMTIgMDE6Mzc6MDkgMTk5NCAgSmFzb24gTWVycmlsbCAgKGphc29uQGRlbmViLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfdGVtcGxhdGUpOiBTZXBhcmF0ZSBjb25zZWN1dGl2ZSA+J3Mgd2l0aCBhCglzcGFjZS4KCShnbnVfc3BlY2lhbCk6IERlbWFuZ2xlIHRlbXBsYXRlIGFuZCBxdWFsaWZpZWQgbmFtZXMgaW4gYSB2dGFibGUgbmFtZS4KCkZyaSBNYXkgMjcgMTI6Mjc6NTIgMTk5NCAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN1am8uY3lnbnVzLmNvbSkKCglGcm9tIGdhcy0yLjMgYW5kIGJpbnV0aWxzLTIuNCBuZXQgcmVsZWFzZXM6CgoJV2VkIE1heSAxMSAyMjozMjowMCAxOTk0ICBESiBEZWxvcmllIChkakBjdHJvbi5jb20pCgoJKiBtYWtlZmlsZS5kb3M6IFtuZXddIE1ha2VmaWxlIGZvciBkb3MvZ28zMgoJKiBjb25maWd1cmUuYmF0OiB1cGRhdGUgZm9yIGxhdGVzdCBmaWxlcwoJKiBtc2Rvcy5jOiByZW1vdmUgc29tZSBmdW5jdGlvbnMgbm93IGluIGxpYmMuYQoKRnJpIE1heSAyMCAxODo1MzozMiAxOTk0ICBQZXIgQm90aG5lciAgKGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChnbnVfc3BlY2lhbCk6ICBSZWNvZ25pemUgdGh1bmtzLCBhcyB3ZWxsIGFzCgl0aGUgbmV3IG5hbWluZyBzdHlsZSBmb3IgdnRhYmxlcyAod2hlbiAtZnZ0YWJsZS10aHVua3MpLgoKV2VkIE1heSAxOCAxMzozNDowNiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoWFRSQUZMQUdTKTogRG9uJ3QgZGVmaW5lLgoJKC5jLm8sIGR1bW15Lm8pOiBEb24ndCB1c2UgWFRSQUZMQUdTLgoJKCQoUlVMRTEpKTogRG9uJ3QgcGFzcyBYVFJBRkxBR1MgZG93biBpbiByZWN1cnNpdmUgY2FsbC4KCkZyaSBNYXkgMTMgMTY6MDI6MTIgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiB2YXNwcmludGYuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluLCBmdW5jdGlvbnMuZGVmOiBBZGQgaXQuCgpGcmkgTWF5IDEzIDE2OjIwOjI4IDE5OTQgIEphc29uIE1lcnJpbGwgIChqYXNvbkBkZW5lYi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IEdyb2sgYm9vbC4KCkZyaSBNYXkgIDYgMTQ6NDQ6MjEgMTk5NCAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy50YWJsZTogQWRkIGdvMzIKCSogY29uZmlnL21oLWdvMzI6IE5ldyB0ZW1wbGF0ZS4KCkZyaSBNYXkgIDYgMTE6MDE6NTkgMTk5NCAgRC4gVi4gSGVua2VsLVdhbGxhY2UgIChndW1ieUBydGwuY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy50YWJsZSwgY29uZmlnL210LXN1bm9zNDogY29uZmlnIGZvciB3aGVuIHN1bjQgaXMgY3Jvc3MgdGFyZ2V0LgoKTW9uIEFwciAxMSAwMDo1NDozMyAxOTk0ICBSaWNoYXJkIFN0YWxsbWFuICAocm1zQG1vbGUuZ251LmFpLm1pdC5lZHUpCgoJKiBnZXRvcHQuYyBbbm90IF9fR05VX0xJQlJBUllfX10gW19fR0NDX19dIFtub3QgX19TVERDX19dOgoJRGVjbGFyZSBzdHJsZW4gdG8gcmV0dXJuIGludC4gIERvbid0IGluY2x1ZGUgc3RkZGVmLmguCgpGcmkgQXByICAxIDAwOjM4OjE3IDE5OTQgIEppbSBXaWxzb24gICh3aWxzb25AbW9sZS5nbnUuYWkubWl0LmVkdSkKCgkqIGdldG9wdC5jOiBEZWxldGUgdXNlIG9mIElOX0dDQyB0byBjb250cm9sIHdoZXRoZXIKCXN0ZGRlZi5oIG9yIGdzdGRkZWYuaCBpcyBpbmNsdWRlZC4KClRodSBBcHIgMTQgMTQ6MDA6NTYgMTk5NCAgS3VuZyBIc3UgIChrdW5nQG1leGljYW4uY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9zaWduYXR1cmUpOiBGaXggYSBidWcgaW4gdGVtcGxhdGUgZnVuY3Rpb24KCXR5cGUgbnVtYmVyaW5nLgoKV2VkIEFwciAxMyAxNzoyMzowMyAxOTk0ICBLdW5nIEhzdSAgKGt1bmdAbWV4aWNhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3NpZ25hdHVyZSk6IEZpeCB0ZW1wbGF0ZSBmdW5jdGlvbiB3aXRoIGFybQoJc3R5bGUgYXJndW1lbnQgdHlwZSBudW1iZXIsIFRuLgoKV2VkIEFwciAxMyAxNzoxMToxNSAxOTk0ICBKYXNvbiBNZXJyaWxsICAoamFzb25AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChvcHRhYmxlKTogQWRkIG5ld1tdIGFuZCBkZWxldGVbXS4KCkZyaSBBcHIgIDggMTE6MjE6NDIgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGRlbmViLmN5Z251cy5jb20pCgoJKiBhcmd2LmMgKGJ1aWxkYXJndik6IERvbid0IHByb2R1Y2UgZW1wdHkgYXJndW1lbnQganVzdCBiZWNhdXNlCgl0aGVyZSBpcyB0cmFpbGluZyB3aGl0ZXNwYWNlLgoKV2VkIEFwciAgNiAxMTo0MjoxNCAxOTk0ICBLdW5nIEhzdSAgKGt1bmdAbWV4aWNhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3RlbXBsYXRlKTogZml4ICdRJyBxdWFsaWZpZWQgbmFtZSBidWcuCglIYW5kbGUgJ3AnIHNhbWUgYXMgJ1AnLgoJKiBjcGx1cy1kZW0uYyAoZG9fdHlwZSk6IEhhbmRsZSAncCcgc2FtZSBhcyAnUCcuCgpTYXQgTWFyIDI2IDEyOjAwOjEzIDE5OTQgIFBldGVyIFNjaGF1ZXIgIChwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZSkKCgkqIGZsb2F0Zm9ybWF0LmMgKGdldF9maWVsZCwgcHV0X2ZpZWxkKTogIEZpeCBvZmYgYnkgb25lIGVycm9yIGluCglsaXR0bGUgZW5kaWFuIGNhc2UuCgpUaHUgTWFyIDI0IDEwOjQwOjE5IDE5OTQgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfZnJvbV9kb3VibGUpOiBQYXNzIHVuc2lnbmVkIGNoYXIgKiwKCW5vdCBjaGFyICosIHRvIHB1dF9maWVsZC4KCkZyaSBNYXIgMTggMTI6MzQ6MzMgMTk5NCAgUGVyIEJvdGhuZXIgIChib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20pCgoJKiBtZW1tb3ZlLmM6ICBSZS13cm90ZTsgIHBsYWNlZCBpbiBwdWJsaWMgZG9tYWluLgoKV2VkIE1hciAxNiAxMDozMzowNyAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9wcmVmaXgpOiBJZiBBUk0gZGVtYW5nbGluZywgZG9uJ3QgdHJlYXQKCV9fUSogYXMgYSBjb25zdHJ1Y3Rvci4KCk1vbiBNYXIgMTQgMTI6MjY6MDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogaWVlZS1mbG9hdC5jOiBSZW1vdmVkOyBubyBsb25nZXIgdXNlZC4KCSogTWFrZWZpbGUuaW46IENoYW5nZWQgYWNjb3JkaW5nbHkuCgpNb24gTWFyICA3IDEyOjI4OjE3IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGZsb2F0Zm9ybWF0LmMgKGdldF9maWVsZCk6IFJlbW92ZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlIGkuCgkocHV0X2ZpZWxkKTogUmVtb3ZlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGUgaS4KClN1biBGZWIgMjcgMjE6NTA6MTEgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGRlbmViLmN5Z251cy5jb20pCgoJKiBmbG9hdGZvcm1hdC5jOiBOZXcgZmlsZSwgaW50ZW5kZWQgdG8gcmVwbGFjZSBpZWVlLWZsb2F0LmMuCgkqIE1ha2VmaWxlLmluOiBDaGFuZ2UgYWNjb3JkaW5nbHkuCgpUaHUgRmViIDI0IDExOjUxOjEyIDE5OTQgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUBydGwuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5jOiBSZW1vdmUgI2lmZGVmIEdFVE9QVF9DT01QQVQgYW5kICNpZiAwIGNvZGUuCgkgKF9nZXRvcHRfaW5pdGlhbGl6ZSk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZiBfZ2V0b3B0X2ludGVybmFsLgoJIChfZ2V0b3B0X2ludGVybmFsKToKCSBJZiBsb25nX29ubHkgYW5kIHRoZSBBUkdWLWVsZW1lbnQgaGFzIHRoZSBmb3JtICItZiIsIHdoZXJlIGYgaXMKCSBhIHZhbGlkIHNob3J0IG9wdGlvbiwgZG9uJ3QgY29uc2lkZXIgaXQgYW4gYWJicmV2aWF0ZWQgZm9ybSBvZgoJIGEgbG9uZyBvcHRpb24gdGhhdCBzdGFydHMgd2l0aCBmLiAgT3RoZXJ3aXNlIHRoZXJlIHdvdWxkIGJlIG5vCgkgd2F5IHRvIGdpdmUgdGhlIC1mIHNob3J0IG9wdGlvbi4KClRodSBGZWIgMTAgMTQ6NDQ6MTYgMTk5NCAgUmljaGFyZCBTdGFsbG1hbiAgKHJtc0Btb2xlLmdudS5haS5taXQuZWR1KQoKCSogZ2V0b3B0LmMgW25vdCBfX0dOVV9MSUJSQVJZX19dIFtfX0dOVUNfX10gW25vdCBJTl9HQ0NdOgoJVGVzdCBqdXN0IF9fU1REQ19fLCBub3QgZW1hY3MuCgpXZWQgRmViICA5IDAwOjE0OjAwIDE5OTQgIFJpY2hhcmQgU3RhbGxtYW4gIChybXNAbW9sZS5nbnUuYWkubWl0LmVkdSkKCgkqIGdldG9wdC5jIFtub3QgX19HTlVfTElCUkFSWV9fXSBbX19HTlVDX19dIFtub3QgSU5fR0NDXQoJW2VtYWNzXSBbbm90IF9fU1REQ19fXTogRG9uJ3QgaW5jbHVkZSBzdGRkZWYuaC4gIERvbid0IGRlY2xhcmUgc3RybGVuLgoKRnJpIERlYyAyNCAxOTo0MzowMCAxOTkzICBOb2FoIEZyaWVkbWFuICAoZnJpZWRtYW5AbnV0cmltYXQuZ251LmFpLm1pdC5lZHUpCgoJKiBnZXRvcHQuYyAoX05PX1BST1RPKTogRGVmaW5lIGJlZm9yZSBjb25maWcuaCBpcyBpbmNsdWRlZC4KCk1vbiBTZXAgMjAgMTU6NTk6MDMgMTk5MyAgUm9sYW5kIE1jR3JhdGggIChyb2xhbmRAY2h1cmNoeS5nbnUuYWkubWl0LmVkdSkKCgkqIGdldG9wdC5jLCBnZXRvcHQxLmMgW2VtYWNzIHx8IENPTkZJR19CUk9LRVRTXTogSW5jbHVkZQoJPGNvbmZpZy5oPiBvbmx5IHVuZGVyIHRoZXNlLCBlbHNlICJjb25maWcuaCIuCgpUaHUgQXVnIDEyIDE4OjE2OjQ5IDE5OTMgIFJvbGFuZCBNY0dyYXRoICAocm9sYW5kQGNodXJjaHkuZ251LmFpLm1pdC5lZHUpCgoJKiBnZXRvcHQuYywgZ2V0b3B0MS5jIFtIQVZFX0NPTkZJR19IXTogSW5jbHVkZQoJPGNvbmZpZy5oPiBpbnN0ZWFkIG9mICJjb25maWcuaCIuCgpTdW4gRmViIDIwIDE3OjE3OjAxIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AbGlzYS5jeWdudXMuY29tKQoKCSogY29uY2F0LmM6IENoZWNrIEFOU0lfUFJPVE9UWVBFUyByYXRoZXIgdGhhbiBfX1NURENfXyB0byBkZWNpZGUKCXdoZXRoZXIgdG8gdXNlIHByb3RvdHlwZXMgb3Igbm90LgoJKiBzdHJlcnJvci5jIChjb25zdCk6IE5ldmVyIHVuZGVmaW5lOyBsZXQgYW5zaWRlY2wuaCBoYW5kbGUgaXQuCgkqIHN0cnNpZ25hbC5jIChjb25zdCk6IExpa2V3aXNlLgoKVGh1IEZlYiAxNyAxMzoyNzozNSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiB4YXRleGl0LmMgKF94ZXhpdF9jbGVhbnVwKTogRGVjbGFyZSBhcyBleHRlcm47IGRvbid0IGluaXRpYWxpemUuCglNZXJnaW5nIGNvbW1vbiBhbmQgaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG5lZWQgbm90IGJlIHN1cHBvcnRlZCBieQoJQU5TSSBDIGNvbXBpbGVycy4KCSh4YXRleGl0KTogSW5pdGlhbGl6ZSBfeGV4aXRfY2xlYW51cCBpZiBub3QgYWxyZWFkeSBzZXQuCgkqIHhleGl0LmM6IENvbW1lbnQgZml4LgoKV2VkIEZlYiAxNiAwMToxNTozNiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiB4bWFsbG9jLmM6IERvbid0IGRlY2xhcmUgeGV4aXQ7IGl0J3MgZGVjbGFyZWQgaW4gbGliaWJlcnR5LmguCgkoeHJlYWxsb2MpOiBJZiBvbGRtZW0gaXMgTlVMTCwgYWxsb2NhdGUgd2l0aCBtYWxsb2MsIHJhdGhlciB0aGFuCglhc3N1bWluZyB0aGF0IHJlYWxsb2Mgd29ya3MgY29ycmVjdGx5LgoKVHVlIEZlYiAxNSAwOToyNjoxNiAxOTk0ICBQZXRlciBTY2hhdWVyICAocGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGUpCgoJKiBjb25jYXQuYywgaWVlZS1mbG9hdC5jOiAgUmVwbGFjZSBpbmNsdXNpb24gb2YgPHN0cmluZy5oPgoJd2l0aCBleHBsaWNpdCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsIGFzIHJlY29tbWVuZGVkIGJ5IElhbiBUYXlsb3IuCgpTYXQgRmViIDEyIDEwOjMxOjExIDE5OTQgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUBydGwuY3lnbnVzLmNvbSkKCgkqIHhtYWxsb2MuYyAoeG1hbGxvYywgeHJlYWxsb2MpOiBVc2UgUFRSIGFuZCBzaXplX3QgdGhyb3VnaG91dC4KCShtYWxsb2MsIHJlYWxsb2MpOiBEZWNsYXJlLgoKVGh1IEZlYiAxMCAxNzowODoxOSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBhcmd2LmMsIGJhc2VuYW1lLmM6IEluY2x1ZGUgYW5zaWRlY2wuaCBhbmQgbGliaWJlcnR5LmguCgkqIGNvbmNhdC5jLCBmZG1hdGNoLmMsIGdldHJ1bnRpbWUuYywgc3BhY2VzLmM6IExpa2V3aXNlLgoJKiBzdHJlcnJvci5jLCBzdHJzaWduYWwuYywgeGF0ZXhpdC5jLCB4ZXhpdC5jOiBMaWtld2lzZS4KCSogeG1hbGxvYy5jOiBMaWtld2lzZS4KCSogY29uY2F0LmM6IERvbid0IGRlY2xhcmUgeG1hbGxvYy4gIElmIF9fU1REQ19fLCB1c2UgPHN0ZGFyZy5oPgoJbWFjcm9zLCBub3QgPHZhcmFyZ3MuaD4gbWFjcm9zLgoJKiBzcGFjZXMuYyAoc3BhY2VzKTogTWFrZSByZXR1cm4gdHlwZSBjb25zdC4gIERvbid0IGNyYXNoIGlmCgltYWxsb2MgcmV0dXJucyBOVUxMLgoJKiBzdHJlcnJvci5jIChzdHJ1Y3QgZXJyb3JfaW5mbyk6IE1ha2UgbmFtZSBhbmQgbXNnIGZpZWxkcyBjb25zdC4KCShlcnJvcl9uYW1lcyk6IE1ha2UgY29uc3QuCgkoc3RyZXJybm8pOiBNYWtlIGNvbnN0LgoJKHN0cnRvZXJybm8pOiBNYWtlIGFyZ3VtZW50IGNvbnN0LgoJKiBzdHJzaWduYWwuYyAoc3RydWN0IHNpZ25hbF9pbmZvKTogTWFrZSBuYW1lIGFuZCBtc2cgZmllbGRzCgljb25zdC4KCShzaWduYWxfbmFtZXMsIHN5c19zaWdsaXN0KTogTWFrZSBjb25zdC4KCShzdHJzaWduYWwsIHN0cnNpZ25vKTogTWFrZSBjb25zdC4KCShzdHJ0b3NpZ25vKTogTWFrZSBhcmd1bWVudCBjb25zdC4KCSogeGF0ZXhpdC5jOiBEZWNsYXJlIHBhcmFtZXRlciB0eXBlcy4KCSogeG1hbGxvYy5jIChuYW1lKTogTWFrZSBjb25zdC4KCSh4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUpOiBNYWtlIGFyZ3VtZW50IGNvbnN0LgoJKiBNYWtlZmlsZS5pbiAoSU5DRElSKTogRGVmaW5lLgoJKC5jLm8pOiBVc2UgJChJTkNESVIpLgoJKGR1bW15Lm8pOiBMaWtld2lzZS4KCShhcmd2Lm8sIGJhc2VuYW1lLm8pOiBOZXcgdGFyZ2V0czsgZGVwZW5kIG9uIGxpYmliZXJ0eS5oLgoJKGNvbmNhdC5vLCBmZG1hdGNoLm8sIGdldHJ1bnRpbWUubywgc3BhY2VzLm8pOiBMaWtld2lzZS4KCShzdHJlcnJvci5vLCBzdHJzaWduYWwubywgeGF0ZXhpdC5vLCB4ZXhpdC5vKTogTGlrZXdpc2UuCgkoeG1hbGxvYy5vKTogTGlrZXdpc2UuCgkoY3BsdXMtZGVtLm8pOiBOZXcgdGFyZ2V0OyBkZXBlbmQgb24gZGVtYW5nbGUuaC4KCShnZXRvcHQubywgZ2V0b3B0MS5vKTogTmV3IHRhcmdldHM7IGRlcGVuZCBvbiBnZXRvcHQuaC4KCShpZWVlLWZsb2F0Lm8pOiBOZXcgdGFyZ2V0OyBkZXBlbmQgb24gaWVlZS1mbG9hdC5oLgoJKG9ic3RhY2subyk6IE5ldyB0YXJnZXQ7IGRlcGVuZCBvbiBvYnN0YWNrLmguCgpUdWUgRmViICA4IDA1OjI5OjA4IDE5OTQgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCglIYW5kbGUgb2JzdGFja19jaHVua19hbGxvYyByZXR1cm5pbmcgTlVMTC4gIFRoaXMgYWxsb3dzCglvYnN0YWNrcyB0byBiZSB1c2VkIGJ5IGxpYnJhcmllcywgd2l0aG91dCBmb3JjaW5nIHRoZW0KCXRvIGNhbGwgZXhpdCBvciBsb25nam1wLgoJKiBvYnN0YWNrLmMgKF9vYnN0YWNrX2JlZ2luLCBfb2JzdGFja19iZWdpbl8xLCBfb2JzdGFja19uZXdjaHVuayk6CglJZiBDQUxMX0NIVU5LRlVOIHJldHVybnMgTlVMTCwgc2V0IGFsbG9jX2ZhaWxlZCwgZWxzZSBjbGVhciBpdC4KCShfb2JzdGFja19iZWdpbiwgX29ic3RhY2tfYmVnaW5fMSk6IFJldHVybiAxIGlmIHN1Y2Nlc3NmdWwsIDAgaWYgbm90LgoKVHVlIEZlYiAgOCAwMDozMjoyOCAxOTk0ICBQZXRlciBTY2hhdWVyICAocGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGUpCgoJKiBjb25jYXQuYywgaWVlZS1mbG9hdC5jOiAgSW5jbHVkZSA8c3RyaW5nLmg+LgoKU3VuIEZlYiAgNiAyMToyODo0NiAxOTk0ICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJKiB4bWFsbG9jLmMgKHhtYWxsb2Nfc2V0X3Byb2dyYW1fbmFtZSk6IE5ldyBmdW5jdGlvbi4KCSh4bWFsbG9jLCB4cmVhbGxvYyk6IEluY2x1ZGUgdGhlIG5hbWUgaW4gdGhlIGVycm9yIG1lc3NhZ2UsIGlmIHNldC4KCgkqIFJlcGxhY2UgYXRleGl0LmMgd2l0aCB4YXRleGl0LmMuCgkqIE1ha2VmaWxlLmluIChDRklMRVMpLCBmdW5jdGlvbnMuZGVmOiBDaGFuZ2UgcmVmZXJlbmNlcy4KClNhdCBGZWIgIDUgMTQ6MDI6MzIgMTk5NCAgU3RhbiBTaGVicyAgKHNoZWJzQGFuZHJvcy5jeWdudXMuY29tKQoKCSogZ2V0cnVudGltZS5jIChnZXRfcnVuX3RpbWUpOiBVc2UgZ2V0cnVzYWdlIG9yIHRpbWVzIGlmCglIQVZFX0dFVFJVU0FHRSBvciBIQVZFX1RJTUVTIGFyZSBkZWZpbmVkLgoKRnJpIEZlYiAgNCAxNTo0OTozOCAxOTk0ICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJKiBhdGV4aXQuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChDRklMRVMpLCBmdW5jdGlvbnMuZGVmOiBBZGQgaXQuCgkqIHhleGl0LmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTLCBSRVFVSVJFRF9PRklMRVMpOiBBZGQgaXQuCgkqIHhtYWxsb2MuYyAoeG1hbGxvYywgeHJlYWxsb2MpOiBDYWxsIHhleGl0IGluc3RlYWQgb2YgZXhpdC4KCUNoYW5nZSByZXF1ZXN0IGZvciAwIGJ5dGVzIGludG8gcmVxdWVzdCBmb3IgMSBieXRlLgoKV2VkIEZlYiAgMiAxMTozNjo0OSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiB4bWFsbG9jLmMgKHhtYWxsb2MsIHhyZWFsbG9jKTogUHJpbnQgc2l6ZSB1c2luZyAlbHUsIGFuZCBjYXN0IHRvCgl1bnNpZ25lZCBsb25nLCB0byBhdm9pZCB3YXJuaW5ncy4KCkZyaSBKYW4gMjggMTc6NDk6MDYgMTk5NCAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN1am8uY3lnbnVzLmNvbSkKCgkqIGR1bW15LmM6IERvbid0IGluY2x1ZGUgdGltZS5oIGV2ZXI7IGFsd2F5cyBkZWZpbmUgY2xvY2tfdCBhcwoJInVuc2lnbmVkIGxvbmciLiAgVW50aWwgZ2NjL2ZpeGluY2x1ZGVzIGVuc3VyZXMgdGhhdCBjbG9ja190CglleGlzdHMsIF9fU1REQ19fIGlzbid0IGEgc3VmZmljaWVudCB0ZXN0LiAgQW5kIGlmIGNsb2NrKCkgZG9lc24ndAoJZXhpc3QsIGNsb2NrX3QgcHJvYmFibHkgZG9lc24ndCBlaXRoZXIuCgpNb24gSmFuIDI0IDExOjUyOjMxIDE5OTQgIFN0YW4gU2hlYnMgIChzaGVic0BhbmRyb3MuY3lnbnVzLmNvbSkKCgkqIGNsb2NrLmMsIGdldHJ1bnRpbWUuYzogTmV3IGZpbGVzLgoJKiBNYWtlZmlsZS5pbjogQWRkIHRvIGZpbGUgbGlzdHMuCgkqIGZ1bmN0aW9ucy5kZWYgKGNsb2NrKTogQWRkIHRvIGxpc3QuCgkqIGR1bW15LmMgKHRpbWUuaCk6IEFkZCBpZiBfX1NURENfXy4KCShjbG9ja190KTogI2RlZmluZSBhcyAidW5zaWduZWQgbG9uZyIgaWYgbm90IF9fU1REQ19fLgoKVHVlIEphbiAxMSAxMToyNzo0NCAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBzdHJ0b2QuYzogRGVjbGFyZSBhdG9mLiAgRnJvbSBlZGxlckBqYW4udWx0cmEubnl1LmVkdSAoSmFuCglFZGxlcikuCgpUdWUgRGVjIDI4IDE0OjE3OjMwIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChlcnJvcnMpOiBVc2UgQ0ZMQUdTIGFzIHdlbGwgYXMgTERGTEFHUyB3aGVuCglsaW5raW5nLgoKRnJpIERlYyAxNyAxMjoyNjowNyAxOTkzICBLdW5nIEhzdSAgKGt1bmdAY2lyZGFuLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfYXJtX3B0KTogTmV3IGZ1bmN0aW9uLiAgQ29tbW9uIGNvZGUKCWZvciBBUk0gdGVtcGxhdGUgZGVtYW5nbGluZy4KCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2NsYXNzX25hbWUpOiBVc2UgZGVtYW5nbGVfYXJtX3B0LgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfcHJlZml4KTogTGlrZXdpc2UuCgpUdWUgTm92IDMwIDE1OjQ3OjQ4IDE5OTMgIEphc29uIE1lcnJpbGwgIChqYXNvbkBkZW5lYi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IEFkZCBDT05TVCB0byBwbGVhc2UgZ2NjLgoKU2F0IE5vdiAyNyAxMTowNTo1MCAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCglNZXJnZSBjaGFuZ2VzIGZyb20gdG9tQGJhc2lsLmljY2UucnVnLm5sIChUb20gUi5IYWdlbWFuKQoJKiBzdHJlcnJvci5jLCBzdHJzaWduYWwuYzogIEFzIGEgc21hbGwgc3BhY2Ugb3B0aW1pemF0aW9uLCBkb24ndAoJaW5jbHVkZSBtZXNzYWdlcyB3aGVuIHRoZXkgYXJlbid0IGFjdHVhbGx5IHVzZWQuCgoJTWVyZ2UgY2hhbmdlcyBmcm9tIHRha2VmaXZlLmNvLmF0IWpvZSAoSm9zZWYgTGVoZXJiYXVlcikKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3ByZWZpeCwgZGVtYW5nbGVfZnVuY3Rpb25fbmFtZSwKCWNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6ICBGaXhlcyBmb3Igc3lzdGVtcyB3aGVyZSBjcGx1c19tYXJrZXIKCWlzIHNvbWV0aGluZyBvdGhlciB0aGFuICckJy4KCkZyaSBOb3YgMjYgMTM6NTE6MTEgMTk5MyAgUGVyIEJvdGhuZXIgIChib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20pCgoJKiB3YWl0cGlkLmM6ICBTaW1wbGUtbWluZGVkIGFwcHJvY2ltYXRpb24gdG8gd2FpdHBpZAoJdXNpbmcgdmFuaWxsYSB3YWl0LgoJKiBmdW5jdGlvbnMuZGVmLCBNYWtlZmlsZS5pbjogIFVwZGF0ZSBhY2NvcmRpbmdseSwKClRodSBOb3YgMTggMTg6MDE6MTUgMTk5MyAgS3VuZyBIc3UgIChrdW5nQGNpcmRhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMoZGVtYW5nbGVfdGVtcGxhdGUpOiBmaXggYnVnIHRlbXBsYXRlIGluc3RhbnRpYXRpb24KCXdpdGggdmFsdWUgb2YgdXNlciBkZWZpbmVkIHR5cGUuCgpXZWQgTm92IDE3IDE4OjMwOjIxIDE5OTMgIEt1bmcgSHN1ICAoa3VuZ0BjaXJkYW4uY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IGFkZCB0aGUgc3ViamVjdCBuZXcgZnVuY3Rpb24KCXRvIHN1cHBvcnQgdW5pZmllZCBzZWFyY2ggb2Ygb3BlcmF0b3IgaW4gY2xhc3MuCgpXZWQgTm92IDEwIDA5OjQ3OjIyIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCWdjYyAtV2FsbCBsaW50OgoJKiBzdHJ0b3VsLmMgKHN0cnRvdWwpOiB1c2UgIihkaWdpdCA9ICpzKSAhPSAnXDAnIiBub3QganVzdAoJImRpZ2l0ID0gKnMiIGFzIGNvbmRpdGlvbiBpbiB3aGlsZSBsb29wLgoKVHVlIE5vdiAgOSAxNTo1MjoyMiAxOTkzICBNYXJrIEVpY2hpbiAgKGVpY2hpbkBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IHBhc3MgU0hFTEwgdG8gcmVjdXJzaXZlIG1ha2UKClRodSBOb3YgIDQgMTI6MDk6MjYgMTk5MyAgUGVyIEJvdGhuZXIgIChib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20pCgoJKiB2ZnByaW50Zi5jLCB2cHJpbnRmLmMsIHZzcHJpbnRmLmM6ICBNYWtlIGZvcm1hdCBhcmcKCWJlIChjb25zdCBjaGFyKiksIGZvciBBTlNJIChhbmQgZ2NjIHcvZml4cHJvdG8pIGNvbnNpc3RlbmN5LgoKVGh1IE5vdiAgNCAwODoyOTowNCAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy50YWJsZTogTWFrZSAqLSotaGl1eCogdXNlIG1oLWhwdXguCgpGcmkgT2N0IDIyIDA3OjUzOjE1IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogY29uZmlnLnRhYmxlOiBBZGQgKiB0byBlbmQgb2YgYWxsIE9TIG5hbWVzLgoKVHVlIE9jdCAxOSAxNzoxMjowMSAxOTkzICBkYXZpZCBkIGB6b28nIHp1aG4gICh6b29AcnRsLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAobG5lZWRlZC1saXN0KTogZW5zdXJlIHRoYXQgb2JqZWN0IGZpbGUgbmFtZXMgYXJlCgkgIG5vdCBkdXBsaWNhdGVkLCBhcyBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgb2JqZWN0IGZpbGUgaW4KCSAgYSBsaWJyYXJ5IGNhdXNlcyBwcm9ibGVtcyBvbiBzb21lIG1hY2hpbmVzCgpNb24gT2N0IDE4IDIxOjU5OjI4IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogc3RyY2FzZWNtcC5jLCBzdHJuY2FzZWNtcC5jOiBDaGFuZ2UgdV9jaGFyIHRvIHVuc2lnbmVkIGNoYXIuCgpGcmkgT2N0IDE1IDIyOjE3OjExIDE5OTMgIGRhdmlkIGQgYHpvbycgenVobiAgKHpvb0BydGwuY3lnbnVzLmNvbSkKCgkqIHN0cm5jYXNlY21wLmM6IG5ldyBmaWxlLCBpbXBsZW1lbnRzIHN0cm5jYXNlY21wCgkqIHN0cmNhc2VjbXAuYzogbmV3IGZpbGUsIGltcGxlbWVudCBzdHJjYXNlY21wCgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogbGlzdCB0aGVzZSB0d28gbmV3IHNvdXJjZSBmaWxlcwoKCSogZnVuY3Rpb25zLmRlZjogYWRkIHN0cmNhc2VjbXAgYW5kIHN0cm5jYXNlY21wIGVudHJpZXMKCkZyaSBPY3QgMTUgMTQ6NTM6MDUgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogc3RydG91bC5jIChzdHJ0b3VsKSwgc3RydG9sLmMgKHN0cnRvbCk6IEhhbmRsZSBvdmVyZmxvdwoJYWNjb3JkaW5nIHRvIEFOU0kgQy4KClRodSBPY3QgMTQgMTY6MzQ6MTkgMTk5MyAgS3VuZyBIc3UgIChrdW5nQGNpcmRhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmM6IGFkZCBzdXBwb3J0IG9mIEFSTSBnbG9iYWwgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciwKCWFuZCAnRycgZm9yIHBhc3NpbmcgcmVjb3JkIG9yIHVuaW9uIGluIHBhcmFtZXRlci4KCldlZCBPY3QgMTMgMTM6MzY6MTkgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogRml4IGNvbW1lbnQgdG8gY2xhcmlmeSB0aGF0IHN0dWZmIGluIFJFUVVJUkVEX09GSUxFUwoJc2hvdWxkIG5vdCBiZSBpbiBmdW5jdGlvbnMuZGVmLgoKV2VkIE9jdCAxMyAxMzoxMzozOCAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBmdW5jdGlvbnMuZGVmOiBSZW1vdmVkIHhtYWxsb2MuICBTdHVmZiBpbiBSRVFVSVJFRF9PRklMRVMgc2hvdWxkCglub3QgYmUgaW4gZnVuY3Rpb25zLmRlZi4KCk1vbiBPY3QgIDQgMTg6MjY6MzkgMTk5MyAgS3VuZyBIc3UgIChrdW5nQGNpcmRhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmM6IGNoYW5nZSBnbG9ibCBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIHRvIHByb3BlciBuYW1lCgpUdWUgU2VwIDI4IDE4OjExOjA3IDE5OTMgIEt1bmcgSHN1ICAoa3VuZ0BjaXJkYW4uY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jOiBmaXggYnVnIGluIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IKClR1ZSBTZXAgMjggMTY6MjA6NDkgMTk5MyAgS3VuZyBIc3UgIChrdW5nQGNpcmRhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmM6IHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyBfdnQkLi4uIHZ0YmwgbWFuZ2xlZCBuYW1lcwoKRnJpIFNlcCAyNCAxOTowNzoxNiAxOTkzICBKYXNvbiBNZXJyaWxsICAoamFzb25AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jOiBGaXggZGVtYW5nbGVfdGVtcGxhdGUgcHJvdG90eXBlCgpGcmkgU2VwIDI0IDE3OjMyOjU1IDE5OTMgIEt1bmcgSHN1ICAoa3VuZ0BjaXJkYW4uY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jOiBmaXggdGVtcGxhdGUgZGVtYW5nbGluZwoJKiBjcGx1cy1kZW0uYzogZml4IGNvbnN0IHR5cGUgZGVtYW5nbGluZwoJKiBjcGx1cy1kZW0uYzogZml4IGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IsIHZpcnR1YWwgdGFibGUsCglxdWFsaWZpZXIsIGdsb2JhbCBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIGRlbWFuZ2xpbmcKCldlZCBTZXAgIDEgMjM6MTM6MTEgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBzdHJzaWduYWwuYywgc3RyZXJyb3IuYzogVXNlIGZ1bGx5LWJyYWNrZXRlZCBpbml0aWFsaXplciB0bwoJa2VlcCBnY2MgLVdhbGwgaGFwcHkuCgpGcmkgQXVnIDI3IDEwOjMwOjA5IDE5OTMgIEphc29uIE1lcnJpbGwgIChqYXNvbkBkZW5lYi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRvX3R5cGUpOiBBZGQgQ09OU1RTIHRvIG1ha2UgZ2NjIGhhcHB5IHdpdGggbGFzdAoJcGF0Y2guCgpGcmkgQXVnIDI3IDExOjI0OjU0IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCVBhdGNoIGZyb20gUGF1bCBGbGluZGVyczoKCSogY3BsdXMtZGVtLmMgKGRvX3R5cGUpOiBEZWFsIHdpdGggYXJyYXlzLgoKVHVlIEF1ZyAyNCAxNDoyMzo1MCAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9xdWFsaWZpZWQ6IERlYWwgd2l0aCBHTlUgZm9ybWF0IGZvciBtb3JlCgl0aGFuIDkgY2xhc3Nlcy4KCldlZCBBdWcgMTggMTk6NTA6MjkgMTk5MyAgSmFzb24gTWVycmlsbCAgKGphc29uQGRlbmViLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoZHVtbXkubyk6IFJlZGlyZWN0IHRvIC9kZXYvbnVsbCB0byBhdm9pZCAidmFyaWFibGUKCW5vdCBpbml0aWFsaXplZCIgd2FybmluZ3MgdW5kZXIgSFAvVVgKClN1biBBdWcgMTUgMjA6NDI6NDAgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBzdHJlcnJvci5jOiBNb3ZlIGluY2x1ZGUgb2Ygc3RkaW8uaCBhZnRlciBzeXNfZXJybGlzdCAjZGVmaW5lLgoJQWxzbyByZW1vdmUgTlVMTCBkZWZpbml0aW9uIChzdGRpby5oIGFsd2F5cyBkZWZpbmVzIE5VTEwsIHNvIGl0CgluZXZlciBkaWQgYW55dGhpbmcgYnV0IGNsdXR0ZXIgdXAgdGhlIGNvZGUpLgoKU2F0IEF1ZyAxNCAxNDoyMTo0OSAxOTkzICBkYXZpZCBkIGB6b28nIHp1aG4gICh6b29AcnRsLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiwgZnVuY3Rpb25zLmRlZjogaGFuZGxlIHhtYWxsb2MuYwoKCSogeG1hbGxvYy5jOiBwcm92aWRlIHhtYWxsb2MgYW5kIHhyZWFsbG9jIGZ1bmN0aW9ucwoKVGh1IEF1ZyAxMiAxNzozODo1NyAxOTkzICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogRml4IGEgY29tbWVudC4KClNhdCBBdWcgIDcgMTM6NTY6MzUgMTk5MyAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogZ2V0b3B0MS5jOiBEZWNsYXJlIGNvbnN0IHRoZSB3YXkgZ2V0b3B0LmMgZG9lcy4KCkZyaSBBdWcgIDYgMTc6MDM6MTMgMTk5MyAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogb2JzdGFjay5jLCBhbGxvY2EuYzogVXBkYXRlIGZyb20gRlNGLgoJKiBnZXRvcHQuYywgZ2V0b3B0MS5jOiBVcGRhdGUgdG8gY3VycmVudCBGU0YgdmVyc2lvbiwgd2hpY2gKCWRvZXNuJ3QgdXNlIGFsbG9jYS4KClR1ZSBKdWwgMjcgMTQ6MDM6NTcgMTk5MyAgQnJlbmRhbiBLZWhvZSAgKGJyZW5kYW5AbGlzYS5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGRlbWFuZ2xlKTogQWRkIHRoZSB0YXJnZXQgd2l0aCBhIG1lc3NhZ2Ugc2F5aW5nCgl3aGVyZSBkZW1hbmdsZSB3ZW50LgoKTW9uIEp1bCAyNiAxNTo0OTo1NCAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgb2Jzb2xldGUgYGRlbWFuZ2xlJyB0YXJnZXQuCgpUaHUgSnVsIDIyIDA4OjMxOjAxIDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBkZW5lYi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGFybV9zcGVjaWFsKTogIEFwcGx5IHBhdGNoIGZyb20gYXJnQGx1Y2lkLmNvbSB0bwoJYXZvaWQgaW5maW5pdGUgbG9vcCBvbiB2dGJsIHN5bWJvbHMgd2l0aCBkaXNhbWJpZ3VhdGluZyAianVuayIKCXRhY2tlZCBvbiB0aGUgZW5kLgoKTW9uIEp1bCAxOSAxNDoxMDozNyAxOTkzICBkYXZpZCBkIGB6b28nIHp1aG4gICh6b29AcnRsLmN5Z251cy5jb20pCgoJKiBzdHJzaWduYWwuYzogd29yayBhcm91bmQgc29tZSBzeXN0ZW1zIGxvc2luZyBkZWZpbml0aW9ucyBvZgoJc3lzX3NpZ2xpc3QKCgkqIGNvbmZpZy9taC1seW54b3M6IHRoaXMgc3lzdGVtIGhhcyBhIGxvc2luZyBkZWZpbml0aW9uIG9mCglzeXNfc2lnbGlzdAoKCSogY29uZmlnLnRhYmxlOiB1c2UgbWgtbHlueG9zIGZvciAqLSotbHlueG9zCgpNb24gSnVsIDE5IDE3OjA4OjUyIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBydGwuY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy50YWJsZTogQWRkIHN1cHBvcnQgZm9yIEhQUEEgQlNEIGhvc3RzLgoKCSogY29uZmlnL21oLWhwYnNkOiBOZXcgZmlsZS4KCk1vbiBKdWwgMTIgMTg6MDA6NDAgMTk5MyAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoVEFHUyk6IG1ha2Ugd29yayB3aGVuIHNyY2RpciAhPSBvYmpkaXIuCgpTdW4gSnVuIDI3IDE1OjM1OjMxIDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChtYWluKTogQWRkIGxvbmcgb3B0aW9ucywgaW5jbHVkaW5nIC0taGVscCBhbmQKCS0tdmVyc2lvbi4KCSh1c2FnZSk6IE5ldyBmdW5jdGlvbiBmcm9tIGNvZGUgaW4gbWFpbi4KClR1ZSBKdW4gMjIgMTE6Mzc6MzggMTk5MyAgUGVyIEJvdGhuZXIgIChib3RobmVyQGRlbmViLmN5Z251cy5jb20pCgoJKiBjb25maWcudGFibGU6ICBOZXcgc2hlbGwgc2NpcHQsIHNvdXJjZWQgYnkgYm90aCAuL2NvbmZpZ3VyZSxpbgoJYW5kIC4uL3hpYmVydHkvY29uZmlndXJlLmluLCB0byBhdm9pZCBtYWludGFpbmFuY2UgbG9zc2FnZXMuCgkqIGNvbmZpZ3VyZS5pbiBhbmQgLi4veGliZXJ0eS9jb25maWd1cmUuaW46ICBVc2UgY29uZmlnLnRhYmxlLgoKCSogY29uZmlndXJlLmluOiBEb24ndCB1c2UgbWgtYWl4IGZvciBBSVggMy4yLCBvbmx5IGZvciAzLjEuCgkqIGNvbmZpZ3VyZS5pbjogTWFwICotKi1pcml4KiAoZXhjZXB0IGlyaXg0KSB0byBtaC1zeXN2LgoJKiAuLi94aWJlcnR5L2NvbmZpZ3VyZS5pbjogIFVwZGF0ZSBmcm9tIC4vY29uZmlndXJlLmluLgoKVHVlIEp1biAxNSAxNzowNTozMSAxOTkzICBkYXZpZCBkIGB6b28nIHp1aG4gICh6b28gYXQgY2lyZGFuLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogcmVtb3ZlIHBhcmVudGRpciBzdXBwb3J0CgpXZWQgTWF5IDI2IDEyOjU5OjA5IDE5OTMgIFBldGVyIFNjaGF1ZXIgIChwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZSkKCgkqIGNwbHVzLWRlbS5jICh4cmVhbGxvYyk6ICBNYXRjaCBkZWZpbml0aW9uIHdpdGggcHJvdG90eXBlLgoKVHVlIE1heSAyNSAxNDoyNzo1MSAxOTkzICBQZXRlciBTY2hhdWVyICAocGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGUpCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfcHJlZml4KTogIERlbWFuZ2xlIGNmcm9udAoJbG9jYWwgdmFyaWFibGVzIGFzIGFuIGV4dGVuc2lvbiB0byBBUk0gZGVtYW5nbGluZy4KCkZyaSBNYXkgMjEgMDk6NTM6NTcgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBpZWVlLWZsb2F0LmM6IERvbid0IHJlcXVpcmUgcG9pbnRlcnMgdG8gZG91YmxlIHRvIGJlIGFsaWduZWQuCgpUdWUgTWF5IDE4IDE3OjEyOjEwIDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCShtZXJnZSBjaGFuZ2VzIGZyb20gZGxvbmdAY3NlLnVjc2MuZWR1KQoJKiBjcGx1cy1kZW0uYyAoY29uc3VtZV9jb3VudCk6ICBTaW1wbGlmeS4KCSogY3BsdXMtZGVtLmMgKGFybV9wdCwgZGVtYW5nbGVfY2xhc3NfbmFtZSk6ICBOZXcgZnVuY3Rpb25zLgoJKiBjcGx1cy1kZW0uYyAodmFyaW91cyk6ICBDYWxscyB0byBhcm1fcHQsIGRlbWFuZ2xlX2NsYXNzX25hbWUuCgoJKiBjcGx1cy1kZW0uYyAoeG1hbGxvYywgeHJlYWxsb2MsIHN0cnN0cik6ICBNYWtlIGV4dGVybiBkZWNscyBpbnRvCglmdWxsIHByb3RvdHlwZXMuCgkqIGNwbHVzLWRlbS5jIChmcmVlKTogIEFkZCBwcm90b3R5cGUuCgkqIGNwbHVzLWRlbS5jIChvcHRhYmxlKTogIEZ1bGx5IGJyYWNrZXRpemUgaW5pdGlhbGl6ZXIuCgpGcmkgTWF5IDE0IDE3OjEzOjA1IDE5OTMgIFBlciBCb3RobmVyICAoYm90aG5lckBjeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmM6ICBXaGV0aGVyIGluaXRpYWwgdW5kZXJzY29yZXMgYXJlIHN0cmlwcGVkCglkZXBlbmRzIG9uIHRoZSBleHRlcm5hbCB2YXJpYWJsZSBwcmVwZW5kc191bmRlcnNjb3JlCgkod2hpY2ggaXMgZ2VuZXJhdGVkIGJ5IHRoZSBiaW51dGlscyBNYWtlZmlsZSkuCgpGcmkgTWF5IDE0IDA3OjMyOjIwIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBkZW5lYi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKG1vcF91cCwgYXJtX3NwZWNpYWwpOiBSZW1vdmUgc29tZSB1bnVzZWQgdmFyaWFibGVzLgoKVHVlIE1heSAgNCAyMDozMTo1OSAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChjb25zdW1lX2NvdW50KTogIFJldHVybiB6ZXJvIGlmIGFyZyBkb2VzIG5vdAoJc3RhcnQgd2l0aCBkaWdpdCwgYW5kIGRvbid0IGNvbnN1bWUgYW55IGlucHV0LgoKVHVlIE1heSAgNCAwODoxMDoyOCAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChkZW1hbmdsZSk6IFVzZSAke3NyY2Rpcn0gbm90ICReLgoKCSogc3RydG9kLmM6IE5ldyBmaWxlLCBuZWVkZWQgYXQgbGVhc3QgZm9yIEJTRCA0LjMuCgpTdW4gTWF5ICAyIDExOjMwOjQyIDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogc3Ryc2lnbmFsLmMgKHN5c19zaWdsaXN0KTogIEZvciBBTlNJIGNvbXBpbGF0aW9ucywgdHlwZSBpcwoJImNvbnN0IGNoYXIgKmNvbnN0Ii4gIEFsc28gcmVtb3ZlIGNvbmRpdGlvbmFsaXphdGlvbiBvbiBfX1NURENfXwoJc2luY2UgY29uc3QgaXMgZGVmaW5lZCBhd2F5IGZvciBub24tQU5TSS4KCldlZCBBcHIgMjggMTk6Mjk6NTUgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGRlbmViLmN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW46IFJlY29nbml6ZSAqLSotaHB1eC4KCSogY29uZmlnL21oLWhwdXg6IE5ldyBmaWxlLgoKVHVlIEFwciAyNyAxNToyMjoxOSAxOTkzICBQZXIgQm90aG5lciAgKGJvdGhuZXJAY3lnbnVzLmNvbSkKCgkqIHRtcG5hbS5jOiAgQWRkZWQgQU5TSSB0bXBuYW0oKSBmdW5jdGlvbi4KCSogZnVuY3Rpb25zLmRlZiwgTWFrZWZpbGUuaW46ICBVcGRhdGUgYWNjb3JkaW5nbHkuCgpUdWUgQXByIDI3IDEzOjM4OjM4IDE5OTMgIFBldGVyIFNjaGF1ZXIgIChwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9mdW5jdGlvbl9uYW1lKTogR2V0IHRoZSBkZW1hbmdsaW5nIG9mCglzdG9wX18xQSByaWdodC4KCkZyaSBBcHIgMTYgMjM6NDg6MjQgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uIGF0IGNhbHZpbikKCgkqIGNwbHVzLWRlbS5jOiBEZWNsYXJlIHN0cnN0ciByZXR1cm4gdHlwZS4KCkZyaSBNYXIgMjYgMTI6MDE6MjYgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBzdHJzaWduYWwuYzogQWRkIHNvbWUgQUlYIHNpZ25hbHMuCgpUaHUgTWFyIDI1IDE1OjE3OjIzIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChNQUtFT1ZFUlJJREVTKTogRGVmaW5lIHRvIGJlIGVtcHR5LgoKV2VkIE1hciAyNCAwMTo1OToyNSAxOTkzICBkYXZpZCBkIGB6b28nIHp1aG4gICh6b28gYXQgcG9zZWlkb24uY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBhZGQgaW5zdGFsbGNoZWNrICYgZHZpIHRhcmdldHMKClRodSBNYXIgMTggMTQ6MDU6NDQgMTk5MyAgUGVyIEJvdGhuZXIgIChib3RobmVyQHJ0bC5jeWdudXMuY29tKQoKCSogaWVlZS1mbG9hdC5jOiAgTmV3IGZpbGUsIG1vdmVkIGZyb20gLi4vZ2RiIChzaW5jZSBpdCBpcwoJbmVlZGVkIGJ5IC4uL29wY29kZS9tNjhrLWRpcy5jKS4KClR1ZSBNYXIgIDIgMTc6NDc6MzEgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogIFJlcGxhY2UgYWxsIHJlZmVyZW5jZXMgdG8gY2Zyb250IHdpdGggQVJNLgoKRnJpIEZlYiAyNiAwMDoxNzowNyAxOTkzICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogIEZpeCBtYWluIHByb2dyYW0gKHdoZW4gY29tcGlsZWQgd2l0aCAtRE1BSU4pCgl0byBiZSBtb3JlIHVzZWZ1bCBhcyBhIGZpbHRlci4KClNhdCBGZWIgMjAgMjE6NDE6MzkgMTk5MyAgQnJlbmRhbiBLZWhvZSAgKGJyZW5kYW5AbGlzYS5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGxfdG9fbGliZGlyLCBpbnN0YWxsX3RvX3Rvb2xkaXIpOiBHbyBpbnRvIHRoZQoJZGVzdGluYXRpb24gZGlyZWN0b3J5IGJlZm9yZSBydW5uaW5nICQoUkFOTElCKSwgaW4gY2FzZSB0aGF0Cglwcm9ncmFtIHRyaWVzIHRvIGNyZWF0ZSBhIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFzIHBhcnQgb2YKCWl0cyB3b3JrLgoKVGh1IEZlYiAxOCAyMzowMDoxOSAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIHN0cnNpZ25hbC5jIChzeXNfc2lnbGlzdCk6ICBSZW1vdmUgeWV0IGFub3RoZXIgKiVeJiUmJCMgImNvbnN0IgoJYmVjYXVzZSBCU0QgNC40IGxhY2tzIG9uZS4gIElzbid0IHRoaXMgZnVuPwoKVGh1IEZlYiAxOCAxMToyNDoyNSAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9zaWduYXR1cmUpOiAgU2V0IGZ1bmNfZG9uZSBhZnRlcgoJZGVtYW5nbGluZyBhIHRlbXBsYXRlLgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfdGVtcGxhdGUpOiAgRml4IHNldmVyYWwgc21hbGwgYnVncwoJaW4gZGVtYW5nbGluZyBHTlUgc3R5bGUgdGVtcGxhdGVzLgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfcHJlZml4KTogIEZpeCBmb3IgdGVtcGxhdGVzIGluIEdOVQoJc3R5bGUgY29uc3RydWN0b3JzLgoJKiBjcGx1cy1kZW0uYyAoZ251X3NwZWNpYWwpOiAgRml4IGZvciB0ZW1wbGF0ZXMgaW4gR05VIHN0eWxlCglzdGF0aWMgZGF0YSBtZW1iZXJzLgoKVHVlIEZlYiAxNiAxNzoyODozNSAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9zaWduYXR1cmUpOiAgTW9kaWZ5IHRvIGluY2x1ZGUgdHlwZQoJbW9kaWZpZXJzIGxpa2Ugc3RhdGljIGFuZCBjb25zdCBpbiByZW1lbWJlcmVkIHR5cGVzLgoKVGh1IEZlYiAxMSAyMjoyMDo0NyAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZWRfcXVhbGlmaWVkKTogIEFkZCBuZXcgcGFyYW1ldGVyIHRoYXQgdGVsbHMKCXdoZXRoZXIgdG8gcHJlcGVuZCBvciBhcHBlbmQgdGhlIHF1YWxpZmllcnMuCgkqIGNwbHVzLWRlbS5jIChzdHJpbmdfcHJlcGVuZHMpOiAgVXNlZCBub3csIHJlbW92ZSAjaWYgMC4KCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3NpZ25hdHVyZSk6ICBDYWxsIGRlbWFuZ2xlX3F1YWxpZmllZAoJd2l0aCBwcmVwZW5kaW5nLgoJKiBjcGx1cy1kZW0uYyAoZ251X3NwZWNpYWwpOiAgUmVjb2duaXplIHN0YXRpYyBkYXRhIG1lbWJlcnMgdGhhdAoJdXNlIHF1YWxpZmllZCBuYW1lcy4KCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3F1YWxpZmllZCk6ICBBY2N1bXVsYXRlIHF1YWxpZmllcnMgaW4gYQoJdGVtcG9yYXJ5IGJ1ZmZlciBhbmQgdGhlIHByZXBlbmQgb3IgYXBwZW5kIHRoZW0gdG8gdGhlIHJlc3VsdCwKCWFzIHNwZWNpZmllZCBieSB0aGUgbmV3ICJhcHBlbmQiIGZsYWcuCgkqIGNwbHVzLWRlbS5jIChkb190eXBlKTogIENhbGwgZGVtYW5nbGVkX3F1YWxpZmllZCB3aXRoCglhcHBlbmRpbmcuCgpNb24gRGVjIDI4IDEwOjQ3OjE5IDE5OTIgIEtlbiBSYWVidXJuICAocmFlYnVybkBjeWdudXMuY29tKQoKCSogc3Ryc2lnbmFsLmMgKHNpZ25hbF90YWJsZSk6IE5vdyBjb25zdC4KCShpbml0X3NpZ25hbF90YWJsZXMpOiBWYXJpYWJsZSBlaXAgbm93IHBvaW50cyB0byBjb25zdC4KCgkqIHN0cmVycm9yLmMgKGVycm9yX3RhYmxlKTogTm93IGNvbnN0LgoJKGluaXRfZXJyb3JfdGFibGVzKTogVmFyaWFibGUgZWlwIG5vdyBwb2ludHMgdG8gY29uc3QuCgpUdWUgRGVjIDE1IDE1OjM2OjUwIDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBjeWdudXMuY29tKQoKCSogbWVtY2hyLmMgKG1lbWNocik6ICBOZXcgKEFOU0kgc3RhbmRhcmQpIGZ1bmN0aW9uLgoJKiBNYWtlZmlsZS5pbiwgZnVuY3Rpb25zLmRlZjogIEFkZGVkIG1lbWNoci4KCSogTWFrZWZpbGUuaW4gKEFSX0ZMQUdTKTogVXNlIHJjIGluc3RhZCBvZiBub24tc3RhbmRhcmQgY3EuCgpXZWQgRGVjICAyIDIyOjQ5OjEwIDE5OTIgIGRhdmlkIGQgYHpvbycgenVobiAgKHpvbyBhdCBjaXJkYW4uY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5jOiByZW1vdmUgdXNlIG9mIFVTRyBhcm91bmQgPGFsbG9jYS5oPiwgd2hpY2ggbmV2ZXIgbWVhbnQKCWFueXRoaW5nIGFueXdheQoKCSogY29uZmlnL21oLXthaXgsYXBvbGxvNjgsbmNyMzAwMCxzeXN2LHN5c3Y0fTogcmVtb3ZlZCBkZWZpbml0aW9ucwoJb2YgVVNHIGFuZCBVU0dyNAoKVGh1IE5vdiAxOSAwMzowOTozMyAxOTkyICBCcmVuZGFuIEtlaG9lICAoYnJlbmRhbkBsaXNhLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfZnVuZF90eXBlKTogUmVjb2duaXplIGB3JywgYSB3aWRlIGNoYXJhY3RlcjsKCWl0J3Mgbm93IGEgdHlwZSBhY2NvcmRpbmcgdG8gdGhlIEFOU0kgWDNKMTYgd29ya2luZyBwYXBlcjsgb3V0cHV0Cgkid2NoYXJfdCIgZm9yIGl0LgoJKGRlbWFuZ2xlX3RlbXBsYXRlKTogQWNjZXB0IGB3JyBhcyBhbiBpbnRlZ3JhbCB0eXBlLgoJKHhtYWxsb2MsIHhyZWFsbG9jKTogVXNlIGBjaGFyIConLCBub3QgYFBUUicuICBDYXN0IGNhbGxzIHRvIHRoZWlyCgljb3VudGVycGFydHMgbWFsbG9jIGFuZCByZWFsbG9jIHRvIGBjaGFyIConLgoJKG1haW4pOiBFeGl0IHdpdGggYSAwIHN0YXR1cy4KCSogTWFrZWZpbGUuaW4gKGRlbWFuZ2xlKTogRG9uJ3QgZXhwZWN0IHRoZSB1c2VyIHRvIGRlZmluZQoJREVNQU5HTEUsIGluc3RlYWQgZm9yY2UgdG8gYmUgY3BsdXMtZGVtLmMuICBMb29rIGluICQoc3JjZGlyKS8uLi9pbmNsdWRlCglmb3IgZGVtYW5nbGUuaC4gIFBhc3MgaXQgYW55IEhERUZJTkVTIG9yIFhUUkFGTEFHUy4KCldlZCBOb3YgMTggMTg6NTY6MjAgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoQVJfRkxBR1MpOiAgQXZvaWQgdmVyYm9zaXR5LgoJKiBjb25maWcvbWgtc3lzdjQ6ICBSZW1vdmUgQVJfRkxBR1Mgb3ZlcnJpZGUsIHVzZSBJTlNUQUxMPWNwLAoJcmVwbGFjZSBVU0dyNCB3aXRoIEhBVkVfU1lTQ09ORi4KCSogY29uZmlnL21oLXNvbGFyaXM6ICBSZW1vdmU7IG1oLXN5c3Y0IHdvcmtzIG5vdy4KCSogZ2V0cGFnZXNpemUuYzogIFJlcGxhY2UgVVNHcjQgd2l0aCBIQVZFX1NZU0NPTkYuCgkqIGNvbmZpZ3VyZS5pbjogIFNpbXBsaWZ5IGhvc3QgbWF0Y2hpbmcgdGFibGUsIHJlbW92ZSBzZXBhcmF0ZQoJc29sYXJpcyBjb25maWcgZmlsZS4KClN1biBOb3YgMTUgMDk6MzU6MTYgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW4gKGlbMzRdODYtKi1zb2xhcmlzMiopOiAgQWRkLCB1c2UgbWgtc3lzdjQuCgpUdWUgTm92ICAzIDIxOjI3OjAzIDE5OTIgIEJyZW5kYW4gS2Vob2UgIChicmVuZGFuQGN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoeG1hbGxvYywgeHJlYWxsb2MpOiBBZGQgZGVjbHMuCgkocmVtZW1iZXJfdHlwZSk6IERvbid0IGNhc3QgeG1hbGxvYy4KCShzdHJpbmdfbmVlZCk6IExpa2V3aXNlOyBkb24ndCBjYXN0IHhyZWFsbG9jIGVpdGhlci4KCkZyaSBPY3QgMjMgMDg6NTI6MDEgMTk5MiAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4sIGZ1bmN0aW9ucy5kZWZzLCByZW5hbWUuYzogYWRkZWQgc2ltcGxlCglpbXBsZW1lbnRhdGlvbiBvZiByZW5hbWUsIHNpbmNlIHNvbWUgYmludXRpbHMgcHJvZ3JhbXMgdXNlIGl0LgoKVGh1IE9jdCAxNSAxNToxODoyMiAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAY3lnbnVzLmNvbSkKCgkqIHN0cnNpZ25hbC5jOiAgQWRkIGFwcHJvcHJpYXRlICdjb25zdCcgdG8gc3lzX3NpZ2xpc3QKCWV4dGVybiBkZWNsYXJhdGlvbiAoaWYgX19TVERDX18pLiAgKE5lZWRlZCBmb3IgTGludXguKQoJKiBzdHJzaWduYWwuYyAoc3Ryc2lnbmFsKTogQWRkIGNhc3QgdG8gcmVtb3ZlIGNvbnN0LW5lc3MuCgpGcmkgT2N0ICA5IDAzOjIyOjU1IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKG5lZWRlZC5hd2ssIG5lZWRlZDIuYXdrKTogIFJlbW92ZSBlcnJvbmVvdXMgXCdzCgliZWZvcmUgIidzLCBkaWFnbm9zZWQgYnkgQlNEIDQuNCBhd2suCgpUaHUgT2N0ICA4IDE1OjI1OjEyIDE5OTIgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBjcmVhdGUgY29uZmlnLmggYW5kIG5lZWRlZC1saXN0IHRocm91Z2ggJChDT05GSUdfSCkKCWFuZCAkKE5FRURFRF9MSVNUKSwgdG8gZ2l2ZSBzb21lIGhvb2tzIGZvciB4aWJlcnR5LgoKVGh1IE9jdCAgMSAyMzozMTo0MiAxOTkyICBkYXZpZCBkIGB6b28nIHp1aG4gICh6b28gYXQgY2lyZGFuLmN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW46IHVzZSBjcHUtdmVuZG9yLXRyaXBsZSBpbnN0ZWFkIG9mIG5lc3RlZCBjYXNlcwoKV2VkIFNlcCAzMCAxMToyNjo1OSAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiwgYXJndi5jLCBiYXNlbmFtZS5jLCBiY21wLmMsIGJjb3B5LmMsIGJ6ZXJvLmMsCgljb25jYXQuYywgY3BsdXMtZGVtLmMsIGZkbWF0Y2guYywgZ2V0Y3dkLmMsIGdldG9wdC5jLCBnZXRvcHQxLmMsCglnZXRwYWdlc2l6ZS5jLCBpbnNxdWUuYywgbWVtY21wLmMsIG1lbWNweS5jLCBtZW1tb3ZlLmMsIG1lbXNldC5jLAoJb2JzdGFjay5jLCBzaWdzZXRtYXNrLmMsIHNwYWNlcy5jLCBzdHJjaHIuYywgc3RyZXJyb3IuYywKCXN0cnJjaHIuYywgc3Ryc2lnbmFsLmMsIHN0cnN0ci5jLCB2Zm9yay5jLCB2c3ByaW50Zi5jOgoJQ29udmVydCBmcm9tIHVzaW5nIEdQTCB0byBMR1BMLgoKU2F0IFNlcCAyNiAwNDowMTozMCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChlcnJvcnMpOiAgTGVhdmUgZHVtbXkubyBhbmQgZHVtbXkgYXJvdW5kIHNvIHRoYXQKCXdlIGNhbiBzZWUgaG93IHRoZSBuZWVkZWQgbGlzdCB3YXMgZ2VuZXJhdGVkIChpdCdzIHNvbWV0aW1lcyB3cm9uZykuCgkobW9zdGx5Y2xlYW4pOiAgUmVtb3ZlIHRoZW0uCgpNb24gU2VwIDIxIDE0OjUwOjQyIDE5OTIgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGdldGN3ZC5jOiBzdXBwbHkgYSBkZWZhdWx0IGlmIE1BWFBBVEhMRU4gaXMgbm90IGRlZmluZWQuCgoJKiBjb25maWcvbWgtaXJpeDQ6IHNldCBFWFRSQV9PRklMRVMgdG8gYWxsb2NhLm8sIGZyb20gV1JTLgoKV2VkIFNlcCAgOSAxMjo0MTo0OCAxOTkyICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogVXNlIFhUUkFGTEFHUyB3aGVuIGNvbXBpbGluZywgc28gdGhhdCB4aWJlcnR5IHdvcmtzCgl3aGVuIGNyb3NzLWNvbXBpbGluZy4KClRodSBTZXAgIDMgMTM6Mjk6MzkgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQHNlbmRhaS5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmM6IChkZW1hbmdsZV9wcmVmaXgpOiByZWR1Y3Rpb24gaW4gc3RyZW5ndGggb2Ygc3Ryc3RyCgkgIGFzIGEgdGltZSBvcHRpbWl6YXRpb24uCgoJKiBjcGx1cy1kZW0uYyAoY3BsdXNfZGVtYW5nbGUpOiByZW1vdmUgc3RycGJyayB0ZXN0LiAgQXBwZWFycyB0bwoJICBiZSBtb3JlIGV4cGVuc2l2ZSB0aGFuIHNpbXBseSBkZW1hbmdsaW5nLgoKCSogY3BsdXMtZGVtLmMgKGNwbHVzX21hdGNoKTogbmV3IGZ1bmN0aW9uLgoKVHVlIFNlcCAgMSAxNToyNDowNCAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogICNpbmNsdWRlIDxzdGRpby5oPiwgdG8gZGVmaW5lIE5VTEwuCglEZWZpbmUgY3VycmVudF9kZW1hbmdsaW5nX3N0eWxlLgoKU3VuIEF1ZyAzMCAxNzo1ODoxOSAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogIE5ldyBmaWxlLCBtb3ZlZCBmcm9tIC4uL2dkYi4KCSogY3BsdXMtZGVtLmMgKHNldF9jcGx1c19tYXJrZXJfZm9yX2RlbWFuZ2xpbmcpOiAgTmV3IGV4cG9ydGVkCglmdW5jdGlvbiwgdG8gYXZvaWQgY29tcGlsaW5nIGluIHRhcmdldC1kZXBlbmRlbmN5IGZvciBDUExVU19NQVJLRVIuCgkqIGNwbHVzLWRlbS5jIChjcGx1c19kZW1hbmdsZSk6ICBBbGxvdyBkZW1hbmdsaW5nIHN0eWxlIG9wdGlvbgoJdG8gYmUgcGFzc2VkIGFzIGEgcGFyYW1ldGVyLCBidXQgdXNpbmcgdGhlIGdsb2JhbCB2YXJpYWJsZQoJY3VycmVudF9kZW1hbmdsaW5nX3N0eWxlIGFzIGEgZGVmYXVsdC4KCSogTWFrZWZpbGUuaW46ICBVcGRhdGUgZm9yIGNwbHVzLWRlbS5jCgpTYXQgQXVnIDI5IDEwOjQ0OjA5IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5jOiAgTWVyZ2UgaW4gY29tbWVudCBjaGFuZ2VzIGZyb20gRlNGIHZlcnNpb24uICBOb3cKCW1hdGNoZXMgdGhlIEZTRiB2ZXJzaW9uIGV4YWN0bHkuCgpGcmkgQXVnIDI4IDE4OjM5OjA4IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogb2JzdGFjay5jIChDQUxMX0ZSRUVGVU4pOiAgQ2FuJ3QgdXNlID86IHdpdGggdm9pZCB2YWx1ZXMgKGF0CglsZWFzdCBvbiBsb3NpbmcgREVDc3RhdGlvbnMhKTsgdXNlIGlmLXRoZW4tZWxzZSBpbnN0ZWFkLgoKV2VkIEF1ZyAxOSAxNDo0MDozNCAxOTkyICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogYWx3YXlzIGNyZWF0ZSBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuCgpNb24gQXVnIDEwIDE3OjMzOjQwIDE5OTIgIGRhdmlkIGQgYHpvbycgenVobiAgKHpvbyBhdCBjaXJkYW4uY3lnbnVzLmNvbSkKCiAgICAgICAqIE1ha2VmaWxlLmluOiBjbGVhbiB1cCBkZWZpbml0aW9uIG9mIENGSUxFUywgbW9yZSBjb21tZW50cwoKU2F0IEF1ZyAgOCAyMzoxMDo1OSAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5jIChteV9pbmRleCk6ICBNYWtlIGZpcnN0IGFyZyBjb25zdCB0byBtYXRjaCBzdHJjaHIsCgl3aGljaCBpdCBzb21ldGltZXMgaXMgcmVtYXBwZWQgdG8uCgpTYXQgQXVnICAxIDEzOjQ4OjUwIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5jIChERUZBVUxUX0FMSUdOTUVOVCk6ICBVcGRhdGUgdG8gbWF0Y2ggRlNGIHZlcnNpb24uCgkqIG9ic3RhY2suYyAoX29ic3RhY2tfYmVnaW4pOiAgSW5pdGlhbGl6ZSB1c2VfZXh0cmFfYXJnLgoJKiBvYnN0YWNrLmMgKF9vYnN0YWNrX2JlZ2luXzEpOiAgTmV3LCBmcm9tIEZTRiB2ZXJzaW9uLgoKTW9uIEp1bCAyMCAyMTowNzo1OCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suYyAoQ0FMTF9DSEVDS0ZVTiwgQ0FMTF9GUkVFRlVOKTogIFVzZSB1c2VfZXh0cmFfYXJnIGFuZAoJZXh0cmFfYXJnLgoJKiBvYnN0YWNrLmMgKF9vYnN0YWNrX2JlZ2luKTogIFJlbW92ZSBhcmVhX2lkIGFuZCBmbGFncyBhcmd1bWVudHMKCShwcmV2aW91c2x5IGFkZGVkIGZvciBtbWFsbG9jIHN1cHBvcnQsIGludGVyZmFjZSBoYXMgY2hhbmdlZCkuCglBbHNvIGNvbnZlcnQgZmxhZ3MgdXNhZ2UgdG8gdXNlIHVzZV9leHRyYV9hcmcgYW5kIG1heWJlX2VtcHR5X29iamVjdC4KCkZyaSBKdWwgMTAgMDA6NDE6NTMgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBhcmd2LmM6ICBNb3ZlIGV4cGFuZGFyZ3YgaW5saW5lIGFuZCBlbGltaW5hdGUgc3RhdGljIHZhcmlhYmxlcy4KCVJld3JpdGUgdG8gYWx3YXlzIGFsbG9jYXRlIGluIHBvd2VycyBvZiB0d28uICBGaXggdG8gcmV0dXJuIGFuCglhcmd2IHdpdGggYSBzaW5nbGUgbnVsbCBzdHJpbmcgYXJnIGlmIHBhc3NlZCBhIG51bGwgc3RyaW5nLgoKRnJpIEp1bCAgMyAyMDoyNzoyOSAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIHJhbmRvbS5jLCBzaWdzZXRtYXNrLmMsIHN0cmVycm9yLmMsIHN0cnNpZ25hbC5jOiAgUmVtb3ZlCgkiKHZvaWQpIiBjYXN0cyBmcm9tIGZ1bmN0aW9uIGNhbGxzIHdoZXJlIHRoZSByZXR1cm4gdmFsdWUgaXMKCWlnbm9yZWQsIGluIGFjY29yZGFuY2Ugd2l0aCBHTlUgY29kaW5nIHN0YW5kYXJkcy4KCk1vbiBKdW4gMjkgMTA6NTQ6MTkgMTk5MiAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBiY29weS5jLCBzdHJlcnJvci5jLCBzdHJzaWduYWwuYzogIExpbnQuCgpUaHUgSnVuIDI1IDA5OjE4OjQxIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBydGwuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5jOiBtZXJnZSBjaGFuZ2VzIGZyb20gbWFrZS4KClRodSBKdW4gMjUgMDQ6NDM6MjIgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhbGxvY2EuYzogIEluY29ycG9yYXRlIGZpeGVzIGZyb20gZ2RiL2FsbG9jYS5jLgoJRklYTUU6ICBFdmVudHVhbGx5IG1vdmUgZ2RiJ3MgYWxsb2NhIGNvbmZpZ3VyYXRpb24gZmlsZXMgaGVyZSwKCWFuZCByZW1vdmUgZ2RiL2FsbG9jYS5jIGFuZCBpdHMgTWFrZWZpbGUuaW4gc3VwcG9ydC4KClR1ZSBKdW4gMjMgMjE6NTY6MzAgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkdW1teS5jOiAgRGVmaW5lIE5PVEhJTkcgdG8gLypub3RoaW5nKi8sIGNoYW5nZSByZXR1cm4gdHlwZQoJb2YgbWFpbiB0byBpbnQgYW5kIHJldHVybiB6ZXJvLgoJKiBmdW5jdGlvbnMuZGVmOiAgU3VwcGx5IE5PVEhJTkcgYXMgdGhlIGZvdXJ0aCBhcmcgdG8gbWFjcm9zCgl0aGF0IGRvbid0IGhhdmUgYW4gZXhwbGljaXQgYXJnLCB0byBzYXRpc2Z5IHBpY2t5IHByZXByb2Nlc3NvcnMuCgpXZWQgSnVuIDE3IDE4OjEzOjU4IDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiAgQ2xlYW4gdXAgKmNsZWFuIHJ1bGVzLCBhcyBwZXIgc3RhbmRhcmRzLnRleGkuCgpUdWUgSnVuIDE2IDE2OjExOjU5IDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBydGwuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5jLCBnZXRvcHQxLmM6IG1lcmdlZCBsYXJnZWx5IGdyYXR1aXRvdXMsIG1vc3RseQoJICB3aGl0ZXNwYWNlIGRpZmZzIGZyb20gb3RoZXIgcHJlcCBkaXN0cmlidXRpb25zLgoKTW9uIEp1biAxNSAxMjoyNTo0NiAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy9taC1uY3IzMDAwIChJTlNUQUxMKTogIERvbid0IHVzZSAvdXNyL3VjYi9pbnN0YWxsLAoJaXQgaXMgYnJva2VuIG9uIG5jciAzMDAwJ3MuCgpNb24gSnVuIDE1IDAxOjAzOjI2IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogc2lnc2V0bWFzay5jOiAgUmV3cml0ZS4gIE9sZCBvbmUgd2FzIHZlcnkgY29uZnVzZWQgYWJvdXQgaXRzCglhcmd1bWVudHMgYW5kIHJlc3VsdC4gIE5ldyBvbmUgY2FuJ3QgZG8gbXVjaCwgYnV0IGF0IGxlYXN0IGtub3dzCgl3aGF0IGl0IGNhbid0IGRvLCBhbmQgaXQncyBnb29kIGVub3VnaCBmb3IgR0RCJ3MgdXNlLgoKU3VuIEp1biAxNCAxNToxNzo0MCAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogZnVuY3Rpb25zLmRlZjogIFVzZSBwcm9wZXIgcHJvdG90eXBlIGZvciBzdHJ0b3VsLgoKRnJpIEp1biAxMiAxOToyMjo0MCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiAgQWRkIHJhbmRvbS5jLgoJKiBjb25maWcvbWgtKjogIFVzZSAidHJ1ZSIgcmF0aGVyIHRoYW4gImVjaG8gPi9kZXYvbnVsbCIgZm9yIHJhbmxpYi4KCSogY29uZmlndXJlLmluOiAgdXBkYXRlIHNvbGFyaXMyIGNvbmZpZy4KCldlZCBKdW4gMTAgMTY6MzE6MjkgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiByYW5kb20uYzogIEFkZCBmb3IgcmFuZG9tKCkgYW5kIHNyYW5kb20oKS4KCSogZnVuY3Rpb25zLmRlZjogIEFkZCByYW5kb20KClR1ZSBKdW4gIDkgMTc6Mjc6MTggMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBjb25maWcve21oLW5jcjMwMDAsIG1oLXN5c3Y0fTogIEFkZCBkZWZpbml0aW9uIGZvciBJTlNUQUxMCgl1c2luZyAvdXNyL3VjYi9pbnN0YWxsLgoKTW9uIEp1biAgMSAxMzoyMDoxNyAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBzdHJlcnJvci5jOiAgS2x1ZGdlIHRvIGd1YXJkIGFnYWluc3QgYSBjb25mbGljdCB3aXRoCglwb3NzaWJsZSBkZWNsYXJhdGlvbiBvZiBzeXNfZXJybGlzdCBpbiBlcnJuby5oLgoKU3VuIE1heSAzMSAxNTowNzo0NyAxOTkyICBNYXJrIEVpY2hpbiAgKGVpY2hpbiBhdCBjeWdudXMuY29tKQoKCSogY29uZmlndXJlLmluLCBjb25maWcvbWgtc29sYXJpczogYWRkIHNvbGFyaXMyIGNvbmZpZyBzdXBwb3J0LgoKRnJpIE1heSAyOSAxNzoyMzoyMyAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBzaWdzZXRtYXNrLmM6ICAjaWZkZWYgb3V0IHNpZ3NldG1hc2sgaWYgU0lHX1NFVE1BU0sKCWlzIG5vdCBkZWZpbmVkIChzaG91bGQgYmUgZGVmaW5lZCBpbiBzaWduYWwuaCwgc2F5cyBQb3NpeC4pLgoKTW9uIE1heSAxOCAxNzozNTowNCAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5jOiBtZXJnZWQgY2hhbmdlcyBmcm9tIG1ha2UtMy42Mi4xMS4KCkZyaSBNYXkgIDggMTQ6NTM6MDcgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBnZXRvcHQuYzogbWVyZ2VkIGNoYW5nZXMgZnJvbSBiaXNvbi0xLjE4LgoKVHVlIE1heSAgNSAxMTo1MTo0MCAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogIERvbid0IGhhdmUgJChFWFRSQV9PRklMRVMpIGRlcGVuZCBvbiBjb25maWcuaCwKCXNpbmNlIHRoYXQgaW50cm9kdWNlcyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kuCgkoJChFWFRSQV9PRklMRVMpIGFyZSB1c2VkIHRvIGJ1aWxkIGNvbmZpZy5oLikKCgkqIHN0cnRvdWwuYzogIEZpeGVzIHRvIGhhbmRsZSBub24tZGVjaW1hbCBiYXNlcyBiZXR0ZXIuCgpXZWQgQXByIDIyIDA5OjI3OjUxIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogY29uZmlnL21oLW5jcjMwMDA6ICBSZXBsYWNlIE1JTlVTX0cgd2l0aCBDRkxBR1MuCgkqIE1ha2VmaWxlLmRvczogIEZpbmlzaCBNSU5VU19HIGVyYWRpY2F0aW9uLgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogIEFkZCBzdHJzaWduYWwuYy4KCSogTWFrZWZpbGUuaW4gKFJFUVVJUkVEX09GSUxFUyk6ICBBZGQgc3RyZXJyb3IubyBzdHJzaWduYWwubwoJKiBNYWtlZmlsZS5pbiAobmVlZGVkLWxpc3QpOiAgU3BsaXQgY3JlYXRpb24gb2YgZXJyb3JzIGZpbGUgdG8KCXNlcGFyYXRlIG1ha2UgdGFyZ2V0LgoJKiBNYWtlZmlsZS5pbiAoY29uZmlnLmgsIG5lZWRlZDIuYXdrLCBlcnJvcnMpOiAgTmV3IHRhcmdldHMuCgkqIE1ha2VmaWxlLmluIChjbGVhbik6ICBTcGxpdCB0byBtdWx0aXBsZSBsaW5lcywgYWRkIG5lZWRlZDIuYXdrCglhbmQgY29uZmlnLmguCgkqIGR1bW15LmMgKERFRkZVTkMsIERFRlZBUik6ICBBZGQgZGVmaW5lcyBhbmQgdW5kZWZzLgoJKiBmdW5jdGlvbnMuZGVmIChzdHJlcnJvcik6ICBSZW1vdmUgZnJvbSBvcHRpb25hbCBsaXN0LgoJKiBmdW5jdGlvbnMuZGVmIChzeXNfbmVyciwgc3lzX2Vycmxpc3QsIHN5c19zaWdsaXN0KTogIERFRlZBUidzCgkqIGZ1bmN0aW9ucy5kZWYgKHN0cmVycm9yLCBwc2lnbmFsKTogIERFRkZVTkMncwoJKiBzdHJlcnJvci5jOiAgUmV3cml0ZSBmcm9tIHNjcmF0Y2ggdG8gdXNlIHN5c19lcnJsaXN0IG9ubHkgaWYKCWF2YWlsYWJsZSwgYWRkIGVycm5vX21heCgpLCBhZGQgc3RyZXJybm8oKSwgYWRkIHN0cnRvZXJybm8oKSwKCWFkZCB0ZXN0IGRyaXZlci4KCSogc3Ryc2lnbmFsLmM6ICBOZXcgZmlsZSwgc2lnbmFsIGVxdWl2YWxlbnQgdG8gc3RyZXJyb3IuYy4KCVVzZXMgc3lzX3NpZ2xpc3QgaWYgYXZhaWxhYmxlLCBkZWZpbmVzIHNpZ25vX21heCgpLCBzdHJzaWduYWwoKSwKCXN0cnNpZ25vKCksIHN0cnRvc2lnbm8oKSwgcHNpZ25hbCgpLCBhbmQgdGVzdCBkcml2ZXIuCgpNb24gQXByIDIwIDIwOjQ5OjMyIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IGRvIG5vdCBwcmludCByZWN1cnNpb24gbGluZS4KCgkqIE1ha2VmaWxlLmluOiBhbGxvdyBDRkxBR1MgdG8gYmUgcGFzc2VkIGluIGZyb20gY29tbWFuZCBsaW5lLgoJICBSZW1vdmVkIE1JTlVTX0cuICBEZWZhdWx0IENGTEFHUyB0byAtZy4KCk1vbiBBcHIgMjAgMTI6NTc6NDYgMTk5MiAgUGVyIEJvdGhuZXIgIChib3RobmVyQHJ0bC5jeWdudXMuY29tKQoKCSogY29uZmlnL21oLWFpeDogIE5ldy4gIEVYVFJBX09GSUxFUyBsaXN0cyBjb3B5c2lnbi5vLAoJc28gbGliZysrIHVzZXJzIGRvbid0IGhhdmUgdG8gYmUgaW5jb252ZW5pZW5jZWQgYnkgYQoJbGliYy5hIGJ1ZyAobGliYy5hIG5lZWRzIGNvcHlzaWduLCBidXQgZG9lc24ndCBkZWZpbmUgaXQhKS4KCSogY29uZmlndXJlLmluOiAgVXNlIGNvbmZpZy9taC1haXguCgkqIHN0cnRvdWwuYzogIEhhbmRsZSAnLScgYXMgcmVxdWlyZWQgYnkgQU5TSS4KCUNsZWFuIHVwIHJhZGl4IGhhbmRsaW5nLgoJKiBzdHJzdHIuYzogIEZpeCBidWdneSBhbGdvcml0aG0uCgkqIE1ha2VmaWxlLmluOiAgQ2hhbmdlIHNvIHRoYXQgJHtFWFRSQV9PRklMRVN9IGlzCglhcHBlbmRlZCB0byBuZWVkZWQtbGlzdCAod2hpY2ggaXMgdXNlZCBieSBsaWJnKyspLgoKRnJpIEFwciAxMCAyMjo1MTo0MSAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbjogIFJlY29nbml6ZSBuZXcgbmNyMzAwMCBjb25maWcuCgkqIGNvbmZpZy9taC1uY3IzMDAwOiAgTmV3IGNvbmZpZyBmaWxlLgoKV2VkIEFwciAgMSAyMzozMTo0MyAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFyZ3YuYywgZHVtbXkuYzogIExpbnQuCgpUdWUgTWFyIDMxIDE4OjQ2OjQ0IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogY29uZmlnL21oLXN5c3Y0OiAgTmV3IGNvbmZpZyBmaWxlLgoJKiBjb25maWd1cmUuaW4gKGhvc3RfbWFrZWZpbGVfZnJhZyk6ICBTZXQgdG8gY29uZmlnL21oLXN5c3Y0IGZvcgoJaG9zdF9vcyA9PSBzeXN2NC4KCSogZ2V0cGFnZXNpemUuYzogIEZvciBTVlI0LCB1c2Ugc3lzY29uZihfU0NfUEFHRVNJWkUpIHRvIGdldAoJcGFnZXNpemUuCgpTdW4gTWFyIDI5IDEyOjI2OjQyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogZ2V0b3B0LmM6ICBMaW50LgoKRnJpIE1hciAyNyAwODozMjo1NSAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGZ1bmN0aW9ucy5kZWYgKGFsbG9jYSk6ICBGaXggcmV0dXJuIHR5cGUgYW5kIGFyZ3MgdG8gYXZvaWQKCXR5cGUgY2xhc2ggd2l0aCBnY2MncyBidWlsdGluIGFsbG9jYS4KClR1ZSBNYXIgMjQgMjM6MzM6NDIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZy9taC1pcml4NDogaXJpeDQgc3VwcG9ydC4KCgkqIE1ha2VmaWxlLmluLCBmdW5jdGlvbnMuZGVmLCBhbGxvY2EuYzogYWRkZWQgYWxsb2NhLgoKVHVlIE1hciAyNCAxNzozNDo0NiAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogb2JzdGFjay5jIChDQUxMX0ZSRUVGVU4pOiAgTWFrZSBpdCBjb21waWxlIG9uIERFQ3N0YXRpb25zLgoKVGh1IE1hciAxOSAxMzo1Nzo0MiAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGFyZ3YuYzogIEZpeCB2YXJpb3VzIGV4dGVybmFsIGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIGJlCgljb3JyZWN0IGluIGFuIEFOU0kgY29tcGlsYXRpb24gZW52aXJvbm1lbnQuCgpTYXQgTWFyIDE0IDE3OjI4OjE3IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5jOiAgQ2hhbmdlcyB0byBzdXBwb3J0IGNhbGxpbmcgbW1hbGxvYyBmdW5jdGlvbnMsCgl3aGljaCB0YWtlIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgb3ZlciBtYWxsb2MgZnVuY3Rpb25zLgoKRnJpIE1hciAgNiAyMjowMToxMCAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGFkZGVkIGNoZWNrIHRhcmdldC4KClRodSBGZWIgMjcgMjI6MTk6MzkgMTk5MiAgUGVyIEJvdGhuZXIgIChib3RobmVyQGN5Z251cy5jb20pCgoJKiBhcmd2LmM6ICAjaW5jbHVkZSBhbGxvY2EtY29uZi5oIChuZWVkZWQgYnkgQUlYKS4KCldlZCBGZWIgMjYgMTg6MDQ6NDAgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLmluOiByZW1vdmVkIHRyYWNlcyBvZiBuYW1lc3ViZGlyLAoJICAtc3ViZGlycywgJChzdWJkaXIpLCAkKHVuc3ViZGlyKSwgc29tZSByY3MgdHJpZ2dlcnMuICBGb3JjZWQKCSAgY29weXJpZ2h0cyB0byAnOTIsIGNoYW5nZWQgc29tZSBmcm9tIEN5Z251cyB0byBGU0YuCgpTYXQgRmViIDIyIDAxOjA5OjIxIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBhcmd2LmM6ICBDaGVjayBpbiBGcmVkJ3MgdmVyc2lvbiB3aGljaCBmaXhlcyBwcm9ibGVtcyB3aXRoCglhbGxvY2EoKS4KCkZyaSBGZWIgIDcgMjE6NDY6MDggMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIG1ha2VmaWxlLmRvczogIFJlbW92ZSBOVUwgdG8ga2VlcCBwYXRjaCBmcm9tIGZhaWxpbmcuCgpUaHUgSmFuIDMwIDIyOjQ4OjQxIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBnZXRvcHQuYyAoX2dldG9wdF9pbnRlcm5hbCk6ICBGaXggdXNhZ2Ugb2YgZW51bSBoYXNfYXJnLgoKTW9uIEphbiAyMCAxODo1MzoyMyAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogZ2V0b3B0LmMsIGdldG9wdDEuYywgLi4vaW5jbHVkZS9nZXRvcHQuaDogIEdldCBsYXRlc3QgdmVyc2lvbnMuCgpTYXQgSmFuIDE4IDE2OjUzOjAxIDE5OTIgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogYXJndi5jOiAgTmV3IGZpbGUgdG8gYnVpbGQgYW5kIGRlc3Ryb3kgc3RhbmRhcmQgYXJndW1lbnQKCXZlY3RvcnMgZnJvbSBhIGNvbW1hbmQgc3RyaW5nLgoKCSogTWFrZWZpbGUuaW46ICBBZGQgYXJndi5jIGFuZCBhcmd2Lm8gdG8gYXBwcm9wcmlhdGUgbWFjcm9zLgoKRnJpIERlYyAyMCAxMjoxMjo1NyAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbjogIENoYW5nZSBzdnI0IHJlZmVyZW5jZXMgdG8gc3lzdjQuCgoJKiByaW5kZXguYzogIERlY2xhcmUgcmV0dXJuIHR5cGUgb2YgZXh0ZXJuYWxseSB1c2VkIGZ1bmN0aW9uCglzdHJyY2hyKCkuCgpUaHUgRGVjIDE5IDE4OjM1OjAzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46ICBSZW1vdmUgIioqKiIgaW4gbm9ybWFsIG91dHB1dCwgc2luY2UgTWFrZSBwcm9kdWNlcwoJdGhpcyBvbiBlcnJvcnMsIGFuZCBpdCdzIGNvbnZlbmllbnQgdG8gc2VhcmNoIGZvci4KClR1ZSBEZWMgMTcgMjM6MjE6MzAgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBtZW1jbXAuYywgbWVtY3B5LmMsIG1lbW1vdmUuYywgbWVtc2V0LmMsIHN0cmNoci5jLCBzdHJyY2hyLmM6CglOZXcgQU5TSSBmdW5jdGlvbnMuICBUaGUgb2xkIG5vbi1BTlNJIGZ1bmN0aW9ucyAoc3VjaCBhcyBiY29weSkKCXNob3VsZCBiZSBhdm9pZGVkLgoJKiBiY29weS5jOiAgRml4IHRvIGNvcnJlY3RseSBoYW5kbGUgb3ZlcmxhcHBpbmcgcmVnaW9ucy4KCSogaW5kZXguYywgcmluZGV4LmM6ICBSZS13cml0ZSBpbiB0ZXJtcyBvZiBzdHJjaHIoKSBhbmQgc3RycmNocigpLgoJKiBmdW5jdGlvbnMuZGVmOiAgQWRkIHRoZSBuZXcgZnVuY3Rpb25zLgoJKiBmdW5jdGlvbnMuZGVmOiAgQWRkIDR0aCBwYXJhbWV0ZXIgdG8gREVGIG1hY3JvLAoJYW4gYW5zaWRlY2wuaC1zdHlsZSBwcm90b3R5cGUuCgkqIGR1bW15LmM6ICBVc2UgZXhwYW5kZWQgREVGIG1hY3JvIHRvIGNyZWF0ZSBhIGR1bW15IGZ1bmN0aW9uCgljYWxsLCB3aXRoIGNvcnJlY3QgcGFyYW1ldGVyIHR5cGVzLiAgKFRoaXMgYXZvaWRzIHNvbWUKCWNvbXBsYWludHMgZnJvbSBnY2MgYWJvdXQgcHJlZGVmaW5lZCBidWlsdGlucy4pCgoJTW92ZSB0aGUgZnVuY3Rpb25hbGl0eSBvZiBjb25maWcvbWgtZGVmYXVsdCBpbnRvIE1ha2VmaWxlLmluLgoJVGhpcyBhdm9pZCBkdXBsaWNhdGlvbiwgYW5kIHNpbXBsaWZpZXMgdGhpbmdzIHNsaWdodGx5LgoJKiBNYWtlZmlsZS5pbjogIFR3ZWFrIHNvIHdlIGRvbid0IG5lZWQgY29uZmlnL21oLWRlZmF1bHQuCgkqIFJFQURNRTogIFVwZGF0ZS4KCSogY29uZmlndXJlLmluOiAgTm8gbG9uZ2VyIG5lZWQgY29uZmlnL21oLWRlZmF1bHQuCgkqIGNvbmZpZy9taC1kZWZhdWx0OiAgRGVsZXRlZC4KCSogY29uZmlnL21oLXN5c3Y6ICBSZW1vdmUgbGluZXMgY29waWVkIGZyb20gb2xkIG1oLWRlZmF1bHQuCgpUdWUgRGVjIDE3IDA1OjQ2OjQ2IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogZmRtYXRjaC5jIChmZG1hdGNoKTogIERvbid0IGNvbXBhcmUgc3RfcmRldiwgd2hpY2ggaXMgZm9yCgknbWtub2QnIGRldmljZSBudW1iZXJzLgoKTW9uIERlYyAxNiAxMjoyNTozNCAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGZkbWF0Y2guYywgTWFrZWZpbGUuaW46ICBBZGQgbmV3IGZ1bmN0aW9uIHRoYXQgdGFrZXMgdHdvCglvcGVuIGZpbGUgZGVzY3JpcHRvcnMgYW5kIHJldHVybnMgbm9uemVybyBpZiB0aGV5IHJlZmVyIHRvCgl0aGUgc2FtZSBmaWxlLCB6ZXJvIG90aGVyd2lzZS4gICh1c2VkIGluIGdkYikKCldlZCBEZWMgMTEgMTc6NDA6MzkgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWMgYXQgcnRsLmN5Z251cy5jb20pCglGcm9tIERKOgoJKiBtc2Rvcy5jOiBzdHViIGZ1bmN0aW9ucyBmb3IgZG9zLgoJKiBtYWtlZmlsZS5kb3MsIGNvbmZpZ2RqLmJhdDogbmV3LgoJKiBnZXRvcHQuYzogRG9uJ3QgaW5jbHVkZSBhbGxvY2EtY29uZi5oIGluIGEgR08zMiB3b3JsZC4KCgpUdWUgRGVjIDEwIDA0OjE0OjQ5IDE5OTEgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaCBhdCBydGwuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBpbmZvZGlyIGJlbG9uZ3MgaW4gZGF0YWRpci4KCkZyaSBEZWMgIDYgMjM6MjY6NDUgMTk5MSAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoIGF0IHJ0bC5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IHJlbW92ZSBzcGFjZXMgZm9sbG93aW5nIGh5cGhlbnMgYmVjYXVzZSBic2QgbWFrZQoJICBjYW4ndCBjb3BlLiAgYWRkZWQgc3RhbmRhcmRzLnRleHQgc3VwcG9ydC4gIGluc3RhbGwgdXNpbmcKCSAgSU5TVEFMTF9EQVRBLgoKCSogY29uZmlndXJlLmluOiByZW1vdmUgY29tbW9udGFyZ2V0cyBhcyBpdCBpcyBubyBsb25nZXIgYQoJICByZWNvZ25pemVkIGhvb2suCgpUaHUgRGVjICA1IDIyOjQ2OjQ2IDE5OTEgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaCBhdCBydGwuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBpZGVzdGRpciBhbmQgZGRlc3RkaXIgZ28gYXdheS4gIEFkZGVkIGNvcHlyaWdodHMKCSAgYW5kIHNoaWZ0IGdwbCB0byB2Mi4gIEFkZGVkIENoYW5nZUxvZyBpZiBpdCBkaWRuJ3QgZXhpc3QuIGRvY2RpcgoJICBhbmQgbWFuZGlyIG5vdyBrZXllZCBvZmYgZGF0YWRpciBieSBkZWZhdWx0LgoKRnJpIE5vdiAyMiAxOToxNToyOSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiAgZmluZC1uZWVkZWQuYXdrIGRvZXMgbm90IGZpdCBpbiAxNCBjaGFycy4KCgkqIE1ha2VmaWxlLmluOiAgU3VwcHJlc3MgZXJyb3IgY2hlY2tpbmcgd2hlbiBjb21waWxpbmcgdGhlIHRlc3QKCXByb2dyYW0sIGJlY2F1c2UgVWx0cml4IG1ha2Uvc2ggYWJvcnRzIHRoZXJlIGR1ZSB0byBhIGJ1Zy4KCkZyaSBOb3YgMjIgMTI6MjM6MTcgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogIFJlLWRpZCBob3cgRVhUUkFfT0ZJTEVTIGlzIHVzZWQgdG8gYmUgbW9yZSB1c2VmdWwuCgkqIFJFQURNRTogIEV4cGxhaW5lZCBob3cgdGhlIGF1dG8tY29uZmlndXJhdGlvbiB3b3JrcywKCWFuZCBob3cgdG8gYWRkIG5ldyBmaWxlcyBhbmQvb3IgY29uZmlndXJhdGlvbnMuCgpGcmkgTm92IDIyIDA5OjQ1OjIzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogc3RydG91bC5jOiAgQXZvaWQgZGVmaW5pbmcgVUxPTkdfTUFYIGlmIGFscmVhZHkgZGVmaW5lZDsKCWNhc3QgYSBjb25zdCBjaGFyICogdG8gY2hhciAqIGZvciBwZWRhbnRzLgoKCSogZ2V0b3B0LmM6ICBPbmx5IGRlZmluZSAiY29uc3QiIGFmdGVyIGxvY2FsIGluY2x1ZGUgZmlsZXMgZ2V0IHRvLAoJYW5kIG9ubHkgaWYgdGhleSBoYXZlbid0IGRlZmluZWQgaXQuCgpUaHUgTm92IDIxIDE2OjU4OjUzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogZ2V0Y3dkLmMgKHJlbW92ZSBnZXR3ZC5jKTogR05VIGNvZGUgc2hvdWxkIGNhbGwgZ2V0Y3dkKCkuICBXZQoJZW11bGF0ZSBpdCB3aXRoIGdldHdkKCkgaWYgYXZhaWxhYmxlLiAgVGhpcyBhdm9pZHMgY2FsbGVycyBoYXZpbmcKCXRvIGZpbmQgYSBNQVhQQVRITEVOIG9yIFBBVEhfTUFYIHZhbHVlIGZyb20gc29tZXdoZXJlLgoJKiBNYWtlZmlsZS5pbiwgZnVuY3Rpb25zLmRlZjogIGdldHdkLT5nZXRjd2QuCgkqIGNvbmZpZ3VyZS5pbjogIFVzZSBnZW5lcmljIGNhc2UgZm9yIGV2ZXJ5IHN5c3RlbS4KCSogY29uZmlnL21oLXtkZWx0YTg4LG1hY2gscnM2MDAwLHN2cjR9OiAgUmVtb3ZlLgoJKiBjb25maWcvbWgtc3lzdjogIFVzZSBkZWZhdWx0IGhhbmRsaW5nLCBqdXN0IGFkZCAtRFVTRy4KClRodSBOb3YgMTQgMTA6NTg6MDUgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlnL21oLWRlZmF1bHQ6IFJlLWRvIG1ha2UgbWFnaWMKCXNvIHRoYXQgZm9yIHRoZSBkZWZhdWx0ICgiYXV0b21hdGljIikgbW9kZSB3ZSBvbmx5Cgljb21waWxlIHRoZSBmaWxlcyB3ZSBhY3R1YWxseSBuZWVkLiAgRG8gdGhpcyB1c2luZwoJYSByZWN1cnNpdmUgbWFrZTogIFRoZSB0b3AtbGV2ZWwgZ2VuZXJhdGVzIHRoZSBsaXN0CglvZiBuZWVkZWQgZmlsZXMgKGxvb3NlbHksIHRoZSBvbmVzIG1pc3NpbmcgaW4gbGliYyksCglhbmQgdGhlbiBwYXNzZXMgdGhhdCBsaXN0IHRvIHRoZSByZWN1cnNpdmUgbWFrZS4KCSogY29uZmlnL21oLW1hY2g6ICBSZW1vdmUgb2Jzb2xldGUgU1RSRVJST1Ite0MsT30gbWFjcm9zLgoKVHVlIE5vdiAxMiAxOToxMDo1NyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCglSUy82MDAwIGhvc3Qgc3VwcG9ydCAoZ3J1bWJsZSkuCgoJKiBjb25maWd1cmUuaW46ICBCdWlsZCBhbGxvY2EtY29uZi5oIGZpbGUgZnJvbSBhbGxvY2Etbm9ybS5oCgkoZXZlcnl0aGluZyBlbHNlKSBvciBhbGxvY2EtYm90Y2guaCAocnMvNjAwMCkuCgkqIE1ha2VmaWxlLmluOiAgSW5jbHVkZSAuIG9uIHRoZSBpbmNsdWRlIHBhdGguCgkqIGdldG9wdC5jOiAgVXNlIGFsbG9jYS1jb25mLmguCgkqIGFsbG9jYS1ub3JtLmg6ICBIb3cgdG8gZGVjbGFyZSBhbGxvY2Egb24gcmVhc29uYWJsZSBtYWNoaW5lcy4KCSogYWxsb2NhLWJvdGNoLmg6IEhvdyB0byBkZWNsYXJlIGFsbG9jYSBvbiBicmFpbmRlYWQgbWFjaGluZXMuCgpUdWUgTm92IDEyIDA5OjIxOjQ4IDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogY29uY2F0LmMgOiAgTmV3IGZpbGUsIGxpa2UgY29uY2F0KCkgaW4gZ2RiIGJ1dCBjYW4gdGFrZSBhCgl2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzIHJhdGhlciB0aGFuIGZpeGVkIGF0IDMgYXJncy4gIEZvcgoJbm93LCBjbGllbnQgYXBwbGljYXRpb25zIG11c3Qgc3VwcGx5IGFuIHhtYWxsb2MoKSwgd2hpY2ggaXMgYQoJZnJvbnQgZW5kIGZ1bmN0aW9uIHRvIG1hbGxvYygpIHRoYXQgZGVhbHMgd2l0aCBvdXQtb2YtbWVtb3J5Cgljb25kaXRpb25zLgoKCSogTWFrZWZpbGUuaW46ICBBZGQgY29uY2F0LmMgYW5kIGNvbmNhdC5vIHRvIGFwcHJvcHJpYXRlIG1hY3Jvcy4KClNhdCBOb3YgIDkgMTM6Mjk6NTkgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBjb25maWcvbWgtc3ZyNDogIEFkZCBzaWdzZXRtYXNrIHRvIGxpc3Qgb2YgcmVxdWlyZWQgZnVuY3Rpb25zLgoKU3VuIE5vdiAgMyAxMTo1Nzo1NiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIHZzcHJpbnRmLmM6ICBOZXcgZmlsZS4KCSogZnVuY3Rpb25zLmRlZiwgTWFrZWZpbGUuaW46ICBBZGQgdnNwcmludGYuCgpTdW4gT2N0IDI3IDE2OjMxOjIyIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogY29uZmlndXJlLmluLCBjb25maWcvbWgtcnM2MDAwOiAgQWRkIHJzLzYwMDAgaG9zdCBzdXBwb3J0LgoJKiBNYWtlZmlsZS5pbjogIENvbXBpbGUgd2l0aCBkZWJ1ZyBpbmZvLgoKRnJpIE9jdCAyNSAxNzowMToxMiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUuaW4sIGFuZCBuZXcgZmlsZXM6IGR1bW15LmMsIGZ1bmN0aW9ucy5kZWYsCgljb25maWcvbWYtZGVmYXVsdDogIEFkZGVkIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uIG1vZGUsCgl3aGljaCBpbmNsdWRlcyBpbnRvIGxpYmliZXJ0eS5hIGZ1bmN0aW9ucyB0aGF0IGFyZSAibWlzc2luZyIgaW4gbGliYy4KCSogc3RyZHVwLmMsIHZwcmludGYuYywgdmZwcmludGYuYzogTmV3IGZpbGVzLgoKVGh1IE9jdCAyNCAwMjoyOToyNiAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy9obWFrZS1zdnI0OiBOZXcgZmlsZS4KCgkqIGNvbmZpZy9obWFrZS1zeXN2OiBBZGQgSE9TVF9DRklMRVMgYW5kIEhPU1RfT0ZJTEVTLgoKCSogYmFzZW5hbWUuYywgYmNtcC5jLCBiY29weS5jLCBiemVyby5jLCBnZXRwYWdlc2l6ZS5jIGdldHdkLmMsCglpbmRleC5jLCBpbnNxdWUuYywgcmluZGV4LmMsIHNwYWNlcy5jLCBzdHJzdHIuYywgdmZvcmsuYzogTmV3CglmaWxlcyBjb250YWluaW5nIGVpdGhlciBwb3J0YWJsZSBDIHZlcnNpb25zIG9yIGVtdWxhdGlvbnMgdXNpbmcKCW5hdGl2ZSBsaWJyYXJ5IGNhbGxzLgoKCSogc3RyZXJyb3IuYzogIEFkZCBjb3B5cmlnaHQsIGludGVybmFsIGRvY3VtZW50YXRpb24sIGV0Yy4KCgkqIHN0cnRvbC5jOiAgUmVwbGFjZSBoYXJkd2lyZWQgaGV4IGNvbnN0YW50cyB3aXRoIHNvbWUgbW9yZQoJcG9ydGFibGUgbWFjcm9zLiAgUmVtb3ZlIGlsbGVnYWwgKGFjY29yZGluZyB0byBnY2MpIGNhc3QuCgoJKiBzdHJ0b3VsLmM6IFJlcGxhY2UgaGFyZHdpcmVkIGhleCBjb25zdGFudCB3aXRoIG1vcmUgcG9ydGFibGUKCW1hY3JvLgoKCSogTWFrZWZpbGUuaW46IE1vdmUgVEFSR0VUTElCIGFuZCBDRkxBR1Mgd2hlcmUgbWFrZWZpbGUgZnJhZ21lbnRzCgljYW4gb3ZlcnJpZGUgdGhlbS4gIEFkZCBuZXcgc291cmNlIGFuZCBvYmplY3QgZmlsZSBuYW1lcyB0byBDRklMRVMKCWFuZCBPRklMRVMgcmVzcGVjdGl2ZWx5LgoKCSogY29uZmlndXJlLmluOiBBZGQgc3VwcG9ydCBmb3IgU1ZSNCBtYWtlZmlsZSBmcmFnbWVudHMuCgpUdWUgT2N0IDIyIDE5OjAwOjIzIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc3RldmUgYXQgY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBNb3ZlIFJBTkxJQiwgQVIgYW5kIEFSX0ZMQUdTIHRvIHdoZXJlIHRoZXkgY2FuIGJlCglvdmVyLXJpZGRlbiBieSBjb25maWcvaG1ha2UtKgoJKiBjb25maWd1cmUuaW46IGFkZGVkIG04OGtjdnMgdG8gc3lzdiBsaXN0CgpGcmkgT2N0ICA0IDAxOjI5OjA4IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46ICBNb3N0IGhvc3RzIG5lZWQgc3RyZXJyb3IsIGJ1dCBvbmUgb3IgdHdvIGRvbid0LAoJYW5kIHRoZXkgb3ZlcnJpZGUgdGhlc2UgZGVmaW5pdGlvbnMgaW4gdGhlIGhvc3QtZGVwZW5kZW50IG1ha2VmaWxlCglmcmFnbWVudC4KCSogY29uZmlnL2htYWtlLW1hY2g6ICBUaGUgb2RkIG1hbiBvdXQgb24gc3RyZXJyb3IgLS0gaXQncyBzdXBwbGllZC4KCSogc3RyZXJyb3IuYzogIE5ldyBmaWxlLgoKCSogc3RydG9sLmMsIHN0cnRvdWwuYzogIEFkZCBzdHJ0b2wgdG8gbGliaWJlcnR5LCBzaW5jZSBNYWNoIGxhY2tzCglpdCBhbmQgYmZkIHVzZXMgaXQuCgkqIGNvbmZpZ3VyZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZy9obWFrZS1tYWNoOiAgT25seSBjb25maWd1cmUKCXN0cnRvbCAmIHN0cm90b3VsIGluIG9uIE1hY2guCgpUdWUgU2VwICAzIDA2OjM2OjIzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suYzogIE1lcmdlIHdpdGggbGF0ZXN0IEZTRiB2ZXJzaW9uLgoKDApMb2NhbCBWYXJpYWJsZXM6CnZlcnNpb24tY29udHJvbDogbmV2ZXIKRW5kOgo=