MjAwMy0wNC0wNCAgU3ZlaW4gRS4gU2VsZGFsICA8U3ZlaW4uU2VsZGFsQHNvbGlkYXMuY29tPgoKCSogY29mZi90aWM0eC5oOiBOYW1lc3BhY2UgY2xlYW51cC4gUmVwbGFjZSBzL2M0eC90aWM0eAoJYW5kIHMvYzN4L3RpYzN4LwoJKiBjb2ZmL3RjLXRpYzR4Lmg6IERpdHRvCgkqIG9wY29kZS90aWM0eC5oOiBEaXR0bwoKMjAwMy0wNC0wMiAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIHh0ZW5zYS1jb25maWcuaDogUmVtb3ZlIGNvbW1lbnQgaW5kaWNhdGluZyB0aGF0IHRoaXMgaXMgYQoJZ2VuZXJhdGVkIGZpbGUuCgoyMDAzLTA0LTAxICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKICAgICAgICAqIGRpcy1hc20uaCAocHJpbnRfaW5zbl94dGVuc2EpOiBEZWNsYXJlLgogICAgICAgICogeHRlbnNhLWNvbmZpZy5oOiBOZXcgZmlsZS4KICAgICAgICAqIHh0ZW5zYS1pc2EtaW50ZXJuYWwuaDogTGlrZXdpc2UuCiAgICAgICAgKiB4dGVuc2EtaXNhLmg6IExpa2V3aXNlLgoKMjAwMy0wMy0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaCAoQVRUUklCVVRFX05PTk5VTEwsIEFUVFJJQlVURV9OVUxMX1BSSU5URiwKCUFUVFJJQlVURV9OVUxMX1BSSU5URl8xLCBBVFRSSUJVVEVfTlVMTF9QUklOVEZfMiwKCUFUVFJJQlVURV9OVUxMX1BSSU5URl8zLCBBVFRSSUJVVEVfTlVMTF9QUklOVEZfNCwKCUFUVFJJQlVURV9OVUxMX1BSSU5URl81KTogTmV3LgoJKEFUVFJJQlVURV9QUklOVEYpOiBBZGQgQVRUUklCVVRFX05PTk5VTEwuCgoyMDAzLTAzLTE3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBoYXNodGFiLmggKGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUpOiBEZWNsYXJlLgoKMjAwMy0wMi0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5Lmg6IERvY3VtZW50IHJldHVybiB2YWx1ZSBvZiBwaHlzbWVtIHJvdXRpbmVzLgoKMjAwMy0wMi0yMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKHBoeXNtZW1fdG90YWwsIHBoeXNtZW1fYXZhaWxhYmxlKTogUHJvdG90eXBlLgoKMjAwMy0wMi0yMCAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBsaWJpYmVydHkuaCAobHJlYWxwYXRoKTogQWRkIGRlY2xhcmF0aW9uLgoKMjAwMy0wMS0zMSAgR3JhbnQgR3J1bmRsZXIgIDxncnVuZGxlckBkc2wyLmV4dGVybmFsLmhwLmNvbT4KCiAgICAgICAgKiBocHBhLmggKGxkd2EsIGxkZGEpOiBBZGQgb3JkZXJlZCBvcGNvZGVzLgoKMjAwMy0wMS0yNiAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBoYXNodGFiLmggKGh0YWJfYWxsb2Nfd2l0aF9hcmcsIGh0YWJfZnJlZV93aXRoX2FyZyk6IEFkZCBuZXcgdHlwZXMuCgkoc3RydWN0IGh0YWIpOiBBZGQgYWxsb2NfYXJnLCBhbGxvY193aXRoX2FyZ19mLCBmcmVlX3dpdGhfYXJnX2YuCgkoaHRhYl9jcmVhdGVfYWxsb2NfZXgpOiBOZXcgcHJvdG90eXBlLgoJKGh0YWJfc2V0X2Z1bmN0aW9uc19leCk6IE5ldyBwcm90b3R5cGUuCgoyMDAzLTAxLTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZi9zcGFyYy5oOiBBZGQgVExTIHJlbG9jcy4gIE1vdmUgUl9TUEFSQ19SRVYzMiB0byAyNTIuCgoyMDAzLTAxLTIwICBTdmVpbiBFLiBTZWxkYWwgIDxTdmVpbi5TZWxkYWxAc29saWRhcy5jb20+CgoJKiBjb2ZmL3RpYzR4LmggKFRJQ09GRl9UQVJHRVRfTUFDSElORV9HRVQpOiBGaXhlZCBkZWZpbmUgYnVnCgkqIGNvZmYvdGkuaCAoVElDT0ZGX1RBUkdFVF9NQUNISU5FX0dFVCk6IEFkZGVkIG1hY3JvcwoKMjAwMi0wNy0xNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogc3BsYXktdHJlZS5oIChHVFkpOiBEZWZpbmUgaWYgdW5kZWZpbmVkLgoJKHNwbGF5X3RyZWVfYWxsb2NhdGVfZm4pOiBSZXR1cm4gUFRSIGZvciBjb21wYXRpYmlsaXR5LCBub3Qgdm9pZCAqLgoJKHN0cnVjdCBzcGxheV90cmVlX25vZGVfcyk6IFN1cHBvcnQgZ2VuZ3R5cGUuCgkoc3RydWN0IHNwbGF5X3RyZWVfcyk6IExpa2V3aXNlLiAgTWFrZSBhbGxvY2F0ZV9kYXRhIGEgUFRSLAoJbm90IGEgdm9pZCAqLgoKMjAwMi0wMS0wMiAgQmVuIEVsbGlzdG9uICA8YmplQHJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faXEyMDAwKTogRGVjbGFyZS4KCjIwMDItMTItMjQgICAgRG1pdHJ5IERpa3kgPGRpd2lsQG1haWwucnU+CgoJKiBkaXMtYXNtLmg6IEFkZCBtc3A0MzAgZGlzYXNzZW1ibGVyIHByb3RvdHlwZS4KCjIwMDItMTItMjcgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X21pcHNfZGlzYXNzZW1ibGVyX29wdGlvbnMpOiBQcm90b3R5cGUuCgoyMDAyLTEyLTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCAic3RyaXBfZGlzY2FyZGVkIi4KCjIwMDItMTItMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVwbGFjZSBiZmRfYm9vbGVhbiBmaWVsZHMgd2l0aAoJYml0LWZpZWxkcy4gIFJlYXJyYW5nZSB0byBwdXQgYWxsIGxpa2UgdHlwZXMgdG9nZXRoZXIuCgoyMDAyLTExLTMwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogYmZkbGluay5oOiBSZXBsYWNlIGJvb2xlYW4gd2l0aCBiZmRfYm9vbGVhbi4gIEZvcm1hdHRpbmcuCgoyMDAyLTExLTIzICBTaW1vbiBCdXJnZSAgPHNpbW9uYkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IEFkZCBOZXRCU0QgdG8gdGhlIGxpc3QuCgoyMDAyLTExLTIyICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChtYWtlX3JlbGF0aXZlX3ByZWZpeCk6IEFkZCBwcm90b3R5cGUuCgoyMDAyLTExLTE2ICBLbGVlIERpZW5lcyAgPGtkaWVuZXNAYXBwbGUuY29tPgoKCSogb3Bjb2RlL204OGsuaCAoSU5TVEFCKTogUmVtb3ZlICduZXh0JyBmaWVsZC4KCShpbnN0cnVjdGlvbik6IFJlbW92ZSBkZWZpbml0aW9uOyByZXBsYWNlIHdpdGggZXh0ZXJuIGRlY2xhcmF0aW9uCglhbmQgbWFyayBhcyBjb25zdC4KCjIwMDItMTEtMTQgIEVnb3IgRHVkYSAgPGRlb0Bsb2dvcy1tLnJ1PgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgYm9vbGVhbgoJZmllbGQgcGVpMzg2X3J1bnRpbWVfcHNldWRvX3JlbG9jLgoKMjAwMi0xMC0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBwYXJ0aXRpb24uaDogIENsb3NlIHRoZSBleHRlcm4gIkMiIHNjb3BlIHdoZW4gY29tcGlsaW5nIHdpdGggQysrLgoKMjAwMi0xMC0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgREogRGVsb3JpZSA8ZGpAcmVkaGF0LmNvbT4KCglQUiBib290c3RyYXAvODM1MQoJKiBnZXRvcHQuaDogQXZvaWQgcHJvdG90eXBpbmcgZ2V0b3B0IHdpdGggbm8gYXJndW1lbnRzIGluIEMrKy4KCjIwMDItMTAtMjQgIE5hdGhhbiBUYWxsZW50ICA8ZXJheHhvbkBhbHVtbmkucmljZS5lZHU+CgoJKiBhbnNpZGVjbC5oIChfX1NURENfXyk6IEFkZCAoX19hbHBoYSAmJiBfX2NwbHVzcGx1cykgdG8gdGhlCglsaXN0IG9mCXBsYXRmb3JtIGNvbXBpbGVycyB0aGF0IG1heSBsb29rLCBzbWVsbCBhbmQgYWN0CglsaWtlIF9fU1REQ19fIGJ1dCB0aGF0IG1heSBub3QgZGVmaW5lIGl0LgoKMjAwMi0xMC0xMSAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGdldG9wdC5oOiBnZXRvcHQgaXMgaW4gdW5pc3RkLmggKGJhc2VkIG9uIFNVU3YyKS4KCjIwMDItMDktMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmL3g4Ni02NC5oOiBBZGQgVExTIHJlbG9jcy4KCjIwMDItMDktMjYgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogcmVncy86IERlbGV0ZSBkaXJlY3RvcnkuCgoyMDAyLTA5LTE5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxpYmliZXJ0eS5oIChhc3ByaW50ZiwgdmFzcHJpbnRmKTogRG9uJ3QgZGVjbGFyZSB0aGVtIGlmIHRoZQoJY29ycmVzcG9uZGluZyBIQVZFX0RFQ0xfIG1hY3JvIGlzIDEuCgoyMDAyLTA5LTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZi9pMzg2LmggKFJfMzg2X1RMU19UUE9GRiwgUl8zODZfVExTX0lFLCBSXzM4Nl9UTFNfR09USUUpOgoJRGVmaW5lLgoKMjAwMi0wOS0xOSAgTmF0aGFuIFRhbGxlbnQgIDxlcmF4eG9uQGFsdW1uaS5yaWNlLmVkdT4KCgkqIGRpcy1hc20uaDogUmVtb3ZlIChlcnJhbnQpIHRyYWlsaW5nIHNlbWljb2xvbiAoOykgZnJvbSB0aGUKCWV4dGVybiAiQyIgeyB9IGRlY2xhcmF0aW9uLgoKMjAwMi0wOS0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfcHBjX2Rpc2Fzc2VtYmxlcl9vcHRpb25zKTogUHJvdG90eXBlLgoKMjAwMi0wOC0yOCAgTWljaGFlbCBIYXllcyA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb2ZmL2ludGVybmFsLmg6IEFkZCBuZXcgcmVsb2NhdGlvbiB0eXBlcy4KCSogY29mZi90aS5oOiBBZGQgZmlsZS1oZWFkZXIgZmxhZ3MgZm9yIHRpYzR4IGNvZGUuCgkqIGRpcy1hc20uaDogQWRkIHN0YW5kYXJkIGRpc2Fzc2VtYmxlciBmb3IgdGljNHguCgkqIG9wY29kZS90aWM0eC5oOiBOZXcgZmlsZS4KCSogY29mZi90aWM0eC5oOiBOZXcgZmlsZQoKMjAwMi0wOC0wNyAgSC5KLiBMdSA8aGpsQGdudS5vcmc+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2luZm8pOiBBZGQgYWxsb3dfdW5kZWZpbmVkX3ZlcnNpb24uCgkoYmZkX2VsZl92ZXJzaW9uX2V4cHIpOiBBZGQgc3ltdmVyIGFuZCBzY3JpcHQuCgoyMDAyLTA3LTMxICBJYW4gRGFsbCAgPGlhbkBzaWJ5bC5iZXdhcmUuZHJvcGJlYXIuaWQuYXU+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2NvbW1vbl9za2lwX2FyX3N5bWJvbHMpOiBOZXcgZW51bS4KCShzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgZmllbGQgJ2NvbW1vbl9za2lwX2FyX3N5bWJvbHMnLgoKMjAwMi0wNy0yNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogb3Bjb2RlL21pcHMuaCAoQ1BVX1IyMDAwKTogUmVtb3ZlLgoKMjAwMi0wNy0xOSAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCSAgICBNYXR0aGV3IEdyZWVuICA8bXJnQHJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faXAyayk6IERlY2xhcmUuCgoyMDAyLTA3LTEwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZi9jb21tb24uaCAoU0hUX0dOVV9MSUJMSVNULCBEVF9HTlVfUFJFTElOS0VELAoJRFRfR05VX0NPTkZMSUNUKiwgRFRfR05VX0xJQkxJU1QqKTogRGVmaW5lLgoKMjAwMi0wNy0wMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9zeW1fY2hhaW4pOiBEZWNsYXJlLgoJKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIGdjX3N5bV9saXN0LiAgRm9ybWF0dGluZyBmaXhlcy4KCjIwMDItMDYtMjUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBkZW1hbmdsZS5oOiAjaW5jbHVkZSAiYW5zaWRlY2wuaCIgcmF0aGVyIHRoYW4gI2luY2x1ZGUgPGFuc2lkZWNsLmg+LgoJKiBmaWJoZWFwLmg6IExpa2V3aXNlLgoJKiBoYXNodGFiLmg6IExpa2V3aXNlLgoJKiBwYXJ0aXRpb24uaDogTGlrZXdpc2UuCgkqIHNvcnQuaDogTGlrZXdpc2UuCgkqIHNwbGF5LXRyZWUuaDogTGlrZXdpc2UuCgoyMDAyLTA2LTI0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogRG9uJ3QgZGVjbGFyZSBpZiBIQVZFX0RFQ0xfQkFTRU5BTUUuCgkqIGdldG9wdC5oIChnZXRvcHQpOiBEb24ndCBkZWNsYXJlIGlmIEhBVkVfREVDTF9HRVRPUFQuCgoyMDAyLTA2LTE4ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QHJlZGhhdC5jb20+CgoJRnJvbSBDYXRoZXJpbmUgTW9vcmU6CgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9mcnYpOiBOZXcgcHJvdG90eXBlLgoKMjAwMi0wNi0wOSAgQW5kcmV3IENhZ25leSAgPGNhZ25leUByZWRoYXQuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBNb3ZlIHRvIGRpcmVjdG9yeSBnZGIvLgoJKiBjYWxsYmFjay5oOiBNb3ZlIHRvIGRpcmVjdG9yeSBnZGIvLgoKMjAwMi0wNi0wNyAgQ2hhcmxlcyBXaWxzb24gIDxjd2lsc29uQGVjZS5nYXRlY2guZWR1PgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IENoYW5nZSB0eXBlIG9mCglwZWkzODZfYXV0b19pbXBvcnQgZmllbGQgdG8gaW50IHNvIHRoYXQgLTEgY2FuIG1lYW4gZW5hYmxlZCBieQoJZGVmYXVsdCBhbmQgMSBjYW4gbWVhbiBlbmFibGVkIGJ5IGNvbW1hbmQgbGluZSBzd2l0Y2guCgoyMDAyLTA2LTA2ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuaCAoaHRhYik6IFJlYXJyYW5nZSBuZXcgbWVtYmVycyBmb3IgYmFja3dhcmQKCWNvbXBhdGliaWxpdHkuCgkoaHRhYl9jcmVhdGUpOiBEb24ndCB1c2UgYSBtYWNybyB0aGF0IHJlcXVpcmVzIG90aGVyIGhlYWRlcnMuCgoyMDAyLTA2LTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmggKGh0YWJfY3JlYXRlKTogUmVzdG9yZSBwcm90b3R5cGUgZm9yIGJhY2t3YXJkCgljb21wYXRpYmlsaXR5LgoJKGh0YWJfdHJ5X2NyZWF0ZSk6IExpa2V3aXNlLgoKMjAwMi0wNS0yMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5oIChzdHJ1Y3QgaHRhYik6IFVwZGF0ZSBmb3IgY2hhbmdlIHRvIGxlbmd0aCBzcGVjaWZpZXIuCgoyMDAyLTA1LTEwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmggKEdUWSk6IERlZmluZSBpZiB1bmRlZmluZWQuCgkoaHRhYl9hbGxvYyk6IE5ldyB0eXBlZGVmLgoJKGh0YWJfZnJlZSk6IE5ldyB0eXBlZGVmLgoJKHN0cnVjdCBodGFiKTogU3VwcG9ydCBnZW5ndHlwZTsgYWxsb3cgdXNlci1zcGVjaWZpZWQgbWVtb3J5CglhbGxvY2F0aW9uLgoJKGh0YWJfY3JlYXRlX2FsbG9jKTogTmV3LgoJKGh0YWJfY3JlYXRlKTogUmVwbGFjZSB3aXRoICNkZWZpbmUuCgkoaHRhYl90cnlfY3JlYXRlKTogRGVsZXRlLgoKMjAwMi0wNS0zMSAgTWljaGFsIEx1ZHZpZyAgPG1sdWR2aWdAc3VzZS5jej4KCgkqIGVsZi9kd2FyZjIuaCAoRFdfQ0ZBX2xvd191c2VyLCBEV19DRkFfaGlnaF91c2VyKTogUmVuYW1lZAoJdG8gRFdfQ0ZBX2xvX3VzZXIsIERXX0NGQV9oaV91c2VyIHJlc3BlY3RpdmVseS4KCQoyMDAyLTA1LTI4ICBLdWFuZyBId2EgTGluIDxrdWFuZ0BzYmNnbG9iYWwubmV0PgoKCSogZGlzLWFzbS5oOiBQcm90b3R5cGUgcHJpbnRfaW5zbl9kbHguCgoyMDAyLTA1LTIzICBBbmRyZXcgQ2FnbmV5ICA8YWMxMzEzMTNAcmVkaGF0LmNvbT4KCgkqIHNpbS1kMTB2Lmg6IERlbGV0ZSBmaWxlLiAgTW92ZWQgdG8gaW5jbHVkZS9nZGIvLgoKMjAwMi0wNS0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGYvY29tbW9uLmggKFBUX1RMUywgU0hGX1RMUywgU1RUX1RMUywgREZfU1RBVElDX1RMUyk6IERlZmluZS4KCSogZWxmL2lhNjQuaCAoUl9JQTY0X0xUT0ZGX1RQUkVMMjIpOiBSZW5hbWVkIGZyb20gUl9JQTY0X0xUT0ZGX1RQMjIuCgkqIGVsZi9pMzg2Lmg6IEFkZCBUTFMgcmVsb2NzLgoKMjAwMi0wNS0yMSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogQWRkIGFsbG93X211bHRpcGxlX2RlZmluaXRpb24uCgoyMDAyLTA1LTE3ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9zaGwsIHByaW50X2luc25fc2g2NGwpOiBSZW1vdmUgcHJvdG90eXBlLgoKMjAwMi0wNC0xNiAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AcmVkaGF0LmNvbT4KCgkqIHhyZWdleDIuaCAoX19yZXN0cmljdF9hcnIpOiBEZWZpbmUgdG8gX19yZXN0cmljdCBvbiBHQ0MKCTMuMSBhbmQgbGF0ZXIuICBEbyBub3QgcmVkZWZpbmUuCgoyMDAyLTA0LTAxICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiBkeW4tc3RyaW5nLmg6ICBBbHNvIGFsbG93IElOX0dMSUJDUFBfVjMgdG8gcmVkZWZpbmUgbmFtZXMuCgoyMDAyLTAzLTEwICBEYW5pZWwgSmFjb2Jvd2l0eiA8ZHJvd0BtdmlzdGEuY29tPgoKCSogZ2RiOiBOZXcgZGlyZWN0b3J5LgoKMjAwMi0wMy0wNiAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9hcm1fZXh0KTogRGVsZXRlIGRlY2xhcmF0aW9uLgoKMjAwMi0wMi0yMSAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCglBbGxvdyB0aGUgdXNlciB0byBzcGVjaWZ5IGZ1bmN0aW9ucyBmb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yCglzcGxheSB0cmVlIHJvb3RzIGFuZCBub2Rlcy4KCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2FsbG9jYXRlX2ZuLCBzcGxheV90cmVlX2RlYWxsb2NhdGVfZm4pOgoJTmV3IHR5cGVzLgoJKHNwbGF5X3RyZWUpOiBOZXcgZmllbGRzOiBgYWxsb2NhdGUnLCBgZGVhbGxvY2F0ZScsIGFuZAoJYGFsbG9jYXRlX2RhdGEnLgoJKHNwbGF5X3RyZWVfbmV3X3dpdGhfYWxsb2NhdG9yKTogTmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKMjAwMi0wMi0xNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglTdXBwb3J0IGFyYml0cmFyeSBsZW5ndGggZmlsbCBwYXR0ZXJucy4KCSogYmZkbGluay5oIChlbnVtIGJmZF9saW5rX29yZGVyX3R5cGUpOiBSZW1vdmUgYmZkX2ZpbGxfbGlua19vcmRlci4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIpOiBSZW1vdmUgZmlsbC4gIEFkZCBkYXRhLnNpemUuCgoyMDAyLTAyLTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglDb250cmlidXRlIHNoNjQtZWxmLgoJMjAwMC0xMS0yNSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBuQGN5Z251cy5jb20+CgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9zaDY0KTogTmV3IHByb3RvdHlwZS4KCShwcmludF9pbnNuX3NoNjRsKTogTmV3IHByb3RvdHlwZS4KCShwcmludF9pbnNuX3NoNjR4X21lZGlhKTogTmV3IHByb3RvdHlwZS4KCjIwMDItMDItMDUgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQHJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgZmllbGQgYGluc25fc2V0cycuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogQ2xlYXIgaXQuCgoyMDAyLTAyLTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGRlbWFuZ2xlLmggKGNwbHVzX2RlbWFuZ2xlX3YzKTogQWRkICJvcHRpb25zIiBwYXJtLgoJKGNwbHVzX2RlbWFuZ2xlX3YzX3R5cGUpOiBSZW1vdmUgcHJvdG90eXBlLgoJKERNR0xfVkVSQk9TRSk6IE5ldyBtYWNyby4KCShETUdMX1RZUEVTKTogTmV3IG1hY3JvLgoKMjAwMi0wMi0wMiAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogZGVtYW5nbGUuaCAoY3BsdXNfZGVtYW5nbGVfdjNfdHlwZSk6IE5ldyBwcm90b3R5cGUuCgoyMDAyLTAxLTMxICBJdmFuIEd1enZpbmVjICA8aXZhbmdAb3BlbmNvcmVzLm9yZz4KCgkqIGRpcy1hc20uaCA6IEFkZCBzdXBwb3J0IGZvciBvcjMyIHRhcmdldHMKCjIwMDItMDEtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChDX2FsbG9jYSk6IEFkZCBBVFRSSUJVVEVfTUFMTE9DLgoKMjAwMi0wMS0yNyAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNnZW4uaCAoQkZEX1ZFUlNJT04pOiBVc2UgQkZEX1ZFUlNJT05fREFURSBpbnN0ZWFkLgoKMjAwMS0xMi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmggKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGlzZSB0aGUKCWRpc2Fzc2VtYmxlcl9vcHRpb25zIGZpZWxkICh0byBOVUxMKS4KCjIwMDEtMTItMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBlaF9mcmFtZV9oZHIgZmllbGQuCgoyMDAxLTEyLTA3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25feHN0b3JteTE2KTogRGVjbGFyZS4KCjIwMDEtMTItMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkZW1hbmdsZS5oIChub19kZW1hbmdsaW5nKTogTmV3LgoJKE5PX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogTmV3LgoKMjAwMS0xMS0xNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pMzg2KTogRGVjbGFyZS4KCjIwMDEtMTEtMTEgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGFsdW0ubWl0LmVkdT4KCgkqIGRpcy1hc20uaDogRml4IGNvbW1lbnQgdG8gcmVmZXIgdG8gb2N0ZXRzIHJhdGhlciB0aGFuIGJ5dGVzLgoKMjAwMS0xMC0zMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX21taXgpOiBBZGQgcHJvdG90eXBlLgoKMjAwMS0xMC0yNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogc2FmZS1jdHlwZS5oIChfc2NoX2lzYmFzaWMsIElTX0lTT0JBU0lDKTogTmV3LgoKMjAwMS0xMC0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKGhleF9pbml0KTogUmV2ZXJ0IGRlbGV0ZS4KCgkqIGxpYmliZXJ0eS5oIChfaGV4X3ZhbHVlKTogQ29uc3QtaWZ5LgoJKGhleF9pbml0KTogRGVsZXRlLgoKMjAwMS0xMC0xNiAgQ2hyaXN0b3BoZXIgRmF5bG9yICA8Y2dmQHJlZGhhdC5jb20+CgoJKiBmaWxlbmFtZXMuaDogQWRkIGN5Z3dpbiB0byB0aGUgbGlzdCBvZiBkb3Npc2ggc3R5bGUgcGF0aCBzeXN0ZW1zLgoKMjAwMS0xMC0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaCAoZGVtYW5nbGVyX2VuZ2luZSk6IENvbnN0LWlmeS4KCSogbGliaWJlcnR5LmggKGJ1aWxkYXJndik6IExpa2V3aXNlLgoKMjAwMS0xMC0wMyAgVmFzc2lsaSBLYXJwb3YgIDxtYWxjQHB1bHNlc29mdC5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5vY29weXJlbG9jIGZpZWxkLgoKMjAwMS0wOS0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKHJlY29uY2F0KTogTmV3IGZ1bmN0aW9uLgoKMjAwMS0wOS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKGNvbmNhdCwgY29uY2F0X2xlbmd0aCwgY29uY2F0X2NvcHksIGNvbmNhdF9jb3B5MiwKCUFDT05DQVQpOiBJbXByb3ZlIGNvbW1lbnRzLgoKMjAwMS0wOS0xOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIG9iamFsbG9jLmggKE9CSkFMTE9DX0FMSUdOKTogRGVmaW5lIHVzaW5nIG9mZnNldG9mLgoKMjAwMS0wOS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKGNvbmNhdF9sZW5ndGgsIGNvbmNhdF9jb3B5LCBjb25jYXRfY29weTIsCglsaWJpYmVydHlfY29uY2F0X3B0ciwgQUNPTkNBVCk6IE5ldy4KCgkqIGxpYmliZXJ0eS5oIChBU1RSRFVQKTogTmV3IG1hY3JvLgoJbGliaWJlcnR5X29wdHIsIGxpYmliZXJ0eV9ucHRyLCBsaWJpYmVydHlfbGVuKTogRGVjbGFyZS4KCjIwMDEtMDgtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmg6IFVwZGF0ZSBjb21tZW50cyByZWZsZWN0aW5nIHByZXZpb3VzIGNoYW5nZS4KCjIwMDEtMDgtMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmggKFZBX09QRU4sIFZBX0NMT1NFKTogQWxsb3cgbXVsdGlwbGUgdXNlcy4KCjIwMDEtMDgtMjUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IENoYW5nZSAnc3BhcmVfZHluYW1pY190YWdzJyB0bwoJdW5zaWduZWQgdG8gcmVtb3ZlIGEgY29tcGlsZSB0aW1lIHdhcm5pbmcgbWVzc2FnZS4KCjIwMDEtMDgtMjQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaGFzaF90YWJsZV90eXBlKTogTmV3LiBUaGUgbGlua2VyIGhhc2gKCXRhYmxlIHR5cGUsIGJmZF9saW5rX2dlbmVyaWNfaGFzaF90YWJsZSBhbmQKCWJmZF9saW5rX2VsZl9oYXNoX3RhYmxlLgoJKGJmZF9saW5rX2hhc2hfdGFibGUpOiBBZGQgYSBuZXcgZmllbGQsIHR5cGUsIGZvciB0aGUgbGlua2VyCgloYXNoIHRhYmxlIHR5cGUuCgoyMDAxLTA4LTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgY29tYnJlbG9jIGFuZAoJc3BhcmVfZHluYW1pY190YWdzIGZpZWxkcy4KCjIwMDEtMDgtMjMgIExhcnMgQnJpbmtob2ZmICA8bGFyc0Bub2NyZXcub3JnPgoKCSogZHluLXN0cmluZy5oLCBmaWJoZWFwLmgsIHBhcnRpdGlvbi5oLCBzb3J0LmgsIHNwbGF5LXRyZWUuaDoKCXJlcGxhY2UgIkdOVSBDQyIgd2l0aCAiR0NDIi4KCjIwMDEtMDgtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmaWJoZWFwLmg6IFRpZHkgZm9ybWF0dGluZy4KCShmaWJub2RlX3QpOiBMaW1pdCBkZWdyZWUgdG8gMzEgYml0cyB0byBhdm9pZCB3YXJuaW5nLgoKMjAwMS0wOC0yMCAgRGFuaWVsIEJlcmxpbiAgPGRhbkBjZ3NvZnR3YXJlLmNvbT4KCgkqIGZpYmhlYXAuaDogTmV3IGZpbGUuIEZpYm9uYWNjaSBoZWFwLgoKMjAwMS0wOC0yMCAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9hcm1fZXh0KTogRG9jdW1lbnQgYXMgZGVwcmVjYXRlZC4KCShmbG9hdGZvcm1hdF9hcm1fZXh0X2JpZywgZmxvYXRmb3JtYXRfYXJtX2V4dF9saXR0bGVieXRlX2JpZ3dvcmQpCgkoZmxvYXRmb3JtYXRfaWE2NF9zcGlsbF9saXR0bGUsIGZsb2F0Zm9ybWF0X2lhNjRfcXVhZF9saXR0bGUpCgkoZmxvYXRmb3JtYXRfaWE2NF9zcGlsbF9iaWcsIGZsb2F0Zm9ybWF0X2lhNjRfcXVhZF9iaWcpCgkoZmxvYXRmb3JtYXRfbTg4MTEwX2hhcnJpc19leHQpOiBEZWNsYXJlLgoKMjAwMS0wOC0xOCAgWmFjayBXZWluYmVyZyAgPHphY2t3QHBhbml4LmNvbT4KCgkqIGFuc2lkZWNsLmg6IFJlb3JnYW5pemUgZm9yIHJlYWRhYmlsaXR5LCByZW1vdmUgZG9jdW1lbnRhdGlvbgoJb2Ygb2Jzb2xldGUgbWFjcm9zLCBkb2N1bWVudCBQQVJBTVMgYW5kIFZQQVJBTVMuICBBZGQgbmV3CgltYWNyb3MgVkFfT1BFTiwgVkFfQ0xPU0UsIGFuZCBWQV9GSVhFREFSRyBmb3IgbmljZXIgdmFyaWFkaWMKCWZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgoKMjAwMS0wOC0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuaCAoaHRhYl9oYXNoX3N0cmluZyk6IERlY2xhcmUuCgoyMDAxLTA4LTEwICBBbmRyZXcgQ2FnbmV5ICA8YWMxMzEzMTNAcmVkaGF0LmNvbT4KCgkqIGxpYmliZXJ0eS5oIChsYmFzZW5hbWUpOiBDaGFuZ2UgZnVuY3Rpb24gZGVjbGFyYXRpb24gdG8gcmV0dXJuIGEKCWNvbnN0IGNoYXIgcG9pbnRlci4KCjIwMDEtMDgtMDIgIE1hcmsgS2V0dGVuaXMgIDxrZXR0ZW5pc0BnbnUub3JnPgoKCSogeHJlZ2V4LmggKF9SRUdFWF9SRV9DT01QKTogRGVmaW5lLgoJKHJlX2NvbXApOiBEZWZpbmUgdG8geHJlX2NvbXAuCgkocmVfZXhlYyk6IERlZmluZSB0byB4cmVfZXhlYy4KCjIwMDEtMDgtMDIgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCiAgICAgICAgKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogYWRkIG5ldyBib29sZWFuCiAgICAgICAgZmllbGQgcGVpMzg2X2F1dG9faW1wb3J0LgoKMjAwMS0wNy0xOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogeHJlZ2V4Mi5oOiBQbGFjZSB1bmRlciBMR1BMIHZlcnNpb24gMi4xLgoKMjAwMS0wNy0xMCAgSmVmZiBKb2huc3RvbiAgPGpqb2huc3RuQHJlZGhhdC5jb20+CgoJKiB4cmVnZXguaDogTmV3IGZpbGUgdG8gc3VwcG9ydCBsaWJpYmVydHkgcmVnZXguCgkqIHhyZWdleDIuaDogRGl0dG8uCgoyMDAxLTA2LTE1ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBOZXcgbWVtYmVyIGV4cG9ydF9keW5hbWljLgoKMjAwMS0wNS0xNiAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jYXJuZWdpZW1lbGxvbi5lZHU+CgoJKiBwYXJ0aXRpb24uaDogRml4IG1pc3NwZWxsaW5nIG9mIGBpbXBsZW1lbnRhdGlvbicuCgoyMDAxLTA1LTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChOVUxMX1BUUik6IERlbGV0ZS4KCjIwMDEtMDUtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBkZW1hbmdsZS5oOiBVc2UgUEFSQU1TIGZvciBhbGwgcHJvdG90eXBlcy4KCSogdGVybmFyeS5oOiBVc2UgUEFSQU1TIGZvciBhbGwgcHJvdG90eXBlcy4gIFVzZSBQVFIsIG5vdCB2b2lkICouCglNYWtlIGFyZ3VtZW50cyBjb25zdGFudCB3aGVyZSBwb3NzaWJsZS4KCjIwMDEtMDUtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfbWF4KTogTmV3IGZ1bmN0aW9uLgoJKHNwbGF5X3RyZWVfbWluKTogTGlrZXdpc2UuCgoyMDAxLTA0LTI3ICBKb2hhbiBSeWRiZXJnICA8anJ5ZGJlcmdAb3BlbmNvcmVzLm9yZz4KCiAgICAgICAgKiBkaXMtYXNtLmggKHByaW50X2luc25fb3BlbnJpc2MpOiBBZGQgcHJvdG90eXBlLgoKMjAwMS0wNC0xNSAgRGFuaWVsIEJlcmxpbiAgPGRhbkBjZ3NvZnR3YXJlLmNvbT4KCgkqIHRlcm5hcnkuaDogTmV3IGZpbGUgLSBUZXJuYXJ5IHNlYXJjaCB0cmVlIGhlYWRlci4KCjIwMDEtMDQtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYmZkbGluay5oIChiZmRfbGlua19kaXNjYXJkKTogQWRkIGRpc2NhcmRfc2VjX21lcmdlLgoKMjAwMS0wNC0wMyAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGFuc2lkZWNsLmg6IEFsbCBsb2dpYyBmcm9tIGdjYy9nYW5zaWRlY2wuaCBtb3ZlZCBoZXJlLgoKMjAwMS0wMy0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKGFsbG9jYSk6IEhhbmRsZSBzZXR0aW5nIENfQUxMT0NBLgoKMjAwMS0wMy0yMCAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIGRlbWFuZ2xlLmggKGVudW0gZ251X3YzX2NvbnN0cnVjdG9yX2tpbmRzLAoJaXNfZ251X3YzX21hbmdsZWRfY3RvciwgZW51bSBnbnVfdjNfZGVzdHJ1Y3Rvcl9raW5kcywKCWlzX2dudV92M19tYW5nbGVkX2R0b3IpOiBOZXcgZGVjbGFyYXRpb25zLgoKMjAwMS0wMy0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGFuc2lkZWNsLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGRlbWFuZ2xlLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGZsb2F0Zm9ybWF0Lmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGZubWF0Y2guaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCSogZ2V0b3B0Lmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGxpYmliZXJ0eS5oOiBBZGQgRlNGIGNvcHlyaWdodCBub3RpY2UuCgkqIG1kNS5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBvYnN0YWNrLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIHNwbGF5LXRyZWUuaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCjIwMDEtMDMtMTAgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCSAgICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogbGliaWJlcnR5Lmg6IEFkZCBsYmFzZW5hbWUuCgoyMDAxLTAzLTA2ICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogbGliaWJlcnR5Lmg6IFByb3RvdHlwZSBDX2FsbG9jYTsgZGVmaW5lIGFsbG9jYSB0byBlaXRoZXIKCV9fYnVpbHRpbl9hbGxvY2Egb3IgQ19hbGxvY2EgYXMgYXBwcm9wcmlhdGUuCgoyMDAxLTAzLTAxICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogc2FmZS1jdHlwZS5oIChfc2NoX3Rlc3QpOiBDYXN0IGVudW0gYml0IHRvIHVuc2lnbmVkIHNob3J0IGludCBmb3IgcGNjCgljb21wYXRpYmlsaXR5LgoKMjAwMS0wMi0xOCAgbGFycyBicmlua2hvZmYgIDxsYXJzQG5vY3Jldy5vcmc+CgoJKiBkaXMtYXNtLmg6IEFkZCBQRFAtMTEgdGFyZ2V0LgoKMjAwMS0wMi0wOSAgTWFydGluIFNjaHdpZGVmc2t5ICA8c2Nod2lkZWZza3lAZGUuaWJtLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIGxpbnV4IHRhcmdldCBmb3IgUy8zOTAuCgoyMDAxLTAxLTExICBQZXRlciBUYXJnZXR0ICA8cGV0ZXIudGFyZ2V0dEBhcmNjb3Jlcy5jb20+CgoJKiBkaXMtYXNtLmggKGFyY19nZXRfZGlzYXNzZW1ibGVyKTogQ29ycmVjdCBkZWNsYXJhdGlvbi4KCjIwMDEtMDEtMDkgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBiaW4tYnVncy5oIChSRVBPUlRfQlVHU19UTyk6IFNldCB0byBgYnVnLWJpbnV0aWxzQGdudS5vcmcnLgoKMjAwMC0xMi0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogQ09QWUlORzogVXBkYXRlIHRvIGN1cnJlbnQKCWZ0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvTGljZW5zZXMvQ09QWUlORy0yLjAgKGZpeGVzIHJlZmVyZW5jZXMKCXRvIDE5eXkgYXMgZXhhbXBsZSB5ZWFyIGluIGNvcHlyaWdodCBub3RpY2UpLgoKMjAwMC0xMi0xOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZGlzLWFzbS5oIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyk6IE5ldyBtZW1iZXIgInNlY3Rpb24iLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGl6ZSBwcml2YXRlX2RhdGEgbWVtYmVyLgoJSW5pdGlhbGl6ZSBzZWN0aW9uIG1lbWJlci4KCjIwMDAtMTItMTYgIEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogc2FmZS1jdHlwZS5oOiBNYWtlIGNvZGUgd29yayBvbiBhbGwgdGFyZ2V0cyBhbmQgbm90IGp1c3Qgb24KCXRhcmdldHMgd2hlcmUgYSBjaGFyIGlzIDggYml0cy4KCjIwMDAtMTItMTAgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5ldyBhbGxvd19zaGxpYl91bmRlZmluZWQKCW1lbWJlciB0byBzdHJ1Y3QgZm9yIHN5c3RlbXMgd2hlcmUgaXQgaXMgbm9ybWFsIHRvIGhhdmUgdW5kZWZpbmVkCglzeW1ib2xzIGluIHNoYXJlZCBsaWJyYXJpZXMgYXQgcnVudGltZSBhbmQgdGhlIHJ1bnRpbWUgbGlua2VyCgl0YWtlcyBjYXJlIG9mIHJlZGlyZWN0aW5nIHRoZW0uCgoyMDAwLTEyLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogc2FmZS1jdHlwZS5oOiBOZXcgZmlsZS4KCjIwMDAtMTItMDYgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQG15bmQuY29tPgoKCSogZ2V0b3B0Lmggb2JzdGFjay5oOiBTdGFuZGFyaXplIGNvcHlyaWdodCBzdGF0ZW1lbnQuCgoyMDAwLTEyLTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZGVtYW5nbGUuaDogQ2hhbmdlICJuZXdfYWJpIiB0byAidjMiIGV2ZXJ5d2hlcmUuCgoyMDAwLTExLTIyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogbGliaWJlcnR5Lmg6IE1vdmUgI2luY2x1ZGVzIHRvIHRvcC4gIFByb3RvdHlwZSB4bWFsbG9jX2ZhaWxlZC4KCjIwMDAtMTEtMTUgIEtlbm5ldGggQmxvY2sgIDxrZW5uZXRoLmJsb2NrQGNvbXBhcS5jb20+CgoJKiBkZW1hbmdsZS5oOiBBZGQgZ25hdCBhbmQgamF2YSBkZW1hbmdsZSBzdHlsZXMuCgoyMDAwLTExLTA0ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBoYXNodGFiLmggKHN0cnVjdCBodGFiKTogQWRkIG1lbWJlciByZXR1cm5fYWxsb2NhdGlvbl9mYWlsdXJlLgoJKGh0YWJfdHJ5X2NyZWF0ZSk6IE5ldyBwcm90b3R5cGUuICBNZW50aW9uIHdoaWNoIGZ1bmN0aW9ucyBtYXkKCXJldHVybiBOVUxMIHdoZW4gdGhpcyBpcyB1c2VkLgoKMjAwMC0xMS0wMyAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogaGFzaHRhYi5oOiBDaGFuZ2Ugdm9pZCAqIHRvIFBUUiB3aGVyZSBuZWNlc3NhcnkuCgoyMDAwLTEwLTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX3ByZWRlY2Vzc29yKTogRGVjbGFyZS4KCjIwMDAtMDktMjkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZGlzLWFzbS5oOiBEZWNsYXJlIGNyaXNfZ2V0X2Rpc2Fzc2VtYmxlciwgbm90IHByaW50X2luc25fY3Jpcy4KCUZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDAwLTA5LTI4ICBKb2huIERhdmlkIEFuZ2xpbiA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBhbGxvY2EtY29uZi5oOiBOZXcgZmlsZSAoY29waWVkIGZyb20gbGliaWJlcnR5KS4KCjIwMDAtMDktMDUgIEpvaG4gRGF2aWQgQW5nbGluIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIG1kNS5oIChtZDVfdWludDMyKTogQ2hvb3NlIHZpYSBJTlRfTUFYIGluc3RlYWQgb2YgVUlOVF9NQVguCgoyMDAwLTA5LTA0ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHluLXN0cmluZy5oOiBBZGp1c3QgZm9ybWF0dGluZy4KCShkeW5fc3RyaW5nX2luc2VydF9jaGFyKTogTmV3IG1hY3JvLiAgTmV3IGRlY2xhcmF0aW9uLgoKMjAwMC0wOC0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBtZDUuaDogTmV3IGZpbGUuCgoyMDAwLTA4LTI0ICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIGxpYmliZXJ0eS5oIChBUlJBWV9TSVpFKTogTmV3IG1hY3JvLgoKMjAwMC0wNy0yOSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIG9zOWsuaDogQWRkIGNvcHlyaWdodCBub3RpY2UuCglGaXggZm9ybWF0dGluZy4KCjIwMDAtMDctMjIgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faTg2MCk6IEFkZCBwcm90b3R5cGUuCgoyMDAwLTA3LTIwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2luZm8pOiBBZGQgbmV3X2R0YWdzLgoKMjAwMC0wNy0yMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fY3Jpcyk6IERlY2xhcmUuCgoyMDAwLTA3LTE5ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2luZm8pOiBBZGQgZmxhZ3MgYW5kIGZsYWdzXzEuCgoyMDAwLTA2LTA1ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIE1BSU5UQUlORVJTOiBuZXcKCjIwMDAtMDYtMjEgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkeW4tc3RyaW5nLmggKGR5bl9zdHJpbmdfaW5pdCwgZHluX3N0cmluZ19uZXcsCglkeW5fc3RyaW5nX2RlbGV0ZSwgZHluX3N0cmluZ19yZWxlYXNlLCBkeW5fc3RyaW5nX3Jlc2l6ZSwKCWR5bl9zdHJpbmdfY2xlYXIsIGR5bl9zdHJpbmdfY29weSwgZHluX3N0cmluZ19jb3B5X2NzdHIsCglkeW5fc3RyaW5nX3ByZXBlbmQsIGR5bl9zdHJpbmdfcHJlcGVuZF9jc3RyLCBkeW5fc3RyaW5nX2luc2VydCwKCWR5bl9zdHJpbmdfaW5zZXJ0X2NzdHIsIGR5bl9zdHJpbmdfYXBwZW5kLCBkeW5fc3RyaW5nX2FwcGVuZF9jc3RyLAoJZHluX3N0cmluZ19hcHBlbmRfY2hhciwgZHluX3N0cmluZ19zdWJzdHJpbmdfZHluX3N0cmluZ19lcSk6CglEZWZpbmUgYXMgc2FtZSBuYW1lIHdpdGggX19jeGFfIHByZXBlbmRlZCwgaWYgSU5fTElCR0NDMi4KCShkeW5fc3RyaW5nX2luaXQsIGR5bl9zdHJpbmdfY29weSwgZHluX3N0cmluZ19jb3B5X2NzdHIsCglkeW5fc3RyaW5nX3ByZXBlbmQsIGR5bl9zdHJpbmdfcHJlcGVuZF9jc3RyLCBkeW5fc3RyaW5nX2luc2VydCwKCWR5bl9zdHJpbmdfaW5zZXJ0X2NzdHIsIGR5bl9zdHJpbmdfYXBwZW5kLCBkeW5fc3RyaW5nX2FwcGVuZF9jc3RyLAoJZHluX3N0cmluZ19hcHBlbmRfY2hhciwgZHluX3N0cmluZ19zdWJzdHJpbmcpOiBDaGFuZ2UgcmV0dXJuIHR5cGUKCXRvIGludC4KCjIwMDAtMDYtMTggIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX202OGhjMTIpOiBEZWZpbmUuCgkocHJpbnRfaW5zbl9tNjhoYzExKTogTGlrZXdpc2UuCgoyMDAwLTA2LTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogb3M5ay5oOiBDaGFuZ2UgdmFsdWVzIG9mIE1PRFNZTkMgYW5kIENSQ0NPTiBkdWUgdG8gYnVnIHJlcG9ydAoJZnJvbSBSdXNzIE1hZ2VlIDxybWFnZWVAaG9tZS5jb20+LgoKMjAwMC0wNi0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaCAoZGVtYW5nbGluZ19zdHlsZXMpOiBSZW1vdmUgdHJhaWxpbmcgY29tbWEgaW4gZW51bS4KCgkqIGR5bi1zdHJpbmcuaCAoZHluX3N0cmluZ19hcHBlbmRfY2hhcik6IENoYW5nZSBwYXJhbWV0ZXIgZnJvbQoJY2hhciB0byBpbnQuCgoyMDAwLTA2LTA0ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHluLXN0cmluZy5oOiBNb3ZlIGhlcmUgZnJvbSBnY2MvZHluLXN0cmluZy5oLiAgQWRkIG5ldyBmdW5jdGlvbnMuCgoJKiBkZW1hbmdsZS5oIChETUdMX0dOVV9ORVdfQUJJKTogTmV3IG1hY3JvLgoJKERNR0xfU1RZTEVfTUFTSyk6IE9yIGluIERNR0xfR05VX05FV19BQkkuCgkoY3VycmVudF9kZW1hbmdsaW5nX3N0eWxlKTogQWRkIGdudV9uZXdfYWJpX2RlbWFuZ2xpbmcuCgkoR05VX05FV19BQklfREVNQU5HTElOR19TVFlMRV9TVFJJTkcpOiBOZXcgbWFjcm8uCgkoR05VX05FV19BQklfREVNQU5HTElORyk6IExpa2V3aXNlLgoJKGNwbHVzX2RlbWFuZ2xlX25ld19hYmkpOiBOZXcgZGVjbGFyYXRpb24uCgpUdWUgTWF5IDMwIDE2OjUzOjM0IDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmggKHN0cnVjdCBmbG9hdGZvcm1hdCk6IEFkZCBmaWVsZCBuYW1lLgoKMjAwMC0wNS0yNiAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIGZpbGVuYW1lcy5oOiBOZXcgZmlsZS4KCShIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSwgSVNfRElSX1NFUEFSQVRPUikKCShJU19BQlNPTFVURV9QQVRILCBGSUxFTkFNRV9DTVApOiBOZXcgbWFjcm9zLgoKMjAwMC0wNS0yMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2V0b3B0LmggKGdldG9wdCk6IEFsc28gY2hlY2sgSEFWRV9ERUNMXyogd2hlbiBwcm90b3R5cGluZy4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IExpa2V3aXNlLgoKMjAwMC0wNS0xNyAgUy4gQmhhcmFkd2FqIFlhZGF2YWxsaSAgPHNieUBzY3J1Z3MubGtnLmRlYy5jb20+CgkgICAgUmljayBHb3J0b24JICAgICAgICAgICAgPGdvcnRvbkBzY3J1Z3MubGtnLmRlYy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIGVtaXRyZWxvY2F0aW9ucyBmbGFnLgoKMjAwMC0wNS0wOCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl90aWM1NHgpOiBEZWNsYXJlLgoKMjAwMC0wNS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKIAkqIGFuc2lkZWNsLmg6ICNkZWZpbmUgX19leHRlbnNpb25fXyB0byBub3RoaW5nIGlmCiAJR0NDX1ZFUlNJT04gPCAyMDA4LgoKMjAwMC0wNS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaCAoZGVtYW5nbGVyX2VuZ2luZSk6IENvbnN0aWZ5LgoKVGh1IE1heSAgNCAxNzoxNToyNiAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIHNvcnQuaCAoc3lzL3R5cGVzLmgpOiBGaWxlIGluY2x1ZGVkIHVuY29uZGl0aW9ubmFseS4KCShzdGRkZWYuaCk6IEZpbGUgaW5jbHVkZSBvbmx5ICNpZmRlZiBfX1NURENfXy4KCjIwMDAtMDUtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHN5bWNhdC5oOiBSZW1vdmUgI2VuZGlmIGxhYmVsLgoKMjAwMC0wNC0yOCAgS2VubmV0aCBCbG9jayAgPGJsb2NrQHprMy5kZWMuY29tPgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKICAgICAgICAqIGRlbWFuZ2xlLmggKGxpYmliZXJ0eV9kZW1hbmdsZXJzKTogbmV3IHRhYmxlIGZvciBkaWZmZXJlbnQgc3R5bGVzLgogICAgICAgIChjcGx1c19kZW1hbmdsZV9zZXRfc3R5bGUpOiBOZXcgZnVuY3Rpb24gZm9yIHNldHRpbmcgc3R5bGUuCiAgICAgICAgKGNwbHVzX2RlbWFuZ2xlX25hbWVfdG9fc3R5bGUpOiBOZXcgZnVuY3Rpb24gdG8gdHJhbnNsYXRlIG5hbWUuCgoyMDAwLTA0LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaGFzaHRhYi5oIChoYXNoX3BvaW50ZXIpOiBEZWNsYXJlLgoJKGVxX3BvaW50ZXIpOiBMaWtld2lzZS4KCjIwMDAtMDQtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzb3J0Lmg6IE5ldyBmaWxlLgoKRnJpIEFwciAyMSAxMzoyMDo1MyAyMDAwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoJCQkgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2lhNjQpOiBEZWNsYXJlLgoKVHVlIEFwciAxOCAxNjoyMjozMCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogaGFzaHRhYi5oIChlbnVtIGluc2VydF9vcHRpb24pOiBOZXcgdHlwZS4KCShodGFiX2ZpbmRfc2xvdCwgaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogVXNlIGl0LgoKMjAwMC0wNC0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3ltY2F0Lmg6IEhvbm9yIGF1dG9jb25mIG1hY3JvIEhBVkVfU1RSSU5HSVpFLiAgQWRkCgljb21tZW50cy9jYXZlYXRzIHdpdGggcmVnYXJkIHRvIHRyYWRpdGlvbmFsIEMgYmVoYXZpb3IuCgoyMDAwLTA0LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX3JlbW92ZSk6IERlY2xhcmUuCgoyMDAwLTA0LTA0ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogYmluLWJ1Z3MuaCAoUkVQT1JUX0JVR1NfVE8pOiBSZW1vdmUgdHJhbnNsYXRlZCBwYXJ0LgoKMjAwMC0wNC0wMyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGJpbi1idWdzLmg6IE5ldyBmaWxlLgoKMjAwMC0wMy0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGhhc2h0YWIuaCAoaGFzaHZhbF90KTogTmV3IHR5cGUuCgkoaHRhYl9maW5kX3dpdGhfaGFzaCk6IFVzZSBpdCBhcyBhbiBhcmd1bWVudC4KCShodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBMaWtld2lzZS4KCjIwMDAtMDMtMjcgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYXZyKTogRGVjbGFyZS4KCjIwMDAtMDMtMTQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogaGFzaHRhYi5oIChodGFiX3RyYXYpOiBNb2RpZnkgdHlwZSBzbyB0aGF0IGZpcnN0IGFyZyBpcyBvZiB0eXBlCgl2b2lkICoqLgoJKGh0YWJfZmluZF93aXRoX2hhc2gsIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCk6IERlY2xhcmUgbmV3CglmdW5jdGlvbnMuCgoyMDAwLTAzLTA5ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogcGFydGl0aW9uLmg6IE5ldyBmaWxlLgoKMjAwMC0wMy0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaGFzaHRhYi5oIChzdHJ1Y3QgaHRhYik6IEFkZCBkZWxfZi4KCShodGFiX2RlbCk6IE5ldyB0eXBlLgoJKGh0YWJfY3JlYXRlKTogQWRkIGZvdXJ0aCBhcmd1bWVudC4KCjIwMDAtMDMtMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGhhc2h0YWIuaCAoaGFzaF90YWJsZV90KTogUmVuYW1lIHRvIGh0YWJfdC4KCShzdHJ1Y3QgaGFzaF90YWJsZSk6IFJlbmFtZSB0byBzdHJ1Y3QgaHRhYi4gIFNob3J0ZW4gZWxlbWVudAoJbmFtZXMuICBSZW9yZGVyIGVsZW1lbnRzIGJ5IHNpemUuCgkoaHRhYl9oYXNoLCBodGFiX2VxLCBodGFiX3RyYXYpOiBOZXcgdHlwZWRlZnMgZm9yIHRoZSBjYWxsYmFjawoJZnVuY3Rpb24gcG9pbnRlcnMuCgkoaGFzaF90YWJsZV9lbnRyeV90KTogRGlzY2FyZDsganVzdCB1c2Ugdm9pZCAqIGZvciBlbGVtZW50Cgl0eXBlLgoKMjAwMC0wMy0wMSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogYmZkbGluay5oIChiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgYSBib29sZWFuIGFyZyB0bwoJdGhlIHVuZGVmaW5lZF9zeW1ib2wgY2FsbGJhY2suCgoyMDAwLTAyLTIzICBMaW5hcyBWZXBzdGFzIDxsaW5hc0BsaW5hcy5vcmc+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faTM3MCk6IERlY2xhcmUuCgpUdWUgRmViIDIyIDE1OjE5OjU0IDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3RyYWNlKTogRG9jdW1lbnQgcmV0dXJuIHZhbHVlcy4KCShzaW1fc2V0X3RyYWNlKTogRGVjbGFyZS4gIERlcHJlY2F0ZS4KCjIwMDAtMDItMjEgIEFsYW4gTW9kcmEgIDxhbGFuQHNwcmkubGV2ZWxzLnVuaXNhLmVkdS5hdT4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBDaGFuZ2UgYGxlbmd0aCcgcGFyYW0gb2YKCXJlYWRfbWVtb3J5X2Z1bmMgdG8gdW5zaWduZWQuICBDaGFuZ2UgdHlwZSBvZiBgYnVmZmVyX2xlbmd0aCcgYW5kCglgb2N0ZXRzX3Blcl9ieXRlJyB0byB1bnNpZ25lZC4KCShidWZmZXJfcmVhZF9tZW1vcnkpOiBDaGFuZ2UgYGxlbmd0aCcgcGFyYW0gdG8gdW5zaWduZWQuCgoyMDAwLTAyLTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgcHJvdG90eXBlcyBmb3IgQVJNIHJlZ2lzdGVyIG5hbWUgZnVuY3Rpb25zLgoKV2VkIEZlYiAgOSAxODo0NTo0OSAyMDAwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiB3YWl0Lmg6IERlbGV0ZS4gTm8gbG9uZ2VyIHVzZWQgYnkgR0RCLgoKVHVlIEZlYiAgOCAxNzowMToxMyAyMDAwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9yZXN1bWUpOiBDbGFyaWZ5IHVzZSBvZiBTSUdHTkFMLgoJKHNpbV9zdG9wX3JlYXNvbik6IENsYXJpZnkgbWVhbmluZyBvZiBzaW1fc2lnbmFsbGVkLgoKMjAwMC0wMi0wMyAgVGltb3RoeSBXYWxsIDx0d2FsbEByZWRoYXQuY29tPgoKCSogZGlzLWFzbS5oIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyk6IEFkZGVkIG9jdGV0c19wZXJfYnl0ZQoJZmllbGQgYW5kIGluaXRpYWxpemUgaXQgdG8gb25lICgxKS4KCjIwMDAtMDEtMjcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBwcm90b3R5cGUgZm9yIGRpc2Fzc2VtYmxlcl91c2FnZSgpLgoJQWRkIHByb3RvdHlwZSBmb3IgYXJtX2Rpc2Fzc2VtYmxlcl9vcHRpb25zKCkuCglSZW1vdmUgcHJvdG90eXBlIGZvciBhcm1fdG9nZ2xlX3JlZ25hbWVzKCkuCglBZGQgcHJvdG90eXBlIGZvciBwYXJzZV9hcm1fZGlzYXNzZW1ibGVyX29wdGlvbigpLgoKU2F0IEphbiAgMSAxOTowNjo1MiAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBzeW1jYXQuaCAoU1RSSU5HWCkgWyFfX1NURENfXyB8fCBBTE1PU1RfU1REQ106IENoYW5nZSAiPyIgdG8gInMiCgl0byBzdHJpbmdpZnkgYXJndW1lbnQgcy4KCldlZCBEZWMgMTUgMTE6MjI6NTYgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaHAtc3ltdGFiLmggKEhQX0xBTkdVQUdFX0ZPUlRSQU4pOiBOZXcgZW51bWVyYXRpb24gY29uc3RhbnQuCgkoSFBfTEFOR1VBR0VfRjc3KTogRGVmaW5lIHVzaW5nIEhQX0xBTkdVQUdFX0ZPUlRSQU4uCgoxOTk5LTEyLTE1ICBEb3VnIEV2YW5zICA8ZGplQHRyYW5zbWV0YS5jb20+CgoJKiBkaXMtYXNtLmg6IEVuY2xvc2UgaW4gZXh0ZXJuICJDIiBpZmRlZiBfX2NwbHVzcGx1cy4KCjE5OTktMTItMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHN0cnVjdCBzcGxheV90cmVlX25vZGUpOiBSZW5hbWUgdG8gLi4uCgkoc3RydWN0IHNwbGF5X3RyZWVfbm9kZV9zKTogLi4uIHRoaXMuCgkoc3RydWN0IHNwbGF5X3RyZWUpOiBSZW5hbWUgdG8gLi4uCgkoc3RydWN0IHNwbGF5X3RyZWVfcyk6IC4uLiB0aGlzLgoKMTk5OS0xMS0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaCAoQVRUUklCVVRFX01BTExPQyk6IE5ldyBtYWNyby4KCgkqIGxpYmliZXJ0eS5oIChidWlsZGFyZ3YsIGR1cGFyZ3YsIGNvbmNhdCwgY2hvb3NlX3RlbXBfYmFzZSwKCW1ha2VfdGVtcF9maWxlLCB4bWFsbG9jLCB4Y2FsbG9jLCB4c3RyZHVwLCB4bWVtZHVwKTogQWRkCglBVFRSSUJVVEVfTUFMTE9DLgoJKHhhdGV4aXQpOiBSZW1vdmUgX19HTlVDX18gY2hlY2ssIGFkZCBBVFRSSUJVVEVfTk9SRVRVUk4uCgoxOTk5LTExLTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaDogSW5jbHVkZSBzdGRhcmcuaCB3aGVuIEFOU0lfUFJPVE9UWVBFUyBpcyBkZWZpbmVkLgoJKGFzcHJpbnRmLCB2YXNwcmludGYpOiBQcm92aWRlIGRlY2xhcmF0aW9ucy4KCldlZCBOb3YgMTAgMTI6NDM6MjEgMTk5OSAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgkJCSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaDogRGVmaW5lIGFuZCB0ZXN0IGBHQ0NfVkVSU0lPTicsIG5vdCBgSEFWRV9HQ0NfVkVSU0lPTicuCgoxOTk5LTExLTA0ICAgICAgSmltbXkgR3VvICAgICAgIDxndW9AY3VwLmhwLmNvbT4KCgkqIGhwLXN5bXRhYi5oIChkbnR0X3R5cGVfZnBhcmFtKTogQWRkIGRvY19yYW5nZXMsIG1pc2Nfa2luZAoJZmllbGRzLCBjaGFuZ2UgbG9jYXRpb24gdHlwZSB0byBDT1JFX0FERFIgZnJvbSBpbnQuCgkoZG50dF90eXBlX2NvbnN0KTogTmFtZSB0aGUgNXRoIGZpZWxkIGxvY2F0aW9uX3R5cGUuCgpTdW4gT2N0IDI0IDE5OjExOjMyIDE5OTkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHNpbS1kMTB2LmggKFNJTV9EMTBWX1RTMl9ETUFQX1JFR05VTSk6IERlZmluZS4KCjE5OTktMTAtMjMgMDg6NTEgLTA3MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGJpdG1vdmVyLmNvbT4KCgkqIGhhc2h0YWIuaDogR2l2ZSBoYXNoX3RhYmxlX3QgYSBzdHJ1Y3QgdGFnLiAgQWRkIHByb3RvdHlwZXMKCWZvciBjbGVhcl9oYXNoX3RhYmxlX3Nsb3QgYW5kIHRyYXZlcnNlX2hhc2hfdGFibGUuICBDb3JyZWN0Cglwcm90b3R5cGUgb2YgYWxsX2hhc2hfdGFibGVfY29sbGlzaW9ucy4KClNhdCBPY3QgMjMgMTk6MDA6MTMgMTk5OSAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogc2ltLWQxMHYuaDogTmV3IGZpbGUuCgpGcmkgT2N0IDE1IDAxOjQ3OjUxIDE5OTkgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkBsb29ueS5jeWdudXMuY29tPgoKCSogaGFzaHRhYi5oOiBOZXcgZmlsZS4KCjE5OTktMTAtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmggKEhBVkVfR0NDX1ZFUlNJT04pOiBOZXcgbWFjcm8uICBVc2UgaXQgaW5zdGVhZCBvZgoJZXhwbGljaXRseSB0ZXN0aW5nIF9fR05VQ19fIGFuZCBfX0dOVUNfTUlOT1JfXy4KCgkoQVRUUklCVVRFX1BSSU5URik6IFVzZSBgX19mb3JtYXRfXycsIG5vdCBgZm9ybWF0Jy4KCjE5OTktMDktMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChtYWtlX3RlbXBfZmlsZSk6ICBBZGQgYSBwcm90b3R5cGUuCgpUdWUgU2VwIDE0IDAwOjM1OjAyIDE5OTkgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6ICBPcGVuQlNEIGhhcyBhIGNvcnJlY3QgcHJvdG90eXBlLgoJKHhyZWFsbG9jKTogIFJlbW92ZSBvdXRkYXRlZCBjb21tZW50LgoKMTk5OS0wOS0wNyAgSmVmZiBHYXJ6aWsgIDxqZ2FyemlrQHBvYm94LmNvbT4KCgkqIGxpYmliZXJ0eS5oICh4bWVtZHVwKTogQWRkIHByb3RvdHlwZSBmb3IgbmV3IGZ1bmN0aW9uLgoKMTk5OS0wOS0wNCAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAcG9ib3guY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3BqKTogRGVjbGFyZS4KCjE5OTktMDktMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG9ic3RhY2suaCAob2JzdGFja19ncm93LCBvYnN0YWNrX2dyb3cwKTogTW92ZSAoY2hhciopIGNhc3RzCglpbiBjYWxscyB0byBgX29ic3RhY2tfbWVtY3B5JyBmcm9tIGhlcmUgLi4uCgoJKF9vYnN0YWNrX21lbWNweSk6IC4uLiB0byBoZXJlLCBleGNlcHQgaW4gdGhlIF9fU1REQ19fIGNhc2Ugd2hpY2gKCWRvZXNuJ3QgbmVlZCBpdC4KCjE5OTktMDgtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChnZXRwd2QpOiBQcm90b3R5cGUuCgoxOTk5LTA4LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2luc2VydCk6IFJldHVybiB0aGUgbmV3IG5vZGUuCgoxOTk5LTA3LTExICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGFuc2lkZWNsLmg6IENvcHkgYXR0cmlidXRlIHN1cHBvcnQgbWFjcm9zIGZyb20gZWdjcy4KCjE5OTktMDYtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQWRkIGluaXRfZnVuY3Rpb24gYW5kCglmaW5pX2Z1bmN0aW9uLgoKMTk5OS0wNi0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1pcHMuaCAoRWxmMzJfSW50ZXJuYWxfTXN5bSk6IE5ldyBzdHJ1Y3R1cmUuCgkoRWxmMzJfRXh0ZXJuYWxfTXN5bSk6IExpa2V3aXNlLgoJKEVMRjMyX01TX1JFTF9JTkRFWCk6IE5ldyBtYWNyby4KCShFTEYzMl9NU19GTEFHUyk6IExpa2V3aXNlLgoJKEVMRjMyX01TX0lORk8pOiBMaWtld2lzZS4KCjE5OTktMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGFybV90b2dnbGVfcmVnbmFtZXMpOiBOZXcgcHJvdG90eXBlLgoJKHN0cnVjdCBkaWFzc2VtYmxlX2luZm8pOiBOZXcgZmllbGQ6IGRpc2Fzc2VtYmxlcl9vcHRpb25zLgoKMTk5OS0wNC0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoYmZkX2VsZl92ZXJzaW9uX2V4cHIpOiBSZW5hbWUgYG1hdGNoJyB0byBgcGF0dGVybicuCglBZGQgYG1hdGNoJyBjYWxsYmFjayBmdW5jdGlvbi4KCjE5OTktMDQtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2luZm8pOiBBZGQgbm9fdW5kZWZpbmVkLgoKMTk5OS0wNC0wOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIHByb3RvdHlwZSBmb3IgcHJpbnRfaW5zbl9tY29yZS4KCjE5OTktMDQtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfY29tcGFyZV9wb2ludGVycyk6IERlY2xhcmUuCgoxOTk5LTAzLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2NvbXBhcmVfaW50cyk6IERlY2xhcmUuCgpXZWQgTWFyIDI0IDEyOjQ2OjI5IDE5OTkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYW15LmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBDeWd3aW57LDMyfSBzaG91bGQgaGF2ZSB0aGUgcHJvdG90eXBlLgoKMTk5OS0wMi0yMiAgSmltIExlbWtlICA8amxlbWtlQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2luZm8pOiBhZGQgZmllbGQgIm1wYzg2MGMwIi4KCk1vbiBGZWIgIDEgMjE6MDU6NDYgMTk5OSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgogICAgICAgKiBkaXMtYXNtLmggKHByaW50X2luc25faTM4Nl9hdHQpOiAgRGVjbGFyZS4KICAgICAgIChwcmludF9pbnNuX2kzODZfaW50ZWwpOiAgRGVjbGFyZS4KCjE5OTgtMTItMzAgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IENhc3QgU1RSRUFNIGFuZAoJRlBSSU5URl9GVU5DIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKV2VkIERlYyAzMCAxNjowNzoxNCAxOTk4ICBEYXZpZCBUYXlsb3IgIDx0YXlsb3JAdGV4YXMuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogY2hhbmdlIHZvaWQgKiB0byBQVFIgKHR3byBwbGFjZXMpLgoKTW9uIERlYyAxNCAwOTo1MzozMSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oOiBEb24ndCBjaGVjayBJTl9HQ0MgYW55bW9yZS4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KClR1ZSBEZWMgIDggMDA6MzA6MzEgMTk5OCAgRWxlbmEgWmFubm9uaSAgPGV6YW5ub25pQGt3aWtlbWFydC5jeWdudXMuY29tPgoKCVRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGUgYnkgRWxlbmEgWmFubm9uaQogCTxlemFubm9uaUBrd2lrZW1hcnQuY3lnbnVzLmNvbT4gYW5kIEVkaXRoIEVwc3RlaW4KIAk8ZWVwc3RlaW5Ac29waGlhLmN5Z251cy5jb20+IGFzIHBhcnQgb2YgYSBwcm9qZWN0IHRvIG1lcmdlIGluCiAJY2hhbmdlcyBtYWRlIGJ5IEhQOyBIUCBkaWQgbm90IGNyZWF0ZSBDaGFuZ2VMb2cgZW50cmllcy4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBjaGFuZ2UgdGhlIHR5cGUgb2Ygc3RyZWFtCglmcm9tIEZJTEUqIHRvIHZvaWQqLCBmb3IgdXNlIHdpdGggZ2RiJ3MgbmV3IHR5cGUgR0RCX0ZJTEUuCgkoZnByaW50Zl9mdHlwZSk6IGNoYW5nZSBGSUxFKiBwYXJhbWV0ZXIgdHlwZSB0byB2b2lkKi4KCgkqIGRlbWFuZ2xlLmg6IChETUdMX0VERyk6IG5ldyBtYWNybyBmb3IgS3VjayBhbmQgQXNzb2NpYXRlcwoJKERNR0xfU1RZTEVfTUFTSyk6IG1vZGlmeSB0byBpbmNsdWRlIEt1Y2sgYW5kIEFzc29jIHN0eWxlCgkoZGVtYW5nbGluZ19zdHlsZXMpOiBhZGQgbmV3IGVkZ19kZW1hbmdsaW5nIHN0eWxlCgkoRURHX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogbmV3IG1hY3JvCgkoRURHX0RFTUFOR0xJTkcpOiBuZXcgbWFjcm8KCShETUdMX0hQKTogbmV3IG1hY3JvLCBmb3IgSFAvYUNDIGNvbXBpbGVyLgoJKERNR0xfU1RZTEVfTUFTSyk6IG1vZGlmeSB0byBpbmNsdWRlIG5ldyBIUCdzIHN0eWxlLgoJKGRlbWFuZ2xpbmdfc3R5bGVzKTogYWRkIG5ldyBocF9kZW1hbmdsaW5nIHZhbHVlLgoJKEhQX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogbmV3IG1hY3JvLgoJKEFSTV9ERU1BTkdMSU5HKTogY29lcmNlIHRvIGludC4KCShIUF9ERU1BTkdMSU5HKTogbmV3IG1hY3JvLgoKCSogaHAtc3ltdGFiLmg6IHJld3JpdHRlbiwgZnJvbSBIUC4KCShxdWlja19wcm9jZWR1cmUpOiBjaGFuZ2UgdHlwZSBvZiBsYW5ndWFnZSBmaWVsZCB0byB1bnNpZ25lZCBpbnQKCShxdWlja19tb2R1bGUpOiBjaGFuZ2UgdHlwZSBvZiBsYW5ndWFnZSBmaWVsZCB0byB1bnNpZ25lZCBpbnQKCShzdHJ1Y3QgZG50dF90eXBlX3N2YXIpOiBhZGQgZmllbGQgdGhyZWFkX3NwZWNpZmljLgoJKGhwX2xhbmd1YWdlKTogYWRkIGxhbmd1YWdlcyBtb2RjYWwgYW5kIGRtcGFzY2FsLgoKRnJpIE5vdiAyMCAxMzoxNDowMCAxOTk4ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBBZGQgcHJvdG90eXBlIGZvciBGcmVlQlNELgoKRnJpIE5vdiAxMyAxOToxOToxMSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaDogUHJvdG90eXBlIHhjYWxsb2MuCgpTdW4gTm92ICA4IDE3OjQyOjI1IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmg6IFdyYXAgcHJvYmxlbWF0aWMgbWFjcm9zIHdpdGggIUlOX0dDQy4KCgkqIGRlbWFuZ2xlLmg6IE5ldmVyIGRlZmluZSBQQVJBTVMoKS4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KClNhdCBOb3YgIDcgMTg6MzA6MjAgMTk5OCAgUGV0ZXIgU2NoYXVlciAgPHBldGVyLnNjaGF1ZXJAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl92YXgpOiBEZWNsYXJlLgoKU2F0IE5vdiAgNyAxNjowNDowMyAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oOiBEb24ndCBpbmNsdWRlIGdhbnNpZGVjbC5oLgoJKiBzcGxheS10cmVlLmg6IExpa2V3aXNlLgoKMTk5OC0xMC0yNiAxNjowMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5ldyBmaWVsZCBvcHRpbWl6ZS4KClRodSBPY3QgMjIgMTk6NTg6MDAgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3BsYXktdHJlZS5oOiBXcmFwIGZ1bmN0aW9uIHBvaW50ZXIgcGFyYW1ldGVyIGRlY2xhcmF0aW9ucyBpbgoJUEFSQU1TKCkgbWFjcm8uCgoxOTk4LTEwLTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogc3BsYXktdHJlZS5oOiBOZXcgZmlsZS4KCkZyaSBPY3QgIDkgMDA6MDI6MDMgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWVyZ2UgZGV2byBhbmQgZWdjcyBpbmNsdWRlIGRpcmVjdG9yaWVzLgoKU2F0IFNlcCAgNSAxMjoxNjozMyAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaCwgb2JzdGFjay5oOiBVcGRhdGVkIGZyb20gZ2NjLgoKMTk5OC0wOC0wMyAgSmFzb24gTW9sZW5kYSAgKGpzbUBidWdzaGFjay5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5LmggKHhleGl0KTogQ2hhbmdlIGRlY2wgdG8gdXNlIG1vZGVybiBHQ0MgYXR0cmlidXRlCgl0byBpbmRpY2F0ZSBleGl0IGRvZXMgbm90IHJldHVybi4KCk1vbiBKdW4gIDEgMTM6NDg6MzIgMTk5OCAgSmFzb24gTW9sZW5kYSAgKGNyYXNoQGJ1Z3NoYWNrLmN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpUdWUgRmViIDI0IDEzOjA1OjAyIDE5OTggIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBNZW1iZXIgYHN5bWJvbCcgcmVuYW1lZCB0byBgc3ltYm9scycKCWFuZCBtYWRlIGFuICJhc3ltYm9sICoqIi4gIE5ldyBtZW1iZXIgbnVtX3N5bWJvbHMuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBVcGRhdGUuCgpUdWUgRmViIDE3IDEyOjMyOjE4IDE5OTggIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2ZldGNoX3JlZ2lzdGVyLCBzaW1fc3RvcmVfcmVnaXN0ZXIpOiBBZGQKIAlyZWdpc3RlciBsZW5ndGggcGFyYW1ldGVyLiAgRnVuY3Rpb25zIHJldHVybiBhY3R1YWwgbGVuZ3RoIG9mCiAJcmVnaXN0ZXIuCgpUaHUgRmViIDEyIDE2OjI5OjAxIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGdldG9wdC5oOiBVcGRhdGUgdG8gbGF0ZXN0IEZTRiB2ZXJzaW9uLgoKV2VkIEZlYiAxMSAxNjo1NjowNiAxOTk4ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogc3ltY2F0Lmg6IE5ldyBmaWxlLgoKTW9uIEZlYiAgMiAxNzoxMzozMSAxOTk4ICBTdGV2ZSBIYXdvcnRoICA8c3RldmVAcG0uY3NlLnJtaXQuRURVLkFVPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3RpYzMwKTogRGVjbGFyZS4KClRodSBKYW4gMjIgMTY6MjM6NTkgMTk5OCAgRnJlZCBGaXNoIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIGZsYWcgSU5TTl9IQVNfUkVMT0MgdG8gdGVsbCBkaXNhc3NlbWJseQoJZnVuY3Rpb24gdGhlcmUgaXMgYSByZWxvYyBvbiB0aGlzIGxpbmUuCgpNb24gRGVjICA4IDExOjIyOjIzIDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IFJlbW92ZSBwcm90b3R5cGUgb2YgZGlzYXNtX3N5bWFkZHIoKSBhcyB0aGlzIGZ1bmN0aW9uCglubyBsb25nZXIgZXhpc3RzLgoKVHVlIERlYyAgMiAxMDoyMDo1MyAxOTk3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc21fc3ltYWRkcik6IE5ldyBwcm90b3R5cGUuCgpNb24gRGVjICAxIDExOjI5OjM1IDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9TWVNDQUxMKTogQ29tbWVudCBvdXQgYXJnIG5hbWVzIGluIHByb3RvdHlwZXMuCgpXZWQgTm92IDI2IDE2OjQ3OjU4IDE5OTcgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfU1lTQ0FMTCk6IENvbnNpc3RhbnRseSB1c2UgbmFtZXMgZm9yIHByb3RvdHlwZQoJYXJndW1lbnRzLgoKV2VkIE5vdiAyNiAxMTozOTozMCAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfU1lTQ0FMTCk6IENoYW5nZSBieXRlIGNvdW50IGFyZ3VtZW50cyB0bwoJe3JlYWQsd3JpdGV9X21lbSB0byBgaW50Jy4gIE5ldyBtZW1iZXIgYG1hZ2ljJy4KCShDQl9TWVNDQUxMX01BR0lDLENCX1NZU0NBTExfSU5JVCk6IE5ldyBtYWNyb3MuCgpUdWUgTm92IDI1IDAxOjM1OjUyIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAc2ViYS5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoc3RydWN0IHN0YXQpOiBNb3ZlIGZvcndhcmQgZGVjbCB1cC4KCShob3N0X2NhbGxiYWNrKTogUGFzcyBzdGF0IHN0cnVjdCBwb2ludGVyIHRvIHN0YXQsZnN0YXQuCgkoQ0JfU1lTX25ubik6IFJlb3JnYW5pemUuCgkoQ0JfU1lTQ0FMTCk6IE5ldyBtZW1iZXJzIHAxLHAyLgoJKGNiX2hvc3RfdG9fdGFyZ2V0X3N0YXQpOiBEZWxldGUgZm91cnRoIGFyZy4KClNhdCBOb3YgMjIgMjM6MzQ6MTUgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fc3RvcF9yZWFzb24pOiBDbGFyaWZ5IHNpbV9zaWduYWxsZWQgU0lHUkMKIAlhcmd1bWVudC4KCk1vbiBOb3YgMTcgMTQ6MDA6NTEgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BzZWJhLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9UQVJHRVRfREVGU19NQVApOiBSZW5hbWVkIGZyb20gdGFyZ2V0X2RlZnNfbWFwLgoJKGhvc3RfY2FsbGJhY2spOiBBZGQgc3RhdCwgZnN0YXQsIHN5c2NhbGxfbWFwLCBlcnJub19tYXAsIG9wZW5fbWFwLAoJc2lnbmFsX21hcCwgc3RhdF9tYXAuCgkoZXJybl9tYXAsb3Blbl9tYXApOiBSZW5hbWVkIHRvIGNiX2luaXRfZm9vX21hcC4KCShjYl9ob3N0X3RvX3RhcmdldF9lcnJubyxjYl90YXJnZXRfdG9faG9zdF9vcGVuKTogUmVuYW1lZCBmcm9tCglob3N0X3RvX3RhcmdldF9lcnJubyx0YXJnZXRfdG9faG9zdF9vcGVuLgoJKGNiX3JlYWRfdGFyZ2V0X3N5c2NhbGxfbWFwcyk6IEFkZCBwcm90b3R5cGUuCgkoY2JfdGFyZ2V0X3RvX2hvc3Rfc3lzY2FsbCk6IExpa2V3aXNlLgoJKGNiX2hvc3RfdG9fdGFyZ2V0X3N0YXQpOiBMaWtld2lzZS4KCShjYl9zeXNjYWxsKTogTGlrZXdpc2UuCgkoQ0JfU1lTX3tleGl0LG9wZW4sY2xvc2UscmVhZCx3cml0ZSxsc2Vlayx1bmxpbmssZ2V0cGlkLGtpbGwsZnN0YXQsCglhcmd2bGVuLGFyZ3YsY2hkaXIsc3RhdCxjaG1vZCx1dGltZSx0aW1lfSk6IERlZmluZS4KCShDQl9TWVNDQUxMKTogTmV3IHR5cGUuCgkoQ0JfUkMpOiBOZXcgZW51bS4KCkZyaSBOb3YgIDcgMTA6MzQ6MDkgMTk5NyAgUm9iIFNhdm95ZSAgPHJvYkBkYXJrc3Rhci5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IEFkZCBleHRlcm4gIkMiIHsgc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBDKysKCXByb2dyYW1zLgoJKiByZW1vdGUtc2ltLmg6ICBBZGQgZXh0ZXJuICJDIiB7IHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggQysrCglwcm9ncmFtcy4KClR1ZSBPY3QgMTQgMTY6MDc6NTEgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgZmllbGQKCSdzeW1ib2xfYXRfYWRkcmVzc19mdW5jJy4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpc2UgbmV3IGZpZWxkIHdpdGgKCWdlbmVyaWNfc3ltYm9sX2F0X2FkZHJlc3MuCgpNb24gT2N0IDEzIDEwOjE3OjE1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogQ2xhcmlmeSBzaW1fcmVhZCwgc2ltX3dyaXRlIE1FTSBhcmd1bWVudC4KCldlZCBTZXAgMjQgMTg6MDM6MTAgMTk5NyAgU3R1IEdyb3NzbWFuICA8Z3Jvc3NtYW5AYmFieWxvbi01LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKFNJTV9SQyk6ICBBZGQgYSBidW5jaCBvZiBuZXcgcmV0dXJuIGNvZGVzIGZvcgoJYnJlYWtwb2ludCBzdHVmZi4KCSogQWRkIGZ1bmN0aW9ucyB0byB0ZWxsIHRoZSBzaW11bGF0b3IgdG8gc2V0L2NsZWFyL2VuYWJsZS9kaXNhYmxlCglpbnRyaW5zaWMgYnJlYWtwb2ludHMuCgpUaHUgQXVnIDI4IDE5OjQxOjQyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChkdXBhcmd2KTogQWRkIHByb3RvdHlwZS4KClR1ZSBBdWcgMjYgMTI6MjU6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fY3JlYXRlX2luZmVyaW9yKTogQWRkIEFCRkQgYXJnLiBEb2N1bWVudC4KCk1vbiBBdWcgMjUgMTA6NTA6NTEgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fb3Blbik6IEFkZCBBQkZEIGFyZy4gRG9jdW1lbnQuCgpGcmkgQXVnICA4IDE2OjQzOjU2IDE5OTcgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGFyY19nZXRfZGlzYXNzZW1ibGVyKTogRGVjbGFyZS4KCldlZCBKdWwgMzAgMTE6Mzk6NTAgMTk5NyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGRlbmViLmN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oIChETUdMX0pBVkEpOiAgTmV3IG9wdGlvbiB0byByZXF1ZXN0IEphdmEgZGVtYW5nbGluZy4KClR1ZSBKdWwgMjIgMTc6NTk6NTQgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKFBFWEVDVVRFXyopOiBEZWZpbmUuCgkocGV4ZWN1dGUsIHB3YWl0KTogRGVjbGFyZS4KCkZyaSBKdW4gIDYgMTM6MDI6MzMgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fa2lsbCk6IE1hcmsgYXMgZGVwcmVjaWF0ZWQuCgpGcmkgTWF5IDIzIDEzOjQzOjQxIDE5OTcgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCB0YXNrX2xpbmsgbWVtYmVyLgoKVGh1IE1heSAyMiAxMTozMjo0OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IFJldmlldyBkb2N1bWVudGF0aW9uLiAgQ2xhcmlmeSByZXN0cmljdGlvbnMgb24KIAl3aGVuIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkLgoKV2VkIE1heSAyMSAxNjo0Nzo1MyAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9zZXRfcHJvZmlsZV9zaXplKTogQWRkIHByb3RvdHlwZSwgZG9jdW1lbnQgYXMKIAlkZXByZWNpYXRlZC4KClR1ZSBNYXkgMjAgMDk6MzI6MjIgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fb3Blbik6IEFkZCBjYWxsYmFjayBzdHJ1Y3QuCgkoc2ltX3NldF9jYWxsYmFja3MpOiBEcm9wIFNJTV9ERVNDIGFyZ3VtZW50LiBEb2N1bWVudC4KCShzaW1fc2l6ZSk6IFJlbW92ZSByZWNlbnRseSBhZGRlZCBTSU1fREVTQyBhcmd1bWVudC4gRG9jdW1lbnQuCgpNb24gTWF5IDE5IDE5OjE0OjQ0IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogUGFzcyBTRCBpbnRvIHNpbV9zaXplLgoKVGh1IE1heSAxNSAwMToyNDoxNiAxOTk3ICBNYXJrIEFsZXhhbmRlciAgPG1hcmthQGN5Z251cy5jb20+CgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfc3BlY2lmeV9hbGxvY2F0aW9uX3dpdGhfYXJnLCBvYnN0YWNrX2NodW5rZnVuLAoJb2JzdGFja19mcmVlZnVuKTogRWxpbWluYXRlIGNvbXBpbGUgd2FybmluZ3MgaW4gZ2RiLgoKVHVlIEFwciAyMiAxMDoyNDozNCAxOTk3ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmggKGZsb2F0Zm9ybWF0X2J5dGVvcmRlcnMpOiBBZGQgY29tbWVudHMgZm9yIHByZXZpb3VzCglmb3JtYXRzIGFuZCBhZGQgZmxvYXRmb3JtYXRfbGl0dGxlYnl0ZV9iaWd3b3JkLCBwcmltYXJpbHkgZm9yIEFSTS4KCUFkZCBkZWNsYXJhdGlvbiBmb3IgZmxvYXRmb3JtYXRfaWVlZV9kb3VibGVfbGl0dGxlYnl0ZV9iaWd3b3JkLgoKRnJpIEFwciAxOCAxMzowNDo0OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9zdG9wKTogTmV3IGludGVyZmFjZSAtIGFzeW5jaHJvbm91cwogCW5vdGlmaWNhdGlvbiBvZiBhIHJlcXVlc3QgdG8gc3RvcCAvIHN1c3BlbmQgdGhlIHJ1bm5pbmcKIAlzaW11bGF0aW9uLgoKCSogcmVtb3RlLXNpbS5oIChlbnVtIHNpbV9zdG9wKTogQWRkIHNpbV9ydW5uaW5nIGFuZCBzaW1fcG9sbGluZyBhcwogCXN0YXRlcyBmb3IgdXNlIGludGVybmFsIHRvIHNpbXVsYXRvcnMuCgoJKiBjYWxsYmFjay5oIChzdHJ1Y3QgaG9zdF9jYWxsYmFja19zdHJ1dCk6IFB1dCBhIG1hZ2ljIG51bWJlciBhdAogCXRoZSBlbmQgb2YgdGhlIHN0cnVjdCB0byBhbGxvdyBiYXNpYyBjaGVja2luZy4KCShzdHJ1Y3QgaG9zdF9jYWxsYmFja19zdHJ1Y3QgKTogQWRkIHBvbGxfcXVpdCAtIHNvCiAJdGhhdCB0aGUgY29uc29sZSBldGMgY2FuIGJlIHBvbGxlZCBhdCByZWd1bGFyIGludGVydmFscy4KClRodSBBcHIgMTcgMDI6MTc6MTIgMTk5NyAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc3RydWN0IF9iZmQpOiBEZWNsYXJlLgoJKHNpbV9sb2FkKTogUmV0dXJuIFNJTV9SQy4gIE5ldyBhcmcgYGFiZmQnLgoJKHNpbV9jcmVhdGVfaW5mZXJpb3IpOiBSZXR1cm4gU0lNX1JDLiAgRGVsZXRlIGFyZyBgc3RhcnRfYWRkcmVzcycuCgpXZWQgQXByICAyIDE3OjA5OjEyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAa3JlbXZheC5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fdHJhY2UsIHNpbV9zaXplKTogTWFrZSB0aGVzZSBnbG9iYWwuICBUaGV5CiAJd2lsbCBnbyBhd2F5IHNob3J0bHkuCgpXZWQgQXByICAyIDE1OjIzOjQ5IDE5OTcgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKFNJTV9PUEVOX0tJTkQsIFNJTV9SQyk6IE5ldyBlbnVtcy4KCShzaW1fb3Blbik6IE5ldyBhcmd1bWVudCBga2luZCcuCgpXZWQgQXByICAyIDE0OjQ1OjUxIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIENPUFlJTkc6IFVwZGF0ZSBGU0YgYWRkcmVzcy4KCkZyaSBNYXIgMjggMTU6Mjk6NTQgMTk5NyAgTWlrZSBNZWlzc25lciAgPG1laXNzbmVyQGN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oICh0b3AgbGV2ZWwpOiBJbmNsdWRlIHN0ZGFyZy5oIG9yIHZhcmFyZ3MuaCBpZgoJdmFfc3RhcnQgaXMgbm90IGRlZmluZWQuCgkoaG9zdF9jYWxsYmFja19zdHJ1Y3QpOiBNYWtlIHssZX12cHJpbnRmX2ZpbHRlcmVkIHRha2UgYSB2YV9saXN0CglpbnN0ZWFkIG9mIHZvaWQgKiwgc2luY2UgdmFfbGlzdCBtaWdodCBiZSBhbiBhcnJheSBvciBzdHJ1Y3R1cmUKCXR5cGUuCgpGcmkgTWFyIDI4IDE1OjQ0OjQxIDE5OTcgIEguSi4gTHUgIDxoamxAZ251LmFpLm1pdC5lZHU+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBBZGQgcHJvdG90eXBlIGZvciBnbGliYyBhbmQgbGludXguCgpNb24gTWFyIDE3IDE5OjIyOjEyIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIG9iamFsbG9jLmg6IE5ldyBmaWxlLgoKTW9uIE1hciAxNyAxNDo1Nzo1NSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGtyZW12YXguY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogTmV3IGZpbGUsIGNvcGllZCBpbiBmcm9tIGdkYi9yZW1vdGUtc2ltLmguICBPbmUKIAlkYXkgdGhpcyB3aWxsIGJlIHBsYWNlZCBpbiBhIGRpcmVjdG9yeSBvZiBpdHMgb3duLgoKU2F0IE1hciAxNSAxOTowMDoxNCAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSB0byBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKVGh1IE1hciAgNiAxNTo0Njo1OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGtyZW12YXguY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKHN0cnVjdCBob3N0X2NhbGxiYWNrX3N0cnVjdCk6IEFkZCBjYWxsYmFja3MgLQogCWZsdXNoX3N0ZG91dCwgd3JpdGVfc3RkZXJyLCBmbHVzaF9zdGRlcnIsIHZwcmludGZfZmlsdGVyZWQsCiAJZXZwcmludGZfZmlsdGVyZWQuICBEZWxldGUgcmVkdW5kYW50IGNhbGxiYWNrcyAtIHByaW50Zl9maWx0ZXJlZC4KClRodSBGZWIgMjcgMjM6MTg6MjcgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IFJlbW92ZSBscHJlZml4IGFuZCBscHJlZml4X2xlbgoJZmllbGRzLgoKVHVlIEZlYiAyNSAwMDoxMDo0OSAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGl6ZQoJYnl0ZXNfcGVyX2NodW5rIGFuZCBkaXNwbGF5X2VuZGlhbi4KCk1vbiBGZWIgMjQgMTc6NDc6MDIgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCUZyb20gRXJpYyBZb3VuZ2RhbGUgPGVyaWNAYW5kYW50ZS5qaWMuY29tPjoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX2V4cHIpOiBEZWZpbmUuCgkoc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9kZXBzKTogRGVmaW5lLgoJKHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fdHJlZSk6IERlZmluZS4KClRodSBGZWIgIDYgMTQ6MjA6MDEgMTk5NyAgTWFydGluIE0uIEh1bnQgIDxodW50QHBpenphLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IChkaXNhc3NlbWJsZV9pbmZvKTogIEFkZCBuZXcgZmllbGRzCglieXRlc19wZXJfY2h1bmsgYW5kIGRpc3BsYXlfZW5kaWFuIHRvIGNvbnRyb2wgdGhlCglkaXNwbGF5IG9mIHJhdyBpbnN0cnVjdGlvbnMuCgpGcmkgRGVjIDI3IDIyOjE3OjM3IDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3RpYzgwKTogRGVjbGFyZS4KClN1biBEZWMgIDggMTc6MTE6MTIgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKGhvc3RfY2FsbGJhY2spOiBOZXcgbWVtYmVyIGBlcnJvcicuCgpXZWQgTm92IDIwIDAwOjQwOjIzIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oOiBOZXcgZmlsZSwgbW92ZWQgaGVyZSBmcm9tIGdkYi4KCk1vbiBOb3YgMTggMTY6MzQ6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IENoZWNraW4gYWdhaW47IGxhc3QgY2hlY2tpbiBmYWlsZWQgZHVlIHRvIHN0aWNreSB0YWcuCgpXZWQgTm92IDEzIDA4OjIyOjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBSZXZlcnQgbGFzdCBjb21taXQgZHVlIHRvIGNvbmZsaWN0cyB3aXRoIGhwdXgKCXN5c3RlbSBoZWFkZXJzLgoKVHVlIE5vdiAxMiAxNjozMTowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogTW92ZSBwcm90b3R5cGVzIGZyb20gYXJndi5jIGhlcmUuCgpUaHUgT2N0IDMxIDE0OjU2OjE4IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBhbnNpZGVjbC5oIChWUEFSQU1TLFZBX1NUQVJUKTogRGVmaW5lLgoKRnJpIE9jdCAyNSAxMjowODowNCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBBZGQgYnl0ZXNfcGVyX2xpbmUgZmllbGQuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplIGJ5dGVzX3Blcl9saW5lIGZpZWxkLgoKVGh1IE9jdCAyNCAxNzoxMDowMSAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBBZGQgc3ltYm9sIGZpZWxkLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGl6ZSBzeW1ib2wgZmllbGQuCgpUaHUgT2N0IDE3IDExOjE3OjQwIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbTMycik6IERlY2xhcmUuCgpNb24gT2N0IDE0IDIzOjU2OjUyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBEZWNsYXJlIHBhcmFtZXRlciB0eXBlcyBmb3IgeG1hbGxvYyBhbmQgeHJlYWxsb2MuCgpUaHUgT2N0ICAzIDEzOjQ1OjI3IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGZubWF0Y2guaDogTmV3IGZpbGUuCgpUaHUgT2N0ICAzIDEwOjMzOjE0IDE5OTYgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tbjEweDAwKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKHByaW50X2luc25fbW4xMDIwMCwgcHJpbnRfaW5zbl9tbjEwMzAwKTogRGVjbGFyZS4KCldlZCBPY3QgIDIgMjE6MjQ6NDMgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX21uMTB4MDApOiBEZWNsYXJlLgoKTW9uIFNlcCAzMCAxMzo1NjoxMSAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBSZW1vdmUgI2lmbmRlZiBQUklWQVRFX1hNQUxMT0MuCgpTYXQgQXVnIDMxIDEzOjI3OjA2IDE5OTYgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl92ODUwKTogRGVjbGFyZS4KClR1ZSBBdWcgMTMgMTY6MTA6MzAgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIENoYW5nZSBiY29weSB0byBtZW1jcHkuICBXb3JrcyBiZXR0ZXIgb24gUG9zaXgKCXN5c3RlbXMsIHdoaWNoIGdlbmVyYWxseSBsYWNrIGJjb3B5LgoKTW9uIEF1ZyAxMiAxNzowMzoxOCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogIENoYW5nZSBXSU4zMiB0byBfV0lOMzIuCgpGcmkgSnVsIDI2IDEzOjU4OjE4IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIGZsYXZvdXIgZmllbGQuCgkocHJpbnRfaW5zbl9hbHBoYSk6IERlY2xhcmUuCgkocHJpbnRfaW5zbl9hbHBoYV9vc2YsIHByaW50X2luc25fYWxwaGFfdm1zKTogRG9uJ3QgZGVjbGFyZS4KCShJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBJbml0aWFsaXplIGZsYXZvdXIgZmllbGQuCgpUdWUgSnVsIDIzIDE3OjM3OjU4IDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKFBSSVZBVEVfWE1BTExPQyk6IEVuY2xvc2UgeG1hbGxvYy94cmVhbGxvYwoJZGVmaW5pdGlvbnMgaW5zaWRlICNpZm5kZWYgc28gdGhhdCBwcm9ncmFtcyB0aGF0IHdhbnQgdG8KCWNhbiBkZWZpbmUgUFJJVkFURV9YTUFMTE9DIGFuZCB0aGVuIGRlZmluZSB4bWFsbG9jIGFuZAoJeHJlYWxsb2MgYW55d2F5IHRoZXkgd2FudC4KCShiYXNlbmFtZSk6IERvY3VtZW50IGluIHNvdXJjZSB0aGF0IHdlIGNhbid0IGRlY2xhcmUgdGhlCiAJcGFyYW1ldGVyIHR5cGUgYmVjYXVzZSBpdCBpcyBkZWNsYXJlZCBpbmNvbnNpc3RlbnRseSBhY3Jvc3MKCWRpZmZlcmVudCBzeXN0ZW1zLgoKTW9uIEp1bCAyMiAxMzoxNjoxMyAxOTk2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEB0YW11LmVkdT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9hbHBoYSk6IERvbid0IGRlY2xhcmUuCgkocHJpbnRfaW5zbl9hbHBoYV9vc2YsIHByaW50X2luc25fYWxwaGFfdm1zKTogRGVjbGFyZS4KCldlZCBKdWwgMTcgMTQ6NDU6MTIgMTk5NiAgTWFydGluIE0uIEh1bnQgIDxodW50QHBpenphLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IChwcmludF9pbnNuX2QxMHYpOiBEZWNsYXJlLgoKTW9uIEp1bCAxNSAxNjo1NTozOCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAgR2V0IHJpZCBvZiBkZWNscyBmb3IgcHJpbnRfaW5zbl9pODA4NiwKCXByaW50X2luc25fc3BhcmM2NCBhbmQgcHJpbnRfaW5zbl9zcGFyY2xpdGUuCgkqIChJTklUX0RJU0FTU0VNQkxFX0lORk8pOiAgU3BsaXQgaW50byB0d28gcGllY2VzLiAgT25lLAoJSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0ggaW5pdHMgZXZlcnl0aGluZyBleGNlcHQgZm9yIGVuZGlhbiwKCW1hY2gsIGFuZCBhcmNoLgoKRnJpIEp1bCAxMiAxMDoxOToyNyAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2k4MDg2KTogIERlY2xhcmUuCgpXZWQgSnVsICAzIDE2OjAyOjM5IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fc3BhcmNsaXRlKTogIERlY2xhcmUuCgpUdWUgSnVuIDE4IDE2OjAyOjQ2IDE5OTYgIEplZmZyZXkgQS4gTGF3ICA8bGF3QHJ0bC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2g4MzAwcyk6IERlY2xhcmUuCgpUdWUgSnVuIDE4IDE1OjExOjMzIDE5OTYgIEtsYXVzIEthZW1wZiAgPGtrYWVtcGZAcHJvZ2lzLmRlPgoKCSogZm9wZW4tdm1zLmg6IE5ldyBmaWxlLgoKVHVlIEp1biAgNCAxODo1ODoxNiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5vdGljZV9hbGwgZmllbGQuCgpGcmkgQXByIDI2IDEwOjMzOjEyIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oICgjaWZkZWYgSU5fR0NDKTogI2luY2x1ZGUgImdhbnNpZGVjbC5oIi4KCShQUk9UTyxQVFIsY29uc3QpOiBEZWxldGUuCgpNb24gQXByIDIyIDE3OjI3OjQyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgdHJhZGl0aW9uYWxfZm9ybWF0IGZpZWxkLgoKTW9uIEFwciAxNSAxNToxNjo1NiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGNob29zZV90ZW1wX2Jhc2UpOiBBZGQgcHJvdG90eXBlLgoKVHVlIE1hciAxMiAxNzoyOTo0NiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF93cmFwcGVkX2xpbmtfaGFzaF9sb29rdXApOiBEZWNsYXJlLgoJKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHdyYXBfaGFzaCBmaWVsZC4KCldlZCBGZWIgMTQgMTY6NDk6MTcgMTk5NiAgTWFydGluIEFuYW50aGFyYW1hbiAgPG1hcnRpbkBtYWlsLmltZWNoLnVuaS1kdWlzYnVyZy5kZT4KCgkqIGllZWUuaCAoaWVlZV9yZWNvcmRfZW51bV90eXBlKTogRGVmaW5lCglpZWVlX2V4dGVybmFsX3JlZmVyZW5jZV9pbmZvX2VudW0uCgpGcmkgRmViICAyIDE3OjA5OjI1IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChESVNBU01fUkFXX0lOU04pOiBEZWxldGUuCgpUdWUgSmFuIDIzIDA5OjIxOjQ3IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBTZXQgZW5kaWFuIHRvIEJGRF9FTkRJQU5fVU5LTk9XTi4KCU5ldyBhcmd1bWVudCBGUFJJTlRGX0ZVTkMuCgpNb24gSmFuIDIyIDE2OjM3OjU5IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogTmV3IG1lbWJlcnMgYXJjaCwgbWFjaCwgZW5kaWFuLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6IEluaXRpYWxpemUgdGhlbS4KCShESVNBU01fUkFXX0lOU057LEZMQUd9KTogRGVmaW5lLgoKVGh1IEphbiAxOCAxMTozMjozOCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oIChjcGx1c19kZW1hbmdsZV9vcG5hbWUpOiBDaGFuZ2Ugb3BuYW1lIHBhcmFtZXRlciB0bwoJY29uc3QgY2hhciAqLgoJKGNwbHVzX21hbmdsZV9vcG5hbWUpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgYW5kIG9wbmFtZSBwYXJhbWV0ZXIgdG8KCWNvbnN0IGNoYXIgKi4KCkZyaSBKYW4gIDUgMDA6MDE6MjIgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogaWVlZS5oIChlbnVtIGllZWVfcmVjb3JkKTogQWRkIGllZWVfYXNuX3JlY29yZF9lbnVtLAoJaWVlZV9hdF9yZWNvcmRfZW51bSwgaWVlZV90eV9yZWNvcmRfZW51bSwgaWVlZV9hdG5fcmVjb3JkX2VudW0sCglpZWVlX2JiX3JlY29yZF9lbnVtLCBhbmQgaWVlZV9iZV9yZWNvcmRfZW51bS4KCldlZCBKYW4gIDMgMTM6MTI6MDkgMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSBjb3B5cmlnaHQgdG8gMTk5Ni4KCShfb2JzdGFja19tZW1vcnlfdXNlZCk6IERlY2xhcmUuCgkob2JzdGFja19tZW1vcnlfdXNlZCk6IERlZmluZSBtYWNyby4KClRodSBEZWMgMjggMTE6NDI6MTIgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKHhzdHJkdXApOiBEZWNsYXJlLgoKVGh1IERlYyAyMSAxNDo0NzoxNyAxOTk1ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiB3YWl0Lmg6IFByb3RlY3QgYWxsIG1hY3JvcyB3aXRoICNpZm5kZWYuCgpUdWUgT2N0IDI0IDIxOjQ1OjQwIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgc3RhdGljX2xpbmsgZmllbGQuCgpUdWUgU2VwIDEyIDE2OjI4OjA0IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBzeW1ib2wgcGFyYW1ldGVyIHRvCgl3YXJuaW5nIGNhbGxiYWNrLgoKRnJpIFNlcCAgMSAxMzoxMTo1MSAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBDaGFuZ2Ugd2FybmluZyBjYWxsYmFjawoJdG8gdGFrZSBCRkQsIHNlY3Rpb24sIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4KClRodSBBdWcgMzEgMTY6NDU6MTIgMTk5NSAgc3RldmUgY2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBSZW1vdmUgUEUgc3R1ZmYuCgpUdWUgQXVnIDIyIDAzOjE4OjIzIDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBrci1sYXB0b3AuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBEZWNsYXJlIHhzdHJlcnJvci4gIEZyb20gUGF0IFJhbmtpbi4KCk1vbiBBdWcgMjEgMTg6MTE6MzYgMTk5NSAgc3RldmUgY2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBSZW1vdmUgUEUgc3R1ZmYuCgpXZWQgQXVnICAyIDA4OjE0OjEyIDE5OTUgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fc3BhcmM2NCk6IERlY2xhcmUuCgpNb24gSnVsIDEwIDEzOjI2OjQ5IDE5OTUgIEVyaWMgWW91bmdkYWxlICA8ZXJpY0BhaWIuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgZmllbGQgc3ltYm9saWMuCgpTdW4gSnVsICAyIDE3OjQ4OjQwIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBDaGFuZ2UgdHlwZSBvZiBiYXNlX2ZpbGUgdG8KCVBUUi4KClRodSBKdW4gMjkgMDA6MDI6NDUgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGRlZCBiYXNlX2ZpbGUgbWVtYmVyLgoKVHVlIEp1biAyMCAxNjo0MDowNCAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYW5zaWRlY2wuaDogd2luMzJzIGlzIEFOU0kgZW5vdWdoLgoKVGh1IE1heSAxOCAwNDoyNTo1MCAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5Aa3ItbGFwdG9wLmN5Z251cy5jb20+CgoJV2VkIE1heSAxMCAxNDoyODoxNiAxOTk1IFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybWx0ZC5jby51aykKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9hcm0pOiBEZWxldGUgZGVjbGFyYXRpb24uCgkocHJpbnRfaW5zbl97bGl0dGxlLGJpZ31fYXJtKTogTmV3IGRlY2xhcmF0aW9ucy4KCgkqIGZsb2F0Zm9ybWF0LmggKGZsb2F0Zm9ybWF0X2FybV9leHQpOiBEZWNsYXJlLgoKU2F0IE1heSAxMyAxMDoxNDowOCAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdWJzeXRlbSwgc3RhY2tfaGVhcF9wYXJhbWV0ZXJzKTogTmV3LgoKVGh1IE1heSAgNCAxNDozNjo0MiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGRlbWFuZ2xlLmg6IERvbid0IGluY2x1ZGUgYW5zaWRlY2wuaCBpZiBJTl9HQ0MuCgpUdWUgRmViIDIxIDAwOjM3OjI4IDE5OTUgIEplZmYgTGF3ICAobGF3QHNuYWtlLmNzLnV0YWguZWR1KQoKCSogaHAtc3ltdGFiLmg6IERvbid0IHVzZSBiaXRmaWVsZCBlbnVtZXJhdGlvbnMsIHRoZSBIUCBDIGNvbXBpbGVyCglkb2VzIG5vdCBoYW5kbGUgdGhlbSBjb3JyZWN0bHkuCgpUaHUgRmViICA5IDE0OjIwOjI3IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IERvbid0IGRlY2xhcmUgcGFyYW1ldGVyIHR5cGU7IHNvbWUKCXN5c3RlbXMgaGF2ZSB0aGlzIGluIHRoZWlyIGhlYWRlciBmaWxlcy4KCldlZCBGZWIgIDggMTc6MzU6MzggMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IENoYW5nZSBmb3JtYXQgb2YgY29tbW9uCglzeW1ib2wgaW5mb3JtYXRpb24sIHRvIHJlbW92ZSByZXN0cmljdGlvbnMgb24gbWF4aW11bSBzaXplIGFuZAoJYWxpZ25tZW50IHBvd2VyLCBieSB1c2luZyBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgaW5zdGVhZC4KCk1vbiBGZWIgIDYgMTQ6NTU6MzIgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChlbnVtIGJmZF9saW5rX2hhc2hfdHlwZSk6IFJlbmFtZSBiZmRfbGlua19oYXNoX3dlYWsKCXRvIGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrLiAgQWRkIGJmZF9saW5rX2hhc2hfZGVmd2Vhay4KCk1vbiBKYW4gMTYgMjE6MDA6MjMgMTk5NSAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChHREJfSU5JVF9ESVNBU1NFTUJMRV9JTkZPLCBldGMpOiBSZW1vdmUgYWxsCglHREItc3BlY2lmaWMgZGVmaW5pdGlvbnMuCgpTdW4gSmFuIDE1IDE4OjM5OjM1IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNwbGF0PgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3c2NSk6IERlY2xhcmUuCgpUaHUgSmFuIDEyIDE3OjUxOjE3IDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBjdWpvLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoaGV4X3ApOiBGaXggc2Vuc2Ugb2YgdGVzdC4KCldlZCBKYW4gMTEgMjI6MzY6NDAgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGN1am8uY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChfaGV4X2FycmF5X3NpemUsIF9oZXhfYmFkLCBfaGV4X3ZhbHVlLCBoZXhfaW5pdCwKCWhleF9wLCBoZXhfdmFsdWUpOiBOZXcgbWFjcm9zIGFuZCBkZWNsYXJhdGlvbnMsIGZvciBoZXguYy4KCkZyaSBKYW4gIDYgMTc6NDQ6MTQgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBzYW5ndWluZS5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBNYWtlIGlkZW1wb3RlbnQuCgpXZWQgRGVjIDE0IDEzOjA4OjQzIDE5OTQgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIHByb2dyZXNzLmg6IE5ldyBmaWxlLCBlbXB0eSBkZWZpbml0aW9ucyBmb3IgcHJvZ3Jlc3MgbWFjcm9zLgoKRnJpIE5vdiAyNSAwMDoxNDowNSAxOTk0ICBKZWZmIExhdyAgKGxhd0BzbmFrZS5jcy51dGFoLmVkdSkKCgkqIGhwLXN5bXRhYi5oOiBOZXcgZmlsZSBkZXNjcmliaW5nIHRoZSBkZWJ1ZyBzeW1ib2xzIGVtaXR0ZWQKCWJ5IHRoZSBIUCBDIGNvbXBpbGVycy4KCkZyaSBOb3YgMTEgMTU6NDg6MzcgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBzYW5ndWluZS5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IENoYW5nZSB1LmMuc2l6ZSBmcm9tIDI0Cgl0byAyNiBiaXRzLCBhbmQgY2hhbmdlIHUuYy5hbGlnbm1lbnRfcG93ZXIgZnJvbSA4IHRvIDYgYml0cy4gIDYKCWJpdCBpbiB0aGUgYWxpZ25tZW50IHBvd2VyIGlzIGVub3VnaCBmb3IgYSA2NCBiaXQgYWRkcmVzcyBzcGFjZS4KCk1vbiBPY3QgMzEgMTM6MDI6NTEgMTk5NCAgU3RhbiBTaGVicyAgKHNoZWJzQGFuZHJvcy5jeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaCAoY3BsdXNfbWFuZ2xlX29wbmFtZSk6IERlY2xhcmUuCgpUdWUgT2N0IDI1IDExOjM4OjAyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEZpeCBjb21tZW50cyBmb3IKCW11bHRpcGxlX2NvbW1vbiBmaWVsZC4KClN1biBTZXAgMDQgMTc6NTg6MTAgMTk5NCAgUmljaGFyZCBFYXJuc2hhdyAocndlQHBlZ2FzdXMuZXNwcml0LmVjLm9yZykKCgkqIGRpcy1hc20uaDogQWRkIHN1cHBvcnQgZm9yIHRoZSBBUk0uCgpXZWQgQXVnIDEwIDEyOjUxOjQxIDE5OTQgIERvdWcgRXZhbnMgIChkamVAY2FudWNrLmN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaCAoc3Ryc2lnbmFsKTogRG9jdW1lbnQgaXRzIGV4aXN0ZW5jZSBldmVuIGlmIHdlCgljYW4ndCBkZWNsYXJlIGl0LgoKVHVlIEF1ZyAgMiAxNDo0MDowMyAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIG9zOWsuaDogUmVtb3ZlIHVfaW50MTYsIHVfaW50MzIsIGFuZCBvd25lcl9pZCB0eXBlZGVmcyBhbmQKCWV4cGFuZCB0aGVpciB1c2VzLiAgVGhvc2UgbmFtZXMgY29uZmxpY3Qgd2l0aCBNYWNoIGhlYWRlcnMuCgpGcmkgSnVsIDIyIDE0OjE3OjEyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBDaGFuZ2UgdS5jLnNpemUgaW50byBhCgliaXRmaWVsZC4gIEFkZCBmaWVsZCB1LmMuYWxpZ25tZW50X3Bvd2VyLgoKU3VuIEp1bCAxMCAwMDoyNjozOSAxOTk0ICBJYW4gRGFsbCAgKGRhbGxAaGZyZC5kc3RvLmdvdi5hdSkKCgkqIGRpcy1hc20uaDogQWRkIHByaW50X2luc25fbnMzMmsgZGVjbGFyYXRpb24uCgpNb24gSnVuIDIwIDE3OjEzOjI5IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaGFzaF90YWJsZSk6IE1ha2UgY3JlYXRvciBhIGNvbnN0IHBvaW50ZXIuCgpTYXQgSnVuIDE4IDE2OjA5OjMyIDE5OTQgIFN0YW4gU2hlYnMgIChzaGVic0BhbmRyb3MuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IERlY2xhcmUuCgpUaHUgSnVuIDE2IDE1OjE5OjAzIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGZpZWxkIHNoYXJlZC4KCk1vbiBKdW4gIDYgMTQ6Mzk6NDQgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IFJlbW92ZSB3cml0dGVuIGZpZWxkOgoJbm90IG5lZWRlZCBmb3IgYWxsIGJhY2tlbmRzLgoKVGh1IEFwciAyOCAxOTowNjo1MCAxOTk0ICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZXIpOiBEZWNsYXJlLgoKRnJpIEFwciAgMSAwMDozODoxNyAxOTk0ICBKaW0gV2lsc29uICAod2lsc29uQG1vbGUuZ251LmFpLm1pdC5lZHUpCgoJKiBvYnN0YWNrLmg6IERlbGV0ZSB1c2Ugb2YgSU5fR0NDIHRvIGNvbnRyb2wgd2hldGhlcgoJc3RkZGVmLmggb3IgZ3N0ZGRlZi5oIGlzIGluY2x1ZGVkLgoKVHVlIE1hciAyMiAxMzowNjowMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKGVudW0gYmZkX2xpbmtfb3JkZXJfdHlwZSk6IEFkZCBiZmRfZGF0YV9saW5rX29yZGVyLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcik6IEFkZCBkYXRhIGZpZWxkIHRvIHVuaW9uLgoKTW9uIE1hciAyMSAxODo0NToyNiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBDaGFuZ2UgYml0c2l6ZSBhcmd1bWVudAoJdG8gYWRkX3RvX3NldCB0byByZWxvYy4gIFJlbW92ZSBiaXRzaXplIGFyZ3VtZW50IGZyb20gY29uc3RydWN0b3IuCglDb21tZW50IHRoYXQgcmVsb2Nfb3ZlcmZsb3csIHJlbG9jX2Rhbmdlcm91cyBhbmQgdW5hdHRhY2hlZF9yZWxvYwoJbXVzdCBoYW5kbGUgTlVMTCBwb2ludGVycyBmb3IgcmVsb2MgbG9jYXRpb24uCgkoZW51bSBiZmRfbGlua19vcmRlcl90eXBlKTogQWRkIGJmZF9zZWN0aW9uX3JlbG9jX2xpbmtfb3JkZXIgYW5kCgliZmRfc3ltYm9sX3JlbG9jX2xpbmtfb3JkZXIuCgkoc3RydWN0IGJmZF9saW5rX29yZGVyKTogQWRkIHJlbG9jIGZpZWxkIHRvIHVuaW9uLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcl9yZWxvYyk6IERlZmluZS4KCk1vbiBNYXIgMTQgMTI6Mjc6NTAgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogaWVlZS1mbG9hdC5oOiBSZW1vdmVkOyBubyBsb25nZXIgdXNlZC4KClR1ZSBNYXIgIDEgMTg6MTA6NDkgMTk5NCAgS3VuZyBIc3UgIChrdW5nQG1leGljYW4uY3lnbnVzLmNvbSkKCgkqIG9zOWsuaDogb3M5MDAwIHRhcmdldCBzcGVjaWZpYyBoZWFkZXIgZmlsZSwgdGhlIGhlYWRlciBvZiB0aGUKCW9iamVjdCBmaWxlIGlzIHVzZWQgbm93LgoKU3VuIEZlYiAyNyAyMTo1MjoyNiAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGZsb2F0Zm9ybWF0Lmg6IE5ldyBmaWxlLCBpbnRlbmRlZCB0byByZXBsYWNlIGllZWUtZmxvYXQuaC4KClN1biBGZWIgMjAgMTc6MTU6NDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBsaXNhLmN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oIChBTlNJX1BST1RPVFlQRVMpOiBEZWZpbmUgaWYgdXNpbmcgQU5TSSBwcm90b3R5cGVzLgoKV2VkIEZlYiAxNiAwMTowNzoxMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaDogRG9uJ3QgZGVjbGFyZSBzdHJzaWduYWwsIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoCglTb2xhcmlzIHN5c3RlbSBoZWFkZXIgZmlsZXMuCgpTYXQgRmViIDEyIDIyOjExOjMyIDE5OTQgIEplZmZyZXkgQS4gTGF3ICAobGF3QHNuYWtlLmNzLnV0YWguZWR1KQoKCSogbGliaWJlcnR5LmggKHhleGl0KTogVXNlIF9fdm9sYXRpbGVfXyB0byBhdm9pZCBsb3NpbmcgaWYKCWNvbXBpbGluZyB3aXRoIGdjYyAtdHJhZGl0aW9uYWwuCgpUaHUgRmViIDEwIDE0OjA1OjQxIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGxpYmliZXJ0eS5oOiBOZXcgZmlsZS4gIERlY2xhcmVzIGZ1bmN0aW9ucyBwcm92aWRlZCBieQoJbGliaWJlcnR5LgoKVHVlIEZlYiAgOCAwNToxOTo1MiAxOTk0ICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJSGFuZGxlIG9ic3RhY2tfY2h1bmtfYWxsb2MgcmV0dXJuaW5nIE5VTEwuICBUaGlzIGFsbG93cwoJb2JzdGFja3MgdG8gYmUgdXNlZCBieSBsaWJyYXJpZXMsIHdpdGhvdXQgZm9yY2luZyB0aGVtCgl0byBjYWxsIGV4aXQgb3IgbG9uZ2ptcC4KCSogb2JzdGFjay5oIChzdHJ1Y3Qgb2JzdGFjayk6IEFkZCBhbGxvY19mYWlsZWQgZmxhZy4KCV9vYnN0YWNrX2JlZ2luLCBfb2JzdGFja19iZWdpbl8xKTogRGVjbGFyZSB0byByZXR1cm4gaW50LCBub3Qgdm9pZC4KCShvYnN0YWNrX2ZpbmlzaCk6IElmIGFsbG9jX2ZhaWxlZCwgcmV0dXJuIE5VTEwuCgkob2JzdGFja19iYXNlLCBvYnN0YWNrX25leHRfZnJlZSwgb2Jqc3RhY2tfb2JqZWN0X3NpemUpOgoJSWYgYWxsb2NfZmFpbGVkLCByZXR1cm4gMC4KCShvYnN0YWNrX2dyb3csIG9ic3RhY2tfZ3JvdzAsIG9ic3RhY2tfMWdyb3csIG9ic3RhY2tfcHRyX2dyb3csCglvYnN0YWNrX2ludF9ncm93LCBvYnN0YWNrX2JsYW5rKTogSWYgYWxsb2NfZmFpbGVkLCBkbyBub3RoaW5nIHRoYXQKCWNvdWxkIGNvcnJ1cHQgdGhlIG9ic3RhY2suCgpNb24gSmFuIDI0IDE1OjA2OjA1IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBuYW1lLCByZWxvY19uYW1lIGFuZAoJYWRkZW5kIGFyZ21lbnRzIHRvIHJlbG9jX292ZXJmbG93IGNhbGxiYWNrLgoKRnJpIEphbiAyMSAxOToxMzoxMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYmlnX3Bvd2VycGMsIHByaW50X2luc25fbGl0dGxlX3Bvd2VycGMsCglwcmludF9pbnNuX3JzNjAwMCk6IERlY2xhcmUuCgpUaHUgSmFuICA2IDE0OjE1OjU1IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBiaXRzaXplIGFyZ3VtZW50IHRvCglhZGRfdG9fc2V0IGZpZWxkLiAgQWRkIG5ldyBjYWxsYmFjayBuYW1lZCBjb25zdHJ1Y3Rvci4KClRodSBEZWMgMzAgMTA6NDQ6MDYgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBydGwuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaDogTmV3IGZpbGUgZm9yIG5ldyBCRkQgbGlua2VyIGJhY2tlbmQgcm91dGluZXMuCgpNb24gTm92IDI5IDEwOjQzOjU3IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoZW51bSBkaXNfaW5zbl90eXVwZSk6IFJlbW92ZSBub24tQU5TSSB0cmFpbGluZyBjb21tYS4KClNhdCBPY3QgIDIgMjA6NDI6MjYgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IE1vdmUgY29tbWVudCB0byByaWdodCBwbGFjZS4KCk1vbiBBdWcgIDkgMTk6MDM6MzUgMTk5MyAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogb2JzdGFjay5oIChvYnN0YWNrX2NodW5rZnVuLCBvYnN0YWNrX2ZyZWVmdW4pOiBBZGQgZGVmbnMgZnJvbQoJcHJldmlvdXMgdmVyc2lvbi4gIEFyZSB0aGVzZSBDeWdudXMgbG9jYWwgY2hhbmdlcz8KCkZyaSBBdWcgIDYgMTc6MDU6NDcgMTk5MyAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmgsIG9ic3RhY2suaDogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KCk1vbiBBdWcgIDIgMTQ6NDU6MjkgMTk5MyAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6ICBNb3ZlIGVudW0gb3V0c2lkZSBvZiBzdHJ1Y3QgZGVmbiB0byBhdm9pZCB3YXJuaW5ncy4KCk1vbiBBdWcgIDIgMDg6NDk6MzAgMTk5MyAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIHdhaXQuaCAoV0VYSVRTVEFUVVMsIFdTVE9QU0lHKTogTWFzayBkb3duIHRvIDggYml0cy4gIFRoaXMgaXMKCWZvciBzeXN0ZW1zIHRoYXQgc3RvcmUgc3R1ZmYgaW50byB0aGUgaGlnaCAxNiBiaXRzIG9mIGEgd2FpdAoJc3RhdHVzLgoKRnJpIEp1bCAzMCAxODozODowMiAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogIEFkZCBuZXcgZmllbGRzIGluc25faW5mb192YWxpZCwgYnJhbmNoX2RlbGF5X2luc25zLAoJZGF0YV9zaXplLCBpbnNuX3R5cGUsIHRhcmdldCwgdGFyZ2V0Mi4gIFRoZXNlIGFyZSB1c2VkIHRvIHJldHVybgoJaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5zdHJ1Y3Rpb24gZGVjb2RlcnMgYmFjayB0byB0aGUgY2FsbGluZwoJcHJvZ3JhbS4gIEFkZCBjb21tZW50cywgbWFrZSBtb3JlIHJlYWRhYmxlLgoKTW9uIEp1bCAxOSAyMjoxNDoxNCAxOTkzICBGcmVkIEZpc2ggIChmbmZAZGVuZWIuY3lnbnVzLmNvbSkKCgkqIG5sbTogIE5ldyBkaXJlY3RvcnkgY29udGFpbmluZyBOTE0vTmV0V2FyZSBpbmNsdWRlcy4KClRodSBKdWwgMTUgMTI6MTA6MDQgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGNhbWJyaWRnZS5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyk6IE5ldyBmaWVsZCBhcHBsaWNhdGlvbl9kYXRhLgoKVGh1IEp1bCAxNSAxMjo0MToxNSAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IEFkZGVkIGRlY2xhcmF0aW9uIG9mIHByaW50X2luc25fbTg4ay4KCkZyaSBKdWwgIDIgMTA6MzE6NTkgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogVXNlIEFOU0kgbWFjcm9zIGlmIF9fbWlwcyBhbmQgX1NZU1RZUEVfU1ZSNCBhcmUKCWRlZmluZWQsIHNpbmNlIFJJU0MvT1MgY2MgaGFuZGxlcyBBTlNJIGRlY2xhcmF0aW9ucyBpbiBTVlI0IG1vZGUKCWJ1dCBkb2VzIG5vdCBkZWZpbmUgX19TVERDX18uCgpTdW4gSnVuIDIwIDE4OjI3OjUyIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBwb3NlaWRvbi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBEb24ndCBuZWVkIHRvIGluY2x1ZGUgYW5zaWRlY2wuaCBhbnkgbW9yZS4KCkZyaSBKdW4gMTggMDM6MjI6MTAgMTk5MyAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBvYXN5cy5oOiAgRWxpbWluYXRlICJpbnQ4X3R5cGUiLCAiaW50MTZfdHlwZSIsICJpbnQzMl90eXBlIiwgYW5kCgl0aGVpciB2YXJpYW50cy4gIFRoZXNlIGNoYW5nZXMgYXJlIGNvb3JkaW5hdGVkIHdpdGggY29ycmVzcG9uZGluZwoJY2hhbmdlcyBpbiAuLi9iZmQvb2FzeXMuYy4KCldlZCBKdW4gMTYgMTA6NDM6MDggMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBiZmQuaDogIE5vdGUgdGhhdCBpdCBoYXMgYmVlbiByZW1vdmVkLgoKVHVlIEp1biAgOCAxMjoxNjowMyAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0BwaHlkZWF1eC5jeWdudXMuY29tKQoKCSBTdXBwb3J0IGZvciBIOC8zMDAtSAoJKiBkaXMtYXNtLmggKHByaW50X2luc25faDgzMDAsIHByaW50X2luc25faDgzMDBoKTogRGVjbGFyZSBpdC4KClR1ZSBKdW4gIDEgMDc6MzU6MDMgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGtyLXBjLmN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oIChjb25zdCk6IERvbid0IGRlZmluZSBpdCBpZiBpdCdzIGFscmVhZHkgZGVmaW5lZC4KClRodSBNYXkgMjcgMTg6MTk6NTEgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGNhbWJyaWRnZS5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2hwcGEpOiBEZWNsYXJlIGl0LgoKCSogYmZkLmg6IE1vdmVkIHRvIGJmZCBkaXJlY3RvcnkuICBTbWFsbCBzdHViIGhlcmUgaW5jbHVkZXMgaXQKCXdpdGhvdXQgcmVxdWlyaW5nICItSS4uL2JmZCIuCgpUaHUgQXByIDI5IDEyOjA2OjEzIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBkZW5lYi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZWQgd2l0aCBCU0ZfRlVOQ1RJT04uCgpNb24gQXByIDI2IDE4OjE1OjUwIDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmgsIGRpcy1hc20uaDogVXBkYXRlZCB3aXRoIEhpdGFjaGkgU0guCgpGcmkgQXByIDIzIDE4OjQxOjM4IDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZWQgd2l0aCBhbHBoYSBjaGFuZ2VzLgoJKiBkaXMtYXNtLmg6IEFkZGVkIGFscGhhLgoKRnJpIEFwciAxNiAxNzozNTozMCAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIHNpZ25lZCBiZmRfKmdldF8qLgoKVGh1IEFwciAxNSAwOToyNDoyMSAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIGZvciBmaWxlX3RydW5jYXRlZCBlcnJvci4KClRodSBBcHIgIDggMTA6NTM6NDcgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogSWYgbm8gQU5TSSwgZGVmaW5lIGNvbnN0IHRvIGJlIGVtcHR5LgoKVGh1IEFwciAgMSAwOTowMDoxMCAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogRGVjbGFyZSBhMjlrIGFuZCBpOTYwIHByaW50X2luc25fKi4KCgkqIGRpcy1hc20uaDogQWRkIHByaW50X2FkZHJlc3NfZnVuYyBhbmQgcmVsYXRlZCBzdHVmZi4KCgkqIGRpcy1hc20uaCAoZGlzX2FzbV9yZWFkX21lbW9yeSk6IEZpeCBwcm90b3R5cGUuCgpXZWQgTWFyIDMxIDE3OjQwOjE2IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBBZGQgcHJpbnRfaW5zbl9zcGFyYy4KCldlZCBNYXIgMzEgMTc6NTE6NDIgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZWQgZm9yIEJGRF9SRUxPQ19NSVBTX0dQUkVMIGFuZCBiZmRfW2dzXWV0X2dwX3NpemUKCXByb3RvdHlwZXMuCgpXZWQgTWFyIDMxIDE2OjM1OjEyIDE5OTMgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IChkaXNhc3NlbWJsZV9pbmZvKTogIEZpeCB0eXBvIGluIHByb3RvdHlwZSBvZgoJZGlzX2FzbV9tZW1vcnlfZXJyb3IoKS4KClR1ZSBNYXIgMzAgMTk6MDk6MjMgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlcl9pbmZvKTogQWRkIHJlYWRfbWVtb3J5X2Z1bmMsCgltZW1vcnlfZXJyb3JfZnVuYywgYnVmZmVyLCBhbmQgbGVuZ3RoLgoJKHtHREJfLH1JTklUX0RJU0FTU0VNQkxFX0lORk8pOiBTZXQgdGhlbS4KCXByaW50X2luc25fKjogUmVtb3ZlIHNlY29uZCBhcmd1bWVudC4KClR1ZSBNYXIgMzAgMTQ6NDg6NTUgMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBsbWEgZmllbGQgb2Ygc2VjdGlvbi4KClR1ZSBNYXIgMzAgMTI6MjI6NTUgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oOiBVc2UgQU5TSSB2ZXJzaW9ucyBvbiBBSVggcmVnYXJkbGVzcyBvZiBfX1NURENfXy4KCkZyaSBNYXIgMTkgMTQ6NDk6NDkgMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IEFkZCBoODUwMC4KClRodSBNYXIgMTggMTM6NDk6MDkgMTk5MyAgUGVyIEJvdGhuZXIgIChib3RobmVyQHJ0bC5jeWdudXMuY29tKQoKCSogaWVlZS1mbG9hdC5oOiAgTW92ZWQgZnJvbSAuLi9nZGIuCgkqIGRpcy1hc20uaDogIE5ldyBmaWxlLiAgSW50ZXJmYWNlIHRvIGRpcy1hc3NlbWJsZXIuCgpUaHUgTWFyIDExIDEwOjUyOjU3IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaCAoRE1HTF9OT19PUFRTKTogIEFkZCBkZWZpbmUgKHNldCB0byAwKSB0byB1c2UKCWluIHBsYWNlIG9mIGJhcmUgMCwgZm9yIHJlYWRhYmlsaXR5IHJlYXNvbnMuCgpUdWUgTWFyICAyIDE3OjUwOjExIDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaDogIFJlcGxhY2UgYWxsIHJlZmVyZW5jZXMgdG8gY2Zyb250IHdpdGggQVJNLgoKVHVlIEZlYiAyMyAxMjoyMToxNCAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBuZXcgZWxlbWVudHMgaW4gSlVNUF9UQUJMRS4KClR1ZSBGZWIgMTYgMDA6NTE6MzAgMTk5MyAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSBmb3IgQkZEX1ZFUlNJT04gMi4xLgoKVHVlIEphbiAyNiAxMTo0OToyMCAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBTRUNfSVNfQ09NTU9OIGZsYWcuCgpUdWUgSmFuIDE5IDEyOjI1OjEyIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIGJmZF9hc3ltYm9sX3ZhbHVlIGJ1ZyBmaXguCgpGcmkgSmFuICA4IDE2OjM3OjE4IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgdG8gaW5jbHVkZSBFQ09GRiB0ZGF0YSBhbmQgdGFyZ2V0X2ZsYXZvdXIuCgpTdW4gRGVjIDI3IDE3OjUyOjMwIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBBZGQgZGVjbGFyYXRpb24gZm9yIGJmZF9nZXRfc2l6ZSgpLgoKVHVlIERlYyAyMiAyMjo0Mjo0NiAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmg6ICBQcm90ZWN0IGZpbGUgZnJvbSBtdWx0aXBsZSBpbmNsdXNpb25zIHdpdGgKCSNpZiAhZGVmaW5lZChERU1BTkdMRV9IKS4uLiNkZWZpbmUgREVNQU5HTEVfSC4uLiNlbmRpZi4KCk1vbiBEZWMgMjEgMjE6MjU6NTAgMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIHRvIGdldCBocHBhX2NvcmVfc3RydWN0IGZyb20gYmZkLmMuCgpUaHUgRGVjIDE3IDAwOjQyOjM1IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgdG8gZ2V0IHRla2hleCB0ZGF0YSBuYW1lIGNoYW5nZSBmcm9tIGJmZC4KCk1vbiBOb3YgIDkgMjM6NTU6NDIgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oOiAgVXBkYXRlIGNvbW1lbnRzIHRvIGRpc2NvdXJhZ2UgdXNlIG9mIEVYRlVOLgoKVGh1IE5vdiAgNSAxNjozNTo0NCAxOTkyICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIHRvIGJyaW5nIGluIFNFQ19TSEFSRURfTElCUkFSWS4KClRodSBOb3YgIDUgMDM6MjE6MzIgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSB0byBtYXRjaCBFWEZVTiwgYmZkX3NlY2xldF9zdHJ1Y3QsIGFuZCBTREVGCgljbGVhbnVwcyBpbiBiZmQuCgpXZWQgTm92ICA0IDA3OjI4OjA1IDE5OTIgIEtlbiBSYWVidXJuICAocmFlYnVybkBjeWdudXMuY29tKQoKCSogYm91dC5oIChOX0NBTExOQU1FLCBOX0JBTE5BTUUpOiBEZWZpbmUgYXMgY2hhci10eXBlIHZhbHVlcywgc28KCXdpZGVuaW5nIHdvcmtzIGNvbnNpc3RlbnRseS4KCkZyaSBPY3QgMTYgMDM6MTc6MDggMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaDogIFVwZGF0ZSB0byBSZXZpc2VkIFN0YW5kYXJkIEZTRiBWZXJzaW9uLgoKVGh1IE9jdCAxNSAyMTo0MzoyMiAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAc2VuZGFpLmN5Z251cy5jb20pCgoJKiBnZXRvcHQuaCAoc3RydWN0IG9wdGlvbik6IHVzZSB0aGUgcHJvdmlkZWQgZW51bSBmb3IgaGFzX2FyZy4KCgkqIGRlbWFuZ2xlLmggKEFVVE9fREVNQU5HTElORywgR05VX0RFTUFOR0xJTkcsCgkgIExVQ0lEX0RFTUFOR0xJTkcpOiB1bHRyaXggY29tcGlsZXJzIHJlcXVpcmUgZW51bXMgdG8gYmUKCSAgZW51bXMgYW5kIGludHMgdG8gYmUgaW50cyBhbmQgY2FzdHMgd2hlcmUgdGhleSBtZWV0LiAgY2FzdCBzb21lCgkgIGVudW1zIGludG8gaW50cy4KClRodSBPY3QgMTUgMDQ6MzU6NTEgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSBhZnRlciBjb21tZW50IGNoYW5nZXMuCgpUaHUgT2N0ICA4IDA5OjAzOjAyIDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmggKGJmZF9nZXRfc3ltYm9sX2xlYWRpbmdfY2hhcik6IG5ldyBtYWNybyBmb3IgZ2V0dGluZyBpbiB4dmVjCgpUaHUgU2VwICAzIDA5OjEwOjUwIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCAoc3RydWN0IHJlbG9jX2hvd3RvX3N0cnVjdCk6ICBzaXplIG5lZWRzIHRvIGJlIHNpZ25lZCBpZgoJaXQncyBnb2luZyB0byBob2xkIG5lZ2F0aXZlIHZhbHVlcy4KClN1biBBdWcgMzAgMTc6NTA6MjcgMTk5MiAgUGVyIEJvdGhuZXIgIChib3RobmVyQHJ0bC5jeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaDogIE5ldyBmaWxlLCBtb3ZlZCBmcm9tIC4uL2dkYi4gIE1hZGUgaW5kZXBlbmRlbnQKCW9mIGdkYi4gIEFsbG93IGRlbWFuZ2xpbmcgc3R5bGUgb3B0aW9uIHRvIGJlIHBhc3NlZCBhcyBhCglwYXJhbWV0ZXIgdG8gY3BsdXNfZGVtYW5nbGUoKSwgYnV0IHVzaW5nIHRoZQoJY3VycmVudF9kZW1hbmdsaW5nX3N0eWxlIGdsb2JhbCBhcyB0aGUgZGVmYXVsdC4KClNhdCBBdWcgMjkgMTA6MDc6NTUgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6ICBNZXJnZSBjb21tZW50IGNoYW5nZSBmcm9tIGN1cnJlbnQgRlNGIHZlcnNpb24uCgpUaHUgQXVnIDI3IDEyOjU5OjI5IDE5OTIgIEJyZW5kYW4gS2Vob2UgIChicmVuZGFuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogYWRkIHdlMzJrCgpUdWUgQXVnIDI1IDE1OjA3OjQ3IDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IG5ldyBhZnRlciBaODAwMCBzdHVmZgoKTW9uIEF1ZyAxNyAwOTowMToyMyAxOTkyICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBSZWdlbmVyYXRlZCBhZnRlciBwYWdlL3NlZ21lbnQgc2l6ZSBjaGFuZ2VzLgoKU2F0IEF1ZyAgMSAxMzo0NjozMSAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogTWVyZ2UgY2hhbmdlcyBmcm9tIGN1cnJlbnQgRlNGIHZlcnNpb24uCgpNb24gSnVsIDIwIDIxOjA2OjIzIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oIChhcmVhX2lkLCBmbGFncyk6ICBSZW1vdmUsIHJlcGxhY2Ugd2l0aCBleHRyYV9hcmcsCgl1c2VfZXh0cmFfYXJnLCBhbmQgbWF5YmVfZW1wdHlfb2JqZWN0LgoJKiBvYnN0YWNrLmggKE9CU1RBQ0tfTUFZQkVfRU1QVFlfT0JKRUNULCBPQlNUQUNLX01NQUxMT0NfTElLRSk6CglSZW1vdmUsIHJlcGxhY2VkIGJ5IG1heWJlX2VtcHR5X29iamVjdCBhbmQgdXNlX2V4dHJhX2FyZyBiaXRmaWVsZHMuCgkqIG9ic3RhY2suaCAob2JzdGFja19mdWxsX2JlZ2luLCBfb2JzdGFja19iZWdpbik6ICBSZW1vdmUgYXJlYV9pZAoJYW5kIGZsYWdzIGFyZ3VtZW50cy4KCSogb2JzdGFjay5oIChvYnN0YWNrX2FsbG9jX2FyZyk6ICBOZXcgbWFjcm8gdG8gc2V0IGV4dHJhX2FyZy4KClRodSBKdWwgMTYgMDg6MTI6NDQgMTk5MiAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogbmV3IGFmdGVyIGFkZGluZyBCRkRfSVNfUkVMQVhBQkxFCgpTYXQgSnVsICA0IDAzOjIyOjIzIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBSZWdlbiBhZnRlciBhZGRpbmcgQlNGX0ZJTEUuCgpNb24gSnVuIDI5IDE0OjE4OjM2IDE5OTIgIEZyZWQgRmlzaCAgKGZuZiBhdCBzdW5maXNoKQoKCSogb2JzdGFjay5oOiAgQ29udmVydCBiY29weSgpIHVzZSB0byBtZW1jcHkoKSwgd2hpY2ggaXMgbW9yZQoJcG9ydGFibGUsIG1vcmUgc3RhbmRhcmQsIGFuZCBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgZ2NjJ3MgYnVpbHRpbgoJZnVuY3Rpb25zIGZvciBpbmNyZWFzZWQgcGVyZm9ybWFuY2UuCgpUaHUgSnVuIDI1IDA0OjQ2OjA4IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaCAoUEFSQU1TKTogIEluY29ycG9yYXRlIHRoaXMgbWFjcm8gZnJvbSBnZGIncyBkZWZzLmguCglJdCdzIGEgY2xlYW5lciB3YXkgdG8gZm9yd2FyZC1kZWNsYXJlIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgpGcmkgSnVuIDE5IDE1OjQ2OjMyIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIEhQUEEgbWVyZ2UuCgpUdWUgSnVuIDE2IDIxOjMwOjU2IDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6IGdyYXR1aXRvdXMgd2hpdGUgc3BhY2UgY2hhbmdlcyBtZXJnZWQgZnJvbSBvdGhlciBwcmVwCgkgIHJlbGVhc2VzLgoKVGh1IEp1biAxMSAwMToxMDo1NSAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgUmVnZW4nZCBmcm9tIGJmZC5jIGFmdGVyIHJlbW92aW5nIGVsZl9jb3JlX3RkYXRhX3N0cnVjdC4KCk1vbiBNYXkgMTggMTc6Mjk6MDMgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaDogbWVyZ2VkIGNoYW5nZXMgZnJvbSBtYWtlLTMuNjIuMTEuCgoJKiBnZXRvcHQuaDogbWVyZ2VkIGNoYW5nZXMgZnJvbSBncmVwLTEuNiAoYWxwaGEpLgoKRnJpIE1heSAgOCAxNDo1MzozMiAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiBtZXJnZWQgY2hhbmdlcyBmcm9tIGJpc29uLTEuMTguCgpTYXQgTWFyIDE0IDE3OjI1OjIwIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgQWRkICJhcmVhX2lkIiBhbmQgImZsYWdzIiBtZW1iZXJzIHRvIG9ic3RhY2sKCXN0cnVjdHVyZS4gIEFkZCBvYnN0YWNrX2NodW5rZnVuKCkgYW5kIG9ic3RhY2tfZnJlZWZ1bigpIHRvCglzZXQgZnVuY3Rpb25zIGV4cGxpY2l0bHkuICBDb252ZXJ0IG1heWJlX2VtcHR5X29iamVjdCB0bwoJYSBiaXQgaW4gImZsYWdzIi4KClRodSBGZWIgMjcgMjI6MDE6MDIgMTk5MiAgUGVyIEJvdGhuZXIgIChib3RobmVyQGN5Z251cy5jb20pCgoJKiB3YWl0LmggKFdJRlNUT1BQRUQpOiAgQWRkIElCTSByczYwMDAtc3BlY2lmaWMgdmVyc2lvbi4KCkZyaSBGZWIgMjEgMjA6NDk6MjAgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6ICBBZGQgb2JzdGFja19mdWxsX2JlZ2luLgoJKiBiZmQuaCwgb2JzdGFjay5oOiAgUHJvdG9saW50LgoKVGh1IEphbiAzMCAwMToxODo0MiAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgUmVtb3ZlIGNvbW1hIGZyb20gZW51bSBkZWNsYXJhdGlvbi4KCk1vbiBKYW4gMjcgMjI6MDE6MTMgMTk5MiAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWMgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oIDogbmV3IHRhcmdldCBlbnRyLCBiZmRfcmVsYXhfc2VjdGlvbgoKV2VkIERlYyAxOCAxNzoxOTo0NCAxOTkxICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmgsIGllZWUuaDogIEFOU0lmeSBlbnVtcy4KClRodSBEZWMgMTIgMjA6NTk6NTYgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBmb3Blbi1zYW1lLmgsIGZvcGVuLWJpbi5oOiAgTmV3IGZpbGVzIGZvciBjb25maWd1cmluZwoJd2hldGhlciBmb3BlbiBkaXN0aW5ndWlzaGVzIGJpbmFyeSBmaWxlcyBvciBub3QuICBGb3IgdXNlCglieSBob3N0LWRlcGVuZGVudCBjb25maWcgZmlsZXMuCgpTYXQgTm92IDMwIDIwOjQ2OjQzIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IHJ0bC5jeWdudXMuY29tKQoKCSogYmZkLmg6IGNoYW5nZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3JtYXQuCgoJKiBjcmVhdGVkIGNvZmYsIGVsZiBhbmQgb3Bjb2RlIGFuZCBhb3V0IGRpcmVjdG9yaWVzLiBNb3ZlZDoKCglhb3V0NjQuaAk9PT4gYW91dC9hb3V0NjQuaAoJYXIuaAkJPT0+IGFvdXQvYXIuaAoJYS5vdXQuZW5jYXAuaAk9PT4gYW91dC9lbmNhcC5oCglhLm91dC5ob3N0LmgJPT0+IGFvdXQvaG9zdC5oCglhLm91dC5ocC5oCT09PiBhb3V0L2hwLmgKCWEub3V0LnN1bjQuaAk9PT4gYW91dC9zdW40LmgKCXJhbmxpYi5oCT09PiBhb3V0L3JhbmxpYi5oCglyZWxvYy5oCQk9PT4gYW91dC9yZWxvYy5oCglzdGFiLmRlZgk9PT4gYW91dC9zdGFiLmRlZgoJc3RhYi5nbnUuaAk9PT4gYW91dC9zdGFiX2dudS5oCgoJY29mZi1hMjlrLmgJPT0+IGNvZmYvYTI5ay5oCgljb2ZmLWg4MzAwLmgJPT0+IGNvZmYvaDgzMDAuaAoJY29mZi1pMzg2LmgJPT0+IGNvZmYvaTM4Ni5oCgljb2ZmLWk5NjAuaAk9PT4gY29mZi9pOTYwLmgKCWludGVybmFsY29mZi5oCT09PiBjb2ZmL2ludGVybmFsLmgKCWNvZmYtbTY4ay5oCT09PiBjb2ZmL202OGsuaAoJY29mZi1tODhrLmgJPT0+IGNvZmYvbTg4ay5oCgljb2ZmLW1pcHMuaAk9PT4gY29mZi9taXBzLmgKCWNvZmYtcnM2MDAwLmgJPT0+IGNvZmYvcnM2MDAwLmgKCgllbGYtY29tbW9uLmgJPT0+IGVsZi9jb21tb24uaAoJZHdhcmYuaAkJPT0+IGVsZi9kd2FyZi5oCgllbGYtZXh0ZXJuYWwuaAk9PT4gZWxmL2V4dGVybmFsLmgKCWVsZi1pbnRlcm5hbC5oICA9PT4gZWxmL2ludGVybmFsLmgKCglhMjlrLW9wY29kZS5oCT09PiBvcGNvZGUvYTI5ay5oCglhcm0tb3Bjb2RlLmgJPT0+IG9wY29kZS9hcm0uaAoJaDgzMDAtb3Bjb2RlLmgJPT0+IG9wY29kZS9oODMwMC5oCglpMzg2LW9wY29kZS5oCT09PiBvcGNvZGUvaTM4Ni5oCglpODYwLW9wY29kZS5oCT09PiBvcGNvZGUvaTg2MC5oCglpOTYwLW9wY29kZS5oCT09PiBvcGNvZGUvaTk2MC5oCgltNjhrLW9wY29kZS5oCT09PiBvcGNvZGUvbTY4ay5oCgltODhrLW9wY29kZS5oCT09PiBvcGNvZGUvbTg4ay5oCgltaXBzLW9wY29kZS5oCT09PiBvcGNvZGUvbWlwcy5oCglucDEtb3Bjb2RlLmgJPT0+IG9wY29kZS9ucDEuaAoJbnMzMmstb3Bjb2RlLmgJPT0+IG9wY29kZS9uczMyay5oCglwbi1vcGNvZGUuaAk9PT4gb3Bjb2RlL3BuLmgKCXB5ci1vcGNvZGUuaAk9PT4gb3Bjb2RlL3B5ci5oCglzcGFyYy1vcGNvZGUuaAk9PT4gb3Bjb2RlL3NwYXJjLmgKCXRhaG9lLW9wY29kZS5oCT09PiBvcGNvZGUvdGFob2UuaAoJdmF4LW9wY29kZS5oCT09PiBvcGNvZGUvdmF4LmgKCgoKV2VkIE5vdiAyNyAxMDozODozMSAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBydGwuY3lnbnVzLmNvbSkKCgkqIGludGVybmFsY29mZi5oOiAoaW50ZXJuYWxfc2NuaGRyKSB0b29rIG91dCAjZGVmIGRlcGVuZGVuY3ksIG5vdwoJc19ucmVsb2MgYW5kIHNfbmxubm8gYXJlIGFsd2F5cyBsb25nLiAJKGludGVybmFsX3JlbG9jKTogYWxsd2F5cwoJaGFzIGFuIG9mZnNldCBmaWVsZCBub3cuCgpGcmkgTm92IDIyIDA4OjEyOjU4IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogY29mZi1yczYwMDAuaDogIExpbnQ7IHVzZSB1bnNpZ25lZCBjaGFycyBmb3IgZXh0ZXJuYWwgZmllbGRzLgoJKiBpbnRlcm5hbGNvZmYuaDogIExpbnQ7IGNhc3Qgc3RvcmFnZSBjbGFzc2VzIHRvIHNpZ25lZCBjaGFyLgoKVGh1IE5vdiAyMSAyMTowMTowNSAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIHN0YWIuZGVmOiBSZW1vdmUgdGhlIEdOVSBleHRlbmRlZCB0eXBlIGNvZGVzIChlLmcuIE5fU0VUVCkuCgkqIGFvdXQ2NC5oOiAgVGhlIGhldXJpc3RpYyBmb3IgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbgoJc3Vub3Mtc3R5bGUgYW5kIGJzZC1zdHlsZSBaTUFHSUMgZmlsZXMgKHdydC4gd2hlcmUgdGhlCgl0ZXh0IHNlZ21lbnQgc3RhcnRzKSBpcyBtb3ZlZCBpbnRvICh0aGUgZGVmYXVsdCBkZWZpbml0aW9uIG9mKQoJdGhlIG1hY3JvIE5fSEVBREVSX0lOX1RFWFQuICBUaGlzIGRlZmluaXRpb24gaXMgb25seSB1c2VkCglpZiBubyBvdGhlciBkZWZpbml0aW9uIGlzIHVzZWQgLSBlLmcuIGJmZC9uZXdzb3MzLmMgZGVmaW5lcwoJTl9IRUFERVJfSU5fVEVYVCh4KSB0byBiZSBhbHdheXMgMCAoYXMgYmVmb3JlKS4KClRodSBOb3YgMjEgMTE6NTM6MDMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhb3V0NjQuaCAoTl9UWFRBRERSLCBOX1RYVE9GRiwgTl9UWFRTSVpFKTogIE5ldyBkZWZpbml0aW9ucwoJdGhhdCBzaG91bGQgaGFuZGxlIGFsbCB1c2VzLiAgTE9HSUNBTF8gdmVyc2lvbnMgZGVsZXRlZC4KCUVsaW1pbmF0ZSBOX0hFQURFUl9JTl9URVhULCB1c2luZyBhX2VudHJ5IHRvIGRldGVybWluZSB3aGljaAoJa2luZCBvZiB6bWFnaWMgYS5vdXQgZmlsZSB3ZSBhcmUgbG9va2luZyBhdC4KCSogY29mZi1yczYwMDAuaDogIFR5cG8uCgpUdWUgTm92IDE5IDE4OjQzOjM3IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCShOb3RlOiAgVGhpcyBpcyBhIHJldmlzZWQgZW50cnksIGFzIHdhcyBhb3V0NjQuaC4pCgkqIGFvdXQ2NC5oOiAgU29tZSBjbGVhbnVwcyBvZiBOX1RYVEFERFIgYW5kIE5fVFhUT0ZGOgoJV2lsbCBub3cgd29yayBmb3IgYm90aCBvbGQtIGFuZCBuZXctc3R5bGUgWk1BR0lDIGZpbGVzLAoJZGVwZW5kaW5nIG9uIE5fSEVBREVSX0lOX1RFWFQgbWFjcm8uCglBZGQgTE9HSUNBTF9UWFRBRERSLCBMT0lDQUxfVFhUT0ZGIGFuZCBMT0dJQ0FMX1RYVFNJWkUKCXRoYXQgZG9uJ3QgY291bnQgdGhlIGV4ZWMgaGVhZGVyIGFzIHBhcnQKCW9mIHRoZSB0ZXh0IHNlZ21lbnQsIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBiZmQuCgkqIGEub3V0LnN1bjQuaDogIFNpbXBsaWZpZWQvZml4ZWQgZm9yIHByZXZpb3VzIGNoYW5nZS4KCk1vbiBOb3YgMTggMDA6MDI6MDYgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBkd2FyZi5oOiAgVXBkYXRlIHRvIERXQVJGIGRyYWZ0IDUgdmVyc2lvbiBmcm9tIGdjYzIuCgpUaHUgTm92IDE0IDE5OjQ0OjU5IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3RhYi5kZWY6ICBBZGRlZCBkZWZzIGZvciBleHRlbmRlZCBHTlUgc3ltYm9sIHR5cGVzLAoJc3VjaCBhcyBOX1NFVFQuICBUaGVzZSBhcmUgbm9ybWFsbHkgaWZkZWYnZCBvdXQgKGJlY2F1c2UKCW9mIGNvbmZsaWN0cyB3aXRoIGEub3V0LmdudS5oKSwgYnV0IGFyZSB1c2VkIGJ5IGJmYl9zdGFiX25hbWUoKS4KClRodSBOb3YgMTQgMTk6MTc6MDMgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBlbGYtY29tbW9uLmg6ICBBZGQgZGVmaW5lcyB0byBzdXBwb3J0IEVMRiBzeW1ib2wgdGFibGUgY29kZS4KCk1vbiBOb3YgMTEgMTk6MDE6MDYgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBlbGYtaW50ZXJuYWwuaCwgZWxmLWV4dGVybmFsLmgsIGVsZi1jb21tb24uaDogIEFkZCBzdXBwb3J0IGZvcgoJbm90ZSBzZWN0aW9ucywgd2hpY2ggYXJlIHVzZWQgaW4gRUxGIGNvcmUgZmlsZXMgdG8gaG9sZCBjb3BpZXMKCW9mIHZhcmlvdXMgL3Byb2Mgc3RydWN0dXJlcy4KClRodSBOb3YgIDcgMDg6NTg6MjYgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWMgYXQgY3lnbnVzLmNvbSkKCgkqIGludGVybmFsY29mZi5oOiB0b29rIG91dCB0aGUgTTg4IGRlcGVuZGVuY3kgaW4gdGhlIGxpbmVubwoJc3RydWN0LgoJKiBjb2ZmLW04OGsuaDogZGVmaW5lcyBHRVRfTElORU5PX0xOTk8gYW5kIFBVVF9MSU5FTk9fTE5OTyB0byB1c2UKCTMyYml0IGxpbm5vIGVudHJpZXMuCgkqIGEyOWstb3Bjb2RlLmg6IGZpeGVkIGVuY29kaW5nIG9mIG10YWNjCgpTdW4gTm92ICAzIDExOjU0OjIyIDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZWQgZnJvbSAuLi9iZmQvYmZkLWluLmggKHEudikuCgpGcmkgTm92ICAxIDExOjEzOjUzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmg6ICBBZGQgeF9jc2VjdCBkZWZpbmVzLgoKRnJpIE9jdCAyNSAwMzoxODoyMCAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIFJlbmFtZSBDT0ZGLXJlbGF0ZWQgZmlsZXMgaW4gYGNvZmYtQVJDSC5oJyBmb3JtLgoJY29mZi1hMjlrLmgsIGNvZmYtaTM4Ni5oLCBjb2ZmLWk5NjAuaCwgY29mZi1tNjhrLmgsIGNvZmYtbTg4ay5oLAoJY29mZi1taXBzLmgsIGNvZmYtcnM2MDAwLmggdG8gYmUgZXhhY3QuCgpUaHUgT2N0IDI0IDIyOjExOjExIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCVJTLzYwMDAgc3VwcG9ydCwgYnkgTWV0aW4gRy4gT3ppc2lrLCBNaW1pIFBogfuB9G5nLVRogeVvIFaB9SwgYW5kCglKb2huIEdpbG1vcmUuCgoJKiBhLm91dC5nbnUuaDogIFVwZGF0ZSBzbGlnaHRseS4KCSogYmZkLmg6ICBBZGQgbmV3IGVycm9yIGNvZGUsIGZpeCBkb2MsIGFkZCBiZmRfYXJjaF9yczYwMDAuCgkqIGludGVybmFsY29mZi5oOiAgQWRkIG1vcmUgRl8gY29kZXMgZm9yIGZpbGVoZHIuICBBZGQKCXJzLzYwMDAtZGVwZW5kZW50IGZpZWxkcyB0byBhb3V0aGRyLiAgQWRkIHN0b3JhZ2UgY2xhc3NlcwoJdG8gc3ltZW50cy4gIEFkZCA2MDAwLXNwZWNpZmljIGF1eGVudC4gIEFkZCByX3NpemUgaW4gcmVsb2MuCgkqIHJzNjAwMGNvZmYuYzogIE5ldyBmaWxlLgoKVGh1IE9jdCAyNCAwNDoxMzoyMCAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGR3YXJmLmg6IE5ldyBmaWxlIGZvciBkd2FyZiBzdXBwb3J0LiAgQ29waWVkIGZyb20gZ2NjMgoJZGlzdHJpYnV0aW9uLgoKV2VkIE9jdCAxNiAxMzozMTo0NSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oOiAgUmVtb3ZlIFBBR0VfU0laRSBkZWZpbmVzOyB0aGV5IGFyZSB0YXJnZXQtZGVwZW5kZW50LgoJQWRkIE5fRk5fU0VRIGZvciBOX0ZOIHN5bWJvbCB0eXBlIHVzZWQgb24gU2VxdWVudCBtYWNoaW5lcy4KCSogc3RhYi5kZWY6ICBJbmNsdWRlIE5fRk5fU0VRIGluIHRhYmxlLgoJKiBib3V0Lmg6ICBFeHRlcm5hbCBmb3JtYXRzIG9mIHN0cnVjdHVyZXMgdXNlIHVuc2lnbmVkIGNoYXJzLgoKRnJpIE9jdCAxMSAxMjo0MDo0MyAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHN0ZXZlIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDp1cGdyYWRlIGZyb20gYmZkLmMKCSogaW50ZXJuYWxjb2ZmLmg6IGFkZCBuX25hbWUsIG5femVyb2VzIGFuZCBuX29mZnNldCBtYWNyb3MKCSogYW1kY29mZi5oOiBEZWZpbmUgT01BR0lDIGFuZCBBT1VUSERSU1ouCgpGcmkgT2N0IDExIDEwOjU4OjA2IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogYS5vdXQuaG9zdC5oOiBDaGFuZ2UgU0VHTUVOVF9TSVpFIHRvIDB4MTAwMCBmb3IgU29ueS4KCSogYmZkLmggKGFsaWduX3Bvd2VyKTogQWRkIChhY3R1YWxseSBtb3ZlKSBjb21tZW50LgoKVHVlIE9jdCAgOCAxNToyOTozMiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIHN5cy9oLXJ0YnNkLmg6IERlZmluZSBNSVNTSU5HX1ZGUFJJTlQgKGZvciBiaW51dGlscy9idWNvbW0uYykuCgpTdW4gT2N0ICA2IDE5OjI0OjM5IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYW91dDY0Lmg6ICBNb3ZlIHN0cnVjdCBpbnRlcm5hbF9leGVjIHRvIC4uL2JmZC9saWJhb3V0Lmggc28KCWl0IGNhbiBiZSBzaGFyZWQgYnkgYWxsIGBhLm91dC1mYW1pbHknIGNvZGUuICBSZW5hbWUKCUVYVEVSTkFMX0xJU1RfU0laRSB0byBFWFRFUk5BTF9OTElTVF9TSVpFLiAgVXNlIGJhc2ljIHR5cGVzCglmb3Igbmxpc3QgbWVtYmVycywgYW5kIG1ha2Ugc3RyeCBpbnRlZ3JhbCByYXRoZXIgdGhhbiBwb2ludGVyLgoJTW9yZSBjb21tZW50YXJ5IG9uIG5fdHlwZSB2YWx1ZXMuCgkqIGJvdXQuaDogIFByb3ZpZGUgYSBzdHJ1Y3QgZXh0ZXJuYWxfZXhlYyByYXRoZXIgdGhhbiBhbgoJaW50ZXJuYWxfZXhlYy4KCSogbTY4a2NvZmYuaDogIFJlbW92ZSBgdGFnZW50cmllcycgd2hpY2ggc251Y2sgaW4gZnJvbSB0aGUgaTk2MAoJQ09GRiBwb3J0LgoKRnJpIE9jdCAgNCAwMToyNTo1OSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGg4MzAwLW9wY29kZS5oOiAgUmVtb3ZlIGBfZW51bScgZnJvbSB0aGUgdHlwZWRlZiBmb3IgYW4gZW51bS4KCSogYmZkLmg6ICBVcGRhdGUgdG8gbWF0Y2ggYmZkIGNoYW5nZXMuCgoJKiBzeXMvaC1pMzg2bWFjaC5oLCBzeXNkZXAuaDogIEFkZCAzODYgTWFjaCBob3N0IHN1cHBvcnQuCgpUdWUgT2N0ICAxIDA0OjU4OjQyIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmgsIGVsZi1jb21tb24uaCwgZWxmLWV4dGVybmFsLmgsIGVsZi1pbnRlcm5hbC5oOgoJQWRkIHByZWxpbWluYXJ5IEVMRiBzdXBwb3J0LCBzdWZmaWNpZW50IGZvciBHREIsIGZyb20gRnJlZCBGaXNoLgoJKiBzeXNkZXAuaCwgc3lzL2gtYW1peC5oOiAgU3VwcG9ydCBBbWlnYSBTVlI0LgoKCSogc3lzL2gtdmF4dWx0Lmg6ICBNYWtlIGl0IHdvcmsuICAoRGF2aWQgVGF5bG9yIDx0YXlsb3JAdGhpbmsuY29tPikKCSogYS5vdXQudmF4Lmg6ICBSZW1vdmUgdW51c2VkIGFuZCBjb25mdXNpbmcgZmlsZS4KCk1vbiBTZXAgMzAgMTI6NTI6MzUgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzeXNkZXAuaDogRGVmaW5lIE5FV1NPUzNfU1lTLCBhbmQgdXNlIGl0LgoKRnJpIFNlcCAyMCAxMzozODoyMSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGEub3V0LmdudS5oIChOX0ZOKTogIEl0cyB2YWx1ZSAqcmVhbGx5IGlzKiAweDFGLgoJRml4IGl0LCBhbmQgYWRkIGNvbW1lbnRzIHdhcm5pbmcgYWJvdXQgb3ItaW5nIE5fRVhUIHdpdGggaXQKCWFuZC9vciBOX1dBUk5JTkcuCgkqIGFvdXQ2NC5oIChOX0ZOKTogIEZpeCB2YWx1ZSwgYWRkIGNvbW1lbnRzIGFib3V0IE5fRVhULgoJKiBzdGFiLmRlZiAodGFibGUgYXQgZW5kKTogIFVwZGF0ZSB0byBzaG93IGFsbCB0aGUgdHlwZQoJdmFsdWVzIDwweDIwLCBpbmNsdWRpbmcgbG93IG9yZGVyIGJpdHMuICBNb3ZlIE5fRk4gdG8KCWl0cyByaWdodGZ1bCBwbGFjZS4KClR1ZSBTZXAgMTcgMTc6NDE6MzcgMTk5MSAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIHN5cy9oLWlyaXgzLmg6ICBzZ2kvaXJpeCBzdXBwb3J0LgoKVHVlIFNlcCAxNyAwNzo1Mjo1OSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBzdGFiLmRlZiAoTl9ERUZEKTogIEFkZCBHTlUgTW9kdWxhLTIgZGVidWcgc3RhYiwgZnJvbSBBbmRyZXcKCUJlZXJzLgoKVGh1IFNlcCAxMiAxNDoxMjo1OSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaCAoU1lNTk1MRU4sIEZJTE5NTEVOLCBESU1OVU0pOiAgRGVmaW5lIHRoZXNlCglmb3IgaW50ZXJuYWxjb2ZmLCBzZXBhcmF0ZWx5IGZyb20gdGhlIHZhcmlvdXMgZXh0ZXJuYWwgY29mZidzLgoJKiBhbWRjb2ZmLmgsIGJjczg4a2NvZmYuaCwgaTM4NmNvZmYuaCwgaW50ZWwtY29mZi5oLCBtNjhrY29mZi5oLAoJbTg4ay1iY3MuaDogUHJlZml4IFNZTU5NTEVOLCBGSUxOTUxFTiwgYW5kIERJTU5VTSB3aXRoIEVfJ3MgZm9yCgl0aGUgZXh0ZXJuYWwgc3RydWN0IGRlZmluaXRpb25zLgoJKiBlY29mZi5oOiBSZW1vdmUgdGhlc2UgI2RlZmluZSdzLCBrbHVkZ2Ugbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIHN5cy9oLXVsdHJhMy5oOiAgQWRkIG5ldyBVbHRyYWNvbXB1dGVyIGhvc3QuCgkqIHN5c2RlcC5oOiAgQWRkIFVMVFJBM19TWU0xX1NZUyBhbmQgdXNlIGl0LgoKVHVlIFNlcCAxMCAxMDoxMTo0NiAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBpMzg2Y29mZi5oIChMSU5FU1opOiAgQWx3YXlzIDYsIG5vdCBiYXNlZCBvbiBzaXplb2YoKS4KCShGaXggZnJvbSBQZXRlciBTY2hhdWVyIDxwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZT4uKQoKV2VkIFNlcCAgNCAwODo1ODozNyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCwgYW91dDY0Lmg6ICBBZGQgTl9XQVJOSU5HLiAgQ2hhbmdlIE5fRk4gdG8gMHgwRSwKCXRvIG1hdGNoIFN1bk9TIGFuZCBCU0QuICBBZGQgTl9DT01NIGFzIDB4MTIgZm9yIFN1bk9TIHNoYXJlZCBsaWIKCXN1cHBvcnQuCgkqIHN0YWIuZGVmOiAgQWRkIE5fQ09NTSB0byB0YWJsZSwgZml4IG92ZXJsYXAgY29tbWVudC4KClR1ZSBTZXAgIDMgMDY6Mjk6MjAgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCU1lcmdlIHdpdGggbGF0ZXN0IEZTRiB2ZXJzaW9ucyBvZiB0aGVzZSBmaWxlcy4KCgkqIHN0YWIuZ251Lmg6ICBBZGQgTEFTVF9VTlVTRURfU1RBQl9DT0RFLgoJKiBzdGFiLmRlZjogIFVwZGF0ZSB0byBHUEwyLiAgTW92ZSBOX1dBUk5JTkcgb3V0LCBzaW5jZSBub3QgYQoJZGVidWcgc3ltYm9sLiAgQ2hhbmdlIGNvbW1lbnRzLCBhbmQgcmVvcmRlciB0YWJsZSB0byBudW1lcmljCglvcmRlci4gIFVwZGF0ZSBmaW5hbCB0YWJsZSBjb21tZW50LgoJKE5fRFNMSU5FLCBOX0JTTElORSk6ICBSZW51bWJlciBmcm9tIDB4NjYgYW5kIDB4NjgsIHRvIDB4NDYgYW5kIDB4NDguCgoJKiBvYnN0YWNrLmg6ICBHUEwyLiAgTWVyZ2UuCgpGcmkgQXVnIDIzIDAxOjU0OjIzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIGEub3V0LmdudS5oLCBhLm91dC5zdW40Lmg6ICBNYWtlIFNFR01FTlRfU0laRSBhYmxlIHRvIGRlcGVuZAoJb24gdGhlIHBhcnRpY3VsYXIgYS5vdXQgYmVpbmcgZXhhbWluZWQuCgkqIGEub3V0LnN1bjQuaDogIERlZmluZSBzZWdtZW50IHNpemVzIGZvciBTdW4tMydzIGFuZCBTdW4tNCdzLgoJKiBGSVhNRTogIGEub3V0LmdudS5oIGlzIGFsbW9zdCBvYnNvbGV0ZS4KCSogRklYTUU6ICBhLm91dC5zdW40Lmggc2hvdWxkIGJlIHJlbmFtZWQgYS5vdXQuc3VuLmggbm93LgoKV2VkIEF1ZyAyMSAyMDozMjoxMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBTdGFydCBhIENoYW5nZUxvZyBmb3IgdGhlIGluY2x1ZGVzIGRpcmVjdG9yeS4KCgkqIGEub3V0LmdudS5oIChOX0ZOKTogIEZpeCB2YWx1ZSAtLSB3YXMgMTUsIHNob3VsZCBiZSAweDFFLgoJKiBzdGFiLmRlZjogIFVwZGF0ZSBhbGxvY2F0aW9uIHRhYmxlIGluIGNvbW1lbnRzIGF0IGVuZCwKCXRvIHJlZmxlY3QgcmVhbGl0eSBhcyBJIGtub3cgaXQuCgoMCkxvY2FsIFZhcmlhYmxlczoKbW9kZTogY2hhbmdlLWxvZwpsZWZ0LW1hcmdpbjogOApmaWxsLWNvbHVtbjogNzQKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpFbmQ6Cg==