MjAwMy0xMi0xOSAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogaW5jbHVkZS9maWJoZWFwLmggKGZpYm5vZGUpOiBVc2UgX19leHRlbnNpb25fXyBmb3IKCWJpdC1maWVsZHMgbWFyayBhbmQgZGVncmVlIGlmIF9fR05VQ19fLgoKMjAwMy0xMi0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGluY2x1ZGUvZmliaGVhcC5oIChmaWJub2RlKTogVXNlIHVuc2lnbmVkIGxvbmcgaW50IGZvcgoJYml0LWZpZWxkcyBpZiBfX0dOVUNfXyBpcyBkZWZpbmVkLgoKMjAwMy0xMC0yMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBvYnN0YWNrLmg6IE1lcmdlIHRoZSBmb2xsb3dpbmcgY2hhbmdlIGZyb20gZ251bGliOgoJMjAwMy0xMC0yMSAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAdHdpbnN1bi5jb20+CgkqIG9ic3RhY2suaCAob2JzdGFja18xZ3Jvd19mYXN0KTogUHJvcGVybHkgcGFyZW50aGVzaXplIGFyZy4KCShvYnN0YWNrX3B0cl9ncm93X2Zhc3QsIG9ic3RhY2tfaW50X2dyb3dfZmFzdCk6CglEb24ndCB1c2UgbHZhbHVlIGNhc3RzLCBhcyBHQ0MgcGxhbnMgdG8gcmVtb3ZlIHN1cHBvcnQgZm9yIHRoZW0KCWluIEdDQyAzLjUuICBSZXBvcnRlZCBieSBKb3NlcGggUy4gTXllcnMuICBUaGlzIGJ1ZwoJd2FzIGFsc28gcHJlc2VudCBpbiB0aGUgbm9uLUdDQyB2ZXJzaW9uLCBpbmRpY2F0aW5nIHRoYXQgdGhpcwoJY29kZSBoYWQgYWx3YXlzIGJlZW4gYnVnZ3kgYW5kIGhhZCBuZXZlciBiZWVuIHdpZGVseSB1c2VkLgoJKG9ic3RhY2tfMWdyb3csIG9ic3RhY2tfcHRyX2dyb3csIG9ic3RhY2tfaW50X2dyb3csIG9ic3RhY2tfYmxhbmspOgoJVXNlIHRoZSBmYXN0IHZhcmlhbnQgb2YgZWFjaCBtYWNybywgcmF0aGVyIHRoYW4gY29weWluZyB0aGUKCWRlZmluaWVucyBvZiB0aGUgZmFzdCB2YXJpYW50OyB0aGF0IHdheSwgd2UnbGwgYmUgbW9yZSBsaWtlbHkgdG8KCWNhdGNoIGZ1dHVyZSBidWdzIGluIHRoZSBmYXN0IHZhcmlhbnRzLgoKMjAwMy0wOS0yMiAgQW5kcmV3IENhZ25leSAgPGNhZ25leUByZWRoYXQuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoc3RydWN0IGZsb2F0Zm9ybWF0KTogQWRkIGZpZWxkICJpc192YWxpZCIuCgoyMDAzLTA5LTE1ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QHJlZGhhdC5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF90b19kb3VibGUpOiBNYWtlIGlucHV0IGJ1ZmZlciBjb25zdGFudC4KCShmbG9hdGZvcm1hdF9mcm9tX2RvdWJsZSwgZmxvYXRmb3JtYXRfaXNfdmFsaWQpOiBEaXR0by4KCjIwMDMtMDktMTUgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAcmVkaGF0LmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmggKHN0cnVjdCBmbG9hdGZvcm1hdCk6IE1ha2UgImV4cF9iaWFzIiBzaWduZWQuCgoyMDAzLTA5LTE1ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmggKGZsb2F0Zm9ybWF0X2lzX3ZhbGlkKTogQWRkIHByb3RvdHlwZS4KCjIwMDMtMDctMDkgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiB4dGVuc2EtY29uZmlnLmg6IFVuZGVmIGFsbCBtYWNyb3MgYmVmb3JlIGRlZmluaW5nIHRoZW0uCgoyMDAzLTA3LTA2ICBILkouIEx1IDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGRlbWFuZ2xlLmg6IFN1cHBvcnQgQysrLgoKMjAwMy0wNy0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZpbGVuYW1lcy5oOiBOZXcgZmlsZSBpbXBvcnRlZCBmcm9tIGJpbnV0aWxzLgoKMjAwMy0wNi0zMCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIHh0ZW5zYS1jb25maWcuaDogTmV3IGZpbGUgaW1wb3J0ZWQgZnJvbSBiaW51dGlscy4KCjIwMDMtMDYtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzYWZlLWN0eXBlLmggKEhDX1VOS05PV04sIEhDX0FTQ0lJLCBIQ19FQkNESUMpOiBSZW5hbWUgdG8KCUhPU1RfQ0hBUlNFVF9VTktOT1dOLCBIT1NUX0NIQVJTRVRfQVNDSUksIEhPU1RfQ0hBUlNFVF9FQkNESUMKCXJlc3BlY3RpdmVseS4KCjIwMDMtMDYtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzYWZlLWN0eXBlLmggKEhDX1VOS05PV04sIEhDX0FTQ0lJLCBIQ19FQkNESUMsIEhPU1RfQ0hBUlNFVCk6CglOZXcgI2RlZmluZXMuCgoyMDAzLTA2LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oOiBEZWxldGUgSEFWRV9MT05HX0RPVUJMRSBHQ0MgYm9vdHN0cmFwIHN1cHBvcnQuCgoyMDAzLTA1LTE1ICBKaW0gQmxhbmR5ICA8amltYkByZWRoYXQuY29tPgoKCSogbGliaWJlcnR5LmggKGhleF92YWx1ZSk6IE1ha2UgdGhlIHZhbHVlIGFuIHVuc2lnbmVkIGludCwgdG8KCWF2b2lkIHVuZXhwZWN0ZWQgc2lnbi1leHRlbnNpb24gd2hlbiBjYXN0IHRvIHVuc2lnbmVkIHR5cGVzIGxhcmdlcgoJdGhhbiBpbnQgLS0tIGxpa2UgYmZkX3ZtYSwgb24gc29tZSBwbGF0Zm9ybXMuCgkoX2hleF92YWx1ZSk6IFVwZGF0ZSBkZWNsYXJhdGlvbi4KCjIwMDMtMDUtMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5oIChpdGVyYXRpdmVfaGFzaCk6IFByb3RvdHlwZS4KCShpdGVyYXRpdmVfaGFzaF9vYmplY3QpOiBOZXcgbWFjcm8uCgoyMDAzLTAzLTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChBVFRSSUJVVEVfTk9OTlVMTCwgQVRUUklCVVRFX05VTExfUFJJTlRGLAoJQVRUUklCVVRFX05VTExfUFJJTlRGXzEsIEFUVFJJQlVURV9OVUxMX1BSSU5URl8yLAoJQVRUUklCVVRFX05VTExfUFJJTlRGXzMsIEFUVFJJQlVURV9OVUxMX1BSSU5URl80LAoJQVRUUklCVVRFX05VTExfUFJJTlRGXzUpOiBOZXcuCgkoQVRUUklCVVRFX1BSSU5URik6IEFkZCBBVFRSSUJVVEVfTk9OTlVMTC4KCjIwMDMtMDMtMTcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGhhc2h0YWIuaCAoaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSk6IERlY2xhcmUuCgoyMDAzLTAyLTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaDogRG9jdW1lbnQgcmV0dXJuIHZhbHVlIG9mIHBoeXNtZW0gcm91dGluZXMuCgoyMDAzLTAyLTIwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAocGh5c21lbV90b3RhbCwgcGh5c21lbV9hdmFpbGFibGUpOiBQcm90b3R5cGUuCgoyMDAzLTAyLTIwICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChscmVhbHBhdGgpOiBBZGQgZGVjbGFyYXRpb24uCgoyMDAzLTAxLTI2ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGhhc2h0YWIuaCAoaHRhYl9hbGxvY193aXRoX2FyZywgaHRhYl9mcmVlX3dpdGhfYXJnKTogQWRkIG5ldyB0eXBlcy4KCShzdHJ1Y3QgaHRhYik6IEFkZCBhbGxvY19hcmcsIGFsbG9jX3dpdGhfYXJnX2YsIGZyZWVfd2l0aF9hcmdfZi4KCShodGFiX2NyZWF0ZV9hbGxvY19leCk6IE5ldyBwcm90b3R5cGUuCgkoaHRhYl9zZXRfZnVuY3Rpb25zX2V4KTogTmV3IHByb3RvdHlwZS4KCjIwMDItMDctMTcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoR1RZKTogRGVmaW5lIGlmIHVuZGVmaW5lZC4KCShzcGxheV90cmVlX2FsbG9jYXRlX2ZuKTogUmV0dXJuIFBUUiBmb3IgY29tcGF0aWJpbGl0eSwgbm90IHZvaWQgKi4KCShzdHJ1Y3Qgc3BsYXlfdHJlZV9ub2RlX3MpOiBTdXBwb3J0IGdlbmd0eXBlLgoJKHN0cnVjdCBzcGxheV90cmVlX3MpOiBMaWtld2lzZS4gIE1ha2UgYWxsb2NhdGVfZGF0YSBhIFBUUiwKCW5vdCBhIHZvaWQgKi4KCjIwMDItMTEtMjMgIFNpbW9uIEJ1cmdlICA8c2ltb25iQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQWRkIE5ldEJTRCB0byB0aGUgbGlzdC4KCjIwMDItMTEtMjIgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogbGliaWJlcnR5LmggKG1ha2VfcmVsYXRpdmVfcHJlZml4KTogQWRkIHByb3RvdHlwZS4KCjIwMDItMTAtMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogcGFydGl0aW9uLmg6ICBDbG9zZSB0aGUgZXh0ZXJuICJDIiBzY29wZSB3aGVuIGNvbXBpbGluZyB3aXRoIEMrKy4KCjIwMDItMTAtMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIERKIERlbG9yaWUgPGRqQHJlZGhhdC5jb20+CgoJUFIgYm9vdHN0cmFwLzgzNTEKCSogZ2V0b3B0Lmg6IEF2b2lkIHByb3RvdHlwaW5nIGdldG9wdCB3aXRoIG5vIGFyZ3VtZW50cyBpbiBDKysuCgoyMDAyLTEwLTI0ICBOYXRoYW4gVGFsbGVudCAgPGVyYXh4b25AYWx1bW5pLnJpY2UuZWR1PgoKCSogYW5zaWRlY2wuaCAoX19TVERDX18pOiBBZGQgKF9fYWxwaGEgJiYgX19jcGx1c3BsdXMpIHRvIHRoZQoJbGlzdCBvZglwbGF0Zm9ybSBjb21waWxlcnMgdGhhdCBtYXkgbG9vaywgc21lbGwgYW5kIGFjdAoJbGlrZSBfX1NURENfXyBidXQgdGhhdCBtYXkgbm90IGRlZmluZSBpdC4KCjIwMDItMTAtMTEgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBnZXRvcHQuaDogZ2V0b3B0IGlzIGluIHVuaXN0ZC5oIChiYXNlZCBvbiBTVVN2MikuCgoyMDAyLTA5LTE5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxpYmliZXJ0eS5oIChhc3ByaW50ZiwgdmFzcHJpbnRmKTogRG9uJ3QgZGVjbGFyZSB0aGVtIGlmIHRoZQoJY29ycmVzcG9uZGluZyBIQVZFX0RFQ0xfIG1hY3JvIGlzIDEuCgoyMDAyLTA2LTI1ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZGVtYW5nbGUuaDogI2luY2x1ZGUgImFuc2lkZWNsLmgiIHJhdGhlciB0aGFuICNpbmNsdWRlIDxhbnNpZGVjbC5oPi4KCSogZmliaGVhcC5oOiBMaWtld2lzZS4KCSogaGFzaHRhYi5oOiBMaWtld2lzZS4KCSogcGFydGl0aW9uLmg6IExpa2V3aXNlLgoJKiBzb3J0Lmg6IExpa2V3aXNlLgoJKiBzcGxheS10cmVlLmg6IExpa2V3aXNlLgoKMjAwMi0wNi0yNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IERvbid0IGRlY2xhcmUgaWYgSEFWRV9ERUNMX0JBU0VOQU1FLgoJKiBnZXRvcHQuaCAoZ2V0b3B0KTogRG9uJ3QgZGVjbGFyZSBpZiBIQVZFX0RFQ0xfR0VUT1BULgoKMjAwMi0wNi0wNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmggKGh0YWIpOiBSZWFycmFuZ2UgbmV3IG1lbWJlcnMgZm9yIGJhY2t3YXJkCgljb21wYXRpYmlsaXR5LgoJKGh0YWJfY3JlYXRlKTogRG9uJ3QgdXNlIGEgbWFjcm8gdGhhdCByZXF1aXJlcyBvdGhlciBoZWFkZXJzLgoKMjAwMi0wNi0wNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5oIChodGFiX2NyZWF0ZSk6IFJlc3RvcmUgcHJvdG90eXBlIGZvciBiYWNrd2FyZAoJY29tcGF0aWJpbGl0eS4KCShodGFiX3RyeV9jcmVhdGUpOiBMaWtld2lzZS4KCjIwMDItMDUtMjIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuaCAoc3RydWN0IGh0YWIpOiBVcGRhdGUgZm9yIGNoYW5nZSB0byBsZW5ndGggc3BlY2lmaWVyLgoKMjAwMi0wNS0xMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5oIChHVFkpOiBEZWZpbmUgaWYgdW5kZWZpbmVkLgoJKGh0YWJfYWxsb2MpOiBOZXcgdHlwZWRlZi4KCShodGFiX2ZyZWUpOiBOZXcgdHlwZWRlZi4KCShzdHJ1Y3QgaHRhYik6IFN1cHBvcnQgZ2VuZ3R5cGU7IGFsbG93IHVzZXItc3BlY2lmaWVkIG1lbW9yeQoJYWxsb2NhdGlvbi4KCShodGFiX2NyZWF0ZV9hbGxvYyk6IE5ldy4KCShodGFiX2NyZWF0ZSk6IFJlcGxhY2Ugd2l0aCAjZGVmaW5lLgoJKGh0YWJfdHJ5X2NyZWF0ZSk6IERlbGV0ZS4KCjIwMDItMDQtMTYgIERhdmlkIFMuIE1pbGxlciAgPGRhdmVtQHJlZGhhdC5jb20+CgoJKiB4cmVnZXgyLmggKF9fcmVzdHJpY3RfYXJyKTogRGVmaW5lIHRvIF9fcmVzdHJpY3Qgb24gR0NDCgkzLjEgYW5kIGxhdGVyLiAgRG8gbm90IHJlZGVmaW5lLgoKMjAwMi0wNC0wMSAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogZHluLXN0cmluZy5oOiAgQWxzbyBhbGxvdyBJTl9HTElCQ1BQX1YzIHRvIHJlZGVmaW5lIG5hbWVzLgoKMjAwMi0wMy0wNiAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9hcm1fZXh0KTogRGVsZXRlIGRlY2xhcmF0aW9uLgoKMjAwMi0wMi0yMiAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCglBbGxvdyB0aGUgdXNlciB0byBzcGVjaWZ5IGZ1bmN0aW9ucyBmb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yCglzcGxheSB0cmVlIHJvb3RzIGFuZCBub2Rlcy4KCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2FsbG9jYXRlX2ZuLCBzcGxheV90cmVlX2RlYWxsb2NhdGVfZm4pOgoJTmV3IHR5cGVzLgoJKHNwbGF5X3RyZWUpOiBOZXcgZmllbGRzOiBgYWxsb2NhdGUnLCBgZGVhbGxvY2F0ZScsIGFuZAoJYGFsbG9jYXRlX2RhdGEnLgoJKHNwbGF5X3RyZWVfbmV3X3dpdGhfYWxsb2NhdG9yKTogTmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKMjAwMi0wMi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkZW1hbmdsZS5oIChjcGx1c19kZW1hbmdsZV92Myk6IEFkZCAib3B0aW9ucyIgcGFybS4KCShjcGx1c19kZW1hbmdsZV92M190eXBlKTogUmVtb3ZlIHByb3RvdHlwZS4KCShETUdMX1ZFUkJPU0UpOiBOZXcgbWFjcm8uCgkoRE1HTF9UWVBFUyk6IE5ldyBtYWNyby4KCjIwMDItMDItMDIgIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIGRlbWFuZ2xlLmggKGNwbHVzX2RlbWFuZ2xlX3YzX3R5cGUpOiBOZXcgcHJvdG90eXBlLgoKMjAwMi0wMS0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKENfYWxsb2NhKTogQWRkIEFUVFJJQlVURV9NQUxMT0MuCgoyMDAxLTEyLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZGVtYW5nbGUuaCAobm9fZGVtYW5nbGluZyk6IE5ldy4KCShOT19ERU1BTkdMSU5HX1NUWUxFX1NUUklORyk6IE5ldy4KCjIwMDEtMTAtMjQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIHNhZmUtY3R5cGUuaCAoX3NjaF9pc2Jhc2ljLCBJU19JU09CQVNJQyk6IE5ldy4KCjIwMDEtMTAtMjIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChoZXhfaW5pdCk6IFJldmVydCBkZWxldGUuCgoJKiBsaWJpYmVydHkuaCAoX2hleF92YWx1ZSk6IENvbnN0LWlmeS4KCShoZXhfaW5pdCk6IERlbGV0ZS4KCjIwMDEtMTAtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlbWFuZ2xlLmggKGRlbWFuZ2xlcl9lbmdpbmUpOiBDb25zdC1pZnkuCgkqIGxpYmliZXJ0eS5oIChidWlsZGFyZ3YpOiBMaWtld2lzZS4KCjIwMDEtMDktMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChyZWNvbmNhdCk6IE5ldyBmdW5jdGlvbi4KCjIwMDEtMDktMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChjb25jYXQsIGNvbmNhdF9sZW5ndGgsIGNvbmNhdF9jb3B5LCBjb25jYXRfY29weTIsCglBQ09OQ0FUKTogSW1wcm92ZSBjb21tZW50cy4KCjIwMDEtMDktMTggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBvYmphbGxvYy5oIChPQkpBTExPQ19BTElHTik6IERlZmluZSB1c2luZyBvZmZzZXRvZi4KCjIwMDEtMDktMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChjb25jYXRfbGVuZ3RoLCBjb25jYXRfY29weSwgY29uY2F0X2NvcHkyLAoJbGliaWJlcnR5X2NvbmNhdF9wdHIsIEFDT05DQVQpOiBOZXcuCgoJKiBsaWJpYmVydHkuaCAoQVNUUkRVUCk6IE5ldyBtYWNyby4KCWxpYmliZXJ0eV9vcHRyLCBsaWJpYmVydHlfbnB0ciwgbGliaWJlcnR5X2xlbik6IERlY2xhcmUuCgoyMDAxLTA4LTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oOiBVcGRhdGUgY29tbWVudHMgcmVmbGVjdGluZyBwcmV2aW91cyBjaGFuZ2UuCgoyMDAxLTA4LTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChWQV9PUEVOLCBWQV9DTE9TRSk6IEFsbG93IG11bHRpcGxlIHVzZXMuCgoyMDAxLTA4LTIzICBMYXJzIEJyaW5raG9mZiAgPGxhcnNAbm9jcmV3Lm9yZz4KCgkqIGR5bi1zdHJpbmcuaCwgZmliaGVhcC5oLCBwYXJ0aXRpb24uaCwgc29ydC5oLCBzcGxheS10cmVlLmg6CglyZXBsYWNlICJHTlUgQ0MiIHdpdGggIkdDQyIuCgoyMDAxLTA4LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZmliaGVhcC5oOiBUaWR5IGZvcm1hdHRpbmcuCgkoZmlibm9kZV90KTogTGltaXQgZGVncmVlIHRvIDMxIGJpdHMgdG8gYXZvaWQgd2FybmluZy4KCjIwMDEtMDgtMjAgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoZmxvYXRmb3JtYXRfYXJtX2V4dCk6IERvY3VtZW50IGFzIGRlcHJlY2F0ZWQuCgkoZmxvYXRmb3JtYXRfYXJtX2V4dF9iaWcsIGZsb2F0Zm9ybWF0X2FybV9leHRfbGl0dGxlYnl0ZV9iaWd3b3JkKQoJKGZsb2F0Zm9ybWF0X2lhNjRfc3BpbGxfbGl0dGxlLCBmbG9hdGZvcm1hdF9pYTY0X3F1YWRfbGl0dGxlKQoJKGZsb2F0Zm9ybWF0X2lhNjRfc3BpbGxfYmlnLCBmbG9hdGZvcm1hdF9pYTY0X3F1YWRfYmlnKQoJKGZsb2F0Zm9ybWF0X204ODExMF9oYXJyaXNfZXh0KTogRGVjbGFyZS4KCjIwMDEtMDgtMjAgIERhbmllbCBCZXJsaW4gIDxkYW5AY2dzb2Z0d2FyZS5jb20+CgoJKiBmaWJoZWFwLmg6IE5ldyBmaWxlLiBGaWJvbmFjY2kgaGVhcC4KCjIwMDEtMDgtMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBhbnNpZGVjbC5oOiBSZW9yZ2FuaXplIGZvciByZWFkYWJpbGl0eSwgcmVtb3ZlIGRvY3VtZW50YXRpb24KCW9mIG9ic29sZXRlIG1hY3JvcywgZG9jdW1lbnQgUEFSQU1TIGFuZCBWUEFSQU1TLiAgQWRkIG5ldwoJbWFjcm9zIFZBX09QRU4sIFZBX0NMT1NFLCBhbmQgVkFfRklYRURBUkcgZm9yIG5pY2VyIHZhcmlhZGljCglmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4KCjIwMDEtMDgtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmggKGh0YWJfaGFzaF9zdHJpbmcpOiBEZWNsYXJlLgoKMjAwMS0wOC0xMCAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBsaWJpYmVydHkuaCAobGJhc2VuYW1lKTogQ2hhbmdlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHRvIHJldHVybiBhCgljb25zdCBjaGFyIHBvaW50ZXIuCgoyMDAxLTA4LTAyICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIHhyZWdleC5oIChfUkVHRVhfUkVfQ09NUCk6IERlZmluZS4KCShyZV9jb21wKTogRGVmaW5lIHRvIHhyZV9jb21wLgoJKHJlX2V4ZWMpOiBEZWZpbmUgdG8geHJlX2V4ZWMuCgoyMDAxLTA3LTE4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB4cmVnZXgyLmg6IFBsYWNlIHVuZGVyIExHUEwgdmVyc2lvbiAyLjEuCgoyMDAxLTA3LTEwICBKZWZmIEpvaG5zdG9uICA8ampvaG5zdG5AcmVkaGF0LmNvbT4KCgkqIHhyZWdleC5oOiBOZXcgZmlsZSB0byBzdXBwb3J0IGxpYmliZXJ0eSByZWdleC4KCSogeHJlZ2V4Mi5oOiBEaXR0by4KCjIwMDEtMDUtMTYgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY2FybmVnaWVtZWxsb24uZWR1PgoKCSogcGFydGl0aW9uLmg6IEZpeCBtaXNzcGVsbGluZyBvZiBgaW1wbGVtZW50YXRpb24nLgoKMjAwMS0wNS0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaCAoTlVMTF9QVFIpOiBEZWxldGUuCgoyMDAxLTA1LTA3ICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogZGVtYW5nbGUuaDogVXNlIFBBUkFNUyBmb3IgYWxsIHByb3RvdHlwZXMuCgkqIHRlcm5hcnkuaDogVXNlIFBBUkFNUyBmb3IgYWxsIHByb3RvdHlwZXMuICBVc2UgUFRSLCBub3Qgdm9pZCAqLgoJTWFrZSBhcmd1bWVudHMgY29uc3RhbnQgd2hlcmUgcG9zc2libGUuCgoyMDAxLTA1LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX21heCk6IE5ldyBmdW5jdGlvbi4KCShzcGxheV90cmVlX21pbik6IExpa2V3aXNlLgoKMjAwMS0wNC0xNSAgRGFuaWVsIEJlcmxpbiAgPGRhbkBjZ3NvZnR3YXJlLmNvbT4KCgkqIHRlcm5hcnkuaDogTmV3IGZpbGUgLSBUZXJuYXJ5IHNlYXJjaCB0cmVlIGhlYWRlci4KCjIwMDEtMDQtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBhbnNpZGVjbC5oOiBBbGwgbG9naWMgZnJvbSBnY2MvZ2Fuc2lkZWNsLmggbW92ZWQgaGVyZS4KCjIwMDEtMDMtMzEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChhbGxvY2EpOiBIYW5kbGUgc2V0dGluZyBDX0FMTE9DQS4KCjIwMDEtMDMtMjAgIEppbSBCbGFuZHkgIDxqaW1iQHJlZGhhdC5jb20+CgoJKiBkZW1hbmdsZS5oIChlbnVtIGdudV92M19jb25zdHJ1Y3Rvcl9raW5kcywKCWlzX2dudV92M19tYW5nbGVkX2N0b3IsIGVudW0gZ251X3YzX2Rlc3RydWN0b3Jfa2luZHMsCglpc19nbnVfdjNfbWFuZ2xlZF9kdG9yKTogTmV3IGRlY2xhcmF0aW9ucy4KCjIwMDEtMDMtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBhbnNpZGVjbC5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBkZW1hbmdsZS5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBmbG9hdGZvcm1hdC5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBmbm1hdGNoLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGdldG9wdC5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBsaWJpYmVydHkuaDogQWRkIEZTRiBjb3B5cmlnaHQgbm90aWNlLgoJKiBtZDUuaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCSogb2JzdGFjay5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBzcGxheS10cmVlLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgoyMDAxLTAzLTEwICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgkgICAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGxpYmliZXJ0eS5oOiBBZGQgbGJhc2VuYW1lLgoKMjAwMS0wMy0wNiAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGxpYmliZXJ0eS5oOiBQcm90b3R5cGUgQ19hbGxvY2E7IGRlZmluZSBhbGxvY2EgdG8gZWl0aGVyCglfX2J1aWx0aW5fYWxsb2NhIG9yIENfYWxsb2NhIGFzIGFwcHJvcHJpYXRlLgoKMjAwMS0wMy0wMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHNhZmUtY3R5cGUuaCAoX3NjaF90ZXN0KTogQ2FzdCBlbnVtIGJpdCB0byB1bnNpZ25lZCBzaG9ydCBpbnQgZm9yIHBjYwoJY29tcGF0aWJpbGl0eS4KCjIwMDAtMTItMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIENPUFlJTkc6IFVwZGF0ZSB0byBjdXJyZW50CglmdHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L0xpY2Vuc2VzL0NPUFlJTkctMi4wIChmaXhlcyByZWZlcmVuY2VzCgl0byAxOXl5IGFzIGV4YW1wbGUgeWVhciBpbiBjb3B5cmlnaHQgbm90aWNlKS4KCjIwMDAtMTItMTYgIEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogc2FmZS1jdHlwZS5oOiBNYWtlIGNvZGUgd29yayBvbiBhbGwgdGFyZ2V0cyBhbmQgbm90IGp1c3Qgb24KCXRhcmdldHMgd2hlcmUgYSBjaGFyIGlzIDggYml0cy4KCjIwMDAtMTItMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBzYWZlLWN0eXBlLmg6IE5ldyBmaWxlLgoKMjAwMC0xMi0wNiAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBnZXRvcHQuaCBvYnN0YWNrLmg6IFN0YW5kYXJpemUgY29weXJpZ2h0IHN0YXRlbWVudC4KCjIwMDAtMTItMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkZW1hbmdsZS5oOiBDaGFuZ2UgIm5ld19hYmkiIHRvICJ2MyIgZXZlcnl3aGVyZS4KCjIwMDAtMTEtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBsaWJpYmVydHkuaDogTW92ZSAjaW5jbHVkZXMgdG8gdG9wLiAgUHJvdG90eXBlIHhtYWxsb2NfZmFpbGVkLgoKMjAwMC0xMS0xNSAgS2VubmV0aCBCbG9jayAgPGtlbm5ldGguYmxvY2tAY29tcGFxLmNvbT4KCgkqIGRlbWFuZ2xlLmg6IEFkZCBnbmF0IGFuZCBqYXZhIGRlbWFuZ2xlIHN0eWxlcy4KCjIwMDAtMTEtMDQgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGhhc2h0YWIuaCAoc3RydWN0IGh0YWIpOiBBZGQgbWVtYmVyIHJldHVybl9hbGxvY2F0aW9uX2ZhaWx1cmUuCgkoaHRhYl90cnlfY3JlYXRlKTogTmV3IHByb3RvdHlwZS4gIE1lbnRpb24gd2hpY2ggZnVuY3Rpb25zIG1heQoJcmV0dXJuIE5VTEwgd2hlbiB0aGlzIGlzIHVzZWQuCgoyMDAwLTExLTAzICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBoYXNodGFiLmg6IENoYW5nZSB2b2lkICogdG8gUFRSIHdoZXJlIG5lY2Vzc2FyeS4KCjIwMDAtMDktMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfcHJlZGVjZXNzb3IpOiBEZWNsYXJlLgoKMjAwMC0wOS0wNSAgSm9obiBEYXZpZCBBbmdsaW4gPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogbWQ1LmggKG1kNV91aW50MzIpOiBDaG9vc2UgdmlhIElOVF9NQVggaW5zdGVhZCBvZiBVSU5UX01BWC4KCjIwMDAtMDktMDQgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkeW4tc3RyaW5nLmg6IEFkanVzdCBmb3JtYXR0aW5nLgoJKGR5bl9zdHJpbmdfaW5zZXJ0X2NoYXIpOiBOZXcgbWFjcm8uICBOZXcgZGVjbGFyYXRpb24uCgoyMDAwLTA4LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIG1kNS5oOiBOZXcgZmlsZS4KCjIwMDAtMDgtMjQgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogbGliaWJlcnR5LmggKEFSUkFZX1NJWkUpOiBOZXcgbWFjcm8uCgoyMDAwLTA2LTIxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHluLXN0cmluZy5oIChkeW5fc3RyaW5nX2luaXQsIGR5bl9zdHJpbmdfbmV3LAoJZHluX3N0cmluZ19kZWxldGUsIGR5bl9zdHJpbmdfcmVsZWFzZSwgZHluX3N0cmluZ19yZXNpemUsCglkeW5fc3RyaW5nX2NsZWFyLCBkeW5fc3RyaW5nX2NvcHksIGR5bl9zdHJpbmdfY29weV9jc3RyLAoJZHluX3N0cmluZ19wcmVwZW5kLCBkeW5fc3RyaW5nX3ByZXBlbmRfY3N0ciwgZHluX3N0cmluZ19pbnNlcnQsCglkeW5fc3RyaW5nX2luc2VydF9jc3RyLCBkeW5fc3RyaW5nX2FwcGVuZCwgZHluX3N0cmluZ19hcHBlbmRfY3N0ciwKCWR5bl9zdHJpbmdfYXBwZW5kX2NoYXIsIGR5bl9zdHJpbmdfc3Vic3RyaW5nX2R5bl9zdHJpbmdfZXEpOgoJRGVmaW5lIGFzIHNhbWUgbmFtZSB3aXRoIF9fY3hhXyBwcmVwZW5kZWQsIGlmIElOX0xJQkdDQzIuCgkoZHluX3N0cmluZ19pbml0LCBkeW5fc3RyaW5nX2NvcHksIGR5bl9zdHJpbmdfY29weV9jc3RyLAoJZHluX3N0cmluZ19wcmVwZW5kLCBkeW5fc3RyaW5nX3ByZXBlbmRfY3N0ciwgZHluX3N0cmluZ19pbnNlcnQsCglkeW5fc3RyaW5nX2luc2VydF9jc3RyLCBkeW5fc3RyaW5nX2FwcGVuZCwgZHluX3N0cmluZ19hcHBlbmRfY3N0ciwKCWR5bl9zdHJpbmdfYXBwZW5kX2NoYXIsIGR5bl9zdHJpbmdfc3Vic3RyaW5nKTogQ2hhbmdlIHJldHVybiB0eXBlCgl0byBpbnQuCgoyMDAwLTA2LTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oIChkZW1hbmdsaW5nX3N0eWxlcyk6IFJlbW92ZSB0cmFpbGluZyBjb21tYSBpbiBlbnVtLgoKCSogZHluLXN0cmluZy5oIChkeW5fc3RyaW5nX2FwcGVuZF9jaGFyKTogQ2hhbmdlIHBhcmFtZXRlciBmcm9tCgljaGFyIHRvIGludC4KCjIwMDAtMDYtMDQgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkeW4tc3RyaW5nLmg6IE1vdmUgaGVyZSBmcm9tIGdjYy9keW4tc3RyaW5nLmguICBBZGQgbmV3IGZ1bmN0aW9ucy4KCgkqIGRlbWFuZ2xlLmggKERNR0xfR05VX05FV19BQkkpOiBOZXcgbWFjcm8uCgkoRE1HTF9TVFlMRV9NQVNLKTogT3IgaW4gRE1HTF9HTlVfTkVXX0FCSS4KCShjdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUpOiBBZGQgZ251X25ld19hYmlfZGVtYW5nbGluZy4KCShHTlVfTkVXX0FCSV9ERU1BTkdMSU5HX1NUWUxFX1NUUklORyk6IE5ldyBtYWNyby4KCShHTlVfTkVXX0FCSV9ERU1BTkdMSU5HKTogTGlrZXdpc2UuCgkoY3BsdXNfZGVtYW5nbGVfbmV3X2FiaSk6IE5ldyBkZWNsYXJhdGlvbi4KClR1ZSBNYXkgMzAgMTY6NTM6MzQgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoc3RydWN0IGZsb2F0Zm9ybWF0KTogQWRkIGZpZWxkIG5hbWUuCgoyMDAwLTA1LTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnZXRvcHQuaCAoZ2V0b3B0KTogQWxzbyBjaGVjayBIQVZFX0RFQ0xfKiB3aGVuIHByb3RvdHlwaW5nLgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogTGlrZXdpc2UuCgoyMDAwLTA1LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBhbnNpZGVjbC5oOiAjZGVmaW5lIF9fZXh0ZW5zaW9uX18gdG8gbm90aGluZyBpZgoJR0NDX1ZFUlNJT04gPCAyMDA4LgoKMjAwMC0wNS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaCAoZGVtYW5nbGVyX2VuZ2luZSk6IENvbnN0aWZ5LgoKVGh1IE1heSAgNCAxNzoxNToyNiAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIHNvcnQuaCAoc3lzL3R5cGVzLmgpOiBGaWxlIGluY2x1ZGVkIHVuY29uZGl0aW9ubmFseS4KCShzdGRkZWYuaCk6IEZpbGUgaW5jbHVkZSBvbmx5ICNpZmRlZiBfX1NURENfXy4KCjIwMDAtMDUtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHN5bWNhdC5oOiBSZW1vdmUgI2VuZGlmIGxhYmVsLgoKMjAwMC0wNC0yOCAgS2VubmV0aCBCbG9jayAgPGJsb2NrQHprMy5kZWMuY29tPgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAobGliaWJlcnR5X2RlbWFuZ2xlcnMpOiBuZXcgdGFibGUgZm9yIGRpZmZlcmVudCBzdHlsZXMuCgkoY3BsdXNfZGVtYW5nbGVfc2V0X3N0eWxlKTogTmV3IGZ1bmN0aW9uIGZvciBzZXR0aW5nIHN0eWxlLgoJKGNwbHVzX2RlbWFuZ2xlX25hbWVfdG9fc3R5bGUpOiBOZXcgZnVuY3Rpb24gdG8gdHJhbnNsYXRlIG5hbWUuCgoyMDAwLTA0LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaGFzaHRhYi5oIChoYXNoX3BvaW50ZXIpOiBEZWNsYXJlLgoJKGVxX3BvaW50ZXIpOiBMaWtld2lzZS4KCjIwMDAtMDQtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzb3J0Lmg6IE5ldyBmaWxlLgoKVHVlIEFwciAxOCAxNjoyMjozMCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogaGFzaHRhYi5oIChlbnVtIGluc2VydF9vcHRpb24pOiBOZXcgdHlwZS4KCShodGFiX2ZpbmRfc2xvdCwgaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogVXNlIGl0LgoKMjAwMC0wNC0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3ltY2F0Lmg6IEhvbm9yIGF1dG9jb25mIG1hY3JvIEhBVkVfU1RSSU5HSVpFLiAgQWRkCgljb21tZW50cy9jYXZlYXRzIHdpdGggcmVnYXJkIHRvIHRyYWRpdGlvbmFsIEMgYmVoYXZpb3IuCgoyMDAwLTA0LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX3JlbW92ZSk6IERlY2xhcmUuCgoyMDAwLTAzLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaGFzaHRhYi5oIChoYXNodmFsX3QpOiBOZXcgdHlwZS4KCShodGFiX2ZpbmRfd2l0aF9oYXNoKTogVXNlIGl0IGFzIGFuIGFyZ3VtZW50LgoJKGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCk6IExpa2V3aXNlLgoKMjAwMC0wMy0xNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBoYXNodGFiLmggKGh0YWJfdHJhdik6IE1vZGlmeSB0eXBlIHNvIHRoYXQgZmlyc3QgYXJnIGlzIG9mIHR5cGUKCXZvaWQgKiouCgkoaHRhYl9maW5kX3dpdGhfaGFzaCwgaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogRGVjbGFyZSBuZXcKCWZ1bmN0aW9ucy4KCjIwMDAtMDMtMDkgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJ0aXRpb24uaDogTmV3IGZpbGUuCgoyMDAwLTAzLTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBoYXNodGFiLmggKHN0cnVjdCBodGFiKTogQWRkIGRlbF9mLgoJKGh0YWJfZGVsKTogTmV3IHR5cGUuCgkoaHRhYl9jcmVhdGUpOiBBZGQgZm91cnRoIGFyZ3VtZW50LgoKMjAwMC0wMy0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaGFzaHRhYi5oIChoYXNoX3RhYmxlX3QpOiBSZW5hbWUgdG8gaHRhYl90LgoJKHN0cnVjdCBoYXNoX3RhYmxlKTogUmVuYW1lIHRvIHN0cnVjdCBodGFiLiAgU2hvcnRlbiBlbGVtZW50CgluYW1lcy4gIFJlb3JkZXIgZWxlbWVudHMgYnkgc2l6ZS4KCShodGFiX2hhc2gsIGh0YWJfZXEsIGh0YWJfdHJhdik6IE5ldyB0eXBlZGVmcyBmb3IgdGhlIGNhbGxiYWNrCglmdW5jdGlvbiBwb2ludGVycy4KCShoYXNoX3RhYmxlX2VudHJ5X3QpOiBEaXNjYXJkOyBqdXN0IHVzZSB2b2lkICogZm9yIGVsZW1lbnQKCXR5cGUuCgpTYXQgSmFuICAxIDE5OjA2OjUyIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIHN5bWNhdC5oIChTVFJJTkdYKSBbIV9fU1REQ19fIHx8IEFMTU9TVF9TVERDXTogQ2hhbmdlICI/IiB0byAicyIKCXRvIHN0cmluZ2lmeSBhcmd1bWVudCBzLgoKMTk5OS0xMi0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3RydWN0IHNwbGF5X3RyZWVfbm9kZSk6IFJlbmFtZSB0byAuLi4KCShzdHJ1Y3Qgc3BsYXlfdHJlZV9ub2RlX3MpOiAuLi4gdGhpcy4KCShzdHJ1Y3Qgc3BsYXlfdHJlZSk6IFJlbmFtZSB0byAuLi4KCShzdHJ1Y3Qgc3BsYXlfdHJlZV9zKTogLi4uIHRoaXMuCgoxOTk5LTExLTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChBVFRSSUJVVEVfTUFMTE9DKTogTmV3IG1hY3JvLgoKCSogbGliaWJlcnR5LmggKGJ1aWxkYXJndiwgZHVwYXJndiwgY29uY2F0LCBjaG9vc2VfdGVtcF9iYXNlLAoJbWFrZV90ZW1wX2ZpbGUsIHhtYWxsb2MsIHhjYWxsb2MsIHhzdHJkdXAsIHhtZW1kdXApOiBBZGQKCUFUVFJJQlVURV9NQUxMT0MuCgkoeGF0ZXhpdCk6IFJlbW92ZSBfX0dOVUNfXyBjaGVjaywgYWRkIEFUVFJJQlVURV9OT1JFVFVSTi4KCjE5OTktMTEtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oOiBJbmNsdWRlIHN0ZGFyZy5oIHdoZW4gQU5TSV9QUk9UT1RZUEVTIGlzIGRlZmluZWQuCgkoYXNwcmludGYsIHZhc3ByaW50Zik6IFByb3ZpZGUgZGVjbGFyYXRpb25zLgoKV2VkIE5vdiAxMCAxMjo0MzoyMSAxOTk5ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCQkJICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oOiBEZWZpbmUgYW5kIHRlc3QgYEdDQ19WRVJTSU9OJywgbm90IGBIQVZFX0dDQ19WRVJTSU9OJy4KCjE5OTktMTAtMjMgMDg6NTEgLTA3MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGJpdG1vdmVyLmNvbT4KCgkqIGhhc2h0YWIuaDogR2l2ZSBoYXNoX3RhYmxlX3QgYSBzdHJ1Y3QgdGFnLiAgQWRkIHByb3RvdHlwZXMKCWZvciBjbGVhcl9oYXNoX3RhYmxlX3Nsb3QgYW5kIHRyYXZlcnNlX2hhc2hfdGFibGUuICBDb3JyZWN0Cglwcm90b3R5cGUgb2YgYWxsX2hhc2hfdGFibGVfY29sbGlzaW9ucy4KCkZyaSBPY3QgMTUgMDE6NDc6NTEgMTk5OSAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QGxvb255LmN5Z251cy5jb20+CgoJKiBoYXNodGFiLmg6IE5ldyBmaWxlLgoKMTk5OS0xMC0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaCAoSEFWRV9HQ0NfVkVSU0lPTik6IE5ldyBtYWNyby4gIFVzZSBpdCBpbnN0ZWFkIG9mCglleHBsaWNpdGx5IHRlc3RpbmcgX19HTlVDX18gYW5kIF9fR05VQ19NSU5PUl9fLgoKCShBVFRSSUJVVEVfUFJJTlRGKTogVXNlIGBfX2Zvcm1hdF9fJywgbm90IGBmb3JtYXQnLgoKMTk5OS0wOS0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKG1ha2VfdGVtcF9maWxlKTogIEFkZCBhIHByb3RvdHlwZS4KClR1ZSBTZXAgMTQgMDA6MzU6MDIgMTk5OSAgTWFyYyBFc3BpZSA8ZXNwaWVAY3ZzLm9wZW5ic2Qub3JnPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogIE9wZW5CU0QgaGFzIGEgY29ycmVjdCBwcm90b3R5cGUuCgkoeHJlYWxsb2MpOiAgUmVtb3ZlIG91dGRhdGVkIGNvbW1lbnQuCgoxOTk5LTA5LTA3ICBKZWZmIEdhcnppayAgPGpnYXJ6aWtAcG9ib3guY29tPgoKCSogbGliaWJlcnR5LmggKHhtZW1kdXApOiBBZGQgcHJvdG90eXBlIGZvciBuZXcgZnVuY3Rpb24uCgoxOTk5LTA5LTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfZ3Jvdywgb2JzdGFja19ncm93MCk6IE1vdmUgKGNoYXIqKSBjYXN0cwoJaW4gY2FsbHMgdG8gYF9vYnN0YWNrX21lbWNweScgZnJvbSBoZXJlIC4uLgoKCShfb2JzdGFja19tZW1jcHkpOiAuLi4gdG8gaGVyZSwgZXhjZXB0IGluIHRoZSBfX1NURENfXyBjYXNlIHdoaWNoCglkb2Vzbid0IG5lZWQgaXQuCgoxOTk5LTA4LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAoZ2V0cHdkKTogUHJvdG90eXBlLgoKMTk5OS0wOC0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9pbnNlcnQpOiBSZXR1cm4gdGhlIG5ldyBub2RlLgoKMTk5OS0wNy0xMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBhbnNpZGVjbC5oOiBDb3B5IGF0dHJpYnV0ZSBzdXBwb3J0IG1hY3JvcyBmcm9tIGVnY3MuCgoxOTk5LTA0LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2NvbXBhcmVfcG9pbnRlcnMpOiBEZWNsYXJlLgoKMTk5OS0wMy0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9jb21wYXJlX2ludHMpOiBEZWNsYXJlLgoKV2VkIE1hciAyNCAxMjo0NjoyOSAxOTk5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGFteS5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQ3lnd2lueywzMn0gc2hvdWxkIGhhdmUgdGhlIHByb3RvdHlwZS4KCk1vbiBEZWMgMTQgMDk6NTM6MzEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgY2hlY2sgSU5fR0NDIGFueW1vcmUuCgkqIHNwbGF5LXRyZWUuaDogTGlrZXdpc2UuCgpUdWUgRGVjICA4IDAwOjMwOjMxIDE5OTggIEVsZW5hIFphbm5vbmkgIDxlemFubm9uaUBrd2lrZW1hcnQuY3lnbnVzLmNvbT4KCgkqIGRlbWFuZ2xlLmg6IChETUdMX0VERyk6IG5ldyBtYWNybyBmb3IgS3VjayBhbmQgQXNzb2NpYXRlcwoJKERNR0xfU1RZTEVfTUFTSyk6IG1vZGlmeSB0byBpbmNsdWRlIEt1Y2sgYW5kIEFzc29jIHN0eWxlCgkoZGVtYW5nbGluZ19zdHlsZXMpOiBhZGQgbmV3IGVkZ19kZW1hbmdsaW5nIHN0eWxlCgkoRURHX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogbmV3IG1hY3JvCgkoRURHX0RFTUFOR0xJTkcpOiBuZXcgbWFjcm8KCShETUdMX0hQKTogbmV3IG1hY3JvLCBmb3IgSFAvYUNDIGNvbXBpbGVyLgoJKERNR0xfU1RZTEVfTUFTSyk6IG1vZGlmeSB0byBpbmNsdWRlIG5ldyBIUCdzIHN0eWxlLgoJKGRlbWFuZ2xpbmdfc3R5bGVzKTogYWRkIG5ldyBocF9kZW1hbmdsaW5nIHZhbHVlLgoJKEhQX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogbmV3IG1hY3JvLgoJKEFSTV9ERU1BTkdMSU5HKTogY29lcmNlIHRvIGludC4KCShIUF9ERU1BTkdMSU5HKTogbmV3IG1hY3JvLgoKRnJpIE5vdiAyMCAxMzoxNDowMCAxOTk4ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBBZGQgcHJvdG90eXBlIGZvciBGcmVlQlNELgoKRnJpIE5vdiAxMyAxOToxOToxMSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaDogUHJvdG90eXBlIHhjYWxsb2MuCgpTdW4gTm92ICA4IDE3OjQyOjI1IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmg6IFdyYXAgcHJvYmxlbWF0aWMgbWFjcm9zIHdpdGggIUlOX0dDQy4KCgkqIGRlbWFuZ2xlLmg6IE5ldmVyIGRlZmluZSBQQVJBTVMoKS4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KClNhdCBOb3YgIDcgMTY6MDQ6MDMgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgaW5jbHVkZSBnYW5zaWRlY2wuaC4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KClRodSBPY3QgMjIgMTk6NTg6MDAgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3BsYXktdHJlZS5oOiBXcmFwIGZ1bmN0aW9uIHBvaW50ZXIgcGFyYW1ldGVyIGRlY2xhcmF0aW9ucyBpbgoJUEFSQU1TKCkgbWFjcm8uCgoxOTk4LTEwLTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogc3BsYXktdHJlZS5oOiBOZXcgZmlsZS4KCkZyaSBPY3QgIDkgMDA6MDI6MDMgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWVyZ2UgZGV2byBhbmQgZWdjcyBpbmNsdWRlIGRpcmVjdG9yaWVzLgoKU2F0IFNlcCAgNSAxMjoxNjozMyAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaCwgb2JzdGFjay5oOiBVcGRhdGVkIGZyb20gZ2NjLgoKMTk5OC0wOC0wMyAgSmFzb24gTW9sZW5kYSAgKGpzbUBidWdzaGFjay5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5LmggKHhleGl0KTogQ2hhbmdlIGRlY2wgdG8gdXNlIG1vZGVybiBHQ0MgYXR0cmlidXRlCgl0byBpbmRpY2F0ZSBleGl0IGRvZXMgbm90IHJldHVybi4KCk1vbiBKdW4gIDEgMTM6NDg6MzIgMTk5OCAgSmFzb24gTW9sZW5kYSAgKGNyYXNoQGJ1Z3NoYWNrLmN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpUdWUgRmViIDI0IDEzOjA1OjAyIDE5OTggIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBNZW1iZXIgYHN5bWJvbCcgcmVuYW1lZCB0byBgc3ltYm9scycKCWFuZCBtYWRlIGFuICJhc3ltYm9sICoqIi4gIE5ldyBtZW1iZXIgbnVtX3N5bWJvbHMuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBVcGRhdGUuCgpUdWUgRmViIDE3IDEyOjMyOjE4IDE5OTggIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2ZldGNoX3JlZ2lzdGVyLCBzaW1fc3RvcmVfcmVnaXN0ZXIpOiBBZGQKCXJlZ2lzdGVyIGxlbmd0aCBwYXJhbWV0ZXIuICBGdW5jdGlvbnMgcmV0dXJuIGFjdHVhbCBsZW5ndGggb2YKCXJlZ2lzdGVyLgoKVGh1IEZlYiAxMiAxNjoyOTowMSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBnZXRvcHQuaDogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KCldlZCBGZWIgMTEgMTY6NTY6MDYgMTk5OCAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHN5bWNhdC5oOiBOZXcgZmlsZS4KCk1vbiBGZWIgIDIgMTc6MTM6MzEgMTk5OCAgU3RldmUgSGF3b3J0aCAgPHN0ZXZlQHBtLmNzZS5ybWl0LkVEVS5BVT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl90aWMzMCk6IERlY2xhcmUuCgpUaHUgSmFuIDIyIDE2OjIzOjU5IDE5OTggIEZyZWQgRmlzaCA8Zm5mQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBmbGFnIElOU05fSEFTX1JFTE9DIHRvIHRlbGwgZGlzYXNzZW1ibHkKCWZ1bmN0aW9uIHRoZXJlIGlzIGEgcmVsb2Mgb24gdGhpcyBsaW5lLgoKTW9uIERlYyAgOCAxMToyMjoyMyAxOTk3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBSZW1vdmUgcHJvdG90eXBlIG9mIGRpc2FzbV9zeW1hZGRyKCkgYXMgdGhpcyBmdW5jdGlvbgoJbm8gbG9uZ2VyIGV4aXN0cy4KClR1ZSBEZWMgIDIgMTA6MjA6NTMgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNtX3N5bWFkZHIpOiBOZXcgcHJvdG90eXBlLgoKTW9uIERlYyAgMSAyMDoyNDoxOCAxOTk3ICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBjb2ZmL3NoLmggKFJfU0hfU1dJVENIOCk6IE5ldy4KCk1vbiBEZWMgIDEgMTE6Mjk6MzUgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKENCX1NZU0NBTEwpOiBDb21tZW50IG91dCBhcmcgbmFtZXMgaW4gcHJvdG90eXBlcy4KCldlZCBOb3YgMjYgMTY6NDc6NTggMTk5NyAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9TWVNDQUxMKTogQ29uc2lzdGFudGx5IHVzZSBuYW1lcyBmb3IgcHJvdG90eXBlCglhcmd1bWVudHMuCgpXZWQgTm92IDI2IDExOjM5OjMwIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9TWVNDQUxMKTogQ2hhbmdlIGJ5dGUgY291bnQgYXJndW1lbnRzIHRvCgl7cmVhZCx3cml0ZX1fbWVtIHRvIGBpbnQnLiAgTmV3IG1lbWJlciBgbWFnaWMnLgoJKENCX1NZU0NBTExfTUFHSUMsQ0JfU1lTQ0FMTF9JTklUKTogTmV3IG1hY3Jvcy4KClR1ZSBOb3YgMjUgMDE6MzU6NTIgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BzZWJhLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChzdHJ1Y3Qgc3RhdCk6IE1vdmUgZm9yd2FyZCBkZWNsIHVwLgoJKGhvc3RfY2FsbGJhY2spOiBQYXNzIHN0YXQgc3RydWN0IHBvaW50ZXIgdG8gc3RhdCxmc3RhdC4KCShDQl9TWVNfbm5uKTogUmVvcmdhbml6ZS4KCShDQl9TWVNDQUxMKTogTmV3IG1lbWJlcnMgcDEscDIuCgkoY2JfaG9zdF90b190YXJnZXRfc3RhdCk6IERlbGV0ZSBmb3VydGggYXJnLgoKU2F0IE5vdiAyMiAyMzozNDoxNSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9zdG9wX3JlYXNvbik6IENsYXJpZnkgc2ltX3NpZ25hbGxlZCBTSUdSQwoJYXJndW1lbnQuCgpNb24gTm92IDE3IDE0OjAwOjUxIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAc2ViYS5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfVEFSR0VUX0RFRlNfTUFQKTogUmVuYW1lZCBmcm9tIHRhcmdldF9kZWZzX21hcC4KCShob3N0X2NhbGxiYWNrKTogQWRkIHN0YXQsIGZzdGF0LCBzeXNjYWxsX21hcCwgZXJybm9fbWFwLCBvcGVuX21hcCwKCXNpZ25hbF9tYXAsIHN0YXRfbWFwLgoJKGVycm5fbWFwLG9wZW5fbWFwKTogUmVuYW1lZCB0byBjYl9pbml0X2Zvb19tYXAuCgkoY2JfaG9zdF90b190YXJnZXRfZXJybm8sY2JfdGFyZ2V0X3RvX2hvc3Rfb3Blbik6IFJlbmFtZWQgZnJvbQoJaG9zdF90b190YXJnZXRfZXJybm8sdGFyZ2V0X3RvX2hvc3Rfb3Blbi4KCShjYl9yZWFkX3RhcmdldF9zeXNjYWxsX21hcHMpOiBBZGQgcHJvdG90eXBlLgoJKGNiX3RhcmdldF90b19ob3N0X3N5c2NhbGwpOiBMaWtld2lzZS4KCShjYl9ob3N0X3RvX3RhcmdldF9zdGF0KTogTGlrZXdpc2UuCgkoY2Jfc3lzY2FsbCk6IExpa2V3aXNlLgoJKENCX1NZU197ZXhpdCxvcGVuLGNsb3NlLHJlYWQsd3JpdGUsbHNlZWssdW5saW5rLGdldHBpZCxraWxsLGZzdGF0LAoJYXJndmxlbixhcmd2LGNoZGlyLHN0YXQsY2htb2QsdXRpbWUsdGltZX0pOiBEZWZpbmUuCgkoQ0JfU1lTQ0FMTCk6IE5ldyB0eXBlLgoJKENCX1JDKTogTmV3IGVudW0uCgpGcmkgTm92ICA3IDEwOjM0OjA5IDE5OTcgIFJvYiBTYXZveWUgIDxyb2JAZGFya3N0YXIuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBBZGQgZXh0ZXJuICJDIiB7IHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggQysrCglwcm9ncmFtcy4KCSogcmVtb3RlLXNpbS5oOiAgQWRkIGV4dGVybiAiQyIgeyBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIEMrKwoJcHJvZ3JhbXMuCgpUdWUgT2N0IDE0IDE2OjA3OjUxIDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkCgknc3ltYm9sX2F0X2FkZHJlc3NfZnVuYycuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXNlIG5ldyBmaWVsZCB3aXRoCglnZW5lcmljX3N5bWJvbF9hdF9hZGRyZXNzLgoKTW9uIE9jdCAxMyAxMDoxNzoxNSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IENsYXJpZnkgc2ltX3JlYWQsIHNpbV93cml0ZSBNRU0gYXJndW1lbnQuCgpXZWQgU2VwIDI0IDE4OjAzOjEwIDE5OTcgIFN0dSBHcm9zc21hbiAgPGdyb3NzbWFuQGJhYnlsb24tNS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChTSU1fUkMpOiAgQWRkIGEgYnVuY2ggb2YgbmV3IHJldHVybiBjb2RlcyBmb3IKCWJyZWFrcG9pbnQgc3R1ZmYuCgkqIEFkZCBmdW5jdGlvbnMgdG8gdGVsbCB0aGUgc2ltdWxhdG9yIHRvIHNldC9jbGVhci9lbmFibGUvZGlzYWJsZQoJaW50cmluc2ljIGJyZWFrcG9pbnRzLgoKVGh1IEF1ZyAyOCAxOTo0MTo0MiAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoZHVwYXJndik6IEFkZCBwcm90b3R5cGUuCgpUdWUgQXVnIDI2IDEyOjI1OjQ5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2NyZWF0ZV9pbmZlcmlvcik6IEFkZCBBQkZEIGFyZy4gRG9jdW1lbnQuCgpNb24gQXVnIDI1IDEwOjUwOjUxIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX29wZW4pOiBBZGQgQUJGRCBhcmcuIERvY3VtZW50LgoKRnJpIEF1ZyAgOCAxNjo0Mzo1NiAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChhcmNfZ2V0X2Rpc2Fzc2VtYmxlcik6IERlY2xhcmUuCgpXZWQgSnVsIDMwIDExOjM5OjUwIDE5OTcgIFBlciBCb3RobmVyICA8Ym90aG5lckBkZW5lYi5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoRE1HTF9KQVZBKTogIE5ldyBvcHRpb24gdG8gcmVxdWVzdCBKYXZhIGRlbWFuZ2xpbmcuCgpUdWUgSnVsIDIyIDE3OjU5OjU0IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChQRVhFQ1VURV8qKTogRGVmaW5lLgoJKHBleGVjdXRlLCBwd2FpdCk6IERlY2xhcmUuCgpGcmkgSnVuICA2IDEzOjAyOjMzIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2tpbGwpOiBNYXJrIGFzIGRlcHJlY2lhdGVkLgoKRnJpIE1heSAyMyAxMzo0Mzo0MSAxOTk3ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgdGFza19saW5rIG1lbWJlci4KClRodSBNYXkgMjIgMTE6MzI6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBSZXZpZXcgZG9jdW1lbnRhdGlvbi4gIENsYXJpZnkgcmVzdHJpY3Rpb25zIG9uCgl3aGVuIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkLgoKV2VkIE1heSAyMSAxNjo0Nzo1MyAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9zZXRfcHJvZmlsZV9zaXplKTogQWRkIHByb3RvdHlwZSwgZG9jdW1lbnQgYXMKCWRlcHJlY2lhdGVkLgoKVHVlIE1heSAyMCAwOTozMjoyMiAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9vcGVuKTogQWRkIGNhbGxiYWNrIHN0cnVjdC4KCShzaW1fc2V0X2NhbGxiYWNrcyk6IERyb3AgU0lNX0RFU0MgYXJndW1lbnQuIERvY3VtZW50LgoJKHNpbV9zaXplKTogUmVtb3ZlIHJlY2VudGx5IGFkZGVkIFNJTV9ERVNDIGFyZ3VtZW50LiBEb2N1bWVudC4KCk1vbiBNYXkgMTkgMTk6MTQ6NDQgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBQYXNzIFNEIGludG8gc2ltX3NpemUuCgpUaHUgTWF5IDE1IDAxOjI0OjE2IDE5OTcgIE1hcmsgQWxleGFuZGVyICA8bWFya2FAY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suaCAob2JzdGFja19zcGVjaWZ5X2FsbG9jYXRpb25fd2l0aF9hcmcsIG9ic3RhY2tfY2h1bmtmdW4sCglvYnN0YWNrX2ZyZWVmdW4pOiBFbGltaW5hdGUgY29tcGlsZSB3YXJuaW5ncyBpbiBnZGIuCgpUdWUgTWF5IDEzIDEwOjIxOjE0IDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb2ZmL2FybS5oIChjb25zdGFudHMpOiAgIEFkZGVkIG5ldyBmbGFnIGJpdHMgRl9BUENTXzI2IGFuZAoJRl9BUENTX1NFVCBmb3IgdGhlIGZfZmxhZ3MgZmllbGQgb2YgdGhlIGZpbGVoZHIgc3RydWN0dXJlLiAgQWRkZWQgbmV3CglmbGFnczogRl9BUENTMjYsIEZfQVJNXzIsIEZfQVJNXzMsIEZfQVJNXzcsIEZfQVJNXzdUIHRvIHN0b3JlCglpbmZvcm1hdGlvbiBpbiB0aGUgZmxhZ3MgZmllbGQgb2YgdGhlIGludGVybmFsX2Ygc3RydWN0dXJlIHVzZWQgYnkgQkZECglyb3V0aW5lcy4KClR1ZSBBcHIgMjIgMTA6MjQ6MzQgMTk5NyAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9ieXRlb3JkZXJzKTogQWRkIGNvbW1lbnRzIGZvciBwcmV2aW91cwoJZm9ybWF0cyBhbmQgYWRkIGZsb2F0Zm9ybWF0X2xpdHRsZWJ5dGVfYmlnd29yZCwgcHJpbWFyaWx5IGZvciBBUk0uCglBZGQgZGVjbGFyYXRpb24gZm9yIGZsb2F0Zm9ybWF0X2llZWVfZG91YmxlX2xpdHRsZWJ5dGVfYmlnd29yZC4KCkZyaSBBcHIgMTggMTM6MDQ6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fc3RvcCk6IE5ldyBpbnRlcmZhY2UgLSBhc3luY2hyb25vdXMKCW5vdGlmaWNhdGlvbiBvZiBhIHJlcXVlc3QgdG8gc3RvcCAvIHN1c3BlbmQgdGhlIHJ1bm5pbmcKCXNpbXVsYXRpb24uCgoJKiByZW1vdGUtc2ltLmggKGVudW0gc2ltX3N0b3ApOiBBZGQgc2ltX3J1bm5pbmcgYW5kIHNpbV9wb2xsaW5nIGFzCglzdGF0ZXMgZm9yIHVzZSBpbnRlcm5hbCB0byBzaW11bGF0b3JzLgoKCSogY2FsbGJhY2suaCAoc3RydWN0IGhvc3RfY2FsbGJhY2tfc3RydXQpOiBQdXQgYSBtYWdpYyBudW1iZXIgYXQKCXRoZSBlbmQgb2YgdGhlIHN0cnVjdCB0byBhbGxvdyBiYXNpYyBjaGVja2luZy4KCShzdHJ1Y3QgaG9zdF9jYWxsYmFja19zdHJ1Y3QgKTogQWRkIHBvbGxfcXVpdCAtIHNvCgl0aGF0IHRoZSBjb25zb2xlIGV0YyBjYW4gYmUgcG9sbGVkIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzLgoKVGh1IEFwciAxNyAwMjoxNzoxMiAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzdHJ1Y3QgX2JmZCk6IERlY2xhcmUuCgkoc2ltX2xvYWQpOiBSZXR1cm4gU0lNX1JDLiAgTmV3IGFyZyBgYWJmZCcuCgkoc2ltX2NyZWF0ZV9pbmZlcmlvcik6IFJldHVybiBTSU1fUkMuICBEZWxldGUgYXJnIGBzdGFydF9hZGRyZXNzJy4KCldlZCBBcHIgIDIgMTc6MDk6MTIgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV90cmFjZSwgc2ltX3NpemUpOiBNYWtlIHRoZXNlIGdsb2JhbC4gIFRoZXkKCXdpbGwgZ28gYXdheSBzaG9ydGx5LgoKV2VkIEFwciAgMiAxNToyMzo0OSAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChTSU1fT1BFTl9LSU5ELCBTSU1fUkMpOiBOZXcgZW51bXMuCgkoc2ltX29wZW4pOiBOZXcgYXJndW1lbnQgYGtpbmQnLgoKV2VkIEFwciAgMiAxNDo0NTo1MSAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBDT1BZSU5HOiBVcGRhdGUgRlNGIGFkZHJlc3MuCgpGcmkgTWFyIDI4IDE1OjI5OjU0IDE5OTcgIE1pa2UgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAodG9wIGxldmVsKTogSW5jbHVkZSBzdGRhcmcuaCBvciB2YXJhcmdzLmggaWYKCXZhX3N0YXJ0IGlzIG5vdCBkZWZpbmVkLgoJKGhvc3RfY2FsbGJhY2tfc3RydWN0KTogTWFrZSB7LGV9dnByaW50Zl9maWx0ZXJlZCB0YWtlIGEgdmFfbGlzdAoJaW5zdGVhZCBvZiB2b2lkICosIHNpbmNlIHZhX2xpc3QgbWlnaHQgYmUgYW4gYXJyYXkgb3Igc3RydWN0dXJlCgl0eXBlLgoKRnJpIE1hciAyOCAxNTo0NDo0MSAxOTk3ICBILkouIEx1ICA8aGpsQGdudS5haS5taXQuZWR1PgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQWRkIHByb3RvdHlwZSBmb3IgZ2xpYmMgYW5kIGxpbnV4LgoKTW9uIE1hciAxNyAxOToyMjoxMiAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBvYmphbGxvYy5oOiBOZXcgZmlsZS4KCk1vbiBNYXIgMTcgMTQ6NTc6NTUgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IE5ldyBmaWxlLCBjb3BpZWQgaW4gZnJvbSBnZGIvcmVtb3RlLXNpbS5oLiAgT25lCglkYXkgdGhpcyB3aWxsIGJlIHBsYWNlZCBpbiBhIGRpcmVjdG9yeSBvZiBpdHMgb3duLgoKU2F0IE1hciAxNSAxOTowMDoxNCAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSB0byBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKVGh1IE1hciAgNiAxNTo0Njo1OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGtyZW12YXguY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKHN0cnVjdCBob3N0X2NhbGxiYWNrX3N0cnVjdCk6IEFkZCBjYWxsYmFja3MgLQoJZmx1c2hfc3Rkb3V0LCB3cml0ZV9zdGRlcnIsIGZsdXNoX3N0ZGVyciwgdnByaW50Zl9maWx0ZXJlZCwKCWV2cHJpbnRmX2ZpbHRlcmVkLiAgRGVsZXRlIHJlZHVuZGFudCBjYWxsYmFja3MgLSBwcmludGZfZmlsdGVyZWQuCgpUaHUgRmViIDI3IDIzOjE4OjI3IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBSZW1vdmUgbHByZWZpeCBhbmQgbHByZWZpeF9sZW4KCWZpZWxkcy4KClR1ZSBGZWIgMjUgMDA6MTA6NDkgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUKCWJ5dGVzX3Blcl9jaHVuayBhbmQgZGlzcGxheV9lbmRpYW4uCgpNb24gRmViIDI0IDE3OjQ3OjAyIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCglGcm9tIEVyaWMgWW91bmdkYWxlIDxlcmljQGFuZGFudGUuamljLmNvbT46CgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9leHByKTogRGVmaW5lLgoJKHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZGVwcyk6IERlZmluZS4KCShzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUpOiBEZWZpbmUuCgpUaHUgRmViICA2IDE0OjIwOjAxIDE5OTcgIE1hcnRpbiBNLiBIdW50ICA8aHVudEBwaXp6YS5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiAoZGlzYXNzZW1ibGVfaW5mbyk6ICBBZGQgbmV3IGZpZWxkcwoJYnl0ZXNfcGVyX2NodW5rIGFuZCBkaXNwbGF5X2VuZGlhbiB0byBjb250cm9sIHRoZQoJZGlzcGxheSBvZiByYXcgaW5zdHJ1Y3Rpb25zLgoKU3VuIERlYyAgOCAxNzoxMToxMiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoaG9zdF9jYWxsYmFjayk6IE5ldyBtZW1iZXIgYGVycm9yJy4KCldlZCBOb3YgMjAgMDA6NDA6MjMgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmg6IE5ldyBmaWxlLCBtb3ZlZCBoZXJlIGZyb20gZ2RiLgoKTW9uIE5vdiAxOCAxNjozNDowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogQ2hlY2tpbiBhZ2FpbjsgbGFzdCBjaGVja2luIGZhaWxlZCBkdWUgdG8gc3RpY2t5IHRhZy4KCldlZCBOb3YgMTMgMDg6MjI6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IFJldmVydCBsYXN0IGNvbW1pdCBkdWUgdG8gY29uZmxpY3RzIHdpdGggaHB1eAoJc3lzdGVtIGhlYWRlcnMuCgpUdWUgTm92IDEyIDE2OjMxOjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBNb3ZlIHByb3RvdHlwZXMgZnJvbSBhcmd2LmMgaGVyZS4KClRodSBPY3QgMzEgMTQ6NTY6MTggMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGFuc2lkZWNsLmggKFZQQVJBTVMsVkFfU1RBUlQpOiBEZWZpbmUuCgpGcmkgT2N0IDI1IDEyOjA4OjA0IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IEFkZCBieXRlc19wZXJfbGluZSBmaWVsZC4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUgYnl0ZXNfcGVyX2xpbmUgZmllbGQuCgpUaHUgT2N0IDI0IDE3OjEwOjAxIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IEFkZCBzeW1ib2wgZmllbGQuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplIHN5bWJvbCBmaWVsZC4KClRodSBPY3QgMTcgMTE6MTc6NDAgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tMzJyKTogRGVjbGFyZS4KCk1vbiBPY3QgMTQgMjM6NTY6NTIgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IERlY2xhcmUgcGFyYW1ldGVyIHR5cGVzIGZvciB4bWFsbG9jIGFuZCB4cmVhbGxvYy4KClRodSBPY3QgIDMgMTM6NDU6MjcgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZm5tYXRjaC5oOiBOZXcgZmlsZS4KClRodSBPY3QgIDMgMTA6MzM6MTQgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX21uMTB4MDApOiBEZWxldGUgZGVjbGFyYXRpb24uCgkocHJpbnRfaW5zbl9tbjEwMjAwLCBwcmludF9pbnNuX21uMTAzMDApOiBEZWNsYXJlLgoKV2VkIE9jdCAgMiAyMToyNDo0MyAxOTk2ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbW4xMHgwMCk6IERlY2xhcmUuCgpNb24gU2VwIDMwIDEzOjU2OjExIDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IFJlbW92ZSAjaWZuZGVmIFBSSVZBVEVfWE1BTExPQy4KClNhdCBBdWcgMzEgMTM6Mjc6MDYgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3Y4NTApOiBEZWNsYXJlLgoKVHVlIEF1ZyAxMyAxNjoxMDozMCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgQ2hhbmdlIGJjb3B5IHRvIG1lbWNweS4gIFdvcmtzIGJldHRlciBvbiBQb3NpeAoJc3lzdGVtcywgd2hpY2ggZ2VuZXJhbGx5IGxhY2sgYmNvcHkuCgpNb24gQXVnIDEyIDE3OjAzOjE4IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oOiAgQ2hhbmdlIFdJTjMyIHRvIF9XSU4zMi4KCkZyaSBKdWwgMjYgMTM6NTg6MTggMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgZmxhdm91ciBmaWVsZC4KCShwcmludF9pbnNuX2FscGhhKTogRGVjbGFyZS4KCShwcmludF9pbnNuX2FscGhhX29zZiwgcHJpbnRfaW5zbl9hbHBoYV92bXMpOiBEb24ndCBkZWNsYXJlLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6IEluaXRpYWxpemUgZmxhdm91ciBmaWVsZC4KClR1ZSBKdWwgMjMgMTc6Mzc6NTggMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoUFJJVkFURV9YTUFMTE9DKTogRW5jbG9zZSB4bWFsbG9jL3hyZWFsbG9jCglkZWZpbml0aW9ucyBpbnNpZGUgI2lmbmRlZiBzbyB0aGF0IHByb2dyYW1zIHRoYXQgd2FudCB0bwoJY2FuIGRlZmluZSBQUklWQVRFX1hNQUxMT0MgYW5kIHRoZW4gZGVmaW5lIHhtYWxsb2MgYW5kCgl4cmVhbGxvYyBhbnl3YXkgdGhleSB3YW50LgoJKGJhc2VuYW1lKTogRG9jdW1lbnQgaW4gc291cmNlIHRoYXQgd2UgY2FuJ3QgZGVjbGFyZSB0aGUKCXBhcmFtZXRlciB0eXBlIGJlY2F1c2UgaXQgaXMgZGVjbGFyZWQgaW5jb25zaXN0ZW50bHkgYWNyb3NzCglkaWZmZXJlbnQgc3lzdGVtcy4KCk1vbiBKdWwgMjIgMTM6MTY6MTMgMTk5NiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAdGFtdS5lZHU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYWxwaGEpOiBEb24ndCBkZWNsYXJlLgoJKHByaW50X2luc25fYWxwaGFfb3NmLCBwcmludF9pbnNuX2FscGhhX3Ztcyk6IERlY2xhcmUuCgpXZWQgSnVsIDE3IDE0OjQ1OjEyIDE5OTYgIE1hcnRpbiBNLiBIdW50ICA8aHVudEBwaXp6YS5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiAocHJpbnRfaW5zbl9kMTB2KTogRGVjbGFyZS4KCk1vbiBKdWwgMTUgMTY6NTU6MzggMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogIEdldCByaWQgb2YgZGVjbHMgZm9yIHByaW50X2luc25faTgwODYsCglwcmludF9pbnNuX3NwYXJjNjQgYW5kIHByaW50X2luc25fc3BhcmNsaXRlLgoJKiAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogIFNwbGl0IGludG8gdHdvIHBpZWNlcy4gIE9uZSwKCUlOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIIGluaXRzIGV2ZXJ5dGhpbmcgZXhjZXB0IGZvciBlbmRpYW4sCgltYWNoLCBhbmQgYXJjaC4KCkZyaSBKdWwgMTIgMTA6MTk6MjcgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pODA4Nik6ICBEZWNsYXJlLgoKV2VkIEp1bCAgMyAxNjowMjozOSAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3NwYXJjbGl0ZSk6ICBEZWNsYXJlLgoKVHVlIEp1biAxOCAxNjowMjo0NiAxOTk2ICBKZWZmcmV5IEEuIExhdyAgPGxhd0BydGwuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9oODMwMHMpOiBEZWNsYXJlLgoKVHVlIEp1biAxOCAxNToxMTozMyAxOTk2ICBLbGF1cyBLYWVtcGYgIDxra2FlbXBmQHByb2dpcy5kZT4KCgkqIGZvcGVuLXZtcy5oOiBOZXcgZmlsZS4KClR1ZSBKdW4gIDQgMTg6NTg6MTYgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBub3RpY2VfYWxsIGZpZWxkLgoKRnJpIEFwciAyNiAxMDozMzoxMiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoI2lmZGVmIElOX0dDQyk6ICNpbmNsdWRlICJnYW5zaWRlY2wuaCIuCgkoUFJPVE8sUFRSLGNvbnN0KTogRGVsZXRlLgoKTW9uIEFwciAyMiAxNzoyNzo0MiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHRyYWRpdGlvbmFsX2Zvcm1hdCBmaWVsZC4KCk1vbiBBcHIgMTUgMTU6MTY6NTYgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChjaG9vc2VfdGVtcF9iYXNlKTogQWRkIHByb3RvdHlwZS4KClR1ZSBNYXIgMTIgMTc6Mjk6NDYgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfd3JhcHBlZF9saW5rX2hhc2hfbG9va3VwKTogRGVjbGFyZS4KCShzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCB3cmFwX2hhc2ggZmllbGQuCgpXZWQgRmViIDE0IDE2OjQ5OjE3IDE5OTYgIE1hcnRpbiBBbmFudGhhcmFtYW4gIDxtYXJ0aW5AbWFpbC5pbWVjaC51bmktZHVpc2J1cmcuZGU+CgoJKiBpZWVlLmggKGllZWVfcmVjb3JkX2VudW1fdHlwZSk6IERlZmluZQoJaWVlZV9leHRlcm5hbF9yZWZlcmVuY2VfaW5mb19lbnVtLgoKRnJpIEZlYiAgMiAxNzowOToyNSAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoRElTQVNNX1JBV19JTlNOKTogRGVsZXRlLgoKVHVlIEphbiAyMyAwOToyMTo0NyAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogU2V0IGVuZGlhbiB0byBCRkRfRU5ESUFOX1VOS05PV04uCglOZXcgYXJndW1lbnQgRlBSSU5URl9GVU5DLgoKTW9uIEphbiAyMiAxNjozNzo1OSAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IE5ldyBtZW1iZXJzIGFyY2gsIG1hY2gsIGVuZGlhbi4KCShJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBJbml0aWFsaXplIHRoZW0uCgkoRElTQVNNX1JBV19JTlNOeyxGTEFHfSk6IERlZmluZS4KClRodSBKYW4gMTggMTE6MzI6MzggMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogQ2hhbmdlIG9wbmFtZSBwYXJhbWV0ZXIgdG8KCWNvbnN0IGNoYXIgKi4KCShjcGx1c19tYW5nbGVfb3BuYW1lKTogQ2hhbmdlIHJldHVybiB0eXBlIGFuZCBvcG5hbWUgcGFyYW1ldGVyIHRvCgljb25zdCBjaGFyICouCgpGcmkgSmFuICA1IDAwOjAxOjIyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGllZWUuaCAoZW51bSBpZWVlX3JlY29yZCk6IEFkZCBpZWVlX2Fzbl9yZWNvcmRfZW51bSwKCWllZWVfYXRfcmVjb3JkX2VudW0sIGllZWVfdHlfcmVjb3JkX2VudW0sIGllZWVfYXRuX3JlY29yZF9lbnVtLAoJaWVlZV9iYl9yZWNvcmRfZW51bSwgYW5kIGllZWVfYmVfcmVjb3JkX2VudW0uCgpXZWQgSmFuICAzIDEzOjEyOjA5IDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogb2JzdGFjay5oOiBVcGRhdGUgY29weXJpZ2h0IHRvIDE5OTYuCgkoX29ic3RhY2tfbWVtb3J5X3VzZWQpOiBEZWNsYXJlLgoJKG9ic3RhY2tfbWVtb3J5X3VzZWQpOiBEZWZpbmUgbWFjcm8uCgpUaHUgRGVjIDI4IDExOjQyOjEyIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oICh4c3RyZHVwKTogRGVjbGFyZS4KClRodSBEZWMgMjEgMTQ6NDc6MTcgMTk5NSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHRpa3Rvay5jeWdudXMuY29tPgoKCSogd2FpdC5oOiBQcm90ZWN0IGFsbCBtYWNyb3Mgd2l0aCAjaWZuZGVmLgoKVHVlIE9jdCAyNCAyMTo0NTo0MCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHN0YXRpY19saW5rIGZpZWxkLgoKVHVlIFNlcCAxMiAxNjoyODowNCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgc3ltYm9sIHBhcmFtZXRlciB0bwoJd2FybmluZyBjYWxsYmFjay4KCkZyaSBTZXAgIDEgMTM6MTE6NTEgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQ2hhbmdlIHdhcm5pbmcgY2FsbGJhY2sKCXRvIHRha2UgQkZELCBzZWN0aW9uLCBhbmQgYWRkcmVzcyBhcmd1bWVudHMuCgpUaHUgQXVnIDMxIDE2OjQ1OjEyIDE5OTUgIHN0ZXZlIGNoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVtb3ZlIFBFIHN0dWZmLgoKVHVlIEF1ZyAyMiAwMzoxODoyMyAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5Aa3ItbGFwdG9wLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogRGVjbGFyZSB4c3RyZXJyb3IuICBGcm9tIFBhdCBSYW5raW4uCgpNb24gQXVnIDIxIDE4OjExOjM2IDE5OTUgIHN0ZXZlIGNoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVtb3ZlIFBFIHN0dWZmLgoKV2VkIEF1ZyAgMiAwODoxNDoxMiAxOTk1ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3NwYXJjNjQpOiBEZWNsYXJlLgoKTW9uIEp1bCAxMCAxMzoyNjo0OSAxOTk1ICBFcmljIFlvdW5nZGFsZSAgPGVyaWNAYWliLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGZpZWxkIHN5bWJvbGljLgoKU3VuIEp1bCAgMiAxNzo0ODo0MCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQ2hhbmdlIHR5cGUgb2YgYmFzZV9maWxlIHRvCglQVFIuCgpUaHUgSnVuIDI5IDAwOjAyOjQ1IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkZWQgYmFzZV9maWxlIG1lbWJlci4KClR1ZSBKdW4gMjAgMTY6NDA6MDQgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGFuc2lkZWNsLmg6IHdpbjMycyBpcyBBTlNJIGVub3VnaC4KClRodSBNYXkgMTggMDQ6MjU6NTAgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGtyLWxhcHRvcC5jeWdudXMuY29tPgoKCVdlZCBNYXkgMTAgMTQ6Mjg6MTYgMTk5NSBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm1sdGQuY28udWspCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYXJtKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKHByaW50X2luc25fe2xpdHRsZSxiaWd9X2FybSk6IE5ldyBkZWNsYXJhdGlvbnMuCgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9hcm1fZXh0KTogRGVjbGFyZS4KClNhdCBNYXkgMTMgMTA6MTQ6MDggMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGNvZmYvcGUuaDogTmV3IGZpbGUuCgkqIGJmZGxpbmsuaCAoc3Vic3l0ZW0sIHN0YWNrX2hlYXBfcGFyYW1ldGVycyk6IE5ldy4KCSogY29mZi9pMzg2LmggKE5UX1NFQ1RJT05fQUxJR05NRU5ULCBOVF9GSUxFX0FMSUdOTUVOVCwKCU5UX0RFRl9SRVNFUlZFLCBOVF9ERUZfQ09NTUlUKTogTmV3LgoJKiBjb2ZmL2ludGVybmFsLmggKGludGVybmFsX2ZpbGVoZHIpOiAgTmV3IGZpZWxkcyBmb3IgUEUuCgkoSU1BR0VfREFUQV9ESVJFQ1RPUlkpOiBOZXcuCgkoaW50ZXJuYWxfYW91dGhkcik6IE5ldyBmaWVsZHMgZm9yIFBFLgoKVGh1IE1heSAgNCAxNDozNjo0MiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGRlbWFuZ2xlLmg6IERvbid0IGluY2x1ZGUgYW5zaWRlY2wuaCBpZiBJTl9HQ0MuCgpUdWUgRmViIDIxIDAwOjM3OjI4IDE5OTUgIEplZmYgTGF3ICAobGF3QHNuYWtlLmNzLnV0YWguZWR1KQoKCSogaHAtc3ltdGFiLmg6IERvbid0IHVzZSBiaXRmaWVsZCBlbnVtZXJhdGlvbnMsIHRoZSBIUCBDIGNvbXBpbGVyCglkb2VzIG5vdCBoYW5kbGUgdGhlbSBjb3JyZWN0bHkuCgpUaHUgRmViICA5IDE0OjIwOjI3IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IERvbid0IGRlY2xhcmUgcGFyYW1ldGVyIHR5cGU7IHNvbWUKCXN5c3RlbXMgaGF2ZSB0aGlzIGluIHRoZWlyIGhlYWRlciBmaWxlcy4KCldlZCBGZWIgIDggMTc6MzU6MzggMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IENoYW5nZSBmb3JtYXQgb2YgY29tbW9uCglzeW1ib2wgaW5mb3JtYXRpb24sIHRvIHJlbW92ZSByZXN0cmljdGlvbnMgb24gbWF4aW11bSBzaXplIGFuZAoJYWxpZ25tZW50IHBvd2VyLCBieSB1c2luZyBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgaW5zdGVhZC4KCk1vbiBGZWIgIDYgMTQ6NTU6MzIgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChlbnVtIGJmZF9saW5rX2hhc2hfdHlwZSk6IFJlbmFtZSBiZmRfbGlua19oYXNoX3dlYWsKCXRvIGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrLiAgQWRkIGJmZF9saW5rX2hhc2hfZGVmd2Vhay4KCk1vbiBKYW4gMTYgMjE6MDA6MjMgMTk5NSAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChHREJfSU5JVF9ESVNBU1NFTUJMRV9JTkZPLCBldGMpOiBSZW1vdmUgYWxsCglHREItc3BlY2lmaWMgZGVmaW5pdGlvbnMuCgpTdW4gSmFuIDE1IDE4OjM5OjM1IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNwbGF0PgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3c2NSk6IERlY2xhcmUuCgpUaHUgSmFuIDEyIDE3OjUxOjE3IDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBjdWpvLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoaGV4X3ApOiBGaXggc2Vuc2Ugb2YgdGVzdC4KCldlZCBKYW4gMTEgMjI6MzY6NDAgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGN1am8uY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChfaGV4X2FycmF5X3NpemUsIF9oZXhfYmFkLCBfaGV4X3ZhbHVlLCBoZXhfaW5pdCwKCWhleF9wLCBoZXhfdmFsdWUpOiBOZXcgbWFjcm9zIGFuZCBkZWNsYXJhdGlvbnMsIGZvciBoZXguYy4KCkZyaSBKYW4gIDYgMTc6NDQ6MTQgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBzYW5ndWluZS5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBNYWtlIGlkZW1wb3RlbnQuCgpXZWQgRGVjIDE0IDEzOjA4OjQzIDE5OTQgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIHByb2dyZXNzLmg6IE5ldyBmaWxlLCBlbXB0eSBkZWZpbml0aW9ucyBmb3IgcHJvZ3Jlc3MgbWFjcm9zLgoKRnJpIE5vdiAyNSAwMDoxNDowNSAxOTk0ICBKZWZmIExhdyAgKGxhd0BzbmFrZS5jcy51dGFoLmVkdSkKCgkqIGhwLXN5bXRhYi5oOiBOZXcgZmlsZSBkZXNjcmliaW5nIHRoZSBkZWJ1ZyBzeW1ib2xzIGVtaXR0ZWQKCWJ5IHRoZSBIUCBDIGNvbXBpbGVycy4KCkZyaSBOb3YgMTEgMTU6NDg6MzcgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBzYW5ndWluZS5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IENoYW5nZSB1LmMuc2l6ZSBmcm9tIDI0Cgl0byAyNiBiaXRzLCBhbmQgY2hhbmdlIHUuYy5hbGlnbm1lbnRfcG93ZXIgZnJvbSA4IHRvIDYgYml0cy4gIDYKCWJpdCBpbiB0aGUgYWxpZ25tZW50IHBvd2VyIGlzIGVub3VnaCBmb3IgYSA2NCBiaXQgYWRkcmVzcyBzcGFjZS4KCk1vbiBPY3QgMzEgMTM6MDI6NTEgMTk5NCAgU3RhbiBTaGVicyAgKHNoZWJzQGFuZHJvcy5jeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaCAoY3BsdXNfbWFuZ2xlX29wbmFtZSk6IERlY2xhcmUuCgpUdWUgT2N0IDI1IDExOjM4OjAyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEZpeCBjb21tZW50cyBmb3IKCW11bHRpcGxlX2NvbW1vbiBmaWVsZC4KClN1biBTZXAgMDQgMTc6NTg6MTAgMTk5NCAgUmljaGFyZCBFYXJuc2hhdyAocndlQHBlZ2FzdXMuZXNwcml0LmVjLm9yZykKCgkqIGFvdXQvYW91dDY0Lmg6IE9ubHkgZGVmaW5lIFFNQUdJQyBpZiBpdCBpc24ndCBhbHJlYWR5IGRlZmluZWQuCgoJKiBkaXMtYXNtLmg6IEFkZCBzdXBwb3J0IGZvciB0aGUgQVJNLgoKV2VkIEF1ZyAxMCAxMjo1MTo0MSAxOTk0ICBEb3VnIEV2YW5zICAoZGplQGNhbnVjay5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5LmggKHN0cnNpZ25hbCk6IERvY3VtZW50IGl0cyBleGlzdGVuY2UgZXZlbiBpZiB3ZQoJY2FuJ3QgZGVjbGFyZSBpdC4KClR1ZSBBdWcgIDIgMTQ6NDA6MDMgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBvczlrLmg6IFJlbW92ZSB1X2ludDE2LCB1X2ludDMyLCBhbmQgb3duZXJfaWQgdHlwZWRlZnMgYW5kCglleHBhbmQgdGhlaXIgdXNlcy4gIFRob3NlIG5hbWVzIGNvbmZsaWN0IHdpdGggTWFjaCBoZWFkZXJzLgoKRnJpIEp1bCAyMiAxNDoxNzoxMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHNhbmd1aW5lLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIHUuYy5zaXplIGludG8gYQoJYml0ZmllbGQuICBBZGQgZmllbGQgdS5jLmFsaWdubWVudF9wb3dlci4KClN1biBKdWwgMTAgMDA6MjY6MzkgMTk5NCAgSWFuIERhbGwgIChkYWxsQGhmcmQuZHN0by5nb3YuYXUpCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9pbnNuX25zMzJrIGRlY2xhcmF0aW9uLgoKTW9uIEp1biAyMCAxNzoxMzoyOSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHNhbmd1aW5lLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2hhc2hfdGFibGUpOiBNYWtlIGNyZWF0b3IgYSBjb25zdCBwb2ludGVyLgoKU2F0IEp1biAxOCAxNjowOTozMiAxOTk0ICBTdGFuIFNoZWJzICAoc2hlYnNAYW5kcm9zLmN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oIChjcGx1c19kZW1hbmdsZV9vcG5hbWUpOiBEZWNsYXJlLgoKVGh1IEp1biAxNiAxNToxOTowMyAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5ldyBmaWVsZCBzaGFyZWQuCgpNb24gSnVuICA2IDE0OjM5OjQ0IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBSZW1vdmUgd3JpdHRlbiBmaWVsZDoKCW5vdCBuZWVkZWQgZm9yIGFsbCBiYWNrZW5kcy4KClRodSBBcHIgMjggMTk6MDY6NTAgMTk5NCAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN1am8uY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVyKTogRGVjbGFyZS4KCkZyaSBBcHIgIDEgMDA6Mzg6MTcgMTk5NCAgSmltIFdpbHNvbiAgKHdpbHNvbkBtb2xlLmdudS5haS5taXQuZWR1KQoKCSogb2JzdGFjay5oOiBEZWxldGUgdXNlIG9mIElOX0dDQyB0byBjb250cm9sIHdoZXRoZXIKCXN0ZGRlZi5oIG9yIGdzdGRkZWYuaCBpcyBpbmNsdWRlZC4KClR1ZSBNYXIgMjIgMTM6MDY6MDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChlbnVtIGJmZF9saW5rX29yZGVyX3R5cGUpOiBBZGQgYmZkX2RhdGFfbGlua19vcmRlci4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIpOiBBZGQgZGF0YSBmaWVsZCB0byB1bmlvbi4KCk1vbiBNYXIgMjEgMTg6NDU6MjYgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQ2hhbmdlIGJpdHNpemUgYXJndW1lbnQKCXRvIGFkZF90b19zZXQgdG8gcmVsb2MuICBSZW1vdmUgYml0c2l6ZSBhcmd1bWVudCBmcm9tIGNvbnN0cnVjdG9yLgoJQ29tbWVudCB0aGF0IHJlbG9jX292ZXJmbG93LCByZWxvY19kYW5nZXJvdXMgYW5kIHVuYXR0YWNoZWRfcmVsb2MKCW11c3QgaGFuZGxlIE5VTEwgcG9pbnRlcnMgZm9yIHJlbG9jIGxvY2F0aW9uLgoJKGVudW0gYmZkX2xpbmtfb3JkZXJfdHlwZSk6IEFkZCBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyIGFuZAoJYmZkX3N5bWJvbF9yZWxvY19saW5rX29yZGVyLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcik6IEFkZCByZWxvYyBmaWVsZCB0byB1bmlvbi4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXJfcmVsb2MpOiBEZWZpbmUuCgpNb24gTWFyIDE0IDEyOjI3OjUwIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGllZWUtZmxvYXQuaDogUmVtb3ZlZDsgbm8gbG9uZ2VyIHVzZWQuCgpUdWUgTWFyICAxIDE4OjEwOjQ5IDE5OTQgIEt1bmcgSHN1ICAoa3VuZ0BtZXhpY2FuLmN5Z251cy5jb20pCgoJKiBvczlrLmg6IG9zOTAwMCB0YXJnZXQgc3BlY2lmaWMgaGVhZGVyIGZpbGUsIHRoZSBoZWFkZXIgb2YgdGhlCglvYmplY3QgZmlsZSBpcyB1c2VkIG5vdy4KClN1biBGZWIgMjcgMjE6NTI6MjYgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGRlbmViLmN5Z251cy5jb20pCgoJKiBmbG9hdGZvcm1hdC5oOiBOZXcgZmlsZSwgaW50ZW5kZWQgdG8gcmVwbGFjZSBpZWVlLWZsb2F0LmguCgpTdW4gRmViIDIwIDE3OjE1OjQyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AbGlzYS5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaCAoQU5TSV9QUk9UT1RZUEVTKTogRGVmaW5lIGlmIHVzaW5nIEFOU0kgcHJvdG90eXBlcy4KCldlZCBGZWIgMTYgMDE6MDc6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5Lmg6IERvbid0IGRlY2xhcmUgc3Ryc2lnbmFsLCB0byBhdm9pZCBjb25mbGljdHMgd2l0aAoJU29sYXJpcyBzeXN0ZW0gaGVhZGVyIGZpbGVzLgoKU2F0IEZlYiAxMiAyMjoxMTozMiAxOTk0ICBKZWZmcmV5IEEuIExhdyAgKGxhd0BzbmFrZS5jcy51dGFoLmVkdSkKCgkqIGxpYmliZXJ0eS5oICh4ZXhpdCk6IFVzZSBfX3ZvbGF0aWxlX18gdG8gYXZvaWQgbG9zaW5nIGlmCgljb21waWxpbmcgd2l0aCBnY2MgLXRyYWRpdGlvbmFsLgoKVGh1IEZlYiAxMCAxNDowNTo0MSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaDogTmV3IGZpbGUuICBEZWNsYXJlcyBmdW5jdGlvbnMgcHJvdmlkZWQgYnkKCWxpYmliZXJ0eS4KClR1ZSBGZWIgIDggMDU6MTk6NTIgMTk5NCAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCUhhbmRsZSBvYnN0YWNrX2NodW5rX2FsbG9jIHJldHVybmluZyBOVUxMLiAgVGhpcyBhbGxvd3MKCW9ic3RhY2tzIHRvIGJlIHVzZWQgYnkgbGlicmFyaWVzLCB3aXRob3V0IGZvcmNpbmcgdGhlbQoJdG8gY2FsbCBleGl0IG9yIGxvbmdqbXAuCgkqIG9ic3RhY2suaCAoc3RydWN0IG9ic3RhY2spOiBBZGQgYWxsb2NfZmFpbGVkIGZsYWcuCglfb2JzdGFja19iZWdpbiwgX29ic3RhY2tfYmVnaW5fMSk6IERlY2xhcmUgdG8gcmV0dXJuIGludCwgbm90IHZvaWQuCgkob2JzdGFja19maW5pc2gpOiBJZiBhbGxvY19mYWlsZWQsIHJldHVybiBOVUxMLgoJKG9ic3RhY2tfYmFzZSwgb2JzdGFja19uZXh0X2ZyZWUsIG9ianN0YWNrX29iamVjdF9zaXplKToKCUlmIGFsbG9jX2ZhaWxlZCwgcmV0dXJuIDAuCgkob2JzdGFja19ncm93LCBvYnN0YWNrX2dyb3cwLCBvYnN0YWNrXzFncm93LCBvYnN0YWNrX3B0cl9ncm93LAoJb2JzdGFja19pbnRfZ3Jvdywgb2JzdGFja19ibGFuayk6IElmIGFsbG9jX2ZhaWxlZCwgZG8gbm90aGluZyB0aGF0Cgljb3VsZCBjb3JydXB0IHRoZSBvYnN0YWNrLgoKTW9uIEphbiAyNCAxNTowNjowNSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgbmFtZSwgcmVsb2NfbmFtZSBhbmQKCWFkZGVuZCBhcmdtZW50cyB0byByZWxvY19vdmVyZmxvdyBjYWxsYmFjay4KCkZyaSBKYW4gMjEgMTk6MTM6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2JpZ19wb3dlcnBjLCBwcmludF9pbnNuX2xpdHRsZV9wb3dlcnBjLAoJcHJpbnRfaW5zbl9yczYwMDApOiBEZWNsYXJlLgoKVGh1IEphbiAgNiAxNDoxNTo1NSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgYml0c2l6ZSBhcmd1bWVudCB0bwoJYWRkX3RvX3NldCBmaWVsZC4gIEFkZCBuZXcgY2FsbGJhY2sgbmFtZWQgY29uc3RydWN0b3IuCgpUaHUgRGVjIDMwIDEwOjQ0OjA2IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AcnRsLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmg6IE5ldyBmaWxlIGZvciBuZXcgQkZEIGxpbmtlciBiYWNrZW5kIHJvdXRpbmVzLgoKTW9uIE5vdiAyOSAxMDo0Mzo1NyAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKGVudW0gZGlzX2luc25fdHl1cGUpOiBSZW1vdmUgbm9uLUFOU0kgdHJhaWxpbmcgY29tbWEuCgpTYXQgT2N0ICAyIDIwOjQyOjI2IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBNb3ZlIGNvbW1lbnQgdG8gcmlnaHQgcGxhY2UuCgpNb24gQXVnICA5IDE5OjAzOjM1IDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaCAob2JzdGFja19jaHVua2Z1biwgb2JzdGFja19mcmVlZnVuKTogQWRkIGRlZm5zIGZyb20KCXByZXZpb3VzIHZlcnNpb24uICBBcmUgdGhlc2UgQ3lnbnVzIGxvY2FsIGNoYW5nZXM/CgpGcmkgQXVnICA2IDE3OjA1OjQ3IDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oLCBvYnN0YWNrLmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpNb24gQXVnICAyIDE2OjM3OjE0IDE5OTMgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBjb2ZmL2kzODYuaDogIEFkZCBMeW54IG1hZ2ljIG51bWJlci4KCk1vbiBBdWcgIDIgMTQ6NDU6MjkgMTk5MyAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6ICBNb3ZlIGVudW0gb3V0c2lkZSBvZiBzdHJ1Y3QgZGVmbiB0byBhdm9pZCB3YXJuaW5ncy4KCk1vbiBBdWcgIDIgMDg6NDk6MzAgMTk5MyAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIHdhaXQuaCAoV0VYSVRTVEFUVVMsIFdTVE9QU0lHKTogTWFzayBkb3duIHRvIDggYml0cy4gIFRoaXMgaXMKCWZvciBzeXN0ZW1zIHRoYXQgc3RvcmUgc3R1ZmYgaW50byB0aGUgaGlnaCAxNiBiaXRzIG9mIGEgd2FpdAoJc3RhdHVzLgoKRnJpIEp1bCAzMCAxODozODowMiAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogIEFkZCBuZXcgZmllbGRzIGluc25faW5mb192YWxpZCwgYnJhbmNoX2RlbGF5X2luc25zLAoJZGF0YV9zaXplLCBpbnNuX3R5cGUsIHRhcmdldCwgdGFyZ2V0Mi4gIFRoZXNlIGFyZSB1c2VkIHRvIHJldHVybgoJaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5zdHJ1Y3Rpb24gZGVjb2RlcnMgYmFjayB0byB0aGUgY2FsbGluZwoJcHJvZ3JhbS4gIEFkZCBjb21tZW50cywgbWFrZSBtb3JlIHJlYWRhYmxlLgoKTW9uIEp1bCAxOSAyMjoxNDoxNCAxOTkzICBGcmVkIEZpc2ggIChmbmZAZGVuZWIuY3lnbnVzLmNvbSkKCgkqIG5sbTogIE5ldyBkaXJlY3RvcnkgY29udGFpbmluZyBOTE0vTmV0V2FyZSBpbmNsdWRlcy4KClRodSBKdWwgMTUgMTI6MTA6MDQgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGNhbWJyaWRnZS5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyk6IE5ldyBmaWVsZCBhcHBsaWNhdGlvbl9kYXRhLgoKVGh1IEp1bCAxNSAxMjo0MToxNSAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IEFkZGVkIGRlY2xhcmF0aW9uIG9mIHByaW50X2luc25fbTg4ay4KClRodSBKdWwgIDggMDk6MDU6MjYgMTk5MyAgRG91ZyBFdmFucyAgKGRqZUBjYW51Y2suY3lnbnVzLmNvbSkKCgkqIG9wY29kZS9oODMwMC5oOiBMb3RzIG9mIGxpdHRsZSBmaXhlcyBmb3IgdGhlIGg4LzMwMGguCgpGcmkgSnVsICAyIDEwOjMxOjU5IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IFVzZSBBTlNJIG1hY3JvcyBpZiBfX21pcHMgYW5kIF9TWVNUWVBFX1NWUjQgYXJlCglkZWZpbmVkLCBzaW5jZSBSSVNDL09TIGNjIGhhbmRsZXMgQU5TSSBkZWNsYXJhdGlvbnMgaW4gU1ZSNCBtb2RlCglidXQgZG9lcyBub3QgZGVmaW5lIF9fU1REQ19fLgoKU3VuIEp1biAyMCAxODoyNzo1MiAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AcG9zZWlkb24uY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogRG9uJ3QgbmVlZCB0byBpbmNsdWRlIGFuc2lkZWNsLmggYW55IG1vcmUuCgpGcmkgSnVuIDE4IDAzOjIyOjEwIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogb2FzeXMuaDogIEVsaW1pbmF0ZSAiaW50OF90eXBlIiwgImludDE2X3R5cGUiLCAiaW50MzJfdHlwZSIsIGFuZAoJdGhlaXIgdmFyaWFudHMuICBUaGVzZSBjaGFuZ2VzIGFyZSBjb29yZGluYXRlZCB3aXRoIGNvcnJlc3BvbmRpbmcKCWNoYW5nZXMgaW4gLi4vYmZkL29hc3lzLmMuCgpXZWQgSnVuIDE2IDEwOjQzOjA4IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBOb3RlIHRoYXQgaXQgaGFzIGJlZW4gcmVtb3ZlZC4KClR1ZSBKdW4gIDggMTI6MTY6MDMgMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAcGh5ZGVhdXguY3lnbnVzLmNvbSkKCgkgU3VwcG9ydCBmb3IgSDgvMzAwLUgKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2g4MzAwLCBwcmludF9pbnNuX2g4MzAwaCk6IERlY2xhcmUgaXQuCgkqIGNvZmYvaDgzMDAuaDogTmV3IG1hZ2ljIG51bWJlci4KCSogY29mZi9pbnRlcm5hbC5oOiBOZXcgcmVsb2NhdGlvbnMuCgkqIG9wY29kZS9oODMwMC5oOiBMb3RzIG9mIG5ldyBvcGNvZGVzLgoKVHVlIEp1biAgMSAwNzozNTowMyAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5Aa3ItcGMuY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmggKGNvbnN0KTogRG9uJ3QgZGVmaW5lIGl0IGlmIGl0J3MgYWxyZWFkeSBkZWZpbmVkLgoKVGh1IE1heSAyNyAxODoxOTo1MSAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY2FtYnJpZGdlLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faHBwYSk6IERlY2xhcmUgaXQuCgoJKiBiZmQuaDogTW92ZWQgdG8gYmZkIGRpcmVjdG9yeS4gIFNtYWxsIHN0dWIgaGVyZSBpbmNsdWRlcyBpdAoJd2l0aG91dCByZXF1aXJpbmcgIi1JLi4vYmZkIi4KClRodSBBcHIgMjkgMTI6MDY6MTMgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGRlbmViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCB3aXRoIEJTRl9GVU5DVElPTi4KCk1vbiBBcHIgMjYgMTg6MTU6NTAgMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaCwgZGlzLWFzbS5oOiBVcGRhdGVkIHdpdGggSGl0YWNoaSBTSC4KCkZyaSBBcHIgMjMgMTg6NDE6MzggMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCB3aXRoIGFscGhhIGNoYW5nZXMuCgkqIGRpcy1hc20uaDogQWRkZWQgYWxwaGEuCgpGcmkgQXByIDE2IDE3OjM1OjMwIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3Igc2lnbmVkIGJmZF8qZ2V0XyouCgpUaHUgQXByIDE1IDA5OjI0OjIxIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZWQgZm9yIGZpbGVfdHJ1bmNhdGVkIGVycm9yLgoKVGh1IEFwciAgOCAxMDo1Mzo0NyAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oOiBJZiBubyBBTlNJLCBkZWZpbmUgY29uc3QgdG8gYmUgZW1wdHkuCgpUaHUgQXByICAxIDA5OjAwOjEwIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBEZWNsYXJlIGEyOWsgYW5kIGk5NjAgcHJpbnRfaW5zbl8qLgoKCSogZGlzLWFzbS5oOiBBZGQgcHJpbnRfYWRkcmVzc19mdW5jIGFuZCByZWxhdGVkIHN0dWZmLgoKCSogZGlzLWFzbS5oIChkaXNfYXNtX3JlYWRfbWVtb3J5KTogRml4IHByb3RvdHlwZS4KCldlZCBNYXIgMzEgMTc6NDA6MTYgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9pbnNuX3NwYXJjLgoKV2VkIE1hciAzMSAxNzo1MTo0MiAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmb3IgQkZEX1JFTE9DX01JUFNfR1BSRUwgYW5kIGJmZF9bZ3NdZXRfZ3Bfc2l6ZQoJcHJvdG90eXBlcy4KCldlZCBNYXIgMzEgMTY6MzU6MTIgMTk5MyAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogKGRpc2Fzc2VtYmxlX2luZm8pOiAgRml4IHR5cG8gaW4gcHJvdG90eXBlIG9mCglkaXNfYXNtX21lbW9yeV9lcnJvcigpLgoKVHVlIE1hciAzMCAxOTowOToyMyAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVyX2luZm8pOiBBZGQgcmVhZF9tZW1vcnlfZnVuYywKCW1lbW9yeV9lcnJvcl9mdW5jLCBidWZmZXIsIGFuZCBsZW5ndGguCgkoe0dEQl8sfUlOSVRfRElTQVNTRU1CTEVfSU5GTyk6IFNldCB0aGVtLgoJcHJpbnRfaW5zbl8qOiBSZW1vdmUgc2Vjb25kIGFyZ3VtZW50LgoKVHVlIE1hciAzMCAxNDo0ODo1NSAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIGxtYSBmaWVsZCBvZiBzZWN0aW9uLgoKVHVlIE1hciAzMCAxMjoyMjo1NSAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IFVzZSBBTlNJIHZlcnNpb25zIG9uIEFJWCByZWdhcmRsZXNzIG9mIF9fU1REQ19fLgoKRnJpIE1hciAxOSAxNDo0OTo0OSAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkIGg4NTAwLgoKVGh1IE1hciAxOCAxMzo0OTowOSAxOTkzICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBpZWVlLWZsb2F0Lmg6ICBNb3ZlZCBmcm9tIC4uL2dkYi4KCSogZGlzLWFzbS5oOiAgTmV3IGZpbGUuICBJbnRlcmZhY2UgdG8gZGlzLWFzc2VtYmxlci4KClRodSBNYXIgMTEgMTA6NTI6NTcgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oIChETUdMX05PX09QVFMpOiAgQWRkIGRlZmluZSAoc2V0IHRvIDApIHRvIHVzZQoJaW4gcGxhY2Ugb2YgYmFyZSAwLCBmb3IgcmVhZGFiaWxpdHkgcmVhc29ucy4KClR1ZSBNYXIgIDIgMTc6NTA6MTEgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgUmVwbGFjZSBhbGwgcmVmZXJlbmNlcyB0byBjZnJvbnQgd2l0aCBBUk0uCgpUdWUgRmViIDIzIDEyOjIxOjE0IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIG5ldyBlbGVtZW50cyBpbiBKVU1QX1RBQkxFLgoKVHVlIEZlYiAxNiAwMDo1MTozMCAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIGZvciBCRkRfVkVSU0lPTiAyLjEuCgpUdWUgSmFuIDI2IDExOjQ5OjIwIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIFNFQ19JU19DT01NT04gZmxhZy4KClR1ZSBKYW4gMTkgMTI6MjU6MTIgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgYmZkX2FzeW1ib2xfdmFsdWUgYnVnIGZpeC4KCkZyaSBKYW4gIDggMTY6Mzc6MTggMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSB0byBpbmNsdWRlIEVDT0ZGIHRkYXRhIGFuZCB0YXJnZXRfZmxhdm91ci4KClN1biBEZWMgMjcgMTc6NTI6MzAgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBiZmQuaDogIEFkZCBkZWNsYXJhdGlvbiBmb3IgYmZkX2dldF9zaXplKCkuCgpUdWUgRGVjIDIyIDIyOjQyOjQ2IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaDogIFByb3RlY3QgZmlsZSBmcm9tIG11bHRpcGxlIGluY2x1c2lvbnMgd2l0aAoJI2lmICFkZWZpbmVkKERFTUFOR0xFX0gpLi4uI2RlZmluZSBERU1BTkdMRV9ILi4uI2VuZGlmLgoKTW9uIERlYyAyMSAyMToyNTo1MCAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgdG8gZ2V0IGhwcGFfY29yZV9zdHJ1Y3QgZnJvbSBiZmQuYy4KClRodSBEZWMgMTcgMDA6NDI6MzUgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSB0byBnZXQgdGVraGV4IHRkYXRhIG5hbWUgY2hhbmdlIGZyb20gYmZkLgoKTW9uIE5vdiAgOSAyMzo1NTo0MiAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6ICBVcGRhdGUgY29tbWVudHMgdG8gZGlzY291cmFnZSB1c2Ugb2YgRVhGVU4uCgpUaHUgTm92ICA1IDE2OjM1OjQ0IDE5OTIgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgdG8gYnJpbmcgaW4gU0VDX1NIQVJFRF9MSUJSQVJZLgoKVGh1IE5vdiAgNSAwMzoyMTozMiAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIHRvIG1hdGNoIEVYRlVOLCBiZmRfc2VjbGV0X3N0cnVjdCwgYW5kIFNERUYKCWNsZWFudXBzIGluIGJmZC4KCldlZCBOb3YgIDQgMDc6Mjg6MDUgMTk5MiAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN5Z251cy5jb20pCgoJKiBib3V0LmggKE5fQ0FMTE5BTUUsIE5fQkFMTkFNRSk6IERlZmluZSBhcyBjaGFyLXR5cGUgdmFsdWVzLCBzbwoJd2lkZW5pbmcgd29ya3MgY29uc2lzdGVudGx5LgoKRnJpIE9jdCAxNiAwMzoxNzowOCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiAgVXBkYXRlIHRvIFJldmlzZWQgU3RhbmRhcmQgRlNGIFZlcnNpb24uCgpUaHUgT2N0IDE1IDIxOjQzOjIyIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBzZW5kYWkuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oIChzdHJ1Y3Qgb3B0aW9uKTogdXNlIHRoZSBwcm92aWRlZCBlbnVtIGZvciBoYXNfYXJnLgoKCSogZGVtYW5nbGUuaCAoQVVUT19ERU1BTkdMSU5HLCBHTlVfREVNQU5HTElORywKCSAgTFVDSURfREVNQU5HTElORyk6IHVsdHJpeCBjb21waWxlcnMgcmVxdWlyZSBlbnVtcyB0byBiZQoJICBlbnVtcyBhbmQgaW50cyB0byBiZSBpbnRzIGFuZCBjYXN0cyB3aGVyZSB0aGV5IG1lZXQuICBjYXN0IHNvbWUKCSAgZW51bXMgaW50byBpbnRzLgoKVGh1IE9jdCAxNSAwNDozNTo1MSAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIGFmdGVyIGNvbW1lbnQgY2hhbmdlcy4KClRodSBPY3QgIDggMDk6MDM6MDIgMTk5MiAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaCAoYmZkX2dldF9zeW1ib2xfbGVhZGluZ19jaGFyKTogbmV3IG1hY3JvIGZvciBnZXR0aW5nIGluIHh2ZWMKClRodSBTZXAgIDMgMDk6MTA6NTAgMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oIChzdHJ1Y3QgcmVsb2NfaG93dG9fc3RydWN0KTogIHNpemUgbmVlZHMgdG8gYmUgc2lnbmVkIGlmCglpdCdzIGdvaW5nIHRvIGhvbGQgbmVnYXRpdmUgdmFsdWVzLgoKU3VuIEF1ZyAzMCAxNzo1MDoyNyAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgTmV3IGZpbGUsIG1vdmVkIGZyb20gLi4vZ2RiLiAgTWFkZSBpbmRlcGVuZGVudAoJb2YgZ2RiLiAgQWxsb3cgZGVtYW5nbGluZyBzdHlsZSBvcHRpb24gdG8gYmUgcGFzc2VkIGFzIGEKCXBhcmFtZXRlciB0byBjcGx1c19kZW1hbmdsZSgpLCBidXQgdXNpbmcgdGhlCgljdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUgZ2xvYmFsIGFzIHRoZSBkZWZhdWx0LgoKU2F0IEF1ZyAyOSAxMDowNzo1NSAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIE1lcmdlIGNvbW1lbnQgY2hhbmdlIGZyb20gY3VycmVudCBGU0YgdmVyc2lvbi4KClRodSBBdWcgMjcgMTI6NTk6MjkgMTk5MiAgQnJlbmRhbiBLZWhvZSAgKGJyZW5kYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBhZGQgd2UzMmsKClR1ZSBBdWcgMjUgMTU6MDc6NDcgMTk5MiAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogbmV3IGFmdGVyIFo4MDAwIHN0dWZmCgpNb24gQXVnIDE3IDA5OjAxOjIzIDE5OTIgIEtlbiBSYWVidXJuICAocmFlYnVybkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFJlZ2VuZXJhdGVkIGFmdGVyIHBhZ2Uvc2VnbWVudCBzaXplIGNoYW5nZXMuCgpTYXQgQXVnICAxIDEzOjQ2OjMxIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiBNZXJnZSBjaGFuZ2VzIGZyb20gY3VycmVudCBGU0YgdmVyc2lvbi4KCk1vbiBKdWwgMjAgMjE6MDY6MjMgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmggKGFyZWFfaWQsIGZsYWdzKTogIFJlbW92ZSwgcmVwbGFjZSB3aXRoIGV4dHJhX2FyZywKCXVzZV9leHRyYV9hcmcsIGFuZCBtYXliZV9lbXB0eV9vYmplY3QuCgkqIG9ic3RhY2suaCAoT0JTVEFDS19NQVlCRV9FTVBUWV9PQkpFQ1QsIE9CU1RBQ0tfTU1BTExPQ19MSUtFKToKCVJlbW92ZSwgcmVwbGFjZWQgYnkgbWF5YmVfZW1wdHlfb2JqZWN0IGFuZCB1c2VfZXh0cmFfYXJnIGJpdGZpZWxkcy4KCSogb2JzdGFjay5oIChvYnN0YWNrX2Z1bGxfYmVnaW4sIF9vYnN0YWNrX2JlZ2luKTogIFJlbW92ZSBhcmVhX2lkCglhbmQgZmxhZ3MgYXJndW1lbnRzLgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfYWxsb2NfYXJnKTogIE5ldyBtYWNybyB0byBzZXQgZXh0cmFfYXJnLgoKVGh1IEp1bCAxNiAwODoxMjo0NCAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBuZXcgYWZ0ZXIgYWRkaW5nIEJGRF9JU19SRUxBWEFCTEUKClNhdCBKdWwgIDQgMDM6MjI6MjMgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlZ2VuIGFmdGVyIGFkZGluZyBCU0ZfRklMRS4KCk1vbiBKdW4gMjkgMTQ6MTg6MzYgMTk5MiAgRnJlZCBGaXNoICAoZm5mIGF0IHN1bmZpc2gpCgoJKiBvYnN0YWNrLmg6ICBDb252ZXJ0IGJjb3B5KCkgdXNlIHRvIG1lbWNweSgpLCB3aGljaCBpcyBtb3JlCglwb3J0YWJsZSwgbW9yZSBzdGFuZGFyZCwgYW5kIGNhbiB0YWtlIGFkdmFudGFnZSBvZiBnY2MncyBidWlsdGluCglmdW5jdGlvbnMgZm9yIGluY3JlYXNlZCBwZXJmb3JtYW5jZS4KClRodSBKdW4gMjUgMDQ6NDY6MDggMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oIChQQVJBTVMpOiAgSW5jb3Jwb3JhdGUgdGhpcyBtYWNybyBmcm9tIGdkYidzIGRlZnMuaC4KCUl0J3MgYSBjbGVhbmVyIHdheSB0byBmb3J3YXJkLWRlY2xhcmUgZnVuY3Rpb24gcHJvdG90eXBlcy4KCkZyaSBKdW4gMTkgMTU6NDY6MzIgMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgSFBQQSBtZXJnZS4KClR1ZSBKdW4gMTYgMjE6MzA6NTYgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaDogZ3JhdHVpdG91cyB3aGl0ZSBzcGFjZSBjaGFuZ2VzIG1lcmdlZCBmcm9tIG90aGVyIHByZXAKCSAgcmVsZWFzZXMuCgpUaHUgSnVuIDExIDAxOjEwOjU1IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBSZWdlbidkIGZyb20gYmZkLmMgYWZ0ZXIgcmVtb3ZpbmcgZWxmX2NvcmVfdGRhdGFfc3RydWN0LgoKTW9uIE1heSAxOCAxNzoyOTowMyAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiBtZXJnZWQgY2hhbmdlcyBmcm9tIG1ha2UtMy42Mi4xMS4KCgkqIGdldG9wdC5oOiBtZXJnZWQgY2hhbmdlcyBmcm9tIGdyZXAtMS42IChhbHBoYSkuCgpGcmkgTWF5ICA4IDE0OjUzOjMyIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gYmlzb24tMS4xOC4KClNhdCBNYXIgMTQgMTc6MjU6MjAgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6ICBBZGQgImFyZWFfaWQiIGFuZCAiZmxhZ3MiIG1lbWJlcnMgdG8gb2JzdGFjawoJc3RydWN0dXJlLiAgQWRkIG9ic3RhY2tfY2h1bmtmdW4oKSBhbmQgb2JzdGFja19mcmVlZnVuKCkgdG8KCXNldCBmdW5jdGlvbnMgZXhwbGljaXRseS4gIENvbnZlcnQgbWF5YmVfZW1wdHlfb2JqZWN0IHRvCglhIGJpdCBpbiAiZmxhZ3MiLgoKVGh1IEZlYiAyNyAyMjowMTowMiAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAY3lnbnVzLmNvbSkKCgkqIHdhaXQuaCAoV0lGU1RPUFBFRCk6ICBBZGQgSUJNIHJzNjAwMC1zcGVjaWZpYyB2ZXJzaW9uLgoKRnJpIEZlYiAyMSAyMDo0OToyMCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIEFkZCBvYnN0YWNrX2Z1bGxfYmVnaW4uCgkqIGJmZC5oLCBvYnN0YWNrLmg6ICBQcm90b2xpbnQuCgpUaHUgSmFuIDMwIDAxOjE4OjQyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBSZW1vdmUgY29tbWEgZnJvbSBlbnVtIGRlY2xhcmF0aW9uLgoKTW9uIEphbiAyNyAyMjowMToxMyAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBjeWdudXMuY29tKQoKCSogYmZkLmggOiBuZXcgdGFyZ2V0IGVudHIsIGJmZF9yZWxheF9zZWN0aW9uCgpXZWQgRGVjIDE4IDE3OjE5OjQ0IDE5OTEgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCwgaWVlZS5oLCBvcGNvZGUvbTY4ay5oLCBvcGNvZGUvc3BhcmMuaDogIEFOU0lmeSBlbnVtcy4KClRodSBEZWMgMTIgMjA6NTk6NTYgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBmb3Blbi1zYW1lLmgsIGZvcGVuLWJpbi5oOiAgTmV3IGZpbGVzIGZvciBjb25maWd1cmluZwoJd2hldGhlciBmb3BlbiBkaXN0aW5ndWlzaGVzIGJpbmFyeSBmaWxlcyBvciBub3QuICBGb3IgdXNlCglieSBob3N0LWRlcGVuZGVudCBjb25maWcgZmlsZXMuCgpTYXQgTm92IDMwIDIwOjQ2OjQzIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IHJ0bC5jeWdudXMuY29tKQoKCSogYmZkLmg6IGNoYW5nZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3JtYXQuCgoJKiBjcmVhdGVkIGNvZmYsIGVsZiBhbmQgb3Bjb2RlIGFuZCBhb3V0IGRpcmVjdG9yaWVzLiBNb3ZlZDoKCglhb3V0NjQuaAk9PT4gYW91dC9hb3V0NjQuaAoJYXIuaAkJPT0+IGFvdXQvYXIuaAoJYS5vdXQuZW5jYXAuaAk9PT4gYW91dC9lbmNhcC5oCglhLm91dC5ob3N0LmgJPT0+IGFvdXQvaG9zdC5oCglhLm91dC5ocC5oCT09PiBhb3V0L2hwLmgKCWEub3V0LnN1bjQuaAk9PT4gYW91dC9zdW40LmgKCXJhbmxpYi5oCT09PiBhb3V0L3JhbmxpYi5oCglyZWxvYy5oCQk9PT4gYW91dC9yZWxvYy5oCglzdGFiLmRlZgk9PT4gYW91dC9zdGFiLmRlZgoJc3RhYi5nbnUuaAk9PT4gYW91dC9zdGFiX2dudS5oCgoJY29mZi1hMjlrLmgJPT0+IGNvZmYvYTI5ay5oCgljb2ZmLWg4MzAwLmgJPT0+IGNvZmYvaDgzMDAuaAoJY29mZi1pMzg2LmgJPT0+IGNvZmYvaTM4Ni5oCgljb2ZmLWk5NjAuaAk9PT4gY29mZi9pOTYwLmgKCWludGVybmFsY29mZi5oCT09PiBjb2ZmL2ludGVybmFsLmgKCWNvZmYtbTY4ay5oCT09PiBjb2ZmL202OGsuaAoJY29mZi1tODhrLmgJPT0+IGNvZmYvbTg4ay5oCgljb2ZmLW1pcHMuaAk9PT4gY29mZi9taXBzLmgKCWNvZmYtcnM2MDAwLmgJPT0+IGNvZmYvcnM2MDAwLmgKCgllbGYtY29tbW9uLmgJPT0+IGVsZi9jb21tb24uaAoJZHdhcmYuaAkJPT0+IGVsZi9kd2FyZi5oCgllbGYtZXh0ZXJuYWwuaAk9PT4gZWxmL2V4dGVybmFsLmgKCWVsZi1pbnRlcm5hbC5oICA9PT4gZWxmL2ludGVybmFsLmgKCglhMjlrLW9wY29kZS5oCT09PiBvcGNvZGUvYTI5ay5oCglhcm0tb3Bjb2RlLmgJPT0+IG9wY29kZS9hcm0uaAoJaDgzMDAtb3Bjb2RlLmgJPT0+IG9wY29kZS9oODMwMC5oCglpMzg2LW9wY29kZS5oCT09PiBvcGNvZGUvaTM4Ni5oCglpODYwLW9wY29kZS5oCT09PiBvcGNvZGUvaTg2MC5oCglpOTYwLW9wY29kZS5oCT09PiBvcGNvZGUvaTk2MC5oCgltNjhrLW9wY29kZS5oCT09PiBvcGNvZGUvbTY4ay5oCgltODhrLW9wY29kZS5oCT09PiBvcGNvZGUvbTg4ay5oCgltaXBzLW9wY29kZS5oCT09PiBvcGNvZGUvbWlwcy5oCglucDEtb3Bjb2RlLmgJPT0+IG9wY29kZS9ucDEuaAoJbnMzMmstb3Bjb2RlLmgJPT0+IG9wY29kZS9uczMyay5oCglwbi1vcGNvZGUuaAk9PT4gb3Bjb2RlL3BuLmgKCXB5ci1vcGNvZGUuaAk9PT4gb3Bjb2RlL3B5ci5oCglzcGFyYy1vcGNvZGUuaAk9PT4gb3Bjb2RlL3NwYXJjLmgKCXRhaG9lLW9wY29kZS5oCT09PiBvcGNvZGUvdGFob2UuaAoJdmF4LW9wY29kZS5oCT09PiBvcGNvZGUvdmF4LmgKCgoKV2VkIE5vdiAyNyAxMDozODozMSAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBydGwuY3lnbnVzLmNvbSkKCgkqIGludGVybmFsY29mZi5oOiAoaW50ZXJuYWxfc2NuaGRyKSB0b29rIG91dCAjZGVmIGRlcGVuZGVuY3ksIG5vdwoJc19ucmVsb2MgYW5kIHNfbmxubm8gYXJlIGFsd2F5cyBsb25nLgkoaW50ZXJuYWxfcmVsb2MpOiBhbGx3YXlzCgloYXMgYW4gb2Zmc2V0IGZpZWxkIG5vdy4KCkZyaSBOb3YgMjIgMDg6MTI6NTggMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBjb2ZmLXJzNjAwMC5oOiAgTGludDsgdXNlIHVuc2lnbmVkIGNoYXJzIGZvciBleHRlcm5hbCBmaWVsZHMuCgkqIGludGVybmFsY29mZi5oOiAgTGludDsgY2FzdCBzdG9yYWdlIGNsYXNzZXMgdG8gc2lnbmVkIGNoYXIuCgpUaHUgTm92IDIxIDIxOjAxOjA1IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3RhYi5kZWY6IFJlbW92ZSB0aGUgR05VIGV4dGVuZGVkIHR5cGUgY29kZXMgKGUuZy4gTl9TRVRUKS4KCSogYW91dDY0Lmg6ICBUaGUgaGV1cmlzdGljIGZvciBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuCglzdW5vcy1zdHlsZSBhbmQgYnNkLXN0eWxlIFpNQUdJQyBmaWxlcyAod3J0LiB3aGVyZSB0aGUKCXRleHQgc2VnbWVudCBzdGFydHMpIGlzIG1vdmVkIGludG8gKHRoZSBkZWZhdWx0IGRlZmluaXRpb24gb2YpCgl0aGUgbWFjcm8gTl9IRUFERVJfSU5fVEVYVC4gIFRoaXMgZGVmaW5pdGlvbiBpcyBvbmx5IHVzZWQKCWlmIG5vIG90aGVyIGRlZmluaXRpb24gaXMgdXNlZCAtIGUuZy4gYmZkL25ld3NvczMuYyBkZWZpbmVzCglOX0hFQURFUl9JTl9URVhUKHgpIHRvIGJlIGFsd2F5cyAwIChhcyBiZWZvcmUpLgoKVGh1IE5vdiAyMSAxMTo1MzowMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oIChOX1RYVEFERFIsIE5fVFhUT0ZGLCBOX1RYVFNJWkUpOiAgTmV3IGRlZmluaXRpb25zCgl0aGF0IHNob3VsZCBoYW5kbGUgYWxsIHVzZXMuICBMT0dJQ0FMXyB2ZXJzaW9ucyBkZWxldGVkLgoJRWxpbWluYXRlIE5fSEVBREVSX0lOX1RFWFQsIHVzaW5nIGFfZW50cnkgdG8gZGV0ZXJtaW5lIHdoaWNoCglraW5kIG9mIHptYWdpYyBhLm91dCBmaWxlIHdlIGFyZSBsb29raW5nIGF0LgoJKiBjb2ZmLXJzNjAwMC5oOiAgVHlwby4KClR1ZSBOb3YgMTkgMTg6NDM6MzcgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKE5vdGU6ICBUaGlzIGlzIGEgcmV2aXNlZCBlbnRyeSwgYXMgd2FzIGFvdXQ2NC5oLikKCSogYW91dDY0Lmg6ICBTb21lIGNsZWFudXBzIG9mIE5fVFhUQUREUiBhbmQgTl9UWFRPRkY6CglXaWxsIG5vdyB3b3JrIGZvciBib3RoIG9sZC0gYW5kIG5ldy1zdHlsZSBaTUFHSUMgZmlsZXMsCglkZXBlbmRpbmcgb24gTl9IRUFERVJfSU5fVEVYVCBtYWNyby4KCUFkZCBMT0dJQ0FMX1RYVEFERFIsIExPSUNBTF9UWFRPRkYgYW5kIExPR0lDQUxfVFhUU0laRQoJdGhhdCBkb24ndCBjb3VudCB0aGUgZXhlYyBoZWFkZXIgYXMgcGFydAoJb2YgdGhlIHRleHQgc2VnbWVudCwgdG8gYmUgY29uc2lzdGVudCB3aXRoIGJmZC4KCSogYS5vdXQuc3VuNC5oOiAgU2ltcGxpZmllZC9maXhlZCBmb3IgcHJldmlvdXMgY2hhbmdlLgoKTW9uIE5vdiAxOCAwMDowMjowNiAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGR3YXJmLmg6ICBVcGRhdGUgdG8gRFdBUkYgZHJhZnQgNSB2ZXJzaW9uIGZyb20gZ2NjMi4KClRodSBOb3YgMTQgMTk6NDQ6NTkgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzdGFiLmRlZjogIEFkZGVkIGRlZnMgZm9yIGV4dGVuZGVkIEdOVSBzeW1ib2wgdHlwZXMsCglzdWNoIGFzIE5fU0VUVC4gIFRoZXNlIGFyZSBub3JtYWxseSBpZmRlZidkIG91dCAoYmVjYXVzZQoJb2YgY29uZmxpY3RzIHdpdGggYS5vdXQuZ251LmgpLCBidXQgYXJlIHVzZWQgYnkgYmZiX3N0YWJfbmFtZSgpLgoKVGh1IE5vdiAxNCAxOToxNzowMyAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGVsZi1jb21tb24uaDogIEFkZCBkZWZpbmVzIHRvIHN1cHBvcnQgRUxGIHN5bWJvbCB0YWJsZSBjb2RlLgoKTW9uIE5vdiAxMSAxOTowMTowNiAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGVsZi1pbnRlcm5hbC5oLCBlbGYtZXh0ZXJuYWwuaCwgZWxmLWNvbW1vbi5oOiAgQWRkIHN1cHBvcnQgZm9yCglub3RlIHNlY3Rpb25zLCB3aGljaCBhcmUgdXNlZCBpbiBFTEYgY29yZSBmaWxlcyB0byBob2xkIGNvcGllcwoJb2YgdmFyaW91cyAvcHJvYyBzdHJ1Y3R1cmVzLgoKVGh1IE5vdiAgNyAwODo1ODoyNiAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBjeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmg6IHRvb2sgb3V0IHRoZSBNODggZGVwZW5kZW5jeSBpbiB0aGUgbGluZW5vCglzdHJ1Y3QuCgkqIGNvZmYtbTg4ay5oOiBkZWZpbmVzIEdFVF9MSU5FTk9fTE5OTyBhbmQgUFVUX0xJTkVOT19MTk5PIHRvIHVzZQoJMzJiaXQgbGlubm8gZW50cmllcy4KCSogYTI5ay1vcGNvZGUuaDogZml4ZWQgZW5jb2Rpbmcgb2YgbXRhY2MKClN1biBOb3YgIDMgMTE6NTQ6MjIgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmcm9tIC4uL2JmZC9iZmQtaW4uaCAocS52KS4KCkZyaSBOb3YgIDEgMTE6MTM6NTMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaDogIEFkZCB4X2NzZWN0IGRlZmluZXMuCgpGcmkgT2N0IDI1IDAzOjE4OjIwIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogUmVuYW1lIENPRkYtcmVsYXRlZCBmaWxlcyBpbiBgY29mZi1BUkNILmgnIGZvcm0uCgljb2ZmLWEyOWsuaCwgY29mZi1pMzg2LmgsIGNvZmYtaTk2MC5oLCBjb2ZmLW02OGsuaCwgY29mZi1tODhrLmgsCgljb2ZmLW1pcHMuaCwgY29mZi1yczYwMDAuaCB0byBiZSBleGFjdC4KClRodSBPY3QgMjQgMjI6MTE6MTEgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJUlMvNjAwMCBzdXBwb3J0LCBieSBNZXRpbiBHLiBPemlzaWssIE1pbWkgUGj79G5nLVRo5W8gVvUsIGFuZAoJSm9obiBHaWxtb3JlLgoKCSogYS5vdXQuZ251Lmg6ICBVcGRhdGUgc2xpZ2h0bHkuCgkqIGJmZC5oOiAgQWRkIG5ldyBlcnJvciBjb2RlLCBmaXggZG9jLCBhZGQgYmZkX2FyY2hfcnM2MDAwLgoJKiBpbnRlcm5hbGNvZmYuaDogIEFkZCBtb3JlIEZfIGNvZGVzIGZvciBmaWxlaGRyLiAgQWRkCglycy82MDAwLWRlcGVuZGVudCBmaWVsZHMgdG8gYW91dGhkci4gIEFkZCBzdG9yYWdlIGNsYXNzZXMKCXRvIHN5bWVudHMuICBBZGQgNjAwMC1zcGVjaWZpYyBhdXhlbnQuICBBZGQgcl9zaXplIGluIHJlbG9jLgoJKiByczYwMDBjb2ZmLmM6ICBOZXcgZmlsZS4KClRodSBPY3QgMjQgMDQ6MTM6MjAgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBkd2FyZi5oOiBOZXcgZmlsZSBmb3IgZHdhcmYgc3VwcG9ydC4gIENvcGllZCBmcm9tIGdjYzIKCWRpc3RyaWJ1dGlvbi4KCldlZCBPY3QgMTYgMTM6MzE6NDUgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhb3V0NjQuaDogIFJlbW92ZSBQQUdFX1NJWkUgZGVmaW5lczsgdGhleSBhcmUgdGFyZ2V0LWRlcGVuZGVudC4KCUFkZCBOX0ZOX1NFUSBmb3IgTl9GTiBzeW1ib2wgdHlwZSB1c2VkIG9uIFNlcXVlbnQgbWFjaGluZXMuCgkqIHN0YWIuZGVmOiAgSW5jbHVkZSBOX0ZOX1NFUSBpbiB0YWJsZS4KCSogYm91dC5oOiAgRXh0ZXJuYWwgZm9ybWF0cyBvZiBzdHJ1Y3R1cmVzIHVzZSB1bnNpZ25lZCBjaGFycy4KCkZyaSBPY3QgMTEgMTI6NDA6NDMgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzdGV2ZSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6dXBncmFkZSBmcm9tIGJmZC5jCgkqIGludGVybmFsY29mZi5oOiBhZGQgbl9uYW1lLCBuX3plcm9lcyBhbmQgbl9vZmZzZXQgbWFjcm9zCgkqIGFtZGNvZmYuaDogRGVmaW5lIE9NQUdJQyBhbmQgQU9VVEhEUlNaLgoKRnJpIE9jdCAxMSAxMDo1ODowNiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIGEub3V0Lmhvc3QuaDogQ2hhbmdlIFNFR01FTlRfU0laRSB0byAweDEwMDAgZm9yIFNvbnkuCgkqIGJmZC5oIChhbGlnbl9wb3dlcik6IEFkZCAoYWN0dWFsbHkgbW92ZSkgY29tbWVudC4KClR1ZSBPY3QgIDggMTU6Mjk6MzIgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzeXMvaC1ydGJzZC5oOiBEZWZpbmUgTUlTU0lOR19WRlBSSU5UIChmb3IgYmludXRpbHMvYnVjb21tLmMpLgoKU3VuIE9jdCAgNiAxOToyNDozOSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oOiAgTW92ZSBzdHJ1Y3QgaW50ZXJuYWxfZXhlYyB0byAuLi9iZmQvbGliYW91dC5oIHNvCglpdCBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBgYS5vdXQtZmFtaWx5JyBjb2RlLiAgUmVuYW1lCglFWFRFUk5BTF9MSVNUX1NJWkUgdG8gRVhURVJOQUxfTkxJU1RfU0laRS4gIFVzZSBiYXNpYyB0eXBlcwoJZm9yIG5saXN0IG1lbWJlcnMsIGFuZCBtYWtlIHN0cnggaW50ZWdyYWwgcmF0aGVyIHRoYW4gcG9pbnRlci4KCU1vcmUgY29tbWVudGFyeSBvbiBuX3R5cGUgdmFsdWVzLgoJKiBib3V0Lmg6ICBQcm92aWRlIGEgc3RydWN0IGV4dGVybmFsX2V4ZWMgcmF0aGVyIHRoYW4gYW4KCWludGVybmFsX2V4ZWMuCgkqIG02OGtjb2ZmLmg6ICBSZW1vdmUgYHRhZ2VudHJpZXMnIHdoaWNoIHNudWNrIGluIGZyb20gdGhlIGk5NjAKCUNPRkYgcG9ydC4KCkZyaSBPY3QgIDQgMDE6MjU6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBoODMwMC1vcGNvZGUuaDogIFJlbW92ZSBgX2VudW0nIGZyb20gdGhlIHR5cGVkZWYgZm9yIGFuIGVudW0uCgkqIGJmZC5oOiAgVXBkYXRlIHRvIG1hdGNoIGJmZCBjaGFuZ2VzLgoKCSogc3lzL2gtaTM4Nm1hY2guaCwgc3lzZGVwLmg6ICBBZGQgMzg2IE1hY2ggaG9zdCBzdXBwb3J0LgoKVHVlIE9jdCAgMSAwNDo1ODo0MiAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBlbGYtY29tbW9uLmgsIGVsZi1leHRlcm5hbC5oLCBlbGYtaW50ZXJuYWwuaDoKCUFkZCBwcmVsaW1pbmFyeSBFTEYgc3VwcG9ydCwgc3VmZmljaWVudCBmb3IgR0RCLCBmcm9tIEZyZWQgRmlzaC4KCSogc3lzZGVwLmgsIHN5cy9oLWFtaXguaDogIFN1cHBvcnQgQW1pZ2EgU1ZSNC4KCgkqIHN5cy9oLXZheHVsdC5oOiAgTWFrZSBpdCB3b3JrLiAgKERhdmlkIFRheWxvciA8dGF5bG9yQHRoaW5rLmNvbT4pCgkqIGEub3V0LnZheC5oOiAgUmVtb3ZlIHVudXNlZCBhbmQgY29uZnVzaW5nIGZpbGUuCgpNb24gU2VwIDMwIDEyOjUyOjM1IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3lzZGVwLmg6IERlZmluZSBORVdTT1MzX1NZUywgYW5kIHVzZSBpdC4KCkZyaSBTZXAgMjAgMTM6Mzg6MjEgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCAoTl9GTik6ICBJdHMgdmFsdWUgKnJlYWxseSBpcyogMHgxRi4KCUZpeCBpdCwgYW5kIGFkZCBjb21tZW50cyB3YXJuaW5nIGFib3V0IG9yLWluZyBOX0VYVCB3aXRoIGl0CglhbmQvb3IgTl9XQVJOSU5HLgoJKiBhb3V0NjQuaCAoTl9GTik6ICBGaXggdmFsdWUsIGFkZCBjb21tZW50cyBhYm91dCBOX0VYVC4KCSogc3RhYi5kZWYgKHRhYmxlIGF0IGVuZCk6ICBVcGRhdGUgdG8gc2hvdyBhbGwgdGhlIHR5cGUKCXZhbHVlcyA8MHgyMCwgaW5jbHVkaW5nIGxvdyBvcmRlciBiaXRzLiAgTW92ZSBOX0ZOIHRvCglpdHMgcmlnaHRmdWwgcGxhY2UuCgpUdWUgU2VwIDE3IDE3OjQxOjM3IDE5OTEgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBzeXMvaC1pcml4My5oOiAgc2dpL2lyaXggc3VwcG9ydC4KClR1ZSBTZXAgMTcgMDc6NTI6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogc3RhYi5kZWYgKE5fREVGRCk6ICBBZGQgR05VIE1vZHVsYS0yIGRlYnVnIHN0YWIsIGZyb20gQW5kcmV3CglCZWVycy4KClRodSBTZXAgMTIgMTQ6MTI6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmggKFNZTU5NTEVOLCBGSUxOTUxFTiwgRElNTlVNKTogIERlZmluZSB0aGVzZQoJZm9yIGludGVybmFsY29mZiwgc2VwYXJhdGVseSBmcm9tIHRoZSB2YXJpb3VzIGV4dGVybmFsIGNvZmYncy4KCSogYW1kY29mZi5oLCBiY3M4OGtjb2ZmLmgsIGkzODZjb2ZmLmgsIGludGVsLWNvZmYuaCwgbTY4a2NvZmYuaCwKCW04OGstYmNzLmg6IFByZWZpeCBTWU1OTUxFTiwgRklMTk1MRU4sIGFuZCBESU1OVU0gd2l0aCBFXydzIGZvcgoJdGhlIGV4dGVybmFsIHN0cnVjdCBkZWZpbml0aW9ucy4KCSogZWNvZmYuaDogUmVtb3ZlIHRoZXNlICNkZWZpbmUncywga2x1ZGdlIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBzeXMvaC11bHRyYTMuaDogIEFkZCBuZXcgVWx0cmFjb21wdXRlciBob3N0LgoJKiBzeXNkZXAuaDogIEFkZCBVTFRSQTNfU1lNMV9TWVMgYW5kIHVzZSBpdC4KClR1ZSBTZXAgMTAgMTA6MTE6NDYgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogaTM4NmNvZmYuaCAoTElORVNaKTogIEFsd2F5cyA2LCBub3QgYmFzZWQgb24gc2l6ZW9mKCkuCgkoRml4IGZyb20gUGV0ZXIgU2NoYXVlciA8cGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGU+LikKCldlZCBTZXAgIDQgMDg6NTg6MzcgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogYS5vdXQuZ251LmgsIGFvdXQ2NC5oOiAgQWRkIE5fV0FSTklORy4gIENoYW5nZSBOX0ZOIHRvIDB4MEUsCgl0byBtYXRjaCBTdW5PUyBhbmQgQlNELiAgQWRkIE5fQ09NTSBhcyAweDEyIGZvciBTdW5PUyBzaGFyZWQgbGliCglzdXBwb3J0LgoJKiBzdGFiLmRlZjogIEFkZCBOX0NPTU0gdG8gdGFibGUsIGZpeCBvdmVybGFwIGNvbW1lbnQuCgpUdWUgU2VwICAzIDA2OjI5OjIwIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCglNZXJnZSB3aXRoIGxhdGVzdCBGU0YgdmVyc2lvbnMgb2YgdGhlc2UgZmlsZXMuCgoJKiBzdGFiLmdudS5oOiAgQWRkIExBU1RfVU5VU0VEX1NUQUJfQ09ERS4KCSogc3RhYi5kZWY6ICBVcGRhdGUgdG8gR1BMMi4gIE1vdmUgTl9XQVJOSU5HIG91dCwgc2luY2Ugbm90IGEKCWRlYnVnIHN5bWJvbC4gIENoYW5nZSBjb21tZW50cywgYW5kIHJlb3JkZXIgdGFibGUgdG8gbnVtZXJpYwoJb3JkZXIuICBVcGRhdGUgZmluYWwgdGFibGUgY29tbWVudC4KCShOX0RTTElORSwgTl9CU0xJTkUpOiAgUmVudW1iZXIgZnJvbSAweDY2IGFuZCAweDY4LCB0byAweDQ2IGFuZCAweDQ4LgoKCSogb2JzdGFjay5oOiAgR1BMMi4gIE1lcmdlLgoKRnJpIEF1ZyAyMyAwMTo1NDoyMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCwgYS5vdXQuc3VuNC5oOiAgTWFrZSBTRUdNRU5UX1NJWkUgYWJsZSB0byBkZXBlbmQKCW9uIHRoZSBwYXJ0aWN1bGFyIGEub3V0IGJlaW5nIGV4YW1pbmVkLgoJKiBhLm91dC5zdW40Lmg6ICBEZWZpbmUgc2VnbWVudCBzaXplcyBmb3IgU3VuLTMncyBhbmQgU3VuLTQncy4KCSogRklYTUU6ICBhLm91dC5nbnUuaCBpcyBhbG1vc3Qgb2Jzb2xldGUuCgkqIEZJWE1FOiAgYS5vdXQuc3VuNC5oIHNob3VsZCBiZSByZW5hbWVkIGEub3V0LnN1bi5oIG5vdy4KCldlZCBBdWcgMjEgMjA6MzI6MTMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogU3RhcnQgYSBDaGFuZ2VMb2cgZm9yIHRoZSBpbmNsdWRlcyBkaXJlY3RvcnkuCgoJKiBhLm91dC5nbnUuaCAoTl9GTik6ICBGaXggdmFsdWUgLS0gd2FzIDE1LCBzaG91bGQgYmUgMHgxRS4KCSogc3RhYi5kZWY6ICBVcGRhdGUgYWxsb2NhdGlvbiB0YWJsZSBpbiBjb21tZW50cyBhdCBlbmQsCgl0byByZWZsZWN0IHJlYWxpdHkgYXMgSSBrbm93IGl0LgoKDApMb2NhbCBWYXJpYWJsZXM6Cm1vZGU6IGNoYW5nZS1sb2cKbGVmdC1tYXJnaW46IDgKZmlsbC1jb2x1bW46IDc0CnZlcnNpb24tY29udHJvbDogbmV2ZXIKRW5kOgo=